C# (.NET) 中的 PDF 生成:库与工具概览

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

C# (.NET) 中的 PDF 生成:库与工具完整概览



创建 PDF 文档是企业开发中最常见的任务之一。报告、发票、运单、合同——所有这些都需要可靠的生成工具。在 C# (.NET) 生态系统中,存在几个功能强大的库,每个都有其自身特点。在本文中,我们将分析最流行的选项、它们的优缺点,并提供代码示例。



1. iTextSharp / iText 7 for .NET



iText 是 PDF 生成领域事实上的标准。该库自 2000 年就已存在,并且正在积极开发中。对于 .NET,可以使用 iText 7 版本(NuGet 包 itext7)。



功能:

  • 完全控制内容:文本、表格、图像、注释。
  • 处理表单 (AcroForms)、数字签名和加密。
  • 支持 PDF/A(归档存储)。
  • 高性能。


缺点:

  • API 复杂(低级别的坐标操作)。
  • 商业使用需要付费许可证(开源使用 AGPL)。


创建简单 PDF 的示例:

using iText.Kernel.Pdf;using iText.Layout;using iText.Layout.Element;

public void CreatePdf(string filePath){ using (var writer = new PdfWriter(filePath)) using (var pdf = new PdfDocument(writer)) using (var document = new Document(pdf)) { document.Add(new Paragraph("你好,世界!")); document.Add(new Paragraph("这是使用 iText 7 创建的 PDF。")); }}


2. PDFsharp



PDFsharp 是一个轻量级的开源 .NET 库(也有 GDI+ 版本)。非常适合简单的任务:创建包含文本、表格和图像的文档。



功能:

  • 简单直观的 API。
  • 支持字体(包括西里尔字母)。
  • 处理图形基元(线条、形状)。
  • 免费(MIT 许可证)。


缺点:

  • 对复杂元素(表单、书签)的支持有限。
  • 处理大量数据时比 iText 慢。


示例:

using PdfSharp.Pdf;using PdfSharp.Drawing;

public void CreatePdf(string filePath){ using (var document = new PdfDocument()) { var page = document.AddPage(); using (var gfx = XGraphics.FromPdfPage(page)) { var font = new XFont("Arial", 20, XFontStyle.Regular); gfx.DrawString("你好,世界!", font, XBrushes.Black, new XPoint(40, 100)); } document.Save(filePath); }}


3. QuestPDF



QuestPDF 是一个现代化的库,具有流畅的 API,灵感来自“布局优先”的概念。它允许以声明方式描述文档结构,极大地简化了复杂布局的创建。



功能:

  • 声明式风格(如 WPF 或 HTML)。
  • 自动分页。
  • 支持表格、标题、页眉和页脚。
  • 免费版本有限制(最多 10 页)。


缺点:

  • 免费版本受限。
  • 灵活性不如 iText(难以绘制任意图形)。


示例:

using QuestPDF.Fluent;using QuestPDF.Helpers;using QuestPDF.Infrastructure;

public void CreatePdf(string filePath){ Document.Create(container => { container.Page(page => { page.Size(PageSizes.A4); page.Margin(30); page.Content().Column(col => { col.Item().Text("你好,世界!").FontSize(20); col.Item().Text("这是 QuestPDF。").FontSize(14); }); });

推荐