TPdfPageObjectSnapshotOptions = record ... end;
TPdfPageObjectSnapshotStatus = record ... end;
TPdfContentMarkSnapshot = record ... end;
TPdfPageObjectSnapshot = record ... end;
TPdfPageObjectsSnapshot = record ... end;
TPdfPageObjectSnapshot ejer hver streng og ethvert dynamisk array og indeholder intet FPDF_PAGEOBJECT-, FPDF_PAGEOBJECTMARK-, side-, font-, bitmap- eller text-page-handle
Almindelige fakta omfatter type, normal og RotatedBounds, matrix, aktiv tilstand, transparens, fyld- og stregfarver, alpha, stregbredde, line join og HasLineJoin, line cap og HasLineCap, dash-mønster med DashPhase samt marked-content-ID
Typespecifikke fakta omfatter sti- og clip-antal gennem PathSegmentCount, ClipPathCount og ClipPathSegmentCount med HasPathInfo- og HasClipPath-gate'ene, valgfri stigeometri og ClipPath-segmentarrayet, letvægts billedmetadata og filtre gennem HasImageInfo, valgfrie mark-ordbøger, tekst gennem HasText, fontnavne og -flag gennem HasFontInfo, vægt, FontSize med HasFontSize samt RenderMode med HasRenderMode
Hver valgfri native faktum har et matchende Has...-flag, så en utilgængelig værdi forbliver adskilt fra nul eller tomme data
function ReadPageObjectsSnapshot(PageNumber: Integer; const Options: TPdfPageObjectSnapshotOptions; out Status: TPdfPageObjectSnapshotStatus): TPdfPageObjectsSnapshot;
PageNumber er én-baseret, og læsning af en anden side bevarer det aktive TPdf.PageNumber
TPdfPageObjectSnapshotOptions.Default fanger almindelige fakta, sti- og clip-antal, billedmetadata og fontmetadata, mens payloads'ene IncludePathSegments, IncludeClipPaths, IncludeContentMarks og IncludeText forbliver deaktiverede
TPdfPageObjectSnapshotOptions.Full aktiverer stisegmenter, clip-stier, content marks og objekttekst under de samme eksplicitte budgetter
Budgetter dækker objektantal gennem MaxObjects, MaxPathSegments, MaxClipPathSegments, MaxMarkParams, MaxTextCharacters, MaxStringBytes samt forløbet tid gennem DeadlineMilliseconds; IncludeImageMetadata styrer letvægts billedfakta
Statussen rapporterer NativeObjectCount, ObjectsVisited, PathSegmentsVisited, ClipPathSegmentsVisited, MarksVisited, MarkParamsVisited, TextCharacters og StringBytes og sætter ObjectLimitReached, PathSegmentLimitReached, ClipPathSegmentLimitReached, MarkParamLimitReached, TextCharacterLimitReached, StringLimitReached eller DeadlineReached, når et budget trunkerer resultatet, mens MetadataFailureCount rapporterer utilgængelige native fakta uden at afbryde den resterende gennemløb
property PageObjectsSnapshot[PageNumber: Integer]: TPdfPageObjectsSnapshot;
property PageObjectSnapshotCacheCapacity: Integer; // default 8
property PageObjectSnapshotCacheCount: Integer;
property PageObjectSnapshotCacheHitCount: Int64;
property PageObjectSnapshotCacheMissCount: Int64;
Den indekserede egenskab anvender standardindstillingerne og gemmer kun fuldstændige snapshots i en afgrænset least-recently-used-cache
Enhver returværdi er en dyb kopi ejet af kalderen, så ændringer af indlejrede dash-arrays, markparametre, stisegmenter, clip-stier, filtre eller strenge hverken kan ændre cachede data eller dokumentet
Sideredigeringer invaliderer den tilsvarende post, mens dokumentudskiftning og side-træ-ændringer rydder hele cachen
En kapacitet på nul deaktiverer gemning uden at deaktivere direkte afgrænsede læsninger
PageComplexity genbruger denne cache til objekttyper, stiantal, billedpixels og transparens
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;