(57)【要約】【課題】バリアブルデータ印刷（可変データ印刷）において、レコード数が多い場合でも印刷データのデータ量を抑える。【解決手段】データソースオブジェクトをデータソース情報に基づいて生成する第１の生成手段と、前記第１の生成手段により生成された前記データソースオブジェクトへの参照情報を、可変データ印刷における可変印刷データに記述する第１の記述手段と、前記第１の記述手段で記述された前記参照情報により参照される前記データソースオブジェクトに基づく印刷オブジェクトの生成に係るプレースホルダオブジェクトを、プレースホルダ情報に基づいて生成する第２の生成手段と、前記第２の生成手段により生成された前記プレースホルダオブジェクトへの参照情報を、前記可変印刷データのページオブジェクトに記述する第２の記述手段と、を有することによって課題を解決する。【選択図】図３
2015197826.tif 000002
【特許請求の範囲】
【請求項１】
データソースオブジェクトをデータソース情報に基づいて生成する第１の生成手段と、
前記第１の生成手段により生成された前記データソースオブジェクトへの参照情報を、可変データ印刷における可変印刷データに記述する第１の記述手段と、
前記第１の記述手段で記述された前記参照情報により参照される前記データソースオブジェクトに基づく印刷オブジェクトの生成に係るプレースホルダオブジェクトを、プレースホルダ情報に基づいて生成する第２の生成手段と、
前記第２の生成手段により生成された前記プレースホルダオブジェクトへの参照情報を、前記可変印刷データのページオブジェクトに記述する第２の記述手段と、
を有する情報処理装置。
【請求項２】
前記第１の生成手段は、前記データソースオブジェクトを前記可変印刷データの内部に生成する請求項１記載の情報処理装置。
【請求項３】
前記第１の生成手段により前記データソースオブジェクトが前記可変印刷データの内部に生成された場合、前記可変印刷データをプリントサーバーに送信する第１の送信手段を更に有する請求項２記載の情報処理装置。
【請求項４】
前記第１の生成手段は、前記データソースオブジェクトを前記可変印刷データの外部に生成する請求項１記載の情報処理装置。
【請求項５】
前記第１の生成手段により前記データソースオブジェクトが前記可変印刷データの外部に生成された場合、前記可変印刷データと、前記生成された前記データソースオブジェクトを含む他の可変印刷データとをプリントサーバーに送信する第２の送信手段を更に有する請求項４記載の情報処理装置。
【請求項６】
前記可変印刷データの生成に係る指示画面を表示する表示手段を更に有し、
前記第１の生成手段は、前記指示画面を介して入力された前記データソース情報に基づいて前記データソースオブジェクトを生成し、
前記第２の生成手段は、前記指示画面を介して入力された前記プレースホルダ情報に基づいて前記プレースホルダオブジェクトを生成する請求項１乃至５何れか１項記載の情報処理装置。
【請求項７】
可変印刷における可変印刷データからデータソース情報を抽出する抽出手段と、
前記抽出手段により抽出された前記データソース情報と、前記データソース情報に基づく印刷オブジェクトの生成に係る前記可変印刷データのページオブジェクトが参照するプレースホルダオブジェクトとに基づいて、前記可変印刷データの各ページに前記データソース情報に基づく印刷オブジェクトを生成する生成手段と、
を有する情報処理装置。
【請求項８】
前記生成手段により前記印刷オブジェクトが生成された前記ページの印刷に係る印刷命令を画像形成装置に出力する出力手段を更に有する請求項７記載の情報処理装置。
【請求項９】
前記抽出手段により抽出された前記データソース情報から１レコードのデータを読み込む読み込み手段を更に有し、
前記生成手段は、前記データソース情報のうち前記読み込み手段により読み込まれた前記１レコードのデータと、前記１レコードのデータに基づく印刷オブジェクトの生成に係る前記プレースホルダオブジェクトとに基づいて、前記可変印刷データの各ページに前記１レコードのデータに基づく印刷オブジェクトを生成する請求項７又は８記載の情報処理装置。
【請求項１０】
前記抽出手段は、他の情報処理装置から受信された前記可変印刷データから前記データソース情報を抽出する請求項７乃至９何れか１項記載の情報処理装置。
【請求項１１】
前記可変印刷データは、前記データソース情報の１レコードのデータに係る印刷オブジェクトが生成される前記ページオブジェクトを含むＰＤＦ／ＶＴデータである請求項１乃至１０何れか１項記載の情報処理装置。
【請求項１２】
情報処理装置が実行する情報処理方法であって、
データソースオブジェクトをデータソース情報に基づいて生成する第１の生成ステップと、
前記第１の生成ステップにより生成された前記データソースオブジェクトへの参照情報を、可変データ印刷における可変印刷データに記述する第１の記述ステップと、
前記第１の記述ステップで記述された前記参照情報により参照される前記データソースオブジェクトに基づく印刷オブジェクトの生成に係るプレースホルダオブジェクトを、プレースホルダ情報に基づいて生成する第２の生成ステップと、
前記第２の生成ステップにより生成された前記プレースホルダオブジェクトへの参照情報を、前記可変印刷データのページオブジェクトに記述する第２の記述ステップと、
を含む情報処理方法。
【請求項１３】
情報処理装置が実行する情報処理方法であって、
可変印刷における可変印刷データからデータソース情報を抽出する抽出ステップと、
前記抽出ステップにより抽出された前記データソース情報と、前記データソース情報に基づく印刷オブジェクトの生成に係る前記可変印刷データのページオブジェクトが参照するプレースホルダオブジェクトとに基づいて、前記可変印刷データの各ページに前記データソース情報に基づく印刷オブジェクトを生成する生成ステップと、
を含む情報処理方法。
【請求項１４】
コンピュータに、
データソースオブジェクトをデータソース情報に基づいて生成する第１の生成ステップと、
前記第１の生成ステップにより生成された前記データソースオブジェクトへの参照情報を、可変データ印刷における可変印刷データに記述する第１の記述ステップと、
前記第１の記述ステップで記述された前記参照情報により参照される前記データソースオブジェクトに基づく印刷オブジェクトの生成に係るプレースホルダオブジェクトを、プレースホルダ情報に基づいて生成する第２の生成ステップと、
前記第２の生成ステップにより生成された前記プレースホルダオブジェクトへの参照情報を、前記可変印刷データのページオブジェクトに記述する第２の記述ステップと、
を実行させるためのプログラム。
【請求項１５】
コンピュータに、
可変印刷における可変印刷データからデータソース情報を抽出する抽出ステップと、
前記抽出ステップにより抽出された前記データソース情報と、前記データソース情報に基づく印刷オブジェクトの生成に係る前記可変印刷データのページオブジェクトが参照するプレースホルダオブジェクトとに基づいて、前記可変印刷データの各ページに前記データソース情報に基づく印刷オブジェクトを生成する生成ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
バリアブルデータ印刷（Ｖａｒｉａｂｌｅ  Ｄａｔａ  Ｐｒｉｎｔｉｎｇ：以下、ＶＤＰと表記する）として知られる印刷方法が行なわれている。ＶＤＰに使用される文書は、固定部分と可変部分とに分かれており、可変部分のデータがＲＤＢ（Ｒｅｌａｔｉｏｎａｌ  Ｄａｔａｂａｓｅ）やＣＳＶ（Ｃｏｍｍａ  Ｓｅｐａｒａｔｅｄ  Ｖａｌｕｅｓ）ファイル等のデータソースから供給される。ＶＤＰでは、データソースの列（カラム）がテンプレート文書の可変部分と関連付けられ、それがデータソースの行（レコード）毎に適用されることで、異なる内容の印刷が行われる。ここで、ひとつのＶＤＰに必要なページレイアウトやデータソース等の論理的な情報の集まりをＶＤＰ文書と呼び、ＶＤＰ文書を物理的な電子データにしたものをＶＤＰデータと呼ぶ。
ＶＤＰデータは、一般的にはどのようなページ記述言語（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ：以下、ＰＤＬと表記する）でもよいが、ＶＤＰ専用のＰＤＬを用いる場合が多い。なぜなら、ＶＤＰ専用のＰＤＬは、ＶＤＰ文書の固定部分のオブジェクト（以下、固定オブジェクトと表記する）を予め定義しておき、その固定オブジェクトを後から参照する参照情報の記述が可能だからである。このようなＰＤＬを印刷処理する際には、個々の固定オブジェクトの解釈処理結果を保持しておき、それが参照される度に解釈処理結果をコピーするだけでよい。こうすることで、ＶＤＰデータ全体の処理が速くなることが期待できる。つまり、ＶＤＰ専用のＰＤＬは、ＶＤＰデータを解析処理するアプリケーションにとって処理効率のよいＶＤＰ文書を表現することができる。
特許文献１には、バリアブルデータ印刷（可変データ印刷）を効率的に行う技術が開示されている。より具体的に説明すると、特許文献１には、ページ情報は１つのレコード分だけを持ち、各ページにはレコードデータの内容によって動的に変化するプレースホルダを持たせることで、データ量を１レコード分だけに削減する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１３４７４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１で提案されているフォーマットでは、データソースを持たないため、完全なページ記述言語となっていない。即ち、このフォーマットのデータのみではバリアブル印刷を実行することができず、ユーザーがデータソースを別途与えなければならない。一方、データソースを持つフォーマットでは、データソースのレコード数が多い場合、印刷データのデータ量が多くなってしまうという問題がある。
本発明は、バリアブルデータ印刷（可変データ印刷）において、レコード数が多い場合でも印刷データのデータ量を抑えることを目的とする。
【課題を解決するための手段】
【０００５】
そこで、本発明の情報処理装置は、データソースオブジェクトをデータソース情報に基づいて生成する第１の生成手段と、前記第１の生成手段により生成された前記データソースオブジェクトへの参照情報を、可変データ印刷における可変印刷データに記述する第１の記述手段と、前記第１の記述手段で記述された前記参照情報により参照される前記データソースオブジェクトに基づく印刷オブジェクトの生成に係るプレースホルダオブジェクトを、プレースホルダ情報に基づいて生成する第２の生成手段と、前記第２の生成手段により生成された前記プレースホルダオブジェクトへの参照情報を、前記可変印刷データのページオブジェクトに記述する第２の記述手段と、を有する。
【発明の効果】
【０００６】
本発明によれば、バリアブルデータ印刷（可変データ印刷）において、レコード数が多い場合でも印刷データのデータ量を抑えることができる。
【図面の簡単な説明】
【０００７】
【図１】拡張ＰＤＦ／ＶＴの情報の一例を示す図である。
【図２】レコード数分のページにおける描画結果の一例を示す図である。
【図３】拡張ＰＤＦ／ＶＴの構造の一例を示す図である。
【図４】データソース内部保持型拡張ＰＤＦ／ＶＴスクリプトの一例を示す図である。
【図５】データソース外部参照型拡張ＰＤＦ／ＶＴスクリプトの一例を示す図である。
【図６】システム構成の一例を示す図である。
【図７】ハードウェア構成の一例を示す図である。
【図８】実施形態１のアプリケーション処理概要の一例を示す図である。
【図９】実施形態１の入力データと出力のデータとの関係の一例を示す図である。
【図１０】実施形態１における処理の一例を示すフローチャート（その１）である。
【図１１】ユーザーインターフェースの一例を示す図（その１）である。
【図１２】プレースホルダ情報ファイルの一例を示す図である。
【図１３】実施形態１における処理の一例を示すフローチャート（その２）である。
【図１４】実施形態２のアプリケーション処理概要の一例を示す図である。
【図１５】実施形態２の入力データと出力のデータとの関係の一例を示す図である。
【図１６】実施形態２における処理の一例を示すフローチャート（その１）である。
【図１７】ユーザーインターフェースの一例を示す図（その２）である。
【図１８】実施形態２における処理の一例を示すフローチャート（その２）である。
【発明を実施するための形態】
【０００８】
以下、本発明を実施するための形態について図面を用いて説明する。なお、以降の説明では、印刷内容の一部を差し替えながら印刷を行うバリアブルデータ印刷（可変データ印刷）（Ｖａｒｉａｂｌｅ  Ｄａｔａ  Ｐｒｉｎｔｉｎｇ）をＶＤＰと呼ぶ。また、ひとつのＶＤＰに必要なページレイアウトやデータソース等の論理的な情報の集まりをＶＤＰ文書と呼び、ＶＤＰ文書を物理的な電子データにしたものをＶＤＰデータ（可変印刷データ）と呼ぶ。更に、以降の説明では、ＶＤＰデータフォーマットとして、図１等を用いて後述するＰＤＦ／ＶＴデータにプレースホルダとデータソース情報とを付加する形態を用いて説明する。以降、このフォーマットを拡張ＰＤＦ／ＶＴと呼ぶ。なお、ＰＤＦ／ＶＴは、Ｖａｒｉａｂｌｅ  Ｔｒａｎｓａｃｔｉｏｎの略称である。
【０００９】
＜実施形態１＞
（拡張ＰＤＦ／ＶＴの内容）
図１は、本実施形態における拡張ＰＤＦ／ＶＴの持つ情報の概念の一例を示す図である。
拡張ＰＤＦ／ＶＴは、１レコード分のページ（図１（ａ））と、データソース（図１（ｂ））と、ページに配置されているプレースホルダ情報（図１（ｃ）、（ｄ））を持っている。１レコード分のページ（図１（ａ））は、１ページでも複数ページでもよいが、図１（ａ）では１ページだけの例が示されている。
ページ１０１は、通常のＰＤＦ／ＶＴのページのように、画像やグラフィック等の描画オブジェクト１０２を配置するほかに、プレースホルダと呼ばれる領域（１０３、１０４）を配置できる。プレースホルダ１０３、１０４は、そこに描画される描画内容が、データソースから供給されるレコード情報の内容に従って、動的に変化する領域を表している。
データソース（図１（ｂ））は、このバリアブル印刷ジョブで扱うレコード分のデータを持っている。
図１（ｃ）、（ｄ）は、それぞれプレースホルダ１０３、１０４に対応するプレースホルダ情報である。プレースホルダ情報は、対応するプレースホルダに描画される描画オブジェクトをデータソースのレコード情報から生成するための情報を持っている。例えば、図１（ｃ）のプレースホルダ情報は、描画領域（ＢＢｏｘ）が座標（２０，１００）の位置から（５０，８０）の位置までのサイズ（ＢＢｏｘ＝（２０，１００，５０，８０））であることを示している。また、前記プレースホルダ情報は、描画オブジェクトのタイプ（ＯｂｊｅｃｔＴｙｐｅ）が「イメージ」（ＯｂｊｅｃｔＴｙｐｅ＝ＩＭＡＧＥ）であることを示している。また、前記プレースホルダ情報は、イメージのファイル名がデータソースの"ｉｍａｇｅ"列から取得することができる（Ｃｏｌｕｍｎ＝ｉｍａｇｅ）であることを示している。更に、前記プレースホルダ情報は、描画領域内の描画位置（Ａｌｉｇｎｍｅｎｔ）は左上隅を基準とする（Ａｌｉｇｎｍｅｎｔ＝ＴｏｐＬｅｆｔ）であることを示している。なお、プレースホルダ情報はこの例に示すものに限らない。また、プレースホルダ情報とレコード情報とに基づいてプレースホルダを描画オブジェクト（印刷オブジェクト）に置換することを、以降の説明では「インスタンス化」と呼ぶ。
【００１０】
（拡張ＰＤＦ／ＶＴのインスタンス化結果）
図２は、図１の拡張ＰＤＦ／ＶＴをインスタンス化した場合の、レコード数分のページの描画結果の一例を示す図である。
図１の拡張ＰＤＦ／ＶＴのデータソース（図１（ｂ））には４個のレコード（１０５、１０６、１０７、１０８）がある。図１の拡張ＰＤＦ／ＶＴの場合、インスタンス化は次のように行われる。
ｉｄ＝００１のレコード（１０５）では、プレースホルダ１（１０３）には「ａ．ｊｐｅｇ」という名前のファイルに記述されたイメージ、プレースホルダ２（１０４）には文字列「あああ」が描画され、ページ２０１が生成される。ｉｄ＝００２のレコード（１０６）では、プレースホルダ１（１０３）には「ｂ．ｐｄｆ」という名前のファイルに記述されたイメージ、プレースホルダ２（１０４）には文字列「いいい」が描画され、ページ２０２が生成される。ｉｄ＝００３レコード（１０７）では、プレースホルダ１（１０３）には「ｃ．ｐｎｇ」という名前のファイルに記述されたイメージ、プレースホルダ２（１０４）には文字列「ううう」が描画され、ページ２０３が生成される。ｉｄ＝００４のレコード（１０８）では、プレースホルダ１（１０３）には「ｄ．ｔｉｆｆ」という名前のファイルに記述されたイメージ、プレースホルダ２（１０４）には文字列「えええ」が描画され、ページ２０４が生成される。
拡張ＰＤＦ／ＶＴが持つ１レコード分のページ群は、インスタンス化の雛形となるものであるため、以降の説明では、拡張ＰＤＦ／ＶＴが持つ１レコード分のページ群を「テンプレート」と呼ぶ。
【００１１】
（拡張ＰＤＦ／ＶＴの内部構造）
本実施形態の拡張ＰＤＦ／ＶＴに限らず、ＰＤＦでは、一定の意味のある情報のかたまりを「オブジェクト」として表現し、オブジェクトがオブジェクトを参照する構成とすることで、ドキュメント全体を表現している。本実施形態の拡張ＰＤＦ／ＶＴは、従来のＰＤＦ／ＶＴの構造に、新たなオブジェクトやオブジェクト間の参照を追加することで、図１で示したような、データソースやページ内にプレースホルダを持つといった特徴を備えている。
図３を用いて、拡張ＰＤＦ／ＶＴの構造を説明する。図３は、拡張ＰＤＦ／ＶＴの内部のオブジェクトと、その参照構造との一例を模式的に表した図である。拡張ＰＤＦ／ＶＴには、「データソース内部保持型」（図３（ａ））と、「データソース外部参照型」（図３（ｂ））との２つの種類がある。
【００１２】
（データソース内部保持型拡張ＰＤＦ／ＶＴの内部構造）
まず、図３（ａ）の「データソース内部保持型」について説明する。
オブジェクト参照構造の最上位のオブジェクトは、Ｃａｔａｌｏｇオブジェクト３０１である。Ｃａｔａｌｏｇオブジェクト３０１は、ＤａｔａＳｏｕｒｃｅオブジェクト３０２を参照している。
ＤａｔａＳｏｕｒｃｅオブジェクト３０２は、拡張ＰＤＦ／ＶＴ固有のオブジェクトであり、その拡張ＰＤＦ／ＶＴで使われるデータソースの情報を保持する。「データソース内部保持型」では、ＤａｔａＳｏｕｒｃｅオブジェクト３０２が図１（ｂ）で表されるようなデータソースの実体３０３を持つ。
Ｃａｔａｌｏｇオブジェクト３０１は、更に、ＤＰａｒｔＲｏｏｔオブジェクト３０４を参照している。ＤＰａｒｔＲｏｏｔオブジェクト３０４、及びＤＰａｒｔオブジェクト３０５、３０６は、後述するＰａｇｅオブジェクト（ページオブジェクト）を構造化するためのオブジェクトである。この構造について、ＰＤＦ／ＶＴでの仕様は公知であるため詳細な説明を省略し、ここでは本実施形態の拡張ＰＤＦ／ＶＴでの仕様について説明する。ＤＰａｒｔＲｏｏｔオブジェクト３０４は、配下にＤＰａｒｔ階層を持つことができ、どの階層がレコードレベルを表すかを示す属性情報「ＲｅｃｏｒｄＬｅｖｅｌ」を持つことができる。なお、ＤＰａｒｔ階層の数に制限はない。拡張ＰＤＦ／ＶＴでは、このＲｅｃｏｒｄＬｅｖｅｌ属性の値を「１」固定とし、ＤＰａｒｔＲｏｏｔオブジェクト３０４が参照するＤＰａｒｔオブジェクト３０５は、ただ１つのＤＰａｒｔオブジェクト３０６を参照するように制限する。こうすることで、拡張ＰＤＦ／ＶＴは、１つのレコード分のＰａｇｅオブジェクトのみを持つことになる。
ＤＰａｒｔＲｏｏｔオブジェクト３０４とＤＰａｒｔオブジェクト３０５、３０６とで構成される階層構造の末端には、Ｐａｇｅオブジェクト３０７が存在する。Ｐａｇｅオブジェクト３０７は、従来のＰＤＦのように描画オブジェクトを持つほかに、ＰＨＩｎｆｏオブジェクト３０８を複数持つことができる。
ＰＨＩｎｆｏオブジェクト３０８は、図１（ｃ）、（ｄ）で表されるページ内のプレースホルダ情報を格納するためのオブジェクトである。
【００１３】
（データソース内部保持型拡張ＰＤＦ／ＶＴスクリプト例）
図４は、「データソース内部保持型」の拡張ＰＤＦ／ＶＴ（図３（ａ））のスクリプトの一例を示す図である。より具体的には、図４は、Ｃａｔａｌｏｇオブジェクト３０１、ＤａｔａＳｏｕｒｃｅオブジェクト３０２、Ｐａｇｅオブジェクト３０７、ＰＨＩｎｆｏオブジェクト３０８の記述例を示している。
Ｃａｔａｌｏｇオブジェクト４０１は、「／ＤａｔａＳｏｕｒｃｅ  ２  ０  Ｒ」の部分が示す参照情報４０２で、ＤａｔａＳｏｕｒｃｅオブジェクト４０３を参照している。
ＤａｔａＳｏｕｒｃｅオブジェクト４０３は、「／ＣｏｌｕｍｎＮａｍｅ」以降の部分（記述４０４）で、データの実体を表現している。
Ｐａｇｅオブジェクト４０５は、「／ＰＨＩｎｆｏ  ［９  ０  Ｒ  １０  ０  Ｒ］」の部分が示す参照情報４０６で、ＰＨＩｎｆｏオブジェクト４０７、４０８を参照している。
ＰＨＩｎｆｏオブジェクト４０７、４０８は、各プレースホルダのプレースホルダ情報を持つ。各ＰＨＩｎｆｏオブジェクトの「／Ｃｏｌｕｍｎ（ｉｍａｇｅ）」の部分（記述４０９）や、「／Ｃｏｌｕｍｎ（ｔｅｘｔ）」の部分（記述４１０）は、ＤａｔａＳｏｕｒｃｅオブジェクト４０３内のデータの実体（記述４０４）のどの列を参照するかを示している。
上記は、データソース内部保持型の拡張ＰＤＦ／ＶＴの構造を表現するためのスクリプトの一例であり、オブジェクトの名称、参照方法、データの実体の表現方法等は、ＰＤＦの記述文法に従っていれば、この例に限らなくてもよい。
【００１４】
（データソース外部参照型拡張ＰＤＦ／ＶＴの内部構造）
次に、図３（ｂ）の「データソース外部参照型」について説明する。
「データソース外部参照型」の拡張ＰＤＦ／ＶＴが、「データソース内部保持型」の拡張ＰＤＦ／ＶＴと異なる点は、ＤａｔａＳｏｕｒｃｅオブジェクト３０９の内容である。「データソース外部参照型」では、ＤａｔａＳｏｕｒｃｅオブジェクト３０９はデータソースの実体を持たず、外部の別の拡張ＰＤＦ／ＶＴ３１０を参照する。
外部の拡張ＰＤＦ／ＶＴ３１０は、Ｃａｔａｌｏｇオブジェクト３１１とそれが参照するＤａｔａＳｏｕｒｃｅオブジェクト３１２を持つ。このＤａｔａＳｏｕｒｃｅオブジェクト３１２は、データソースの実体３１７を持つ。その結果、拡張ＰＤＦ／ＶＴのテンプレート部分と、データソースの実体部分とは、別ファイルとして分離される。また、外部の拡張ＰＤＦ／ＶＴ３１０がデータソースの実体を持つという制限があるので、外部の拡張ＰＤＦ／ＶＴ３１０が更に別の外部の拡張ＰＤＦ／ＶＴを参照することはない。これによって、ファイル間の参照が無限に続くといった不都合は発生しない。
以降の説明では、データソース外部参照型の拡張ＰＤＦ／ＶＴの、参照元側ファイル３１６を「本体側ファイル」又は単に「本体側」、参照先ファイル３１０を「データ側ファイル」又は単に「データ側」と呼ぶ。
【００１５】
（データソース外部参照型拡張ＰＤＦ／ＶＴスクリプト例）
図５（ａ）は、「データソース外部参照型」の拡張ＰＤＦ／ＶＴ（図３（ｂ））における、本体側ファイル３１６の各オブジェクトのスクリプトの一例を示す図である。より具体的には、Ｃａｔａｌｏｇオブジェクト３１３、ＤａｔａＳｏｕｒｃｅオブジェクト３０９、Ｐａｇｅオブジェクト３１４、ＰＨＩｎｆｏオブジェクト３１５の記述例を示している。
また、図５（ｂ）は、「データソース外部参照型」の拡張ＰＤＦ／ＶＴ（図３（ｂ））における、データ側ファイル３１０の各オブジェクトのスクリプトの一例を示す図である。より具体的には、Ｃａｔａｌｏｇオブジェクト３１１、ＤａｔａＳｏｕｒｃｅオブジェクト３１２の記述例を示している。
以下では、「データソース内部保持型」の拡張ＰＤＦ／ＶＴのスクリプト記述例（図４）と異なる部分のみ説明する。
本体側ファイル５０１のＤａｔａＳｏｕｒｃｅオブジェクト５０２は、「／Ｒｅｆ」以降の部分が示す参照情報５０３で、データ側ファイル５０４への参照を表現している。この参照方法は、ＰＤＦの仕様に含まれる「Ｒｅｆｅｒｅｎｃｅ  ＸＯｂｊｅｃｔ」の仕組みを利用している。
データ側ファイル５０４のＣａｔａｌｏｇオブジェクト５０５は、「／ＤａｔａＳｏｕｒｃｅ  ２  ０  Ｒ」の部分が示す参照情報５０６で、ＤａｔａＳｏｕｒｃｅオブジェクト５０７を参照している。
データ側ファイル５０４のＤａｔａＳｏｕｒｃｅオブジェクト５０７は、「／ＣｏｌｕｍｎＮａｍｅ」以降の部分（記述５０８）で、データの実体を表現している。
上記は、データソース外部参照型の拡張ＰＤＦ／ＶＴの構造を表現するためのスクリプトの一例であり、オブジェクトの名称、参照方法、データの実体の表現方法等は、ＰＤＦの記述文法に従っていれば、この例に限らなくてもよい。
【００１６】
（拡張ＰＤＦ／ＶＴの種類による利点の違い）
データソース内部保持型の拡張ＰＤＦ／ＶＴでは、テンプレートとデータソースの実体とが１つのファイルとなっているので、ファイルの管理が行いやすい利点がある。データソース外部参照型拡張ＰＤＦ／ＶＴでは、ユーザーが本体側のファイルを編集することなく、データ側のファイルのみを差し替えることで、別の印刷結果が得られるという利点がある。これは、ユーザーが、オブジェクトの配置（レイアウト）を変えず、中身のテキストや画像のみを変えて印刷を行いたい場合等に有効である。例としては、毎月１回利用者に送られるクレジットカードの利用明細等が挙げられる。
【００１７】
（システム構成）
上記で説明した拡張ＰＤＦ／ＶＴを使って、印刷データの生成から印刷までを行うシステムについて説明する。図６は、システムの構成と、データの流れとに関する一例を模式的に表した図である。この例では、ネットワーク６０１に接続されたクライアントＰＣ６０２、プリントサーバー６０３、プリンタ６０４が存在している。
クライアントＰＣ（情報処理装置）６０２は、後述する拡張ＰＤＦ／ＶＴを生成するアプリケーションにより拡張ＰＤＦ／ＶＴ６０５を生成し、生成した拡張ＰＤＦ／ＶＴ６０５をプリントサーバー６０３へ送信する。
プリントサーバー（情報処理装置）６０３は、クライアントＰＣから受信した拡張ＰＤＦ／ＶＴ６０５を解析し、プリンタ６０４で印刷するための印刷コマンド（印刷命令）を生成し、生成した印刷コマンドをプリンタ６０４へ送信する。なお、クライアントＰＣ６０２とプリントサーバー６０３とは同一の情報処理装置で構成されていてもよい。
プリンタ（画像形成装置）６０４は、プリントサーバー６０３から受信した印刷コマンドにしたがって印刷を行い、印刷物６０６を出力する。
ここで、拡張ＰＤＦ／ＶＴに関わる処理は、クライアントＰＣ６０２で実行される拡張ＰＤＦ／ＶＴの生成処理と、プリントサーバー６０３で実行される拡張ＰＤＦ／ＶＴの解析処理とである。実施形態１では、クライアントＰＣ６０２での拡張ＰＤＦ／ＶＴを生成する処理を実行するアプリケーションについて説明する。なお、プリントサーバー６０３での拡張ＰＤＦ／ＶＴを解析する処理を実行するアプリケーションについては実施形態２で説明する。以下、拡張ＰＤＦ／ＶＴを生成するアプリケーション、拡張ＰＤＦ／ＶＴを解析するアプリケーションを、単にアプリケーションと呼ぶ場合がある。
【００１８】
（ハードウェア構成）
図７は、クライアントＰＣ６０２やプリントサーバー６０３のハードウェア構成の一例を示す図である。ここで、クライアントＰＣ６０２とプリントサーバー６０３とのハードウェア構成は同様であるものとし、以下ではクライアントＰＣ６０２のハードウェア構成を例に説明する。
ＣＰＵ７０１は、クライアントＰＣ６０２全体の制御を行う。ＣＰＵ７０１は、外部記憶装置７０４等に格納されているプログラムをＲＡＭ７０２にロードして実行することにより、クライアントＰＣ６０２の機能及び後述するクライアントＰＣ６０２のフローチャートに係る処理を実現する。
ＲＡＭ７０２は、ＣＰＵ７０１が実行するプログラムや、文書画像等のデータを一時的に格納する記憶領域である。
ネットワークＩ／Ｆ７０３は、ＣＰＵ７０１の制御の下にネットワークとの接続を行なってデータ等を送受信するネットワークインタフェースである。
外部記憶装置７０４は、各種のプログラムやデータを保存する磁気ディスク等の記憶領域である。
更に、クライアントＰＣ６０２は、ディスプレイ７０５、キーボード７０６、マウス等のポインティングデバイス７０７を有する。なお、ディスプレイ７０５は、タッチパネルのようにユーザーによるタッチ操作を介して入力指示を受け付ける操作部を兼ねる構成であってもよい。
【００１９】
次に、図７で示すハードウェア構成にしたがって、クライアントＰＣ６０２のアプリケーションがどのように動作するかを説明する。
上述したように、ＣＰＵ７０１は、外部記憶装置７０４等に格納されているアプリケーションのプログラムをＲＡＭ７０２にロードして実行することにより、前記アプリケーションの機能を実現する。また、ＣＰＵ７０１は、外部記憶装置７０４等に格納されているＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のプログラムをＲＡＭ７０２にロードして実行することにより、ＯＳの機能を実現する。前記アプリケーションは、各種の処理を実行する際に、必要に応じてＯＳの機能を利用する。
また、前記アプリケーションは、ＲＡＭ７０２に一時記憶する内部データの内容を読み書きしたり、外部記憶装置７０４上でデータを読み書きしたりする。また、前記アプリケーションは、別のコンピュータ上にデータがある場合等には必要に応じてネットワークＩ／Ｆ７０３を通じてデータを送受信する。また、前記アプリケーションは、ディスプレイ７０５にユーザーインターフェース（以下、ＵＩと呼ぶ）や処理結果等の視覚情報を表示したり、キーボード７０６やポインティングデバイス７０７からユーザーの入力を受け付けたりする。以下、前記アプリケーションの動作を説明するにあたり、上記で説明した個々のデバイスの動作については説明を省略する。
また、上述したように、プリントサーバー６０３のハードウェア構成も同様のハードウェア構成をしている。即ち、プリントサーバー６０３のＣＰＵ７０１が、プリントサーバー６０３の外部記憶装置７０４等に格納されているプログラムをプリントサーバー６０３のＲＡＭ７０２にロードして実行する。これにより、プリントサーバー６０３の機能及び後述するプリントサーバー６０３のフローチャートの処理が実現される。
【００２０】
（拡張ＰＤＦ／ＶＴを生成するアプリケーションの動作）
図８は、クライアントＰＣ６０２内の拡張ＰＤＦ／ＶＴを生成するアプリケーション（以下、実施形態１では「本アプリケーション」と呼ぶ）の処理の概要の一例を示す図である。
本アプリケーションは、データソース情報ファイル８０１、１レコード分のＰａｇｅオブジェクトを持つＰＤＦファイル８０２、プレースホルダ情報ファイル８０３の何れか、又は複数を指定する入力をＵＩを介してユーザーから受け付ける。より具体的には、本アプリケーションは、拡張ＰＤＦ／ＶＴを生成するにあたり、基とするファイル８０１、８０２、８０３の指定を、図１１を用いて後述するＵＩ（指示画面）を介してユーザーから受け付ける。なお、ファイル８０１、８０２、８０３は、クライアントＰＣ６０２の外部記憶装置７０４に格納されていてもよいし、ネットワーク上の記憶装置に格納されていてもよい。即ち、本アプリケーションは、ＵＩを介して指定されたファイル８０１、８０２、８０３を、外部記憶装置７０４から取得したり、ネットワーク上の記憶装置から取得したりする。
本アプリケーションは、データソース内部保持型拡張ＰＤＦ／ＶＴ８０４、又はデータソース外部参照型拡張ＰＤＦ／ＶＴの本体側とデータ側とのセット８０５、又はデータソース外部参照型拡張ＰＤＦ／ＶＴのデータ側８０６のみの何れかを出力する。
上記の処理の詳細については、図９等を用いて後述する。
【００２１】
図９は、本アプリケーションにおける入力データと出力データとの関係の一例を示す図である。
本アプリケーションでは、出力する拡張ＰＤＦ／ＶＴの種類（８０４、８０５、８０６）によって、処理のパターンが３つに分かれる。
「処理パターン１」では、本アプリケーションは、データソース情報ファイル８０１と、１レコード分のＰａｇｅオブジェクトを持つＰＤＦファイル８０２と、プレースホルダ情報ファイル８０３とを入力とし、データソース内部保持型拡張ＰＤＦ／ＶＴ８０４を出力する。
「処理パターン２」では、本アプリケーションは、データソース情報ファイル８０１と、１レコード分のＰａｇｅオブジェクトを持つＰＤＦファイル８０２と、プレースホルダ情報ファイル８０３とを入力とし、データソース外部参照型拡張ＰＤＦ／ＶＴ８０５を出力する。本アプリケーションが「処理パターン２」で出力するデータソース外部参照型拡張ＰＤＦ／ＶＴは、本体側とデータ側とのセットである。
「処理パターン３」では、本アプリケーションは、データソース情報ファイル８０１を入力とし、データ側のみのデータソース外部参照型拡張ＰＤＦ／ＶＴ８０６を出力する。
本アプリケーションは、どの処理パターンで処理を実行するかを、図１１を用いて後述するＵＩを介して受け付けたユーザーの選択に基づいて決定する。
【００２２】
上述の通り、データソース内部保持型拡張ＰＤＦ／ＶＴの利点は管理が行いやすいことであり、データソース外部参照型拡張ＰＤＦ／ＶＴの利点はレイアウトの変わらない内容の違う印刷を、データ側ファイルを差し替えるだけで簡単に行えることである。したがって、ユーザーは、管理の負荷を抑えたい場合は「処理パターン１」を選び、レイアウトの変わらない内容の違う印刷を複数回にわたって行いたいときは「処理パターン２」と「処理パターン３」とを選べばよい。これにより、バリアブルデータ印刷におけるユーザーの利便性を向上させることができる。
本アプリケーションがデータソース外部参照型拡張ＰＤＦ／ＶＴ８０５を出力する場合、本アプリケーションは、ユーザーの指示に従い、最初の１回目は「処理パターン２」を行い、本体側ファイルとデータ側ファイルとの両方を出力する。そして、本アプリケーションは、本体側ファイルとデータ側ファイルとの両方をプリントサーバー６０３へ送信し、プリントサーバー６０３の処理を開始させる。更に、本アプリケーションは、２回目以降は「処理パターン３」を行い、データ側ファイルのみを出力させ、プリントサーバー６０３へ送信し、プリントサーバー６０３の処理を開始させることで印刷を行うことができる。
【００２３】
図１０のフローチャートを用いて、本アプリケーションの処理の流れを説明する。図１０は、本実施形態におけるクライアントＰＣ６０２が実行する処理の一例を示すフローチャートである。
まず、本アプリケーションは、図１１（ａ）に示されるＵＩを表示して、ユーザーから処理パターンの選択を受け付ける（Ｓ１００１）。図１１（ａ）は、このときに本アプリケーションが表示するＵＩの一例を示す図である。図１１（ａ）のＵＩは、データソース内部保持型ＰＤＦ／ＶＴを生成するか、データソース外部参照型ＰＤＦ／ＶＴの本体側とデータ側とのセットを生成するか、データソース外部参照型ＰＤＦ／ＶＴのデータ側のみを生成するか、の選択に関する指示をユーザーから受け付ける。以下、本アプリケーションがデータソース内部保持型ＰＤＦ／ＶＴを生成する処理を「処理パターン１」と呼ぶ。また、本アプリケーションがデータソース外部参照型ＰＤＦ／ＶＴの本体側とデータ側とのセットを生成する処理を「処理パターン２」と呼ぶ。更に、本アプリケーションがデータソース外部参照型ＰＤＦ／ＶＴのデータ側のみを生成する処理を「処理パターン３」と呼ぶ。本アプリケーションは、図１１（ａ）のＵＩを介してユーザーから受け付けた指示に応じて、図８に示される上述の処理パターンのうち、何れの処理パターンの処理を実行するかを決定する。
【００２４】
次に、本アプリケーションは、各処理パターンに応じた入力をＵＩを介してユーザーから受け付ける（Ｓ１００２、Ｓ１００３）。図１１（ｂ）は、このときに本アプリケーションが表示するＵＩの一例を示す図である。本アプリケーションは、「処理パターン１」及び「処理パターン２」のときは、データソース情報ファイル８０１、１レコード分のＰａｇｅオブジェクトを持つＰＤＦファイル８０２、プレースホルダ情報ファイル８０３を指定する入力を、前記ＵＩを介してユーザーから受け付ける（Ｓ１００２）。一方、本アプリケーションは、「処理パターン３」のときは、データソース情報ファイル８０１を指定する入力を、前記ＵＩを介してユーザーから受け付ける（Ｓ１００３）。
データソース情報ファイル８０１は、本アプリケーションが生成する拡張ＰＤＦ／ＶＴのデータソース部分となるデータを持つものであり、形式はＣＳＶやＸＭＬ等、一般的なデータソースを表現することができるものであればどのようなものでもよい。ＣＳＶは、Ｃｏｍｍａ  Ｓｅｐａｒａｔｅｄ  Ｖａｌｕｅｓの略称であり、ＸＭＬは、Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅの略称である。
１レコード分のＰａｇｅオブジェクトを持つＰＤＦファイル８０２は、通常のＰＤＦファイルであり、このＰＤＦファイルに含まれるページ群が、１レコード分のページ群として扱われる。
プレースホルダ情報ファイル８０３は、１レコード分のＰａｇｅオブジェクトを持つＰＤＦファイル８０２の各ページに追加するプレースホルダの情報を持つファイルである。
【００２５】
図１２は、プレースホルダ情報ファイルの一例を示す図である。
プレースホルダ情報ファイルは、任意のページ数分のプレースホルダ情報群（１３０１、１３０２）を持つ。プレースホルダ情報ファイルのプレースホルダ情報群（１３０１、１３０２）の数は、ＰＤＦファイル８０２のページ数と同じでなければならない。プレースホルダ情報群（１３０１、１３０２）は、対応するページに追加されるプレースホルダの情報（１３０３、１３０４、１３０５）を、ユーザーが追加したい数だけ持つ。
プレースホルダの情報（１３０３、１３０４、１３０５）は、対応するプレースホルダの属性情報や、インスタンス化するための情報を持つ。例えば、図１２のプレースホルダ情報１３０５は、以下の情報を持つ。
・描画領域（ＢＢｏｘ）は座標（０，０）の位置から座標（１００，２００）までのサイズ（ＢＢｏｘ＝（０，０，１００，２００））。
・描画オブジェクトのタイプ（ＯｂｊｅｃｔＴｙｐｅ）は「イメージ」（ＯｂｊｅｃｔＴｙｐｅ＝ＩＭＡＧＥ）。
・イメージのファイル名はデータソースの"ｉｍａｇｅ２"列から取得する（Ｃｏｌｕｍｎ＝ｉｍａｇｅ２）。
・描画領域内の描画位置（Ａｌｉｇｎｍｅｎｔ）は左上隅を基準とする（Ａｌｉｇｎｍｅｎｔ＝ＴｏｐＬｅｆｔ）。
・イメージの縦横比を保持する（ＫｅｅｐＡｓｐｅｃｔＲａｔｉｏ＝Ｙｅｓ）。
・９０度回転する（Ｒｏｔｅｔｅ＝９０）。
・不透明度は１．０（Ｏｐａｃｉｔｙ＝１．０）。
プレースホルダ情報ファイルの形式は、一般的に設定ファイルとしてよく使われるＩＮＩ形式やＸＭＬ形式等、上記の情報を表現することができればどのような形式でもよい。
【００２６】
図１０の説明に戻る。
本アプリケーションは、処理パターン１、処理パターン２の場合は、データソースの不要部分を削除する（Ｓ１００４）。ＵＩを介してユーザーが指定したデータソースファイルは、使用されない部分、即ち、どのプレースホルダをインスタンス化するときにも参照されないカラムを持っている場合がある。このカラムを残すことは、本アプリケーションが出力する拡張ＰＤＦ／ＶＴのデータサイズを増大させるだけで無駄であるので、本アプリケーションは、この段階で不要部分を削除する。本アプリケーションは、カラムが参照されないかどうかを、ＵＩを介してユーザーが指定したプレースホルダ情報ファイルを解析し、どのプレースホルダからも参照されていないかどうかで判断する。より具体的には、本アプリケーションは、全プレースホルダ情報（１３０３、１３０４、１３０５）について、参照先カラム名（図１３では"Ｃｏｌｕｍｎ"プロパティの値）に登場しないカラムを、どのプレースホルダからも参照されないカラムであると判断する。こうすることで、本アプリケーションは、出力するＰＤＦ／ＶＴのデータサイズを抑えることができる。
次に、本アプリケーションは、処理パターン２、処理パターン３の場合は、データソース外部参照型拡張ＰＤＦ／ＶＴのデータ側ファイルを生成する（Ｓ１００５）。この処理については、図１３（ａ）を用いて詳しく後述する。
次に、本アプリケーションは、処理パターン１、処理パターン２の場合は、Ｓ１００２でユーザーにより指定された１レコード分のＰａｇｅオブジェクトを持つＰＤＦファイル８０２のコピーを生成する（Ｓ１００６）。以下、本フローチャートの処理において、この１レコード分のＰａｇｅオブジェクトを持つＰＤＦファイル８０２のコピーを（Ａ）と呼ぶ。
【００２７】
次に、本アプリケーションは、処理パターン１の場合は、Ｓ１００２でユーザーにより指定されたデータソース情報ファイル８０１を基に、データソースの実体を持つデータソースオブジェクトを生成し、Ｓ１００６で生成した（Ａ）に追加する（Ｓ１００７）。この処理は、データソース内部保持型拡張ＰＤＦ／ＶＴの内部構造の模式図である図３（ａ）で示すところの、ＤａｔａＳｏｕｒｃｅオブジェクト３０２を生成することに相当する。また、データソース内部保持型拡張ＰＤＦ／ＶＴのスクリプトの例である図４で示すところの、ＤａｔａＳｏｕｒｃｅオブジェクト４０３を生成することに相当する。例えば、本アプリケーションは、ＵＩを介してユーザーが指定したデータソース情報ファイルが図１（ｂ）の内容であった場合、カラム名１０９、レコードデータ１０５、１０６、１０７、１０８から、図４の記述４０４で表現されるデータ部分を持つＤａｔａＳｏｕｒｃｅオブジェクト４０３を生成する。より具体的には、図１（ｂ）のデータソース１１０は"ｉｄ"、"ｉｍａｇｅ"、"ｔｅｘｔ"の名前のカラムを持つので、本アプリケーションは、ＤａｔａＳｏｕｒｃｅオブジェクト４０３のカラム名部分を"／ＣｏｌｕｍｎＮａｍｅ［（ｉｄ）（ｉｍａｇｅ）（ｔｅｘｔ）］"と記述する。また、図１（ｂ）のデータソース１１０は４つのレコードデータ１０５、１０６、１０７、１０８を持つので、本アプリケーションは、"／Ｄａｔａ"以降の部分で２次元配列を使って４つのレコードデータの内容を記述する。
次に、本アプリケーションは、処理パターン２の場合は、Ｓ１００５で生成した、データソース外部参照型拡張ＰＤＦ／ＶＴのデータ側ファイルへの参照情報を持つＤａｔａＳｏｕｒｃｅオブジェクトを生成し、Ｓ１００６で生成した（Ａ）に追加する（Ｓ１００８）。この処理は、データソース外部参照型拡張ＰＤＦ／ＶＴの内部構造の模式図である図３（ｂ）で示すところの、ＤａｔａＳｏｕｒｃｅオブジェクト３０９を生成することに相当する。また、この処理は、データソース外部参照型拡張ＰＤＦ／ＶＴのスクリプトの例である図５で示すところの、ＤａｔａＳｏｕｒｃｅオブジェクト５０２を生成することに相当する。本アプリケーションは、ＤａｔａＳｏｕｒｃｅオブジェクト５０２の外部ファイルの参照に係る参照情報５０３の"／Ｆ"に続く部分に、Ｓ１００５で生成した、データソース外部参照型拡張ＰＤＦ／ＶＴのデータ側ファイルの名前を記述する。
【００２８】
次に、本アプリケーションは、処理パターン１、処理パターン２の場合は、（Ａ）のＣａｔａｌｏｇオブジェクトが、Ｓ１００７、Ｓ１００８で生成したデータソースオブジェクトを参照するように、Ｃａｔａｌｏｇオブジェクトを編集する（Ｓ１００９）。
この処理は、処理パターン１では、データソース内部保持型拡張ＰＤＦ／ＶＴの内部構造の模式図である図３（ａ）で示すところの、Ｃａｔａｌｏｇオブジェクト３０１に、ＤａｔａＳｏｕｒｃｅオブジェクト３０２への参照情報を記述することに相当する。また、データソース内部保持型拡張ＰＤＦ／ＶＴのスクリプトの例である図４で示すところの、Ｃａｔａｌｏｇオブジェクト４０１に、ＤａｔａＳｏｕｒｃｅオブジェクト４０３を参照することを意味するスクリプトを記述することに相当する。ＤａｔａＳｏｕｒｃｅオブジェクト４０３を参照することを意味するスクリプトとは、"／ＤａｔａＳｏｕｒｃｅ  ２  ０  Ｒ"の部分（参照情報４０２）である。
また、この処理は、処理パターン２では、データソース外部参照型拡張ＰＤＦ／ＶＴの内部構造の模式図である図３（ｂ）で示すところの、Ｃａｔａｌｏｇオブジェクト３１３に、生成したＤａｔａＳｏｕｒｃｅオブジェクト３０９への参照情報を記述することに相当する。また、データソース外部参照型拡張ＰＤＦ／ＶＴのスクリプトの例である図５で示すところの、Ｃａｔａｌｏｇオブジェクト５１２に、ＤａｔａＳｏｕｒｃｅオブジェクト５０２を参照することを意味するスクリプトを記述することに相当する。ＤａｔａＳｏｕｒｃｅオブジェクト５０２を参照することを意味するスクリプトとは、"／ＤａｔａＳｏｕｒｃｅ  ２  ０  Ｒ"の部分（参照情報５１３）である。
次に、本アプリケーションは、処理パターン１、処理パターン２の場合は、（Ａ）にＤＰａｒｔ階層構造を生成する（Ｓ１０１０）。この処理は、より具体的には、図３（ａ）や（ｂ）のＤＰａｒｔ階層構造部分のオブジェクト群を生成することに相当する。
次に、本アプリケーションは、処理パターン１、処理パターン２の場合は、（Ａ）の各Ｐａｇｅオブジェクトにプレースホルダ情報オブジェクトを追加する（Ｓ１０１１）。この処理については、図１３（ｂ）を用いて詳しく後述する。
【００２９】
図１３（ａ）は、Ｓ１００５の処理の一例を示すフローチャートである。
まず、本アプリケーションは、通常のＰＤＦデータ基本部分を生成する（Ｓ１１０１）。ここで、通常のＰＤＦデータ基本部分とは、Ｐａｇｅオブジェクト等のページ情報以外の部分を指すものであり、Ｃａｔａｌｏｇオブジェクト３１１を含む。通常のＰＤＦデータ基本部分はＣａｔａｌｏｇオブジェクト３１１以外にもあるが、この部分の生成については公知の技術で実現可能であるため、詳細な説明を省略する。本アプリケーションは、本実施形態に関係する構成要素として、図３（ｂ）のＣａｔａｌｏｇオブジェクト３１１を生成する。
次に、本アプリケーションは、Ｓ１００２でユーザーにより指定されたデータソース情報ファイル８０１を基に、データソースの実体を持つデータソースオブジェクトを生成し、Ｓ１１０１で生成したＰＤＦデータ基本部分に追加する（Ｓ１１０２）。この処理は、データソース外部参照型拡張ＰＤＦ／ＶＴの内部構造の模式図である図３（ｂ）で示すところの、ＤａｔａＳｏｕｒｃｅオブジェクト３１２を生成することに相当する。また、データソース外部参照型拡張ＰＤＦ／ＶＴのスクリプトの例である図５で示すところの、ＤａｔａＳｏｕｒｃｅオブジェクト５０７を生成することに相当する。図５のＤａｔａＳｏｕｒｃｅオブジェクト５０７の具体的な生成方法は、Ｓ１００７と同様である。
次に、本アプリケーションは、Ｓ１１０１で生成したデータのＣａｔａｌｏｇオブジェクトがＳ１１０２で生成したデータソースオブジェクトを参照するように、Ｃａｔａｌｏｇオブジェクトを編集する（Ｓ１１０３）。この処理は、データソース外部参照型拡張ＰＤＦ／ＶＴの内部構造の模式図である図３（ｂ）で示すところの、Ｃａｔａｌｏｇオブジェクト３１１に、生成したＤａｔａＳｏｕｒｃｅオブジェクト３１２への参照情報を記述することに相当する。また、データソース外部参照型拡張ＰＤＦ／ＶＴのスクリプトの例である図５で示すところの、Ｃａｔａｌｏｇオブジェクト５０５に、ＤａｔａＳｏｕｒｃｅオブジェクト５０７を参照することを意味するスクリプトを記述することに相当する。ＤａｔａＳｏｕｒｃｅオブジェクト５０７を参照することを意味するスクリプトとは、"／ＤａｔａＳｏｕｒｃｅ  ２  ０  Ｒ"の部分（参照情報５０６）である。
【００３０】
図１３（ｂ）は、Ｓ１０１１の処理の一例を示すフローチャートである。
まず、本アプリケーションは、Ｓ１００２でユーザーにより指定されたプレースホルダ情報ファイル８０３を解析し、ページのプレースホルダ情報（１３０１、１３０２）の数、ページ毎のプレースホルダ情報（１３０３、１３０４、１３０５）の数を取得する（Ｓ１１０４）。
次に、本アプリケーションは、ページのプレースホルダ情報（１３０１、１３０２）の数、更にその中で、ページ毎のプレースホルダ情報（１３０３、１３０４、１３０５）の数だけＳ１１０５とＳ１１０６との処理を繰り返す。
次に、本アプリケーションは、Ｓ１００２でユーザーにより指定されたプレースホルダ情報ファイル８０３のプレースホルダ情報（１３０３、１３０４、１３０５）の内容を基に、プレースホルダ情報オブジェクトを生成する（Ｓ１１０５）。この処理は、処理パターン１の場合は、図３（ａ）のＰＨＩｎｆｏオブジェクト３０８を生成することに相当し、図４のスクリプト例においては、ＰＨＩｎｆｏオブジェクト４０７、４０８を生成することに相当する。また、処理パターン２の場合は、図３（ｂ）のＰＨＩｎｆｏオブジェクト３１５を生成することに相当し、図５のスクリプト例においては、ＰＨＩｎｆｏオブジェクト５０９を生成することに相当する。例えば、本アプリケーションは、プレースホルダ情報１３０３を対象とした場合、ＰＨＩｎｆｏオブジェクト４０７のスクリプトを生成する。より具体的には、プレースホルダ情報１３０３では、ＢＢｏｘ＝（２０，１００，５０，８０）であるので、本アプリケーションは、ＰＨＩｎｆｏオブジェクトに"／ＢＢｏｘ［２０，１００，５０，８０］"と記述する。その他の属性情報についても同様である。
【００３１】
次に、本アプリケーションは、対象のＰａｇｅオブジェクトがＳ１１０５で生成したプレースホルダ情報オブジェクトを参照するようにＰａｇｅオブジェクトを編集する（Ｓ１１０６）。この処理は、処理パターン１の場合は、図３（ａ）のＰａｇｅオブジェクト３０７に、Ｓ１１０５で生成したＰＨＩｎｆｏオブジェクト３０８への参照情報を記述することに相当する。図４のスクリプト例においては、Ｐａｇｅオブジェクト４０５に、Ｓ１１０５で生成したＰＨＩｎｆｏオブジェクト４０７、４０８への参照情報４０６を記述することに相当する。また、処理パターン２の場合は、図３（ｂ）のＰａｇｅオブジェクト３１４に、Ｓ１１０５で生成したＰＨＩｎｆｏオブジェクト３１５への参照情報を記述することに相当する。図５のスクリプト例においては、Ｐａｇｅオブジェクト５１０に、Ｓ１１０５で生成したＰＨＩｎｆｏオブジェクト５０９への参照情報５１１を記述することに相当する。
【００３２】
ここまでの説明では、本アプリケーションが、図１０のＳ１００１で処理パターンを分けることで１つのアプリケーションで３つの異なる処理を可能にしている。しかし、クライアントＰＣ６０２は、Ｓ１００１より後の３つの各パターンにおける処理を実行する３つの独立したアプリケーションを有する構成でもよい。これは、クライアントＰＣ６０２が上述のように独立したアプリケーションを有する形態であっても、拡張ＰＤＦ／ＶＴを出力することができるので、拡張ＰＤＦ／ＶＴの、通常のＰＤＦ／ＶＴに対するデータ量の削減効果が失われることはないためである。
また、ここまでの説明では、本アプリケーションが、ＵＩを介してファイル８０１、８０２、８０３を指定する入力をユーザーから受け付け、その指定に応じて取得したファイル８０１、８０２、８０３に基づいて拡張ＰＤＦ／ＶＴを出力するものとして説明した。しかし、本アプリケーションが、拡張ＰＤＦ／ＶＴを出力するためのデータをファイルとして取得しない実施形態も可能である。例えば、本アプリケーションが、テンプレートのレイアウト編集、プレースホルダ情報やデータソースを生成するための入力を受け付けるＵＩを表示するようにする。そして、ユーザーは、表示されたＵＩを介して、テンプレートのレイアウト編集、プレースホルダ、データソースに関する情報を入力する。これにより、本アプリケーションは、ＵＩを介してユーザーにより入力された情報に基づいて、ファイル８０１、８０２、８０３を生成することがでる。即ち、クライアントＰＣ６０２は、自装置でファイル８０１、８０２、８０３を生成し、拡張ＰＤＦ／ＶＴを出力することができる。
以上、本実施形態によれば、クライアントＰＣ６０２は、バリアブルデータ印刷において、レコード数が多い場合でも印刷データのデータ量を抑えることが可能な拡張ＰＤＦ／ＶＴを生成して出力することができる。
【００３３】
＜実施形態２＞
（拡張ＰＤＦ／ＶＴを解析するアプリケーションの動作）
実施形態２では、プリントサーバー６０３で拡張ＰＤＦ／ＶＴを解析する処理を実行するアプリケーションについて説明する。
図１４は、プリントサーバー６０３内の拡張ＰＤＦ／ＶＴを解析するアプリケーション（以下、実施形態２では「本アプリケーション」と呼ぶ）の処理の概要の一例を示す図である。
本アプリケーションは、データソース内部保持型拡張ＰＤＦ／ＶＴ１４０１、又はデータソース外部参照型拡張ＰＤＦ／ＶＴの本体側１４０２を入力として受け付ける。そして、本アプリケーションは、拡張ＰＤＦ／ＶＴのインスタンス化を行い、レコード毎にＰＤＦ／ＶＴ１４０３を生成し、更に生成したＰＤＦ／ＶＴ１４０３を解析し、印刷コマンドを生成してプリンタへ送信する。
図１５は、本アプリケーションにおける入力データと出力のデータとの関係の一例を示す図である。
本アプリケーションでは、ユーザーから受け付ける入力の拡張ＰＤＦ／ＶＴの種類（１４０１、１４０２）によって、処理のパターンが２つに分かれる。
「処理パターン１」では、本アプリケーションは、データソース内部保持型拡張ＰＤＦ／ＶＴ１４０１を入力とし、印刷コマンドを出力する。
「処理パターン２」では、本アプリケーションは、データソース外部参照型拡張ＰＤＦ／ＶＴの本体側１４０２を入力とし、印刷コマンドを出力する。
本アプリケーションは、どちらの処理パターンになるかを、ユーザーから受け付ける入力の拡張ＰＤＦ／ＶＴを解析し、データソース内部保持型拡張ＰＤＦ／ＶＴ１４０１であるかデータソース外部参照型拡張ＰＤＦ／ＶＴ１４０２であるかを識別することによって決定する。
【００３４】
図１６のフローチャートを用いて、本アプリケーションの処理の流れを説明する。図１６は、本実施形態におけるプリントサーバー６０３が実行する処理の一例を示すフローチャートである。
まず、本アプリケーションは、図１７に示されるＵＩを表示して、ユーザーから拡張ＰＤＦ／ＶＴ１４０１、１４０２の指定に係る入力を受け付ける（Ｓ１６０１）。図１７（ａ）は、このときに本アプリケーションが表示するＵＩの一例を示す図である。本アプリケーションは、図１７（ａ）に示されるＵＩを介して、ユーザーから拡張ＰＤＦ／ＶＴファイルを指定する入力を受け付けることができる。
次に、本アプリケーションは、Ｓ１６０１でユーザーにより指定された拡張ＰＤＦ／ＶＴを解析し、データソース内部保持型拡張ＰＤＦ／ＶＴか、データソース外部参照型拡張ＰＤＦ／ＶＴかを判別する（Ｓ１６０２）。本アプリケーションは、Ｓ１６０２での判別を、拡張ＰＤＦ／ＶＴのＤａｔａＳｏｕｒｃｅオブジェクトを解析し、データソースの実体が存在するか、外部ファイルへの参照情報が記述されているかを検査することで行う。より具体的には、拡張ＰＤＦ／ＶＴの内部構造の模式図である図３（ａ）の場合、本アプリケーションが、ＤａｔａＳｏｕｒｃｅオブジェクト３０２を解析してデータソースの実体３０３が存在するかを検査することに相当する。また、図３（ｂ）の場合、本アプリケーションが、ＤａｔａＳｏｕｒｃｅオブジェクト３０９を解析し、外部ファイルであるデータ側ファイル３１０への参照情報が存在するかを検査することに相当する。また、スクリプトの例である図４においては、本アプリケーションが、ＤａｔａＳｏｕｒｃｅオブジェクト４０３を解析し、データソースの実体部分の記述４０４が存在するかを検査することに相当する。また、スクリプトの例である図５においては、本アプリケーションが、ＤａｔａＳｏｕｒｃｅオブジェクト５０２を解析し、外部ファイルへの参照情報５０３が存在するかを検査することに相当する。
【００３５】
図１６の説明に戻る。
次に、本アプリケーションは、Ｓ１６０２での判別の結果、データソース内部保持型拡張ＰＤＦ／ＶＴであった場合は、Ｓ１６０３の処理を行い、データソース外部参照型拡張ＰＤＦ／ＶＴであった場合は、Ｓ１６０４、Ｓ１６０５、Ｓ１６０６の処理を行う。
Ｓ１６０３で、本アプリケーションは、拡張ＰＤＦ／ＶＴからデータソースの実体部分をＲＡＭ７０２に抽出する。この処理は、図４のスクリプト例においては、ＤａｔａＳｏｕｒｃｅオブジェクト４０３からデータの実体部分（記述４０４）を抽出し、ＲＡＭ７０２に内部データとして保存することに相当する。
Ｓ１６０４で、本アプリケーションは、データソース外部参照型拡張ＰＤＦ／ＶＴであった場合は、データ側のデータソース外部参照型拡張ＰＤＦ／ＶＴのファイル名を特定する。この処理は、図５のスクリプト例においては、本体側ファイルのＤａｔａＳｏｕｒｃｅオブジェクト５０２の参照情報５０３から、ＤａｔａＳｏｕｒｃｅオブジェクト５０２が参照しているファイル名を取得することに相当する。
Ｓ１６０５で、本アプリケーションは、ＵＩを表示して、ユーザーからの処理開始指示を待つ。ただし、Ｓ１６０５の処理は必須の処理ではない。この処理は、ユーザーがデータ側のデータソース外部参照型拡張ＰＤＦ／ＶＴを準備するための処理であるが、例えば、ユーザーがＳ１６０１の処理の際に予めデータ側ファイルを準備することを前提とした処理フローであればＳ１６０５の処理は不要である。
図１７（ｂ）は、Ｓ１６０５で表示されるＵＩの一例を示す図である。図１７（ｂ）のＵＩは、ユーザーにデータ側のデータソース外部参照型拡張ＰＤＦ／ＶＴのファイル名を示し、ユーザーがそのファイルの準備をした後、ユーザーから処理開始の指示を受け付けることができる。ユーザーは、図１７（ｂ）のＵＩが表示された後、もしデータソースを差し替えたい場合は、新たなデータ側のデータソース外部参照型拡張ＰＤＦ／ＶＴを準備し、図１７（ｂ）のＵＩで処理開始を指示すればよい。
【００３６】
図１６の説明に戻る。
Ｓ１６０６で、本アプリケーションは、データソース外部参照型拡張ＰＤＦ／ＶＴであった場合は、更にＳ１６０５の後、データ側のデータソース外部参照型拡張ＰＤＦ／ＶＴからデータソースの実体部分をＲＡＭ７０２に抽出する。この処理は、図５のスクリプト例においては、データ側ファイルのＤａｔａＳｏｕｒｃｅオブジェクト５０７からデータの実体部分（記述５０８）を抽出し、ＲＡＭ７０２に内部データとして保存することに相当する。
次に、本アプリケーションは、Ｓ１６０１でユーザーにより指定された拡張ＰＤＦ／ＶＴのテンプレート部分と、ＲＡＭ７０２に抽出したデータソース部分とから、レコード毎にＰＤＦ／ＶＴを生成し解析する（Ｓ１６０７）。Ｓ１６０７の処理については、図１８を用いて詳しく後述する。
図１８（ａ）は、Ｓ１６０７の処理の一例を示すフローチャートである。
まず、本アプリケーションは、Ｓ１６０１でユーザーにより指定された拡張ＰＤＦ／ＶＴのコピーを生成する（Ｓ１７０１）。これは、データソース内部保持型ＰＤＦ／ＶＴの場合、本アプリケーションが、図３（ａ）と同じ構造のデータをＲＡＭ７０２に内部データとして生成することに相当する。また、データソース外部参照型ＰＤＦ／ＶＴの場合、本アプリケーションが、図３（ｂ）の本体側３１６と同じ構造のデータをＲＡＭ７０２に内部データとして生成することに相当する。
【００３７】
次に、本アプリケーションは、Ｓ１６０３又はＳ１６０６でＲＡＭ７０２に抽出したデータソースから、１レコード分のデータを読み込む（Ｓ１７０２）。これは例えば、図４のスクリプトの例では、本アプリケーションが、ＲＡＭ７０２に抽出したデータソース部分（記述４０４）から、１行分のデータ配列を読み取ることに相当する。１行分のデータ配列とは、例えば１つ目のレコードでは３つの文字列"００１"と"ａ．ｊｐｅｇ"と"あああ"とを要素とする配列のことである。
次に、本アプリケーションは、Ｓ１７０１で生成した拡張ＰＤＦ／ＶＴのコピーの各ページのプレースホルダオブジェクトを、Ｓ１７０２で読み込んだレコードデータでインスタンス化して１レコード分のＰＤＦ／ＶＴを生成し、これを解析する（Ｓ１７０３）。Ｓ１７０３の処理については、図１８（ｂ）を用いて詳しく後述する。
本アプリケーションは、Ｓ１７０１からＳ１７０３までの処理を、ＲＡＭに抽出したデータソースのレコードの数だけ繰り返す。
【００３８】
図１８（ｂ）は、Ｓ１７０３の処理の一例を示すフローチャートである。
本アプリケーションは、１レコード分の各ページ、更にその各ページの中の各プレースホルダオブジェクトについて、プレースホルダオブジェクトを前記レコードのレコードデータでインスタンス化する（Ｓ１７０４）。より具体的には、本アプリケーションは、プレースホルダオブジェクトに記述されているインスタンス化のための情報を読み取り、これにしたがって、プレースホルダオブジェクトを、通常の描画オブジェクトに置き換えることでインスタンス化を行う。プレースホルダオブジェクトに記述されているインスタンス化のための情報とは、具体的にはイメージやテキスト等、オブジェクトのタイプや、データソースの対象カラム等である。例えば、図４のスクリプト例におけるＰＨＩｎｆｏオブジェクト４０７では、オブジェクトタイプはイメージ（"／ＯｂｊｅｃｔＴｙｐｅ  ＩＭＡＧＥ"）で、データソースの対象カラムは"ｉｍａｇｅ"（／Ｃｏｌｕｍｎ  ｉｍａｇｅ）である。そして、本アプリケーションは、これらの情報から、データソースの"ｉｍａｇｅ"カラムを読み取り、１レコード目であれば、"ａ．ｊｐｅｇ"という名前のファイルに記述されたイメージを、描画オブジェクトとしてＰＨＩｎｆｏオブジェクト４０７から置き換える。本アプリケーションが、１レコード分の全てのページの全てのプレースホルダをインスタンス化すると、それが１レコード分のＰＤＦ／ＶＴとなる。
次に、本アプリケーションは、出来上がった１レコード分のＰＤＦ／ＶＴを解析し、印刷コマンドを生成する（Ｓ１７０５）。１レコード分のＰＤＦ／ＶＴの解析処理については、公知の技術であるため説明を省略する。
以上の処理により、プリントサーバー６０３は、拡張ＰＤＦ／ＶＴから１レコード分のＰＤＦ／ＶＴを生成することができる。即ち、プリントサーバー６０３は、レコード毎にＰＤＦ／ＶＴを生成し、印刷コマンドを生成することができる。そして、プリントサーバー６０３は生成した印刷コマンドをプリンタ６０４へ送信することで、印刷物を生成することができる。
【００３９】
ここまでの説明では、本アプリケーションが、拡張ＰＤＦ／ＶＴからレコード毎のＰＤＦ／ＶＴをいったん生成してから解析しているが、拡張ＰＤＦ／ＶＴを直接解析することも可能である。この場合、本アプリケーションは、Ｓ１７０４でプレースホルダをインスタンス化した直後に、インスタンス化した描画オブジェクトの解析を行い、解析結果である印刷コマンドを逐次出力すればよい。
また、拡張ＰＤＦ／ＶＴを解析する本アプリケーションは、印刷コマンドを出力するだけではなく、解析結果の画像をディスプレイ７０５に表示したり、別のＰＤＬへ変換したりするようにしてもよい。
また、本アプリケーションが、Ｓ１６０１の処理において、外部参照型拡張ＰＤＦ／ＶＴを受け付ける場合は、本体側だけを受け付けるのではなく、本体側とデータ側とのセットを受け付け、Ｓ１６０５の処理を省略する実施形態も可能である。
【００４０】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００４１】
以上、上述した各実施形態によれば、バリアブルデータ印刷において、レコード数が多い場合でも印刷データのデータ量を抑えることができる。
【００４２】
以上、本発明の好ましい形態について詳述したが、本実施形態は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図１】
2015197826.tif 000003
【図２】
2015197826.tif 000004
【図３】
2015197826.tif 000005
【図４】
2015197826.tif 000006
【図５】
2015197826.tif 000007
【図６】
2015197826.tif 000008
【図７】
2015197826.tif 000009
【図８】
2015197826.tif 000010
【図９】
2015197826.tif 000011
【図１０】
2015197826.tif 000012
【図１１】
2015197826.tif 000013
【図１２】
2015197826.tif 000014
【図１３】
2015197826.tif 000015
【図１４】
2015197826.tif 000016
【図１５】
2015197826.tif 000017
【図１６】
2015197826.tif 000018
【図１７】
2015197826.tif 000019
【図１８】
2015197826.tif 000020