function FindFirst(const Text: WString; Options: TSearchOptions = []; StartIndex: Integer = 0; DirectionUp: Boolean = True): Integer;
| Text | WString. The Unicode text string to search for on the current page. |
| Options | TSearchOptions. A set of TSearchOption flags that control matching behavior. Supported flags are soMatchCase (case-sensitive match) and soMatchWholeWord (whole-word match only). Pass [] for a case-insensitive, substring search. |
| StartIndex | Integer. The 0-based character index at which the search begins. Pass -1 to start from the last character on the page (useful when DirectionUp is False). Defaults to 0. |
| DirectionUp | Boolean. Determines the initial search direction. True (default) searches from StartIndex toward the end of the page; False searches toward the beginning. Subsequent calls to FindNext always move forward; FindPrevious always moves backward. |
-1 if no match is found. The internal search handle is retained so that subsequent calls to FindNext or FindPrevious can continue the search without reinitialisation.FindFirst инициира пълнотекстово търсене на текущо заредената PDF страница. То приема Unicode низ за търсене заедно с незадължителни флагове за съвпадение, начална позиция на символа и подсказка за посока. При успех връща индекса на първия символ на първото съвпадение (с основа 0) и съхранява вътрешен манипулатор за търсене, който се използва повторно от следващите извиквания на FindNext и FindPrevious. Връща -1, когато текстът не е намерен.
Параметърът StartIndex ви позволява да започнете търсенето от произволна позиция на символа, вместо винаги от върха на страницата. Подайте 0 (по подразбиране), за да започнете от първия символ, или -1, за да закотвите на последния символ — удобно при обратно търсене с DirectionUp = False.
Използвайте параметъра Options, за да прецизирате поведението на съвпадението. soMatchCase активира сравнение с различаване на малки и главни букви; soMatchWholeWord ограничава съвпаденията само до цели думи. Двата флага могат да се комбинират. Подаването на празен набор [] извършва търсене на подниз без различаване на малки и главни букви.
След като е намерено съвпадение, извикайте RectangleCount с върнатия индекс и известната дължина на съвпадението, за да извлечете ограничаващите правоъгълници на съвпадналия текст на страницата — полезно за открояване на резултатите от търсенето във viewer.
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
// Retrieve bounding rectangles for the matched text
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;