Compression Panoramica

Panoramica

HotPDF usa diversi percorsi di compressione e decompressione a seconda che stia generando nuovo contenuto PDF oppure leggendo stream e immagini esistenti da file esterni

Main Compression Paths

  • FlateDecode: usato per gli stream PDF generati tramite THotPDF.Compression e supportato da zlib-ng in modalità compatibile con zlib, con dispatch SIMD runtime a 64 bit dove disponibile
  • CompressionLevel: THotPDF.CompressionLevel selects clNone, clFastest, clDefault, or clMaximum for enhanced Flate paths.
  • LZWDecode: supportato per dati PDF legacy e in stile TIFF tramite HPDFLZW.pas
  • DCT/JPEG: usato per workflow immagine JPEG standard gestiti dal supporto immagini HotPDF e supportato da libjpeg-turbo 3.1.90 con object NASM SIMD acceleration
  • JBIG2 e JPEG2000: disponibili per workflow immagine specializzati in cui il formato sorgente usa già tali codec

PDF 1.5+ structural size reduction

FlateDecode: usato per stream PDF generati tramite THotPDF.Compression e supportato da zlib-ng in modalità zlib-compatible, con dispatch SIMD runtime a 64 bit dove disponibile

  • 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: comprime piccoli dictionaries indiretti (documenti multi-page, annotations, AcroForm widgets, elementi structure-tree, Optional Content layers) dentro container streams /Type /ObjStm (ISO 32000-1 7.5.7) referenziati tramite entry xref type-2. Richiede che anche UseXRefStream sia attivo. Uno smoke test grafico da 30 pagine scende da 14502 a 8488 byte (-41,5%) con i due toggle combinati
  • Copy decompression: DecompressForCopy and OriginallyCompressed describe how loaded-document copy paths materialize compressed source streams.

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

Vedi anche