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はパスを no-op にします- デコードおよび圧縮された候補は
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');