Compression Overview

Overzicht

HotPDF gebruikt verschillende compressie- en decompressiepaden, afhankelijk van of het nieuwe PDF-inhoud genereert of bestaande streams en afbeeldingen uit externe bestanden leest.

Belangrijkste compressiepaden

  • FlateDecode: Wordt gebruikt voor gegenereerde PDF-streams via THotPDF.Compression en wordt ondersteund door zlib-ng in zlib-compatibele modus, met 64-bit runtime-SIMD-dispatch waar beschikbaar; high-ratio-workflows voor geladen streams kunnen een begrensde Zopfli-pas toevoegen die alleen wordt gekozen als die kleiner is dan het beste zlib-resultaat
  • CompressionLevel: THotPDF.CompressionLevel kiest clNone, clFastest, clDefault of clMaximum voor de verbeterde Flate-paden.
  • LZWDecode: Ondersteund voor legacy-PDF- en TIFF-achtige data via HPDFLZW.pas
  • DCT/JPEG: Wordt gebruikt voor standaard JPEG-beeldworkflows die door de HotPDF-beeldondersteuning worden afgehandeld en wordt ondersteund door libjpeg-turbo 3.1.90 met NASM-SIMD-versnellingsobjecten
  • JBIG2 en JPEG2000: Beschikbaar voor gespecialiseerde beeldworkflows waarbij het bronformaat die codecs al gebruikt

Structurele groottebesparing in PDF 1.5+

Voor PDF 1.5+-uitvoer kan HotPDF twee extra structurele compressiepaden stapelen bovenop de FlateDecode-gecomprimeerde streams. Beide zijn opt-in en vullen elkaar van nature aan:

  • UseXRefStream: Vervang de tekstuele xref ... trailer-kruisverwijzingstabel door een gecomprimeerde /Type /XRef-stream (ISO 32000-1 7.5.8). Vermindert de xref-overhead op grote documenten met 4-10x.
  • UseObjectStreams: Pakt kleine indirecte woordenlijsten (documenten met veel pagina's, annotaties, AcroForm-widgets, structuurboomelementen, Optional Content-lagen) in /Type /ObjStm-containerstreams (ISO 32000-1 7.5.7) waarnaar via type-2-xref-regels wordt verwezen. Vereist dat UseXRefStream ook aan staat. Een 30-pagina rooktest met alleen graphics krimpt met de twee schakelaars samen van 14502 naar 8488 bytes (-41,5%).
  • Kopie-decompressie: DecompressForCopy en OriginallyCompressed beschrijven hoe kopiepaden voor geladen documenten gecomprimeerde bronstreams materialiseren.

Related Units

  • HPDFZLib.pas voor FlateDecode en predictor-bewuste inflate-helpers
  • HPDFLZW.pas voor LZW-decompressie
  • HPDFJBIG2.pas, HPDFJBIG2Codec.pas en HPDFJBIG2Enc.pas voor JBIG2-codering en -decodering
  • HPDFJpeg2000.pas en HPDFOpenJpeg.pas voor JPEG2000-gerelateerde workflows

Zie ook