Docs de PDFiumPas

ObjectBounds Propiedad

Esta entrada API conserva identificadores, firmas, bloques de código y términos PDF en su forma original.
Componente: TPdf  ·  Unidad: PDFium
Tight axis-aligned bounding rectangle of a single page object on the current page, expressed in PDF user-space coordinates after every CTM and per-object matrix has been applied.

Sintaxis

property ObjectBounds[Index: Integer]: TPdfRectangle; // solo lectura

Descripción

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

Parámetros

IndexÍndice de objeto de página basado en cero, 0 ≤ Index < ObjectCount

Notas

Ejemplo

// 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;

Véase también

ObjectCount, ObjectType, ObjectHandle, ObjectTransparent, PageNumber