LZWDecode
LZWDecodeは、PDF文書内でファイルサイズを削減しながら元のデータを正確に保持するために使用される可逆データ圧縮フィルタです。
LZWDecodeは、PDF文書内でファイルサイズを削減しながら元のデータを正確に保持するために使用される可逆データ圧縮フィルタです。開発者であるLempel、Ziv、Welchにちなんで命名されたこのフィルタは、辞書ベースの圧縮を実装しており、初期のPDFバージョンで広く使用されていました。 ( Citation: N.A., 2020 (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) で規定されているように、LZWDecodeはPDF仕様の一部として残っていますが、FlateDecode などのより効率的な圧縮方式に大きく取って代わられています。
LZWDecodeは、PDFファイル内のコンテンツストリーム、画像データ、その他のバイナリデータを圧縮するために、PDF仕様で定義されている標準ストリームフィルタの1つです。DCTDecode(JPEG圧縮)などの非可逆圧縮フィルタとは異なり、LZWDecodeは解凍されたデータが元の入力とビット単位で完全に同一であることを保証するため、テキスト、線画、および正確な再現が必要なあらゆるコンテンツに適しています。
このフィルタは、データストリーム内で遭遇したバイト列の動的辞書を構築し、繰り返し出現する列をより短いコードで置き換えることで機能します。これにより、繰り返し出現する単語を含むテキストや、均一な色の大きな領域を持つ画像など、反復パターンを持つデータに対して特に効果的です。
LZWDecodeは、主に圧縮方法論と歴史的背景において、FlateDecode(DEFLATEアルゴリズムを使用)とは異なります。どちらも可逆圧縮ですが、一般的にFlateDecode の方が優れた圧縮率を達成し、現代のPDF作成ツールで好まれる選択肢となっています。LZWDecodeは、2000年代初頭まで存在していた特許制限もあり、レガシー技術と見なされており、最大の相互運用性を目指すPDFサブセットや標準では禁止または制限されることがあります。
PDF文書を扱う開発者にとって、LZWDecodeを理解することは、いくつかの実用的な理由から重要です。
レガシー文書のサポート: 多くの古いPDFファイルはLZWDecode圧縮を使用しているため、PDF読み取りおよび処理アプリケーションは、下位互換性を確保し、多様な文書アーカイブ全体で信頼性の高い文書レンダリングを実現するために、このフィルタを実装する必要があります。
PDFサブセット準拠: PDF/A、PDF/UA、またはその他のPDFサブセット形式を作成または検証するアプリケーションを開発する際、開発者は、一部の標準がより広くサポートされている圧縮方式を優先してLZWDecodeの使用を制限または推奨しない場合があることを認識する必要があります。これは、準拠したPDFを生成する際にどの圧縮フィルタを実装するかの決定に影響します。
パフォーマンスの考慮事項: LZWDecodeの解凍は一般的に高速でよくサポートされていますが、PDFprocessingワークフローを最適化する開発者は、FlateDecode などの現代的な代替手段が通常より優れた圧縮率を提供し、結果として小さなファイルサイズと文書配信システムにおける潜在的に高速な転送時間をもたらすことを理解しておく必要があります。
LZWDecodeは、圧縮と解凍の際に動的に変換テーブルを構築する辞書ベースのアプローチを通じて、LZW圧縮アルゴリズムを実装します。
圧縮プロセス: エンコーダは、すべての単一バイト値(0-255)を含む辞書を初期化します。入力ストリームを読み取る際、現在の辞書に存在する最長のバイト列を識別し、対応するコードを出力します。新しい列が遭遇すると、新しいコード番号とともに辞書に追加され、次第に長い列が単一のコードで表現できるようになります。
解凍プロセス: デコーダは、同じ初期256エントリで始まる同期化された辞書を維持します。ストリームから圧縮されたコードを読み取ると、各コードを辞書で検索して元のバイト列を取得します。デコーダは、エンコーダと同じロジックを使用して辞書を再構築し、以前に見たことのない列を表すコードを処理するたびに新しいエントリを追加します。
PDF統合:
(
Citation: N.A., 2020
(N.A.).
(2020).
Document management — Portable document format — Part 2: PDF 2.0
.
International Organization for Standardization
Retrieved from
https://www.iso.org/standard/75839.html
)
で定義されているPDF文書では、LZWDecodeはストリーム辞書内の/Filter /LZWDecodeエントリを使用してストリームフィルタとして指定されます。このフィルタは、フィルタパイプライン内で他のフィルタと組み合わせることができ、圧縮中にエンコーダがより長いコード長に切り替えるタイミングに影響を与えるオプションの/EarlyChangeパラメータをサポートします。
パラメータ制御: LZWDecodeフィルタは、EarlyChangeパラメータ(整数値0または1)をサポートしており、解凍中のコード長変更の特定の動作を制御し、動作にわずかな違いがある可能性のある異なるLZWエンコーダ実装との互換性を確保します。
- FlateDecode – 現代のPDF文書で推奨される可逆圧縮フィルタ。DEFLATEアルゴリズムを使用
- Filter – 圧縮、解凍、エンコーディングを含む、PDFのストリームデータに適用される処理操作
- Stream – PDFファイル内のバイト列で、圧縮やエンコーディングのためにフィルタを適用できる
- DCTDecode – 主に写真画像に使用される、JPEG圧縮ベースの非可逆圧縮フィルタ
- RunLengthDecode – 同一バイト値の長いランを持つデータに効果的なシンプルな可逆圧縮フィルタ
- (N.A.) (2020)
- (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html
