找了多个C#库,只有 Spire 的 PdfTextReplacer 类比较好用,能直接替换整段文本。
private void ReplaceText(string sourceFile, string outputPdf)
{
// 创建PdfDocument 对象
Spire.Pdf.PdfDocument doc = new();
// 加载PDF 文件
doc.LoadFromFile(sourceFile);
// 获取特定的页面
PdfPageBase page = doc.Pages[0];
// 根据页面创建 PdfTextReplacer 对象
PdfTextReplacer textReplacer = new PdfTextReplacer(page);
// // 创建PdfTextReplaceOptions 对象
// PdfTextReplaceOptions textReplaceOptions = new PdfTextReplaceOptions();
// // 指定文本替换的选项
// textReplaceOptions.ReplaceType = PdfTextReplaceOptions.ReplaceActionType.AutofitWidth;
// textReplacer.Options = textReplaceOptions;
// 将所有目标文本的出现替换为新文本
textReplacer.ReplaceAllText("{{username}}", "John Doe");
textReplacer.ReplaceAllText("{{date}}", "2024-Sept");
// 将文档保存到另一个 PDF 文件中
doc.SaveToFile(outputPdf);
// 释放资源
doc.Dispose();
}
未授权版本会有水印,可以用另一篇文字介绍的方法去除,或购买正版授权。