トークン(Token)
トークンは、PDFパーサーがPDFファイルを読み取る際に認識して処理できる、構文上の最小単位です。
トークンは、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構文の基本的な構成要素であり、名前、数値、キーワード、文字列、配列、辞書、演算子などが含まれます。PDFファイル構造を扱う全ての開発者にとって、トークンの理解は不可欠です。なぜなら、トークンはドキュメント内のデータと命令がどのように表現されるかを定義するものだからです。
PDF構文において、トークンは解析プロセスにおいてこれ以上意味のある単位に分割できないアトミックな単位を表します。PDF仕様では、いくつかのトークンカテゴリを定義しています:真偽値(true/false)、数値オブジェクト(整数および実数)、文字列オブジェクト(リテラルおよび16進数)、名前オブジェクト(スラッシュで始まる識別子)、配列オブジェクト(角括弧で囲まれたもの)、辞書オブジェクト(山括弧で囲まれたもの)、nullオブジェクト、およびストリームキーワードです ( 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の論理構造において単一の複合オブジェクトとして機能します。トークンは空白文字または区切り文字によって分離されており、これによりパーサーは1つのトークンの終わりと次のトークンの始まりを識別できます。
PDF生成、解析、または操作を行う開発者にとって、トークンを理解することはいくつかの理由から重要です。第一に、低レベルのPDF処理では、入力ストリームを正しくトークン化する能力が必須です。トークンの境界を誤認識すると、解析エラーやドキュメントの破損につながります。第二に、PDFファイルのデバッグやPDFライターの実装時には、開発者は仕様の構文規則に従ってトークンが適切にフォーマットされていることを確認する必要があります。
トークン認識は、PDFの検証やアクセシビリティ作業においても重要な役割を果たします。Tagged PDF構造 ( Citation: PDF Association, 2023 PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/ ) は、ドキュメント構造ツリーを確立するために、正しくフォーマットされた辞書トークンと名前トークンに依存しており、トークンレベルのエラーはアクセシビリティの失敗に連鎖する可能性があります。さらに、PDF処理のパフォーマンス最適化には、効率的なトークンスキャンと認識が含まれることが多いため、高性能アプリケーションにとってトークンレベルの理解は価値があります。
PDFパーサーは、PDFファイルのバイトストリームを読み取り、字句解析またはトークン化と呼ばれるプロセスを通じてトークンに分割します。パーサーは、空白文字(スペース、タブ、キャリッジリターン、ラインフィード、null、フォームフィード)と区切り文字(括弧、山括弧、角括弧、スラッシュ、パーセント記号)を使用してトークンの境界を識別します ( 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 ) 。
トークンを処理する際、パーサーは各トークンタイプに対して特定のルールに従います。名前オブジェクトはスラッシュで始まり、区切り文字または空白文字に遭遇するまで続きます。数値トークンは数字文字と、オプションで小数点または符号で構成されます。文字列トークンは括弧(リテラル文字列)または山括弧(16進数文字列)で囲まれ、リテラル文字列内では特殊なエスケープシーケンスが許可されます。
トークン化プロセスはコメントを特別に扱います。パーセント記号から行末までのテキストはコメントとして扱われ、パーサーによって無視されます。これにより、PDFファイルはドキュメント構造に影響を与えることなく、人間が読める注釈を含むことができます。トークン化された後、これらのアトミックな単位は、ドキュメントの内容、構造、メタデータを表すより高レベルのオブジェクトに組み立てられます。
- PDFオブジェクト(PDF Object) – 1つ以上のトークンで構成される高レベルのデータ構造
- 辞書(Dictionary) – 名前トークンと値トークンをキーと値のペアで関連付けるトークンタイプ
- 名前オブジェクト(Name Object) – スラッシュで始まる識別子またはキーとして機能するトークンタイプ
- ストリーム(Stream) – 辞書オブジェクトに続き、コンテンツデータを含むバイト列
- 字句解析(Lexical Analysis) – バイトストリームをトークン列に変換するプロセス
- (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/
