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