|
LZW Compression Support
Pregled
HotPDF sada uključuje sveobuhvatnu LZW (Lempel-Ziv-Welch) podršku za kompresiju PDF tokova
LZW je algoritam kompresije podataka bez gubitka koji je posebno učinkovit za tekst i jednostavnu grafiku,
a u PDF dokumentima se često koristi za kompresiju content streama
Ključne značajke
- Puna podrška za LZW dekompresiju PDF tokova
- Konfigurabilna podrška za prediktor radi poboljšane kompresije
- Više opcija fill ordera (od vrha prema dnu, od dna prema vrhu)
- Podrška za ranu promjenu koda radi kompatibilnosti
- Memorijski učinkovita obrada tokova
- Integracija PDF parametara (Predictor, Colors, BitsPerComponent, Columns)
Tehnička implementacija
Podrška za LZW kompresiju implementirana je kroz jedinicu HPDFLZW.pas, koja pruža
- TPDFLZWDecompressor: glavna klasa za dekompresiju
- TPDFLZWParms: struktura parametara za PDF-specifične postavke
- TPDFLZWFillOrder: enumeracija za obradu bitnog reda
Referenca klase
TPDFLZWDecompressor
Glavna klasa za operacije LZW dekompresije
Svojstva:
- FillOrder: Specifies bit order (foBottom, foTop)
- EarlyChange: Controls early code size changes
- InitialCodeSize: Initial code size for decompression
Metode:
- Decompress(Input: AnsiString): AnsiString - Basic decompression
- Decompress(Input: AnsiString; Parms: TPDFLZWParms): AnsiString - dekompresija s PDF parametrima
Primjeri uporabe
Osnovna LZW dekompresija
// 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;
Napredna LZW dekompresija s PDF parametrima
// 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;
Podrška za PDF parametre
Struktura TPDFLZWParms
- Predictor: Predictor function (0=none, 2=horizontal differencing)
- Colors: Number of color components (1=grayscale, 3=RGB, 4=CMYK)
- BitsPerComponent: Bits per color component (1, 2, 4, 8, 16)
- Columns: Number of samples per row
- ExpandedTo8Bit: Whether to expand to 8-bit components
- ColorSpace: Color space identifier
Detalji algoritma
LZW implementacija uključuje:
- Kompresija temeljena na rječniku: gradi i održava dinamički rječnik
- Promjenjiva duljina koda: podržava duljine koda od 9 do 12 bitova
- Rukovanje clear kodom: ispravno rukovanje clear i end-of-information kodovima
- Upravljanje tablicom nizova: učinkovita tablica nizova za prepoznavanje uzoraka
Karakteristike performansi
- Memorijski učinkovito: optimizirano za velike podatkovne tokove
- Brza dekompresija: visoko optimizirani algoritmi dekompresije
- Predvidive performanse: dosljedne performanse kroz različite vrste podataka
- Mali memorijski otisak: minimalno memorijsko opterećenje tijekom obrade
Uobičajene namjene
- Dekompresija PDF content streamova
- Dekompresija slikovnih podataka u PDF datotekama
- Dekompresija tekstualnih tokova
- Dekompresija podataka obrazaca
- Dekompresija PostScript tokova
Error Handling
LZW dekompresor uključuje robusno rukovanje pogreškama za:
- Invalid code sequences
- Corrupted data streams
- Memory allocation failures
- Dictionary overflow conditions
Standards Compliance
- PDF 1.2+ LZWDecode filter compliance
- PostScript Level 2 LZW compatibility
- TIFF LZW compression compatibility
- kompatibilnost s Adobe LZW implementacijom
See Also
|