|
LZW Compression – podpora
Přehled
HotPDF nyní obsahuje úplnou podporu komprese LZW (Lempel-Ziv-Welch) pro PDF streamy
LZW je bezeztrátový algoritmus komprese dat, který je zvlášť účinný pro text a jednoduchou grafiku
a v PDF dokumentech se běžně používá ke kompresi obsahových streamů
Hlavní funkce
- Plná podpora dekomprese LZW pro PDF streamy
- Konfigurovatelná podpora prediktoru pro lepší kompresi
- Více možností pořadí vyplňování (shora dolů, zdola nahoru)
- Podpora předčasné změny velikosti kódu kvůli kompatibilitě
- Paměťově úsporné zpracování streamů
- Integrace parametrů PDF (Predictor, Colors, BitsPerComponent, Columns)
Technická implementace
Podpora komprese LZW je implementována prostřednictvím jednotky HPDFLZW.pas, která poskytuje:
- TPDFLZWDecompressor: Hlavní třída dekomprese
- TPDFLZWParms: Struktura parametrů pro nastavení specifická pro PDF
- TPDFLZWFillOrder: Výčet pro zpracování pořadí bitů
Reference třídy
TPDFLZWDecompressor
Hlavní třída pro operace dekomprese LZW
Vlastnosti:
- FillOrder: Určuje pořadí bitů (foBottom, foTop)
- EarlyChange: Řídí předčasné změny velikosti kódu
- InitialCodeSize: Počáteční velikost kódu pro dekompresi
Metody:
- Decompress(Input: AnsiString): AnsiString - Základní dekomprese
- Decompress(Input: AnsiString; Parms: TPDFLZWParms): AnsiString - Dekomprese s parametry PDF
Příklady použití
Základní dekomprese 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;
Pokročilá dekomprese LZW s parametry 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;
Podpora parametrů PDF
Struktura TPDFLZWParms
- Predictor: Funkce prediktoru (0=žádný, 2=horizontální rozdíly)
- Colors: Počet barevných složek (1=grayscale, 3=RGB, 4=CMYK)
- BitsPerComponent: Počet bitů na barevnou složku (1, 2, 4, 8, 16)
- Columns: Počet vzorků na řádek
- ExpandedTo8Bit: Určuje, zda se mají složky rozšířit na 8 bitů
- ColorSpace: Identifikátor barevného prostoru
Podrobnosti algoritmu
Implementace LZW zahrnuje:
- Komprese založená na slovníku: Vytváří a udržuje dynamický slovník
- Proměnná délka kódu: Podporuje délky kódu od 9 do 12 bitů
- Zpracování resetovacích kódů: Správná práce s kódy clear a end-of-information
- Správa tabulky řetězců: Efektivní tabulka řetězců pro rozpoznávání vzorů
Výkonnostní charakteristiky
- Paměťová úspornost: Optimalizováno pro velké datové streamy
- Rychlá dekomprese: Vysoce optimalizované dekompresní algoritmy
- Předvídatelný výkon: Konzistentní výkon napříč různými typy dat
- Nízká paměťová stopa: Minimální režie paměti během zpracování
Běžné scénáře použití
- Dekomprese obsahových streamů PDF
- Dekomprese obrazových dat v souborech PDF
- Dekomprese textových streamů
- Dekomprese dat formulářů
- Dekomprese streamů PostScript
Zpracování chyb
Dekompresor LZW obsahuje robustní zpracování chyb pro:
- Neplatné sekvence kódů
- Poškozené datové streamy
- Selhání alokace paměti
- Stavy přetečení slovníku
Soulad se standardy
- Soulad s filtrem LZWDecode v PDF 1.2+
- Kompatibilita s LZW v PostScript Level 2
- Kompatibilita s kompresí TIFF LZW
- Kompatibilita s implementací Adobe LZW
Viz také
|