function FindFirst(const Text: WString; Options: TSearchOptions = []; StartIndex: Integer = 0; DirectionUp: Boolean = True): Integer;
| Text | WString. Wyszukiwany ciąg tekstowy Unicode na bieżącej stronie |
| Options | TSearchOptions. Zbiór flag TSearchOption sterujących zachowaniem dopasowania. Obsługiwane flagi to soMatchCase (dopasowanie z uwzględnieniem wielkości liter) oraz soMatchWholeWord (wyłącznie dopasowanie całych słów). Przekaż [], aby wykonać wyszukiwanie podciągu bez rozróżniania wielkości liter |
| StartIndex | Integer. Liczony od zera indeks znaku, od którego rozpoczyna się wyszukiwanie. Przekaż -1, aby rozpocząć od ostatniego znaku na stronie (przydatne, gdy DirectionUp ma wartość False). Wartość domyślna to 0 |
| DirectionUp | Boolean. Określa początkowy kierunek wyszukiwania. Wartość True (domyślna) wyszukuje od StartIndex w kierunku końca strony; False wyszukuje w kierunku początku. Kolejne wywołania FindNext zawsze przesuwają się do przodu; FindPrevious zawsze przesuwa się do tyłu |
-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 pełnotekstowe wyszukiwanie na aktualnie załadowanej stronie PDF. Przyjmuje wyszukiwany ciąg Unicode wraz z opcjonalnymi flagami dopasowania, początkową pozycją znaku oraz wskazówką kierunku. W przypadku powodzenia zwraca liczony od zera indeks znaku pierwszego dopasowania i przechowuje wewnętrzny uchwyt wyszukiwania, ponownie wykorzystywany 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 (wartość domyślna), aby rozpocząć od samego pierwszego znaku, albo przekaż -1, aby zakotwiczyć wyszukiwanie na ostatnim znaku — wygodne przy wyszukiwaniu wstecznym z DirectionUp = False
Użyj parametru Options, aby doprecyzować zachowanie dopasowania. Flaga soMatchCase włącza porównywanie z uwzględnieniem wielkości liter; soMatchWholeWord ogranicza dopasowania wyłącznie do całych słów. Obie flagi można łączyć. Przekazanie pustego zbioru [] wykonuje wyszukiwanie podciągu bez rozróżniania wielkości liter
Po znalezieniu dopasowania wywołaj RectangleCount ze zwróconym indeksem i znaną długością dopasowania, aby pobrać prostokąty ograniczające dopasowany tekst na stronie — przydatne przy wyróżnianiu wyników wyszukiwania w widoku
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;