logo Aspose.PDF使用教程 我也要发布文档

使用Java查找和替换PDF中的文本


在各种情况下,可能需要查找并替换PDF文档中的特定文本。但是,手动查找和更新每个事件可能会花费您额外的时间和精力。在这种情况下,“查找并替换”选项使工作更轻松。在本文中,将学习如何使用Java自动查找和替换PDF文档中的文本。

  • 使用Java查找和替换PDF中的文本
  • 替换PDF中特定页面上的文本
  • 使用正则表达式替换文本

Aspose.PDF for Java旨在从Java应用程序内部生成和处理PDF文件。该API提供了广泛的基本和高级PDF操作功能,包括查找和替换文本。感兴趣的朋友可点击下方按钮下载最新版。

点击下载最新版Aspose.PDF for Java

PDF处理控件Aspose.PDF功能演示:使用Java查找和替换PDF中的文本

使用Java查找和替换PDF中的文本

为了替换PDF中的特定文本,首先需要获取与搜索字符串匹配的所有文本片段。有了它们后,只需将每个片段替换为更新的文本即可。以下是在PDF文件中查找和替换文本的步骤。

  • 使用Document类加载PDF文件。
  • 创建一个TextFragmentAbsorber类的对象,并使用您要查找和替换的文本对其进行初始化。
  • 使用Document.getPages()。accept(TextFragmentAbsorber)方法为PDF页面接受吸收器。
  • 将由TextFragmentAbsorber.getTextFragments()返回的所有出现的文本获取到TextFragmentCollection对象中。
  • 循环遍历TextFragmentCollection对象中的每个TextFragment,并使用TextFragment.setText(String)方法替换文本。
  • 使用Document.save(String)方法保存更新的PDF文件。

下面的代码示例演示如何使用Java查找和替换PDF中的文本。

// Open document
Document pdfDocument = new Document("source.pdf");

// Create TextAbsorber object to find all instances of the input search phrase
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("sample");

// Accept the absorber for all pages of document
pdfDocument.getPages().accept(textFragmentAbsorber);

// Get the extracted text fragments into collection
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.getTextFragments();

// Loop through the fragments
for (TextFragment textFragment : (Iterable) textFragmentCollection) {
	// Update text and other properties
	textFragment.setText("New Pharase");
	textFragment.getTextState().setFont(FontRepository.findFont("Verdana"));
	textFragment.getTextState().setFontSize(22);
	textFragment.getTextState().setForegroundColor(Color.getBlue());
	textFragment.getTextState().setBackgroundColor(Color.getGray());
}
// Save the updated PDF file
pdfDocument.save("Updated_Text.pdf");

替换PDF中特定页面上的文本

除了在整个PDF中查找和替换文本外,您还可以指定一个页面来替换出现的文本。在这种情况下,仅通过指定页面索引即可接受特定页面的TextFragmentAbsorber。以下是在PDF的特定页面上查找和替换文本的步骤。

  • 使用Document类加载PDF文件。
  • 创建一个TextFragmentAbsorber类的对象,并使用您要查找和替换的文本对其进行初始化。
  • 使用Document.getPages()。get_Item(Int pageIndex).accept(TextFragmentAbsorber)方法接受PDF中特定页面的吸收器。
  • 将由TextFragmentAbsorber.getTextFragments()返回的所有出现的文本获取到TextFragmentCollection对象中。
  • 循环遍历TextFragmentCollection对象中的每个TextFragment,并使用TextFragment.setText(String)方法替换文本。
  • 使用Document.save(String)方法保存更新的PDF文件。

下面的代码示例演示如何使用Java在PDF的特定页面上查找和替换文本。

// Open document
Document pdfDocument = new Document("source.pdf");

// Create TextAbsorber object to find all instances of the input search phrase
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("sample");

// Accept the absorber for first page of document
pdfDocument.getPages().get_Item(0).accept(textFragmentAbsorber);

// Get the extracted text fragments into collection
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.getTextFragments();

// Loop through the fragments
for (TextFragment textFragment : (Iterable) textFragmentCollection) {
	// Update text and other properties
	textFragment.setText("New Pharase");
	textFragment.getTextState().setFont(FontRepository.findFont("Verdana"));
	textFragment.getTextState().setFontSize(22);
	textFragment.getTextState().setForegroundColor(Color.getBlue());
	textFragment.getTextState().setBackgroundColor(Color.getGray());
}
// Save the updated PDF file
pdfDocument.save("Updated_Text.pdf");

使用PDF中的正则表达式替换文本

还可以指定正则表达式来查找与特定模式(例如电子邮件,SSN等)匹配的文本。以下是定义和使用正则表达式查找和替换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文件。

下面的代码示例演示如何使用Java中的正则表达式查找和替换PDF中的文本。

// Open document
Document pdfDocument = new Document("input.pdf");

// Create TextAbsorber object to find all instances of the input search phrase
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("\\d{4}-\\d{4}"); // like 1999-2000

// Set text search option to enable regular expression usage
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.setTextSearchOptions(textSearchOptions);

// Accept the absorber for all pages of document
pdfDocument.getPages().accept(textFragmentAbsorber);

// Get the extracted text fragments into collection
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.getTextFragments();

// Loop through the fragments
for (TextFragment textFragment : (Iterable) textFragmentCollection) {
	// Update text and other properties
	textFragment.setText("New Pharase");
	textFragment.getTextState().setFont(FontRepository.findFont("Verdana"));
	textFragment.getTextState().setFontSize(22);
	textFragment.getTextState().setForegroundColor(Color.getBlue());
	textFragment.getTextState().setBackgroundColor(Color.getGray());
}

// Save the updated PDF file
pdfDocument.save("Updated_Text.pdf");

如果您有任何疑问或需求,请随时加入Aspose技术交流群(761297826),我们很高兴为您提供查询和咨询