在各种情况下,您可能需要查找和替换 PDF 文档中的特定文本。但是,手动搜索和更新每个事件可能会花费您额外的时间和精力。对于这种情况,查找和替换选项使您的生活更轻松。在本文中,您将学习如何使用 Java 在 PDF 文档中查找和替换文本。
用于在 PDF 中查找和替换文本的 Java API - 免费下载
Aspose.PDF for Java 设计用于在 Java 应用程序中生成和操作 PDF 文件。该 API 提供了广泛的基本和高级 PDF 操作功能,包括查找和替换文本。您可以 下载 API 或使用以下 Maven 配置安装它。
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf</artifactId>
<version>21.1</version>
</dependency>
使用 Java 查找和替换 PDF 中的文本
为了替换 PDF 中的特定文本,您将首先获取与搜索字符串匹配的所有文本片段。拥有它们后,只需将每个片段替换为更新的文本。
以下是使用 Java 在 PDF 文件中查找和替换文本的步骤。
- 使用 Document 类加载 PDF 文件。
- 创建一个 TextFragmentAbsorber 类的对象,并使用要查找和替换的文本对其进行初始化。
- 使用 Document.getPages().accept(TextFragmentAbsorber) 方法接受 PDF 中页面的吸收器。
- 将 TextFragmentAbsorber.getTextFragments() 返回的所有文本获取到 TextFragmentCollection 对象中。
- 循环遍历 TextFragmentCollection 对象中的每个 TextFragment 并使用 TextFragment.setText(String) 方法替换文本。
- 使用 Document.save(String) 方法保存更新的 PDF 文件。
以下代码示例显示了如何在 PDF 中查找和替换文本。
// 如需完整的示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// 打开文档
Document pdfDocument = new Document("source.pdf");
// 创建 TextAbsorber 对象以查找输入搜索短语的所有实例
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("sample");
// 接受所有文档页面的吸收器
pdfDocument.getPages().accept(textFragmentAbsorber);
// 将提取的文本片段放入集合中
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.getTextFragments();
// 遍历片段
for (TextFragment textFragment : (Iterable<TextFragment>) textFragmentCollection) {
// 更新文本和其他属性
textFragment.setText("New Pharase");
textFragment.getTextState().setFont(FontRepository.findFont("Verdana"));
textFragment.getTextState().setFontSize(22);
textFragment.getTextState().setForegroundColor(Color.getBlue());
textFragment.getTextState().setBackgroundColor(Color.getGray());
}
// 保存更新的 PDF 文件
pdfDocument.save("Updated_Text.pdf");
在 PDF 的特定页面上搜索和替换文本
无需在整个 PDF 中查找和替换文本,您可以指定要替换出现的文本的单个页面。在这种情况下,您将仅通过指定页面索引来接受特定页面的 TextFragmentAbsorber。
以下是在 Java 中搜索和替换 PDF 中特定页面上的文本的步骤。
- 使用 Document 类加载 PDF 文件。
- 创建一个 TextFragmentAbsorber 类的对象,并使用您要查找和替换的文本对其进行初始化。
- 使用 Document.getPages().getItem(Int pageIndex).accept(TextFragmentAbsorber) 方法接受 PDF 中特定页面的吸收器。
- 将 TextFragmentAbsorber.getTextFragments() 返回的所有文本获取到 TextFragmentCollection 对象中。
- 循环遍历 TextFragmentCollection 对象中的每个 TextFragment 并使用 TextFragment.setText(String) 方法替换文本。
- 使用 Document.save(String) 方法保存更新的 PDF 文件。
以下代码示例展示了如何使用 Java 在 PDF 中的特定页面上查找和替换文本。
// 如需完整的示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// 打开文档
Document pdfDocument = new Document("source.pdf");
// 创建 TextAbsorber 对象以查找输入搜索短语的所有实例
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("sample");
// 接受文件第一页的吸收体
pdfDocument.getPages().get_Item(0).accept(textFragmentAbsorber);
// 将提取的文本片段放入集合中
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.getTextFragments();
// 遍历片段
for (TextFragment textFragment : (Iterable<TextFragment>) textFragmentCollection) {
// 更新文本和其他属性
textFragment.setText("New Pharase");
textFragment.getTextState().setFont(FontRepository.findFont("Verdana"));
textFragment.getTextState().setFontSize(22);
textFragment.getTextState().setForegroundColor(Color.getBlue());
textFragment.getTextState().setBackgroundColor(Color.getGray());
}
// 保存更新的 PDF 文件
pdfDocument.save("Updated_Text.pdf");
在 PDF 中使用正则表达式查找和替换文本
您还可以指定正则表达式来搜索与特定模式(例如电子邮件、SSN 等)匹配的文本。以下是使用 Java 定义和使用正则表达式来搜索和替换 PDF 中的文本的步骤。
- 使用 Document 类加载 PDF 文件。
- 创建一个 TextFragmentAbsorber 类的对象,并使用您要使用的正则表达式对其进行初始化。
- 创建 TextSearchOptions 类的对象并将其初始化为 true 以启用基于正则表达式的搜索。
- 使用 TextFragmentAbsorber.setTextSearchOptions(TextSearchOptions) 方法设置选项。
- 使用 Document.getPages().accept(TextFragmentAbsorber) 方法接受 PDF 中页面的吸收器。
- 将 TextFragmentAbsorber.getTextFragments() 返回的所有找到的文本获取到 TextFragmentCollection 对象中。
- 循环遍历 TextFragmentCollection 对象中的每个 TextFragment 并使用 TextFragment.setText(String) 方法替换文本。
- 使用 Document.save(String) 方法保存更新的 PDF 文件。
以下代码示例展示了如何使用正则表达式查找和替换 PDF 中的文本。
// 如需完整的示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// 打开文档
Document pdfDocument = new Document("input.pdf");
// 创建 TextAbsorber 对象以查找输入搜索短语的所有实例
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("\\d{4}-\\d{4}"); // like 1999-2000
// 设置文本搜索选项以启用正则表达式使用
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.setTextSearchOptions(textSearchOptions);
// 接受所有文档页面的吸收器
pdfDocument.getPages().accept(textFragmentAbsorber);
// 将提取的文本片段放入集合中
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.getTextFragments();
// 遍历片段
for (TextFragment textFragment : (Iterable<TextFragment>) textFragmentCollection) {
// 更新文本和其他属性
textFragment.setText("New Pharase");
textFragment.getTextState().setFont(FontRepository.findFont("Verdana"));
textFragment.getTextState().setFontSize(22);
textFragment.getTextState().setForegroundColor(Color.getBlue());
textFragment.getTextState().setBackgroundColor(Color.getGray());
}
// 保存更新的 PDF 文件
pdfDocument.save("Updated_Text.pdf");
获取免费 API 许可证
您可以免费试用该 API,不受评估限制。 获取免费的临时许可证 现在。
结论
在本文中,您学习了如何使用 Java 查找和替换 PDF 中的文本。此外,您还了解了如何使用正则表达式来搜索和替换遵循特定模式的文本。您可以使用 documentation 探索有关 Java PDF API 的更多信息。