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文本查找与高亮内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入探究如何使用Java编写MapReduce程序

    深入探究如何使用Java编写MapReduce程序

    MapReduce是一种用于处理大规模数据集的并行编程模型,其特点高效性和可扩展性,在本文中,我们将深入了解MapReduce,并使用Java编写一个简单的MapReduce程序,需要的朋友可以参考下
    2023-05-05
  • SpringSecurity+jwt+redis基于数据库登录认证的实现

    SpringSecurity+jwt+redis基于数据库登录认证的实现

    本文主要介绍了SpringSecurity+jwt+redis基于数据库登录认证的实现,其中也涉及到自定义的过滤器和处理器,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • mybatis-plus自定义排序的实现

    mybatis-plus自定义排序的实现

    本文主要介绍了mybatis-plus自定义排序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • ehcache开源缓存框架_动力节点Java学院整理

    ehcache开源缓存框架_动力节点Java学院整理

    Ehcache是现在最流行的纯Java开源缓存框架,这篇文章主要介绍了ehcache框架的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • SpringBoot对接Twilio实现发送验证码和验证短信码

    SpringBoot对接Twilio实现发送验证码和验证短信码

    Twilio是一家提供云通信服务的公司,旨在帮助开发者和企业通过简单的API实现各种通信功能,下面我们来看看如何对接Twilio实现发送验证码和验证短信码吧
    2025-03-03
  • Mybatis中where标签与if标签结合使用详细说明

    Mybatis中where标签与if标签结合使用详细说明

    mybatis中if和where用于动态sql的条件拼接,在查询语句中如果缺失某个条件,通过if和where标签可以动态的改变查询条件,下面这篇文章主要给大家介绍了关于Mybatis中where标签与if标签结合使用的详细说明,需要的朋友可以参考下
    2023-03-03
  • 最新Spring Security的基于内存用户认证方式

    最新Spring Security的基于内存用户认证方式

    本文讲解SpringSecurity内存认证配置,适用于开发、测试等场景,通过代码创建用户及权限管理,支持密码加密,虽简单但不持久化,生产环境推荐使用数据库或JWT等认证方式,感兴趣的朋友一起看看吧
    2025-07-07
  • Tomcat集群和Session复制应用介绍

    Tomcat集群和Session复制应用介绍

    本文将详细介绍Tomcat集群和Session复制应用,需要了解的朋友可以参考下
    2012-11-11
  • 剑指Offer之Java算法习题精讲N叉树的遍历及数组与字符串

    剑指Offer之Java算法习题精讲N叉树的遍历及数组与字符串

    跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化
    2022-03-03
  • Java 压缩包解压实现代码

    Java 压缩包解压实现代码

    Java标准库(Java SE)提供了对ZIP格式的原生支持,通过java.util.zip包中的类来实现压缩和解压功能,本文将重点介绍如何使用Java来解压ZIP或RAR压缩包,感兴趣的朋友一起看看吧
    2025-05-05

最新评论