|
LZW Compression Support
Tổng quan
HotPDF hiện có hỗ trợ nén LZW (Lempel-Ziv-Welch) đầy đủ cho các luồng PDF
LZW là thuật toán nén không mất dữ liệu, đặc biệt hiệu quả với văn bản và đồ họa đơn giản,
thường được dùng trong tài liệu PDF để nén content stream
Tính năng chính
- Hỗ trợ giải nén LZW đầy đủ cho các luồng PDF
- Hỗ trợ predictor có thể cấu hình để tăng hiệu quả nén
- Nhiều tùy chọn fill order (từ trên xuống dưới, từ dưới lên trên)
- Hỗ trợ early code change để tương thích
- Xử lý luồng tiết kiệm bộ nhớ
- Tích hợp tham số PDF (Predictor, Colors, BitsPerComponent, Columns)
Cài đặt kỹ thuật
Hỗ trợ LZW được hiện thực qua unit HPDFLZW.pas, unit này cung cấp:
- TPDFLZWDecompressor: lớp giải nén chính
- TPDFLZWParms: cấu trúc tham số cho các thiết lập riêng của PDF
- TPDFLZWFillOrder: kiểu liệt kê cho xử lý thứ tự bit
Tham chiếu lớp
TPDFLZWDecompressor
Lớp chính cho các thao tác giải nén LZW
Thuộc tính:
- FillOrder: chỉ định thứ tự bit (foBottom, foTop)
- EarlyChange: điều khiển thay đổi kích thước mã sớm
- InitialCodeSize: kích thước mã ban đầu cho giải nén
Phương thức:
- Decompress(Input: AnsiString): AnsiString - giải nén cơ bản
- Decompress(Input: AnsiString; Parms: TPDFLZWParms): AnsiString - giải nén với tham số PDF
Usage Examples
Basic LZW Decompression
// 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
Chi tiết thuật toán
Triển khai LZW bao gồm:
- Dictionary-based Compression: xây dựng và duy trì dictionary động
- Variable Code Length: hỗ trợ độ dài mã từ 9 đến 12 bit
- Clear Code Handling: xử lý đúng các mã clear và end-of-information
- String Table Management: bảng chuỗi hiệu quả cho nhận dạng mẫu
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
Các trường hợp dùng phổ biến
- Giải nén content stream PDF
- Giải nén dữ liệu ảnh trong tệp PDF
- Giải nén luồng văn bản
- Giải nén dữ liệu biểu mẫu
- Giải nén luồng PostScript
Xử lý lỗi
Bộ giải nén LZW có xử lý lỗi vững cho:
- Chuỗi mã không hợp lệ
- Luồng dữ liệu bị hỏng
- Thất bại khi cấp phát bộ nhớ
- Điều kiện tràn dictionary
Tuân thủ chuẩn
- Tuân thủ filter PDF 1.2+ LZWDecode
- Tương thích với LZW của PostScript Level 2
- Tương thích với nén LZW của TIFF
- Tương thích với triển khai LZW của Adobe
Xem thêm
|