查找和替换选项可以一次性替换文档中的特定文本。这样,您不必手动定位和更新整个文档中出现的每个文本。本文甚至更进一步,介绍了如何自动化 PDF 文档中的查找和替换文本功能。特别是,您将学习如何在 C# .NET 中查找和替换 PDF 中的文本。我们还将演示如何使用 C# 替换特定页面或页面区域中的文本。
用于在 PDF 中查找和替换文本的 C# .NET API - 免费下载
Aspose.PDF for .NET 是一个 C# 类库,为 .NET 应用程序提供基本和高级 PDF 操作功能。该 API 还允许您以不同方式无缝查找和替换 PDF 文件中的文本。您可以 下载 API 的 DLL 或使用 NuGet 安装它。
PM> Install-Package Aspose.PDF
使用 C# 在 PDF 中查找和替换文本
以下是在 PDF 文档中查找和替换文本的步骤。
- 使用 Document 类使用其路径加载 PDF 文档。
- 创建 TextFragmentAbsorber 类的实例并将搜索短语提供给其构造函数。
- 使用 Document.Pages.Accept(TextFragmentAbsorber) 接受 PDF 的所有页面的文本吸收器。
- 将提取的文本片段放入 TextFragmentCollection 对象中。
- 遍历找到的 TextFragmentCollection 并替换每个片段中的文本。
- 使用 Document.Save(String) 方法保存更新的 PDF 文档。
以下代码示例展示了如何使用 C# 在 PDF 中查找和替换文本。
// 打开文档
Document pdfDocument = new Document("Document.pdf");
// 创建 TextAbsorber 对象以查找输入搜索短语的所有实例
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("text");
// 接受所有页面的吸收器
pdfDocument.Pages.Accept(textFragmentAbsorber);
// 获取提取的文本片段
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;
// 遍历片段
foreach (TextFragment textFragment in textFragmentCollection)
{
// 更新文本和其他属性
textFragment.Text = "TEXT";
textFragment.TextState.Font = FontRepository.FindFont("Verdana");
textFragment.TextState.FontSize = 22;
textFragment.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Blue);
textFragment.TextState.BackgroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Green);
}
// 保存生成的 PDF 文档。
pdfDocument.Save("updated-document.pdf");
C# 替换特定 PDF 页面中的文本
以下是在 PDF 文档的特定页面上查找和替换文本的步骤。
- 使用 Document 类使用其路径加载 PDF 文档。
- 创建 TextFragmentAbsorber 类的实例并将搜索短语提供给其构造函数。
- 使用 [Document.Pages1.Accept(TextFragmentAbsorber)]12 接受所需页面的文本吸收器。
- 遍历找到的 TextFragmentAbsorber.TextFragments 集合并替换每个片段中的文本。
- 使用 Document.Save(String) 方法保存更新的 PDF 文档。
以下代码示例展示了如何使用 C# 在 PDF 的特定页面中查找和替换文本。
// 打开文档
Document pdfDocument = new Document("Document.pdf");
// 创建 TextAbsorber 对象以查找输入搜索短语的所有实例
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("text");
// 接受所需的吸收器
pdfDocument.Pages[1].Accept(textFragmentAbsorber);
// 获取提取的文本片段
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;
// 遍历片段
foreach (TextFragment textFragment in textFragmentCollection)
{
// 更新文本和其他属性
textFragment.Text = "TEXT";
textFragment.TextState.Font = FontRepository.FindFont("Verdana");
textFragment.TextState.FontSize = 22;
textFragment.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Blue);
textFragment.TextState.BackgroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Green);
}
// 保存生成的 PDF 文档。
pdfDocument.Save("updated-document.pdf");
在 C# 中替换 PDF 页面区域中的文本
您还可以在 PDF 文档的页面特定区域中查找和替换文本。以下步骤显示如何定义特定区域,然后替换其中的文本。
- 使用 Document 类使用其路径加载 PDF 文档。
- 创建 TextFragmentAbsorber 类的实例并将搜索短语提供给其构造函数。
- 使用 Document.Pages[0].Accept(TextFragmentAbsorber) 接受所需页面的文本吸收器。
- 使用 Rectangle 类定义页面区域。
- 循环遍历 TextFragmentAbsorber.TextFragments 集合并替换每个片段中的文本。
- 使用 Document.Save(String) 方法保存更新的 PDF 文档。
以下代码示例演示如何使用 C# 在 PDF 的特定页面区域中查找和替换文本。
// 加载 PDF 文件
Document pdf = new Document("Document.pdf");
// 实例化 TextFragment 吸收器对象
TextFragmentAbsorber TextFragmentAbsorberAddress = new TextFragmentAbsorber();
// 在页面绑定内搜索文本
TextFragmentAbsorberAddress.TextSearchOptions.LimitToPageBounds = true;
// 指定 TextSearch 选项的页面区域
TextFragmentAbsorberAddress.TextSearchOptions.Rectangle = new Rectangle(100, 100, 200, 200);
// 从 PDF 文件的第一页搜索文本
pdf.Pages[1].Accept(TextFragmentAbsorberAddress);
// 遍历单个 TextFragment
foreach (TextFragment tf in TextFragmentAbsorberAddress.TextFragments)
{
// 将文本更新为空白字符
tf.Text = "";
}
// 文本替换后保存更新的 PDF 文件
pdf.Save("output.pdf");
C# 用正则表达式 (Regex) 替换 PDF 中的文本
您还可以使用正则表达式来查找和替换与特定模式匹配的文本。为此,您只需要提供正则表达式而不是普通搜索短语并使用 TextSearchOptions。以下是执行此操作的步骤。
- 使用 Document 类使用其路径加载 PDF 文档。
- 创建 TextFragmentAbsorber 类的实例并将搜索短语提供给其构造函数。
- 创建 TextSearchOptions 类的实例并将 true 传递给其构造函数以启用基于正则表达式的搜索。
- 将 TextSearchOptions 对象分配给 TextFragmentAbsorber.TextSearchOptions 属性。
- 使用 Document.Pages[0].Accept(TextFragmentAbsorber) 接受所需页面的文本吸收器。
- 使用 Rectangle 类定义页面区域。
- 循环遍历 TextFragmentAbsorber.TextFragments 集合并替换每个片段中的文本。
- 使用 Document.Save(String) 方法保存更新的 PDF 文档。
以下代码示例展示了如何使用 C# 使用正则表达式查找和替换 PDF 中的文本。
// 打开文档
Document pdfDocument = new Document("Document.pdf");
// 创建 TextAbsorber 对象以查找与正则表达式匹配的所有短语
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("\\d{4}-\\d{4}"); // Like 1999-2000
// 设置文本搜索选项以指定正则表达式用法
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
// 接受单页的吸收器
pdfDocument.Pages[1].Accept(textFragmentAbsorber);
// 获取提取的文本片段
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;
// 遍历片段
foreach (TextFragment textFragment in textFragmentCollection)
{
// 更新文本和其他属性
textFragment.Text = "New Phrase";
// 设置为对象的实例。
textFragment.TextState.Font = FontRepository.FindFont("Verdana");
textFragment.TextState.FontSize = 22;
textFragment.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Blue);
textFragment.TextState.BackgroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Green);
}
// 保存 PDF
pdfDocument.Save("output.pdf");
结论
如今,PDF 自动化被广泛采用,以便从 Web 或桌面应用程序中操作 PDF 文档。本文介绍了一个有用的 PDF 自动化功能,可在 C# 中查找和替换 PDF 中的文本。分步指南和代码示例展示了如何在整个 PDF、PDF 中的特定页面或页面区域中查找和替换文本。您可以使用 API 的 文档 探索更高级的功能。