Trailer dictionary
Trailer dictionaryは、PDFファイルの末尾に配置される重要なデータ構造であり、文書の構造とメタデータにアクセスするためのエントリーポイントとして機能します。
Trailer dictionaryは、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ファイルは、有効とみなされるために少なくとも1つのTrailer dictionaryを含む必要があります。
Trailer dictionaryは、PDFファイルの末尾近くにあるクロスリファレンステーブル(またはクロスリファレンスストリーム)の後に現れるPDF dictionaryオブジェクトです。文書の基本的な構造要素を指し示すマップとして機能します。Trailer dictionaryは、ファイル構造内での特定の位置と、PDFプロセッサーの初期アクセスポイントとしての役割によって、他のPDF dictionaryと区別されます。
Trailer dictionaryの主要なエントリーには以下が含まれます:
- Root – 文書のオブジェクト階層のルートとなる文書カタログdictionaryへの必須参照
- Info – タイトル、著者、作成日などのメタデータを含む文書情報dictionaryへのオプション参照
- ID – PDFファイルを一意に識別し、変更を検出するために使用されるファイル識別子配列
- Size – クロスリファレンステーブルのエントリー総数
- Prev – 増分更新されたPDFにおいて、前のクロスリファレンスセクションへのバイトオフセット
- Encrypt – 存在する場合、保護された文書の暗号化dictionaryを参照
文書のコンテンツを整理する文書カタログ(Root)とは異なり、Trailer dictionaryは特にファイルレベルのナビゲーションとバージョン追跡を管理します。
PDFファイルを扱う開発者にとって、Trailer dictionaryの理解は以下のような実用的な理由から不可欠です:
ファイル解析とナビゲーション: Trailer dictionaryは、すべてのPDF読み取り操作の起点となります。PDFプロセッサー、ビューアー、または抽出ツールを構築する開発者は、文書構造の他の部分にアクセスするために、Trailer dictionaryを見つけて解析する必要があります。
増分更新: 増分更新を通じて以前のバージョンを保持するPDF編集機能を実装する場合、Trailer dictionary内のPrevエントリーが文書バージョンのリンクされたチェーンを作成します。これにより、開発者は元に戻す操作や文書変更のフォレンジック分析などの機能をサポートできます。
ファイルの整合性と識別: Trailer dictionary内のID配列により、開発者はバージョン追跡の実装、ファイル破損の検出、および関連するPDFファイル(デジタル署名ワークフローなど)が適切に関連付けられた状態を維持することができます。
セキュリティ実装: 暗号化されたPDFを処理するアプリケーションでは、Trailer dictionaryのEncryptエントリーが文書コンテンツを復号化するために必要な参照を提供するため、安全な文書ワークフローに不可欠です。
PDFファイルの構造は、末尾から逆方向に読み取られます。ファイルは%%EOFキーワードで終了し、その前にstartxrefキーワードと最後のクロスリファレンスセクションの先頭を指すバイトオフセット番号があります。クロスリファレンステーブルまたはストリームの直後にTrailer dictionaryが続きます。
基本的な構造は次のようになります:
xref
[クロスリファレンスエントリー]
trailer
<<
/Size 42
/Root 1 0 R
/Info 2 0 R
/ID [<hex string> <hex string>]
>>
startxref
[バイトオフセット]
%%EOF
PDFリーダーがファイルを開くとき、次の手順を実行します:
%%EOFから逆方向に読み取り、startxrefキーワードとバイトオフセットを見つける- そのオフセットにジャンプしてクロスリファレンステーブルを読み取る
- クロスリファレンスセクションに続くTrailer dictionaryを解析する
- Rootエントリーを使用して文書カタログ(通常はオブジェクト1)を特定する
- Prevエントリーが存在する場合、それに従って増分更新の以前のTrailer dictionaryを読み取る
( 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 ) で説明されているように、増分更新を含むファイルでは、複数のTrailer dictionaryが順次存在し、それぞれがPrevエントリーを通じてその前のものを指します。これにより、最新のTrailer dictionaryが文書の改訂履歴を逆方向に指すリンクリスト構造が作成されます。バージョン間でエントリーが競合する場合、最新のTrailer dictionaryが常に優先されます。
クロスリファレンスストリーム(従来のクロスリファレンステーブルの代替)の場合、Trailer dictionaryエントリーは、個別のdictionaryオブジェクトとして表示されるのではなく、ストリームdictionary自体に埋め込まれます。
- Document catalog – PDFドキュメントのオブジェクト階層のルートオブジェクトであり、Trailer dictionaryのRootエントリーによって参照される
- Cross-reference table – Trailer dictionaryの前にあり、オブジェクト番号をバイト位置にマッピングするインデックス構造
- Incremental update – ファイルの末尾に変更を追加することでPDFを変更する方法で、Prevエントリーを持つ新しいTrailer dictionaryを作成する
- File identifier – PDFファイルを区別しバージョンを追跡するために、Trailer dictionaryに格納される一意のID配列
- Object reference – Trailer dictionaryエントリーで他のPDFオブジェクトを指すために使用される間接参照形式(n 0 R)
- (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
