PDFium Component Docs

RectangleCount 메서드

이 API 항목은 식별자, 시그니처, 코드 블록, PDF 용어를 원래 형태로 유지합니다.
컴포넌트: TPdf  ·  유닛: PDFium
text segment가 차지하는 rectangular area의 수를 셉니다. 같은 line에 있고 같은 font setting을 쓰는 character는 function이 작은 character box를 더 큰 하나로 자동 병합합니다

구문

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

StartIndexInteger. 측정할 segment의 첫 글자에 대한 0-based index입니다. 기본값은 0입니다
CountInteger. StartIndex부터 시작해 측정에 포함할 character 수입니다. 기본값은 MaxInt이며, 이는 page의 나머지 character 전부를 포함합니다

Return Value

The number of merged bounding rectangles that cover the specified character segment. After this call, each rectangle is accessible via the Rectangle[0] through Rectangle[RectangleCount - 1] indexed property.

설명

RectangleCount는 현재 page의 연속된 character run을 함께 덮는 bounding rectangle 집합을 계산합니다. 같은 line에서 같은 font setting을 공유하는 character는 자동으로 하나의 rectangle로 병합되어, text를 강조하는 데 필요한 비겹침 box의 최소 개수만 남깁니다

StartIndexCount parameter는 측정할 character segment를 정합니다. 일반적인 용도는 FindFirst 또는 FindNext가 돌려준 match index를 StartIndex로, search string의 길이를 Count로 넘겨 search result의 highlight rectangle을 얻는 것입니다

돌려받은 rectangle은 내부 buffer에 저장되며 다음 RectangleCount 호출 전까지 유효합니다. Index0부터 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;

참고 항목

Rectangle, FindFirst, CharacterCount, CharacterIndexAtPos, Text