function RectangleCount(StartIndex: Integer = 0; Count: Integer = MaxInt): Integer;
| StartIndex | Integer. Det nollbaserade indexet för det första tecknet i segmentet som ska mätas. Standardvärde är 0 |
| Count | Integer. Antalet tecken som ska ingå i mätningen, med början från StartIndex. Standardvärde är MaxInt, vilket omfattar alla återstående tecken på sidan |
Rectangle[0] upp till och med Rectangle[RectangleCount - 1]RectangleCount beräknar uppsättningen av höljande rektanglar som tillsammans täcker en sammanhängande teckensekvens på den aktuella sidan. Tecken på samma rad som delar samma typsnittsinställningar slås automatiskt samman till en enda rektangel, vilket reducerar resultatet till det minsta antal icke överlappande rutor som behövs för att markera texten
Parametrarna StartIndex och Count definierar teckensegmentet som ska mätas. Ett typiskt användningssätt är att skicka matchningsindexet som returneras av FindFirst eller FindNext som StartIndex, och söksträngens längd som Count, för att få fram markeringsrektanglar för ett sökresultat
De returnerade rektanglarna lagras i en intern buffert och förblir giltiga till nästa anrop till RectangleCount. Hämta varje rektangel genom att läsa egenskapen Rectangle[Index] för Index i intervallet 0 till RectangleCount - 1. Alla koordinater anges i PDF-användarkoordinater (punkter, origo i nedre vänstra hörnet)
Använd CharacterCount för ett rent antal av alla tecken på sidan; använd CharacterIndexAtPos för att ta reda på var ett visst tecken ligger på sidan
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;