PDFium Component Docs

FindFirst Metoda

Component: TPdf  ·  Unit: PDFium
Rozpoczyna wyszukiwanie podanego tekstu. StartIndex jest 0-based, -1 oznacza koniec strony. Parametr DirectionUp określa kierunek tej operacji wyszukiwania

Syntax

function FindFirst(const Text: WString; Options: TSearchOptions = []; StartIndex: Integer = 0; DirectionUp: Boolean = True): Integer;

TextWString. Wyszukiwany ciąg tekstowy Unicode na bieżącej stronie
OptionsTSearchOptions. 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
StartIndexInteger. 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
DirectionUpBoolean. 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

Return Value

0-based indeks znaku pierwszego dopasowania albo -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 inicjalizacji

Description

FindFirst 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

Example

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;

See Also

FindNext, FindPrevious, Find, CharacterIndexAtPos, CharacterCount, RectangleCount, Text