Name object
Name objectは、PDF仕様において8つの基本オブジェクト型の1つであり、スラッシュ(/)文字で始まる不可分のシンボルとして表現されます。
Name objectは、PDF仕様において8つの基本オブジェクト型の1つであり、スラッシュ(/)文字で始まる不可分のシンボルとして表現されます ( 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 ) 。Name objectはPDF文書全体を通じて一意の識別子として機能し、主に辞書オブジェクトのキーとして、また特定の文脈における値として使用されます。文字列オブジェクトとは異なり、name objectは内部構造を持たない不可分のシンボルとして扱われるため、文書階層全体で一貫した識別を行うのに理想的です。
Name objectは、PDFファイル構造内の不可分の識別子を表す、スラッシュ記号(/)で始まる文字列です。スラッシュに続く文字列がnameの値を形成し、この値は大文字小文字を区別し、null(文字コード0)を除く任意の文字を含むことができます。Name内の特殊文字は、番号記号(#)とそれに続く2桁の16進数で表現され、その文字のコードを示します。
Name objectは文字列オブジェクトとは異なり、括弧や山括弧で囲まれず、エンコーディング情報も持ちません。単にシンボル識別子として機能します。配列や辞書とは異なり、name objectは内部構造を持たず、分割不可能な単位として存在します。一般的な例としては、/Type、/Pages、/Font、/MediaBox、/Contentsなどがあり、これらはPDF文書全体で辞書のキーとして使用されます。
PDF仕様では、PDFアーキテクチャ内で特定の意味を持つ多数の標準nameが定義されています ( 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 ) 。開発者は特定の目的のためにカスタムnameを作成できますが、標準nameはPDFプロセッサと準拠リーダー間の相互運用性を保証します。
Name objectの理解は、PDF生成、解析、操作に携わる開発者にとって不可欠です。なぜなら、これらはPDF文書の構造的バックボーンを形成するためです。PDF内のすべての辞書(文書カタログから個別のページオブジェクト、Tagged Contentの構造まで)は、情報を整理しアクセスするためのキーとしてname objectに依存しています。
アクセシビリティ目的でTagged PDF文書を扱う際、name objectは特に重要になります。これらは構造タイプ、属性、要素間の関係を識別するために使用されるためです ( Citation: PDF Association, 2023 PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/ ) 。誤って形成されたname objectは、PDFプロセッサの失敗や文書構造の誤解釈を引き起こし、アクセシビリティの問題やレンダリングの問題につながる可能性があります。
PDFライブラリやツールを構築する開発者にとって、特に特殊文字を含むname objectを適切にエンコードおよびデコードすることは、文書の整合性を維持し、クロスプラットフォーム互換性を確保するために極めて重要です。
Name objectはスラッシュ文字(/)で始まり、その後にnameを構成する0個以上の文字が続きます。PDFプロセッサは、文字列やストリームのコンテキスト外でスラッシュに遭遇すると、name objectの開始を認識し、区切り文字または空白文字に遭遇するまで読み取りを続けます。
印刷可能なASCII範囲外の文字やPDFの区切り文字(括弧、角括弧、山括弧など)として機能する文字は、16進数表記を使用してエンコードする必要があります。これは、番号記号とそれに続く2桁の16進数で記述されます。例えば、name内のスペース文字は#20と記述され、"/My Name"というnameは/My#20Nameとエンコードされます。
Name objectは正確なバイト列として比較されるため、大文字小文字が区別され、/Typeと/typeは異なるnameとなります。PDF仕様ではnameの長さに対する実装上の制限が定義されていますが、準拠リーダーは妥当な長さのnameをサポートする必要があります。
PDF辞書において、name objectは通常キーの位置に現れます:/Key /Value、/Key (string value)、/Key [array]などの形式です。/Type /Pageという構造は2つのname objectを使用し、/Typeがキー、/Pageが辞書タイプを示す値となります。このパターンは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
)
。
- Dictionary object – キーがname objectであるキーと値のペアのコレクション
- String object – 括弧または山括弧で囲まれた文字列で、テキストコンテンツに使用される
- Indirect object – オブジェクト番号を使用してPDF内の他の場所から参照できるオブジェクト
- Content stream – ページコンテンツをレンダリングするための命令を含むストリームオブジェクトで、多くの場合name objectによって参照される
- Document catalog – PDF文書のルート辞書で、その構造内のname objectを通じてアクセスされる
- (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 Association (2023)
- PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/
