property ObjectBounds[Index: Integer]: TPdfRectangle; // read only
페이지의 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과 짝지어 쓰세요
| Index | 0 기반 페이지 객체 인덱스, 0 ≤ Index < ObjectCount |
// 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;