PDFium Component Docs

Inspectie en patching van de objectgrafiek

Component: TPdf  ·  Units: PDFium, FPdfCompress
Exporteert een begrensde getypte weergave van actieve indirecte objecten en past beperkte woordenboekpatches transactioneel toe

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

Het rootobject, het aantal actieve objecten, de geëxporteerde objecten en de truncatiestatus worden in de versioneerde pdf-object-graph-v1-enveloppe uitgeschreven

Elke waarde wordt geïdentificeerd als woordenboek, array, letterlijke of hexadecimale string, naam, referentie, null, Boolean, integer, real of trefwoord

Streams tonen hun gecodeerde byte-aantal en, indien ingeschakeld, een SHA-256-digest, terwijl hun payload weggelaten blijft

Directe objecten en leden die uit ObjStm-containers zijn gematerialiseerd, gebruiken dezelfde representatie

Inspection options

MaxObjectsMaximum aantal actieve objecten dat wordt weggeschreven voordat de JSON-enveloppe truncated: true rapporteert
MaxDepthMaximale diepte van geneste arrays en woordenboeken van 1 tot en met 32
MaxOutputBytesHarde bovengrens voor de complete met UTF-8 compatibele JSON-bytestroom
MaxStringBytesMaximaal aantal bytes dat van één PDF-string of -naam wordt behouden
IncludeStreamDigestsBerekent SHA-256 over gecodeerde stream-bytes zonder de payload te decoderen of te exporteren

Patch model

Elke TPdfObjectPatchOperation selecteert een exact objectnummer, generatie en sleutel op het hoogste niveau van het woordenboek, en zet die sleutel vervolgens of verwijdert hem

Set-operaties accepteren getypte null-, Boolean-, integer-, real-, naam-, tekststring- of indirecte-referentiewaarden en accepteren nooit rauwe PDF-syntax

Alle objectidentiteiten, generaties, referenties, namen, dubbele operaties en doelhoekenboeken worden gevalideerd voordat output wordt afgeleverd

Streamlengte- en filterketensleutels kunnen niet worden gepatcht, omdat het onafhankelijk wijzigen ervan de stream zou corrumperen ten opzichte van de gecodeerde bytes

De writer voegt één incrementele revisie toe, reconstrueert de resulterende actieve graaf, laadt deze strikt via PDFium, en schrijft pas daarna de caller-stream of vervangt een bestand atomair

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

Incrementele opslaansessie, SaveAsObjectStream, SaveAs