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;
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
| MaxObjects | Nombre maximal d’objets actifs écrits avant que l’enveloppe JSON ne rapporte truncated: true |
| MaxDepth | Profondeur maximale de tableau et dictionnaire imbriqués de 1 à 32 |
| MaxOutputBytes | Borne supérieure dure pour le flux d’octets JSON complet compatible UTF-8 |
| MaxStringBytes | Octets maximaux conservés depuis une chaîne ou un nom PDF |
| IncludeStreamDigests | Calcule SHA-256 sur les octets de flux encodés sans décoder ni exporter la charge utile |
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
AllowSignedDocument est explicitement activé
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);