在 PDF Java 中查找和替換文本

在各種情況下,您可能需要在 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 文件中的文本的步驟。

以下代碼示例展示瞭如何查找和替換 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 中特定頁面上的文本的步驟。

以下代碼示例顯示瞭如何使用 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 中的文本的步驟。

以下代碼示例展示瞭如何使用正則表達式查找和替換 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 的更多信息。

也可以看看