Compression Overview

Prezentare generală

HotPDF folosește mai multe căi de comprimare și decompresie, în funcție de faptul dacă generează conținut PDF nou sau citește fluxuri și imagini existente din fișiere externe

Main Compression Paths

  • FlateDecode: Folosit pentru fluxurile PDF generate prin THotPDF.Compression și susținut de zlib-ng în mod compatibil zlib, cu dispatch SIMD pe runtime pe 64 de biți acolo unde este disponibil
  • CompressionLevel: THotPDF.CompressionLevel selects clNone, clFastest, clDefault, or clMaximum for enhanced Flate paths.
  • LZWDecode: Suportat pentru date PDF vechi și de tip TIFF prin HPDFLZW.pas
  • DCT/JPEG: Folosit pentru fluxurile standard de imagini JPEG gestionate de suportul de imagini HotPDF și susținut de libjpeg-turbo 3.1.90 cu obiecte de accelerare NASM SIMD
  • JBIG2 și JPEG2000: Disponibile pentru fluxuri specializate de imagini în care formatul sursă folosește deja acele codec-uri

PDF 1.5+ structural size reduction

Pentru ieșirea PDF 1.5+, HotPDF poate suprapune două căi suplimentare de compresie structurală peste fluxurile comprimate cu FlateDecode. Ambele sunt opt-in și se completează natural:

  • 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: Ambalează dicționare indirecte mici (documente cu mai multe pagini, adnotări, widgeturi AcroForm, elemente de arbore de structură, straturi Optional Content) în fluxuri container /Type /ObjStm (ISO 32000-1 7.5.7) referențiate prin intrări xref de tip 2. Necesită și activarea UseXRefStream. Un smoke de 30 de pagini doar cu grafică se reduce de la 14502 la 8488 de octeți (-41.5%) când cele două comutatoare sunt combinate
  • Copy decompression: DecompressForCopy and OriginallyCompressed describe how loaded-document copy paths materialize compressed source streams.

Related Units

  • HPDFZLib.pas pentru FlateDecode și helper-e de inflate conștiente de predictor
  • HPDFLZW.pas for LZW decompression
  • HPDFJBIG2.pas for JBIG2 decoding support
  • HPDFJpeg2000.pas and HPDFOpenJpeg.pas for JPEG2000-related workflows

See Also