LZW Compression Support

Pregled

HotPDF sada uključuje sveobuhvatnu LZW (Lempel-Ziv-Welch) podršku za kompresiju PDF strimova. LZW je algoritam kompresije podataka bez gubitka koji je posebno efikasan za tekst i jednostavnu grafiku, i često se koristi u PDF dokumentima za kompresiju sadržajnih strimova

Key Features

  • Full LZW decompression support for PDF streams
  • Configurable predictor support for enhanced compression
  • Multiple fill order options (top-to-bottom, bottom-to-top)
  • Early code change support for compatibility
  • Memory-efficient stream processing
  • PDF parameter integration (Predictor, Colors, BitsPerComponent, Columns)

Tehnička implementacija

Podrška za LZW kompresiju je implementirana kroz jedinicu HPDFLZW.pas, koja obezbeđuje:

  • TPDFLZWDecompressor: Glavna klasa za dekompresiju
  • TPDFLZWParms: Struktura parametara za PDF-specifična podešavanja
  • TPDFLZWFillOrder: Nabrajanje za obradu redosleda bitova

Referenca klase

TPDFLZWDecompressor

Glavna klasa za operacije LZW dekompresije

Svojstva:

  • FillOrder: Određuje redosled bitova (foBottom, foTop)
  • EarlyChange: Kontroliše rano menjanje veličine koda
  • InitialCodeSize: Početna veličina koda za dekompresiju

Metode:

  • Decompress(Input: AnsiString): AnsiString - Osnovna dekompresija
  • Decompress(Input: AnsiString; Parms: TPDFLZWParms): AnsiString - Dekompresija sa PDF parametrima

Primeri upotrebe

Osnovna LZW dekompresija


// Delphi primer - Osnovna LZW dekompresija
procedure DecompressLZWData;
var
  Decompressor: TPDFLZWDecompressor;
  CompressedData: AnsiString;
  DecompressedData: AnsiString;
begin
  Decompressor := TPDFLZWDecompressor.Create;
  try
    // Konfigurišite dekompresor
    Decompressor.FillOrder := foTop;
    Decompressor.EarlyChange := True;
    Decompressor.InitialCodeSize := 9;

    // Dekompresujte podatke
    DecompressedData := Decompressor.Decompress(CompressedData);

    // Koristite dekompresovane podatke
    ProcessDecompressedData(DecompressedData);
  finally
    Decompressor.Free;
  end;
end;
        

Napredna LZW dekompresija sa PDF parametrima


// Delphi primer - Napredna LZW dekompresija sa PDF parametrima
procedure DecompressLZWWithParms;
var
  Decompressor: TPDFLZWDecompressor;
  CompressedData: AnsiString;
  DecompressedData: AnsiString;
  Parms: TPDFLZWParms;
begin
  Decompressor := TPDFLZWDecompressor.Create;
  try
    // Konfigurišite PDF parametre
    Parms.Predictor := 2;           // Horizontalni razlikovni prediktor
    Parms.Colors := 3;              // RGB prostor boja
    Parms.BitsPerComponent := 8;    // 8 bitova po komponenti
    Parms.Columns := 100;           // Širina slike u pikselima
    Parms.ExpandedTo8Bit := True;   // Proširi na 8-bitne komponente
    Parms.ColorSpace := 'DeviceRGB';

    // Dekompresujte sa parametrima
    DecompressedData := Decompressor.Decompress(CompressedData, Parms);

    // Obradite dekompresovane podatke slike
    ProcessImageData(DecompressedData, Parms);
  finally
    Decompressor.Free;
  end;
end;
        

Podrška za PDF parametre

Struktura TPDFLZWParms

  • Predictor: Funkcija prediktora (0=nema, 2=horizontalno razlikovanje)
  • Colors: Broj komponenti boje (1=grayscale, 3=RGB, 4=CMYK)
  • BitsPerComponent: Bitovi po komponenti boje (1, 2, 4, 8, 16)
  • Columns: Broj uzoraka po redu
  • ExpandedTo8Bit: Da li proširiti na 8-bitne komponente
  • ColorSpace: Identifikator prostora boja

Detalji algoritma

LZW implementacija uključuje:

  • Kompresija zasnovana na rečniku: Gradi i održava dinamički rečnik
  • Promenljiva dužina koda: Podržava dužine koda od 9 do 12 bitova
  • Rukovanje Clear kodom: Ispravno rukovanje clear i end-of-information kodovima
  • Upravljanje tabelom stringova: Efikasna tabela stringova za prepoznavanje obrazaca

Karakteristike performansi

  • Efikasno korišćenje memorije: Optimizovano za velike tokove podataka
  • Brza dekompresija: Visoko optimizovani algoritmi dekompresije
  • Predvidljive performanse: Dosledne performanse kroz različite tipove podataka
  • Mali memorijski otisak: Minimalan dodatni trošak memorije tokom obrade

Uobičajeni slučajevi upotrebe

  • Dekompresija PDF tokova sadržaja
  • Dekompresija podataka slike u PDF fajlovima
  • Dekompresija tekstualnih tokova
  • Dekompresija podataka obrazaca
  • Dekompresija PostScript tokova

Rukovanje greškama

LZW dekompresor uključuje robusno rukovanje greškama za:

  • Neispravne nizove kodova
  • Oštećene tokove podataka
  • Neuspehe dodele memorije
  • Stanja prelivanja rečnika

Usklađenost sa standardima

  • Usklađenost sa PDF 1.2+ LZWDecode filterom
  • Kompatibilnost sa PostScript Level 2 LZW
  • Kompatibilnost sa TIFF LZW kompresijom
  • Kompatibilnost sa Adobe LZW implementacijom

Vidi i