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