PDFium Delphi Component Docs

Інспектування та патчинг графа об'єктів

Component: TPdf  ·  Units: PDFium, FPdfCompress
Експортує обмежене типізоване подання активних непрямих об'єктів і транзакційно застосовує обмежені словникові патчі

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

Кореневий об'єкт, кількість активних об'єктів, експортовані об'єкти та стан обрізання видаються в версіонованому конверті pdf-object-graph-v1

Кожне значення ідентифікується як словник, масив, літеральний або шістнадцятковий рядок, ім'я, посилання, null, Boolean, ціле, дійсне або ключове слово

Потоки відкривають свою закодовану кількість байтів і, якщо ввімкнено, дайджест SHA-256, тоді як їхнє наповнення лишається пропущеним

Прямі об'єкти та члени, матеріалізовані з контейнерів ObjStm, використовують те саме подання

Inspection options

MaxObjectsМаксимум активних об'єктів, записаних до того, як JSON-конверт повідомить truncated: true
MaxDepthМаксимальна глибина вкладеності масивів і словників від 1 до 32
MaxOutputBytesЖорстка верхня межа для повного потоку байтів JSON, сумісного з UTF-8
MaxStringBytesМаксимум байтів, збережених з одного рядка або імені PDF
IncludeStreamDigestsОбчислює SHA-256 над закодованими байтами потоку без декодування чи експорту наповнення

Patch model

Кожна TPdfObjectPatchOperation обирає точний номер об'єкта, покоління та ключ словника верхнього рівня, а потім встановлює або видаляє цей ключ

Операції встановлення приймають типізовані значення null, Boolean, ціле, дійсне, ім'я, текстовий рядок або непряме посилання і ніколи не приймають сирого PDF-синтаксису

Усі ідентичності об'єктів, покоління, посилання, імена, дубльовані операції та цільові словники перевіряються до видачі результату

Ключі довжини потоку та ланцюга фільтрів патчити не можна, бо їхня незалежна зміна від закодованих байтів зіпсувала б потік

Засіб запису додає одну інкрементну редакцію, реконструює результівний активний граф, строго завантажує його через PDFium і лише потім записує потік викликувача або атомарно замінює файл

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

Incremental save session, SaveAsObjectStream, SaveAs