在各種情況下,您可能需要在 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 中的文本。此外,您還了解瞭如何使用正則表達式來搜索和替換遵循特定模式的文本。您可以使用 文檔 探索有關 Java PDF API 的更多信息。