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