PDFium Delphi Component Docs

RectangleCount Méthode

Composant: TPdf  ·  Unit: PDFium
Compte le nombre de zones rectangulaires occupées par un segment de texte. La fonction fusionne automatiquement les petites boîtes de caractères en une plus grande lorsque ces caractères sont sur la même ligne et utilisent les mêmes réglages de police

Syntax

function RectangleCount(StartIndex: Integer = 0; Count: Integer = MaxInt): Integer;

StartIndexInteger. L’index de base 0 du premier caractère du segment à mesurer. Vaut 0 par défaut
CountInteger. 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

Return Value

Le nombre de rectangles englobants fusionnés qui couvrent le segment de caractères spécifié. Après cet appel, chaque rectangle est accessible via la propriété indexée Rectangle[0] jusqu'à Rectangle[RectangleCount - 1]

Description

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

Example

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;

See Also

Rectangle, FindFirst, CharacterCount, CharacterIndexAtPos, Text