Compression Overview

Visão geral

O HotPDF usa vários caminhos de compressão e descompressão, dependendo de estar gerando novo conteúdo PDF ou lendo streams e imagens existentes de arquivos externos.

Main Compression Paths

  • FlateDecode: Usado para streams PDF gerados por meio de THotPDF.Compression e respaldado pelo zlib-ng em modo compatível com zlib, com despacho SIMD em runtime de 64 bits quando disponível; fluxos de alta razão de streams carregados podem adicionar uma passada de Zopfli com orçamento, selecionada apenas quando menor que o melhor resultado do zlib
  • CompressionLevel: THotPDF.CompressionLevel seleciona clNone, clFastest, clDefault ou clMaximum para os caminhos aprimorados de Flate.
  • LZWDecode: Suportado para dados legados de PDF e estilo TIFF por meio de HPDFLZW.pas
  • DCT/JPEG: Usado para fluxos de imagens JPEG padrão tratados pelo suporte a imagens do HotPDF e respaldado pela libjpeg-turbo 3.1.90 com objetos de aceleração NASM SIMD
  • JBIG2 and JPEG2000: Disponível para fluxos de imagem especializados em que o formato de origem já usa esses codecs

Redução estrutural de tamanho em PDF 1.5+

Para saída PDF 1.5+ o HotPDF pode sobrepor dois caminhos estruturais adicionais de compressão sobre streams comprimidos com FlateDecode. Ambos são opt-in e se combinam naturalmente:

  • UseXRefStream: Substitui a tabela textual de cross-references xref ... trailer por um stream comprimido /Type /XRef (ISO 32000-1 7.5.8). Corta a sobrecarga de xref em 4-10x em documentos grandes.
  • UseObjectStreams: Empacota dicionários indiretos pequenos (documentos multi-página, anotações, widgets AcroForm, elementos de árvore de estrutura, camadas de Optional Content) em streams de contêiner /Type /ObjStm (ISO 32000-1 7.5.7) referenciados por entradas type-2 de xref. Exige que UseXRefStream também esteja ligado. Um smoke de 30 páginas só de gráficos encolhe de 14502 para 8488 bytes (-41,5%) com os dois interruptores combinados.
  • Copy decompression: DecompressForCopy e OriginallyCompressed descrevem como os caminhos de cópia de documentos carregados materializam streams de origem comprimidos.

Related Units

  • HPDFZLib.pas para FlateDecode e helpers de inflate conscientes de predictors
  • HPDFLZW.pas para descompressão LZW
  • HPDFJBIG2.pas, HPDFJBIG2Codec.pas e HPDFJBIG2Enc.pas para codificação e decodificação JBIG2
  • HPDFJpeg2000.pas e HPDFOpenJpeg.pas para fluxos relacionados a JPEG2000

See Also