function RectangleCount(StartIndex: Integer = 0; Count: Integer = MaxInt): Integer;
| StartIndex | Integer. 측정할 segment의 첫 글자에 대한 0-based index입니다. 기본값은 0입니다 |
| Count | Integer. StartIndex부터 시작해 측정에 포함할 character 수입니다. 기본값은 MaxInt이며, 이는 page의 나머지 character 전부를 포함합니다 |
Rectangle[0] through Rectangle[RectangleCount - 1] indexed property.RectangleCount는 현재 page의 연속된 character run을 함께 덮는 bounding rectangle 집합을 계산합니다. 같은 line에서 같은 font setting을 공유하는 character는 자동으로 하나의 rectangle로 병합되어, text를 강조하는 데 필요한 비겹침 box의 최소 개수만 남깁니다
StartIndex와 Count parameter는 측정할 character segment를 정합니다. 일반적인 용도는 FindFirst 또는 FindNext가 돌려준 match index를 StartIndex로, search string의 길이를 Count로 넘겨 search result의 highlight rectangle을 얻는 것입니다
돌려받은 rectangle은 내부 buffer에 저장되며 다음 RectangleCount 호출 전까지 유효합니다. Index가 0부터 RectangleCount - 1 범위에 있는 각 Rectangle[Index] property를 읽어 rectangle을 가져옵니다. 모든 좌표는 PDF user-space unit(point, 원점은 왼쪽 아래)입니다
page의 모든 character를 단순히 세려면 CharacterCount를 사용하고, 특정 character가 page의 어디에 있는지 찾으려면 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;