PDFiumPas 文件

SaveAsReachable 方法

元件: TPdf  ·  單元: PDFium
將文件重寫為單一乾淨修訂版本,只保留可從 catalog 及 trailer /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 會先將目前的記憶體內文件寫成非增量複本,讓重寫從標準位元組開始

接著解析物件圖,從 catalog 執行全文件的可觸達性走訪,收集每個存活的間接物件,包括頁面樹、頁面資源、字型、影像、form XObject、AcroForm、結構樹、大綱、name tree、optional content、中繼資料、output intent 與關聯檔案

因增量更新、頁面合併或修復儲存而變成無法觸達的物件會被捨棄,輸出為單一 classic 修訂版本,不含 object stream 也不含 cross-reference stream

物件編號與世代編號都會保留,因此每個存活的 cross-reference 無需重新編號仍然有效;無法觸達的物件在重建的 classic cross-reference 表中成為 free 項目

重建後的 trailer 只有在被參照的物件於清理後存活時,才會繼續攜帶 /Root/Info/ID

Policies and limits

Example

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

See Also

SaveAs, SaveAsRepaired, SaveAsNormalizedContent