Java实现PDF中文文本查找与高亮的四种方法

 更新时间:2026年05月17日 08:30:55   作者:用户372157426135  
在实际开发中,PDF文档几乎无处不在,在处理这些文档时,常常需要对文本进行搜索和高亮,本文将通过四个示例详细介绍如何在 Java 中实现 PDF 中文文本的查找与高亮操作,感兴趣的小伙伴可以了解下

在实际开发中,PDF 文档几乎无处不在,从报告、合同到教材、试卷都有广泛应用。在处理这些文档时,常常需要对文本进行搜索和高亮,例如标记报告中的关键术语、合同条款,或者提取特定内容进行分析。手动处理不仅费时,还容易遗漏关键内容,因此自动化的文本查找和高亮就显得非常必要。

本文将通过四个示例,详细介绍如何在 Java 中实现 PDF 中文文本的查找与高亮操作:

  1. 单页文本查找与高亮
  2. 指定区域内文本查找与高亮
  3. 整篇文档文本查找与高亮
  4. 使用正则表达式查找并高亮

库安装

本文示例使用 Spire.PDF for Java 来处理 PDF 文档,它提供了完整的 PDF 操作接口,包括加载、查找、编辑和高亮文本。你可以通过官网下载 JAR 包并引入项目,也可以通过 Maven 引入依赖:

<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>12.4.4</version>
    </dependency>
</dependencies>

安装好库之后,就可以在 Java 中对 PDF 文档进行操作,无需依赖 Adobe Acrobat 等第三方软件。

示例一:在单页中查找并高亮中文文本

有时候,我们只需要对 PDF 中某一页进行查找,例如查找第一页报告中的关键术语“数据库”。这种场景适用于快速标注或页面内容审阅。

完整代码示例如下:

import com.spire.ms.System.Collections.Generic.List;
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 doc = new PdfDocument();
        doc.loadFromFile("C:\Users\Administrator\Desktop\示例文档.pdf");
        PdfPageBase page = doc.getPages().get(0);
        PdfTextFinder finder = new PdfTextFinder(page);
        // 设置查找选项:全字匹配且忽略大小写
        finder.getOptions().setTextFindParameter(EnumSet.of(TextFindParameter.WholeWord));
        finder.getOptions().setTextFindParameter(EnumSet.of(TextFindParameter.IgnoreCase));
        // 查找文本“数据库”
        List<PdfTextFragment> results = finder.find("数据库");
        // 高亮找到的文本
        for (PdfTextFragment textFragment : results) {
            textFragment.highLight(Color.LIGHT_GRAY);
        }
        doc.saveToFile("output/HighlightTextInPage.pdf", FileFormat.PDF);
        doc.dispose();
    }
}

适用场景:单页注释、报告审阅、快速查找某页重要内容。

示例二:在指定矩形区域内查找并高亮文本

有些时候,我们只希望查找 PDF 页面中的特定区域,如页眉、页脚或表格区域,避免对整页内容无差别高亮。此时可以使用 ​​setFindArea()​​ 方法指定矩形区域。

示例代码:

import java.awt.geom.Rectangle2D;

finder.getOptions().setFindArea(new Rectangle2D.Float(0, 0, 841, 180)); // 页眉区域
List<PdfTextFragment> results = finder.find("报告");

for (PdfTextFragment textFragment : results) {
    textFragment.highLight(Color.LIGHT_GRAY);
}

在完整项目中,你可以结合示例一的页面加载逻辑,将矩形区域限定在顶部页眉、底部页脚或任意自定义区域。这样不仅可以提高查找效率,还能避免误高亮文档中其他部分的相同词汇。

适用场景:合同页眉高亮、报告章节标题标注、表格内容查找。

示例三:在整个文档中查找并高亮文本

对于需要处理整篇文档的需求,例如在合同集合、教材或报告中查找“合同条款”,可以遍历每一页进行查找和高亮。

示例代码:

for (Object pageObj : doc.getPages()) {
    PdfPageBase page = (PdfPageBase) pageObj;
    PdfTextFinder finder = new PdfTextFinder(page);

    finder.getOptions().setTextFindParameter(EnumSet.of(TextFindParameter.WholeWord));
    finder.getOptions().setTextFindParameter(EnumSet.of(TextFindParameter.IgnoreCase));

    List<PdfTextFragment> results = finder.find("合同条款");
    for (PdfTextFragment textFragment : results) {
        textFragment.highLight(Color.LIGHT_GRAY);
    }
}

