Compression Overview

Επισκόπηση

Το HotPDF χρησιμοποιεί διάφορες διαδρομές συμπίεσης και αποσυμπίεσης, ανάλογα με το αν δημιουργεί νέο περιεχόμενο PDF ή διαβάζει υπάρχοντα streams και εικόνες από εξωτερικά αρχεία

Main Compression Paths

  • FlateDecode: χρησιμοποιείται για παραγόμενα PDF streams μέσω THotPDF.Compression και υποστηρίζεται από zlib-ng σε zlib-compatible mode, με 64-bit runtime SIMD dispatch όπου είναι διαθέσιμο
  • CompressionLevel: THotPDF.CompressionLevel selects clNone, clFastest, clDefault, or clMaximum for enhanced Flate paths.
  • LZWDecode: υποστηρίζεται για legacy PDF και δεδομένα τύπου TIFF μέσω HPDFLZW.pas
  • DCT/JPEG: χρησιμοποιείται για τυπικές ροές εικόνας JPEG που χειρίζεται η υποστήριξη εικόνας του HotPDF και υποστηρίζεται από libjpeg-turbo 3.1.90 με NASM SIMD acceleration objects
  • JBIG2 και JPEG2000: διαθέσιμα για εξειδικευμένες ροές εικόνας όπου η μορφή πηγής χρησιμοποιεί ήδη αυτούς τους codecs

PDF 1.5+ structural size reduction

Για έξοδο PDF 1.5+, το HotPDF μπορεί να τοποθετήσει δύο επιπλέον διαδρομές δομικής συμπίεσης πάνω από 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: συσκευάζει μικρά indirect dictionaries (multi-page documents, annotations, AcroForm widgets, structure-tree elements, Optional Content layers) σε container streams /Type /ObjStm (ISO 32000-1 7.5.7) που αναφέρονται μέσω type-2 xref entries. Απαιτεί να είναι ενεργό και το UseXRefStream. Ένα 30-page graphics-only smoke μειώνεται από 14502 σε 8488 bytes (-41.5%) με τους δύο διακόπτες μαζί
  • 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

See Also