|
پشتیبانی فشردهسازی 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
همچنین ببینید
|