|
Soporte de compresión LZW
Descripción general
HotPDF ahora incluye compatibilidad completa con compresión LZW (Lempel-Ziv-Welch) para flujos PDF
LZW es un algoritmo de compresión de datos sin pérdida especialmente eficaz para texto y gráficos simples,
usado comúnmente en documentos PDF para comprimir flujos de contenido
Funciones clave
- Compatibilidad completa con descompresión LZW para flujos PDF
- Compatibilidad configurable con predictor para compresión mejorada
- Varias opciones de orden de llenado (de arriba abajo, de abajo arriba)
- Compatibilidad con cambio temprano de código
- Procesamiento de flujos eficiente en memoria
- Integración con parámetros PDF (Predictor, Colors, BitsPerComponent, Columns)
Implementación técnica
El soporte de compresión LZW se implementa mediante la unidad HPDFLZW.pas, que ofrece:
- TPDFLZWDecompressor: Clase principal de descompresión
- TPDFLZWParms: Estructura de parámetros para ajustes específicos de PDF
- TPDFLZWFillOrder: Enumeración para procesamiento de orden de bits
Referencia de clase
TPDFLZWDecompressor
La clase principal para operaciones de descompresión LZW
Propiedades:
- FillOrder: Especifica el orden de bits (foBottom, foTop)
- EarlyChange: Controla los cambios tempranos de tamaño de código
- InitialCodeSize: Tamaño inicial de código para descompresión
Métodos:
- Decompress(Input: AnsiString): AnsiString - Descompresión básica
- Decompress(Input: AnsiString; Parms: TPDFLZWParms): AnsiString - Descompresión con parámetros PDF
Ejemplos de uso
Descompresión LZW básica
// 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;
Advanced LZW Decompression with PDF Parameters
// 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
La implementación LZW incluye:
- 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
El descompresor LZW incluye un manejo de errores sólido para:
- 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
- Compatibilidad con la implementación LZW de Adobe
Véase también
|