property ObjectBounds[Index: Integer]: TPdfRectangle; // solo lectura
El flujo de contenido PDF de una página es una secuencia de objetos de página: tramos de texto,
trazos vectoriales, imágenes ráster, patrones de sombreado y form XObjects incrustados (PDF 32000-1
§ 8.2). ObjectBounds devuelve el rectángulo delimitador del objeto número
Index en la página actual después de que PDFium haya aplanado la pila CTM y la
matriz cm propia del objeto, de modo que el rectángulo puede usarse directamente para pruebas de
intersección, generación de máscaras o recortes de miniatura sin más matemáticas
El rectángulo usa la convención de coordenadas PDF estándar — origen en la esquina inferior izquierda
de la página, unidades de 1/72 de pulgada, Y creciendo hacia arriba — así que Bottom < Top
en un documento bien formado. Envuelve FPDFPageObj_GetBounds de PDFium; la llamada es O(1) por sí
misma, pero recorre internamente cada vértice de contorno en los trazos, así que conviene guardar en caché el
resultado si lo lees muchas veces por objeto
El rango válido es 0 .. ObjectCount - 1 para la página seleccionada actualmente por
PageNumber. Acceder a un índice fuera de rango devuelve un rectángulo cero.
Combina esta propiedad con ObjectType para despachar el tipo de objeto antes
de leer propiedades adicionales específicas de cada tipo
| Index | Índice de objeto de página basado en cero, 0 ≤ Index < ObjectCount |
// resaltar cada objeto de imagen en la página actual
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('imagen %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;