许多场景下,在 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.4.2</version>
</dependency>
</dependencies>
查找并高亮特定页面的文本
Spire.PDF for Java 提供了 PdfTextFinder 类来定位页面内的特定文本。执行查找操作之前,你可以通过使用 PdfTextFinder.getOptions().setTextFindParameter() 方法设置搜索选项,如 WholeWord(全词匹配)。一旦匹配到文本,便可以应用高亮效果以在视觉上区分文本。以下是在 PDF 的特定页面中查找并高亮显示文本的步骤:
- 创建一个 PdfDocument 对象。
- 从给定路径加载 PDF 文件。
- 从文档中获取特定页面。
- 基于页面创建 PdfTextFinder 对象。
- 使用 PdfTextFinder.getOptions().setTextFindParameter() 方法指定搜索选项。
- 使用 PdfTextFinder.find() 方法找到所有被搜索到的文本。
- 遍历查找结果,并使用 PdfTextFragment.highlight() 方法高亮文本。
- 将文档保存到另一个 PDF 文件。
- Java
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.texts.PdfTextFinder;
import com.spire.pdf.texts.PdfTextFragment;
import com.spire.pdf.texts.TextFindParameter;
import java.awt.*;
import java.util.EnumSet;
public class FindAndHighlightTextInPage
{
public static void main(String[] args)
{
// 创建一个PdfDocument对象
PdfDocument doc = new PdfDocument();
// 加载一个PDF文件
doc.loadFromFile("in.pdf");
// 获取特定页面
PdfPageBase page = doc.getPages().get(0);
// 基于该页面创建一个PdfTextFinder对象
PdfTextFinder finder = new PdfTextFinder(page);
// 指定查找选项
finder.getOptions().setTextFindParameter(EnumSet.of(TextFindParameter.WholeWord));
// 查找指定文本的实例
List<PdfTextFragment> results = finder.find("荷塘");
// 遍历查找结果
for (PdfTextFragment text : results)
{
// 高亮文本
text.highLight(Color.orange);
}
// 将文档保存到不同的PDF文件
doc.saveToFile("out.pdf");
// 释放资源
doc.dispose();
}
}
查找并高亮整个 PDF 文档匹配的文本
前面示例展示了如何在特定页面上高亮显示文本。要在整个文档中高亮查找的文本,只需要遍历文档的每一页操作。以下是使用 Spire.PDF for Java 在整个 PDF 文档中查找和高亮显示文本的步骤:
- 创建一个 PdfDocument 对象。
- 从给定路径加载 PDF 文件。
- 遍历文档中的每个页面,根据页面创建 PdfTextFinder 对象,使用 PdfTextFinder.getOptions().setTextFindParameter() 方法指定搜索选项。
- 使用 PdfTextFinder.find() 方法找到所有被搜索到的文本。
- 遍历查找结果,并使用 PdfTextFragment.fighlight() 方法高亮文本。
- 将文档保存到另一个 PDF 文件中。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.texts.PdfTextFinder;
import com.spire.pdf.texts.PdfTextFragment;
import com.spire.pdf.texts.TextFindParameter;
import java.awt.*;
import java.util.EnumSet;
import java.util.List;
public class FindAndHighlightTextInDocument
{
public static void main(String[] args)
{
// 创建一个PdfDocument对象
PdfDocument doc = new PdfDocument();
// 加载一个PDF文件
doc.loadFromFile("in.pdf");
// 遍历PDF文件中的页面
for (Object pageObj : doc.getPages())
{
PdfPageBase page = (PdfPageBase)pageObj;
// 根据页面创建一个PdfTextFinder对象
PdfTextFinder finder = new PdfTextFinder(page);
// 指定查找选项
finder.getOptions().setTextFindParameter(EnumSet.of(TextFindParameter.WholeWord));
// 查找指定文本的实例
List<PdfTextFragment> results = finder.find("荷塘");
// 遍历查找结果
for (PdfTextFragment textFragment: results)
{
// 高亮显示文本
textFragment.highLight(Color.orange);
}
}
// 将文档保存到不同的PDF文件
doc.saveToFile("out.pdf");
// 释放资源
doc.dispose();
}
}
查找并高亮矩形区域的文本
为了在文档中突出显示特定部分的关键信息,可以在 PDF 文档页面的矩形区域内查找并高亮指定的文本。该矩形区域可以通过 PdfTextFinder.getOptions().setFindArea() 方法来定义。以下是使用 Spire.PDF for Java 在 PDF 页面的矩形区域内查找和高亮文本的步骤:
- 创建一个 PdfDocument 对象。
- 从给定路径加载一个 PDF 文件。
- 从文档中获取特定的页面。
- 基于该页面创建一个 PdfTextFinder 对象。
- 使用 PdfTextFinder.getOptions().setTextFindParameter() 方法指定搜索选项。
- 使用 PdfTextFinder.find() 方法在矩形区域内找到所有被搜索到的文本。
- 遍历查找结果,并使用 PdfTextFragment.fighlight() 方法高亮文本。
- 将文档保存到另一个 PDF 文件中。
- Java
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.texts.PdfTextFinder;
import com.spire.pdf.texts.PdfTextFragment;
import com.spire.pdf.texts.TextFindParameter;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.util.EnumSet;
import java.util.List;
public class FindAndHighlightTextInRectangle
{
public static void main(String[] args)
{
// 创建一个PdfDocument对象
PdfDocument doc = new PdfDocument();
// 加载一个PDF文件
doc.loadFromFile("in.pdf");
// 获取特定页面
PdfPageBase page = doc.getPages().get(0);
// 基于该页面创建一个PdfTextFinder对象
PdfTextFinder finder = new PdfTextFinder(page);
// 指定一个矩形区域用于搜索文本
finder.getOptions().setFindArea(new Rectangle2D.Float(0, 0, 841, 150));
// 指定其他选项
finder.getOptions().setTextFindParameter(EnumSet.of(TextFindParameter.WholeWord));
// 在矩形区域内查找指定文本的实例
List<PdfTextFragment> results = finder.find("荷塘");
// 遍历查找结果
for (PdfTextFragment text : results)
{
// 高亮文本
text.highLight(Color.orange);
}
// 将文档保存到不同的PDF文件
doc.saveToFile("out.pdf");
// 释放资源
doc.dispose();
}
}
基于正则表达式查找并高亮 PDF 中的文本
在实际应用中,需要使用正则表达式在文档中灵活地匹配相应文本。Spire.PDF for Java 同样也支持使用正则表达式来匹配,只需要将 TextFindParameter 设置为 Regex。以下是使用正则表达式在 PDF 中匹配查找并高亮文本的步骤:
- 创建一个 PdfDocument 对象。
- 从给定路径加载一个 PDF 文件。
- 遍历文档中的每个页面,根据页面创建 PdfTextFinder 对象。
- 使用 PdfTextFinder.getOptions().setTextFindParameter() 方法,并将 TextFindParameter 设置为 Regex。
- 创建要匹配特定内容的正则表达式。
- 使用 PdfTextFinder.find() 方法找到所有搜索文本。
- 遍历查找结果,并使用 PdfTextFragment.fighlight() 方法高亮文本。
- 将文档保存到另一个 PDF 文件中。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.texts.PdfTextFinder;
import com.spire.pdf.texts.PdfTextFragment;
import com.spire.pdf.texts.TextFindParameter;
import java.awt.*;
import java.util.EnumSet;
import java.util.List;
public class FindAndHighlightTextUsingRegex
{
public static void main(String[] args)
{
// 创建一个PdfDocument对象
PdfDocument doc = new PdfDocument();
// 加载一个PDF文件
doc.loadFromFile("in.pdf");
// 遍历PDF文件中的页面
for (Object pageObj : doc.getPages())
{
// 获取特定页面
PdfPageBase page = (PdfPageBase)pageObj;
// 根据页面创建一个PdfTextFinder对象
PdfTextFinder finder = new PdfTextFinder(page);
// 将搜索模式设置为Regex
finder.getOptions().setTextFindParameter(EnumSet.of(TextFindParameter.Regex));
// 定义一个正则表达式
String pattern = "荷.月";
// 查找符合正则表达式的文本
List<PdfTextFragment> results = finder.find(pattern);
// 遍历查找结果
for (PdfTextFragment textFragment: results)
{
// 高亮显示文本
textFragment.highLight(Color.ORANGE);
}
}
// 将文档保存到不同的PDF文件
doc.saveToFile("out.pdf");
// 释放资源
doc.dispose();
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。