property ObjectBounds[Index: Integer]: TPdfRectangle; // read only
En sidas PDF-innehållsström är en sekvens av sidobjekt: textrader,
vektorbanor, rasterbilder, skuggningsmönster och inbäddade form XObjects (PDF 32000-1
§ 8.2). ObjectBounds returnerar begränsningsrutan för objekt nummer
Index på aktuell sida efter att PDFium har plattat ut CTM-stacken och objektets
egen cm-matris, så rektangeln kan användas direkt för träffkontroll,
maskbyggande eller beskärning av miniatyrbilder utan någon ytterligare matematik
Rektangeln använder den vanliga PDF-koordinatkonventionen — origo i sidans nedre vänstra
hörn, enheter på 1/72 tum och Y växer uppåt — så Bottom < Top i ett välformat dokument. Wrappar PDFiums FPDFPageObj_GetBounds; anropet är
O(1) i sig men går internt igenom varje konturhörn för banor, så det är klokt att cacha
resultatet om du läser det många gånger per objekt
Giltigt intervall är 0 .. ObjectCount - 1 för sidan som för närvarande väljs av
PageNumber. Om du läser ett index utanför intervallet returneras
en nollrektangel. Kombinera denna egenskap med ObjectType
för att avgöra objektets typ innan du läser ytterligare egenskaper per typ
| Index | Zero-based page-object index, 0 ≤ Index < ObjectCount. |
// Markera varje bildobjekt på aktuell sida.
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('bild %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;