PDF viewer incremental update
PDF viewer incremental updateは、PDF閲覧アプリケーションが既存のPDF文書全体を書き換えるのではなく、ファイルの末尾に変更を追記することで文書を変更できる仕組みです。
PDF viewer incremental updateは、PDF閲覧アプリケーションが既存の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ファイル構造仕様の一部です。Incremental updateにより、元のコンテンツを保持し、文書の以前のバージョンとの後方互換性を維持しながら、効率的に文書を変更できます。
PDF viewer 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 ) で規定されているように、各incremental updateは、新規または変更されたオブジェクト、更新されたクロスリファレンスセクション、および前のtrailerを指す新しいtrailerで構成され、単一のファイル内に文書バージョンのリンクされたチェーンを作成します。
これは、PDFファイル構造全体をゼロから再作成する完全な文書保存とは異なります。Incremental updateは、ファイル内のオブジェクトの以前のバージョンをすべて保持するため、文書履歴の追跡やデジタル署名の保持などの機能が可能になります。PDFビューアはファイルを先頭から末尾まで読み取り、後の更新が変更されたオブジェクトの以前のバージョンを上書きします。
PDF閲覧アプリケーションを構築する開発者にとって、incremental updateを理解することは、いくつかの実用的な理由から極めて重要です。
パフォーマンスの最適化: Incremental updateは、大きな文書の書き込み時間を大幅に短縮します。数百メガバイトのデータを書き換える代わりに、変更されたコンテンツのみを追記すればよいためです。
デジタル署名の保持: PDFにデジタル署名が施されている場合、署名は文書の特定のバイト範囲を対象とします。Incremental updateにより、ビューアは既存の署名を無効化することなく注釈やフォームデータを追加できます。これは、元の署名されたコンテンツがファイル内で変更されないためです。
コラボレーションワークフロー: PDFビューアは、incremental updateを使用して、基本文書を変更することなくコメント、注釈、またはフォームフィールドデータを追加できます。これにより、複数のユーザーが各貢献者の変更を保持しながら同じファイルで作業できます。
ファイルの復元: Incremental updateは以前の文書状態を保持するため、開発者は更新チェーンを解析することで、文書の以前のバージョンを復元したり、元に戻す機能を実装したりできる可能性があります。
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 ) で定義されている特定の構造に従います。
ファイル構造: Incremental updateを含むPDFは、元のPDFボディとそれに続く1つ以上の更新セクションで構成されます。各更新セクションには4つの部分が含まれます:新規または変更されたオブジェクトを含むボディ、これらのオブジェクトをリストするクロスリファレンスセクションまたはストリーム、trailer dictionary、およびクロスリファレンスセクションの開始位置へのバイトオフセットです。
オブジェクトのバージョン管理: Incremental updateを通じてオブジェクトが変更されると、元のオブジェクトはファイル内に残りますが、同じオブジェクト番号を持つ新しいバージョンが追記されます。PDFビューアはファイルを順次処理するため、文書のオブジェクトマップを構築する際、後のバージョンが自動的に以前のバージョンを上書きします。
クロスリファレンスのチェーン化: 各incremental updateには、その更新内のオブジェクトのみを参照する新しいクロスリファレンステーブルまたはストリームが含まれます。Trailer dictionaryには、前のクロスリファレンスセクションのバイトオフセットを指す/Prevエントリが含まれ、ビューアが逆方向にたどって完全なオブジェクトインデックスを構築するリンクリストを作成します。
ファイルの終端: End-of-fileマーカーとstartxrefポインタは常に最新の更新を反映します。PDFビューアは最終的なstartxref値を読み取り、そのクロスリファレンスセクションをロードし、その後/Prevチェーンを逆方向にたどってすべての更新を通過し、現在の文書状態を構築します。
Linearizationに関する考慮事項: Incremental updateは、linearized(高速Webビュー)PDFと互換性がありません。Linearizationはストリーミングのために特定のオブジェクト順序を必要とするためです。Linearized PDFにincremental updateを追加すると、linearizationが破壊され、再linearize化するには完全な保存が必要になります。
- Cross-reference table – PDFにおけるインデックス構造で、オブジェクト番号をファイル内のバイト位置にマッピングし、incremental saveごとに更新されます
- PDF trailer – PDFまたは更新セクションの末尾にあるdictionaryで、文書に関するメタデータとクロスリファレンステーブルへのポインタが含まれます
- Digital signature – PDFにおける暗号化認証メカニズムで、文書が変更されたときに有効性を維持するためにincremental updateに依存します
- PDF object – PDF文書を構成する基本的なデータ構造(dictionary、array、stream)で、incremental updateを通じてバージョン管理できます
- Linearized PDF – Webビューイング用に最適化されたPDFファイル構造で、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
