function RectangleCount(StartIndex: Integer = 0; Count: Integer = MaxInt): Integer;
| StartIndex | Integer. L’index de base 0 du premier caractère du segment à mesurer. Vaut 0 par défaut |
| Count | Integer. Le nombre de caractères à inclure dans la mesure, en partant de StartIndex. Vaut MaxInt par défaut, ce qui couvre tous les caractères restants de la page |
Rectangle[0] jusqu'à Rectangle[RectangleCount - 1]RectangleCount calcule l'ensemble des rectangles englobants qui couvrent ensemble une suite contiguë de caractères sur la page courante. Les caractères de la même ligne qui partagent les mêmes réglages de police sont automatiquement fusionnés en un seul rectangle, ce qui réduit le résultat au nombre minimal de boîtes non chevauchantes nécessaires pour surligner le texte
Les paramètres StartIndex et Count définissent le segment de caractères à mesurer. Un usage typique consiste à passer l'indice de correspondance renvoyé par FindFirst ou FindNext comme StartIndex, et la longueur de la chaîne de recherche comme Count, afin d'obtenir les rectangles de surlignage d'un résultat de recherche
Les rectangles renvoyés sont stockés dans un tampon interne et restent valides jusqu'au prochain appel à RectangleCount. Récupérez chaque rectangle en lisant la propriété Rectangle[Index] pour Index dans la plage 0 à RectangleCount - 1. Toutes les coordonnées sont exprimées en unités d'espace utilisateur PDF (points, origine en bas à gauche)
Pour un simple décompte de tous les caractères de la page, utilisez CharacterCount ; pour trouver où un caractère spécifique se situe sur la page, utilisez CharacterIndexAtPos
var
MatchIdx, RCount, I: Integer;
Rect: TPdfRectangle;
begin
Pdf1.PageIndex := 0;
MatchIdx := Pdf1.FindFirst('PDFium');
if MatchIdx >= 0 then
begin
RCount := Pdf1.RectangleCount(MatchIdx, Length('PDFium'));
for I := 0 to RCount - 1 do
begin
Rect := Pdf1.Rectangle[I];
// Draw a highlight box using Rect.Left/Top/Right/Bottom
Memo1.Lines.Add(Format('Rect %d: (%.1f, %.1f, %.1f, %.1f)',
[I, Rect.Left, Rect.Bottom, Rect.Right, Rect.Top]));
end;
end;
end;