PDFium Delphi Component Docs

FindFirst Methode

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-Textzeichenkette, nach der auf der aktuellen Seite gesucht werden soll
OptionsTSearchOptions. Eine Menge von TSearchOption-Flags, die das Übereinstimmungsverhalten steuern. Unterstützte Flags sind soMatchCase (Groß-/Kleinschreibung beachten) und soMatchWholeWord (nur ganze Wörter). Übergeben Sie [] für eine Suche ohne Beachtung der Groß-/Kleinschreibung nach Teilzeichenketten
StartIndexInteger. Der nullbasierte Zeichenindex, bei dem die Suche beginnt. Übergeben Sie -1, um beim letzten Zeichen der Seite zu beginnen (nützlich, wenn DirectionUp gleich 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 stets vorwärts; FindPrevious stets 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

Description

FindFirst startet eine Volltextsuche auf der aktuell geladenen PDF-Seite. Sie akzeptiert eine Unicode-Suchzeichenkette zusammen mit optionalen Übereinstimmungsflags, einer Startzeichenposition und einem Richtungshinweis. Bei Erfolg gibt sie den nullbasierten Zeichenindex des ersten Treffers zurück und speichert ein internes Such-Handle, das von nachfolgenden Aufrufen von FindNext und FindPrevious wiederverwendet wird. Gibt -1 zurück, wenn der Text nicht gefunden wird

Mit dem Parameter StartIndex können Sie die Suche an einer beliebigen Zeichenposition beginnen lassen, statt immer am Seitenanfang zu starten. Übergeben Sie 0 (den Standardwert), um beim allerersten Zeichen zu beginnen, oder -1, um am letzten Zeichen zu verankern — praktisch bei einer Rückwärtssuche mit DirectionUp = False

Verwenden Sie den Parameter Options, um das Übereinstimmungsverhalten zu verfeinern. soMatchCase aktiviert einen Vergleich mit Beachtung der Groß-/Kleinschreibung; soMatchWholeWord beschränkt Treffer auf ganze Wörter. Beide Flags können kombiniert werden. Das Übergeben einer leeren Menge [] führt eine Suche nach Teilzeichenketten ohne Beachtung der Groß-/Kleinschreibung durch

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

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
    // 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;

See Also

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