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