PDFium Component Docs

FindFirst Methode

Dieser API-Eintrag behält Bezeichner, Signaturen, Codeblöcke und PDF-Begriffe in ihrer Originalform.
Komponente: TPdf  ·  Unit: PDFium
Startet eine Suche nach dem angegebenen Text. StartIndex ist nullbasiert, -1 steht für das Seitenende. Der Parameter DirectionUp bestimmt die Richtung dieser Suchoperation

Syntax

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

TextWString. Die Unicode-Textzeichenfolge, nach der auf der aktuellen Seite gesucht wird
OptionsTSearchOptions. Ein Satz von TSearchOption-Flags, die das Vergleichsverhalten steuern. Unterstützte Flags sind soMatchCase (Groß-/Kleinschreibung beachten) und soMatchWholeWord (nur Ganzwortvergleich). Übergeben Sie [] für eine schreibungsunabhängige Teilzeichensuche
StartIndexInteger. Der nullbasierte Zeichenindex, an dem die Suche beginnt. Übergeben Sie -1, um beim letzten Zeichen auf der Seite zu beginnen (nützlich, wenn DirectionUp False ist). Standard ist 0
DirectionUpBoolean. Bestimmt die anfängliche Suchrichtung. True (Standard) sucht ab StartIndex in Richtung Seitenende; False sucht in Richtung Seitenanfang. Nachfolgende Aufrufe von FindNext bewegen sich immer vorwärts; FindPrevious bewegt sich immer rückwärts

Return Value

Der nullbasierte Zeichenindex des ersten Treffers oder -1, wenn kein Treffer gefunden wird. Der interne Suchgriff bleibt erhalten, sodass nachfolgende Aufrufe von FindNext oder FindPrevious die Suche ohne erneute Initialisierung fortsetzen können.

Beschreibung

FindFirst startet eine Volltextsuche auf der aktuell geladenen PDF-Seite. Sie akzeptiert eine Unicode-Suchzeichenfolge zusammen mit optionalen Vergleichsflags, einer Startzeichenposition und einem Richtungs-Hinweis. Bei Erfolg gibt sie den nullbasierten Zeichenindex des ersten Treffers zurück und speichert einen internen Suchgriff, der von nachfolgenden Aufrufen von FindNext und FindPrevious wiederverwendet wird. Gibt -1 zurück, wenn der Text nicht gefunden wird.

Der Parameter StartIndex erlaubt es Ihnen, die Suche an jeder beliebigen Zeichenposition zu beginnen, statt immer vom Seitenanfang aus. Übergeben Sie 0 (Standard), um beim ersten Zeichen zu beginnen, oder -1, um am letzten Zeichen anzusetzen - praktisch für eine Rückwärtssuche mit DirectionUp = False.

Verwenden Sie den Parameter Options, um den Vergleich zu verfeinern. soMatchCase aktiviert einen Vergleich mit Berücksichtigung der Groß- und Kleinschreibung; soMatchWholeWord beschränkt Treffer auf ganze Wörter. Beide Flags können kombiniert werden. Eine leere Menge [] führt eine Teilzeichensuche ohne Berücksichtigung der Groß- und Kleinschreibung aus.

Sobald ein Treffer gefunden wurde, rufen Sie RectangleCount mit dem zurückgegebenen Index und der bekannten Trefferlänge auf, um die Begrenzungsrechtecke des gefundenen Textes auf der Seite abzurufen - nützlich zum Hervorheben von Suchergebnissen in einem Viewer.

Beispiel

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
    // Begrenzungsrechtecke für den gefundenen Text abrufen
    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;

Siehe auch

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