-1 oznacza koniec strony. Parametr DirectionUp określa kierunek tej operacji wyszukiwaniafunction FindFirst(const Text: WString; Options: TSearchOptions = []; StartIndex: Integer = 0; DirectionUp: Boolean = True): Integer;
| Text | WString. Unicode string tekstowa do wyszukania na bieżącej stronie |
| Options | TSearchOptions. Zestaw flag TSearchOption sterujących sposobem dopasowania. Obsługiwane flagi to soMatchCase (dopasowanie z uwzględnieniem wielkości liter) i soMatchWholeWord (tylko całe słowa). Aby wykonać wyszukiwanie nieczułe na wielkość liter jako podciąg, przekaż [] |
| StartIndex | Integer. 0-based indeks znaku, od którego rozpoczyna się wyszukiwanie. Przekaż -1, aby zacząć od ostatniego znaku na stronie (przydatne, gdy DirectionUp ma wartość False). Domyślnie 0 |
| DirectionUp | Boolean. Określa początkowy kierunek wyszukiwania. True (domyślnie) wyszukuje od StartIndex do końca strony, a False wyszukuje do początku. Kolejne wywołania FindNext zawsze idą do przodu, a FindPrevious zawsze wstecz |
-1, jeśli nie znaleziono dopasowania. Wewnętrzny uchwyt wyszukiwania jest zachowywany, dzięki czemu kolejne wywołania FindNext lub FindPrevious mogą kontynuować wyszukiwanie bez ponownej inicjalizacjiFindFirst rozpoczyna wyszukiwanie pełnotekstowe na aktualnie załadowanej stronie PDF. Przyjmuje Unicode string wyszukiwania wraz z opcjonalnymi flagami dopasowania, pozycją początkową znaku i podpowiedzią kierunku. Po powodzeniu zwraca 0-based indeks znaku pierwszego dopasowania i zapisuje wewnętrzny uchwyt wyszukiwania, który jest używany ponownie przez kolejne wywołania FindNext i FindPrevious. Zwraca -1, gdy tekst nie zostanie znaleziony
Parametr StartIndex pozwala rozpocząć wyszukiwanie od dowolnej pozycji znaku, a nie zawsze od początku strony. Przekaż 0 (domyślnie), aby zacząć od pierwszego znaku, albo -1, aby zakotwiczyć się na ostatnim znaku — przydatne przy wyszukiwaniu wstecznym z DirectionUp = False
Użyj parametru Options, aby doprecyzować sposób dopasowania. soMatchCase włącza porównanie z uwzględnieniem wielkości liter, a soMatchWholeWord ogranicza dopasowania tylko do całych słów. Obie flagi można łączyć. Przekazanie pustego zbioru [] wykonuje wyszukiwanie nieczułe na wielkość liter jako podciąg
Po znalezieniu dopasowania wywołaj RectangleCount z zwróconym indeksem i znaną długością dopasowania, aby pobrać prostokąty ograniczające dopasowany tekst na stronie — przydatne do podświetlania wyników wyszukiwania w podglądzie
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;