LZWFilter
LZWFilterは、Apache PDFBoxのクラスであり、PDFストリームオブジェクトに対してLempel-Ziv-Welch(LZW)圧縮を実装します。
LZWFilterは、Apache PDFBoxのクラスであり、PDFストリームオブジェクトに対してLempel-Ziv-Welch(LZW)圧縮を実装します。このフィルターは、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 ) で定義されている可逆データ圧縮および解凍機能を提供します。LZW圧縮は歴史的にPDFファイルで一般的に使用されていましたが、特許の問題やより効率的な代替手段の登場により、現在では他の圧縮方法に大きく取って代わられています。
LZWFilterは、Apache PDFBoxにおけるストリームフィルターの具体的な実装であり、PDFドキュメント内で指定される/LZWDecodeフィルタータイプを処理します。このクラスは、PDFBoxのフィルターアーキテクチャを拡張し、LZWアルゴリズムを使用して圧縮されたストリームのエンコードとデコードを行います。LZWアルゴリズムは、データ内の繰り返しパターンの辞書を構築することで圧縮を実現します。deflateベースのフィルター(FlateDecode)とは異なり、LZWは辞書ベースのアプローチを使用します。このアプローチは、元々Unixのcompressユーティリティ用に開発され、後にGIF画像や初期のPDFバージョンで使用されました。このフィルターは、PDFコンテンツストリーム、画像データ、および圧縮を必要とする他の埋め込みリソース内のバイトストリームに対して動作します。
Apache PDFBoxを使用する開発者にとって、LZWFilterを理解することは、いくつかの理由から重要です。第一に、レガシーPDFドキュメントでは頻繁にLZW圧縮が使用されているため、古いファイルを読み取るには適切なデコードサポートが不可欠です。第二に、PDFからコンテンツを抽出または操作する際、開発者はさまざまなフィルタータイプを透過的に処理する必要があり、LZWFilterはPDFBoxフレームワーク内でこの機能を提供します。第三に、さまざまな圧縮フィルターを理解することで、開発者はPDFドキュメントを作成または変更する際に、ファイルサイズの最適化と互換性について十分な情報に基づいた決定を下すことができます。歴史的な特許制限や最新の代替手段の優れた圧縮性能により、LZWは新しいPDF作成ではほとんど使用されませんが、LZW圧縮されたストリームを処理する機能により、多様なPDFエコシステムとの幅広い互換性が確保されます。
Apache PDFBoxのLZWFilterクラスは、LZW圧縮されたストリームのエンコード操作とデコード操作の両方を実装しています。デコード時、フィルターはPDFストリームオブジェクトから圧縮データを読み取り、動的に構築される辞書内のエントリを参照する可変長コードを解釈することで、元の非圧縮データを再構築します。アルゴリズムは9ビットのコードサイズから開始し、辞書が増大するにつれて最大12ビットまで拡張され、データパターンに適応できるようになっています。フィルターは、PDFストリーム辞書で指定されたLZWDecodeパラメーターを処理します。これには、画像などの特定のデータタイプの圧縮率を向上させるために圧縮前に適用できるオプションのpredictor関数が含まれます。PDFBoxがPDFドキュメント内で/Filter /LZWDecodeを持つストリームに遭遇すると、自動的にLZWFilterクラスをインスタンス化してコンテンツをデコードするため、上位レベルのPDFBox APIを使用する開発者にとってこのプロセスは透過的になります。この実装は、標準的な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
)
で概説されている仕様に従っています。
- FlateDecode – DEFLATEアルゴリズムを使用する最も一般的なPDF圧縮フィルターで、LZWに大きく取って代わりました
- Stream Object(ストリームオブジェクト) – デコードまたはエンコードにフィルターを必要とする圧縮可能なデータを含むPDFオブジェクトタイプ
- Filter Pipeline(フィルターパイプライン) – PDFストリームデータをデコードまたはエンコードするために順次適用されるフィルターのチェーン
- DCTDecode – PDFドキュメントで一般的に使用されるJPEG画像用の非可逆圧縮フィルター
- Predictor Functions(予測関数) – 特定のデータパターンの圧縮率を向上させるために圧縮前に適用される前処理アルゴリズム
- (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
