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 stream。图像不会被重采样或有损重压。返回值是重写对象的数量,AInfo 报告每一步

每一步都会重写签名覆盖的字节,因此默认情况下调用会拒绝带签名字段的文档且不做任何更改;设置 AllowSignatureInvalidation 才能照样压缩

一份英文加中文文本、嵌入完整 Arial 和 SimSun 字体的三页文档,会从约 10 MB 降到约 20 KB

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

 

See also: THotPDF、OptimizeLoadedStreams、SubsetLoadedFonts、CompressDocument