本页内容
搜索和选取
当用户在 PDF 文档中执行文字搜索时,搜索结果通常会高亮显示匹配的文本片段,并提供导航到对应位置的链接。 通过 ComPDFKit SDK 提供的搜索和选取功能,您可以轻松实现这一功能。
文字搜索
文字搜索允许用户在整个 PDF 文档中输入关键字,以便查找匹配的文本。
文字搜索功能使用户能够更迅速地定位和检索大量文档中的信息,提高了文档的可访问性和搜索效率。这对于处理大型文档、研究资料或查找特定信息的工作流程非常有帮助。
搜索和选取的步骤如下:
1.创建搜索结果集合容器。
2.获取
CPDFTextPage
与CPDFTextSearcher
对象。
3.指定被搜索的
CPDFTextPage
对象,需要搜索的关键字,搜索选项,以及精确搜索结果前后的字符数。
4.每当搜索到结果时将临时变量内容记录到容器中。
以下是搜索指定文本的示例代码:
java
// 指定搜索结果集合
List<CPDFTextRange> searchTextInfoList = new ArrayList<>();
ITextSearcher textSearcher = readerView.getTextSearcher();
// 指定关键字
String keywords = "compdfkit";
// 设置搜索关键字以及搜索选项,搜索选项为区分大小写(默认不区分大小写,不全字匹配)
textSearcher.setSearchConfig(keywords, CPDFTextSearcher.PDFSearchOptions.PDFSearchCaseSensitive);
// for循环遍历从所有页面搜索关键字
for (int i = 0; i < document.getPageCount(); i++) {
CPDFPage page = document.pageAtIndex(i);
CPDFTextPage textPage = page.getTextPage();
if ((null == textPage) || !textPage.isValid()) {
continue;
}
final List<CPDFTextRange> searchPageContent = textSearcher.searchKeyword(i);
if (searchPageContent.size() > 0) {
// 将搜索到的结果保存到集合中
searchTextInfoList.addAll(searchPageContent);
}
page.close();
}
kotlin
// 指定搜索结果集合
val searchTextInfoList = mutableListOf<CPDFTextRange>()
val textSearcher: ITextSearcher = readerView.getTextSearcher()
// 指定关键字
val keywords = "compdfkit"
// 设置搜索关键字以及搜索选项,搜索选项为区分大小写(默认不区分大小写,不全字匹配)
textSearcher.setSearchConfig(
keywords,
CPDFTextSearcher.PDFSearchOptions.PDFSearchCaseSensitive
)
// for循环遍历从所有页面搜索关键字
for (i in 0 until document.pageCount) {
val page = document.pageAtIndex(i)
val textPage = page.textPage
if (null == textPage || !textPage.isValid) {
continue
}
val searchPageContent: List<CPDFTextRange> = textSearcher.searchKeyword(i)
if (searchPageContent.isNotEmpty()) {
// 将搜索到的结果保存到集合中
searchTextInfoList.addAll(searchPageContent)
}
page.close()
}
搜索设置说明
选项 | 描述 | 值 |
---|---|---|
CPDFTextSearcher.PDFSearchOptions.PDFSearchCaseInsensitive | 大小写不敏感 | 0 |
CPDFTextSearcher.PDFSearchOptions.PDFSearchCaseSensitive | 大小写敏感 | 1 |
CPDFTextSearcher.PDFSearchOptions.PDFSearchMatchWholeWord | 匹配整个单词 | 2 |
文本选取
文本内容存储在与对应页面相关联的 CPDFPage
对象中。CPDFPage
对象可用于检索有关 PDF 页面中文本的信息,例如单个字符、单词、指定字符范围或边界内的文本内容等。
通过指定矩形(RectF)范围,并将矩形覆盖的文本以及文本域位置写入变量,以此模仿拖动鼠标或手指选择文字的操作,以下是示例代码:
java
// 指定选取文本的页面
CPDFPage pdfPage = document.pageAtIndex(0);
CPDFTextPage pdfTextPage = pdfPage.getTextPage();
// 指定矩形范围
RectF selectRect = new RectF(0f, 0f, 500f, 500f);
selectRect = pdfPage.convertRectFromPage(false, pdfPage.getSize().width(), pdfPage.getSize().height(), selectRect);
CPDFTextSelection[] textSelectionArr = pdfTextPage.getSelectionsByLineForRect(selectRect);
int len = textSelectionArr.length;
for (int i = 0; i < len; i++) {
CPDFTextSelection textSelection = textSelectionArr[i];
if (textSelection == null) {
continue;
}
// 获取到矩形范围内的文本内容
String text = pdfTextPage.getText(textSelection.getTextRange());
}
kotlin
// 指定选取文本的页面
val pdfPage = document.pageAtIndex(0)
val pdfTextPage = pdfPage.textPage
// 指定矩形范围
var selectRect = pdfPage.convertRectFromPage(
false,
pdfPage.size.width(),
pdfPage.size.height(),
RectF(0f, 0f, 500f, 500f)
)
val textSelectionArr = pdfTextPage.getSelectionsByLineForRect(selectRect)
for (textSelection in textSelectionArr) {
// 获取到矩形范围内的文本内容
val text = pdfTextPage.getText(textSelection.textRange)
}