function FindFirst(const Text: WString; Options: TSearchOptions = []; StartIndex: Integer = 0; DirectionUp: Boolean = True): Integer;
| Text | WString. Die Unicode-Textzeichenfolge, nach der auf der aktuellen Seite gesucht wird |
| Options | TSearchOptions. 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 |
| StartIndex | Integer. 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 |
| DirectionUp | Boolean. 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 |
-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.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.
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;