|
LZW圧縮サポート
概要
HotPDFでは、PDFストリーム向けの包括的なLZW (Lempel-Ziv-Welch) 圧縮サポートが含まれるようになりました。LZWは、テキストや単純なグラフィックに特に効果的な可逆データ圧縮アルゴリズムであり、PDFドキュメントのコンテンツストリーム圧縮に一般的に使用されます。
主な機能
- PDFストリームの完全なLZW解凍のサポート
- 強化された圧縮のための構成可能なプレディクタのサポート
- 複数のフィルオーダーのオプション (上から下、下から上)
- 互換性のための早期コード変更のサポート
- メモリ効率の良いストリーム処理
- PDFパラメータの統合 (Predictor、Colors、BitsPerComponent、Columns)
技術的な実装
LZW圧縮サポートは、HPDFLZW.pasユニットを通じて実装されており、以下を提供します。
- TPDFLZWDecompressor: メイン解凍クラス
- TPDFLZWParms: PDF固有の設定のためのパラメータ構造体
- TPDFLZWFillOrder: ビットオーダー処理のための列挙型
クラスリファレンス
TPDFLZWDecompressor
LZW解凍操作のためのメインクラス。
プロパティ:
- FillOrder: ビットオーダーを指定します (foBottom、foトップへ)
- EarlyChange: 早期のコードサイズ変更を制御します
- InitialCodeSize: 解凍のための初期コードサイズ
メソッド:
- Decompress(Input: AnsiString): AnsiString - 基本的な解凍
- Decompress(Input: AnsiString; Parms: TPDFLZWParms): AnsiString - PDFパラメータを使用した解凍
使用例
基本的なLZW解凍
// Delphi example - Basic LZW decompression
procedure DecompressLZWData;
var
Decompressor: TPDFLZWDecompressor;
CompressedData: AnsiString;
DecompressedData: AnsiString;
begin
Decompressor := TPDFLZWDecompressor.Create;
try
// Configure decompressor
Decompressor.FillOrder := foトップへ;
Decompressor.EarlyChange := True;
Decompressor.InitialCodeSize := 9;
// Decompress data
DecompressedData := Decompressor.Decompress(CompressedData);
// Use decompressed data
ProcessDecompressedData(DecompressedData);
finally
Decompressor.Free;
end;
end;
PDFパラメータを使用した高度なLZW解凍
// 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パラメータのサポート
TPDFLZWParms構造体
- Predictor: プレディクタ関数 (0=なし、2=水平方向の差分)
- Colors: カラーコンポーネントの数 (1=グレースケール、3=RGB、4=CMYK)
- BitsPerComponent: カラーコンポーネントあたりのビット数 (1、2、4、8、16)
- Columns: 行あたりのサンプル数
- ExpandedTo8Bit: 8 ビットコンポーネントに拡張するかどうか
- ColorSpace: カラースペース識別子
アルゴリズムの詳細
LZWの実装には以下が含まれます。
- 辞書ベースの圧縮: 動的辞書を構築して維持します
- 可変コード長: 9から12ビットのコード長をサポートします
- クリアコードの処理: クリアコードおよび情報終了コードの適切な処理
- 文字列テーブルの管理: パターン認識のための効率的な文字列テーブル
パフォーマンスの特性
- メモリ効率: 大きなデータストリームに最適化
- 高速解凍: 高度に最適化された解凍アルゴリズム
- 予測可能なパフォーマンス: さまざまなデータタイプにわたる一貫したパフォーマンス
- 低いメモリフットプリント: 処理中の最小限のメモリオフセット
一般的な使用例
- PDFコンテンツストリームの解凍
- PDFファイル内の画像データの解凍
- テキストストリームの解凍
- フォームデータの解凍
- PostScriptストリームの解凍
エラー処理
LZW解凍プログラムには、以下のための堅牢なエラー処理が含まれています。
- 無効なコードシーケンス
- 破損したデータストリーム
- メモリ割り当ての失敗
- 辞書オーバーフローの状態
標準への準拠
- PDF 1.2+ LZWDecodeフィルターの準拠
- PostScript Level 2 LZW互換性
- TIFF LZW圧縮の互換性
- LZW における Adobe 実装との互換性
関連項目
|