文本搜索
福昕 PDF SDK 安卓版通过 Core SDK 提供了文档内文本搜索能力,支持在 PDF 文档(含 XFA 文档)、单个文本页或注释外观中查找指定内容,并获取匹配结果的页码、字符范围、矩形区域和所在语句。
UI Extensions 内置搜索
如果您使用的是完整阅读器(UI Extensions),文本搜索功能已内置。用户可通过顶部工具栏的搜索按钮打开搜索面板,支持关键字输入、区分大小写、全词匹配、结果高亮和前后导航,无需额外编码。
核心类
| 类 | 说明 |
|---|---|
TextSearch | 文本搜索引擎,支持从 PDFDoc、XFADoc、TextPage 或 Annot 构造 |
SearchCancelCallback | 搜索取消回调,重写 needToCancelNow() 可在搜索过程中中止 |
搜索标志常量
通过 setSearchFlags(int flags) 设置匹配规则,可使用位或组合:
| 常量 | 值 | 说明 |
|---|---|---|
e_SearchNormal | 0x00 | 默认模式,不区分大小写 |
e_SearchMatchCase | 0x01 | 区分大小写 |
e_SearchMatchWholeWord | 0x02 | 全词匹配 |
e_SearchConsecutive | 0x04 | 连续搜索,从上一次匹配的下一个字符开始 |
e_SearchNotMatchFullWidth | 0x20 | 不匹配全角字符 |
示例:在文档中搜索文本
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 参考
TextSearch、SearchCancelCallback 的完整接口说明请参阅 API 手册。