本页内容
搜索和选取
当用户在 PDF 文档中执行文字搜索时,搜索结果通常会高亮显示匹配的文本片段,并提供导航到对应位置的链接。 通过 ComPDFKit SDK 提供的搜索和选取功能,您可以轻松实现这一功能。
文字搜索
文字搜索允许用户在整个 PDF 文档中输入关键字,以便查找匹配的文本。
文字搜索功能使用户能够更迅速地定位和检索大量文档中的信息,提高了文档的可访问性和搜索效率。这对于处理大型文档、研究资料或查找特定信息的工作流程非常有帮助。
搜索和选取的步骤如下:
1.创建搜索结果集合容器。
2.指定被搜索的CPDFSelection
对象,需要搜索的关键字,搜索选项,以及精确搜索结果前后的字符数。
3.每当搜索到结果时将临时变量内容记录到容器中。
以下是搜索指定文本的示例代码:
swift
// 指定搜索结果存储位置与内容的容器。
var rectArray = [CGRect]()
var stringArray = [String]()
// 设置搜索关键字以及搜索选项,搜索选项为区分大小写(默认不区分大小写,不全字匹配)
if let resultArray = document.document?.find("searchText", with: .caseSensitive) as? [[CPDFSelection]] {
// for 循环遍历从所有页面搜索关键字
for array in resultArray {
for selection in array {
// 将搜索到的结果保存到集合中
let rectValue = NSValue(cgRect: selection.bounds)
rectArray.append(rectValue.cgRectValue)
stringArray.append(selection.string())
}
}
}
objective-c
// 指定搜索结果存储位置与内容的容器。
NSMutableArray *rectArray = [[NSMutableArray alloc] init];
NSMutableArray *stringArray = [[NSMutableArray alloc] init];
// 设置搜索关键字以及搜索选项,搜索选项为区分大小写(默认不区分大小写,不全字匹配)
NSArray *resultArray = [document findString:@"searchText" withOptions:CPDFSearchCaseInsensitive];
// for循环遍历从所有页面搜索关键字
for (NSArray *array in resultArray) {
for (CPDFSelection *selection in array) {
// 将搜索到的结果保存到集合中
NSValue *rectValue = [NSValue valueWithCGRect:selection.bounds];
[rectArray addObject:rectValue];
[stringArray addObject:selection.string];
}
}
搜索设置说明
选项 | 描述 | 值 |
---|---|---|
CPDFSearchCaseInsensitive | 大小写不敏感 | 0 |
CPDFSearchCaseSensitive | 大小写敏感 | 1 |
CPDFSearchMatchWholeWord | 匹配整个单词 | 2 |
CPDFSearchConsecutive | 会跳过当前匹配项继续查找下一个匹配项 | 4 |
文本选取
文本内容存储在与对应页面相关联的 CPDFPage
对象中。CPDFPage
对象可用于检索有关PDF页面中文本的信息,例如单个字符、单词、指定字符范围或边界内的文本内容等。
通过指定矩形(RectF)范围,并将矩形覆盖的文本以及文本域位置写入变量,以此模仿拖动鼠标或手指选择文字的操作,以下是示例代码:
swift
func selection(for page: CPDFPage, from fPoint: CGPoint, to tPoint: CGPoint) -> CPDFSelection? {
let fCharacterIndex = page.characterIndex(at: fPoint)
let tCharacterIndex = page.characterIndex(at: tPoint)
let range = NSRange(location: fCharacterIndex, length: tCharacterIndex - fCharacterIndex + 1)
let selection = page.selection(for: range)
return selection
}
objective-c
- (CPDFSelection *)selectionForPage:(CPDFPage *)page fromPoint:(CGPoint)fPoint toPoint:(CGPoint)tPoint {
NSInteger fCharacterIndex = [page characterIndexAtPoint:fPoint];
NSInteger tCharacterIndex = [page characterIndexAtPoint:tPoint];
NSRange range = NSMakeRange(fCharacterIndex, tCharacterIndex - fCharacterIndex + 1);
CPDFSelection *selection = [page selectionForRange:range];
return selection;
}