Compression Overview

نمای کلی

HotPDF بسته به این‌که در حال تولید محتوای PDF جدید باشد یا جریان‌ها و تصویرهای موجود را از فایل‌های بیرونی بخواند، از چند مسیر فشرده‌سازی و بازفشرده‌سازی استفاده می‌کند

مسیرهای اصلی فشرده‌سازی

  • FlateDecode: برای جریان‌های PDF تولیدشده از طریق THotPDF.Compression استفاده می‌شود و بر پایه zlib-ng در حالت سازگار با zlib است، همراه با ارسال SIMD زمان اجرا 64 بیتی در صورت در دسترس بودن
  • CompressionLevel: THotPDF.CompressionLevel برای مسیرهای پیشرفته Flate یکی از clNone، clFastest، clDefault یا clMaximum را انتخاب می‌کند
  • LZWDecode: برای داده‌های قدیمی PDF و داده‌های سبک TIFF از طریق HPDFLZW.pas پشتیبانی می‌شود
  • DCT/JPEG: برای جریان‌های کاری استاندارد تصویر JPEG به کار می‌رود که توسط پشتیبانی تصویر HotPDF مدیریت می‌شود و بر پایه libjpeg-turbo 3.1.90 با اشیای شتاب‌دهنده NASM SIMD است
  • JBIG2 and JPEG2000: برای جریان‌های کاری ویژه تصویر در دسترس است، جایی که قالب منبع از قبل از آن کُدک‌ها استفاده می‌کند

کاهش ساختاری اندازه در PDF 1.5+

برای خروجی PDF 1.5+، HotPDF می‌تواند دو مسیر فشرده‌سازی ساختاری اضافی را روی جریان‌های فشرده‌شده با FlateDecode لایه‌بندی کند. هر دو به‌صورت اختیاری فعال می‌شوند و به‌خوبی کنار هم کار می‌کنند

  • UseXRefStream: جدول ارجاع متنی xref ... trailer را با یک جریان فشرده /Type /XRef جایگزین می‌کند (ISO 32000-1 7.5.8). سربار xref را در اسناد بزرگ 4 تا 10 برابر کاهش می‌دهد
  • UseObjectStreams: دیکشنری‌های غیرمستقیم کوچک را داخل جریان‌های محفظه /Type /ObjStm بسته‌بندی می‌کند (اسناد چندصفحه‌ای، حاشیه‌نویسی‌ها، widgetهای AcroForm، عناصر درخت ساختار، لایه‌های Optional Content) که از طریق ورودی‌های xref نوع 2 ارجاع می‌شوند. برای این کار باید UseXRefStream هم روشن باشد. یک smoke فقط‌گرافیکی 30 صفحه‌ای با دو کلید هم‌زمان از 14502 به 8488 بایت می‌رسد (-41.5%)
  • Copy decompression: DecompressForCopy و OriginallyCompressed توضیح می‌دهند که مسیرهای کپی سندِ بارگذاری‌شده چگونه جریان‌های منبع فشرده را materialize می‌کنند

واحدهای مرتبط

  • HPDFZLib.pas برای FlateDecode و helperهای inflate آگاه از predictor
  • HPDFLZW.pas برای بازفشرده‌سازی LZW
  • HPDFJBIG2.pas برای پشتیبانی از decode JBIG2
  • HPDFJpeg2000.pas و HPDFOpenJpeg.pas برای جریان‌های کاری مرتبط با JPEG2000

همچنین ببینید