Panorama de la compresión

Visión general

HotPDF usa varias rutas de compresión y descompresión según si está generando contenido PDF nuevo o leyendo streams e imágenes existentes de archivos externos.

Rutas de compresión principales

  • FlateDecode: usado para los streams PDF generados mediante THotPDF.Compression y respaldado por zlib-ng en modo compatible con zlib, con despacho SIMD de 64 bits en runtime donde esté disponible; los flujos de alta relación de streams cargados pueden añadir un pase Zopfli con presupuesto que solo se selecciona cuando resulta menor que el mejor resultado zlib
  • CompressionLevel: THotPDF.CompressionLevel selecciona clNone, clFastest, clDefault o clMaximum para las rutas Flate mejoradas.
  • LZWDecode: soportado para datos PDF legados y de estilo TIFF mediante HPDFLZW.pas
  • DCT/JPEG: usado para los flujos de imágenes JPEG estándar que maneja el soporte de imágenes de HotPDF, respaldado por libjpeg-turbo 3.1.90 con objetos de aceleración SIMD de NASM
  • JBIG2 y JPEG2000: disponibles para flujos de imagen especializados donde el formato fuente ya usa esos códecs

Reducción estructural de tamaño PDF 1.5+

Para salida PDF 1.5+ HotPDF puede superponer dos rutas adicionales de compresión estructural sobre los streams comprimidos con FlateDecode. Ambas son opcionales y combinan de forma natural:

  • UseXRefStream: reemplaza la tabla de referencias cruzadas textual xref ... trailer por un stream comprimido /Type /XRef (ISO 32000-1 7.5.8). Recorta la sobrecarga xref entre 4 y 10 veces en documentos grandes.
  • UseObjectStreams: empaqueta diccionarios indirectos pequeños (documentos multipágina, anotaciones, widgets AcroForm, elementos de árbol de estructuras, capas de Optional Content) en streams contenedores /Type /ObjStm (ISO 32000-1 7.5.7) referenciados mediante entradas xref de tipo 2. Requiere que UseXRefStream también esté activo. Un smoke de 30 páginas solo gráficos se reduce de 14502 a 8488 bytes (-41,5%) combinando los dos interruptores.
  • Descompresión para copia: DecompressForCopy y OriginallyCompressed describen cómo las rutas de copia de documentos cargados materializan los streams fuente comprimidos.

Unidades relacionadas

  • HPDFZLib.pas para FlateDecode y helpers de inflate conscientes del predictor
  • HPDFLZW.pas para descompresión LZW
  • HPDFJBIG2.pas, HPDFJBIG2Codec.pas y HPDFJBIG2Enc.pas para codificación y decodificación JBIG2
  • HPDFJpeg2000.pas y HPDFOpenJpeg.pas para los flujos relacionados con JPEG2000

Véase también