PDFium Delphi Component Docs

Inspektion och patchning av objektgrafen

Component: TPdf  ·  Units: PDFium, FPdfCompress
Exporterar en avgränsad typad vy av aktiva indirekta objekt och tillämpar begränsade dictionary-patchar transaktionsbaserat

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, antalet aktiva objekt, exporterade objekt och trunkeringstillstånd emitteras i det versionshanterade pdf-object-graph-v1-kuvertet

Varje värde identifieras som dictionary, array, literal eller hexadecimal sträng, namn, referens, null, booleskt värde, heltal, reellt tal eller nyckelord

Strömmar exponerar sitt kodade byte-antal och, när det är aktiverat, en SHA-256-digest medan deras nyttolast förblir utelämnad

Direkta objekt och medlemmar materialiserade från ObjStm-behållare använder samma representation

Inspection options

MaxObjectsMaximalt antal aktiva objekt som skrivs innan JSON-kuvertet rapporterar truncated: true
MaxDepthMaximalt nästlingsdjup för arrayer och dictionaryer från 1 till och med 32
MaxOutputBytesHård övre gräns för den kompletta UTF-8-kompatibla JSON-byteströmmen
MaxStringBytesMaximalt antal byte som behålls från en PDF-sträng eller ett namn
IncludeStreamDigestsBeräknar SHA-256 över kodade strömbyte utan att avkoda eller exportera nyttolasten

Patch model

Varje TPdfObjectPatchOperation väljer ett exakt objektnummer, generation och nyckel på toppnivå i dictionaryn, och sätter eller tar sedan bort den nyckeln

Set-operationer accepterar typade värden av null, booleskt, heltal, reellt tal, namn, textsträng eller indirekt referens och accepterar aldrig rå PDF-syntax

Alla objektidentiteter, generationer, referenser, namn, dubblettoperationer och måldictionaryer valideras innan utdata levereras

Strömmens längd- och filterkedjenycklar kan inte patchas, eftersom att ändra dem oberoende av de kodade byte:erna skulle skada strömmen

Skrivaren lägger till en inkrementell revision, bygger om den resulterande aktiva grafen, strikt-laddar den genom PDFium och skriver först då till anroparens ström eller ersätter 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

Inkrementell sparningssession, SaveAsObjectStream, SaveAs