PDFiumPas 文档

ObjectBounds 属性

此 API 条目保留标识符、签名、代码块和 PDF 术语的原始形式。
组件: TPdf  ·  单元: PDFium
当前页面上单个页面对象的紧贴轴对齐边界矩形,表示为已应用所有 CTM 和对象自身矩阵之后的 PDF 用户空间坐标

语法

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

说明

页面的 PDF 内容流是一串 页面对象:文本运行、矢量路径、光栅图像、 着色图案以及嵌入式 Form XObject(PDF 32000-1 § 8.2) ObjectBounds 会返回当前页面上编号为 Index 的对象边界框, 该边界框是在 PDFium 压平 CTM 栈和对象自身 cm 矩阵之后得到的, 因此可直接用于命中测试、遮罩构建或缩略图裁剪,无需再做额外计算

该矩形使用标准 PDF 坐标约定——原点在页面左下角,单位为 1/72 英寸,Y 轴向上—— 因此在结构正确的文档中 Bottom < Top。它封装了 PDFium 的 FPDFPageObj_GetBounds;该调用本身是 O(1),但对于路径会在内部遍历 每个轮廓顶点,因此如果要多次读取同一对象,缓存结果会更合适

当前由 PageNumber 选中的页面,其有效范围是 0 .. ObjectCount - 1。访问越界索引会返回零矩形。建议将此属性与 ObjectType 搭配使用,以便在读取更多按类型属性前 先按对象类别分派处理

参数

IndexZero-based page-object index, 0 ≤ Index < ObjectCount.

备注

示例

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

另请参阅

ObjectCount, ObjectType, ObjectHandle, ObjectTransparent, PageNumber