人们常常需要出于各种原因替换 PDF 文档中的文本。这可能是为了纠正错误或打字错误,更新过时的信息,为特定的受众个性化定制内容,或者为符合法律或监管变化要求。通过在 PDF 中替换文本,可以保持文档的完整性,并提高所呈现信息的整体质量和相关性。在本文中,你将学习如何使用 Spire.PDF for Java 在 PDF 文档中查找替换文本。
安装 Spire.PDF for Java
首先,您需要在 Java 程序中添加 Spire.Pdf.jar 文件作为依赖项。JAR 文件可以从此链接下载。 如果您使用 Maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而轻松地在应用程序中导入 JAR 文件
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>11.1.2</version>
</dependency>
</dependencies>
替换特定 PDF 页面的文本
在 Spire.PDF for Java 中,PdfTextReplacer 类用于 PDF 文档中的文本替换操作。它的主要方法之一 replaceAllText(),支持将 PDF 页面上指定文本替换为新的文本。具体步骤如下:
- 创建一个 PdfDocument 对象。
- 加载指定路径的 PDF 文件。
- 从文档中获取特定的页面。
- 创建一个 PdfTextReplaceOptions 对象,并使用对象的 setReplaceType() 方法指定替换选项。
- 创建一个 PdfTextReplacer 对象,并使用它的 setOptions() 方法应用替换选项。
- 使用 PdfTextReplacer.replaceAllText() 方法将页面中所有目标文本替换为新文本。
- 将文档保存到不同的 PDF 文件中。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.texts.PdfTextReplaceOptions;
import com.spire.pdf.texts.PdfTextReplacer;
import com.spire.pdf.texts.ReplaceActionType;
import java.util.EnumSet;
public class ReplaceTextInPage
{
public static void main(String[] args)
{
// 创建一个PdfDocument对象
PdfDocument doc = new PdfDocument();
// 加载一个PDF文件
doc.loadFromFile("in.pdf");
// 创建一个PdfTextReplaceOptions对象
PdfTextReplaceOptions textReplaceOptions = new PdfTextReplaceOptions();
// 指定文本替换的选项
textReplaceOptions.setReplaceType(EnumSet.of(ReplaceActionType.IgnoreCase));
textReplaceOptions.setReplaceType(EnumSet.of(ReplaceActionType.WholeWord));
// 获取特定的页面
PdfPageBase page = doc.getPages().get(0);
// 根据页面创建一个PdfTextReplacer对象
PdfTextReplacer textReplacer = new PdfTextReplacer(page);
// 设置替换选项
textReplacer.setOptions(textReplaceOptions);
// 将所有目标文本实例替换为新文本
textReplacer.replaceAllText("荷塘", "池塘");
// 将文档保存到不同的PDF文件
doc.saveToFile("out.pdf");
// 释放资源
doc.dispose();
}
}
替换整个 PDF 文档匹配的文本
上面介绍了如何在单页中替换文本。要在整个 PDF 文档中将所有特定文本替换为新文本,只需遍历文档的每一页,具体实现如下:
- 创建一个 PdfDocument 对象。
- 加载指定路径的 PDF 文件。
- 创建一个 PdfTextReplaceOptions 对象,并使用对象的 setReplaceType() 方法指定替换选项。
- 遍历文档中的所有页面,基于页面创建一个 PdfTextReplacer 对象,并使用 setOptions() 方法应用替换选项。
- 使用 PdfTextReplacer.replaceAllText() 方法将所有目标文本替换为新文本。
- 将文档保存到不同的 PDF 文件中。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.texts.PdfTextReplaceOptions;
import com.spire.pdf.texts.PdfTextReplacer;
import com.spire.pdf.texts.ReplaceActionType;
import java.util.EnumSet;
public class ReplaceTextInDocument
{
public static void main(String[] args)
{
// 创建一个PdfDocument对象
PdfDocument doc = new PdfDocument();
// 加载一个PDF文件
doc.loadFromFile("in.pdf");
// 创建一个PdfTextReplaceOptions对象
PdfTextReplaceOptions textReplaceOptions = new PdfTextReplaceOptions();
// 指定文本替换的选项
textReplaceOptions.setReplaceType(EnumSet.of(ReplaceActionType.IgnoreCase));
textReplaceOptions.setReplaceType(EnumSet.of(ReplaceActionType.WholeWord));
//遍历PDF文档所有页面
for (int i = 0; i < doc.getPages().getCount(); i++)
{
PdfPageBase page = doc.getPages().get(i);
// 根据页面创建一个PdfTextReplacer对象
PdfTextReplacer textReplacer = new PdfTextReplacer(page);
// 设置替换选项
textReplacer.setOptions(textReplaceOptions);
// 将所有目标文本实例替换为新文本
textReplacer.replaceAllText("荷塘", "池塘");
}
// 将文档保存到不同的PDF文件
doc.saveToFile("out.pdf");
// 释放资源
doc.dispose();
}
}
替换第一个匹配的文本
在 Java 中替换 PDF 第一个匹配的目标文本,使用 PdfTextReplacer 类的 replaceText() 方法。具体参考以下步骤:
- 创建一个 PdfDocument 对象。
- 加载指定路径的 PDF 文件。
- 从文档中获取特定页面,创建一个 PdfTextReplaceOptions 对象,并使用对象的 replaceType() 方法指定替换选项。
- 创建一个 PdfTextReplacer 对象,并使用 setOptions() 方法应用替换选项。
- 使用 PdfTextReplacer.replaceText() 方法将页面中第一个目标文本替换为新文本。
- 将文档保存到另一个 PDF 文件中。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.texts.PdfTextReplaceOptions;
import com.spire.pdf.texts.PdfTextReplacer;
import com.spire.pdf.texts.ReplaceActionType;
import java.util.EnumSet;
public class ReplaceFirstInstance {
public static void main(String[] args)
{
// 创建一个PdfDocument对象
PdfDocument doc = new PdfDocument();
// 加载一个PDF文件
doc.loadFromFile("in.pdf");
// 创建一个PdfTextReplaceOptions对象
PdfTextReplaceOptions textReplaceOptions = new PdfTextReplaceOptions();
// 指定文本替换的选项
textReplaceOptions.setReplaceType(EnumSet.of(ReplaceActionType.IgnoreCase));
textReplaceOptions.setReplaceType(EnumSet.of(ReplaceActionType.WholeWord));
// 获取特定页面
PdfPageBase page = doc.getPages().get(0);
// 根据页面创建一个PdfTextReplacer对象
PdfTextReplacer textReplacer = new PdfTextReplacer(page);
// 设置替换选项
textReplacer.setOptions(textReplaceOptions);
// 将目标文本的第一个实例替换为新文本
textReplacer.replaceText("荷塘", "池塘");
// 将文档保存到不同的PDF文件
doc.saveToFile("out.pdf");
// 释放资源
doc.dispose();
}
}
基于正则表达式替换文本
正则表达式是一种非常强大和灵活的模式,通常用于匹配文本。在 Spire.PDF for Java 中,同样可以利用正则表达式在 PDF 文档页面中匹配特定文本并替换为新文本,步骤如下:
- 创建一个 PdfDocument 对象。
- 加载指定路径的 PDF 文件。
- 从文档中获取特定页面,创建一个 PdfTextReplaceOptions 对象。 使用 PdfTextReplaceOptions.setReplaceType() 方法将替换类型指定为 Regex。
- 创建一个 PdfTextReplacer 对象,并使用 setOptions() 方法应用替换选项。
- 使用 PdfTextReplacer.replaceAllText() 方法指定正则表达式匹配匹配目标文本并替换为新文本。
- 将文档保存到不同的 PDF 文件中。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.texts.PdfTextReplaceOptions;
import com.spire.pdf.texts.PdfTextReplacer;
import com.spire.pdf.texts.ReplaceActionType;
import java.util.EnumSet;
public class ReplaceBasedOnRegularExpression {
public static void main(String[] args) {
// 创建一个PdfDocument对象
PdfDocument doc = new PdfDocument();
// 加载一个PDF文件
doc.loadFromFile("in.pdf");
// 创建一个PdfTextReplaceOptions对象
PdfTextReplaceOptions textReplaceOptions = new PdfTextReplaceOptions();
// 将替换类型设置为Regex
textReplaceOptions.setReplaceType(EnumSet.of(ReplaceActionType.Regex));
// 获取特定页面
PdfPageBase page = doc.getPages().get(0);
// 根据页面创建一个PdfTextReplacer对象
PdfTextReplacer textReplacer = new PdfTextReplacer(page);
// 设置替换选项
textReplacer.setOptions(textReplaceOptions);
// 指定正则表达式
String regularExpression = "荷.月";
// 将所有匹配正则表达式的目标文本替换为新文本
textReplacer.replaceAllText(regularExpression, "池塘花");
// 将文档保存到不同的PDF文件
doc.saveToFile("out.pdf");
// 释放资源
doc.dispose();
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。