Compression Overview 概述 HotPDF 依据是生成新 PDF 内容,还是从外部文件读取既有流和图像,走不同的压缩与解压路径。 主要压缩路径 - FlateDecode:生成 PDF 流时使用,经 THotPDF.Compression 配置,底层是 zlib 兼容模式的 zlib-ng,可用时启用 64 位运行时 SIMD 分发;已加载流的高压缩比工作流可追加一次带预算的 Zopfli,且只有结果小于最优 zlib 结果时才选用
- CompressionLevel:THotPDF.CompressionLevel 用于为增强的 Flate 路径选择
clNone、clFastest、clDefault 或 clMaximum - LZWDecode:旧式 PDF 和 TIFF 风格数据可通过 HPDFLZW.pas 支持
- DCT/JPEG:标准 JPEG 图像工作流使用,由 HotPDF 图像支持处理,底层是带 NASM SIMD 加速目标的 libjpeg-turbo 3.1.90
- JBIG2 与 JPEG2000:源格式本就使用这些编解码器的专用图像工作流可用
PDF 1.5+ 结构体积缩减 对 PDF 1.5+ 输出,HotPDF 可在 FlateDecode 压缩流之上再叠加两条结构压缩路径。两者都是可选的,且天然成对: - UseXRefStream:用压缩的 /Type /XRef 流(ISO 32000-1 7.5.8)取代文本式
xref ... trailer交叉引用表换成压缩的 /Type /XRef 流(ISO 32000-1 7.5.8),大文档可削减 4-10 倍 xref 开销。 - UseObjectStreams:把小的间接字典(多页文档、注释、AcroForm 控件、结构树元素、Optional Content 图层)打包进
/Type /ObjStm 容器流(ISO 32000-1 7.5.7),经 type-2 xref 条目引用。要求同时开启 UseXRefStream。一个 30 页纯图形冒烟样例在两项开关同开时从 14502 字节缩到 8488 字节(-41.5%)。 - 复制解压:DecompressForCopy 与
OriginallyCompressed 描述已加载文档复制路径如何物化压缩的源流。
相关单元 - HPDFZlib.pas:FlateDecode 与带 predictor 的 inflate 辅助
- HPDFLZW.pas:LZW 解压
- HPDFJBIG2.pas、HPDFJBIG2Codec.pas 与 HPDFJBIG2Enc.pas:JBIG2 编码和解码
- HPDFJpeg2000.pas 与 HPDFOpenJpeg.pas:JPEG2000 相关工作流
另请参阅 |