通过这种方式,可以一次性处理整个文档,无需手动翻页查找,大幅节省人工操作时间。

适用场景:合同全文审查、批量报告注释、教材关键内容标注。

示例四:使用正则表达式查找并高亮文本

当查找的文本具有一定规律性,例如章节标题、编号或特殊格式时,正则表达式会非常有用。例如查找所有以“第”开头、以“章”结尾的章节标题:

finder.getOptions().setTextFindParameter(EnumSet.of(TextFindParameter.Regex));
String pattern = "\b第\w*章\b";

List<PdfTextFragment> results = finder.find(pattern);
for (PdfTextFragment textFragment : results) {
    textFragment.highLight(Color.LIGHT_GRAY);
}

正则匹配不仅可以查找固定词汇,还能匹配模式化文本,如编号、日期、序列号等,提高查找灵活性。

适用场景:章节标题标注、序列号提取、敏感信息查找与标注。

总结

通过这四个示例,我们可以看到 Java 中 PDF 中文文本查找与高亮的几种典型场景:

  1. 单页高亮:快速标注指定页面文本。
  2. 矩形区域高亮:精确控制搜索范围,避免误高亮。
  3. 整篇文档高亮:适合批量处理文档内容。
  4. 正则表达式高亮:灵活匹配复杂文本模式。

借助 Spire.PDF,我们可以用简单的代码实现强大的 PDF 文本处理功能,非常适合在合同审查、报告分析、教材标注等场景中使用。

到此这篇关于Java实现PDF中文文本查找与高亮的四种方法的文章就介绍到这了,更多相关Java PDF文本查找与高亮内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Spring Boot快速构建一个简单的文件处理工具

    使用Spring Boot快速构建一个简单的文件处理工具

    在现代Web应用中,文件上传与处理是常见的需求,本文将通过一个实际案例,详细介绍如何使用Spring Boot构建一个文件处理工具,感兴趣的小伙伴可以参考一下
    2025-06-06
  • Java Kubernetes本地部署的实现示例

    Java Kubernetes本地部署的实现示例

    本文,主要介绍了Java Kubernetes本地部署的实现,示例文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-10-10
  • Java实现简易GUI贪吃蛇小游戏

    Java实现简易GUI贪吃蛇小游戏

    这篇文章主要为大家详细介绍了Java实现简易GUI贪吃蛇小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • SpringCloud Tencent 全套解决方案源码分析

    SpringCloud Tencent 全套解决方案源码分析

    Spring Cloud Tencent实现Spring Cloud标准微服务SPI,开发者可以基于Spring Cloud Tencent开发Spring Cloud微服务架构应用,Spring Cloud Tencent 的核心依托腾讯开源的一站式服务发现与治理平台 Polarismesh,实现各种分布式微服务场景,感兴趣的朋友一起看看吧
    2022-07-07
  • SpringSecurity+jwt+captcha登录认证授权流程总结

    SpringSecurity+jwt+captcha登录认证授权流程总结

    本文介绍了SpringSecurity、JWT和验证码在Spring Boot 3.2.0中的应用,包括登录认证和授权流程的详细步骤,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-11-11
  • Java反射的定义和用法详解

    Java反射的定义和用法详解

    Java中的反射是指在程序运行时动态地获取和操作类、方法、属性等元素的能力。它使得我们可以在程序运行时获取一个类的信息,并对其进行操作,需要的朋友可以参考下
    2023-05-05
  • Java的方法详解

    Java的方法详解

    方法类似于C语言中的函数,是包含特定功能的代码块,必须定义在类中、main方法外部,本质上是一个造轮子的过程—— 将重复使用的逻辑包装成方法,需要时直接调用,无需重复编写,下面通过示例详解Java的方法,感兴趣的朋友一起看看吧
    2026-02-02
  • Java快速实现Excel表格转SVG的示例详解

    Java快速实现Excel表格转SVG的示例详解

    对于开发者来说,使用 Java 来实现 Excel 到 SVG 的转换,是一种更灵活、可控的方式,本文将演示如何通过简单的 Java 代码完成这一过程,希望对大家有所帮助
    2025-09-09
  • spring cloud config 配置中心快速实现过程解析

    spring cloud config 配置中心快速实现过程解析

    这篇文章主要介绍了spring cloud config 配置中心快速实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 基于Spring定时任务的fixedRate和fixedDelay的区别

    基于Spring定时任务的fixedRate和fixedDelay的区别

    这篇文章主要介绍了基于Spring定时任务的fixedRate和fixedDelay的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10

最新评论