|
LZW Compression Support
Prezentare generală
HotPDF include acum suport complet pentru compresia LZW (Lempel-Ziv-Welch) a fluxurilor PDF
LZW este un algoritm de compresie fără pierderi, deosebit de eficient pentru text și grafică simplă,
folosit frecvent în documentele PDF pentru compresia fluxurilor de conținut
Funcții principale
- Suport complet pentru decompresia LZW a fluxurilor PDF
- Suport configurabil pentru predictor, pentru o compresie îmbunătățită
- Mai multe opțiuni pentru ordinea umplerii (de sus în jos, de jos în sus)
- Suport pentru early code change în scopul compatibilității
- Prelucrare eficientă în memorie a fluxurilor
- Integrare cu parametrii PDF (Predictor, Colors, BitsPerComponent, Columns)
Implementare tehnică
Suportul pentru compresia LZW este implementat prin unitatea HPDFLZW.pas, care oferă:
- TPDFLZWDecompressor: clasa principală de decompresie
- TPDFLZWParms: structură de parametri pentru setări specifice PDF
- TPDFLZWFillOrder: enumerare pentru prelucrarea ordinii biților
Referință de clasă
TPDFLZWDecompressor
Clasa principală pentru operațiile de decompresie LZW
Proprietăți:
- FillOrder: specifică ordinea biților (foBottom, foTop)
- EarlyChange: controlează schimbările timpurii ale dimensiunii codului
- InitialCodeSize: dimensiunea inițială a codului pentru decompresie
Metode:
- Decompress(Input: AnsiString): AnsiString - decompresie de bază
- Decompress(Input: AnsiString; Parms: TPDFLZWParms): AnsiString - decompresie cu parametri PDF
Usage Examples
Decompresie LZW de bază
// 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;
Decompresie LZW avansată cu parametri 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;
Suport pentru parametri PDF
Structura TPDFLZWParms
- Predictor: funcția predictorului (0=nimic, 2=diferențiere orizontală)
- Colors: numărul de componente de culoare (1=grayscale, 3=RGB, 4=CMYK)
- BitsPerComponent: biți per componentă de culoare (1, 2, 4, 8, 16)
- Columns: numărul de eșantioane pe rând
- ExpandedTo8Bit: indică dacă se extind componentele la 8 biți
- ColorSpace: identificatorul spațiului de culoare
Detalii ale algoritmului
Implementarea LZW include:
- Compresie bazată pe dicționar: construiește și menține un dicționar dinamic
- Lungime variabilă a codului: suportă lungimi de cod de la 9 la 12 biți
- Gestionarea codului Clear: tratare corectă a codurilor Clear și End-of-Information
- Gestionarea tabelului de șiruri: tabel de șiruri eficient pentru recunoașterea tiparelor
Caracteristici de performanță
- Eficient în memorie: optimizat pentru fluxuri mari de date
- Decompresie rapidă: algoritmi de decompresie foarte optimizați
- Performanță previzibilă: comportament constant pentru tipuri diferite de date
- Amprentă redusă în memorie: cost minim de memorie în timpul procesării
Cazuri de utilizare frecvente
- Decompresia fluxurilor de conținut PDF
- Decompresia datelor de imagine din fișiere PDF
- Decompresia fluxurilor de text
- Decompresia datelor de formular
- Decompresia fluxurilor PostScript
Gestionarea erorilor
Decompresorul LZW include o tratare robustă a erorilor pentru:
- Secvențe de cod invalide
- Fluxuri de date corupte
- Eșecuri de alocare a memoriei
- Condiții de depășire a dicționarului
Conformitate cu standardele
- Conformitate cu filtrul LZWDecode din PDF 1.2+
- Compatibilitate cu LZW din PostScript Level 2
- Compatibilitate cu compresia LZW din TIFF
- Compatibilitate cu implementarea Adobe LZW
See Also
|