LZW Compression Support

Yleiskatsaus

HotPDF sisältää nyt kattavan LZW-pakkaustuen (Lempel-Ziv-Welch) PDF-virroille. LZW on häviötön tiedonpakkausalgoritmi, joka on erityisen tehokas tekstille ja yksinkertaiselle grafiikalle ja jota käytetään yleisesti PDF-dokumenteissa sisältövirran pakkaukseen

Key Features

  • Täysi LZW-purkutuki PDF-virroille
  • Konfiguroitava prediktori-tuki parannetulle pakkaukselle
  • Useita täyttöjärjestyksen vaihtoehtoja (ylhäältä alas, alhaalta ylös)
  • Aikainen koodimuutostuki yhteensopivuutta varten
  • Memory-efficient stream processing
  • PDF-parametrien integrointi (Predictor, Colors, BitsPerComponent, Columns)

Technical Implementation

LZW-pakkaustuki on toteutettu yksikössä HPDFLZW.pas, joka tarjoaa

  • TPDFLZWDecompressor: Main decompression class
  • TPDFLZWParms: Parametrirakenne PDF-kohtaisia asetuksia varten
  • TPDFLZWFillOrder: Luettelotyyppi bittijärjestyksen käsittelyä varten

Class Reference

TPDFLZWDecompressor

Pääluokka LZW-purkuoperaatioille

Properties:

  • FillOrder: Määrittää bittijärjestyksen (foBottom, foTop)
  • EarlyChange: Ohjaa varhaisia koodikoon muutoksia
  • InitialCodeSize: Alkuperäinen koodikoko pakkauksen purkamista varten

Methods:

  • Decompress(Input: AnsiString): AnsiString - Basic decompression
  • Decompress(Input: AnsiString; Parms: TPDFLZWParms): AnsiString - Pakkauksen purkaminen PDF-parametreilla

Usage Examples

Basic LZW Decompression


// 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;
        

Edistynyt LZW-pakkauksen purku PDF-parametreilla


// 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;
        

PDF Parameter Support

TPDFLZWParms Structure

  • Predictor: Predictor function (0=none, 2=horizontal differencing)
  • Värit: Värikomponenttien määrä (1=harmaasävy, 3=RGB, 4=CMYK)
  • BitsPerComponent: Bits per color component (1, 2, 4, 8, 16)
  • Sarakkeet: Näytteiden määrä riviä kohden
  • ExpandedTo8Bit: Laajennetaanko 8-bittisiksi komponenteiksi
  • ColorSpace: Color space identifier

Algorithm Details

LZW-toteutus sisältää:

  • Sanakirjapohjainen pakkaus: Rakentaa ja ylläpitää dynaamista sanakirjaa
  • Muuttuva koodipituus: Tukee koodin pituuksia 9–12 bittiä
  • Clear Code Handling: Proper handling of clear and end-of-information codes
  • Merkkijonotaulukon hallinta: Tehokas merkkijonotaulukko kuviontunnistusta varten

Performance Characteristics

  • Muistitehokas: Optimoitu suurille tietovirroille
  • Nopea pakkauksen purku: Erittäin optimoidut pakkauksen purkualgoritmit
  • Ennustettava suorituskyky: Johdonmukainen suorituskyky eri tietotyypeillä
  • Pieni muistinkäyttö: Minimaalinen muistin yleiskustannus käsittelyn aikana

Common Use Cases

  • PDF content stream decompression
  • Kuvatietojen purkaminen PDF-tiedostoissa
  • Text stream decompression
  • Form data decompression
  • PostScript stream decompression

Error Handling

LZW-pakkauksen purkaja sisältää vankkarakenteisen virheenkasittelyn seuraaville kohteille

  • 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
  • Yhteensopivuus Adobe LZW -toteutuksen kanssa

See Also