c#集成itext7导出pdf,包含表格

在Nuget解决方案中搜索itext7,进行安装

同时还要安装 itext7.bouncy-castle-adapter。

否则 PdfWriter writer = new PdfWriter(pdfOutputPath);执行时会报错unknown PdfException,然后生成一个空白的pdf,且显示已损坏。

捕获异常发现 ex.InnerException

{"Either com.itextpdf:bouncy-castle-adapter or com.itextpdf:bouncy-castle-fips-adapter dependency must be added in order to use BouncyCastleFactoryCreator"},安装itext7.bouncy-castle-adapter后可以了。

cs 复制代码
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
using iText.Layout.Borders;
using iText.IO.Font;

  /// <summary>
  /// 导出pdf
  /// </summary>
  /// <param name="pdfOutputPath">pdf导出路径</param>
  private static void exportPdf(string pdfOutputPath)
  {
      PdfWriter writer = new PdfWriter(pdfOutputPath);
      PdfDocument pdf = new PdfDocument(writer);
      Document document = new Document(pdf);
      // 设置中文字体
      iText.Kernel.Font.PdfFont font = iText.Kernel.Font.PdfFontFactory.CreateFont("C://Windows//Fonts//SIMFANG.TTF", PdfEncodings.IDENTITY_H);
  
  
      document.Add(new Paragraph("添加段落").SetFont(font));
  	
  	  //创建表格
      iText.Layout.Element.Table table = new iText.Layout.Element.Table(12) // 12列的表格
          .SetWidth(UnitValue.CreatePercentValue(100)) // 表格宽度为100%
          .SetMarginTop(10)
          .SetMarginBottom(10)
          .SetFont(font);
  		
  	  // 添加表头
      table.AddCell(new Cell(1, 12).Add(new Paragraph("表头")).SetBackgroundColor(new DeviceRgb(217, 217, 217)).SetTextAlignment(TextAlignment.CENTER));
  
      // 添加内容
      table = fillTable(table, 1, 2, "test1:", 0, 15f);//fillTable 为自定义的方法
      table = fillTable(table, 1, 4, "测试1", 0, 35f);
      table = fillTable(table, 1, 2, "test2:", 0, 15f);
      table = fillTable(table, 1, 4, "测试2", 0, 35f);
      
      //单元格加入图片 
      string picPath = "E:/image/aaa.png";
      Image image = new Image(iText.IO.Image.ImageDataFactory.Create(picPath));
      image.Scale(0.5f, 0.5f); //依照比例缩放,根据实际图片大小,太大了会超出所以进行缩放
      image.SetMarginLeft(50f); //在单元格中的位置调整
      Cell cell = new Cell(13, 12).Add(image).SetBorder(new SolidBorder(1));
      table.AddCell(cell.SetWidth(UnitValue.CreatePercentValue(95f)).SetTextAlignment(TextAlignment.CENTER));
      
      // 添加表格到文档
      document.Add(table).SetFontSize(14);
      document.Close();
  
  }
  
  /// <summary>
  /// 填充表格
  /// </summary>
  /// <param name="table">表格</param>
  /// <param name="rowspant">单元格行数</param>
  /// <param name="colspant">列数</param>
  /// <param name="content">内容</param>
  /// <param name="bordert">边框 0无边框 1宽度为1的边框</param>
  /// <param name="percentt">宽度占比 例如100%就传入100</param>
  /// <returns></returns>
  private static iText.Layout.Element.Table fillTable(iText.Layout.Element.Table table, int rowspant, int colspant, string content, float bordert, float percentt)
  {
      //边框判断
      Border borderTemp = null;
      if (bordert > 0)
      {
          borderTemp = new SolidBorder(bordert);
      }
  
      if (content == null || content.Equals(""))//单元格空值填充
      {
          table.AddCell(new Cell(rowspant, colspant).SetBorder(borderTemp).SetWidth(UnitValue.CreatePercentValue(percentt)).SetTextAlignment(TextAlignment.CENTER));
      }
      else
      {
		  //new Cell(rowspant, colspant) //创建单元格为几行几列,(1,1)为单个单元格,(x,x)为合并单元格
		  //.Add(new Paragraph(content)) //添加单元格内容,如果为空不能写此项,否则报错
		  //.SetBorder(borderTemp)       //设置单元格边框
		  //.SetWidth(UnitValue.CreatePercentValue(percentt)) //设置单元格宽度占比
		  //.SetTextAlignment(TextAlignment.CENTER) //设置单元格内容居中
          table.AddCell(new Cell(rowspant, colspant).Add(new Paragraph(content)).SetBorder(borderTemp).SetWidth(UnitValue.CreatePercentValue(percentt)).SetTextAlignment(TextAlignment.CENTER));
      }
      return table;
  }
相关推荐
雨田哥17 小时前
Qt Ironclad Reader (授权/加密/OFD签章/OFD验章/PDF/导出)
pdf·ofd·签章·验章·qt ofd·qt pdf·授权加密
狠学嵌入式19 小时前
耗时一个月整理了3款实用免费PDF处理网站
pdf·pdf转word·pdf添加水印·pdf处理·免费工具·免费网站·清页pdf
2501_930707782 天前
使用C#代码替换 PDF 文档中的文本
pdf
周末也要写八哥3 天前
Visual C++6.0下载安装流程及PDF学习手册资源
c++·学习·pdf
优化控制仿真模型3 天前
2026初中英语考纲词汇表(1600词)PDF电子版
经验分享·pdf
2401_876964133 天前
27考研优路|肖睿|唐辛|师大集训营|大牙|B站橙啦101公共课PDF
考研·pdf
2401_876964133 天前
27余峰|苏一|大李子|鹿吖101公共课托管班网课PDF
pdf
SEO-狼术3 天前
Visualize Trends with Bar Charts
pdf·.net
私人珍藏库3 天前
【PC】[吾爱大神原创工具] PDFImageViewer V1 永久免费的PDF图像查看和导出工具
windows·pdf·工具·软件·多功能
小饕3 天前
RAG 数据加载全攻略:从文本到 PDF 的 Loader 选型指南
人工智能·pdf