Sıkıştırma genel bakışı

Genel bakış

HotPDF, yeni PDF content üretmesine veya harici dosyalardan mevcut streams ve images okumasına bağlı olarak birkaç compression ve decompression path kullanır

Ana sıkıştırma yolları

  • FlateDecode: THotPDF.Compression üzerinden üretilen PDF streams için kullanılır ve zlib-compatible mode içinde zlib-ng tarafından, varsa 64-bit runtime SIMD dispatch ile desteklenir
  • CompressionLevel: THotPDF.CompressionLevel gelişmiş Flate yolları için clNone, clFastest, clDefault veya clMaximum seçer.
  • LZWDecode: HPDFLZW.pas üzerinden legacy PDF ve TIFF-style data için desteklenir
  • DCT/JPEG: HotPDF image support tarafından işlenen standard JPEG image workflows için kullanılır ve NASM SIMD acceleration objects ile libjpeg-turbo 3.1.90 tarafından desteklenir
  • JBIG2 and JPEG2000: Source format zaten bu codecs öğelerini kullandığında specialized image workflows için kullanılabilir

PDF 1.5+ yapısal boyut azaltma

PDF 1.5+ output için HotPDF, FlateDecode-compressed streams üzerine iki ek structural compression path katmanı ekleyebilir. İkisi de opt-in şeklindedir ve doğal olarak birlikte kullanılır:

  • UseXRefStream: Metinsel xref ... trailer cross-reference table yerine compressed /Type /XRef stream (ISO 32000-1 7.5.8) yazar. Büyük documents üzerinde xref overhead değerini 4-10x azaltır
  • UseObjectStreams: Küçük indirect dictionaries öğelerini (multi-page documents, annotations, AcroForm widgets, structure-tree elements, Optional Content layers) type-2 xref entries üzerinden referans verilen /Type /ObjStm container streams (ISO 32000-1 7.5.7) içine paketler. UseXRefStream öğesinin de açık olmasını gerektirir. İki toggle birlikte kullanıldığında 30-page graphics-only smoke 14502 bytes değerinden 8488 bytes değerine (-41.5%) düşer
  • Kopya için açma: DecompressForCopy ve OriginallyCompressed sıkıştırılmış kaynak akışlarının nasıl somutlaştırıldığını açıklar.

İlgili units

  • FlateDecode ve predictor-aware inflate helpers için HPDFZLib.pas
  • LZW decompression için HPDFLZW.pas
  • JBIG2 decoding support için HPDFJBIG2.pas
  • JPEG2000-related workflows için HPDFJpeg2000.pas ve HPDFOpenJpeg.pas

Ayrıca bkz.