PDFium Component Docs

FindFirst Metoda

Ten wpis API zachowuje identyfikatory, sygnatury, bloki kodu i terminy PDF w oryginalnej postaci.
Komponent: TPdf  ·  Moduł: PDFium
Rozpoczyna wyszukiwanie podanego tekstu. StartIndex jest 0-based, -1 oznacza koniec strony. Parametr DirectionUp określa kierunek tej operacji wyszukiwania

Składnia

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

TextWString. Unicode string tekstowa do wyszukania na bieżącej stronie
OptionsTSearchOptions. 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ż []
StartIndexInteger. 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
DirectionUpBoolean. 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

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

Opis

FindFirst 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

Przykład

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;

Zobacz też

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