property ObjectBounds[Index: Integer]: TPdfRectangle; // read only
El flujo de contenido PDF de una página es una secuencia de objetos de página: tiradas de
texto, trazados vectoriales, imágenes ráster, patrones de sombreado y XObjects de formulario incrustados
(PDF 32000-1 § 8.2). ObjectBounds devuelve el cuadro delimitador del objeto número
Index en la página actual tras aplanar PDFium la pila CTM y la propia matriz cm del
objeto, de modo que el rectángulo es directamente utilizable para hit testing, construcción de máscaras o
recortes de miniaturas sin más cálculos.
El rectángulo usa la convención de coordenadas PDF habitual — origen en la esquina inferior izquierda
de la página, unidades de 1/72 pulgadas, Y creciendo hacia arriba — de modo que Bottom < Top
en un documento bien formado. Envuelve FPDFPageObj_GetBounds de PDFium; la llamada es
O(1) por sí sola, pero itera internamente cada vértice del contorno para los trazados, por lo que conviene
guardar en caché el resultado si lo lee 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. Combine esta propiedad con ObjectType
para distribuir según el tipo de objeto antes de leer propiedades adicionales específicas del tipo.
| Index | Índice de objeto de página basado en cero, 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;