PDFium Delphi Component Docs

Инспекция и коригиране на обектния граф

Компонент: TPdf  ·  Модули: PDFium, FPdfCompress
Експортира ограничен типизиран изглед на активните непреки обекти и прилага ограничени речникови корекции транзакционно

Синтаксис

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;

Типизиран JSON формат

Кореновият обект, броят активни обекти, експортираните обекти и състоянието на отрязване се излъчват в версиирания плик pdf-object-graph-v1

Всяка стойност се идентифицира като речник, масив, литерален или шестнадесетичен низ, име, препратка, null, Boolean, integer, real или keyword

Потоците разкриват броя си кодирани байтове и, когато е включено, SHA-256 digest, докато полезният им товар остава пропуснат

Директните обекти и членовете, материализирани от ObjStm контейнери, използват същото представяне

Опции за проверка

MaxObjectsМаксимум активни обекти, записани преди JSON пликът да отчете truncated: true
MaxDepthМаксимална дълбочина на вложените масиви и речници от 1 до 32
MaxOutputBytesСтрога горна граница за пълния JSON байтов поток, съвместим с UTF-8
MaxStringBytesМаксимум байтове, запазени от един PDF низ или име
IncludeStreamDigestsИзчислява SHA-256 върху кодираните байтове на потока, без да декодира или експортира полезния товар

Модел на корекциите

Всяка TPdfObjectPatchOperation избира точен номер на обект, поколение и ключ на речника от най-високо ниво, след което или задава, или премахва този ключ

Операциите за задаване приемат типизирани стойности null, Boolean, integer, real, име, текстов низ или непряка препратка и никога не приемат суров PDF синтаксис

Всички идентичности на обекти, поколения, препратки, имена, дублирани операции и целеви речници се валидират, преди да се достави изходът

Ключовете за дължина на потока и веригата от филтри не могат да се коригират, защото промяната им независимо от кодираните байтове би повредила потока

Записващият добавя една инкрементална ревизия, реконструира получения активен граф, зарежда го строго през PDFium и едва тогава записва потока на извикващия или атомарно заменя файл

Политики и ограничения

Пример

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);

Виж също

Сесия за инкрементално записване, SaveAsObjectStream, SaveAs