LZW-compressieondersteuning

Overzicht

HotPDF bevat nu uitgebreide LZW-compressieondersteuning (Lempel-Ziv-Welch) voor PDF-stromen LZW is een verliesvrij gegevenscompressiealgoritme dat bijzonder effectief is voor tekst en eenvoudige afbeeldingen, en vaak wordt gebruikt in PDF-documenten voor compressie van inhoudsstromen

Belangrijkste kenmerken

  • Volledige LZW-decompressieondersteuning voor PDF-stromen
  • Instelbare predictorondersteuning voor verbeterde compressie
  • Meerdere vulvolgorde-opties (van boven naar beneden, van onder naar boven)
  • Ondersteuning voor early code change voor compatibiliteit
  • Geheugenefficiënte streamverwerking
  • PDF-parameterintegratie (Predictor, Colors, BitsPerComponent, Columns)

Technische implementatie

De LZW-compressieondersteuning is geïmplementeerd via de HPDFLZW.pas-unit, die het volgende biedt:

  • TPDFLZWDecompressor: Hoofdklasse voor decompressie
  • TPDFLZWParms: Parameterstructuur voor PDF-specifieke instellingen
  • TPDFLZWFillOrder: Enumeratie voor verwerking van bitvolgorde

Klassereferentie

TPDFLZWDecompressor

De hoofdklasse voor LZW-decompressiebewerkingen

Eigenschappen:

  • FillOrder: Geeft de bitvolgorde op (foBottom, foTop)
  • EarlyChange: Regelt vroege wijzigingen in codelengte
  • InitialCodeSize: Begin-codesize voor decompressie

Methoden:

  • Decompress(Input: AnsiString): AnsiString - Basisdecompressie
  • Decompress(Input: AnsiString; Parms: TPDFLZWParms): AnsiString - Decompressie met PDF-parameters

Gebruikvoorbeelden

Basis-LZW-decompressie


// Delphi-voorbeeld - Basis-LZW-decompressie
procedure DecompressLZWData;
var
  Decompressor: TPDFLZWDecompressor;
  CompressedData: AnsiString;
  DecompressedData: AnsiString;
begin
  Decompressor := TPDFLZWDecompressor.Create;
  try
    // Decompressor configureren
    Decompressor.FillOrder := foTop;
    Decompressor.EarlyChange := True;
    Decompressor.InitialCodeSize := 9;

    // Gegevens decomprimeren
    DecompressedData := Decompressor.Decompress(CompressedData);

    // Gedecomprimeerde gegevens gebruiken
    ProcessDecompressedData(DecompressedData);
  finally
    Decompressor.Free;
  end;
end;
        

Geavanceerde LZW-decompressie met PDF-parameters


// Delphi-voorbeeld - Geavanceerde LZW-decompressie met PDF-parameters
procedure DecompressLZWWithParms;
var
  Decompressor: TPDFLZWDecompressor;
  CompressedData: AnsiString;
  DecompressedData: AnsiString;
  Parms: TPDFLZWParms;
begin
  Decompressor := TPDFLZWDecompressor.Create;
  try
    // PDF-parameters configureren
    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';

    // Met parameters decomprimeren
    DecompressedData := Decompressor.Decompress(CompressedData, Parms);

    // De gedecomprimeerde afbeeldingsgegevens verwerken
    ProcessImageData(DecompressedData, Parms);
  finally
    Decompressor.Free;
  end;
end;
        

Ondersteuning voor PDF-parameters

TPDFLZWParms-structuur

  • Predictor: Predictorfunctie (0=geen, 2=horizontaal verschil)
  • Colors: Aantal kleurcomponenten (1=grijswaarden, 3=RGB, 4=CMYK)
  • BitsPerComponent: Bits per kleurcomponent (1, 2, 4, 8, 16)
  • Columns: Aantal samples per rij
  • ExpandedTo8Bit: Of moet worden uitgebreid naar 8-bits componenten
  • ColorSpace: Kleurspacenaam

Algoritmedetails

De LZW-implementatie bevat:

  • Woordenboekgebaseerde compressie: Bouwt een dynamisch woordenboek op en onderhoudt het
  • Variabele codelengte: Ondersteunt codegroottes van 9 tot 12 bits
  • Afhandeling van clear codes: Correcte verwerking van clear- en end-of-information-codes
  • Beheer van stringtabellen: Efficiënte stringtabel voor patroonherkenning

Prestatiekenmerken

  • Geheugenefficiënt: Geoptimaliseerd voor grote datastromen
  • Snelle decompressie: Sterk geoptimaliseerde decompressiealgoritmen
  • Voorspelbare prestaties: Consistente prestaties over verschillende gegevenstypen
  • Lage geheugenvoetafdruk: Minimale geheugenoverhead tijdens verwerking

Veelvoorkomende gebruikssituaties

  • PDF content stream decompression
  • Image data decompression in PDF files
  • Text stream decompression
  • Form data decompression
  • PostScript stream decompression

Foutafhandeling

De LZW-decompressor bevat robuuste foutafhandeling voor:

  • Invalid code sequences
  • Corrupted data streams
  • Memory allocation failures
  • Dictionary overflow conditions

Naleving van standaarden

  • Naleving van het PDF 1.2+ LZWDecode-filter
  • Compatibiliteit met PostScript Level 2 LZW
  • Compatibiliteit met TIFF LZW-compressie
  • Compatibiliteit met Adobe LZW-implementatie

Zie ook