PDFium Delphi Component Docs

ObjectBounds Eigenschaft

Komponente: TPdf  ·  Unit: PDFium
Enges achsenparalleles Begrenzungsrechteck eines einzelnen Seitenobjekts auf der aktuellen Seite, ausgedrückt in PDF-Benutzerraumkoordinaten, nachdem jede CTM und jede objektbezogene Matrix angewendet wurde

Syntax

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

Description

Der PDF-Content Stream einer Seite ist eine Folge von Seitenobjekten: Textläufe, Vektorpfade, Rasterbilder, Shading-Patterns und eingebettete Form-XObjects (PDF 32000-1 § 8.2). ObjectBounds liefert die Bounding Box des Objekts Nummer Index auf der aktuellen Seite, nachdem PDFium den CTM-Stack und die eigene cm-Matrix des Objekts zusammengeklappt hat; das Rechteck lässt sich damit direkt für Hit-Tests, Maskenbau oder Thumbnail-Beschnitte verwenden, ohne weitere Rechnerei

Das Rechteck folgt der üblichen PDF-Koordinatenkonvention — Ursprung in der unteren linken Ecke der Seite, Einheit 1/72 inch, Y wächst nach oben — in einem wohlgeformten Dokument gilt also Bottom < Top. Kapselt PDFiums FPDFPageObj_GetBounds; der Aufruf ist für sich O(1), iteriert aber intern bei Pfaden über jeden Kontur-Vertex — das Ergebnis zu cachen ist also klug, wenn Sie es je Objekt mehrfach lesen

Der gültige Bereich ist 0 .. ObjectCount - 1 für die Seite, die aktuell über PageNumber gewählt ist. Der Zugriff auf einen Index außerhalb des Bereichs liefert ein Null-Rechteck. Diese Eigenschaft mit ObjectType kombinieren, um nach Objektart zu verzweigen, bevor weitere typspezifische Eigenschaften gelesen werden

Parameters

Index0-basierter Seitenobjekt-Index, 0 ≤ Index < ObjectCount

Remarks

Example

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

See Also

ObjectCount, ObjectType, ObjectHandle, ObjectTransparent, PageNumber