function RectangleCount(StartIndex: Integer = 0; Count: Integer = MaxInt): Integer;
| StartIndex | Integer. 측정할 구간에서 첫 문자의 0 기반 인덱스입니다. 기본값은 0 |
| Count | Integer. StartIndex부터 측정에 포함할 문자 수입니다. 기본값인 MaxInt는 페이지의 나머지 모든 문자를 커버합니다 |
Rectangle[0]부터 Rectangle[RectangleCount - 1]까지의 indexed 프로퍼티로 접근할 수 있습니다RectangleCount는 현재 페이지의 연속된 문자 런을 함께 덮는 바운딩 사각형 집합을 계산합니다. 같은 줄에서 같은 폰트 설정을 공유하는 문자들은 자동으로 하나의 사각형으로 병합되어, 텍스트를 하이라이트하는 데 필요한 겹치지 않는 박스의 최소 개수로 결과가 줄어듭니다
StartIndex와 Count 파라미터가 측정할 문자 구간을 정의합니다. 전형적인 쓰임은 검색 결과의 하이라이트 사각형을 얻으려고 FindFirst나 FindNext가 반환한 일치 인덱스를 StartIndex로, 검색 문자열 길이를 Count로 넘기는 것입니다
반환된 사각형들은 내부 버퍼에 저장되며 다음 RectangleCount 호출까지 유효합니다. 0부터 RectangleCount - 1 범위의 Index로 Rectangle[Index] 프로퍼티를 읽어 각 사각형을 꺼내세요. 모든 좌표는 PDF 사용자 공간 단위입니다(포인트, 원점은 왼쪽 아래)
페이지 전체 문자 수만 필요하면 CharacterCount를, 특정 문자가 페이지 어디에 있는지 알아내려면 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;