PDFium Delphi Component Docs

FindFirst Méthode

Composant: TPdf  ·  Unit: PDFium
Lance une recherche du texte spécifié. StartIndex est 0-based, -1 désigne la fin de la page. Le paramètre DirectionUp détermine la direction de cette opération de recherche

Syntax

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

TextWString. La chaîne de texte Unicode à rechercher sur la page courante
OptionsTSearchOptions. 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
StartIndexInteger. 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
DirectionUpBoolean. 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

Return Value

L’index de caractère de base 0 de la première correspondance, ou -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éinitialisation

Description

FindFirst 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

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

See Also

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