function FindFirst(const Text: WString; Options: TSearchOptions = []; StartIndex: Integer = 0; DirectionUp: Boolean = True): Integer;
| Text | WString。要在当前页面上搜索的 Unicode 文本字符串 |
| Options | TSearchOptions。控制匹配行为的一组 TSearchOption 标志。支持的标志是 soMatchCase(区分大小写匹配)和 soMatchWholeWord(仅整词匹配)。传入 [] 进行不区分大小写的子串搜索 |
| StartIndex | Integer。搜索开始的基于 0 的字符索引。传入 -1 从页面的最后一个字符开始(当 DirectionUp 为 False 时有用)。默认值为 0 |
| DirectionUp | Boolean。确定初始搜索方向。True(默认)从 StartIndex 朝页面末尾搜索;False 朝开头搜索。后续对 FindNext 的调用始终向前移动;FindPrevious 始终向后移动 |
-1。内部搜索句柄会被保留,因此后续调用 FindNext 或 FindPrevious 时可以在不重新初始化的情况下继续搜索FindFirst 在当前加载的 PDF 页面上启动全文搜索。它接受一个 Unicode 搜索字符串以及可选的匹配标志、起始字符位置和方向提示。成功时返回第一个匹配项的基于 0 的字符索引,并存储一个内部搜索句柄,该句柄由后续 FindNext 和 FindPrevious 调用重用。未找到文本时返回 -1
StartIndex 参数允许你从任何字符位置开始搜索,而不是总是从页面顶部开始。传入 0(默认值)从第一个字符开始,或传入 -1 锚定在最后一个字符 — 当使用 DirectionUp = False 执行反向搜索时很方便
使用 Options 参数细化匹配行为。soMatchCase 启用区分大小写的比较;soMatchWholeWord 将匹配限制为仅整词。两个标志可以组合。传入空集 [] 执行不区分大小写的子串搜索
找到匹配后,用返回的索引和已知匹配长度调用 RectangleCount 以检索页面上匹配文本的边界矩形 — 用于在查看器中高亮搜索结果
var
Idx, MatchLen, R, I: Integer;
Rect: TPdfRectangle;
begin
Pdf1.PageIndex := 0;
MatchLen := Length('invoice');
Idx := Pdf1.FindFirst('invoice', [], 0, True);
while Idx >= 0 do
begin
// 检索匹配文本的边界矩形
R := Pdf1.RectangleCount(Idx, MatchLen);
for I := 0 to R - 1 do
begin
Rect := Pdf1.Rectangle[I];
Memo1.Lines.Add(Format('Match at char %d, rect [%.1f,%.1f,%.1f,%.1f]',
[Idx, Rect.Left, Rect.Top, Rect.Right, Rect.Bottom]));
end;
Idx := Pdf1.FindNext;
end;
end;