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;
Obiectul rădăcină, numărul de obiecte active, obiectele exportate și starea de trunchiere sunt emise în plicul versionat pdf-object-graph-v1
Fiecare valoare este identificată ca dicționar, vector, șir literal sau hexazecimal, nume, referință, null, Boolean, întreg, real sau cuvânt cheie
Fluxurile își expun numărul de octeți codificați și, când este activat, un rezumat SHA-256, în timp ce conținutul lor rămâne omis
Obiectele directe și membrii materializați din containere ObjStm folosesc aceeași reprezentare
| MaxObjects | Numărul maxim de obiecte active scrise înainte ca plicul JSON să raporteze truncated: true |
| MaxDepth | Adâncimea maximă de vectori și dicționare imbricate, de la 1 la 32 |
| MaxOutputBytes | Limita superioară strictă pentru fluxul complet de octeți JSON compatibil UTF-8 |
| MaxStringBytes | Numărul maxim de octeți reținuți dintr-un șir sau un nume PDF |
| IncludeStreamDigests | Calculează SHA-256 peste octeții codificați ai fluxului, fără a decoda sau exporta conținutul |
Fiecare TPdfObjectPatchOperation selectează un număr exact de obiect, o generație și o cheie de dicționar de nivel superior, apoi stabilește sau elimină acea cheie
Operațiunile de stabilire acceptă valori tipizate null, Boolean, întreg, real, nume, șir de text sau referință indirectă și nu acceptă niciodată sintaxă PDF brută
Toate identitățile de obiect, generațiile, referințele, numele, operațiunile duplicate și dicționarele țintă sunt validate înainte ca rezultatul să fie livrat
Chevile de lungime și de lanț de filtre ale fluxurilor nu pot fi modificate prin patch, deoarece schimbarea lor independent de octeții codificați ar corupe fluxul
Scriitorul adaugă o revizie incrementală, reconstruiește graful activ rezultat, îl încarcă strict prin PDFium și abia apoi scrie stream-ul apelantului sau înlocuiește atomic un fișier
AllowSignedDocument nu este activat explicit
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);