著者 Daniel (IDRsolutions) 翻訳・編集 インターワーク
PDFファイルを初めて扱う時、それを単なる洗練されたテキスト文書であり、グラフィックを表示するためのスクリプトが含まれていると考えるかもしれません。実際には、PDFファイルはコードの集まりであり、Adobe ReaderやJPedalのようなPDFビューアは、このコードを文書に変換するためのインタプリタとして機能します。
PDFファイルはツリー構造で整理された多数のオブジェクトから成り立っており、これらのオブジェクトは8種類のデータ型を取り得ます。これには文字列、数値、ブーリアン値、名前オブジェクト、配列、ディクショナリー、ストリーム、NULLが含まれます。テキストエディタでPDFを開くと、これらのオブジェクト群が見えるはずです。
例を見てみましょう:
41 0 obj
<>
endobj
ここでは、「41 0 obj」は41番目のオブジェクトを表しており、最初の数字はオブジェクト番号、次の0は通常使われないリビジョン番号です。このオブジェクトは、その開始と終了(objとendobj)によって定義されます。二重山括弧(<<>>)はオブジェクトがディクショナリー型であることを意味し、キーと値のペアを含んでいます。
この例では、「/Type」、「/Kids」、「/Count」という3つのキーがあります。これらはすべて名前オブジェクトで、PDFリーダーに特定の情報を伝えます。例えば、/Type/Pagesはこのオブジェクトがページ情報を扱っていることを示し、/Kidsは子ページの配列を、/Countはそのページ数を示しています。
ここでの [34 0 R 43 0 R 52 0 R]
は、この文書内の他のオブジェクトへの参照を含む配列です。具体的には、34、43、52はそれぞれ異なるオブジェクト番号を示し、0 R
はそれが直接参照であることを意味します。つまり、この配列は文書内のページオブジェクトへのポインターとして機能し、41番目のオブジェクトがページのコンテナとして3つの子ページ(34番、43番、52番オブジェクト)を持っていることを示しています。
このように、PDF内の各オブジェクトは文書の特定の要素を表し、ビューアはこれらの情報を読み取り、ユーザーに視覚的な形で表示します。
8種類のデータ型を表にまとめました。
データ型 | 説明 |
---|---|
文字列 | テキストデータを表します。 |
数値 | 数値を表します。整数と実数の両方を含みます。 |
ブーリアン値 | 真偽値(true/false)を表します。 |
名前オブジェクト | PDFリーダーに特定の情報を伝えるための名前付きのオブジェクトです。ページ番号やフォントなどを示すのによく使われます。 |
配列 | 順序付きのオブジェクトの集まりです。他のオブジェクトへの参照を含むことができます。 |
ディクショナリー | キーと値のペアで構成される辞書形式のオブジェクトです。様々なデータを格納できます。 |
ストリーム | PDFページ上に表示されるコンテンツを記述する描画コマンドを含むオブジェクトです。 |
NULL | 値がないことを示すオブジェクトです。 |
PDFは上記のデータ型を使って、文書の構造や内容を表現しています。これらのオブジェクトがツリー状に編成されて、PDFファイル全体を形作っているのです。
PDFアプリ開発ツール(SDK)をお探しのみなさま、効率のよい開発作業のためにJPedal、BuildVu、JDeliがきっとお役に立つことと思います。
これら3製品は無料で試用していただけますので、まずはお試しのうえ、ぜひ導入をご検討ください。
JPedal、BuildVu、JDeliのシステム開発やプログラミング、無料トライアルの情報は下記の各製品のトライアルページをご覧ください。技術的なことから費用面まで、ご質問・ご相談も各製品ページの問合せボタンからお寄せください。