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;
  }
相关推荐
南风微微吹8 小时前
2015-2025年英语四级历年真题及答案解析电子版PDF(含听力音频)
pdf·英语四级
Metaphor69212 小时前
使用 Python 将 Excel 转换为 PDF
python·pdf·excel
daanpdf12 小时前
考研英语一历年真题及答案解析PDF(2010-2026)百度网盘
考研·pdf
daanpdf14 小时前
历年考研数学一、数学二、数学三真题试卷及答案PDF
考研·pdf
南风微微吹15 小时前
2026年初级社会工作者考试历年真题及答案解析PDF电子版(2010-2025年)
pdf
俊哥工具16 小时前
不用安装不收费!多功能U盘修复工具,解决大部分U盘故障
学习·pdf·word·excel·音视频
daanpdf17 小时前
曹德旺《心若菩提》PDF及读后感
pdf
asdzx671 天前
使用 Python 为 PDF 添加页码 (详细教程)
python·pdf·页码
小婷资料库1 天前
2025年新高考二卷数学真题试卷及答案解析电子版PDF
pdf·高考