Filter
FilterはPDFにおけるストリーム辞書エントリであり、ストリームデータに適用される圧縮またはエンコーディング方式を指定します。
Filterは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 ) 。Filterを使用することでPDFファイルのサイズを削減し、バイナリデータを転送用にエンコードできるため、効率的な文書の保存とレンダリングに不可欠です。単一のストリームに複数のFilterを順次適用することで、高度なデータ変換パイプラインを構築できます。
PDF文書において、Filterはストリームの辞書内に記述される名前付きパラメータであり、ストリームの生データをエンコードまたは圧縮するために使用されるアルゴリズムを識別します。Filterエントリは、単一の名前(1つのFilterの場合)、または名前の配列(複数のFilterを順次適用する場合)のいずれかで指定できます ( 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 ) 。一般的なFilterの種類には、FlateDecode(zlib/deflate圧縮)、DCTDecode(JPEG圧縮)、ASCIIHexDecode(16進数エンコーディング)、ASCII85Decode(Base-85エンコーディング)、LZWDecode(LZW圧縮)、RunLengthDecode、CCITTFaxDecode(FAX画像用)、JBIG2Decode(2値画像用)などがあります。
Filterは実際のストリームデータそのものとは異なり、データをデコードする方法を記述するメタデータです。PDFプロセッサがストリームを読み取る際は、指定されたFilterを逆順に適用して、元のエンコードされていないデータを取得する必要があります。このデータとデコード命令の分離により、PDFリーダーはさまざまな圧縮方式を透過的に処理できます。
Filterの理解は、PDFの生成、操作、最適化に携わる開発者にとって極めて重要です。適切なFilterの選択は、ファイルサイズ、処理速度、データ整合性に直接影響します。例えば、テキストコンテンツにFlateDecodeを使用するとファイルサイズを70〜90%削減できる一方、写真画像には非可逆圧縮が許容されるDCTDecodeが適しています。
PDFライブラリやツールを開発する開発者は、他のPDFプロセッサとの相互互換性を確保するために、Filterアルゴリズムを正しく実装する必要があります。Filterの適用やデコードが正しく行われないと、コンテンツの破損、レンダリングの失敗、文書へのアクセス不能などが発生する可能性があります。アクセシブルなPDFを扱う場合、支援技術がユーザーに情報を適切に抽出して提示できるよう、Filterは基礎となるコンテンツ構造を保持する必要があります。
Filterの選択は文書処理のパフォーマンスにも影響します。一部のFilterはデコードに多大な計算リソースを必要とし、リソースが限られたデバイスでのレンダリング速度に影響を与える可能性があります。Filterのトレードオフを理解することで、開発者は特定のユースケースに合わせてPDFワークフローを最適化できます。
PDFライターがストリームオブジェクトを作成する際、生データに1つ以上のエンコーディングまたは圧縮アルゴリズムを適用し、ストリームの辞書にFilter名を記録します。ストリーム辞書エントリはPDF構文では次のようになります:
/Filter /FlateDecode
複数のFilterの場合:
/Filter [/ASCII85Decode /FlateDecode]
複数のFilterが配列で指定されている場合、エンコード時は左から右に適用され、デコード時は逆(右から左)に適用される必要があります
(
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
)
。例えば、ストリームが[/ASCII85Decode /FlateDecode]を使用している場合、データはまずFlateDecodeで圧縮され、次にASCII85Encodeでエンコードされています。リーダーはまずASCII85をデコードし、次にFlateDecodeで解凍する必要があります。
一部のFilterは、DecodeParms辞書エントリで指定される追加パラメータを必要とします。例えば、予測子ベースの圧縮(画像でFlateDecodeと共によく使用される)には、Predictor、Columns、Colorsなどのパラメータが必要です。これらのパラメータはFilterエントリに付随する必要があります:
/Filter /FlateDecode
/DecodeParms << /Predictor 12 /Columns 1024 >>
PDFプロセッサが準拠リーダーとなるためには、特定のFilter(FlateDecode、LZWDecode、DCTDecode、CCITTFaxDecode、ASCII85Decode、ASCIIHexDecode、RunLengthDecode)をサポートする必要があります。その他の特殊なFilterはオプションまたは実装固有の場合があります。
- Stream – 辞書と関連データバイトで構成されるPDFオブジェクトで、Filterを適用できる
- DecodeParms – 特定のFilterが適切にデコードするために必要なパラメータを提供する辞書エントリ
- Content Stream – ページ記述オペレータを含むストリームで、通常FlateDecode圧縮を使用する
- Image XObject – 画像を表す外部オブジェクトで、多くの場合DCTDecodeまたはJBIG2Decode Filterを使用する
- Inline Image – コンテンツストリームに直接埋め込まれた画像データで、独自のFilter仕様を持つ
- (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
