PDF content encoding
PDF content encodingとは、PDFファイルのコンテンツストリーム内でテキスト、グラフィックス、その他のコンテンツを表現するために使用される方法を指します。
PDF content encodingとは、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コンテンツが効率的に保存され、正確にレンダリングされ、異なるプラットフォームやアプリケーション間でアクセス可能になることが保証されます。
PDF content encodingは、PDF文書内のデータ表現の複数の層を包含します。最も基本的なレベルでは、Flate(ZIP)、LZW、ASCII85などのストリームエンコーディング方式が含まれ、これらは生のコンテンツストリームデータを圧縮します。圧縮以外にも、エンコーディングとは、文字エンコーディングスキーム(WinAnsiEncodingやMacRomanEncodingなど)を通じてテキスト文字がグリフにマッピングされる方法、およびCMapリソースが適切なテキスト抽出のために文字コードをUnicode値にマッピングする方法を指します。
これはフォントエンコーディングとは異なります。フォントエンコーディングは特定のフォント内で文字がどのように表現されるかを具体的に扱うのに対し、content encodingはより広範で、コンテンツストリーム構造全体を含みます。また、文書レベルの暗号化とも異なります。暗号化はPDFファイル全体を保護するものであり、単にストレージ効率のためにコンテンツをエンコードするものではありません。
PDF生成または操作を行う開発者にとって、content encodingの理解は以下の理由から重要です:
ファイルサイズの最適化: 適切なエンコーディング方式の選択は、PDFファイルサイズに直接影響します。Flate圧縮は通常、コンテンツストリームを50〜70%削減し、これはWeb配信やストレージ効率にとって不可欠です。
テキスト抽出の精度: 適切なエンコーディングにより、検索、インデックス作成、アクセシビリティ目的でPDFからテキストを確実に抽出できることが保証されます。誤ってエンコードされたコンテンツストリームは視覚的にレンダリングされても、抽出可能なテキストを提供できず、 ( 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リーダーやプラットフォーム間で一貫したレンダリングが保証されます。
アクセシビリティコンプライアンス: ( Citation: PDF Association, 2023 PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/ ) で説明されているTagged PDF構造は、適切にエンコードされたコンテンツに依存して、支援技術が文書構造を解釈し、障害を持つユーザーにコンテンツを読み上げることを可能にします。
PDF content encodingは、いくつかの相互接続されたメカニズムを通じて動作します:
コンテンツストリームのエンコーディング: コンテンツストリームは通常、ストリーム辞書で指定されたフィルターを使用してエンコードされます。最も一般的なフィルターはFlateDecode(zlib/deflate圧縮アルゴリズムに基づく)で、ストリームデータを圧縮します。複数のフィルターを順番に適用することもでき、例えば圧縮前のbase-85エンコーディングのためにASCII85DecodeとFlateDecodeを組み合わせることができます。
テキストエンコーディング: コンテンツストリーム内では、テキストは文字コードを参照するテキスト表示オペレーター(Tj、TJ、’、")を使用して表示されます。これらのコードは、現在のフォントのエンコーディングを通じて解釈され、数値コードを特定のグリフにマッピングします。単純なフォントの場合、これはWinAnsiEncodingのような組み込みエンコーディングである可能性があり、複雑なフォントはマルチバイト文字マッピングにCMapリソースを使用します。
Unicodeマッピング: 適切なテキスト抽出とアクセシビリティを可能にするため、PDFには文字コードをUnicode値にマッピングするToUnicode CMapを含める必要があります。これにより、PDFプロセッサは、表示に使用されるフォントエンコーディングに関係なく、エンコードされた文字コードを意味のある検索可能なテキストに変換できます。
構造的エンコーディング: Tagged PDFでは、コンテンツはマークされたコンテンツシーケンス(BDC/EMCオペレーター)でラップされ、論理構造をエンコードします。この構造的エンコーディングは、視覚的なコンテンツエンコーディングと連携して、コンテンツに意味的な意味を提供します。
- Character Encoding – フォント内で文字コードを特定のグリフに変換するマッピングシステム
- Content Stream – ページコンテンツを記述するグラフィックスとテキストオペレーターのシーケンスを含むPDFストリームオブジェクト
- CMap – 文字コードと文字セレクター間の対応を定義するマッピングテーブル
- Font Subsetting – ファイルサイズを削減するために、埋め込みフォントに使用されたグリフのみを含める方法
- Tagged PDF – 論理的な読み順序と文書階層を定義する構造的マークアップを含む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
