在现代软件开发中,PDF 文件处理是一个常见且重要的需求。无论是生成报告、填充表单、添加水印,还是进行数字签名,选择一个功能强大的 PDF 库至关重要。iText7 作为一款开源且功能丰富的 PDF 操作库,广泛应用于 C# 和 Java 开发中,帮助开发者高效地处理各种 PDF 相关任务。
什么是 iText7?
iText7 是 iText 系列的最新版本,相较于 iText5,iText7 在性能、功能和可扩展性方面进行了显著提升。它支持创建、修改、解析和保护 PDF 文档,提供了更清晰的 API 设计和强大的布局模块,满足从简单到复杂的 PDF 操作需求。
iText7 的主要功能
创建和编辑 PDF 文档
iText7 允许开发者从头开始创建 PDF 文件,或对现有的 PDF 进行编辑,如添加文本、图像、表格等内容。
表单填充与处理
支持 AcroForms 表单的填充、读取和设置字段属性,方便生成可填写的 PDF 表单。
数字签名与加密
提供数字签名功能,确保文档的真实性和完整性,同时支持对 PDF 文件进行加密,保护敏感信息。
合并与分割 PDF
可以将多个 PDF 文件合并为一个,或将一个 PDF 文件分割成多个,满足不同的文档处理需求。
HTML 转 PDF
通过 pdfHTML 模块,将 HTML 内容转换为高质量的 PDF 文件,适用于生成发票、报告等文档。
处理中文字体
支持中文字体的嵌入和显示,确保生成的 PDF 文件在不同平台上正确显示中文内容。
如何在 C# 中使用 iText7?
在 C# 项目中使用 iText7,首先需要通过 NuGet 安装相关包:
dotnet add package itext7 --version 9.1.0
dotnet add package itext7.font-asian --version 9.1.0
dotnet add package itext7.pdfhtml --version 4.0.6
安装完成后,即可在代码中引用 iText7 的命名空间,开始进行 PDF 的创建和处理。
创建一个简单的 PDF 文件:
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
var writer = new PdfWriter("output.pdf");
var pdf = new PdfDocument(writer);
var document = new Document(pdf);
document.Add(new Paragraph("Hello, iText7!"));
document.Close();
在现有 PDF 中添加页眉和页脚:
此示例展示了如何使用 iText7 在现有 PDF 的每一页添加页眉和页脚。
using iText.Kernel.Pdf;
using iText.Kernel.Geom;
using iText.Kernel.Pdf.Canvas;
using iText.Layout;
using iText.Layout.Element;
string src = "input.pdf";
string dest = "output.pdf";
PdfDocument pdfDoc = new PdfDocument(new PdfReader(src), new PdfWriter(dest));
Document document = new Document(pdfDoc);
int numberOfPages = pdfDoc.GetNumberOfPages();
for (int i = 1; i <= numberOfPages; i++)
{
PdfPage page = pdfDoc.GetPage(i);
Rectangle pageSize = page.GetPageSize();
PdfCanvas canvas = new PdfCanvas(page);
// 添加页眉
canvas.BeginText();
canvas.SetFontAndSize(PdfFontFactory.CreateFont(), 12);
canvas.MoveText(pageSize.GetWidth() / 2 - 30, pageSize.GetTop() - 20);
canvas.ShowText("页眉内容");
canvas.EndText();
// 添加页脚
canvas.BeginText();
canvas.SetFontAndSize(PdfFontFactory.CreateFont(), 12);
canvas.MoveText(pageSize.GetWidth() / 2 - 30, pageSize.GetBottom() + 20);
canvas.ShowText($"第 {i} 页,共 {numberOfPages} 页");
canvas.EndText();
}
pdfDoc.Close();
填充和展平 PDF 表单字段:
此示例展示了如何使用 iText7 填充现有 PDF 表单字段,并将其展平,使其不可编辑。
using iText.Kernel.Pdf;
using iText.Forms;
using iText.Forms.Fields;
string src = "form.pdf";
string dest = "filled_form.pdf";
PdfDocument pdfDoc = new PdfDocument(new PdfReader(src), new PdfWriter(dest));
PdfAcroForm form = PdfAcroForm.GetAcroForm(pdfDoc, true);
// 填充表单字段
form.GetField("name").SetValue("张三");
form.GetField("email").SetValue("zhangsan@example.com");
// 展平表单,使其不可编辑
form.FlattenFields();
pdfDoc.Close();
此代码将“name”和“email”字段填充为指定的值,并将表单展平,防止进一步编辑。
iText7 是一款功能强大且灵活的 PDF 处理工具,适用于各种开发场景。无论是简单的 PDF 生成,还是复杂的文档处理任务,iText7 都能提供高效的解决方案。通过掌握 iText7,开发者可以大大提高 PDF 文件处理的效率和质量。