property ObjectBounds[Index: Integer]: TPdfRectangle; // read only
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
| Index | 0-basierter Seitenobjekt-Index, 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;