Resumen de compresión

Descripción general

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

Rutas principales de compresión

  • FlateDecode: Se usa para los flujos PDF generados a través de THotPDF.Compression y está respaldado por zlib-ng en modo compatible con zlib, con despacho SIMD en tiempo de ejecución de 64 bits cuando está disponible
  • CompressionLevel: THotPDF.CompressionLevel selecciona clNone, clFastest, clDefault o clMaximum para rutas Flate mejoradas
  • LZWDecode: Compatible con datos heredados de PDF y de estilo TIFF a través de HPDFLZW.pas
  • DCT/JPEG: Se usa para flujos de trabajo estándar de imágenes JPEG gestionados por el soporte de imágenes de HotPDF y respaldados por libjpeg-turbo 3.1.90 con objetos de aceleración SIMD de NASM
  • JBIG2 y JPEG2000: Disponible para flujos de trabajo de imagen especializados cuando el formato de origen ya usa esos códecs

Reducción estructural de tamaño en PDF 1.5+

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

  • UseXRefStream: Reemplaza la tabla textual de referencias cruzadas xref ... trailer por un flujo comprimido /Type /XRef (ISO 32000-1 7.5.8) y reduce la sobrecarga de 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 estructura, capas de contenido opcional) en flujos contenedor /Type /ObjStm (ISO 32000-1 7.5.7) referenciados mediante entradas xref de tipo 2. Requiere que UseXRefStream también esté activado. Una prueba de 30 páginas solo con gráficos se reduce de 14502 a 8488 bytes (-41.5%) con ambas opciones combinadas
  • Descompresión para copia: DecompressForCopy y OriginallyCompressed describen cómo las rutas de copia materializan flujos fuente comprimidos

Unidades relacionadas

  • HPDFZLib.pas para FlateDecode y ayudantes de inflate con conocimiento de predictores
  • HPDFLZW.pas para descompresión LZW
  • HPDFJBIG2.pas para soporte de decodificación JBIG2
  • HPDFJpeg2000.pas y HPDFOpenJpeg.pas para flujos de trabajo relacionados con JPEG2000

Véase también