PDFium Delphi Component Docs

ObjectBounds 속성

컴포넌트: TPdf  ·  유닛: PDFium
현재 page의 단일 page object에 대한 빽빽한 축 정렬 bounding rectangle입니다 모든 CTM과 object별 matrix를 적용한 뒤의 PDF user-space coordinate로 표현됩니다

Syntax

property ObjectBounds[Index: Integer]: TPdfRectangle; // read only

Description

페이지의 PDF 콘텐츠 스트림은 페이지 객체의 나열입니다. 텍스트 런, 벡터 경로, 래스터 이미지, 셰이딩 패턴, 임베드된 폼 XObject가 그 대상입니다(PDF 32000-1 § 8.2). ObjectBounds는 PDFium이 CTM 스택과 객체 자신의 cm 매트릭스를 펼쳐 놓은 뒤의 현재 페이지 Index번 객체의 바운딩 박스를 반환하므로, 이 사각형은 추가 계산 없이 히트 테스트, 마스크 작성, 썸네일 크롭에 바로 쓸 수 있습니다

사각형은 표준 PDF 좌표 관례를 따릅니다 — 원점은 페이지 왼쪽 아래, 단위는 1/72 inch, Y는 위로 증가 — 그래서 잘 정립된 문서라면 Bottom < Top입니다. PDFium의 FPDFPageObj_GetBounds를 감쌉니다. 호출 자체는 O(1)이지만 경로는 내부적으로 모든 윤곽 정점을 순회하므로 객체마다 여러 번 읽을 것이라면 결과를 캐싱하는 편이 현명합니다

유효 범위는 PageNumber가 선택한 현재 페이지 기준 0 .. ObjectCount - 1입니다. 범위를 벗어난 인덱스에 접근하면 0 사각형을 반환합니다. 타입별 추가 프로퍼티를 읽기 전에 객체 종류로 분기하려면 이 프로퍼티를 ObjectType과 짝지어 쓰세요

Parameters

Index0 기반 페이지 객체 인덱스, 0 ≤ Index < ObjectCount

Remarks

Example

// Highlight every image object on the current page.
var I: Integer;
var R: TPdfRectangle;
begin
  for I := 0 to Pdf1.ObjectCount - 1 do
  if Pdf1.ObjectType[I] = otImage then
  begin
    R := Pdf1.ObjectBounds[I];
    Memo1.Lines.Add(Format('image %d: %.1f,%.1f - %.1f,%.1f (%.1fx%.1f pt)',
      [I, R.Left, R.Bottom, R.Right, R.Top,
       R.Right - R.Left, R.Top - R.Bottom]));
  end;
end;

See Also

ObjectCount, ObjectType, ObjectHandle, ObjectTransparent, PageNumber