PDFium Delphi Component 文件

ObjectBounds 属性

组件: TPdf  ·  单元: PDFium
当前页面上单个页面对象的紧贴轴对齐边界矩形,表示为已应用所有 CTM 和对象自身矩阵之后的 PDF 用户空间坐标

Syntax

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

Description

页面的 PDF 内容流是一系列页面对象:文本段、 矢量路径、光栅图像、渐变图案和嵌入的 form XObject(PDF 32000-1 § 8.2)。ObjectBounds 在 PDFium 展平 CTM 栈和 对象自身的 cm 矩阵之后,返回当前页面上编号为 Index 的对象的边界框,因此矩形可直接用于命中测试、 掩码构建或缩略图裁剪,而无需任何进一步计算

矩形使用标准 PDF 坐标约定 — 原点在页面左下 角,单位为 1/72 英寸,Y 向上增长 — 因此在格式良好的文档中 Bottom < Top。 封装 PDFium 的 FPDFPageObj_GetBounds;调用 本身是 O(1),但内部会遍历路径的每个轮廓顶点,因此 如果你每个对象读取多次,缓存结果更明智

对于由 PageNumber 当前选择的页面,有效范围是 0 .. ObjectCount - 1。 访问超出范围的索引返回 零矩形。将此属性与 ObjectType 配对 在读取额外的按类型属性之前根据对象种类进行分派

Parameters

Index基于 0 的页面对象索引,0 ≤ Index < ObjectCount

Remarks

Example

// 高亮当前页面上的每个图像对象
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