Compression Overview

סקירה

HotPDF משתמשת בכמה מסלולי דחיסה ופירוק דחיסה בהתאם לשאלה אם היא מייצרת תוכן PDF חדש או קוראת streams ותמונות קיימים מקבצים חיצוניים

Main Compression Paths

  • FlateDecode: משמש לזרמי PDF שנוצרים דרך THotPDF.Compression ומגובה ב-zlib-ng במצב תואם zlib, עם runtime SIMD dispatch ב-64-bit היכן שזמין
  • CompressionLevel: THotPDF.CompressionLevel selects clNone, clFastest, clDefault, or clMaximum for enhanced Flate paths.
  • LZWDecode: נתמך עבור נתוני PDF legacy ונתונים בסגנון TIFF דרך HPDFLZW.pas
  • DCT/JPEG: משמש לתהליכי עבודה סטנדרטיים של תמונות JPEG שמטופלים על ידי תמיכת התמונות של HotPDF ומגובה ב-libjpeg-turbo 3.1.90 עם אובייקטי האצת NASM SIMD
  • JBIG2 ו-JPEG2000: זמינים לתהליכי תמונה מיוחדים שבהם פורמט המקור כבר משתמש ב-codecs אלה

PDF 1.5+ structural size reduction

עבור פלט PDF 1.5+ HotPDF יכולה לשכב שני מסלולי דחיסה מבניים נוספים מעל streams דחוסים ב-FlateDecode. שניהם opt-in ומשתלבים באופן טבעי:

  • UseXRefStream: Replace the textual xref ... trailer cross-reference table with a compressed /Type /XRef stream (ISO 32000-1 7.5.8). Cuts xref overhead by 4-10x on large documents.
  • UseObjectStreams: אורז מילונים indirect קטנים, כמו מסמכים מרובי עמודים, annotations, ‏AcroForm widgets, רכיבי structure-tree ו-Optional Content layers, לתוך container streams מסוג /Type /ObjStm ‏(ISO 32000-1 7.5.7) שאליהם מפנים type-2 xref entries. דורש שגם UseXRefStream יהיה פעיל. smoke גרפי של 30 עמודים קטן מ-14502 ל-8488 bytes ‏(-41.5%) עם שני המתגים יחד
  • Copy decompression: DecompressForCopy and OriginallyCompressed describe how loaded-document copy paths materialize compressed source streams.

Related Units

  • HPDFZLib.pas for FlateDecode and predictor-aware inflate helpers
  • HPDFLZW.pas for LZW decompression
  • HPDFJBIG2.pas for JBIG2 decoding support
  • HPDFJpeg2000.pas and HPDFOpenJpeg.pas for JPEG2000-related workflows

See Also