在 C# (.NET) 中生成 PDF 报告:最佳库概览
创建 PDF 报告是 C# (.NET) 企业应用程序中最常见的任务之一。无论是为客户导出数据、生成发票还是复杂的分析仪表板,您都需要一个可靠的工具。在本文中,我们将介绍三个主要的库:iTextSharp(及其继承者 iText 7)、QuestPDF 和 PDFsharp。您将了解如何根据具体任务选择它们,并看到可运行的代码示例。
1. iTextSharp / iText 7 — 经典与强大
iTextSharp 是流行的 Java 库 iText 在 .NET 上的移植版本。iText 7 版本(NuGet 包 itext7)已完全重写,并支持现代 API。该库允许从头创建 PDF、编辑现有 PDF、添加水印、表单、书签和元数据。
主要功能:
- 完全控制文档结构(段落、表格、图像、列表)。
- 支持字体,包括西里尔字母(TrueType)。
- 处理表单(AcroForms)和数字签名。
- 许可证:AGPL(商业使用需要购买许可证)。
示例:创建带表格的简单报告
using iText.Kernel.Pdf;using iText.Layout;using iText.Layout.Element;
public void CreateReport(string filePath){ using (var writer = new PdfWriter(filePath)) using (var pdf = new PdfDocument(writer)) using (var document = new Document(pdf)) { document.Add(new Paragraph("销售报告") .SetFontSize(20).SetBold());
Table table = new Table(3); table.AddCell("商品"); table.AddCell("数量"); table.AddCell("价格");
table.AddCell("笔记本电脑"); table.AddCell("10"); table.AddCell("75000");
table.AddCell("鼠标"); table.AddCell("50"); table.AddCell("1500");
document.Add(table); }}2. QuestPDF — 现代且简洁的 API
QuestPDF 是一个相对较新的库(自 2021 年起),正在迅速流行起来。其主要特点是 Fluent API,类似于使用 HTML/CSS 的工作方式。代码变得可读且紧凑。QuestPDF 完全免费用于商业用途(MIT 许可证)。
特点:
- 声明式布局描述:容器、列、行。
- 内置支持样式、颜色、边框和背景。
- 自动文本换行和表格调整。
- 导出为 PDF 和 XPS。
示例:使用 QuestPDF 创建报告
using QuestPDF.Fluent;using QuestPDF.Helpers;using QuestPDF.Infrastructure;
public void CreateInvoice(string filePath){ Document.Create(container => { container.Page(page => { page.Size(PageSizes.A4); page.Margin(2, Unit.Centimetre); page.DefaultTextStyle(x => x.FontSize(12));
page.Header().Text("发票号 #123") .SemiBold().FontSize(24).FontColor(Colors.Blue.Darken2);
page.Content().Table(table => { table.ColumnsDefinition(columns => { columns.ConstantColumn(100); columns.RelativeColumn(); columns.ConstantColumn(80); });
table.Header(header => { header.Cell().Text("名称"); header.Cell().Text("描述"); header.Cell().Text("金额"); });
table.Cell().Text("咨询"); table.Cell().Text("架构开发"); table.Cell().Text