PDFiumPas 文件

SaveAsDeduplicated 方法

元件: TPdf  ·  單元: PDFium
將文件重寫為單一乾淨修訂版本:先清掃無法連通的物件,再將相容的字型、影像與 form 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 一般捨棄每個無法連通的物件

接著對字型、影像與 form XObject 建立指紋:每個候選字典、其完整可連通子圖與原始串流承載都會被遞迴雜湊,因此只有整體內容完全相同時重複項目才會合併

每個指向被合併重複項目的交叉參考都會改寫為存留的代表,而物件編號與世代保持穩定,因此每個存留的交叉參考仍然有效

輸出是不含物件串流與交叉參考串流的單一傳統修訂版本,而重建的 trailer 會延續 /Root/Info/ID

Policies and limits

Example

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

See Also

SaveAsReachable, SaveAs, SaveAsNormalizedContent