xref subsection
xref subsectionは、PDF のクロスリファレンス(xref)テーブル内の構造要素であり、連続して番号付けされたオブジェクトのエントリをグループ化します。
xref subsectionは、PDF のクロスリファレンス(xref)テーブル内の構造要素であり、連続して番号付けされたオブジェクトのエントリをグループ化します。 ( 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 ) によると、各subsectionは開始オブジェクト番号とエントリ数を指定するヘッダー行から始まり、その範囲内の各オブジェクトに対する個別のエントリが続きます。単一のxrefテーブル内に複数のsubsectionが存在することで、連続していないオブジェクト番号に対応できます。
xref subsectionは、より大きなxrefテーブル構造内の連続したクロスリファレンスエントリのブロックを表します。各subsectionは2つの部分で構成されます。1つ目は2つの整数(最初のエントリのオブジェクト番号とsubsection内のエントリ総数)を含むヘッダー行、2つ目はその数だけの20バイトのエントリ行です。各エントリ行は、特定のオブジェクトのバイトオフセット、世代番号、ステータス(使用中または空き)を提供します。
多くの非連続なオブジェクト番号にまたがる可能性がある完全なxrefテーブルとは異なり、subsectionは番号が途切れない連続したシーケンスを形成するオブジェクトを具体的に処理します。オブジェクトが削除された場合やインクリメンタル更新によって新しいオブジェクトが追加された場合など、PDF全体でオブジェクト番号が連続していない場合、xrefテーブルは複数のsubsectionを使用して、実際に存在するオブジェクトの範囲のみを効率的に表現します。
xref subsectionを理解することは、PDFファイル構造を扱う開発者、特にPDFライター、パーサー、またはインクリメンタル更新を実行するツールを実装する開発者にとって不可欠です。subsection構造は、各subsectionが特定範囲のオブジェクトへのロードマップを提供するため、コードがPDFファイル内のオブジェクトを検索する効率性に直接影響します。
プログラム的にPDFを作成または変更する際、xref subsectionを適切に構造化することで、ファイルの整合性と最適な解析パフォーマンスが保証されます。エントリ数の誤計算や適切な20バイトエントリフォーマットの維持失敗など、不適切にフォーマットされたsubsectionは、PDFリーダーがオブジェクトを検索しようとする際に失敗を引き起こします。さらに、既存のPDFにインクリメンタル更新を実行する際、新しいxref subsectionを追加する方法を理解することで、アプリケーションがファイル構造全体を書き換えることなくドキュメントを変更できるようになります。
xref subsectionは、 ( 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ファイル構造内の検索メカニズムとして機能します。各subsectionは、スペースで区切られた2つの整数としてフォーマットされたヘッダー行で始まります。範囲内の最初のオブジェクト番号とエントリ数です。例えば、「0 6」は、オブジェクト0から始まり6つのエントリ(オブジェクト0から5)を含むsubsectionを示します。
ヘッダーに続いて、各20バイトのエントリ行には、単一のスペースで区切られ、スペースとキャリッジリターン/ラインフィードまたはラインフィードのみで終了する3つのコンポーネントが含まれます。10桁のバイトオフセット(または空きエントリの場合は次の空きオブジェクト番号)、5桁の世代番号、そしてキーワード(使用中のオブジェクトの場合は「n」、空きオブジェクトの場合は「f」)です。バイトオフセットは、そのオブジェクトの定義が始まるPDFファイル内の正確な位置を指します。
PDFリーダーがオブジェクトにアクセスする必要がある場合、xref subsectionをスキャンして対象のオブジェクト番号を含むものを見つけ、そのsubsection内の位置を計算して対応するエントリを読み取ります。オブジェクト1-5と10-15が存在し、6-9が存在しない場合、xrefテーブルには2つのsubsectionが含まれます。1つはオブジェクト1から始まる5つのエントリ、もう1つはオブジェクト10から始まる6つのエントリです。この構造により、PDFファイルは削除や変更後でも効率的なオブジェクト番号付けを維持できます。
- クロスリファレンステーブル(xref table) – PDFファイル内のオブジェクト番号をバイト位置にマッピングする、すべてのxref subsectionを含む完全な構造
- インクリメンタル更新(Incremental update) – ファイルの末尾に変更を追加することでPDFを変更する方法で、新しいxref subsectionの追加が必要
- 間接オブジェクト(Indirect object) – 他のオブジェクトから参照でき、その位置がxrefテーブルで追跡される、番号付きのPDFオブジェクト
- 世代番号(Generation number) – オブジェクト番号が再利用された回数を追跡する、オブジェクト識別子のコンポーネント
- クロスリファレンスストリーム(Cross-reference stream) – クロスリファレンス情報を圧縮されたストリームオブジェクトに格納する、従来のxrefテーブルの代替
- (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
