property ObjectBounds[Index: Integer]: TPdfRectangle; // read only
Strumień treści PDF strony jest sekwencją obiektów strony: przebiegów
tekstowych, ścieżek wektorowych, obrazów rastrowych, wzorców cieniowania i osadzonych
form XObjects (PDF 32000-1 § 8.2). ObjectBounds zwraca prostokąt
otaczający obiektu o numerze Index na bieżącej stronie po spłaszczeniu
przez PDFium stosu CTM i własnej macierzy cm obiektu, więc prostokąt
nadaje się bezpośrednio do testowania trafień, budowania masek lub kadrowania miniatur
bez dodatkowych obliczeń
Prostokąt używa standardowej konwencji współrzędnych PDF — początek układu
w lewym dolnym rogu strony, jednostki 1/72 cala, oś Y rosnąca w górę — więc
Bottom < Top w poprawnie utworzonym dokumencie. Opakowuje
FPDFPageObj_GetBounds z PDFium; samo wywołanie ma złożoność O(1), ale
wewnętrznie iteruje po każdym wierzchołku konturu dla ścieżek, więc zapisanie wyniku
do pamięci podręcznej jest rozsądne, gdy odczytujesz go wielokrotnie dla jednego
obiektu
Prawidłowy zakres to 0 .. ObjectCount - 1 dla strony aktualnie
wybranej przez PageNumber. Dostęp do indeksu
spoza zakresu zwraca zerowy prostokąt. Połącz tę właściwość z
ObjectType, aby rozdzielić obsługę według rodzaju
obiektu przed odczytem dodatkowych właściwości dla danego typu
| Index | Indeks obiektu strony liczony od zera, 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;