PDFium Delphi Component Docs

SaveAsReachable Метод

Компонент: TPdf  ·  Модуль: PDFium
Перезаписывает документ как одну чистую ревизию, сохраняющую только косвенные объекты, достижимые из каталога и словаря /Info трейлера

Syntax

function SaveAsReachable(Stream: TStream; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean;

function SaveAsReachable(const FileName: string; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean;

Description

PDFium сначала записывает неинкрементальную копию текущего документа в памяти, чтобы перезапись начиналась с канонических байтов

Затем граф объектов разбирается, и обход достижимости по всему документу от каталога собирает каждый выживший косвенный объект, включая дерево страниц, ресурсы страниц, шрифты, изображения, форм XObjects, AcroForm, дерево структуры, закладки, деревья имён, optional content, метаданные, output intents и связанные файлы

Объекты, ставшие недостижимыми из-за инкрементальных обновлений, слияний страниц или восстановленных сохранений, отбрасываются, а результат - одна классическая ревизия без объектных потоков и без потока перекрёстных ссылок

Номера объектов и поколения сохраняются, поэтому каждая выжившая перекрёстная ссылка остаётся действительной без перенумерации; недостижимые объекты становятся свободными записями в перестроенной классической таблице перекрёстных ссылок

Перестроенный трейлер переносит /Root, /Info и /ID только тогда, когда объекты, на которые они ссылаются, пережили очистку

Policies and limits

Example

Pdf.SaveAsReachable('pruned.pdf', Report);
WriteLn('Kept ', Report.KeptObjectCount, ' pruned ', Report.PrunedObjectCount);

See Also

SaveAs, SaveAsRepaired, SaveAsNormalizedContent