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;
  }
相关推荐
百事牛科技4 天前
保护文档安全:PDF限制功能详解与实操
windows·pdf
开开心心就好5 天前
安卓开源应用,超时提醒紧急人护独居安全
windows·决策树·计算机视觉·pdf·计算机外设·excel·动态规划
Felicia-侧听6 天前
如何统一PDF页面宽度?统一pdf宽度的2种方法
pdf·pdf宽度统一
开开心心_Every6 天前
音频格式互转工具,支持Mp3ApeWavFlac互转
linux·运维·服务器·typescript·edge·pdf·asp.net
2501_930707786 天前
如何使用C#代码从 PDF 中提取表格并另存为Excel文件
pdf·excel
悟乙己6 天前
实施手册:如何自己构建财务PDF文件内容抽取引擎
pdf
xin_yao_xin6 天前
PDF 转 图片(python)
python·pdf
汤姆百宝箱7 天前
2026新版教材电子课本1-9年级新教材PDF(完整电子版下载)
pdf·小学课本·初中课本·电子教材·电子课本·2026新教材·2026新课本
开开心心就好7 天前
内存清理软件灵活设置,自动阈值快捷键清
运维·服务器·windows·pdf·harmonyos·risc-v·1024程序员节
海兰7 天前
【接上篇】多格式文档支持扩展方案(PDF_Word_Excel)
pdf·word·excel