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é