Skip to main content
Interwork Corporation
IDR Solutions Product Support Portal
PDF開発用語集 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動

クロスリファレンス・テーブル(XRef table)

XRefテーブル(クロスリファレンス・テーブル)は、PDFファイルにおける基本的なデータ構造であり、オブジェクト番号とファイル内の物理的なバイトオフセットを対応付けます。

キーワード: xref table, クロスリファレンス・テーブル

概要

XRefテーブル(クロスリファレンス・テーブル)は、PDFファイルにおける基本的なデータ構造であり、オブジェクト番号とファイル内の物理的なバイトオフセットを対応付けます。このインデックス機構により、PDFリーダーは文書全体をスキャンすることなく、任意のオブジェクトを迅速に特定してアクセスできます ( Citation: N.A., (N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) 。XRefテーブルは通常PDFファイルの末尾近くに配置され、効率的な文書の解析とレンダリングに不可欠な要素です。

定義

XRefテーブルは、PDFファイル内のすべての間接オブジェクトの正確な位置を保持するインデックス構造です。テーブル内の各エントリはオブジェクト番号に対応し、ファイルの先頭からのバイトオフセット(そのオブジェクトが見つかる位置)、またはオブジェクトが未使用である(削除済み、または未使用)ことを示す情報を含みます。テーブルは1つ以上のサブセクションで構成され、各サブセクションは連続するオブジェクト番号の範囲を含みます。単純な順次スキャンとは異なり、XRefテーブルは任意のオブジェクトへの直接的なランダムアクセスを提供し、 ( Citation: N.A., (N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) で定義されているPDFの効率的なファイル構造における重要なコンポーネントとなっています。

XRefテーブルは、文書のコンテンツストリームとは異なり、レンダリング可能なコンテンツではなく、純粋にナビゲーション用のメタデータとして機能します。オブジェクトが実際のデータ(テキスト、画像、フォント、注釈など)を含むのに対し、XRefテーブルはこれらのオブジェクトを迅速に特定するためのロードマップとしてのみ機能します。

重要性

PDFファイルを扱う開発者にとって、XRefテーブルの理解は以下のような実用的な理由から極めて重要です。

パフォーマンスの最適化: XRefテーブルにより、リーダーはファイル全体をメモリに読み込むことなく、特定の操作(単一ページのレンダリングなど)に必要なオブジェクトのみにアクセスできます。これは、大きな文書を扱う場合や、Webアプリケーションでインクリメンタル読み込みなどの機能を実装する際に特に重要です。

インクリメンタル更新: PDFを変更する際、新しいXRefセクションを追加することで、元のコンテンツを保持しながら変更を加えることができます。このアプローチは、ファイル全体を書き換えることなく、電子署名、フォーム入力、注釈などの機能を実装するために不可欠です。

ファイルの整合性: XRefテーブルの理解は、開発者が破損または不正な形式のPDFを診断するのに役立ちます。多くのPDF解析エラーは、破損したまたは不適切に構築されたXRefテーブルに起因するため、この知識はデバッグおよび修復ツールにとって貴重です。

仕組み

XRefテーブルは、キーワードxrefで始まり、その後にサブセクションヘッダーとエントリが続く構造化されたフォーマットで動作します。各サブセクションは2つの数値で始まります:範囲内の最初のオブジェクト番号と、連続するエントリの数です。各エントリは正確に20バイトで構成されます:10桁のバイトオフセット(または未使用エントリの場合は世代番号)、5桁の世代番号、およびキーワード(使用中の場合はn、未使用の場合はf)が、スペースで区切られています。

例えば、シンプルなXRefテーブルは次のようになります:

xref
0 6
0000000000 65535 f
0000000015 00000 n
0000000174 00000 n
0000000301 00000 n
0000000425 00000 n
0000000552 00000 n

最初のエントリ(オブジェクト0)は常に未使用で、特別な世代番号65535を持ちます。後続のエントリは、オブジェクト1から5が見つかるバイトオフセットを指しています。

PDF 2.0では、従来のテーブルの代替としてXRefストリームもサポートされています ( Citation: N.A., (N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) 。これはクロスリファレンスデータを圧縮し、追加のメタデータを保存できます。XRefテーブルの直後に配置されるトレーラー辞書には、ルートオブジェクトの位置やXRefテーブルのエントリ数など、文書レベルの重要な情報が含まれています。

PDFがインクリメンタル更新を受けると、新しいXRefセクションが新しいトレーラーとともに追加され、文書の履歴を保持するチェーンが作成されます。リーダーはこれらのセクションを逆順に処理して、完全なオブジェクトマップを構築します。

関連用語

  • Indirect Object(間接オブジェクト) – PDF内の番号付けされた再利用可能なオブジェクトで、他のオブジェクトから参照でき、XRefテーブルを介して位置が特定されます
  • Trailer Dictionary(トレーラー辞書) – PDFファイルの末尾にある辞書で、XRefテーブルを指し、文書レベルのメタデータを含みます
  • Incremental Update(インクリメンタル更新) – ファイル全体を書き換えるのではなく、変更と新しいXRefセクションを追加してPDFを変更する方法
  • Object Stream(オブジェクトストリーム) – 一連の間接オブジェクトを含むストリームオブジェクトで、XRefテーブルと併用できる代替圧縮方法を提供します
  • Cross-Reference Stream(クロスリファレンス・ストリーム) – PDF 1.5以降で利用可能な、従来のXRefテーブルに代わるストリームベースの形式で、クロスリファレンスデータを圧縮します

出典

(N.A.) (2020)
(N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html