(57)【要約】【課題】  処理の要求先を振り分けるためのプログラム等を提供すること。【解決手段】  本プログラムは、コンピュータを、処理の要求元２１４からの能力問い合わせに対し、所定の能力を応答するするとともに、要求元２１４からの、応答した所定の能力に応じた形式の処理要求に基づいて、第１の情報２３４を生成する第１の情報生成手段２１８と、上記処理要求に含まれる第２の情報に基づいて、処理要求の要求先を決定する要求先決定手段２４４と、決定された要求先に対応する機器制御手段２６０，７０各々それぞれに対し、各々の能力を問い合わせる能力問い合わせ手段２４６と、応答された各々の能力に基づいて、各々の能力に対応する第１の情報２３４の改変が必要か否かを判断する判断手段２４２と、改変が必要と判断された機器制御手段（２６０／２７０）に対する第１の情報２３４の改変を実行する改変実行手段２４８として機能させる。【選択図】  図３
2015055973.tif 000002
【特許請求の範囲】
【請求項１】
所定の処理を実行する機器に対応する機器制御手段を少なくとも１つ有するコンピュータを、
前記処理の要求元からの能力問い合わせに対し、所定の能力を応答する能力応答手段と、
前記要求元からの、前記能力応答手段によって応答した所定の能力に応じた形式の処理要求に基づいて、第１の情報を生成する第１の情報生成手段と、
前記処理要求に含まれる第２の情報に基づいて、前記処理要求の要求先を決定する要求先決定手段と、
前記要求先決定手段によって決定された要求先に対応する機器制御手段各々それぞれに対し、各々の能力を問い合わせる能力問い合わせ手段と、
前記能力問い合わせ手段によって応答された前記各々の能力に基づいて、各々の能力に対応する前記第１の情報の改変が必要か否かを判断する判断手段と、
前記判断手段により能力に対応する前記第１の情報の改変が必要と判断された機器制御手段に対する前記第１の情報の改変を実行する改変実行手段
として機能させるためのプログラム。
【請求項２】
前記改変実行手段は、前記第１の情報の改変として、前記第１の情報中の所定の内容を、代替する内容に変更することを特徴とし、前記プログラムは、前記コンピュータを、さらに、
前記判断手段により前記第１の情報の改変が必要と判断された機器制御手段に対し、前記改変実行手段により改変された第１の情報に基づき印刷要求を行う要求手段
として機能させる、請求項１に記載のプログラム。
【請求項３】
前記第１の情報は、グラフィックス言語で記述されたデータであり、前記第１の情報中の所定の内容は、所定描画オブジェクトの第１の画像に対し１以上の論理演算を行って描画するという特定コマンド群であり、前記代替する内容は、前記所定描画オブジェクトの第１の画像に１以上の論理演算が行われた結果として与えられる第２の画像を描画するという代替コマンド群である、請求項２に記載のプログラム。
【請求項４】
前記改変実行手段は、前記第１の情報の改変として、前記判断手段により前記第１の情報の改変が必要ではないと判断された機器制御手段に対し、前記第１の情報生成手段により生成された前記第１の情報に基づくデータ出力を要求することを特徴とし、前記プログラムは、前記コンピュータを、さらに、
前記判断手段により前記第１の情報の改変が必要と判断された機器制御手段に対し、前記第１の情報の改変が必要ではないと判断された機器制御手段により出力された出力データに基づき印刷要求を行う要求手段
として機能させる、請求項１に記載のプログラム。
【請求項５】
前記コンピュータを、さらに、
前記判断手段により前記第１の情報の改変が必要ではないと判断された機器制御手段の出力ポートを変更する手段、および
前記判断手段により前記第１の情報の改変が必要ではないと判断された機器制御手段から、前記変更する手段により変更された出力ポートを介して出力される出力データの完了を待ち合わせる手段
としてさらに機能させる、請求項４に記載のプログラム。
【請求項６】
前記コンピュータを、さらに、
前記要求先決定手段により決定された要求先の機器制御手段の出力順序を、前記判断手段により前記第１の情報の改変が必要ではないと判断された機器制御手段を優先させるように決定する出力順序決定手段
としてさらに機能させる、請求項４または５に記載のプログラム。
【請求項７】
前記能力応答手段および前記第１の情報生成手段は、仮想プリンタドライバ手段として提供され、前記能力問い合わせ手段、前記判断手段および前記改変実行手段は、前記仮想プリンタドライバ手段とは別プロセスで動作する発送処理手段として提供される、請求項１〜６のいずれか１項に記載のプログラム。
【請求項８】
所定の処理を実行する機器に対応する機器制御手段を少なくとも１つ有する情報処理装置であって、
前記処理の要求元からの能力問い合わせに対し、所定の能力を応答する能力応答手段と、
前記要求元からの、前記能力応答手段によって応答した所定の能力に応じた形式の処理要求に基づいて、第１の情報を生成する第１の情報生成手段と、
前記処理要求に含まれる第２の情報に基づいて、前記処理要求の要求先を決定する要求先決定手段と、
前記要求先決定手段によって決定された要求先に対応する機器制御手段各々それぞれに対し、各々の能力を問い合わせる能力問い合わせ手段と、
前記能力問い合わせ手段によって応答された前記各々の能力に基づいて、各々の能力に対応する前記第１の情報の改変が必要か否かを判断する判断手段と、
前記判断手段により能力に対応する前記第１の情報の改変が必要と判断された機器制御手段に対する前記第１の情報の改変を実行する改変実行手段と
を含む情報処理装置。
【請求項９】
処理を振り分けるシステムであって、
所定の処理を実行する機器に対応する少なくとも１つの機器制御手段と、
前記処理の要求元からの能力問い合わせに対し、所定の能力を応答する能力応答手段と、
前記要求元からの、前記能力応答手段によって応答した所定の能力に応じた形式の処理要求に基づいて、第１の情報を生成する第１の情報生成手段と、
前記処理要求に含まれる第２の情報に基づいて、前記処理要求の要求先を決定する要求先決定手段と、
前記要求先決定手段によって決定された要求先に対応する機器制御手段各々それぞれに対し、各々の能力を問い合わせる能力問い合わせ手段と、
前記能力問い合わせ手段によって応答された前記各々の能力に基づいて、各々の能力に対応する前記第１の情報の改変が必要か否かを判断する判断手段と、
前記判断手段により能力に対応する前記第１の情報の改変が必要と判断された機器制御手段に対する前記第１の情報の改変を実行する改変実行手段と
を含むシステム。
【請求項１０】
所定の処理を実行する機器に対応する機器制御手段を少なくとも１つ有するコンピュータを、
前記処理の要求元からの所定の能力に応じた形式の処理要求に含まれる第１の情報に基づいて、前記処理要求の要求先を決定する要求先決定手段と、
前記要求先決定手段によって決定された要求先に対応する機器制御手段各々それぞれに対し、各々の能力を問い合わせる能力問い合わせ手段と、
前記能力問い合わせ手段によって応答された前記各々の能力に基づいて、各々の能力に対応する、前記処理要求に基づいて生成された第２の情報の改変が必要か否かを判断する判断手段と、
前記判断手段により能力に対応する前記第２の情報の改変が必要と判断された機器制御手段に対する前記第２の情報の改変を実行する改変実行手段
として機能させるためのプログラム。
【請求項１１】
所定の処理を実行する機器に対応する機器制御手段を少なくとも１つ有するコンピュータが実行する情報処理方法であって、コンピュータが、
前記処理の要求元からの能力問い合わせを受けるステップと、
前記能力問い合わせに対し所定の能力を応答する能力応答ステップと、
前記要求元からの、前記能力応答ステップで応答した所定の能力に応じた形式の処理要求に基づいて、第１の情報を生成する第１の情報生成ステップと、
前記処理要求に含まれる第２の情報に基づいて、前記処理要求の要求先を決定する要求先決定ステップと、
前記要求先決定ステップで決定された要求先に対応する機器制御手段各々それぞれに対し、各々の能力を問い合わせる問い合わせステップと、
前記問い合わせステップで応答された前記各々の能力に基づいて、各々の能力に対応する前記第１の情報の改変が必要か否かを判断する判断ステップと、
前記判断ステップで能力に対応する前記第１の情報の改変が必要と判断された機器制御手段に対する前記第１の情報の改変を実行するステップと
を実行することを含む、情報処理方法。
【請求項１２】
前記コンピュータが、さらに、
前記第１の情報の改変として、前記第１の情報中の所定の内容を、代替する内容に変更するステップと、
前記判断ステップで前記第１の情報の改変が必要と判断された機器制御手段に対し、前記変更するステップで変更された第１の情報に基づき印刷要求を行うステップと
を実行することを含む、請求項１１に記載の情報処理方法。
【請求項１３】
前記コンピュータが、さらに、
前記第１の情報の改変として、前記判断ステップで前記第１の情報の改変が必要ではないと判断された機器制御手段に対し、前記第１の情報生成ステップで生成された前記第１の情報に基づくデータ出力を要求するステップと、
前記判断ステップで前記第１の情報の改変が必要と判断された機器制御手段に対し、前記判断ステップで前記第１の情報の改変が必要ではないと判断された機器制御手段が出力した出力データに基づき印刷要求を行うステップと
を実行することを含む、請求項１１に記載の情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジョブ処理技術に関し、より詳細には、処理の要求先を振り分けるためのプログラム、情報処理装置、システムおよび情報処理方法に関する。
【背景技術】
【０００２】
近年のオフィス環境においては、ＭＦＰ(Multi-Function Peripheral)、レーザプリンタ、プリントサーバなどがネットワークに接続され、複数の画像形成装置が利用可能とされていることが多い。このような複数のロケーションから複数の画像形成装置が利用可能な環境において、印刷要求元のコンピュータ固有の情報等に従って出力先を決定し、決定された出力先の画像形成装置で印刷を実行する、振り分け印刷システムが知られている（特許文献１：特開２０１０−１５７２０８号公報）。
【０００３】
また、近年、アプリケーション固有の電子文書を紙媒体として画像形成装置から印刷出力させると同時に、ＰＤＦ（Portable Document Format）のフォーマットで文書ファイルを作成し、保管しておきたいという要望がある。このような、要望に応えるためには、図１１に示すような振り分け印刷システム５００を構成することが考えられる。図１１に示す振り分け印刷システム５００では、アプリケーション５１０からの仮想プリンタドライバ５２０に対する印刷要求に応答して、所定のプリンタ５０２での印刷出力と、電子化ドライバ５０６による保存領域５０８へのＰＤＦ文書の保存とを同時に行うことができる。
【０００４】
しかしながら、仮想プリンタドライバから複数のドライバ５０２，５０６に対して印刷依頼を行う場合、振り分け印刷システムでは、すべてのドライバ５０２，５０６で正しい結果が得られないケースが想定される。
【０００５】
仮想プリンタドライバ５２０は、仮想的なプリンタドライバとして、アプリケーション５１０が作成するデータを受け取り、そのデータに基づいて出力先を決定し、そのデータを実プリンタドライバ５０２，５０６に送信する。アプリケーション５１０は、印刷の際に、印刷先のプリンタドライバに印刷可能な設定や送り方を問い合わせ、それに適合させてデータ作成方法を変更しながら、データを作成し印刷を行っている。上述したような振り分け印刷システム５００では、アプリケーション５１０側からの視点では、印刷対象は、実プリンタドライバ５０２，５０６ではなく、仮想プリンタドライバのみであるため、この仮想プリンタドライバに対し、印刷可能な設定や送り方を問い合わせ、それに適合する形で印刷を行うことになる。
【０００６】
しかしながら、仮想プリンタドライバ５２０は、アプリケーション５１０からの問い合わせに応答して回答を行うが、実ドライバがサポートしている機能に則して回答するものではない。一方で、アプリケーション５１０は、回答された情報に基づいてデータを作成する他はない。そのため、仮想プリンタドライバ５２０からアプリケーション５１０へ伝達された情報に基づいて作成されるアプリケーション・データは、複数の出力先が決定された場合、出力先として決定された複数のうちの一方のプリンタドライバでは正しく印刷されるものの、他方のプリンタドライバでは、その機能に対応しておらず、正しく印刷されないというケースが発生し得る。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、上記従来技術における不充分な点に鑑みてなされたものであり、本発明は、要求元からの処理要求に応答して、能力に差異がある機器制御手段に振り分ける場合において、機器制御手段の能力に対応する処理結果を得ることができるプログラム、情報処理装置、システムおよび情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、上記課題を解決するために、下記特徴を有するプログラムを提供する。本プログラムは、所定の処理を実行する機器に対応する機器制御手段を少なくとも１つ有するコンピュータを、処理の要求元からの能力問い合わせに対し、所定の能力を応答する能力応答手段と、上記要求元からの、能力応答手段によって応答した所定の能力に応じた形式の処理要求に基づいて、第１の情報を生成する第１の情報生成手段と、上記処理要求に含まれる第２の情報に基づいて、上記処理要求の要求先を決定する要求先決定手段と、要求先決定手段によって決定された要求先に対応する機器制御手段各々それぞれに対し、各々の能力を問い合わせる能力問い合わせ手段と、能力問い合わせ手段によって応答された各々の能力に基づいて、各々の能力に対応する第１の情報の改変が必要か否かを判断する判断手段と、判断手段により能力に対応する第１の情報の改変が必要と判断された機器制御手段に対する第１の情報の改変を実行する改変実行手段として機能させる。
【発明の効果】
【０００９】
上記構成により、要求元からの処理要求に応答して、能力に差異がある機器制御手段に振り分ける場合において、機器制御手段の能力に対応する処理結果を得ることができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態によるデータ処理装置を含み構成されるプリンタネットワークのネットワーク環境図。
【図２】第１の実施形態によるデータ処理装置のハードウェア構成図。
【図３】第１の実施形態によるデータ処理装置の機能ブロック図。
【図４】第１の実施形態による出力先決定部が参照する出力先定義ファイルのデータ構造を示す図。
【図５】第１の実施形態によるデータ処理装置が実行する印刷振り分け処理を示すシーケンス図。
【図６】（Ａ）アプリケーションが生成するコマンド群および（Ｂ）その代替コマンド群を例示する図。
【図７】ExtEscape関数の構文を説明する図。
【図８】第２の実施形態によるデータ処理装置の機能ブロック図。
【図９】第２の実施形態によるデータ処理装置が実行する印刷振り分け処理を示すシーケンス図。
【図１０】第２の実施形態による（Ａ）出力先定義ファイルおよび（Ｂ）能力問い合わせ結果のデータ構造を示す図。
【図１１】典型的な振り分け印刷システムを説明する図。
【発明を実施するための形態】
【００１１】
以下、本実施形態をもって説明するが、本実施形態は、後述する実施形態に限定されるものではない。
【００１２】
［第１の実施形態］
図１は、第１の実施形態による振り分け印刷システム１００のネットワーク環境を示す図である。振り分け印刷システム１００は、オフィスなどに配置される複数のクライアント１１２，１１４，１１６，１１８と、ＭＦＰ（Multi-Function peripheral）１２２、レーザプリンタ１２４，１２６、インクジェットプリンタ１２８などのリモートプリンタと、これらの間で、クライアント１１２〜１１８からのプリントジョブを、リモートプリンタ１２４〜１２８に振り分けるデータ処理装置１１０とを含み構成されている。以下、上記ＭＦＰ１２２およびプリンタ１２４〜１２８を、以下、リモートプリンタとして総称する。
【００１３】
上記データ処理装置１１０、クライアント１１２〜１１８およびリモートプリンタ１２２〜１２８は、ネットワーク１３０を介して、ＴＣＰ／ＩＰプロトコルに基づくパケット通信により相互に通信を行っている。上記ネットワーク１３０は、特に限定されるものではないが、１０００Ｂａｓｅ−ＴＸのイーサネット（登録商標）などの有線ネットワーク、ＩＥＥＥ８０２．１１などの規格の無線ネットワークを含んで構成することができる。
【００１４】
本実施形態によるデータ処理装置１１０は、クライアント１１２〜１１８からの印刷要求に応答して、各種条件に従って、またはユーザとの対話を通じて、印刷データの出力先（ジョブの要求先）を決定する。本データ処理装置１１０は、所定のリモートプリンタを出力先に決定すると、決定された出力先のリモートプリンタに対応するプリンタドライバを呼び出し、該リモートプリンタに対して印刷データを発送する。本データ処理装置１１０は、さらに、電子化出力ポートを出力先に決定すると、電子化ドライバを呼び出し、電子化文書ファイルを出力させる。電子化文書ファイルは、データ処理装置１１０が備えるファイル・システム内、システム内の他の装置が備える共有フォルダ、またはネットワーク上のデータベースやオンライン・ストレージなどに出力される。
【００１５】
出力先として決定されるリモートプリンタは、例えば、クライアント１１２〜１１８に対応付けて決定することができる。図１中、点線で囲まれた領域１４０，１５０，１６０は、同一のロケーションと見なされる拠点を表している。本振り分け印刷システム１００においては、例えば、ユーザは、使用するクライアントが設置された同一のロケーション、または近隣のロケーションに配置されたリモートプリンタにて、印刷出力を行わせることができる。
【００１６】
図２は、第１の実施形態によるデータ処理装置１１０のハードウェア構成を示す図である。データ処理装置１１０は、マイクロプロセッサ・ユニット（ＭＰＵ）１２と、ＢＩＯＳ（Basic Input Output System）を格納する不揮発性メモリ１４と、ＭＰＵ１２によるプログラム処理を可能とする実行記憶空間を提供するメモリ１６とを含む。ＭＰＵ１２は、起動時に、不揮発性メモリ１４からＢＩＯＳを読み出し、システム診断を行うとともに入出力装置２６の管理を行う。
【００１７】
ＭＰＵ１２は、内部バス２２を介して記憶制御用インタフェース１８に接続され、ハード・ディスク・ドライブ（ＨＤＤ）２０が、ＭＰＵ１２からの入出力要求に応答してデータの書き込みまたは読み出しを実行する。記憶制御用インタフェース１８としては、ＩＤＥ（Integrated Device Electronics）、ＡＴＡ（AT Attachment）、ＳＡＴＡ、ｅＳＡＴＡなどの規格により、ＨＤＤ２０の入出力を管理するインタフェースを使用することができる。ＭＰＵ１２は、内部バス２２を介してＵＳＢ、ＩＥＥＥ１１６４などのシリアルまたはパラレル・インタフェース２４を制御して、キーボード、マウス、プリンタなどの入出力装置２６と通信し、ユーザからの入力を受け取る。
【００１８】
データ処理装置１１０は、さらにＶＲＡＭ２８とグラフィック・チップ３０とを含むことができる。グラフィック・チップ３０は、ＭＰＵ１２からの指令に応答してビデオ信号を処理し、ディスプレイ装置３２へと表示させている。ＭＰＵ１２は、また、内部バス２２を介してネットワークＩ／Ｆ（ＮＩＣ；Network Interface Card）３４と接続する。これにより、データ処理装置１１０を、ネットワーク１３０を通して、クライアント１１２〜１１８およびリモートプリンタ１２２〜１２８などの外部装置と通信させている。
【００１９】
データ処理装置１１０は、不揮発性メモリ１４やＨＤＤ２０、その他ＮＶ−ＲＡＭ（図示せず）やＳＤカード（図示せず）などの記憶装置に格納されたプログラム（図示せず）を読み出し、メモリ１６のメモリ領域に展開する。これにより、データ処理装置１１０は、適切なオペレーティング・システム（ＯＳ）の下で、後述する各機能手段および各処理を実現する。上記ＯＳとしては、典型的には、Ｗｉｎｄｏｗｓ（登録商標）を採用することができるが、ＵＮＩＸ（登録商標）またはＬＩＮＵＸ（登録商標）など、如何なるアーキテクチャを有するＯＳを採用してもよい。
【００２０】
クライアント１１２〜１１８は、パーソナル・コンピュータやワークステーションなどの汎用コンピュータ、またはタブレット・コンピュータ、スマートフォン、ＰＤＡ（Personal Digital Assistance）などの携帯情報端末として構成することができる。詳細な説明は割愛するが、本実施形態のクライアント１１２〜１１８についても、図２に示すハードウェア構成と同様の構成とすることができる。
【００２１】
以下、図３〜図７を参照しながら、第１の実施形態による印刷振り分け処理について説明する。図３は、第１の実施形態によるデータ処理装置１１０の機能ブロックを示す図である。
【００２２】
データ処理装置１１０は、アプリケーション２１４と、仮想プリンタドライバ２１８と、発送処理部２４０と、１以上のプリンタドライバ２６０と、電子化ドライバ２７０とを含み構成される。アプリケーション２１４は、ワードプロセッサ、スプレッドシート、プレゼンテーションなどの特定の用途に応じたアプリケーションである。アプリケーション２１４は、ネットワーク１３０を介してデータ処理装置１１０にアクセスするクライアント１１２〜１１８からの操作に応答して、各種処理を実行することができる。
【００２３】
説明する実施形態において、データ処理装置１１０は、ターミナル・サービスを提供しており、クライアント１１２〜１１８は、いわゆるシンクライアントとして構成されている。データ処理装置１１０とクライアント１１２〜１１８との間は、ＲＤＰ（Remote Desktop Protocol）などの適切な遠隔接続プロトコルを使用してトランザクションが可能とされている。
【００２４】
アプリケーション２１４において、仮想プリンタドライバ２１８を指定して、電子文書の印刷要求が行われると、ＧＤＩ（Graphics Device Interface）などのＡＰＩ（Application Programming Interface）コールを経て、プリントジョブが生成される。生成されたジョブデータは、仮想プリンタドライバ２１８に渡される。
【００２５】
仮想プリンタドライバ２１８は、アプリケーション２１４からの印刷要求にかかる呼び出しに対応して、ジョブデータを受領して、印刷要求にかかる処理を開始させる。仮想プリンタドライバ２１８は、受領したジョブデータに基づき、印刷要求にかかる中間データを生成し、生成した中間データを所定の作業領域２３０に保存する。仮想プリンタドライバ２１８は、本実施形態における中間データ生成手段を構成する。
【００２６】
仮想プリンタドライバ２１８は、より詳細には、仮想プリント管理部２２０と、ジョブ情報データ抽出部２２２と、仮想描画部２２４とを含む。仮想プリント管理部２２０は、ジョブデータを受領すると、ジョブデータをジョブ格納部２２６に格納する。仮想描画部２２４は、仮想プリント管理部２２０から呼び出され、ジョブ格納部２２６に現在格納されているジョブデータを読み出し、中間データとして、ページ毎の描画データ２３４を作業領域２３０に格納する。上記描画データ２３４は、グラフィックス言語で記述されたデータであり、システムで再利用可能な形式にて生成される。描画データ２３４のデータ形式としては、特に限定されるものではないが、例えばＥＭＦ（Enhanced Meta File）などを挙げることができる。
【００２７】
Ｗｉｎｄｏｗｓ（登録商標）システムの特定の実施形態においては、描画データ２３４は、スプーラが生成するＥＭＦファイルを、プリントプロセッサがページ単位などの所定のユニット単位毎に分割して、作業領域２３０にコピーすることにより生成される。あるいは、描画データ２３４は、グラフィックモジュールがＥＭＦデータをページ毎に作業領域２３０に生成することにより生成される。
【００２８】
ジョブ情報データ抽出部２２２は、仮想プリント管理部２２０により呼び出されて、ジョブ格納部２２６に格納されたジョブデータから、出力先を決定するための情報を含めて印刷設定を抽出し、ジョブ情報データ２３２を作業領域２３０に格納する。出力先を決定するための情報としては、特に限定されるものではないが、印刷要求を行ったユーザのログインユーザ名などの印刷要求元ユーザ情報と、印刷要求元クライアントのＭＡＣアドレス（Media Access Control Address）やＩＰアドレス（Internet Protocol Address）などの印刷要求元端末情報と、カラーモードや集約設定などの印刷設定情報と、文書名、ページ数、文書のコンテンツなどの印刷内容と、時刻などのシステム情報とを挙げることができる。
【００２９】
発送処理部２４０は、１以上の出力先を決定し、仮想プリンタドライバ２１８が生成した中間データ（ジョブ情報データおよび描画データ）を作業領域２３０から読み出し、決定された１以上の要求先のドライバ２６０，２７０を呼び出して、印刷依頼を行う。１以上の出力先は、所定のルールに従って、またはユーザ対話を経て決定される。
【００３０】
プリンタドライバ２６０は、ＰＣＬ、ＬＩＰＳ、ＲＰＤＬなどのページ記述言語ないしプリンタ言語に対応した、プリンタ機器を制御するためのデバイスドライバである。プリンタドライバ２６０は、発送処理部２４０から呼び出されて、渡されたデータを、出力先のリモートプリンタが解釈可能な印刷データに変換し、ポートモニタを介して出力先のリモートプリンタに送信し、印刷出力を行わせる。電子化ドライバ２７０は、例えば、ＰｏｓｔＳｃｒｉｐｔ言語に対応したＰＤＦを作成するデバイスドライバとして構成される。電子化ドライバ２７０は、発送処理部２４０から呼び出されて、渡されたデータを、電子化文書ファイルに変換し、出力ファイル２７２として保存先の記憶領域に保存する。変換する文書フォーマットとしては、好適には、検索性および閲覧性に優れたＰＤＦを挙げることができるが、その他、ＸＰＳ、ＦｌａｓｈＰａｐｅｒ、ＳＶＧ（Scalable Vector Graphics）などのドキュメント・フォーマットや、ＴＩＦＦ（Tagged Image File Format）、ＪＰＥＧ（Joint Photographic Experts Group）、ビットマップなどの画像フォーマットなどを挙げることができる。上記プリンタドライバ２６０および上記電子化ドライバ２７０は、本実施形態における機器制御手段を構成する。
【００３１】
上記振り分け印刷システム１００において、アプリケーション２１４は、仮想プリンタドライバ２１８を指定して電子文書の印刷要求を行う際に、仮想プリンタドライバ２１８に対し、印刷可能な設定やデータの送出方法などの能力を問い合わせる。そして、応答された能力に応じた形で印刷要求にかかるジョブデータが作成される。例えば、あるアプリケーションは、特定の書体で描かれた文字の描画に関し、ＰＳパススルー（PostScript Pass-Through）対応のプリンタドライバに対しては、ＰＳパススルー・コマンドを含む描画データを作成する。一方で、ＰＳパススルー非対応のプリンタドライバに対しては、ラスタオペレーション（ＲＯＰ：Raster OPeration）を含む描画データが作成される。
【００３２】
ここで、ＰＳパススルーとは、アプリケーション自身がプリンタで解釈可能な印刷データを生成することによって、Ｗｉｎｄｏｗｓ（登録商標）のＧＤＩの描画機能に合わせることなく、高品質な印刷データを生成する機能をいう。オペレーション・システムのＧＤＩモジュールおよびプリンタドライバは、この場合、何ら手を加えることなくプリンタにデータを送信することになる。これに対して、ラスタオペレーション（ＲＯＰ）とは、描画の際に、描画される色(ソース)と描画する色(ディスティネーション)とをピクセルレベルで比較して、その比較結果に基づいて描画命令を実行する、ピクセル操作をいう。
【００３３】
プリンタドライバ２６０および電子化ドライバ２７０は、典型的には、それぞれ備える能力が異なっている。例えば、ＰＣＬ６のプリンタドライバ（以下、ＰＣＬ６ドライバと参照する。）は、ＲＯＰを処理する能力を備えているが、ＰＳパススルー・コマンドを処理することができない。ＰｏｓｔＳｃｒｉｐｔドライバ（以下、ＰＳドライバと参照する。）は、ＰＳパススルー・コマンドを処理する能力を備えているが、ＲＯＰを正しく処理する能力は備えていない。このため、仮想プリンタドライバ２１８は、アプリケーション２１４からの能力問い合わせに応答して所定の回答を行うが、複数のドライバが出力先として決定される場合、決定された出力先のドライバすべてで正しい出力結果が得られるとは限らない。
【００３４】
例えば、仮想プリンタドライバ２１８が、ＰＳパススルーに対応していない旨の回答を行った場合は、アプリケーション２１４は、特定の書体で描かれた文字を、ビットマップ・フォントで文字−データを作成し、そのビットマップに対しＲＯＰ演算により色付けを行うというコマンド群を含む描画データを作成する。このような描画データをドライバに送信すると、上記ＰＣＬ６ドライバである場合は、ＲＯＰをサポートしているので、ユーザが意図している通りの出力結果が得られる。しかしながら、ＰＳドライバである場合は、ＲＯＰがサポートされておらず、ＲＯＰによる透過処理が正しく行われず、塗りつぶされた状態で出力されてしまうことになる。
【００３５】
これとは反対に、仮想プリンタドライバ２１８が、ＰＳパススルーをサポートしている旨の通知を行う場合、アプリケーション２１４は、特定の書体で描かれた文字を、ＰＳパススルー・コマンドで描画データを作成する。このような描画データをドライバに送信すると、ＰＳドライバであれば、ＰＳパススルーのコマンドを処理する能力を有するので、ユーザが意図している通りの出力結果が得られる。しかしながら、ＰＣＬ６ドライバの場合は、ＰＳパススルーがサポートされていないので、印刷することができない。
【００３６】
また、上述したように複数のドライバ間で能力が異なる場合がある他、上記振り分け印刷システム１００では、アプリケーション２１４からの能力問い合わせの時点においては、出力先が決定されていない。出力先は、中間データに含まれる情報に基づいて決定されるか、あるいは、印刷処理開始後のユーザ対話によって決定される。そのため、仮想プリンタドライバ２１８は、実際に使用されるドライバ２６０，２７０が確定しない状態で回答を余儀なくされることになる。
【００３７】
すなわち、上述した振り分け印刷システム１００においては、複数の出力先が決定された場合に、すべてのドライバで正しい印刷結果が得られない可能性があった。より具体的には、ＰＳパススルー対応（ＲＯＰ非対応）ドライバと、ＰＳパススルー非対応（ＲＯＰ対応）ドライバを含む複数種類のドライバが同時に出力先として決定される場合に、問題が発生するおそれがあった。
【００３８】
そこで、本実施形態による仮想プリンタドライバ２１８は、アプリケーション２１４からの能力問い合わせに対し、ＰＳパススルーに対応していない旨（ＲＯＰに対応している旨）応答する。そして、本実施形態による発送処理部２４０は、複数のドライバ各々の能力に基づいて、能力に適合させるべく中間データの内容を改変する処理を実行するか否かの分岐判断を行うよう構成されている。上記中間データは、アプリケーション２１４から、応答した能力に応じた形で送信されたジョブデータに基づき生成されることになる。発送処理部２４０は、上記分岐判断に基づき、応答通りのＰＳパススルー非対応（ＲＯＰ対応）のドライバに対しては、中間データをそのまま用いて印刷依頼を行う。一方、応答通りではないＰＳパススルー対応（ＲＯＰ非対応）のドライバに対しては、発送処理部２４０は、中間データの内容の所定の改変を実行した上で印刷依頼を行う。
【００３９】
図３には、発送処理部２４０のより詳細な構成が示されており、発送処理部２４０は、発送指示部２４２と、出力先決定部２４４と、能力問い合わせ部２４６と、データ改変部２４８とを含んで構成される。発送指示部２４２は、印刷実行依頼を受けて、出力先決定部２４４に対し、出力先の決定を依頼し、決定された１以上の出力先の通知を受ける。発送指示部２４２は、出力先決定部２４４から、決定された出力先の通知を受領すると、通知された出力先を設定して、管理している複数のドライバ２６０，２７０のうちから対応するドライバを呼び出し、印刷出力処理または電子化出力処理を実行させる。なお、データ改変部２４８は、本実施形態による改変実行手段を構成する。
【００４０】
出力先決定部２４４は、クライアント１１２〜１１８とリモートプリンタ１２２〜１２８との対応付けを規定するような出力先定義ファイル２４４ａを参照し、出力先を決定することができる。あるいは、出力先決定部２４４は、上記出力先定義ファイル２４４ａの参照とともに、または参照に代えて、ユーザに対し出力先の選択を求めるダイアログを表示し、ユーザ対話を経て、１以上の出力先を決定することができる。出力先決定部２４４は、出力先が決定されると、決定した出力先を発送指示部２４２に通知する。
【００４１】
出力先定義ファイル２４４ａは、出力先の選択を条件付けており、好適には、特定の用途に応じてユーザ定義可能なデータとして提供され、例えば管理者や利用者により事前に定義される。また、出力先定義ファイル２４４ａは、本データ処理装置１１０のローカルに保存されていることに限定されず、外部のデータベースに保存されていてもよい。
【００４２】
図４は、出力先定義ファイルのデータ構造を一例として示す。図４に示すように、出力先定義ファイル３００は、印刷出力処理に関する第１ルール定義データ部３０２と、電子化出力処理に関する第２ルール定義データ部３０４とを含み構成される。
【００４３】
図４に示す印刷出力処理に関する第１ルール定義データ部３０２では、［Ｃｏｎｄｉｔｉｏｎ１］および［Ｃｏｎｄｉｔｉｏｎ２］の箇所に種々の条件が定義され、［Ｓｅｔｔｉｎｇ１］、［Ｓｅｔｔｉｎｇ２］の箇所に種々の印刷内容の変更の設定が定義されている。そして、［Ｃｏｍｍａｎｄ］で示した箇所で、上記条件および設定が紐付けられている。なお、図４に示す第１ルール定義データ部３０２は、例示を目的とするものであり、特定の用途に応じて種々のルールが定義付け可能であることは言うまでもない。定義可能な条件付け情報としては、上述したような印刷要求元ユーザ情報、印刷要求元端末情報、システム情報および宛先端末識別情報宛先などを挙げることができる。
【００４４】
図４に示す電子化出力処理に関する第２ルール定義データ部３０４では、［ＰＤＦフォルダ名］セクションには、電子化文書ファイルの出力先のフォルダ名を生成するルールが定義され、［ＰＤＦファイル名］セクションには、ファイル名を生成するルールが定義される。電子化文書ファイルの保存先は、印刷要求元ユーザ情報、印刷要求元端末情報、印刷設定情報、印刷内容およびシステム情報などの出力先を決定するための情報を用いて、フォルダ名およびファイル名を動的に生成して決定することができる。図４に示す第２ルール定義データ部３０４は、電子化出力処理に関し、保存先パスを動的に生成するためのルールを例示しているが、特定の用途に応じて種々のルールが定義付け可能であることは言うまでもない。
【００４５】
発送指示部２４２は、出力先決定部２４４からの決定された出力先の通知を受けるが、以下の説明では、１つのプリンタドライバ２６０と、１つの電子化ドライバ２７０とが出力先として決定されるものとする。したがって、発送指示部２４２は、アプリケーション２１４からの１回の印刷要求に対応して２回の印刷依頼を行うべく、印刷出力フローおよび電子化出力フローを開始させることになる。
【００４６】
能力問い合わせ部２４６は、管理している複数のドライバ２６０，２７０に対し、ＰＳパススルーへの対応または非対応を含めて、印刷可能な設定やデータの送出方法などの能力問い合わせを行う。ここでは、少なくとも印刷要求に対応して決定された１以上の出力先となるドライバ各々に対し問い合わせが行われる。能力問い合わせ部２４６は、発送指示部２４２からの能力問い合わせ依頼に応答して、複数のドライバ２６０，２７０に対して能力問い合わせを行って、依頼元に問い合わせ結果を返却する。
【００４７】
本実施形態による発送指示部２４２は、複数のドライバ２６０，２７０各々について、各々の能力の情報が得られると、得られた能力の情報に基づいて、中間データの内容の改変を実行するかを判断する。
【００４８】
発送処理部２４０での上記改変を実行するかの判断は、中間データを解析することによって行うことができる。または、仮想プリンタドライバ２１８から発送処理部２４０へ能力対応合わせに対する回答の内容を通知することで、通知された内容に基づいて上記判断を行ってもよい。また、仮想プリンタドライバ２１８のアプリケーション２１４への回答が固定であれば、その固定された回答に対応した分岐判断を行ってもよい。例えば、第１の実施形態では、アプリケーション２１４に対しＰＳパススルー非対応の回答が行われるので、特定の書体で描かれた文字の描画に関し、ＰＳパススルー・コマンドではなくＲＯＰ演算を含む描画データが生成されることが予測される。そこで、発送指示部２４２は、ＰＳパススルー非対応（ＲＯＰ対応）のドライバ（例えばＰＣＬ６ドライバ）に対しては、改変処理を実行する必要がないと判断し、改変処理を実行せずにそのまま印刷依頼を行うことができる。一方、ＰＳパススルー対応（ＲＯＰ非対応）のドライバ（例えばＰＳドライバ）に対しては、発送指示部２４２は、改変処理を実行する必要があると判断し、データ改変部２４８を呼び出して改変処理の完了を待った上で印刷依頼を行うことができる。
【００４９】
データ改変部２４８は、改変処理として、中間データを解析し、中間データ中のＲＯＰ非対応のドライバでは正しく処理できない内容部分を、代替する内容に変更する処理を実行する。なお、データ改変部２４８による中間データの改変方法については後述する。
【００５０】
なお、図３に示した各機能部は、図２に示したＭＰＵ１２が、ハードディスク２０に格納されるプログラムをメモリ１６に読み込んで、該プログラムを実行することにより、コンピュータ上に実現される。なお、アプリケーションに対し能力を応答する能力応答手段および中間データを生成する中間データ生成手段としての機能は、典型的には、仮想プリンタドライバ２１８のプログラム・モジュールとして提供することができる。また、実ドライバ２６０，２７０に対し能力問い合わせを行う能力問い合わせ部２４６としての機能、改変が必要かの分岐判断を行う判断手段としての機能、および分岐判断に基づいて中間データを改変する改変実行手段としての機能については、仮想プリンタドライバ２１８とは別のプロセスで動作する発送処理部２４０のプログラム・モジュールとして提供することができる。
【００５１】
また、図３に示した実施形態では、アプリケーション２１４、仮想プリンタドライバ２１８、発送処理部２４０、プリンタドライバ２６０および電子化ドライバ２７０すべてがデータ処理装置１１０に備えられるものとして説明した。しかしながら、図３に示す各機能部を図３の通りに実装する必要はなく、他の実施形態では、それぞれ別のコンピュータ・システム上に分散実装してもよい。
【００５２】
また説明する実施形態では、クライアント１１２〜１１８から、ＲＤＰなどの遠隔接続プロトコルにより、データ処理装置１１０へリモートアクセスして、アプリケーション２１４による文書作成や電子文書の印刷要求などを行うもとして説明した。しかしながら、他の実施形態では、データ処理装置１１０の機能をクライアント上に実装してもよい。例えば、クライアント１１２〜１１８が、それぞれ、アプリケーション２１４、仮想プリンタドライバ２１８、仮想プリンタドライバ２１８および発送処理部２４０の機能を有するよう構成したりすることで、いわゆるファットクライアントとして実装することもできる。これらの特定の実装形式は、振り分け印刷システム１００が設置される環境やユーザの特定の用途に応じて適宜変更することができる。
【００５３】
以下、図５〜図７を参照しながら、データ処理装置１１０が実行する印刷振り分け処理について、より詳細に説明する。図５は、第１の実施形態によるデータ処理装置１１０が実行する印刷振り分け処理を示すシーケンス図である。図５に示す処理は、アプリケーション２１４が、ユーザからの、仮想プリンタドライバ２１８を指定した所定の電子文書の印刷指示を受け付けたことに応答して、ステップＳ１００から開始される。
【００５４】
ステップＳ１００では、アプリケーション２１４は、仮想プリンタドライバ２１８に対し能力問い合わせを行い、第１の実施形態では、ＰＳパススルー非対応である旨の回答を取得する。ステップＳ１０１では、アプリケーション２１４は、第１の実施形態では、ＰＳパススルー非対応である旨の回答に基づいて、特定の書体の文字の描画に関し、特定のＲＯＰ演算を含むジョブデータを生成する。
【００５５】
図６（Ａ）は、アプリケーション２１４が、ＰＳパススルー非対応である旨の回答に対応して生成するコマンド群を例示する。図６（Ａ）に例示するコマンド群は、特定の書体で描かれた文字を、ビットマップ・フォントでデータを作成し、そのビットマップに対しＲＯＰ演算により色付けを行うというコマンド群を含んでいる。
【００５６】
図６（Ａ）に示すコマンド群において、第１行目では、黒色のブラシを作成し、第２行目では、作成されたブラシを選択することが指令されている。第３行目では、ブラシの色とディスティネーションの色とを排他論理和で結合するための定数「PATINVERT」を指定したPatBlt関数が記述されている。PatBlt関数は、指定されたデバイスコンテキストに現在選択されているブラシを用いて、指定された矩形を塗りつぶす関数であり、指定されたラスタオペレーションを用いて、ブラシの色と、サーフェスの色とを結合させる。第４行目では、文字のビットマップ（「sample1.bmp」）を作成することが指令され、第５行目では、ソースとディスティネーションの色を論理積によって結合するための定数「SRCAND」を指定したStretchDIBits（）関数が記述されている。StretchDIBits（）関数は、指定されたデバイス独立ビットマップ（ＤＩＢ）内の長方形ピクセルの色データを、拡大または縮小して、指定された長方形へコピーする関数である。第６行目では、定数「PATINVERT」を指定したPatBlt関数が再度記述されている。
【００５７】
再び図５を参照すると、ステップＳ１０２では、アプリケーション２１４は、仮想プリンタドライバ２１８に対し印刷要求を行い、ジョブデータを渡す。ステップＳ１０３では、仮想プリンタドライバ２１８は、仮想描画部２２４を呼び出し、ジョブデータに基づき描画データの生成を行わせる。プリントプロセッサが、生成されたジョブデータをページ単位に分割して、作業領域２３０にコピーすることにより、描画データが生成される。ステップＳ１０４では、仮想プリンタドライバ２１８は、ジョブ情報データ抽出部２２２を呼び出し、ジョブデータからジョブ情報データを抽出させる。生成されたジョブ情報データ２３２および描画データ２３４は、中間データとして、作業領域２３０に格納される。
【００５８】
ステップＳ１０５では、仮想プリンタドライバ２１８は、発送処理部２４０を呼び出し、印刷要求にかかる発送処理を依頼する。ステップＳ１０６では、発送処理部２４０は、発送指示部２４２を呼び出して、印刷実行を依頼する。ステップＳ１０７では、発送指示部２４２は、出力先決定部２４４に対し、出力先の決定を依頼し、結果を取得する。ここでは、出力先定義ファイル２４４ａに基づいて、プリンタドライバ（ＰＣＬ６ドライバ）２６０と、電子化ドライバ（ＰＳドライバ）２７０とが出力先として決定されるものとする。
【００５９】
ステップＳ１０９では、発送指示部２４２は、出力先として決定されたリモートプリンタに対応するプリンタドライバ２６０への能力問い合わせを能力問い合わせ部２４６に依頼する。ステップＳ１１０では、能力問い合わせ部２４６は、出力先のプリンタドライバ２６０への能力問い合わせを行い、ここでは、プリンタドライバ２６０はＰＣＬ６ドライバであるので、ＰＳパススルー非対応である旨の回答を得て、その旨を発送指示部２４２に返す。
【００６０】
ドライバに対する能力問い合わせは、特定の実施形態であるＷｉｎｄｏｗｓ（登録商標）においては、図７に構文を示すようなExtEscape関数というＡＰＩを用いて行うことができる。ドライバ２６０，２７０には、エスケープ機能においてＰＳパススルーに対応するドライバであるかどうかを問い合わせする専用のＩＤ（構文中のエスケープ機能が指定される引数「nEscape」に対する定数「POSTSCRIPT_PASSTHROUGH」）が定義されている。能力問い合わせ部２４６は、このＩＤを用いてドライバに問い合わせることができる。
【００６１】
上記問い合わせ用のＩＤ（POSTSCRIPT_PASSTHROUGH）で、ＰＳドライバに対しExtEscape関数がコールされると、ＰＳパススルーに対応していることを示す値（正の整数）が戻り値として呼び出し元に返される。一方、ＰＣＬ６ドライバに対しExtEscape関数がコールされると、ＰＳパススルーに対応していないことを示す値（０）が戻り値として呼び出し元に返される。
【００６２】
再び図５を参照すると、プリンタドライバ２６０からは、ＰＳパススルー非対応である旨の回答が得られるので、ここでは、発送指示部２４２は、中間データの内容を改変する必要がないと判断する。ステップＳ１１１では、発送指示部２４２は、出力先のプリンタドライバ２６０を呼び出し、そのままの中間データに基づく印刷依頼を行う。ステップＳ１１２では、プリンタドライバ２６０は、発送指示部２４２からの中間データに基づくジョブデータを受領し、リモートプリンタに印刷データを出力して、印刷出力を実行させる。
【００６３】
ステップＳ１１３では、発送指示部２４２は、引き続き、出力先として決定された電子化ドライバ２７０への能力問い合わせを能力問い合わせ部２４６に依頼する。ステップＳ１１４では、能力問い合わせ部２４６は、出力先の電子化ドライバ２７０へ能力問い合わせを行い、ここでは、電子化ドライバ２７０はＰＳドライバであるので、ＰＳパススルー対応である旨の回答を得て、その旨を発送指示部２４２に返す。この場合、発送指示部２４２は、ＰＳパススルー対応（ＲＯＰ非対応）との回答に基づき、中間データの内容の改変を必要とすると判断し、ステップＳ１１５では、データ改変部２４８に対しデータ改変依頼を行う。
【００６４】
ステップＳ１１６では、データ改変部２４８は、中間データを解析し、描画データ中のＰＳパススルー対応（ＲＯＰ非対応）のドライバが有する能力では正しく処理できない内容を、代替する内容に変更する処理を行う。図６（Ａ）に示したコマンド群（中間データの描画データにも、図６（Ａ）に示したアプリケーション２１４が生成したものと同様のコマンド群が含まれる。）において、PatBlt関数は、指定されたデバイスコンテキストで、現在選択されたブラシを使用して長方形を描画し、排他論理和により、ブラシの色と、サーフェスの色とを結合するという関数である。したがって、ＲＯＰ非対応のＰＳドライバでは、そのままでは、塗りつぶされてしまうことになる。
【００６５】
そこで、データ改変部２４８は、上述したような所定描画オブジェクト（例えば文字）の第１ビットマップ画像（例えば「sample1.bmp」）を１以上の論理演算を行って描画するという特定のコマンド群（図６（Ａ）に示すコマンド群）を、図６（Ｂ）に示すような代替コマンド群に置き換える。図６（Ｂ）に示す代替コマンド群は、第１ビットマップ画像（例えば「sample1.bmp」）に１以上の論理演算を行うことを指令するものではなく、１以上の論理演算を行った結果として得られる第２ビットマップ画像（例えば「sample2.bmp」）を準備し、指定されたビットマップ内の長方形ピクセルの色データを、指定された長方形へコピーするという指令を含んでいる。このような代替コマンド群への置き換えを行うことにより、ドライバが上記特定の論理演算自体を実行できない場合でも、その特定の論理演算を実行した結果が反映された描画を実現することができる。
【００６６】
再び図５を参照すると、ステップＳ１１７では、発送指示部２４２は、中間データの改変の完了を待ち合わせて、出力先として決定された電子化ドライバ２７０を呼び出し、データ改変部２４８により改変された中間データに基づき印刷開始を指令する。ステップＳ１１８では、電子化ドライバ２７０は、発送指示部２４２からの中間データに基づくジョブデータを受領し、決定された保存先パスに電子化文書の出力ファイル２７２を出力する。これにより、ユーザが意図するものと等価な出力結果が得られることになる。
【００６７】
上記第１の実施形態によれば、ＲＯＰ演算を処理できるＰＳパススルー非対応のＰＣＬ６ドライバに対しては、アプリケーション２１４へのＰＳパススルー非対応の回答に対応して生成されたそのままの中間データに基づいて印刷依頼が行われる。一方、ＲＯＰ演算を処理できないＰＳドライバに対しては、ＰＳパススルー非対応の回答に対応して生成される中間データ内のＲＯＰ演算を含む特定コマンド群が、ＰＳドライバが処理可能な代替コマンド群に置き換えられた上で印刷依頼が行われる。
【００６８】
このため、ＰＳパススルー非対応のドライバに対しては、そのままの中間データが送信されても、ユーザの意図通りの結果が与えられる一方で、ＰＳパススルー対応ドライバでも、ユーザの意図通りの等価な結果を与えることができる。ひいては、決定された出力先に、ＰＳパススルー対応ドライバと、ＰＳパススルー非対応のドライバとが混在した場合でも、両方のドライバで、正しい結果を得ることが可能となる。
【００６９】
なお、上述した図５に示したシーケンス図では、出力先定義ファイル２４４ａにより出力先を決定するものとして説明したが、実施形態はこれに限定されるものではない。他の実施形態では、ダイアログ画面の表示を行って、ユーザ対話を経て出力先を決定したりすることもできる。また、図５に示したシーケンス図では、そのままの中間データに基づいて印刷依頼するプリンタドライバ２６０のフローが先に実行され、改変を必要とする電子化ドライバ２７０のフローが後に実行されるものとして説明した。しかしながら、この順序に限定されるものではなく、例えば改変前の中間データを残しておけば、改変を必要とする電子化ドライバ２７０のフローを先に実行することもできる。
【００７０】
［第２の実施形態］
上述した第１の実施形態では、仮想プリンタドライバ２１８は、アプリケーション２１４に対し、「ＰＳパススルー非対応（ＲＯＰ対応）」の旨回答を行うものとして説明した。以下、図８〜図１０を参照しながら、仮想プリンタドライバ２１８が、アプリケーション２１４に対し、「ＰＳパススルー対応（ＲＯＰ非対応）」の旨回答を行う第２の実施形態について説明する。なお、第２の実施形態は、第１の実施形態と同様の構成を備えるため、以下の説明では、共通点については説明を割愛し、相違点を中心に説明する。また、同様の機能を有する機能部に対しては、同一名称および同一符番で参照する。
【００７１】
図８は、第２の実施形態によるデータ処理装置１１０の機能ブロックを示す図である。図８に示すように、第２の実施形態によるデータ処理装置１１０は、第１の実施形態と同様に、アプリケーション２１４と、仮想プリンタドライバ２１８と、発送処理部２４０と、１以上のプリンタドライバ２６０と、電子化ドライバ２７０とを含み構成される。
【００７２】
第２の実施形態による仮想プリンタドライバ２１８は、アプリケーション２１４からの能力問い合わせに対し、ＰＳパススルーに対応している旨（ＲＯＰに対応していない旨）応答する。本実施形態による発送処理部２４０も、第１の実施形態と同様に、複数のドライバ各々の能力に基づいて、能力に適合させるべく改変を実行するかの分岐判断を行うよう構成されている。第２の実施形態による発送処理部２４０は、発送指示部２４２と、出力先決定部２４４と、能力問い合わせ部２４６と、再印刷管理部２５０とを含んで構成される。第１の実施形態におけるデータ改変部２４８は、発送処理部２４０には含まれない。なお、再印刷管理部２５０は、第２実施形態による改変実行手段を構成する。
【００７３】
第２の実施形態においても、中間データは、アプリケーション２１４から、応答した能力に応じた形で送信されたジョブデータに基づいて生成されることになる。しかしながら、第２の実施形態では、第１の実施形態とは異なり、特定の書体で描かれた文字の描画に関し、ＲＯＰ演算ではなくＰＳパススルー・コマンドを含む中間データが送信されることになる。
【００７４】
第２の実施形態による発送処理部２４０の発送指示部２４２は、上記回答に対応して第１の実施形態とは反対に、ＰＳパススルー対応（ＲＯＰ非対応）のドライバ（例えばＰＳドライバ）に対しては、改変処理を実行する必要がないと判断し、そのままの中間データに基づく印刷依頼を行う。一方、応答通りではないＰＳパススルー非対応（ＲＯＰ対応）のドライバ（例えばＰＣＬ６ドライバ）に対しては、発送指示部２４２は、中間データの改変を行う必要があると判断し、第２の実施形態による改変処理を行った上での印刷依頼を行う。
【００７５】
本実施形態による出力先決定部２４４は、第１の実施形態と同様に、所定のルールに従ってまたはユーザ対話を経て出力先を決定することができるが、第２の実施形態では、さらに、その出力順序も決定する。出力先決定部２４４は、特に、改変を実行する必要がないと判断されるＰＳパススルー対応のドライバが優先されるように、出力順序を決定することができる。これは、ＰＳパススルー非対応（ＲＯＰ対応）のドライバに対しては、ＰＳパススルー対応のドライバを用いた出力処理を先行して行うことが効率的であるためである。以下の説明では、１つのプリンタドライバ２６０と、１つの電子化ドライバ２７０とが出力先として決定され、さらに、ＰＳパススルー対応の電子化ドライバ２７０が先に、ＰＳパススルー非対応のプリンタドライバ２６０が後に出力順序が決定されるものとする。
【００７６】
能力問い合わせ部２４６は、第１の実施形態と同様に、管理している複数のドライバ２６０，２７０に対し、ＰＳパススルーへの対応または非対応を含めて能力問い合わせを行う。
【００７７】
発送指示部２４２は、印刷実行依頼を受けて、能力問い合わせ部２４６に対し、複数のドライバ２６０，２７０への能力問い合わせを依頼し、各ドライバの能力の情報を取得する。発送指示部２４２は、また、出力先決定部２４４に対し、出力先およびその出力順序の決定を依頼し、決定された１以上の出力先およびその出力順序の通知を受ける。発送指示部２４２は、能力問い合わせ部２４６から各ドライバの能力の情報を取得し、かつ、出力先決定部２４４から決定内容の通知を受領すると、通知された順序で、通知された出力先を設定して、改変を実行する必要があるかを判断しつつ、対応するドライバを呼び出す。
【００７８】
再印刷管理部２５０は、発送指示部２４２により改変を行う必要があると判断された場合に呼び出され、そのように判断されたＰＳパススルー非対応のドライバ２６０に対し、改変処理を行った上での印刷依頼を実行する。本実施形態による再印刷管理部２５０は、より具体的には、改変処理として、ＰＳパススルー・コマンドを正しく処理できるＰＳドライバ２７０を用いた出力処理を行わせて、その完了を待ち合わせて、得られた出力データに基づき、ＰＳパススルー非対応のＰＣＬ６ドライバ２６０に対する再印刷依頼する処理を実行する。
【００７９】
なお、決定された出力順序において、先に呼び出されるＰＳドライバにより生成された出力ファイル２７２をそのまま利用できる場合は、先のフローで生成された出力データの完了を待ち受けて、再印刷管理部２５０は、出力された電子化文書の出力ファイル（ＰＤＦファイル）２７２を読み込む。そして、再印刷管理部２５０は、出力ファイル２７２に基づき、ＰＣＬ６ドライバに対して再印刷をかけることができる。この場合は、先行して出力されたＰＳパススルー対応ドライバの出力データ（ＰＤＦファイル）を効果的に再利用することができる。
【００８０】
あるいは、先のフローで呼び出されたＰＳドライバにより生成された出力データが、データ処理装置１１０上から削除されてしまうような場合は、以下のように対応することができる。すなわち、再印刷管理部２５０は、先のフローとは独立にＰＳドライバに出力ファイル２７２を生成させて、その出力データの完了を待ち受けて、出力ファイル（ＰＤＦファイル）２７２を読み込む。そして、再印刷管理部２５０は、出力ファイル２７２に基づき、ＰＣＬ６ドライバに対して再印刷をかけることができる。
【００８１】
このような出力データの削除は、ＰＳドライバである電子化ドライバ２７０が、出力ポートを介して、そのまま外部の電子文書格納部２７４へ出力データを保存したり、または、ＰＳドライバであるプリンタドライバ２６０が、出力ポートを介して、そのまま外部のＰｏｓｔＳｃｒｉｐｔ対応のリモートプリンタへ出力データを送信したりする場合に発生する。なお、再印刷管理部２５０による再印刷処理については後述する。
【００８２】
以下、図９および図１０を参照しながら、第２の実施形態によるデータ処理装置１１０が実行する印刷振り分け処理について、より詳細に説明する。図９は、第２の実施形態によるデータ処理装置１１０が実行する印刷振り分け処理を示すシーケンス図である。図９に示す処理は、アプリケーション２１４が、ユーザからの、仮想プリンタドライバ２１８を指定した所定の電子文書の印刷指示を受け付けたことに応答して、ステップＳ２００から開始される。
【００８３】
ステップＳ２００では、アプリケーション２１４は、仮想プリンタドライバ２１８に対し能力問い合わせを行い、第２の実施形態では、ＰＳパススルー対応である旨の回答を取得する。ステップＳ２０１では、アプリケーション２１４は、第２の実施形態では、ＰＳパススルー対応である旨の回答に対応して、特定の書体の文字の描画に関し、ＰＳパススルー・コマンドを含むジョブデータを生成する。ステップＳ２０２では、アプリケーション２１４は、仮想プリンタドライバ２１８に対し印刷要求を行い、ジョブデータを渡す。ステップＳ２０３では、仮想プリンタドライバ２１８は、ジョブデータに基づき描画データの生成を行わせ、ステップＳ２０４では、ジョブデータからジョブ情報データを抽出させる。
【００８４】
ステップＳ２０５では、仮想プリンタドライバ２１８は、発送処理部２４０を呼び出し、印刷要求にかかる発送処理を依頼する。ステップＳ２０６では、発送処理部２４０は、発送指示部２４２を呼び出して、印刷実行を依頼する。ステップＳ２０７では、管理しているドライバ２６０，２７０への能力問い合わせを能力問い合わせ部２４６に依頼する。ステップＳ２０８では、能力問い合わせ部２４６は、プリンタドライバ２６０への能力問い合わせを行い、ここでは、ＰＳパススルー非対応である旨の回答を得る。ステップＳ２０９では、能力問い合わせ部２４６は、電子化ドライバ２７０への能力問い合わせを行い、ここでは、ＰＳパススルー対応である旨の回答を得る。これらの能力問い合わせの結果は、発送指示部２４２に返される。
【００８５】
ステップＳ２１０では、発送指示部２４２は、出力先決定部２４４に対し、出力先および出力順序の決定を依頼し、結果を取得する。ここでは、出力先定義ファイル２４４ａに基づいて、電子化ドライバ（ＰＳドライバ）２７０と、プリンタドライバ（ＰＣＬ６ドライバ）２６０とが出力先としてこの順序で決定されるものとする。
【００８６】
なお、出力順序の判断は、以下のように行うことができる。まず、第１の方法は、出力先定義ファイル２４４ａにおいて、確実に出力可能なＰＳパススルー対応のＰＳドライバが用意されており、そのＰＳドライバを最も高い優先順位で出力することをルールとして決める方法である。この場合、最初にそのＰＳドライバに対する印刷依頼が行われることで、以降、ＰＳパススルー非対応の他のドライバでも、その出力データに基づいて印刷出力することが可能となる。この場合、出力先定義ファイル２４４ａにおいて、すべてのルールでＰＳドライバを出力先に決定するよう定義し、さらに、当該ＰＳドライバを最も高い優先順位とするように出力先のドライバに対し出力順序の優先順位付けする、図１０（Ａ）に示すような定義を含めればよい。
【００８７】
第２の方法は、能力問い合わせ部２４６から取得したドライバの能力情報に基づいて判断する方法である。能力問い合わせ部２４６からは、図１０（Ｂ）に示すような、各ドライバに対するＰＳパススルー対応または非対応の情報を含む問い合わせ結果が得られる。出力先決定部２４４は、図１０（Ｂ）に示すドライバ各々の能力の問い合わせ結果に基づき、決定された出力先の中からＰＳパススルー対応のドライバを判断し、ＰＳパススルー対応のドライバを高い優先順位とするように出力先のドライバを順序付けし、呼び出し元である発送指示部２４２に通知することができる。また、ＰＳパススルー非対応のドライバに対しては再印刷が必要であるという情報を付して通知を行ってもよい。このように出力順序を決定することにより、先行して出力されたＰＳパススルー対応ドライバの出力データを効果的に再利用することが可能となる。
【００８８】
ステップＳ２１０の出力先決定依頼に対する結果を取得すると、ＰＳパススルー対応である旨の回答があった電子化ドライバ２７０に対する出力フローが開始される。ステップＳ２１２では、発送指示部２４２は、ＰＳドライバである電子化ドライバ２７０に対しては改変を必要としないと判断し、出力先の電子化ドライバ２７０を呼び出し、そのままの中間データに基づく印刷依頼を行う。ステップＳ１１３では、電子化ドライバ２７０は、発送指示部２４２から中間データに基づくジョブデータを受領し、決定された保存先パスに電子化文書ファイルを出力する。
【００８９】
ステップＳ２１４では、発送指示部２４２は、ＰＳパススルー非対応との回答があったプリンタドライバ２６０に対するフローであることから、改変する必要があると判断し、再印刷管理部２５０に対し、再印刷処理の実行を依頼する。ステップＳ２１５では、再印刷管理部２５０は、ステップＳ２１３での出力処理が完了することを待って、電子化ドライバ２７０の出力先ポートを変更する。ステップＳ２１６では、再印刷管理部２５０は、電子化ドライバ２７０を再度呼び出し、中間データに基づくファイル出力処理を依頼する。ステップＳ２１７では、電子化ドライバ２７０は、中間データに基づき電子化処理を実行し、ステップＳ２１５で変更された出力ポートに対し、ファイルを出力する。
【００９０】
再印刷管理部２５０は、ステップＳ２１８で、出力データの完了を待ち合わせて、ステップＳ２１９で、出力された出力ファイル２７２を読み込み、出力ファイル２７２に基づき、ＰＣＬ６ドライバであるプリンタドライバ２６０に対し再印刷依頼を行う。ステップＳ２２０では、プリンタドライバ２６０は、再印刷管理部２５０からの出力ファイルに基づくジョブデータを受領し、リモートプリンタに印刷データを出力して、印刷出力を実行させる。これにより、ユーザが意図するものと等価な出力結果が得られる。
【００９１】
なお、図９に示すシーケンス図は、先のフローとは別個にＰＳドライバに出力データを生成させる場合について説明した。決定された出力先にＰＳパススルー対応のドライバが含まれていない場合も、別個にＰＳドライバに出力データを生成させ、その出力データに基づき再印刷依頼を行う処理を行うことができる。ひいては、決定された出力先にＰＳドライバが含まれるか否かにかかわらず、すべてのドライバで等価な印刷結果を得ることができるようになる。
【００９２】
上記第２の実施形態によれば、発送処理部２４０は、ＰＳパススルー・コマンドを処理できるＰＳドライバに対しては、アプリケーション２１４へのＰＳパススルー対応の回答に対応して生成されたそのままの中間データに基づいて印刷依頼を行う。一方、ＰＳパススルー・コマンドを処理できないＰＣＬ６ドライバに対しては、ＰＳパススルー対応の回答に対応して生成される中間データに基づいてＰＳパススルー対応のＰＳドライバにより生成された出力ファイルを得た上で印刷依頼が行われる。
【００９３】
このため、ＰＳパススルー対応のドライバに対しては、そのままの中間データが送信されても、ユーザの意図通りの結果が与えられる一方で、ＰＳパススルー非対応ドライバでも、ユーザの意図通りの結果を与えることができる。ひいては、決定された出力先にＰＳパススルー対応ドライバと、ＰＳパススルー非対応のドライバとが混在した場合でも、両方のドライバで、正しい結果を得ることが可能となる。
【００９４】
以上説明したように、本実施形態によれば、要求元からの処理要求に応答して能力に差異がある機器制御手段に振り分ける場合において、機器制御手段の能力に対応する処理結果を得ることができるプログラム、情報処理装置、システムおよび画像処理方法を提供することができる。
【００９５】
なお、上述した実施形態では、考慮するドライバ手段の能力として、ＰＳパススルー対応（ＲＯＰ非対応）であるか、ＰＳパススルー非対応（ＲＯＰ対応）であるかを問い合わせ、このＰＳパススルー対応または非対応に応じて中間データの改変を実行するかを制御していた。しかしながら、本実施形態において考慮できるドライバ手段の能力は、ＰＳパススルーの対応または非対応に限定されるものではなく、デバイスドライバが備え得る種々の能力に対して適用することができることは言うまでもない。
【００９６】
また、上述した実施形態では、仮想プリンタドライバ２１８が「ＰＳパススルー非対応」の旨回答を行う第１の実施形態、「ＰＳパススルー対応（ＲＯＰ非対応）」の旨回答を行う第２の実施形態について分けて説明したが、上述した実施形態に限定されるものではない。他の実施形態では、管理される実プリンタドライバ２６０，２７０における対応または非対応の多寡等の情報に応じて、第１の実施形態の動作と、第２の実施形態の動作とを切り替えるよう構成してもよい。
【００９７】
また、上記機能部は、アセンブラ、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（登録商標）、などのレガシープログラミング言語やオブジェクト指向プログラミング言語などで記述されたコンピュータ実行可能なプログラムにより実現でき、ＲＯＭ、ＥＥＰＲＯＭ、ＥＰＲＯＭ、フラッシュメモリ、フレキシブルディスク、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ブルーレイディスク、ＳＤカード、ＭＯなど装置可読な記録媒体に格納して、あるいは電気通信回線を通じて頒布することができる。
【００９８】
これまで本発明の実施形態について説明してきたが、本発明の実施形態は上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【符号の説明】
【００９９】
１００…振り分け印刷システム、１１０…データ処理装置、１１２〜１１８…クライアント、１２２〜１２８…リモートプリンタ、１３０…ネットワーク、１４０，１５０，１６０…ロケーション、２１４…アプリケーション、２１８…仮想プリンタドライバ、２２０…仮想プリント管理部、２２２…ジョブ情報データ抽出部、２２４…仮想描画部、２２６…ジョブ格納部、２３０…作業領域、２３２…ジョブ情報データ、２３４…描画データ、２４０…発送処理部、２４２…発送指示部、２４４…出力先決定部、２４６…能力問い合わせ部、２４８…データ改変部、２５０…再印刷管理部、２６０…プリンタドライバ、２７０…電子化ドライバ、３００…出力先定義ファイル、３０２…第１ルール定義データ部、３０４…第２ルール定義データ部、１２…ＭＰＵ、１４…不揮発性メモリ、１６…メモリ、１８…記憶制御用インタフェース、２０…ＨＤＤ、２２…内部バス、２４…パラレル・インタフェース、２６…入出力装置、２８…ＶＲＡＭ、３０…グラフィック・チップ、３２…ディスプレイ装置、３４…ＮＩＣ
【先行技術文献】
【特許文献】
【０１００】
【特許文献１】特開２０１０−１５７２０８号公報
【図１】
2015055973.tif 000003
【図２】
2015055973.tif 000004
【図３】
2015055973.tif 000005
【図４】
2015055973.tif 000006
【図５】
2015055973.tif 000007
【図６】
2015055973.tif 000008
【図７】
2015055973.tif 000009
【図８】
2015055973.tif 000010
【図９】
2015055973.tif 000011
【図１０】
2015055973.tif 000012
【図１１】
2015055973.tif 000013