PDFium Delphi Component Docs

SaveAsDeduplicated Метод

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

Syntax

function SaveAsDeduplicated(Stream: TStream; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;

function SaveAsDeduplicated(const FileName: string; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;

Description

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

Затем для шрифтов, изображений и форм XObjects вычисляются отпечатки: словарь-кандидат, его полный достижимый подграф и его необработанные данные потока хешируются рекурсивно, поэтому дубликаты объединяются только при полностью идентичном содержимом

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

Результат - одна классическая ревизия без объектных потоков и без потока перекрёстных ссылок, а перестроенный трейлер переносит /Root, /Info и /ID

Policies and limits

Example

Pdf.SaveAsDeduplicated('deduplicated.pdf', Report);
WriteLn('merged ', Report.MergedImageCount, ' images');

See Also

SaveAsReachable, SaveAs, SaveAsNormalizedContent