Omówienie kompresji

Omówienie

HotPDF używa kilku ścieżek kompresji i dekompresji w zależności od tego, czy generuje nową zawartość PDF, czy czyta istniejące streams i images z plików zewnętrznych

Główne ścieżki kompresji

  • FlateDecode: Używane dla generowanych PDF streams przez THotPDF.Compression i obsługiwane przez zlib-ng w trybie zgodnym z zlib, z 64-bit runtime SIMD dispatch tam, gdzie jest dostępny
  • CompressionLevel: THotPDF.CompressionLevel wybiera clNone, clFastest, clDefault lub clMaximum dla ulepszonych ścieżek Flate.
  • LZWDecode: Obsługiwane dla legacy PDF i danych w stylu TIFF przez HPDFLZW.pas
  • DCT/JPEG: Używane dla standardowych workflows obrazów JPEG obsługiwanych przez HotPDF image support i wspierane przez libjpeg-turbo 3.1.90 z obiektami NASM SIMD acceleration
  • JBIG2 and JPEG2000: Dostępne dla wyspecjalizowanych workflows obrazów, w których format źródłowy już używa tych kodeków

Redukcja rozmiaru strukturalnego PDF 1.5+

Dla wyjścia PDF 1.5+ HotPDF może nałożyć dwie dodatkowe structural compression paths na streams skompresowane FlateDecode. Obie są opt-in i naturalnie działają razem:

  • UseXRefStream: Zastępuje tekstową tabelę cross-reference xref ... trailer skompresowanym streamem /Type /XRef (ISO 32000-1 7.5.8). Zmniejsza narzut xref 4-10x w dużych dokumentach
  • UseObjectStreams: Pakuje małe indirect dictionaries (multi-page documents, annotations, AcroForm widgets, structure-tree elements, Optional Content layers) do container streams /Type /ObjStm (ISO 32000-1 7.5.7) referencjonowanych przez type-2 xref entries. Wymaga, aby UseXRefStream również był włączony. 30-stronicowy graphics-only smoke zmniejsza się z 14502 do 8488 bytes (-41.5%) przy połączeniu obu przełączników
  • Dekompresja przy kopiowaniu: DecompressForCopy i OriginallyCompressed opisują materializację skompresowanych strumieni źródłowych.

Powiązane moduły

  • HPDFZLib.pas dla FlateDecode i predictor-aware inflate helpers
  • HPDFLZW.pas dla dekompresji LZW
  • HPDFJBIG2.pas dla obsługi dekodowania JBIG2
  • HPDFJpeg2000.pas i HPDFOpenJpeg.pas dla workflows związanych z JPEG2000

Zobacz też