PDFファイルの抽象オブジェクトと、コンテンツ情報の取り扱い方法について

更新日: 2021/6/30

PDFの最新仕様書であるISO 32000-2でオブジェクトという用語が頻繁に使われています。ここでオブジェクトという言葉の意味合いは、非常に幅広くなっています。PDFファイル内の情報の最小単位は配列、ブール値、辞書、整数、名前、文字、ストリームといった基本オブジェクトです。PDFリーダー(PDF閲覧ソフト)やPDFライター(PDF作成ソフト)を自分で開発するときには、PDFファイルの中の基本オブジェクトを読み書きしなければなりません。しかし、すでにあるPDFファイルの中から自分の必要とする情報を取り出したり、あるいは編集して書き込んだりするだけなら、基本的オブジェクトを自力で読み書きする必要はありません。

アンテナハウスの『PDF Tool API』など、さまざまな開発者向けのPDFツール・ソフトウェア開発キット(SDK)を使うと、プログラムでPDFを加工・利用できます。こうしたツール(SDK)は基本オブジェクトではなく、主に高度なオブジェクト(本記事では「抽象オブジェクト」といいます)を読み書きするようになっています。

PDFファイルの中の情報の種類

PDFファイルの内部には非常に多種類の抽象オブジェクトが一定のファイル構造のもとに保存されています。次にその主なものを紹介します。

PDFのコンテンツを表すオブジェクト

文字、図形(パス)、イメージ画像、外部オブジェクトなどは、画面に表示したり、印刷したりする文字や画像に対応するオブジェクトです。こうしたコンテンツ情報こそがPDFファイルの存在意義です。従って、PDFファイルを対象にするプログラムの中では、PDFのコンテンツ情報を取り出したり、編集したりすることのニーズが一番多いことは言うまでもないでしょう。コンテンツを表す抽象オブジェクトについては、次の節でもう少し詳しく説明します。

PDFに付随する情報

PDFに追記するコメントなどを表す注釈、インタラクティブな表示のためのハイパーテキストを表すリンク情報、PDFファイルのナビゲーションに便利なしおりなどが該当します。これらの情報は、すでにあるPDFファイルのコンテンツに影響を与えることなく、後から付加したりできます。また、削除・取り除いてもコンテンツの表示・印刷に影響がありません。

注釈、リンク、しおりについては、PDF資料室にすでに簡単な説明があります。

PDF資料室

PDFの骨組み情報

PDFの内容は縦・横の絶対寸法をもつページの上に記述されます。ページの並び順はページツリーで表現され、ページツリーの葉がページオブジェクトです。

ページオブジェクト辞書には、ページの内容、ページの内容が使用する資源、ページに関連する属性、サムネイルイメージやページの注釈、ページ大きさや回転しているかなどが登録されます。

PDF資料室

PDFの資源・制御、その他の情報

メタ情報、フォント資源、カラー資源、文字コード情報(変換用テーブルなど)、セキュリティ情報、その他のオブジェクトが該当します。

PDFのコンテンツを表す抽象オブジェクト

PDFのコンテンツを表す抽象オブジェクトはグラフィック・オブジェクトと総称します。ISO 32000-2では、グラフィック・オブジェクトが次のように5種類に分類されています。

  • パスオブジェクト
  • テキストオブジェクト
  • 外部オブジェクト
  • インラインイメージ
  • シェーディングオブジェクト

パスオジェクト

PDFの図形はパスオブジェクトで表されます。パスオブジェクトは、直線、長方形、および3次ベジエ曲線(総称してパスという)で構成される任意の形状です。パスオブジェクトは、パスを描くか、パスで囲まれた領域を塗りつぶすか、パスをクリッピング境界として使用するか、またはこれらの操作の組み合わせを指定する1つ以上のペイント演算子によって構成されます。

テキストオブジェクト

PDFでは文字をフォントのグリフで表すのが基本です。テキストオブジェクトは、グリフのシーケンスを識別する1つ以上の文字列とテキストオペレータで構成されています。テキストオペレータにはテキストを表示したり、位置決めしたり、テキストの状態を決めたり、他のパラメータがあります。

テキストオブジェクトについては、PDF資料室にいくつかの記事があります。プログラマーの立場では次の記事が参考になるでしょう。

外部オブジェクト

名前付きリソースとして扱うひと固まりのデータを外部オブジェクト(XObject)と総称します。XObjectにはいくつかのタイプがあります。

  1. image XObjectは、写真のような画像を埋め込むためのオブジェクトです。画像の属性パラメータなどを表す辞書と画像のファイル実体を表すストリームから構成します。
  2. form XObjectは、単一のグラフィックスオブジェクトとして扱われるコンテンツストリーム全体を記述するコンテントストリームです。パス、テキスト、画像を扱えます。
    1. form Xobjectの一種にreference XObjectがあります。これを使うと、あるPDFファイルを別のPDFファイルにコンテンツをインポートできます。包含するPDFからインポートされるPDFをターゲット文書といいますが、ターゲット文書は包含するPDFの中に埋め込むこともできますし、外部ファイルとしておくこともできます。
    2. form Xobjectのもう一つの種類としてgroup XObjectがあります。これはさまざまな目的でグラフィック要素を1つの単位としてグループ化して扱うためのものです。

インラインイメージ

画像ファイルをPDFに埋め込んだ場合は、image XObjectになります。これに対して、インライン画像オブジェクトは、特別な構文を使用して、小さな画像のデータをPDFのコンテンツ内に直接表現します。

シェーディングオブジェクト

シェーディングオブジェクトは、幾何学的形状内の位置の関数として色を表現するものです。

PDF Tool API

PDFのコンテンツやその他の情報について、取り出したり、設定するために自分でゼロからプログラムを作る必要はありません。例えば、アンテナハウスの『PDF Tool API』を使えば、主なコンテンツ抽象オブジェクトに関する情報を簡単に扱えます。ただし、すべてのオブジェクトについて任意のあらゆることができるわけではありませんので、詳しくは次の製品情報ページをご参照ください。

製品ページ
PDF Tool API(2021年7月現在のバージョン:V7)

関連するアンテナハウスウェビナー動画

よく使うPDFをより扱いやすく! PDF Tool APIの新機能を利用したPDFのクオリティアップ

△ページ上部へ
スペース