PDFium Delphi Component Docs

RectangleCount 메서드

컴포넌트: TPdf  ·  유닛: PDFium
text segment가 차지하는 rectangular area의 수를 셉니다. 같은 line에 있고 같은 font setting을 쓰는 character는 function이 작은 character box를 더 큰 하나로 자동 병합합니다

Syntax

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

StartIndexInteger. 측정할 구간에서 첫 문자의 0 기반 인덱스입니다. 기본값은 0
CountInteger. StartIndex부터 측정에 포함할 문자 수입니다. 기본값인 MaxInt는 페이지의 나머지 모든 문자를 커버합니다

Return Value

지정한 문자 구간을 덮는 병합된 바운딩 사각형의 개수입니다. 이 호출 뒤에는 각 사각형을 Rectangle[0]부터 Rectangle[RectangleCount - 1]까지의 indexed 프로퍼티로 접근할 수 있습니다

Description

RectangleCount는 현재 페이지의 연속된 문자 런을 함께 덮는 바운딩 사각형 집합을 계산합니다. 같은 줄에서 같은 폰트 설정을 공유하는 문자들은 자동으로 하나의 사각형으로 병합되어, 텍스트를 하이라이트하는 데 필요한 겹치지 않는 박스의 최소 개수로 결과가 줄어듭니다

StartIndex와 Count 파라미터가 측정할 문자 구간을 정의합니다. 전형적인 쓰임은 검색 결과의 하이라이트 사각형을 얻으려고 FindFirst나 FindNext가 반환한 일치 인덱스를 StartIndex로, 검색 문자열 길이를 Count로 넘기는 것입니다

반환된 사각형들은 내부 버퍼에 저장되며 다음 RectangleCount 호출까지 유효합니다. 0부터 RectangleCount - 1 범위의 Index로 Rectangle[Index] 프로퍼티를 읽어 각 사각형을 꺼내세요. 모든 좌표는 PDF 사용자 공간 단위입니다(포인트, 원점은 왼쪽 아래)

페이지 전체 문자 수만 필요하면 CharacterCount를, 특정 문자가 페이지 어디에 있는지 알아내려면 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