function FindFirst(const Text: WString; Options: TSearchOptions = []; StartIndex: Integer = 0; DirectionUp: Boolean = True): Integer;
| Text | WString. Die Unicode-Textzeichenkette, nach der auf der aktuellen Seite gesucht werden soll |
| Options | TSearchOptions. 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 |
| StartIndex | Integer. 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 |
| 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 stets vorwärts; FindPrevious stets 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önnenFindFirst 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
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;