PDFium Component Docs

Inspeksjon og patching av objektgraf

Component: TPdf  ·  Units: PDFium, FPdfCompress
Eksporterer en begrenset typet visning av aktive indirekte objekter og anvender begrensede ordbokpatcher transaksjonelt

Syntax

function ExportObjectGraph(Stream: TStream; const Options: TPdfObjectGraphInspectOptions; out Report: TPdfObjectGraphReport): Boolean;

function SaveAsObjectGraphPatched(Stream: TStream; const Operations: TPdfObjectPatchOperations; out Report: TPdfObjectGraphReport; AllowSignedDocument: Boolean = False): Boolean;

function SaveAsObjectGraphPatched(const FileName: string; const Operations: TPdfObjectPatchOperations; out Report: TPdfObjectGraphReport; AllowSignedDocument: Boolean = False): Boolean;

Typed JSON format

Rotobjektet, antall aktive objekter, eksporterte objekter og avkutningstilstand sendes ut i den versjonerte pdf-object-graph-v1-konvolutten

Hver verdi identifiseres som en ordbok, array, litteral eller heksadesimal streng, navn, referanse, null, boolsk verdi, heltall, reelt tall eller nøkkelord

Strømmer eksponerer sitt kodede byteantall og, når aktivert, en SHA-256-digest, mens nyttelasten forblir utelatt

Direkte objekter og medlemmer materialisert fra ObjStm-containere bruker samme representasjon

Inspection options

MaxObjectsMaksimalt antall aktive objekter skrevet før JSON-konvolutten rapporterer truncated: true
MaxDepthMaksimal nestet array- og ordbokdybde fra 1 til og med 32
MaxOutputBytesFast øvre grense for den komplette UTF-8-kompatible JSON-bytestrømmen
MaxStringBytesMaksimalt antall bytes som beholdes fra én PDF-streng eller ett navn
IncludeStreamDigestsBeregner SHA-256 over kodede strømbytes uten å dekode eller eksportere nyttelasten

Patch model

Hver TPdfObjectPatchOperation velger et eksakt objektnummer, en generasjon og en nøkkel på toppnivå i ordboken, og setter eller fjerner deretter den nøkkelen

Sett-operasjoner godtar typede null-, boolske-, heltalls-, reeltalls-, navne-, tekststreng- eller indirekte referanseverdier og godtar aldri rå PDF-syntaks

Alle objektidentiteter, generasjoner, referanser, navn, duplikatoperasjoner og målordbøker valideres før utdata leveres

Strømlengde- og filterkjedenøkler kan ikke patches, fordi å endre dem uavhengig av de kodede bytene ville ødelegge strømmen

Skriveren legger til én inkrementell revisjon, rekonstruerer den resulterende aktive grafen, strenglaster den gjennom PDFium, og skriver først deretter til kallerens strøm eller erstatter en fil atomært

Policies and limits

Example

Options := TPdfObjectGraphInspectOptions.Default;
Pdf.ExportObjectGraph(JsonStream, Options, Report);
SetLength(Operations, 1);
Operations[0].Kind := popSet;
Operations[0].ObjectNumber := CatalogObjectNumber;
Operations[0].Generation := 0;
Operations[0].Key := 'Lang';
Operations[0].Value.Kind := povTextString;
Operations[0].Value.TextValue := 'en-US';
Pdf.SaveAsObjectGraphPatched('patched.pdf', Operations, Report);

See Also

Incremental save session, SaveAsObjectStream, SaveAs