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');