PDF object encoding
PDFオブジェクトエンコーディングとは、PDFファイル内のPDFオブジェクト内部のデータをどのように表現し圧縮するかという手法を指します。
PDFオブジェクトエンコーディングとは、PDFファイル内の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オブジェクトはFlate(deflate圧縮)などのフィルター、ASCIIエンコーディング方式、16進数エンコーディングなど、さまざまなエンコーディングスキームを使用してファイルサイズを最適化し、データの整合性を保証できます。オブジェクトエンコーディングの理解は、PDFの生成、解析、または操作を行う開発者にとって不可欠です。
PDFオブジェクトエンコーディングは、PDFオブジェクト内の生データをPDFファイル構造内での保存に適した形式に変換するプロセスです。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(zlib/deflate圧縮)、ASCIIHexDecode(16進数エンコーディング)、ASCII85Decode(base-85エンコーディング)、LZWDecode(Lempel-Ziv-Welch圧縮)などがあります。
機密性を保つためにコンテンツを保護する暗号化とは異なり、エンコーディングはデータの表現と効率性に焦点を当てています。エンコーディングはさまざまなオブジェクトタイプ、特にストリームオブジェクトに適用でき、複数のフィルターを連鎖させることも可能です。エンコーディングパラメータはストリームディクショナリで指定され、PDFリーダーがレンダリングやデータ抽出時にコンテンツを適切にデコードできるようにします。
PDF生成または処理アプリケーションを構築する開発者にとって、PDFオブジェクトエンコーディングの理解は以下の理由から重要です:
ファイルサイズの最適化:適切なエンコーディングの選択により、PDFファイルサイズを大幅に削減できます。これは、帯域幅と読み込み時間が重要なWebアプリケーションにとって不可欠です。テキストコンテンツにFlateDecodeを、画像にDCTDecodeを選択することで、パフォーマンスに大きな影響を与えることができます。
データ整合性:一部のエンコーディングスキームは、7ビットASCIIを期待するシステムを通じてバイナリデータが安全に通過できるようにし、転送または保存中の破損を防ぎます。
アクセシビリティへの準拠: ( Citation: PDF Association, 2023 PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/ ) で説明されているTagged PDF構造を扱う場合、コンテンツストリームの適切なエンコーディングにより、テキスト抽出と支援技術がドキュメントコンテンツを正しく解釈できるようにします。
相互運用性:エンコーディングの理解は、開発者がさまざまなPDFプロセッサー間のPDF互換性問題をトラブルシューティングし、生成されたPDFがPDF/UA ( Citation: N.A., 2014 (N.A.). (2014). Document management applications — Electronic document file format enhancement for accessibility — Part 1: Use of ISO 32000-1 (PDF/UA-1) . International Organization for Standardization Retrieved from https://www.iso.org/standard/64599.html ) などの標準に準拠することを保証するのに役立ちます。
PDFオブジェクトエンコーディングは、PDF仕様で定義されたフィルターメカニズムを通じて動作します。ストリームオブジェクトがエンコードされたデータを含む場合、そのディクショナリには適用するエンコーディングフィルターを指定する/Filterエントリが含まれます:
単一フィルターエンコーディング:ストリームディクショナリには/Filter /FlateDecodeが含まれることがあり、これはストリームデータがFlateアルゴリズムを使用して圧縮されていることを示します。PDFリーダーがこのストリームに遭遇すると、対応する解凍アルゴリズムを適用して元のデータにアクセスします。
フィルターチェーン:複数のフィルターを順次適用でき、/Filter [/ASCII85Decode /FlateDecode]のような配列として指定されます。PDFプロセッサーはデコード時にこれらのフィルターを逆順に適用します—まずFlate解凍、次にASCII85デコードです。
フィルターパラメータ:一部のフィルターは/DecodeParmsディクショナリエントリを通じて追加パラメータを受け取り、エンコーディング動作の微調整を可能にします。たとえば、予測関数は画像データの圧縮率を向上させることができます。
一般的なエンコーディングワークフロー:
- テキストコンテンツストリームは通常、圧縮にFlateDecodeを使用します
- 画像データは画像タイプに応じてDCTDecode(JPEG)またはFlateDecodeを使用します
- ASCII互換である必要があるバイナリデータはASCIIHexDecodeまたはASCII85Decodeを使用します
- フォントファイルストリームはフォント形式に基づいた専用エンコーディングを使用します
PDF処理アプリケーションを開発する際、開発者はユースケースに関連するフィルターのエンコーディング(PDF生成用)とデコーディング(PDF解析用)の両方の機能を実装する必要があります。
- Stream object(ストリームオブジェクト)– 関連するフィルター仕様を持つエンコードされたデータを含むPDFオブジェクトタイプ
- Content stream(コンテンツストリーム)– ページコンテンツをレンダリングするための命令を含む特別なストリームで、通常FlateDecodeでエンコードされます
- PDFフィルター – PDFオブジェクト内のデータをエンコードおよびデコードするために使用される特定のアルゴリズム
- Object stream(オブジェクトストリーム)– ファイルサイズを削減するために圧縮されたPDFオブジェクトを含むストリームで、PDF 1.5で導入されました
- Font encoding(フォントエンコーディング)– PDFフォントで使用される文字とコードのマッピングシステムで、オブジェクトエンコーディングとは異なりますが関連しています
- (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 Association (2023)
- PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/
- (N.A.) (2014)
- (N.A.). (2014). Document management applications — Electronic document file format enhancement for accessibility — Part 1: Use of ISO 32000-1 (PDF/UA-1) . International Organization for Standardization Retrieved from https://www.iso.org/standard/64599.html
