Skip to main content
Interwork Corporation
IDR Solutions Product Support Portal
PDF開発用語集 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動

ネームツリー(Name tree)

ネームツリーは、PDF文書内でテキスト文字列(名前)からPDFオブジェクトへの効率的なマッピングを提供する特殊なデータ構造です。

カテゴリ: PDF Core Syntax
キーワード: name tree, ネームツリー

概要

ネームツリーは、PDF文書内でテキスト文字列(名前)からPDFオブジェクトへの効率的なマッピングを提供する特殊なデータ構造です。 ( Citation: N.A., (N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) で定義されているように、ネームツリーはPDF全体で、埋め込みファイル、ナビゲーション用の移動先、JavaScriptアクションなどの名前付きリソースを整理するために使用されます。すべてのエントリをメモリにロードする必要がある辞書とは異なり、ネームツリーは平衡木構造を使用することで、数千のエントリがある場合でも高速な検索を可能にします。

定義

ネームツリーは、PDF内でUnicode文字列を任意のPDFオブジェクトに関連付ける階層的な木構造です。この構造は、子ノードへの参照を含む中間ノードと、ソート順に格納された実際の名前とオブジェクトのマッピングを含むリーフノードで構成されます。ネームツリーは、ナンバーツリー(整数をオブジェクトにマッピング)や単純なPDF辞書とは異なり、すべてのエントリを同時にロードすることなく大規模なデータセットを効率的に処理できます。木構造により、検索、挿入、削除の操作を、総エントリ数に対して対数的な計算量で実行できます。

ネームツリーは ( Citation: N.A., (N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) で明示的に定義されており、名前はUnicodeコードポイントを使用して辞書順にソートする必要があるという厳密な順序規則に従います。木内の各ノードには、子ノードを指す/Kids配列、または実際のキーと値のペアを交互の要素として含む/Names配列のいずれかが含まれます。

重要性

PDF文書を扱う開発者にとって、名前付きリソースに関わる機能を実装する際にネームツリーを理解することは不可欠です。PDFビューアやエディタを構築する際、埋め込みファイルの添付ファイルの処理、ブックマークやリンク用の名前付き移動先の作成または解決、文書レベルのJavaScriptの管理、またはデジタル署名の操作を行う際にネームツリーに遭遇します。ネームツリーにより、これらの機能を効果的にスケールさせることができます。数千の埋め込みファイルや移動先を含むPDFでも、木構造により検索操作のたびにすべてのエントリを解析する必要がないため、パフォーマンスが維持されます。

ネームツリーの効率的な構造は、PDFが大量の添付ファイルや複雑なナビゲーション構造を含む可能性のあるエンタープライズシナリオで特に重要になります。適切なネームツリーの実装がなければ、名前付きオブジェクトの数が増えるにつれて、文書処理のパフォーマンスが著しく低下する可能性があります。

仕組み

ネームツリーはノードで構成され、各ノードは特定のエントリを含むPDF辞書です。ルートノードと中間ノードには、子ノードへの間接参照の配列を持つ/Kidsエントリが含まれます。リーフノードには/Namesエントリが含まれます。これは、名前文字列とそれに対応するオブジェクト参照が交互に並ぶ配列です。例:[/Name1 <object1> /Name2 <object2>]

ナビゲーションを最適化するために、ノードには/Limitsエントリを含めることができます。これは、そのノードのサブツリーからアクセス可能な辞書順で最初と最後の名前を指定する2要素配列です。これにより、PDFプロセッサはすべてのノードを調べることなく、どのブランチを辿るべきかを迅速に判断できます。 ( Citation: N.A., (N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) によれば、木はパフォーマンス特性を維持するために平衡化される必要があります。

PDFプロセッサが名前を検索する際、ルートノードから開始し、/Limitsエントリを使用して木を下に移動し、リーフノードに到達したら/Names配列内で最終的な検索を実行します。PDF文書では、文書カタログの/Names辞書でネームツリーがよく使用され、これには/Dests(移動先)、/EmbeddedFiles(ファイル添付)、/JavaScript(文書スクリプト)など、さまざまな目的の個別のネームツリーを含めることができます。

関連用語

  • ナンバーツリー – 文字列ではなく整数をPDFオブジェクトにマッピングする類似の木構造
  • 文書カタログ – ネームツリーやその他の文書レベルの構造への参照を含むPDFのルートオブジェクト
  • 移動先 – PDF文書内の名前付き位置で、通常はネームツリーを使用して整理される
  • 埋め込みファイル – PDF内のファイル添付で、EmbeddedFilesネームツリーを通じて参照される
  • PDF辞書 – PDFオブジェクトのプロパティを格納するキーと値のデータ構造で、大規模なコレクションではネームツリーよりも効率が低い

出典

(N.A.) (2020)
(N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html