与 MS Word 不同,PDF 文档中的文字内容很难被修改,因为 PDF 文档不会自动重新排列页面内容。Spire.PDF for Java 提供的替换文本的方法实际上并没有真正替换文档中的现有文本,而是用一个白色矩形覆盖旧文本并在其上绘制新文本。而为了避免替换后出现空格或重叠的问题,请确保新文本与要替换的文本长度相同。本文将展示使用 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>10.3.1</version>
</dependency>
</dependencies>
查找并替换 PDF 文档中的文字
以下是查找并替换 PDF 文档中指定页面内文字的详细操作步骤:
- 创建 PdfDocument 类的对象。
- 使用 PdfDocument.loadFromFile() 方法载入 PDF 文档。
- 使用 PdfDocument.getPages().get() 方法获取文档第一页,并使用 PdfPageBase.findText() 方法从该页中找到指定文本。
- 创建 PdfTrueTypeFont 类的对象以设置字体。
- 获取找到的文本的范围,并使用 PdfPageBase.getCanvas().drawRectangle() 方法绘制白色矩形来覆盖文本范围区域。
- 使用 PdfPageBase.getCanvas().drawString() 方法在该区域绘制新的文本。
- 使用 PdfDocument.saveToFile() 方法保存文档。
- Java
import com.spire.pdf.*;
import com.spire.pdf.general.find.*;
import com.spire.pdf.graphics.*;
import java.awt.*;
import java.awt.geom.Rectangle2D;
public class replaceText {
public static void main(String[] args) throws Exception {
//创建 PdfDocument 类的对象
PdfDocument doc = new PdfDocument();
//载入PDF文档
doc.loadFromFile("C:/示例.pdf");
//获取文档的第一页
PdfPageBase page = doc.getPages().get(0);
//搜索文本”心理治疗师“
PdfTextFindCollection collection = page.findText("咨询师",false);
//指定替换文本”心理医生“
String newText = "治疗师";
//创建 PdfTrueTypeFont 类的对象以设置字体
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("华文中宋", Font.BOLD, 12));
for (Object findObj : collection.getFinds()) {
PdfTextFind find=(PdfTextFind)findObj;
//获取文本在页面中的范围
Rectangle2D.Float rec = (Rectangle2D.Float)find.getBounds();
page.getCanvas().drawRectangle(PdfBrushes.getWhite(), rec);
//绘制文本
page.getCanvas().drawString(newText, font, PdfBrushes.getBlue(), rec.getX(), rec.getY() - 3);
}
String result = "替换文本.pdf";
//保存文档
doc.saveToFile(result, FileFormat.PDF);
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。