PDFium Delphi Component Docs

SaveAsDeduplicated метод

Component: TPdf  ·  Unit: PDFium
Переписує документ як одну чисту ревізію, що спершу виметає недосяжні об'єкти, а потім згортає сумісні шрифти, зображення та Form 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

Далі знімаються відбитки шрифтів, зображень та Form XObjects: кожен словник-кандидат, його повний досяжний підграф і сире наповнення потоку хешуються рекурсивно, тож дублікати зливаються, лише коли весь їхній вміст ідентичний

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

Результатом є одна класична ревізія без потоків об'єктів і без потоку перехресних посилань, а перебудований трейлер успадковує /Root, /Info і /ID

Policies and limits

Example

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

See Also

SaveAsReachable, SaveAs, SaveAsNormalizedContent