function FindFirst(const Text: WString; Options: TSearchOptions = []; StartIndex: Integer = 0; DirectionUp: Boolean = True): Integer;
| Text | WString. La chaîne de texte Unicode à rechercher sur la page courante |
| Options | TSearchOptions. Un ensemble de drapeaux TSearchOption qui contrôlent le comportement de correspondance. Les drapeaux pris en charge sont soMatchCase (correspondance sensible à la casse) et soMatchWholeWord (mot entier uniquement). Passez [] pour une recherche insensible à la casse et de sous-chaîne |
| StartIndex | Integer. L’index de caractère de base 0 auquel la recherche commence. Passez -1 pour démarrer depuis le dernier caractère de la page (utile lorsque DirectionUp est False). Vaut 0 par défaut |
| DirectionUp | Boolean. Détermine la direction de recherche initiale. True (par défaut) recherche de StartIndex vers la fin de la page ; False recherche vers le début. Les appels suivants à FindNext avancent toujours ; FindPrevious recule toujours |
-1 si aucune correspondance n’est trouvée. Le handle de recherche interne est conservé afin que les appels suivants à FindNext ou FindPrevious puissent poursuivre la recherche sans réinitialisationFindFirst lance une recherche en texte intégral sur la page PDF actuellement chargée. Il accepte une chaîne de recherche Unicode accompagnée d’indicateurs de correspondance optionnels, d’une position de caractère de départ et d’un indice de direction. En cas de succès, il renvoie l’index de caractère de base 0 de la première correspondance et stocke un handle de recherche interne réutilisé par les appels FindNext et FindPrevious suivants. Renvoie -1 lorsque le texte n’est pas trouvé
Le paramètre StartIndex vous permet de commencer la recherche à n’importe quelle position de caractère plutôt que toujours depuis le haut de la page. Passez 0 (la valeur par défaut) pour commencer depuis le tout premier caractère, ou passez -1 pour ancrer au dernier caractère — pratique lors d’une recherche inverse avec DirectionUp = False
Utilisez le paramètre Options pour affiner le comportement de correspondance. soMatchCase active une comparaison sensible à la casse ; soMatchWholeWord restreint les correspondances aux mots entiers uniquement. Les deux drapeaux peuvent être combinés. Passer un ensemble vide [] effectue une recherche de sous-chaîne insensible à la casse
Une fois une correspondance trouvée, appelez RectangleCount avec l’index renvoyé et la longueur de correspondance connue pour récupérer les rectangles englobants du texte correspondant sur la page — utile pour mettre en surbrillance les résultats de recherche dans une visionneuse
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;