پشتیبانی فشرده‌سازی LZW

نمای کلی

HotPDF اکنون پشتیبانی جامع فشرده‌سازی LZW (Lempel-Ziv-Welch) را برای جریان‌های PDF ارائه می‌کند LZW یک الگوریتم فشرده‌سازی بدون اتلاف داده است که به‌ویژه برای متن و گرافیک ساده مؤثر است و معمولاً در اسناد PDF برای فشرده‌سازی جریان محتوا استفاده می‌شود

ویژگی‌های اصلی

  • پشتیبانی کامل از بازفشرده‌سازی LZW برای جریان‌های PDF
  • پشتیبانی قابل‌پیکربندی از predictor برای فشرده‌سازی بهتر
  • چند گزینه ترتیب پرشدن (از بالا به پایین، از پایین به بالا)
  • پشتیبانی از تغییر زودهنگام کد برای سازگاری
  • پردازش کم‌مصرف جریان
  • ادغام پارامترهای PDF (Predictor، Colors، BitsPerComponent، Columns)

پیاده‌سازی فنی

پشتیبانی فشرده‌سازی LZW از طریق unit HPDFLZW.pas پیاده‌سازی شده است که این موارد را فراهم می‌کند:

  • TPDFLZWDecompressor: کلاس اصلی بازفشرده‌سازی
  • TPDFLZWParms: ساختار پارامتر برای تنظیمات ویژه PDF
  • TPDFLZWFillOrder: شمارشگر برای پردازش ترتیب بیت

مرجع کلاس

TPDFLZWDecompressor

کلاس اصلی برای عملیات بازفشرده‌سازی LZW

ویژگی‌ها:

  • FillOrder: ترتیب بیت را مشخص می‌کند (foBottom، foTop)
  • EarlyChange: تغییرات زودهنگام اندازه کد را کنترل می‌کند
  • InitialCodeSize: اندازه اولیه کد برای بازفشرده‌سازی

روش‌ها:

  • Decompress(Input: AnsiString): AnsiString - بازفشرده‌سازی پایه
  • Decompress(Input: AnsiString; Parms: TPDFLZWParms): AnsiString - بازفشرده‌سازی با پارامترهای PDF

نمونه‌های استفاده

بازفشرده‌سازی پایه LZW


// Delphi example - Basic LZW decompression
procedure DecompressLZWData;
var
  Decompressor: TPDFLZWDecompressor;
  CompressedData: AnsiString;
  DecompressedData: AnsiString;
begin
  Decompressor := TPDFLZWDecompressor.Create;
  try
    // Configure decompressor
    Decompressor.FillOrder := foTop;
    Decompressor.EarlyChange := True;
    Decompressor.InitialCodeSize := 9;

    // Decompress data
    DecompressedData := Decompressor.Decompress(CompressedData);

    // Use decompressed data
    ProcessDecompressedData(DecompressedData);
  finally
    Decompressor.Free;
  end;
end;
        

بازفشرده‌سازی پیشرفته LZW با پارامترهای PDF


// Delphi example - Advanced LZW decompression with PDF parameters
procedure DecompressLZWWithParms;
var
  Decompressor: TPDFLZWDecompressor;
  CompressedData: AnsiString;
  DecompressedData: AnsiString;
  Parms: TPDFLZWParms;
begin
  Decompressor := TPDFLZWDecompressor.Create;
  try
    // Configure PDF parameters
    Parms.Predictor := 2;           // Horizontal differencing predictor
    Parms.Colors := 3;              // RGB color space
    Parms.BitsPerComponent := 8;    // 8 bits per component
    Parms.Columns := 100;           // Image width in pixels
    Parms.ExpandedTo8Bit := True;   // Expand to 8-bit components
    Parms.ColorSpace := 'DeviceRGB';

    // Decompress with parameters
    DecompressedData := Decompressor.Decompress(CompressedData, Parms);

    // Process the decompressed image data
    ProcessImageData(DecompressedData, Parms);
  finally
    Decompressor.Free;
  end;
end;
        

پشتیبانی از پارامترهای PDF

ساختار TPDFLZWParms

  • Predictor: تابع predictor (0=هیچ‌کدام، 2=horizontal differencing)
  • Colors: تعداد مؤلفه‌های رنگ (1=grayscale، 3=RGB، 4=CMYK)
  • BitsPerComponent: بیت در هر مؤلفه رنگ (1، 2، 4، 8، 16)
  • Columns: تعداد نمونه در هر سطر
  • ExpandedTo8Bit: این‌که آیا به مؤلفه‌های 8 بیتی گسترش یابد یا نه
  • ColorSpace: شناسه فضای رنگ

جزئیات الگوریتم

پیاده‌سازی LZW شامل این موارد است:

  • Dictionary-based Compression: یک dictionary پویا می‌سازد و نگه می‌دارد
  • Variable Code Length: طول کد از 9 تا 12 بیت را پشتیبانی می‌کند
  • Clear Code Handling: رسیدگی درست به clear code و end-of-information code
  • String Table Management: جدول رشته کارآمد برای تشخیص الگو

ویژگی‌های کارایی

  • Memory Efficient: برای جریان‌های داده بزرگ بهینه شده است
  • Fast Decompression: الگوریتم‌های بازفشرده‌سازی بسیار بهینه‌شده
  • Predictable Performance: عملکرد یکنواخت در انواع مختلف داده
  • Low Memory Footprint: سربار حافظه حداقلی هنگام پردازش

موارد استفاده رایج

  • بازفشرده‌سازی جریان محتوای PDF
  • بازفشرده‌سازی داده تصویر در فایل‌های PDF
  • بازفشرده‌سازی جریان متن
  • بازفشرده‌سازی داده فرم
  • بازفشرده‌سازی جریان PostScript

رسیدگی به خطا

بازفشرده‌ساز LZW برای این موارد رسیدگی مقاوم به خطا دارد:

  • توالی کد نامعتبر
  • جریان‌های داده خراب‌شده
  • شکست در تخصیص حافظه
  • شرایط سرریز dictionary

انطباق با استانداردها

  • انطباق با فیلتر LZWDecode در PDF 1.2+
  • سازگاری با LZW در PostScript Level 2
  • سازگاری با فشرده‌سازی LZW در TIFF
  • سازگاری با پیاده‌سازی LZW در Adobe

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