Java實現(xiàn)PDF中文文本查找與高亮的四種方法
在實際開發(fā)中,PDF 文檔幾乎無處不在,從報告、合同到教材、試卷都有廣泛應用。在處理這些文檔時,常常需要對文本進行搜索和高亮,例如標記報告中的關鍵術語、合同條款,或者提取特定內(nèi)容進行分析。手動處理不僅費時,還容易遺漏關鍵內(nèi)容,因此自動化的文本查找和高亮就顯得非常必要。
本文將通過四個示例,詳細介紹如何在 Java 中實現(xiàn) PDF 中文文本的查找與高亮操作:
- 單頁文本查找與高亮
- 指定區(qū)域內(nèi)文本查找與高亮
- 整篇文檔文本查找與高亮
- 使用正則表達式查找并高亮
庫安裝
本文示例使用 Spire.PDF for Java 來處理 PDF 文檔,它提供了完整的 PDF 操作接口,包括加載、查找、編輯和高亮文本。你可以通過官網(wǎng)下載 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 中某一頁進行查找,例如查找第一頁報告中的關鍵術語“數(shù)據(jù)庫”。這種場景適用于快速標注或頁面內(nèi)容審閱。
完整代碼示例如下:
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));
// 查找文本“數(shù)據(jù)庫”
List<PdfTextFragment> results = finder.find("數(shù)據(jù)庫");
// 高亮找到的文本
for (PdfTextFragment textFragment : results) {
textFragment.highLight(Color.LIGHT_GRAY);
}
doc.saveToFile("output/HighlightTextInPage.pdf", FileFormat.PDF);
doc.dispose();
}
}適用場景:單頁注釋、報告審閱、快速查找某頁重要內(nèi)容。
示例二:在指定矩形區(qū)域內(nèi)查找并高亮文本
有些時候,我們只希望查找 PDF 頁面中的特定區(qū)域,如頁眉、頁腳或表格區(qū)域,避免對整頁內(nèi)容無差別高亮。此時可以使用 ??setFindArea()?? 方法指定矩形區(qū)域。
示例代碼:
import java.awt.geom.Rectangle2D;
finder.getOptions().setFindArea(new Rectangle2D.Float(0, 0, 841, 180)); // 頁眉區(qū)域
List<PdfTextFragment> results = finder.find("報告");
for (PdfTextFragment textFragment : results) {
textFragment.highLight(Color.LIGHT_GRAY);
}
在完整項目中,你可以結合示例一的頁面加載邏輯,將矩形區(qū)域限定在頂部頁眉、底部頁腳或任意自定義區(qū)域。這樣不僅可以提高查找效率,還能避免誤高亮文檔中其他部分的相同詞匯。
適用場景:合同頁眉高亮、報告章節(jié)標題標注、表格內(nèi)容查找。
示例三:在整個文檔中查找并高亮文本
對于需要處理整篇文檔的需求,例如在合同集合、教材或報告中查找“合同條款”,可以遍歷每一頁進行查找和高亮。
示例代碼:
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);
}
}
通過這種方式,可以一次性處理整個文檔,無需手動翻頁查找,大幅節(jié)省人工操作時間。
適用場景:合同全文審查、批量報告注釋、教材關鍵內(nèi)容標注。
示例四:使用正則表達式查找并高亮文本
當查找的文本具有一定規(guī)律性,例如章節(jié)標題、編號或特殊格式時,正則表達式會非常有用。例如查找所有以“第”開頭、以“章”結尾的章節(jié)標題:
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);
}
正則匹配不僅可以查找固定詞匯,還能匹配模式化文本,如編號、日期、序列號等,提高查找靈活性。
適用場景:章節(jié)標題標注、序列號提取、敏感信息查找與標注。
總結
通過這四個示例,我們可以看到 Java 中 PDF 中文文本查找與高亮的幾種典型場景:
- 單頁高亮:快速標注指定頁面文本。
- 矩形區(qū)域高亮:精確控制搜索范圍,避免誤高亮。
- 整篇文檔高亮:適合批量處理文檔內(nèi)容。
- 正則表達式高亮:靈活匹配復雜文本模式。
借助 Spire.PDF,我們可以用簡單的代碼實現(xiàn)強大的 PDF 文本處理功能,非常適合在合同審查、報告分析、教材標注等場景中使用。
到此這篇關于Java實現(xiàn)PDF中文文本查找與高亮的四種方法的文章就介紹到這了,更多相關Java PDF文本查找與高亮內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringSecurity+jwt+redis基于數(shù)據(jù)庫登錄認證的實現(xiàn)
本文主要介紹了SpringSecurity+jwt+redis基于數(shù)據(jù)庫登錄認證的實現(xiàn),其中也涉及到自定義的過濾器和處理器,具有一定的參考價值,感興趣的可以了解一下2023-09-09
ehcache開源緩存框架_動力節(jié)點Java學院整理
Ehcache是現(xiàn)在最流行的純Java開源緩存框架,這篇文章主要介紹了ehcache框架的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
SpringBoot對接Twilio實現(xiàn)發(fā)送驗證碼和驗證短信碼
Twilio是一家提供云通信服務的公司,旨在幫助開發(fā)者和企業(yè)通過簡單的API實現(xiàn)各種通信功能,下面我們來看看如何對接Twilio實現(xiàn)發(fā)送驗證碼和驗證短信碼吧2025-03-03
最新Spring Security的基于內(nèi)存用戶認證方式
本文講解SpringSecurity內(nèi)存認證配置,適用于開發(fā)、測試等場景,通過代碼創(chuàng)建用戶及權限管理,支持密碼加密,雖簡單但不持久化,生產(chǎn)環(huán)境推薦使用數(shù)據(jù)庫或JWT等認證方式,感興趣的朋友一起看看吧2025-07-07
劍指Offer之Java算法習題精講N叉樹的遍歷及數(shù)組與字符串
跟著思路走,之后從簡單題入手,反復去看,做過之后可能會忘記,之后再做一次,記不住就反復做,反復尋求思路和規(guī)律,慢慢積累就會發(fā)現(xiàn)質(zhì)的變化2022-03-03

