Compression Overview

Обзор

HotPDF использует несколько путей compression и decompression в зависимости от того, генерирует ли он новое PDF content или читает существующие streams и images из внешних files

Main Compression Paths

  • FlateDecode: используется для generated PDF streams через THotPDF.Compression и основан на zlib-ng в zlib-compatible mode, с 64-bit runtime SIMD dispatch там, где доступно
  • CompressionLevel: THotPDF.CompressionLevel выбирает clNone, clFastest, clDefault или clMaximum для расширенных путей Flate.
  • LZWDecode: поддерживается для legacy PDF и TIFF-style data через HPDFLZW.pas
  • DCT/JPEG: используется для стандартных JPEG image workflows, обрабатываемых HotPDF image support, и основан на libjpeg-turbo 3.1.90 с NASM SIMD acceleration objects
  • JBIG2 и JPEG2000: доступны для specialized image workflows, где исходный формат уже использует эти codecs

PDF 1.5+ structural size reduction

Для PDF 1.5+ output HotPDF может наложить два дополнительных structural compression paths поверх FlateDecode-compressed streams. Оба являются opt-in и естественно сочетаются:

  • UseXRefStream: Replace the textual xref ... trailer cross-reference table with a compressed /Type /XRef stream (ISO 32000-1 7.5.8). Cuts xref overhead by 4-10x on large documents.
  • UseObjectStreams: упаковывает small indirect dictionaries (multi-page documents, annotations, AcroForm widgets, structure-tree elements, Optional Content layers) в /Type /ObjStm container streams (ISO 32000-1 7.5.7), referenced через type-2 xref entries. Требует также включенного UseXRefStream
  • Распаковка для копирования: DecompressForCopy и OriginallyCompressed описывают материализацию сжатых исходных потоков.

Related Units

  • HPDFZLib.pas for FlateDecode and predictor-aware inflate helpers
  • HPDFLZW.pas for LZW decompression
  • HPDFJBIG2.pas for JBIG2 decoding support
  • HPDFJpeg2000.pas and HPDFOpenJpeg.pas for JPEG2000-related workflows

См. также