Compression – přehled

Přehled

HotPDF používá několik kompresních a dekompresních cest podle toho, zda vytváří nový obsah PDF, nebo čte existující streamy a obrázky z externích souborů

Hlavní kompresní cesty

  • FlateDecode: používá se pro generované PDF streamy přes THotPDF.Compression a je založený na zlib-ng v režimu kompatibilním se zlib, s 64bitovým runtime SIMD dispatch tam, kde je k dispozici
  • CompressionLevel: THotPDF.CompressionLevel vybírá clNone, clFastest, clDefault nebo clMaximum pro rozšířené cesty Flate
  • LZWDecode: podporován pro starší data PDF a data ve stylu TIFF přes HPDFLZW.pas
  • DCT/JPEG: používá se pro standardní pracovní postupy obrázků JPEG obsluhované obrazovou podporou HotPDF a založené na libjpeg-turbo 3.1.90 s akceleračními objekty NASM SIMD
  • JBIG2 a JPEG2000: dostupné pro specializované obrazové pracovní postupy, kde zdrojový formát už tyto kodeky používá

Strukturální zmenšení pro PDF 1.5+

Pro výstup PDF 1.5+ může HotPDF nad streamy komprimované pomocí FlateDecode vrstvit dvě další strukturální kompresní cesty. Obě jsou volitelné a přirozeně se doplňují:

  • UseXRefStream: nahradí textovou tabulku křížových odkazů xref ... trailer komprimovaným streamem /Type /XRef (ISO 32000-1 7.5.8). U velkých dokumentů zmenší režii xref přibližně 4-10x
  • UseObjectStreams: sbalí malé nepřímé slovníky (vícestránkové dokumenty, anotace, widgety AcroForm, prvky stromu struktury, vrstvy Optional Content) do kontejnerových streamů /Type /ObjStm (ISO 32000-1 7.5.7) odkazovaných přes položky xref typu 2. Vyžaduje zapnuté také UseXRefStream. Třicetistránkový grafický smoke se s oběma přepínači zmenší z 14502 na 8488 bajtů (-41,5 %)
  • Dekomprese při kopírování: DecompressForCopy a OriginallyCompressed popisují, jak kopírovací cesty načtených dokumentů materializují komprimované zdrojové streamy

Související unity

  • HPDFZLib.pas pro FlateDecode a pomocné inflate funkce s podporou prediktorů
  • HPDFLZW.pas pro dekompresi LZW
  • HPDFJBIG2.pas pro podporu dekódování JBIG2
  • HPDFJpeg2000.pas a HPDFOpenJpeg.pas pro pracovní postupy související s JPEG2000

Viz také