THotPDF.CompressLoadedDocument

THotPDF

 

Top  Previous  Next

壓縮已載入的 PDF:不帶參數的形式重新壓縮未過濾的串流;帶 Options 的形式則執行 HotPDF 提供的每一項無損縮減

 

Delphi syntax:

function CompressLoadedDocument: Integer; overload;

function CompressLoadedDocument(const Options: THPDFLoadedDocumentCompressionOptions; out AInfo: THPDFLoadedDocumentCompressionInfo): Integer; overload;

 

Description

不帶參數的形式回傳其壓縮結果被採用的串流數

透過 CompressionLevel 選擇最快、預設或最大 zlib 壓縮;clNone 時文件維持不變

以有界區塊處理每條來源串流,只有壓縮後更小時才替換

已有 /Filter 的串流、已刪除的串流與空串流保持不動

這個相容性輔助方法委派給 OptimizeLoadedStreams,只選擇 lsffUnfiltered 並使用一位元組的節省門檻

壓縮後請呼叫 SaveLoadedDocument 寫出轉換後的物件圖

 

帶 Options 的形式

帶 Options 的形式依序執行下列步驟,每一步都無損:捨棄未使用的頁面資源、合併相同的字型與 Form XObject、對內嵌字型做子集化(字型允許時採用緊湊子集)、在更小時以 FlateDecode 重新壓縮串流,並讓下一次儲存改用 object streams。影像不會重新取樣或重新壓縮。回傳值是重寫的物件數,每個步驟由 AInfo 回報

每一步都會重寫簽章涵蓋的位元組,所以預設情況下,呼叫會拒絕帶簽章欄位的文件且不做任何改變;要照樣壓縮,請設定 AllowSignatureInvalidation

一份三頁、中英夾雜並內嵌完整 Arial 與 SimSun 字型的文件,可從約 10 MB 縮到約 20 KB

Doc.LoadFromFile('input.pdf');
        Doc.CompressLoadedDocument(THPDFLoadedDocumentCompressionOptions.Default, Info);
        Doc.SaveLoadedDocument('output.pdf');

 

另請參閱: THotPDF, OptimizeLoadedStreams, SubsetLoadedFonts, CompressDocument