|
LZW Compression Support
Oversikt
HotPDF inkluderer nå omfattende støtte for LZW-komprimering (Lempel-Ziv-Welch) for PDF-strømmer
LZW er en tapsfri datakomprimeringsalgoritme som er særlig effektiv for tekst og enkel grafikk,
og brukes ofte i PDF-dokumenter til komprimering av innholdsstrømmer
Viktige funksjoner
- Full støtte for LZW-dekomprimering av PDF-strømmer
- Konfigurerbar predictor-støtte for forbedret komprimering
- Flere alternativer for fyllrekkefølge (ovenfra og ned, nedenfra og opp)
- Støtte for tidlig kodeendring for kompatibilitet
- Minneeffektiv strømbehandling
- Integrasjon med PDF-parametere (Predictor, Colors, BitsPerComponent, Columns)
Teknisk implementering
LZW-komprimeringsstøtten er implementert gjennom unit-en HPDFLZW.pas, som tilbyr:
- TPDFLZWDecompressor: Hovedklasse for dekomprimering
- TPDFLZWParms: Parameterstruktur for PDF-spesifikke innstillinger
- TPDFLZWFillOrder: Enum for behandling av bitrekkefølge
Klassereferanse
TPDFLZWDecompressor
Hovedklassen for LZW-dekomprimeringsoperasjoner
Egenskaper:
- FillOrder: Angir bitrekkefølge (foBottom, foTop)
- EarlyChange: Styrer tidlige endringer av kodestørrelse
- InitialCodeSize: Opprinnelig kodestørrelse for dekomprimering
Metoder:
- Decompress(Input: AnsiString): AnsiString - Grunnleggende dekomprimering
- Decompress(Input: AnsiString; Parms: TPDFLZWParms): AnsiString - Dekomprimering med PDF-parametere
Brukseksempler
Grunnleggende LZW-dekomprimering
// 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;
Avansert LZW-dekomprimering med PDF-parametere
// 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)
- 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
Algorithm Details
LZW-implementeringen inkluderer:
- Dictionary-based Compression: Builds and maintains a dynamic dictionary
- Variable Code Length: Supports code lengths from 9 to 12 bits
- Clear Code Handling: Proper handling of clear and end-of-information codes
- String Table Management: Efficient string table for pattern recognition
Performance Characteristics
- Memory Efficient: Optimized for large data streams
- Fast Decompression: Highly optimized decompression algorithms
- Predictable Performance: Consistent performance across different data types
- Low Memory Footprint: Minimal memory overhead during processing
Common Use Cases
- PDF content stream decompression
- Image data decompression in PDF files
- Text stream decompression
- Form data decompression
- PostScript stream decompression
Error Handling
LZW-dekomprimereren har robust feilhåndtering for:
- 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
- Kompatibilitet med Adobes LZW-implementering
See Also
|