人们经常需要替换 PDF 文档中的文本,原因多种多样。例如,修正错误或拼写问题、更新过时的信息、针对特定受众或用途调整内容,或满足法律和合规要求。通过替换 PDF 中的文本,可以提高内容的准确性,保持文档的一致性,并增强信息的实用性和可读性。
本文将介绍如何使用 C# 替换 PDF 文档中的文本。
安装 PDF 处理库
首先,需要在 .NET 项目中添加相关 PDF 处理库的 DLL 文件作为引用。您可以通过下载安装包获取 DLL 文件,也可以直接通过 NuGet 安装。
cs
PM> Install-Package Spire.PDF
在 C# 中替换指定 PDF 页面中的文本
PDF 处理库提供了用于文本替换的方法,可将页面中所有匹配的目标文本替换为新的内容。以下是在 C# 中替换指定 PDF 页面文本的基本步骤:
- 创建
PdfDocument对象。 - 加载指定路径的 PDF 文件。
- 从文档中获取指定页面。
- 创建文本替换选项对象,并通过相关属性设置替换方式。
- 创建文本替换器对象,并应用替换选项。
- 调用文本替换方法,将页面中所有目标文本替换为新文本。
- 将修改后的文档保存为新的 PDF 文件。
完整示例代码如下:
cs
using Spire.Pdf;
using Spire.Pdf.Texts;
namespace ReplaceTextInPage
{
class Program
{
static void Main(string[] args)
{
// 创建 PdfDocument 对象
PdfDocument doc = new PdfDocument();
// 加载 PDF 文件
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf");
// 创建 PdfTextReplaceOptions 对象
PdfTextReplaceOptions textReplaceOptions = new PdfTextReplaceOptions();
// 设置文本替换选项
textReplaceOptions.ReplaceType = PdfTextReplaceOptions.ReplaceActionType.IgnoreCase;
textReplaceOptions.ReplaceType = PdfTextReplaceOptions.ReplaceActionType.WholeWord;
textReplaceOptions.ReplaceType = PdfTextReplaceOptions.ReplaceActionType.AutofitWidth;
// 获取指定页面
PdfPageBase page = doc.Pages[0];
// 基于页面创建 PdfTextReplacer 对象
PdfTextReplacer textReplacer = new PdfTextReplacer(page);
// 应用替换选项
textReplacer.Options = textReplaceOptions;
// 将所有目标文本替换为新文本
textReplacer.ReplaceAllText(".NET Framework", "New Content");
// 将文档保存为新的 PDF 文件
doc.SaveToFile("ReplaceTextInPage.pdf");
// 释放资源
doc.Dispose();
}
}
}
在 C# 中替换整个 PDF 文档中的文本
如果需要将整个 PDF 文档中的目标文本全部替换为新内容,可以遍历文档中的每一页,并在每个页面上执行文本替换操作。
以下是在 C# 中替换整个 PDF 文档文本的基本步骤:
- 创建
PdfDocument对象。 - 加载指定路径的 PDF 文件。
- 创建文本替换选项对象,并设置替换方式。
- 遍历文档中的所有页面。
- 基于当前页面创建文本替换器对象,并应用替换选项。
- 调用文本替换方法,将页面中的目标文本替换为新文本。
- 将修改后的文档保存为新的 PDF 文件。
完整示例代码如下:
cs
using Spire.Pdf;
using Spire.Pdf.Texts;
namespace ReplaceInEntireDocument
{
class Program
{
static void Main(string[] args)
{
// 创建 PdfDocument 对象
PdfDocument doc = new PdfDocument();
// 加载 PDF 文件
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf");
// 创建 PdfTextReplaceOptions 对象
PdfTextReplaceOptions textReplaceOptions = new PdfTextReplaceOptions();
// 设置文本替换选项
textReplaceOptions.ReplaceType = PdfTextReplaceOptions.ReplaceActionType.IgnoreCase;
textReplaceOptions.ReplaceType = PdfTextReplaceOptions.ReplaceActionType.WholeWord;
textReplaceOptions.ReplaceType = PdfTextReplaceOptions.ReplaceActionType.AutofitWidth;
for (int i = 0; i < doc.Pages.Count; i++)
{
// 获取当前页面
PdfPageBase page = doc.Pages[i];
// 基于页面创建 PdfTextReplacer 对象
PdfTextReplacer textReplacer = new PdfTextReplacer(page);
// 应用替换选项
textReplacer.Options = textReplaceOptions;
// 将所有目标文本替换为新文本
textReplacer.ReplaceAllText(".NET Framework", "New Content");
}
// 将文档保存为新的 PDF 文件
doc.SaveToFile("ReplaceTextInDocument.pdf");
// 释放资源
doc.Dispose();
}
}
}
在 C# 中替换目标文本的首次出现内容
除了替换页面中的所有匹配文本外,还可以仅替换目标文本第一次出现的位置。这可以通过 PdfTextReplacer 类的 ReplaceText() 方法实现。
以下是在 C# 中替换目标文本首次出现内容的基本步骤:
- 创建
PdfDocument对象。 - 加载指定路径的 PDF 文件。
- 从文档中获取指定页面。
- 创建文本替换选项对象,并设置替换方式。
- 创建文本替换器对象,并应用替换选项。
- 调用
ReplaceText()方法,将页面中首次出现的目标文本替换为新文本。 - 将修改后的文档保存为新的 PDF 文件。
完整示例代码如下:
cs
using Spire.Pdf;
using Spire.Pdf.Texts;
namespace ReplaceFirstOccurance
{
class Program
{
static void Main(string[] args)
{
// 创建 PdfDocument 对象
PdfDocument doc = new PdfDocument();
// 加载 PDF 文件
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf");
// 创建 PdfTextReplaceOptions 对象
PdfTextReplaceOptions textReplaceOptions = new PdfTextReplaceOptions();
// 设置文本替换选项
textReplaceOptions.ReplaceType = PdfTextReplaceOptions.ReplaceActionType.IgnoreCase;
textReplaceOptions.ReplaceType = PdfTextReplaceOptions.ReplaceActionType.WholeWord;
textReplaceOptions.ReplaceType = PdfTextReplaceOptions.ReplaceActionType.AutofitWidth;
// 获取指定页面
PdfPageBase page = doc.Pages[1];
// 基于页面创建 PdfTextReplacer 对象
PdfTextReplacer textReplacer = new PdfTextReplacer(page);
// 应用替换选项
textReplacer.Options = textReplaceOptions;
// 替换目标文本首次出现的内容
textReplacer.ReplaceText(".NET Framework", "New Content");
// 将文档保存为新的 PDF 文件
doc.SaveToFile("ReplaceFirstOccurance.pdf");
// 释放资源
doc.Dispose();
}
}
}
在 C# 中基于正则表达式替换 PDF 文本
正则表达式是一种功能强大的文本匹配模式,可用于查找和处理符合特定规则的内容。借助 PDF 处理库,可以通过正则表达式在 PDF 中搜索指定文本模式,并将其替换为新的内容。
以下是在 PDF 中基于正则表达式替换文本的基本步骤:
- 创建
PdfDocument对象。 - 加载指定路径的 PDF 文件。
- 从文档中获取指定页面。
- 创建
PdfTextReplaceOptions对象。 - 将替换类型设置为
Regex,以启用正则表达式匹配。 - 创建文本替换器对象,并应用替换选项。
- 调用
ReplaceAllText()方法,查找并替换符合指定正则表达式的文本。 - 将修改后的文档保存为新的 PDF 文件。
完整示例代码如下:
cs
using Spire.Pdf;
using Spire.Pdf.Texts;
namespace ReplaceUsingRegularExpression
{
class Program
{
static void Main(string[] args)
{
// 创建 PdfDocument 对象
PdfDocument doc = new PdfDocument();
// 加载 PDF 文件
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf");
// 创建 PdfTextReplaceOptions 对象
PdfTextReplaceOptions textReplaceOptions = new PdfTextReplaceOptions();
// 将替换类型设置为 Regex
textReplaceOptions.ReplaceType = PdfTextReplaceOptions.ReplaceActionType.Regex;
// 获取指定页面
PdfPageBase page = doc.Pages[1];
// 基于页面创建 PdfTextReplacer 对象
PdfTextReplacer textReplacer = new PdfTextReplacer(page);
// 应用替换选项
textReplacer.Options = textReplaceOptions;
// 指定正则表达式
string regularExpression = @"\bC\w*?R\b";
// 将所有匹配正则表达式的内容替换为新文本
textReplacer.ReplaceAllText(regularExpression, "NEW");
// 将文档保存为新的 PDF 文件
doc.SaveToFile("ReplaceWithRegularExpression.pdf");
// 释放资源
doc.Dispose();
}
}
}
总结
这篇文章主要介绍了在 C# 中使用正则表达式对 PDF 文本进行替换的方法。通过将替换模式设置为 Regex,可以在 PDF 页面中按规则匹配特定文本,而不仅仅是固定字符串,从而实现更灵活的文本处理。
在实现过程中,程序先加载 PDF 文档并获取指定页面,然后创建文本替换器并应用正则表达式规则,最后将匹配到的内容替换为新文本并保存文件。这种方式适用于批量修改具有特定格式的文本内容。