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