PDFium Delphi Component Docs

Object graph inspection and patching

Composant: TPdf  ·  Units: PDFium, FPdfCompress
Exporte une vue typée bornée des objets indirects actifs et applique des correctifs de dictionnaire contraints de façon transactionnelle

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

L’objet racine, le nombre d’objets actifs, les objets exportés et l’état de troncature sont émis dans l’enveloppe versionnée pdf-object-graph-v1

Chaque valeur est identifiée comme dictionnaire, tableau, chaîne littérale ou hexadécimale, nom, référence, null, Boolean, entier, réel ou mot-clé

Les flux exposent leur nombre d’octets encodés et, lorsque activé, un condensé SHA-256 tandis que leur charge utile reste omise

Les objets directs et les membres matérialisés depuis les conteneurs ObjStm utilisent la même représentation

Inspection options

MaxObjectsNombre maximal d’objets actifs écrits avant que l’enveloppe JSON ne rapporte truncated: true
MaxDepthProfondeur maximale de tableau et dictionnaire imbriqués de 1 à 32
MaxOutputBytesBorne supérieure dure pour le flux d’octets JSON complet compatible UTF-8
MaxStringBytesOctets maximaux conservés depuis une chaîne ou un nom PDF
IncludeStreamDigestsCalcule SHA-256 sur les octets de flux encodés sans décoder ni exporter la charge utile

Patch model

Chaque TPdfObjectPatchOperation sélectionne un numéro d’objet, une génération et une clé de dictionnaire de premier niveau exacts, puis définit ou supprime cette clé

Les opérations Set acceptent des valeurs null typées, Boolean, entier, réel, nom, chaîne de texte ou référence indirecte et n’acceptent jamais de syntaxe PDF brute

Toutes les identités d’objet, générations, références, noms, opérations dupliquées et dictionnaires cibles sont validés avant que la sortie ne soit délivrée

La longueur de flux et les clés de chaîne de filtres ne peuvent pas être corrigées car les changer indépendamment des octets encodés corromprait le flux

L’écrivain ajoute une révision incrémentale, reconstruit le graphe actif résultant, le charge strictement via PDFium, et n’écrit qu’ensuite le flux de l’appelant ou ne remplace atomiquement un fichier

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

Session de sauvegarde incrémentale, SaveAsObjectStream, SaveAs