|
Dukungan Kompresi LZW
Ikhtisar
HotPDF kini menyertakan dukungan kompresi LZW (Lempel-Ziv-Welch) yang komprehensif untuk stream PDF. LZW adalah algoritma kompresi data tanpa kehilangan yang sangat efektif untuk teks dan grafis sederhana, dan umum dipakai di dokumen PDF untuk kompresi content stream
Fitur Utama
- Dukungan dekompresi LZW penuh untuk stream PDF
- Dukungan predictor yang dapat dikonfigurasi untuk kompresi yang lebih baik
- Beberapa opsi fill order, dari atas ke bawah atau dari bawah ke atas
- Dukungan perubahan kode awal untuk kompatibilitas
- Pemrosesan stream yang hemat memori
- Integrasi parameter PDF, yaitu Predictor, Colors, BitsPerComponent, dan Columns
Implementasi Teknis
Dukungan kompresi LZW diimplementasikan melalui unit HPDFLZW.pas, yang menyediakan:
- TPDFLZWDecompressor: Kelas dekompresi utama
- TPDFLZWParms: Struktur parameter untuk pengaturan khusus PDF
- TPDFLZWFillOrder: Enumerasi untuk pemrosesan urutan bit
Referensi Kelas
TPDFLZWDecompressor
Kelas utama untuk operasi dekompresi LZW
Properti:
- FillOrder: Menentukan urutan bit, foBottom atau foTop
- EarlyChange: Mengendalikan perubahan ukuran kode awal
- InitialCodeSize: Ukuran kode awal untuk dekompresi
Metode:
- Decompress(Input: AnsiString): AnsiString - Dekompresi dasar
- Decompress(Input: AnsiString; Parms: TPDFLZWParms): AnsiString - Dekompresi dengan parameter PDF
Contoh Penggunaan
Dekompresi LZW Dasar
// 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;
Dekompresi LZW Lanjutan dengan Parameter PDF
// 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;
Dukungan Parameter PDF
Struktur TPDFLZWParms
- Predictor: Fungsi predictor, 0=none, 2=horizontal differencing
- Colors: Jumlah komponen warna, 1=grayscale, 3=RGB, 4=CMYK
- BitsPerComponent: Bit per komponen warna, 1, 2, 4, 8, 16
- Columns: Jumlah sampel per baris
- ExpandedTo8Bit: Apakah perlu diekspansi ke komponen 8-bit
- ColorSpace: Pengenal color space
Rincian Algoritme
Implementasi LZW mencakup:
- Kompresi berbasis Dictionary: Membangun dan memelihara dictionary dinamis
- Panjang Kode Variabel: Mendukung panjang kode dari 9 sampai 12 bit
- Penanganan Clear Code: Penanganan kode clear dan end-of-information yang benar
- Manajemen Tabel String: Tabel string yang efisien untuk pengenalan pola
Karakteristik Performa
- Hemat Memori: Dioptimalkan untuk stream data besar
- Dekompresi Cepat: Algoritme dekompresi yang sangat dioptimalkan
- Performa Terprediksi: Performa konsisten di berbagai jenis data
- Jejak Memori Rendah: Overhead memori minimal selama pemrosesan
Kasus Penggunaan Umum
- Dekompresi content stream PDF
- Dekompresi data gambar dalam file PDF
- Dekompresi text stream
- Dekompresi data formulir
- Dekompresi stream PostScript
Penanganan Kesalahan
Dekompresor LZW menyertakan penanganan kesalahan yang kuat untuk:
- Urutan kode yang tidak valid
- Stream data yang rusak
- Kegagalan alokasi memori
- Kondisi overflow dictionary
Kepatuhan Standar
- Kepatuhan filter LZWDecode PDF 1.2+
- Kompatibilitas LZW PostScript Level 2
- Kompatibilitas kompresi LZW TIFF
- Kompatibilitas implementasi LZW Adobe
Lihat Juga
|