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

Whitespace

PDFにおけるWhitespaceとは、PDFファイル構造内でトークンを区切るために使用される文字を指し、スペース文字(SP、0x20)、水平タブ(HT、0x09)、ラインフィード(LF、0x0A)、キャリッジリターン(CR、0x0D)、ヌル(0x00)、フォームフィード(FF、0x0C)が含まれます。

カテゴリ: PDF Core Syntax
キーワード: whitespace, Whitespace

概要

PDFにおけるWhitespaceとは、PDFファイル構造内でトークンを区切るために使用される文字を指し、スペース文字(SP、0x20)、水平タブ(HT、0x09)、ラインフィード(LF、0x0A)、キャリッジリターン(CR、0x0D)、ヌル(0x00)、フォームフィード(FF、0x0C)が含まれます。これらの文字は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 ) 。Whitespaceの規則を理解することは、有効なPDFファイルを生成する場合と既存のPDFファイルを正しく解析する場合の両方において基本となります。

定義

PDFにおけるWhitespaceは、PDF構文内で区切り文字として機能する6つの特定のASCII文字で構成されます:スペース(SP)、水平タブ(HT)、ラインフィード(LF)、キャリッジリターン(CR)、ヌル、フォームフィード(FF)です。多くのプログラミング言語ではWhitespaceは純粋に人間の可読性のためのものですが、PDFのWhitespaceは名前、数値、キーワードなどの字句トークンを区切る構造的な役割を果たします。PDF仕様では、これらの文字をほとんどのコンテキストで交換可能な区切り文字として扱いますが、改行規則(LF、CR、またはCR+LFの組み合わせ)はストリームコンテンツなどの特定のコンテキストにおいて特別な意味を持ちます。

Whitespaceは区切り文字(括弧、山括弧、角括弧、スラッシュ)とは異なります。区切り文字は別個の構文要素であり、トークンを区切る役割も果たしますが、追加の構造的意味を持ちます。連続する複数のWhitespace文字は単一の区切り文字として扱われ、区切り文字がすでにトークンの分離を提供している場合、Whitespaceは省略可能なことが多いです。

重要性

PDF生成または解析を扱う開発者にとって、適切なWhitespace処理はいくつかの理由から重要です。第一に、誤ったWhitespaceの使用は無効なPDFファイルを生成し、ファイルが開かなかったり正しくレンダリングされなかったりする可能性があります。これは、PDFパーサーが数値、キーワード、名前などのトークンを区別するためにWhitespaceに依存しているためです。第二に、Whitespace規則を理解することで、戦略的なWhitespace配置を通じてファイルサイズを最小化できます—複数のWhitespaceが冗長である場合は単一のスペースを使用します。第三に、PDFパーサーや分析ツールを構築する際、Whitespace認識を正しく実装することでPDFコンテンツの正確なトークン化が保証されます。

さらに、相互参照テーブル、オブジェクト定義、ストリーム境界を扱う場合、Whitespace処理は特に重要になります。これらの場合、特定の改行規則が必要になることがあります。開発者は、異なるオペレーティングシステム間でPDFを生成する際、プラットフォームの違いによる改行規則(WindowsスタイルとUnixスタイル)にも対応する必要があります。

仕組み

PDFパーサーは、PDF仕様で定義された特定の字句規則に従ってWhitespaceを処理します。PDFファイルをスキャンする際、パーサーは6つのWhitespace文字のいずれかをトークン区切り文字として認識します。パーサーは通常、連続するすべてのWhitespace文字を消費し、それらをトークン間の単一の区切り文字として扱います。たとえば、5 0 R(オブジェクト参照)というシーケンスと5 0 R(複数のスペースあり)は、パーサーにとって意味的に同一です。

実際には、WhitespaceはPDF構文において3つの主要な機能を果たします:

トークンの区切り:Whitespaceは、そうでなければ曖昧になる隣接するトークンを区切ります。たとえば、10 20は2つの別個の数値を区別するためにスペースが必要ですが、(Hello)/Nameは括弧とスラッシュが区切り文字として機能するためWhitespaceは不要です。

改行規則:仕様ではLF、CR、またはCR+LFを改行として許可していますが、特定のコンテキストでは特別な処理が必要です。たとえば、streamキーワードに続くストリームデータは単一の改行シーケンスの後に開始する必要があり、ストリーム長の計算には正確なバイト位置が重要です。

人間の可読性:PDFは主に機械可読ですが、ソースコード内の戦略的なWhitespaceと改行はデバッグと手動検査を支援します。整形されたPDFソースは、ドキュメント構造を明確にするためにインデントと改行を使用しますが、これは純粋に慣例的なものであり、仕様では必須ではありません。

プログラムでPDFを生成する際、開発者は以下を確認する必要があります:区切り文字による分離がないトークン間にWhitespaceを挿入すること、対象プラットフォームに適した一貫性のある改行規則を使用するか、最も普遍的に互換性のあるLFを使用すること、そして本番ファイルからは不必要なWhitespaceを除去してファイルサイズを最適化することです。

関連用語

  • Token – PDF構文における基本的な字句単位。数値、名前、キーワード、文字列などがあり、Whitespaceまたは区切り文字によって分離されます
  • Delimiter – 括弧、角括弧、山括弧などの特殊文字。トークンを区切りながら構造的意味も伝えます
  • Object – オブジェクト番号と世代番号によって識別されるPDFの基本データ構造。Whitespaceで区切られたトークンを使用して定義されます
  • Stream – PDF内のバイトシーケンス。streamキーワードとデータ境界において特別なWhitespace処理規則に従います
  • Cross-reference table – PDFファイル内のオブジェクトの位置をリストする構造。解析のために正確なWhitespaceと改行処理が必要です

出典

(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