PDFium Delphi Component 文件

SaveAsDeduplicated 方法

组件: TPdf  ·  单元: PDFium
将文档重写为单个干净的修订,先清扫不可达对象,然后将兼容的字体、图像和表单 XObject 合并到一个共享代表上

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 一样丢弃每个不可达对象

然后对字体、图像和表单 XObject 进行指纹识别:每个候选字典、其完整可达子图及其原始流负载都被递归哈希,因此仅当内容完全相同时重复项才会合并

每个指向被合并掉的重复项的交叉引用都会被重写到存活代表上,对象号和代次保持稳定,因此每个存活的交叉引用仍然有效

输出是单个经典修订,无对象流和交叉引用流,重建的 trailer 将 /Root/Info/ID 向前携带

Policies and limits

Example

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

See Also

SaveAsReachable, SaveAs, SaveAsNormalizedContent