TPdfPageObjectSnapshotOptions = record ... end;
TPdfPageObjectSnapshotStatus = record ... end;
TPdfContentMarkSnapshot = record ... end;
TPdfPageObjectSnapshot = record ... end;
TPdfPageObjectsSnapshot = record ... end;
TPdfPageObjectSnapshot posjeduje svaki niz i dinamičko polje i ne sadrži FPDF_PAGEOBJECT, FPDF_PAGEOBJECTMARK, handle stranice, fonta, bitmape ni tekstualne stranice
Uobičajeni podaci uključuju vrstu, normalne i RotatedBounds granice, matricu, aktivno stanje, prozirnost, boje ispune i crte, alfu, debljinu crte, spoj linija i HasLineJoin, završetak linija i HasLineCap, dash uzorak s DashPhase te ID označenog sadržaja
Podaci ovisni o vrsti uključuju brojeve putanja i isječaka kroz PathSegmentCount, ClipPathCount i ClipPathSegmentCount s ogranicima HasPathInfo i HasClipPath, neobaveznu geometriju putanje i polje segmenata ClipPath, lagane metapodatke slika i filtere kroz HasImageInfo, neobavezne rječnike oznaka, tekst kroz HasText, nazive i zastavice fontova kroz HasFontInfo, debljinu, FontSize s HasFontSize te RenderMode s HasRenderMode
Svaki neobavezni nativni podatak ima pripadajuću zastavicu Has... tako da nedostupna vrijednost ostane različita od nule ili praznih podataka
function ReadPageObjectsSnapshot(PageNumber: Integer; const Options: TPdfPageObjectSnapshotOptions; out Status: TPdfPageObjectSnapshotStatus): TPdfPageObjectsSnapshot;
PageNumber ima osnovu jedan, a očitavanje druge stranice zadržava aktivni TPdf.PageNumber
TPdfPageObjectSnapshotOptions.Default snima uobičajene podatke, brojeve putanja i isječaka, metapodatke slika i metapodatke fontova, dok ostavlja isključenim terete IncludePathSegments, IncludeClipPaths, IncludeContentMarks i IncludeText
TPdfPageObjectSnapshotOptions.Full omogućuje segmente putanja, isječke, oznake sadržaja i tekst objekta pod istim izričitim proračunima
Proračuni pokrivaju broj objekata kroz MaxObjects, MaxPathSegments, MaxClipPathSegments, MaxMarkParams, MaxTextCharacters, MaxStringBytes te proteklo vrijeme kroz DeadlineMilliseconds; IncludeImageMetadata otvara lagane podatke o slici
Status izvješćuje NativeObjectCount, ObjectsVisited, PathSegmentsVisited, ClipPathSegmentsVisited, MarksVisited, MarkParamsVisited, TextCharacters i StringBytes te postavlja ObjectLimitReached, PathSegmentLimitReached, ClipPathSegmentLimitReached, MarkParamLimitReached, TextCharacterLimitReached, StringLimitReached ili DeadlineReached kada proračun skrati rezultat, dok MetadataFailureCount izvješćuje o nedostupnim nativnim podacima bez prekida preostalog obilaska
property PageObjectsSnapshot[PageNumber: Integer]: TPdfPageObjectsSnapshot;
property PageObjectSnapshotCacheCapacity: Integer; // default 8
property PageObjectSnapshotCacheCount: Integer;
property PageObjectSnapshotCacheHitCount: Int64;
property PageObjectSnapshotCacheMissCount: Int64;
Indeksirano svojstvo primjenjuje zadane opcije i zadržava samo dovršene snimke u ograničenoj predmemoriji najdulje nekorištenih
Svaka vraćena vrijednost duboka je kopija u vlasništvu pozivatelja, pa izmjena ugnježđenih dash nizova, parametara oznaka, segmenata putanja, isječaka, filtera ili nizova ne može mijenjati predmemorirane podatke ni dokument
Uređivanja stranice poništavaju odgovarajući unos, dok zamjena dokumenta i promjene stabla stranica čiste cijelu predmemoriju
Kapacitet nula onemogućuje zadržavanje bez onemogućavanja izravnih ograničenih očitavanja
PageComplexity ponovno koristi ovu predmemoriju za vrste objekata, brojeve putanja, piksele slika i prozirnost
var
Snapshot: TPdfPageObjectsSnapshot;
Obj: TPdfPageObjectSnapshot;
begin
Pdf.PageObjectSnapshotCacheCapacity := 16;
Snapshot := Pdf.PageObjectsSnapshot[1];
if not Snapshot.Status.Completed then
raise Exception.Create('Page object snapshot is incomplete');
for Obj in Snapshot.Objects do
if Obj.ObjectType = otImage then
IndexImage(Obj.Bounds, Obj.ImageInfo);
end;