|
LZW Compression Support
Pregled
HotPDF sada uključuje sveobuhvatnu LZW (Lempel-Ziv-Welch) podršku za kompresiju PDF strimova. LZW je algoritam kompresije podataka bez gubitka koji je posebno efikasan za tekst i jednostavnu grafiku, i često se koristi u PDF dokumentima za kompresiju sadržajnih strimova
Key Features
- Full LZW decompression support for PDF streams
- Configurable predictor support for enhanced compression
- Multiple fill order options (top-to-bottom, bottom-to-top)
- Early code change support for compatibility
- Memory-efficient stream processing
- PDF parameter integration (Predictor, Colors, BitsPerComponent, Columns)
Tehnička implementacija
Podrška za LZW kompresiju je implementirana kroz jedinicu HPDFLZW.pas, koja obezbeđuje:
- TPDFLZWDecompressor: Glavna klasa za dekompresiju
- TPDFLZWParms: Struktura parametara za PDF-specifična podešavanja
- TPDFLZWFillOrder: Nabrajanje za obradu redosleda bitova
Referenca klase
TPDFLZWDecompressor
Glavna klasa za operacije LZW dekompresije
Svojstva:
- FillOrder: Određuje redosled bitova (foBottom, foTop)
- EarlyChange: Kontroliše rano menjanje veličine koda
- InitialCodeSize: Početna veličina koda za dekompresiju
Metode:
- Decompress(Input: AnsiString): AnsiString - Osnovna dekompresija
- Decompress(Input: AnsiString; Parms: TPDFLZWParms): AnsiString - Dekompresija sa PDF parametrima
Primeri upotrebe
Osnovna LZW dekompresija
// Delphi primer - Osnovna LZW dekompresija
procedure DecompressLZWData;
var
Decompressor: TPDFLZWDecompressor;
CompressedData: AnsiString;
DecompressedData: AnsiString;
begin
Decompressor := TPDFLZWDecompressor.Create;
try
// Konfigurišite dekompresor
Decompressor.FillOrder := foTop;
Decompressor.EarlyChange := True;
Decompressor.InitialCodeSize := 9;
// Dekompresujte podatke
DecompressedData := Decompressor.Decompress(CompressedData);
// Koristite dekompresovane podatke
ProcessDecompressedData(DecompressedData);
finally
Decompressor.Free;
end;
end;
Napredna LZW dekompresija sa PDF parametrima
// Delphi primer - Napredna LZW dekompresija sa PDF parametrima
procedure DecompressLZWWithParms;
var
Decompressor: TPDFLZWDecompressor;
CompressedData: AnsiString;
DecompressedData: AnsiString;
Parms: TPDFLZWParms;
begin
Decompressor := TPDFLZWDecompressor.Create;
try
// Konfigurišite PDF parametre
Parms.Predictor := 2; // Horizontalni razlikovni prediktor
Parms.Colors := 3; // RGB prostor boja
Parms.BitsPerComponent := 8; // 8 bitova po komponenti
Parms.Columns := 100; // Širina slike u pikselima
Parms.ExpandedTo8Bit := True; // Proširi na 8-bitne komponente
Parms.ColorSpace := 'DeviceRGB';
// Dekompresujte sa parametrima
DecompressedData := Decompressor.Decompress(CompressedData, Parms);
// Obradite dekompresovane podatke slike
ProcessImageData(DecompressedData, Parms);
finally
Decompressor.Free;
end;
end;
Podrška za PDF parametre
Struktura TPDFLZWParms
- Predictor: Funkcija prediktora (0=nema, 2=horizontalno razlikovanje)
- Colors: Broj komponenti boje (1=grayscale, 3=RGB, 4=CMYK)
- BitsPerComponent: Bitovi po komponenti boje (1, 2, 4, 8, 16)
- Columns: Broj uzoraka po redu
- ExpandedTo8Bit: Da li proširiti na 8-bitne komponente
- ColorSpace: Identifikator prostora boja
Detalji algoritma
LZW implementacija uključuje:
- Kompresija zasnovana na rečniku: Gradi i održava dinamički rečnik
- Promenljiva dužina koda: Podržava dužine koda od 9 do 12 bitova
- Rukovanje Clear kodom: Ispravno rukovanje clear i end-of-information kodovima
- Upravljanje tabelom stringova: Efikasna tabela stringova za prepoznavanje obrazaca
Karakteristike performansi
- Efikasno korišćenje memorije: Optimizovano za velike tokove podataka
- Brza dekompresija: Visoko optimizovani algoritmi dekompresije
- Predvidljive performanse: Dosledne performanse kroz različite tipove podataka
- Mali memorijski otisak: Minimalan dodatni trošak memorije tokom obrade
Uobičajeni slučajevi upotrebe
- Dekompresija PDF tokova sadržaja
- Dekompresija podataka slike u PDF fajlovima
- Dekompresija tekstualnih tokova
- Dekompresija podataka obrazaca
- Dekompresija PostScript tokova
Rukovanje greškama
LZW dekompresor uključuje robusno rukovanje greškama za:
- Neispravne nizove kodova
- Oštećene tokove podataka
- Neuspehe dodele memorije
- Stanja prelivanja rečnika
Usklađenost sa standardima
- Usklađenost sa PDF 1.2+ LZWDecode filterom
- Kompatibilnost sa PostScript Level 2 LZW
- Kompatibilnost sa TIFF LZW kompresijom
- Kompatibilnost sa Adobe LZW implementacijom
Vidi i
|