Conversion 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ファイルアーキテクチャの基本であり、元のコンテンツを保持し後方互換性を維持しながら、文書を効率的に更新することを可能にします。Conversion incremental updateは、ファイル全体を再生成することなく、既存のPDFにアクセシビリティ機能、デジタル署名、またはメタデータを追加する際に特に重要です。
Conversion incremental updateとは、PDF文書全体を書き直すのではなく、既存のPDFファイルに新しいセクションを追加する形で変更を書き込む、特定のタイプのPDF変更方法です。完全に新しいファイル構造を作成する全体的なPDF再生成とは異なり、incremental updateは元のPDFの末尾に新しいボディセクション、相互参照テーブル、およびトレーラーを追加します。更新されたトレーラーは新しい相互参照セクションと以前の相互参照セクションの両方を指し示し、PDFリーダーが元のオブジェクトと変更されたオブジェクトの両方にアクセスできるチェーンを作成します。このアプローチは、通常ファイル構造全体を書き直す「名前を付けて保存」操作とは異なり、また元の文書構造を破壊してしまうインプレース変更とも対照的です。
PDF処理を行う開発者にとって、conversion incremental updateを理解することは、いくつかの実用的な理由から極めて重要です。第一に、PDFファイル全体を再生成する計算オーバーヘッドなしに効率的な文書変更が可能になります。これは大容量の文書やバッチ処理を行う際に特に重要です。第二に、incremental updateは元のコンテンツに対するデジタル署名を保持しながら新しいコンテンツや機能を追加でき、文書の完全性と監査証跡を維持します。第三に、この技術は
(
Citation: PDF Association, 2023
PDF Association(2023). Retrieved from
https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/
)
で定義されているようなタグ構造などのアクセシビリティ機能を既存のPDFに後付けする際に不可欠であり、開発者は元のフォーマットやコンテンツを失うことなく文書を強化できます。最後に、incremental updateは各更新レイヤーがファイル構造内でアクセス可能なまま残るため、バージョン管理と変更追跡をサポートします。
Cross-reference streamは、PDF 1.5で導入されたメカニズムで、従来のプレーンテキスト形式のcross-reference tableではなく、圧縮されたstreamオブジェクト内にcross-reference情報を格納します。
(
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文書において、より効率的なストレージとオブジェクト位置データへの高速アクセスが可能になります。Cross-reference streamは、圧縮効果を最大化するためにobject streamと組み合わせて使用されることがよくあります。
Cross-reference streamは、従来xrefテーブルに格納されていたcross-referenceデータと同じ内容を含む特殊なタイプのPDF streamオブジェクトですが、バイナリの圧縮形式で保存されます。各オブジェクトのバイトオフセットを人間が読めるASCIIテキストで記載する従来のcross-reference tableとは異なり、cross-reference streamはこの情報をバイナリデータとしてエンコードし、FlateDecodeなどの標準的なPDFフィルタを使用して圧縮できます。streamのdictionaryには、/Type /XRef、/Size、/W(エンコードされたデータのフィールド幅を定義)などの必須エントリと、どのオブジェクト番号がカバーされているかを指定する/Indexなどのオプションエントリが含まれます。Cross-reference streamは、従来のxrefテーブルとtrailer 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
)
で規定されているように、trailer情報をstreamのdictionary内に直接組み込みます。
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形式内での効率的なメモリ管理を可能にします。これは、複数回の改訂を経た文書で特に重要になります。
Hybrid-reference 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
)
で規定されているように、同一文書内にクロスリファレンス(xref)テーブルとクロスリファレンスストリームの両方を含むPDFファイルです。この二重構造により、PDFは旧式のPDFリーダーとの後方互換性を維持しながら、最新の圧縮機能と効率化機能を活用できます。Hybrid-reference PDFは、レガシーと現代のPDF処理ソフトウェアの両方をサポートする必要がある移行期間において特に有用です。
Hybrid-reference PDFは、ファイル内のオブジェクトを特定するための2つの並列インデックスシステムを維持します。PDFバージョン1.0以降の仕様に含まれている従来のクロスリファレンステーブルは、人間が読める形式で非圧縮の位置データを提供します。同時に、ファイルにはPDF 1.5で導入されたクロスリファレンスストリームが含まれており、同じインデックス情報を圧縮されたバイナリ形式で保存します。圧縮されたクロスリファレンスデータのみを含む純粋なxrefストリームPDF、またはxrefテーブルのみを含む従来のPDFとは異なり、hybrid-reference PDFは両方の構造を含むため、いずれかのアプローチをサポートするリーダーが文書を正常に解析できます。
PDF生成および処理ツールを扱う開発者にとって、hybrid-reference PDFは、さまざまなPDFリーダー機能を持つ多様なクライアント環境をサポートする際の実用的なソリューションを提供します。レガシーシステムから最新のPDFワークフローに移行する組織は、hybrid-referenceファイルを使用することで、別々のファイルバージョンを維持することなく、すべてのプラットフォームで文書にアクセスできるようにすることができます。このアプローチは、インストールされているPDFリーダーの基盤を制御または簡単にアップグレードできない環境にPDFソリューションを展開する場合に特に有用です。Hybrid-reference構造を理解することで、開発者はPDFライブラリや生成ツールを構成する際に、ファイルサイズのトレードオフと互換性要件について情報に基づいた意思決定を行うことができます。
Image 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ファイルに変更を追加できます。これは、元のファイル構造、デジタル署名、および文書履歴を保持しながら視覚的なコンテンツを更新する際に特に有用です。
Image incremental updateは、画像関連の変更に焦点を当てたPDFのincremental updateアーキテクチャの特定の応用です。開発者がPDF内の画像を追加、置換、または変更する際、incremental updateアプローチでは、PDF構造全体を再生成するのではなく、新しい画像データと関連するオブジェクト参照をファイルの末尾に追加します。これにより、元のコンテンツと新しく追加または変更された画像オブジェクトの両方を参照する新しいcross-reference sectionとtrailerが作成されます。PDFは複数世代のコンテンツを維持し、各incremental updateは文書履歴を通じて追跡できる個別のバージョンを表します。これは、PDF構造全体が最初から再生成され、以前のバージョンが削除され、すべてのコンテンツが再処理される必要があるファイル全体の書き直しとは異なります。
PDFワークフローに携わる開発者にとって、image incremental updateを理解することは、いくつかの実用的な理由から重要です。第一に、画像コンテンツのみを変更する必要がある場合に、文書全体を再処理する計算オーバーヘッドを回避することで、大きなPDFファイルの効率的な更新が可能になります。第二に、新しいコンテンツの追加を可能にしながら、元のコンテンツのデジタル署名を保持します。これは法的およびコンプライアンスワークフローにとって不可欠です。第三に、ファイル構造自体に変更履歴を保持することで、文書の監査可能性を維持します。第四に、複数の関係者が視覚的コンテンツを追加または変更する必要がある共同作業環境において、ファイル転送とストレージの要件を削減します。スキャンされた文書、写真アーカイブ、または動的な画像挿入を扱うアプリケーションにとって、incremental updateを習得することで、パフォーマンスを大幅に向上させ、文書の整合性を維持できます。
In-use 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
)
。これらのエントリは、PDFのランダムアクセスアーキテクチャの基盤を形成し、PDFリーダーがファイル全体を順次読み込むことなく、任意のオブジェクトを迅速に特定して取得できるようにします。In-use entryは、削除されたか再利用可能なオブジェクト番号を示すfree entryとは区別されます。
In-use entryは、PDFのクロスリファレンステーブル内のレコードで、3つの構成要素から成ります:オブジェクトがファイル内のどこから始まるかを示す10桁のバイトオフセット、そのオブジェクト番号が何回再利用されたかを追跡する5桁の世代番号、そしてエントリがin-useであることを示すキーワード「n」です
(
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
)
。フォーマットは「0000000017 00000 n」のような厳密なパターンに従い、「0000000017」がバイトオフセット、「00000」が世代番号、「n」がin-useであることを示します。これは、「n」の代わりに「f」を使用し、利用可能なオブジェクト番号の連結リストを維持するfree entryとは異なります。In-use entryは従来のクロスリファレンステーブルにのみ現れますが、最新のPDFのcross-reference streamには、圧縮されたバイナリ形式で同等の情報が含まれています。
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文書を修正できます。このアプローチは元のコンテンツを保持しながら、新しいまたは修正されたオブジェクト、新しいcross-referenceセクション、新しいtrailerを追加します。Incremental updateは効率的な文書修正を可能にし、デジタル署名や文書のバージョン管理などの機能をサポートします。
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される場合、元のbody、cross-referenceテーブル、trailerはそのまま残り、新しいまたは修正されたオブジェクトが、更新されたcross-referenceセクション(またはcross-referenceストリーム)および前のtrailerを指す新しいtrailerとともに追加されます。
Linearized PDFは、Web上での段階的な読み込みに最適化された特殊な構造を持つ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
)
で定義されているように、Linearizationは、最初のページのレンダリングに必要なオブジェクトがファイルの先頭に配置されるようにPDFの内部構造を再編成します。この最適化は「Fast Web View」とも呼ばれ、バイトレンジリクエストを可能にすることで、ネットワーク経由でPDFドキュメントにアクセスする際のユーザーエクスペリエンスを向上させます。
Linearized PDFは、従来のPDFファイル構造を再編成し、最も重要なデータが特定の順序でファイルの先頭に配置されるようにします。オブジェクトが特定の順序なくファイル全体に散在している可能性がある標準的なPDFとは異なり、Linearized 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
)
。
Object streamは、PDF 1.5で導入された特殊なタイプのstreamオブジェクトで、複数のindirect objectを単一の圧縮されたstream内にまとめて格納することを可能にします
(
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ファイル全体に個別に格納するのではなく、圧縮されたコレクションとしてグループ化することで、ファイルサイズを大幅に削減します。Object streamは、現代のPDF仕様における最も効果的な容量削減機能の一つです。
Object streamは、/Type値が/ObjStmのstreamオブジェクトで、圧縮形式でエンコードされた一連のindirect objectを含みます。PDFボディ内に個別に現れる通常のindirect objectとは異なり、object stream内のオブジェクトは連続して格納され、一つの単位として圧縮されます。各object streamは、インデックスを構成する一連の整数ペア(オブジェクト番号とバイトオフセット)から始まり、その後にシリアル化されたオブジェクトデータが続きます。内部に格納されるオブジェクト自体はstreamになることはできず、暗号化辞書などの特定のオブジェクトはobject stream内への格納が明示的に禁止されています
(
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
)
。Object streamは、相互参照情報を格納するcross-reference stream、およびページコンテンツとグラフィック演算子を含む通常のcontent streamとは根本的に異なります。
PDF content 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文書全体を書き換えることなく、PDFファイルを変更することができます。完全なファイル構造を再構築する代わりに、新規または変更されたオブジェクトが既存ファイルの末尾に追加され、更新されたcross-reference tableとtrailerも併せて追加されます。このアプローチにより、元のファイル内容を保持しながら変更内容のみを記録することで、効率的なPDF操作が可能になります。
Incremental updateは、PDF文書における特殊なファイル構造パターンで、既存のPDFファイルを上書きするのではなく、ファイルの末尾に新しい内容を追加することで変更を保存します。PDFにincremental updateが適用されると、元のファイル本体はそのまま残り、新しいオブジェクト、変更されたオブジェクト、新しいcross-referenceセクション、および新しいtrailerが末尾に順次追加されます。各incremental updateは新しいリビジョンレイヤーを作成し、変更されたオブジェクトの以前のバージョンを上書きしつつ、元のファイル構造との後方互換性を維持します。
これは、完全なファイルの書き換え(「最適化して保存」または「フラット化」とも呼ばれます)とは異なります。完全な書き換えでは、PDF全体が最初から再構築されます。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ファイル形式は、複数の連続したincremental updateをサポートしており、各レイヤーが個別の変更セッションを表す階層構造を作成します。