Skip to content

文本搜索

福昕 PDF SDK 安卓版通过 Core SDK 提供了文档内文本搜索能力,支持在 PDF 文档(含 XFA 文档)、单个文本页或注释外观中查找指定内容,并获取匹配结果的页码、字符范围、矩形区域和所在语句。

UI Extensions 内置搜索

如果您使用的是完整阅读器(UI Extensions),文本搜索功能已内置。用户可通过顶部工具栏的搜索按钮打开搜索面板,支持关键字输入、区分大小写、全词匹配、结果高亮和前后导航,无需额外编码。

核心类

说明
TextSearch文本搜索引擎,支持从 PDFDoc、XFADoc、TextPage 或 Annot 构造
SearchCancelCallback搜索取消回调,重写 needToCancelNow() 可在搜索过程中中止

搜索标志常量

通过 setSearchFlags(int flags) 设置匹配规则,可使用位或组合:

常量说明
e_SearchNormal0x00默认模式,不区分大小写
e_SearchMatchCase0x01区分大小写
e_SearchMatchWholeWord0x02全词匹配
e_SearchConsecutive0x04连续搜索,从上一次匹配的下一个字符开始
e_SearchNotMatchFullWidth0x20不匹配全角字符

示例:在文档中搜索文本

java
import com.foxit.sdk.pdf.PDFDoc;
import com.foxit.sdk.pdf.TextPage;
import com.foxit.sdk.pdf.TextSearch;
import com.foxit.sdk.common.fxcrt.RectFArray;

PDFDoc doc = new PDFDoc("path/to/Sample.pdf");
doc.load(null);

TextSearch textSearch = new TextSearch(doc, null, TextPage.e_ParseTextNormal);
textSearch.setStartPage(0);
textSearch.setPattern("foxit");
textSearch.setSearchFlags(TextSearch.e_SearchMatchCase | TextSearch.e_SearchMatchWholeWord);

while (textSearch.findNext()) {
    int pageIndex = textSearch.getMatchPageIndex();
    int startChar = textSearch.getMatchStartCharIndex();
    int endChar = textSearch.getMatchEndCharIndex();
    RectFArray rects = textSearch.getMatchRects();
    String sentence = textSearch.getMatchSentence();
}

示例:在注释外观中搜索文本

java
import com.foxit.sdk.pdf.TextSearch;
import com.foxit.sdk.pdf.annots.Annot;

Annot annot = page.getAnnot(0);
TextSearch textSearch = new TextSearch(annot);
textSearch.setPattern("keyword");
textSearch.setSearchFlags(TextSearch.e_SearchNormal);

while (textSearch.findNext()) {
    RectFArray rects = textSearch.getMatchRects();
}

示例:使用取消回调

java
SearchCancelCallback cancelCallback = new SearchCancelCallback() {
    @Override
    public boolean needToCancelNow() {
        return shouldCancel;
    }
};
TextSearch textSearch = new TextSearch(doc, cancelCallback, TextPage.e_ParseTextNormal);

备注

如需对离线目录下的多份 PDF 文件建立索引并检索,请参考:索引全文检索

API 参考

TextSearchSearchCancelCallback 的完整接口说明请参阅 API 手册