ASCII85Decode
ASCII85Decodeは、PDFファイルにおいてASCII85(Base85とも呼ばれる)エンコード方式でエンコードされたデータをデコードするために使用されるフィルタです。
ASCII85Decodeは、PDFファイルにおいてASCII85(Base85とも呼ばれる)エンコード方式でエンコードされたデータをデコードするために使用されるフィルタです ( 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 ) 。このエンコード方式は、バイナリデータをASCIIテキスト表現に変換し、4バイトのバイナリデータを5つのASCII文字に展開します。これにより、16進数エンコードよりも効率的でありながら、データを印刷可能で送信可能な形式に保つことができます。ASCII85エンコードは、画像やフォントデータなどのバイナリストリームをテキストセーフな方法で表現するために、PDFドキュメントで一般的に使用されています。
ASCII85Decodeは、PDFのストリームデータを解凍またはデコードするためにPDF仕様で定義されている標準デコードフィルタの1つです ( 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ストリームオブジェクトがASCII85Decodeをフィルタとして指定している場合、そのストリームのコンテンツがASCII85エンコードでエンコードされており、実際のデータを使用する前にデコードする必要があることを示しています。このエンコードは、85個の印刷可能なASCII文字(’!‘から’u’まで、および特殊なケースとして’z’)の文字セットを使用してバイナリデータを表現し、生のバイナリと比較して約25%の拡張を実現します(16進数エンコードの100%拡張と比較して)。各バイトを2つの16進数文字に変換するASCIIHexDecodeとは異なり、ASCII85Decodeはより小さな表現を提供するため、ファイルサイズが重要な場合でも、ASCIIセーフな送信が必要な場合に適しています。
PDF生成または操作を行う開発者にとって、ASCII85Decodeを理解することは、いくつかの実用的な理由から重要です。第一に、PDFファイル内の画像やフォントプログラムなどのバイナリコンテンツを抽出または埋め込む際に、このエンコードを使用するストリームに遭遇する可能性があり、基礎となるデータにアクセスするためには適切にデコードする必要があります。第二に、プログラムでPDFを作成する際に、16進数エンコードなどの代替手段よりもASCII85エンコードを選択することで、ファイルサイズを小さくすることができます(16進数エンコードされた同等物と比較して約25%小さい)。これは、ストレージ要件と送信時間に影響します。第三に、ASCII85エンコードされたストリームはある程度人間が読める形式であり、バイナリデータを破損する可能性のあるテキストベースのチャネルを通じて安全に送信できるため、デバッグや7ビットクリーンなデータ送信を必要とするシステムにとって価値があります。このフィルタを理解することで、開発者はPDFワークフローにおけるデータエンコード戦略について情報に基づいた決定を下すことができます。
ASCII85Decodeは、ストリームデータに適用されたASCII85エンコードプロセスを逆転させることで動作します。エンコード時には、4バイトのバイナリ入力が32ビット数として扱われ、85で繰り返し除算し、剰余をASCII85文字セットへのインデックスとして使用することで、5つのASCII文字に変換されます。デコーダはこのプロセスを逆転させます。一度に5つのASCII文字を読み取り、各文字を数値に変換し(ASCIIコードから33を減算)、(c1 × 85⁴) + (c2 × 85³) + (c3 × 85²) + (c4 × 85) + c5を計算して元の32ビット数を再構築し、4つの元のバイトを抽出します。4つのゼロバイトを短縮形として表す文字’z’の特別な処理と、入力長が4バイトで均等に割り切れない場合のストリーム末尾のパディングに対する特別な処理が必要です。デコードされた出力は、通常、フィルタチェーン内の後続のフィルタに渡されるか、PDFオブジェクトのフィルタ配列仕様に応じて、ストリームのコンテンツとして直接使用されます。
- ASCIIHexDecode – バイナリデータを16進数表現に変換する別のASCIIセーフエンコードフィルタで、ASCII85よりもスペース効率が低い
- Filter – エンコード、圧縮、暗号化方法を含む、PDFのストリームデータに適用される処理操作
- Stream – 圧縮またはエンコードのためにフィルタを適用できるPDFファイル内のバイトシーケンス
- FlateDecode – zlib/deflateアルゴリズムを使用する圧縮フィルタで、ASCII85Decodeと組み合わせて使用されることが多い
- Binary Data – 画像やフォントなどのテキスト以外のデータで、特定のコンテキストで安全に保存するためにエンコードが必要
- (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
