Free entry
Free entryは、PDFのクロスリファレンス(xref)テーブルにおける特定のエントリタイプで、オブジェクト番号が現在使用中ではなく再利用可能であることを示します。
Free entryは、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 ) によれば、free entryはxrefテーブルの構造を維持しながら、どのオブジェクト番号がアクティブなオブジェクトに割り当てられていないかを示します。これらのエントリは連結リストを形成し、PDFライターが差分更新や新しいPDF文書を作成する際に、オブジェクト番号を効率的に追跡して再利用できるようにします。
Free entryは、PDFのクロスリファレンステーブルに現れる2種類のエントリのうちの1つで、もう1つはin-use entryです。各free entryは3つの要素で構成されます:連結リスト内の次のfree entryのオブジェクト番号、世代番号、そしてキーワード「f」(「free」の意)です。世代番号は、その特定のオブジェクト番号が文書の履歴の中で何回再利用されたかを示します。差分更新でオブジェクトが削除または置換されると、対応するxrefエントリは完全に削除されるのではなく、free entryになり、PDF構造内のオブジェクト番号の連続性が保たれます。
ファイル内のアクティブなオブジェクトのバイトオフセットを指すin-use entryとは異なり、free entryはオブジェクト番号シーケンス内のプレースホルダーとして機能します。オブジェクト番号0は常にfreeであり、free entry連結リストの先頭として機能し、世代番号は65,535です。
PDF操作を行う開発者にとって、free entryを理解することは、いくつかの実用的な理由から不可欠です。既存のPDFに対して差分更新を実装する場合(アノテーション、フォームデータ、デジタル署名の追加など)、どのオブジェクト番号が再利用可能かを知ることで、ファイル構造を最適化し、オブジェクト番号の競合を防ぐことができます。Free entryは、オブジェクト番号を継続的に増加させるのではなくリサイクルできるようにすることで、PDF形式内での効率的なメモリ管理を可能にします。これは、複数回の改訂を経た文書で特に重要になります。
さらに、PDFの修復や最適化ツールを構築する際、free entry連結リストを正しく解釈して再構築することは、有効なPDF構造を維持するために不可欠です。Free entryの誤った処理は、クロスリファレンステーブルの破損を引き起こし、PDFリーダーが文書コンテンツに適切にアクセスできなくなる可能性があります。
Free entryの仕組みは、クロスリファレンステーブル内に埋め込まれた単方向連結リストとして動作します。各free entryの最初のフィールドは、チェーン内の次のfree entryのオブジェクト番号を指し、利用可能なオブジェクト番号の走査可能なシーケンスを作成します。 ( 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 ) で定義されているように、リストはオブジェクト番号0(常にfree)から始まり、エントリがオブジェクト0を指し戻すときに終了します。
PDFライターが新しいオブジェクトを追加する必要がある場合、free entryリストを参照して利用可能なオブジェクト番号を見つけることができます。オブジェクト番号Nと世代番号Gを持つfree entryが再利用される場合、新しいオブジェクトはオブジェクト番号Nと世代番号Gを受け取ります(G+1ではありません。世代番号は、in-use entryがfreeになるときにのみ増加します)。差分更新中にオブジェクトが削除されると、そのxrefエントリはin-useからfreeに変更されます:最初のフィールドはfreeリストの以前の先頭を指すように更新され、世代番号は1増加し、キーワードは「n」から「f」に変更されます。
クロスリファレンスストリーム(従来のxrefテーブルの代替)では、free entryはタイプ0エントリを使用して異なる方法で表現されますが、概念的な目的は同じです—どのオブジェクト番号が割り当て可能かを追跡することです。
- Cross-reference table(クロスリファレンステーブル) – オブジェクト番号とファイル位置をマッピングする、freeとin-use両方のエントリを含むインデックス構造
- In-use entry – PDF文書内で現在使用されているアクティブなオブジェクトを指すxrefエントリ
- Object number(オブジェクト番号) – PDFファイル内の各間接オブジェクトに割り当てられる一意の識別子
- Generation number(世代番号) – オブジェクト番号が解放され再利用された回数を示すカウンター
- Incremental update(差分更新) – ファイル全体を書き換えるのではなく、変更を追加することで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
