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