property ObjectBounds[Index: Integer]: TPdfRectangle; // read only
页面的 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 配对
在读取额外的按类型属性之前根据对象种类进行分派
| Index | 基于 0 的页面对象索引,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;