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;
Корневой объект, количество активных объектов, экспортированные объекты и состояние усечения выдаются в версионируемом конверте pdf-object-graph-v1
Каждое значение идентифицируется как словарь, массив, литеральная или шестнадцатеричная строка, имя, ссылка, null, Boolean, целое, вещественное или ключевое слово
Потоки сообщают свой размер в закодированных байтах и, если включено, дайджест SHA-256, тогда как их полезная нагрузка остаётся опущенной
Прямые объекты и члены, материализованные из контейнеров ObjStm, используют то же представление
| MaxObjects | Максимум активных объектов, записываемых до того, как конверт JSON сообщит truncated: true |
| MaxDepth | Максимальная глубина вложенных массивов и словарей от 1 до 32 |
| MaxOutputBytes | Жёсткий верхний предел для полного байтового потока JSON, совместимого с UTF-8 |
| MaxStringBytes | Максимум байтов, сохраняемых из одной строки или имени PDF |
| IncludeStreamDigests | Вычисляет SHA-256 по закодированным байтам потока без декодирования или экспорта полезной нагрузки |
Каждая TPdfObjectPatchOperation выбирает точный номер объекта, поколение и ключ словаря верхнего уровня, а затем либо устанавливает, либо удаляет этот ключ
Операции установки принимают типизированные значения null, Boolean, целое, вещественное, имя, текстовую строку или косвенную ссылку и никогда не принимают необработанный синтаксис PDF
Все идентичности объектов, поколения, ссылки, имена, дублирующиеся операции и целевые словари проверяются до выдачи результата
Ключи длины потока и цепочки фильтров нельзя исправлять, поскольку их изменение независимо от закодированных байтов повредило бы поток
Модуль записи дописывает одну инкрементную редакцию, восстанавливает полученный активный граф, строго загружает его через PDFium и только затем записывает поток вызывающего или атомарно заменяет файл
AllowSignedDocument
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);