Compression Vue d’ensemble

Vue d’ensemble

HotPDF utilise plusieurs chemins de compression et de décompression selon qu’il génère un nouveau contenu PDF ou lit des flux et des images existants depuis des fichiers externes

Chemins de compression principaux

  • FlateDecode: Utilisé pour les flux PDF générés via THotPDF.Compression et pris en charge par zlib-ng en mode compatible zlib, avec dispatch SIMD 64 bits à l’exécution lorsque disponible
  • CompressionLevel: THotPDF.CompressionLevel sélectionne clNone, clFastest, clDefault ou clMaximum pour les chemins Flate améliorés
  • LZWDecode: Pris en charge pour les données PDF héritées et de type TIFF via HPDFLZW.pas
  • DCT/JPEG: Utilisé pour les workflows d’image JPEG standard gérés par la prise en charge image de HotPDF et pris en charge par libjpeg-turbo 3.1.90 avec objets d’accélération SIMD NASM
  • JBIG2 et JPEG2000: Disponibles pour les workflows d’image spécialisés lorsque le format source utilise déjà ces codecs

Réduction structurelle de taille PDF 1.5+

Pour la sortie PDF 1.5+ HotPDF peut superposer deux chemins de compression structurelle supplémentaires sur des flux compressés FlateDecode. Les deux sont à activation explicite et se complètent naturellement :

  • UseXRefStream: Remplace la table de références croisées textuelle xref ... trailer par un flux compressé /Type /XRef (ISO 32000-1 7.5.8) Réduit la surcharge xref d’un facteur 4 à 10 sur les gros documents
  • UseObjectStreams: Regroupe les petits dictionnaires indirects (documents multipages, annotations, widgets AcroForm, éléments d’arbre de structure, calques Optional Content) dans des flux conteneurs /Type /ObjStm (ISO 32000-1 7.5.7) référencés via des entrées xref de type 2. Nécessite aussi l’activation de UseXRefStream. Un smoke de 30 pages graphiques seulement passe de 14502 à 8488 octets (-41.5%) avec les deux options combinées
  • Décompression pour copie : DecompressForCopy et OriginallyCompressed décrivent la matérialisation des flux source compressés

Unités associées

  • HPDFZLib.pas pour FlateDecode et les assistants inflate sensibles aux prédicteurs
  • HPDFLZW.pas pour la décompression LZW
  • HPDFJBIG2.pas pour la prise en charge du décodage JBIG2
  • HPDFJpeg2000.pas et HPDFOpenJpeg.pas pour les workflows liés à JPEG2000

Voir aussi