function RectangleCount(StartIndex: Integer = 0; Count: Integer = MaxInt): Integer;
| StartIndex | Integer. The 0-based index of the first character in the segment to measure. Defaults to 0. |
| Count | Integer. The number of characters to include in the measurement, starting from StartIndex. Defaults to MaxInt, which covers all remaining characters on the page. |
Rectangle[0] gennem Rectangle[RectangleCount - 1].RectangleCount beregner det sæt af afgrænsningsrektangler, der tilsammen dækker en sammenhængende kørsel af tegn på den aktuelle side. Tegn på samme linje, der deler de samme skrifttypeindstillinger, flettes automatisk til et enkelt rektangel, hvilket reducerer resultatet til det minimale antal ikke-overlappende bokse, der er nødvendige for at fremhæve teksten.
Parametrene StartIndex og Count definerer det tegnsegment, der skal måles. En typisk anvendelse er at sende matchindekset returneret af FindFirst eller FindNext som StartIndex, og længden af søgestrengen som Count, for at hente fremhævelsesrektangler for et søgeresultat.
De returnerede rektangler gemmes i en intern buffer og forbliver gyldige indtil det næste kald til RectangleCount. Hent hvert rektangel ved at læse egenskaben Rectangle[Index] for Index i området 0 til RectangleCount - 1. Alle koordinater er i PDF-brugerrum-enheder (punkter, origo i nederste venstre).
For en almindelig tælling af alle tegn på siden, brug CharacterCount; for at finde, hvor et specifikt tegn sidder på siden, brug 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;