THotPDF.OptimizeLoadedStreams 方法
僅在取代項目小於所要求閾值時,將選取的已載入串流系列重寫為 Flate
宣告
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer;
單元
HPDFDoc
參數
| 名稱 | 用途 |
|---|---|
FilterFamilies | 選取未篩選、Flate、LZW、ASCII85、ASCIIHex 與 RunLength 候選 |
MinimumSavingsBytes | 候選取代其來源串流前所需的正值最小位元組縮減量 |
AInfo | 接收已掃描、候選、已重寫、不支援、失敗、之前、之後與已節省位元組的總計 |
傳回值
傳回已載入物件圖中被取代的串流承載數
使用說明
CompressionLevel選取 zlib 速度與壓縮比,而clNone會使此階段不作任何動作- 已解碼與已壓縮的候選會在超過
LoadedStreamMemoryThreshold之後溢出至自有的暫存檔,讓大型文件的記憶體保持有界 - 原始承載與字典在解碼失敗或節省量不足時保持不變
- 帶有
/DecodeParms的串流會被略過,以免不小心變更預測器與非預設 LZW 語意 - 只有當每個系列都被選取且受支援時,多篩選器鏈才符合資格
- 請在此階段之後呼叫
SaveLoadedDocument來保存採用的承載
型別與診斷
THPDFLoadedStreamFilterFamily = (lsffUnfiltered, lsffFlate, lsffLZW,
lsffASCII85, lsffASCIIHex, lsffRunLength);
THPDFLoadedStreamFilterFamilies = set of THPDFLoadedStreamFilterFamily;
THPDFLoadedStreamOptimizationInfo = record
ScannedStreamCount: Integer;
CandidateStreamCount: Integer;
RewrittenStreamCount: Integer;
UnsupportedStreamCount: Integer;
DecodeFailureCount: Integer;
BytesBefore: Int64;
BytesAfter: Int64;
BytesSaved: Int64;
end;
範例
Families := [lsffUnfiltered, lsffFlate, lsffLZW];
Count := PDF.OptimizeLoadedStreams(Families, 16, Info);
if Count > 0 then
PDF.SaveLoadedDocument('optimized.pdf');