LZW-Komprimierungsunterstützung

Übersicht

HotPDF bietet nun eine umfassende LZW-Komprimierungsunterstützung (Lempel-Ziv-Welch) für PDF-Ströme; LZW ist ein verlustfreier Datenkomprimierungsalgorithmus, der besonders für Text und einfache Grafiken effektiv ist und häufig in PDF-Dokumenten für die Komprimierung von Inhaltsströmen verwendet wird

Hauptmerkmale

  • Volle LZW-Dekomprimierungsunterstützung für PDF-Ströme
  • Konfigurierbare Predictor-Unterstützung für verbesserte Komprimierung
  • Mehrere Füllreihenfolge-Optionen (von oben nach unten, von unten nach oben)
  • Unterstützung für frühe Codeänderungen zur Kompatibilität
  • Speichereffiziente Stream-Verarbeitung
  • PDF-Parameterintegration (Predictor, Colors, BitsPerComponent, Columns)

Technische Implementierung

Die LZW-Komprimierungsunterstützung ist in der Einheit HPDFLZW.pas implementiert, welche Folgendes bietet:

  • TPDFLZWDecompressor: Hauptklasse für die Dekomprimierung
  • TPDFLZWParms: Parameterstruktur für PDF-spezifische Einstellungen
  • TPDFLZWFillOrder: Enumeration für die Bitreihenfolge-Verarbeitung

Klassenreferenz

TPDFLZWDecompressor

Die Hauptklasse für LZW-Dekomprimierungsvorgänge

Eigenschaften:

  • FillOrder: Spezifiziert die Bitreihenfolge (foBottom, foTop)
  • EarlyChange: Steuert frühe Codegrößenänderungen
  • InitialCodeSize: Anfängliche Codegröße für die Dekomprimierung

Methoden:

  • Decompress(Input: AnsiString): AnsiString - Einfache Dekomprimierung
  • Decompress(Input: AnsiString; Parms: TPDFLZWParms): AnsiString - Dekomprimierung mit PDF-Parametern

Anwendungsbeispiele

Einfache LZW-Dekomprimierung


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

Erweiterte LZW-Dekomprimierung mit PDF-Parametern


// 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-Unterstützung für Parameter

Struktur TPDFLZWParms

  • Predictor: Predictor-Funktion (0=keine, 2=horizontale Differenzierung)
  • Colors: Anzahl der Farbkomponenten (1=Graustufen, 3=RGB, 4=CMYK)
  • BitsPerComponent: Bit pro Farbkomponente (1, 2, 4, 8, 16)
  • Columns: Anzahl der Samples pro Zeile
  • ExpandedTo8Bit: Ob auf 8-Bit-Komponenten erweitert werden soll
  • ColorSpace: Farbraumbezeichner

Details zum Algorithmus

Die LZW-Implementierung umfasst:

  • Dictionary-based Compression: Baut ein dynamisches Wörterbuch auf und verwaltet es
  • Variable Code Length: Unterstützt Codelängen von 9 bis 12 Bit
  • Clear Code Handling: Ordnungsgemäße Handhabung von Lösch- und Informationsendecodes
  • String Table Management: Effiziente String-Tabelle für die Mustererkennung

Leistungsmerkmale

  • Memory Efficient: Optimiert für große Datenströme
  • Fast Decompression: Hochgradig optimierte Dekomprimierungsalgorithmen
  • Predictable Performance: Konsistente Leistung bei verschiedenen Datentypen
  • Low Memory Footprint: Minimaler Speicher-Overhead während der Verarbeitung

Typische Anwendungsfälle

  • PDF-Inhaltsstrom-Dekomprimierung
  • Bilddaten-Dekomprimierung in PDF-Dateien
  • Textstrom-Dekomprimierung
  • Formulardaten-Dekomprimierung
  • PostScript-Strom-Dekomprimierung

Fehlerbehandlung

Der LZW-Dekomprimierer enthält eine robuste Fehlerbehandlung für:

  • Ungültige Codesequenzen
  • Beschädigte Datenströme
  • Speicherallokationsfehler
  • Wörterbuchüberlaufbedingungen

Standardkonformität

  • Konformität mit PDF 1.2+ LZWDecode-Filtern
  • PostScript Level 2 LZW-Kompatibilität
  • TIFF LZW-Komprimierungskompatibilität
  • Kompatibilität mit der Adobe LZW-Implementierung

Siehe auch