PDF dictionary incremental update
PDF dictionary incremental updateは、ドキュメント全体を書き換えるのではなく、ファイルの末尾に変更を追記することでPDFファイルを修正する仕組みです。
PDF dictionary incremental updateは、ドキュメント全体を書き換えるのではなく、ファイルの末尾に変更を追記することで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 dictionaryやその他のオブジェクトを効率的に更新できます。Incremental updateは、デジタル署名、フォーム入力、共同編集など、ファイルの整合性と監査証跡が重要なワークフローにおいて基本となる技術です。
PDF dictionary incremental updateとは、既存ファイルの末尾に変更または新規のオブジェクトのみを書き込み、その後に新しいクロスリファレンスセクションとtrailerを追加することで、PDF内の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 ) によれば、この技術は層状の構造を作成し、各incremental updateが元のコンテンツを変更することなく、新しいbodyセクション、クロスリファレンスセクション、trailerを追加します。PDFリーダーがファイルを処理する際、先頭から読み取りますが、更新を順次適用し、後のバージョンのオブジェクトが前のバージョンよりも優先されます。これは、PDF構造全体を再生成する完全なファイル書き換えとは異なり、完全な書き換えではデジタル署名が無効化され、ドキュメント履歴が失われる可能性があります。
Incremental update機構は、dictionaryオブジェクトのバージョン管理方法に特に影響を与えます。メタデータの更新、注釈の追加、ページプロパティの変更など、dictionaryエントリを修正する必要がある場合、PDFライターは修正されたキーと値のペアを含むそのdictionaryオブジェクトの新しいバージョンを作成し、ファイルに追記します。新しいクロスリファレンステーブルはこの更新されたオブジェクトを指し、ファイルから削除することなく元のオブジェクトを事実上シャドウイングします。
PDFの生成と操作を行う開発者にとって、incremental updateを理解することは、いくつかの実用的な理由から極めて重要です。第一に、デジタル署名の保持が可能になります。完全な書き換えでは既存の署名が無効化されますが、incremental updateでは以前の署名を損なうことなく新しい署名や修正を追加できます。第二に、大規模なPDFに小さな変更を加える際のパフォーマンスが大幅に向上します。変更されていない可能性のある数百メガバイトのコンテンツを再生成するのではなく、修正されたオブジェクトのみを書き込めばよいためです。第三に、この仕組みはドキュメント変更の完全な監査証跡を維持するため、規制遵守、法的文書、修正の追跡が必要な共同ワークフローにおいて不可欠です。PDFフォーム入力、注釈システム、またはドキュメント管理ソリューションを実装する開発者は、データ損失を回避し、異なるPDFプロセッサ間で適切なファイル処理を確保するために、incremental updateを考慮する必要があります。
PDF dictionary incremental updateの技術的実装は、
(
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がincrementally updatedされる場合、元のファイルコンテンツはそのまま残ります。Dictionaryオブジェクトを含む新規または修正されたオブジェクトには、元のオブジェクトと同じオブジェクト番号が割り当てられますが、世代番号がインクリメントされ、これらは元のファイルの%%EOFマーカーの後に書き込まれます。
その後、新しいクロスリファレンスセクションが続きます。これは従来のクロスリファレンステーブルまたはクロスリファレンスストリームのいずれかです。この新しいセクションには、この更新で追加または修正されたオブジェクトのみがリストされます。クロスリファレンスエントリは、新しいオブジェクト位置のバイトオフセットを指します。クロスリファレンスセクションの後に、新しいtrailer dictionaryが書き込まれます。これには、前のクロスリファレンスセクションのバイトオフセットを指す/Prevエントリが含まれ、更新の連鎖リンクを作成します。
PDFリーダーがincrementally updatedされたファイルを開くと、まずファイルの末尾から後方にスキャンして最新のtrailerを特定します。次に、/Prevチェーンをすべてのincremental updateを通じて後方に辿り、完全なオブジェクトテーブルを構築します。任意のオブジェクト番号について、リーダーは最も高い世代番号を持つバージョン、または最新の更新で見つかったバージョンを使用し、時系列順に更新を効果的に適用します。
Dictionaryオブジェクトに関しては、更新されたバージョンで変更されたキーのみを指定する必要があります。ただし、オブジェクトレベルでマージされるのではなく、dictionary全体が通常書き換えられるため、開発者は変更箇所だけでなく、更新されたdictionaryに必要なすべてのキーと値のペアを含める必要があります。
- PDF Cross-Reference Table – PDFファイル内のオブジェクト番号をバイトオフセットにマッピングするインデックス構造で、incremental changeごとに更新されます
- PDF Trailer Dictionary – PDFファイルの末尾にあるdictionaryで、incrementally updatedされたファイルでは以前のバージョンへの参照を含むドキュメント構造に関するメタデータを含みます
- PDF Object Streams – 圧縮されたPDFオブジェクトのシーケンスで、効率的なストレージのためにincremental updateに含めることができます
- Digital Signature in PDF – 暗号化認証メカニズムで、incremental updateに依存して以前の署名を無効化することなく複数の署名を可能にします
- PDF Linearization – Webベースのリニア表示用の最適化技術で、incremental updateとは互換性がなく、完全なファイル再編成が必要です
- (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
