(57)【要約】【課題】複数のメンバプリンタを制御するグループプリンタドライバにおいて、機能とスループットとの双方を実現可能にすることを課題とする。【解決手段】アプリケーションからグループプリンタドライバの能力通知指示を受けると、メンバプリンタの能力のコンフリクト結果を通知するかグループプリンタドライバ固定の能力を通知するかを判断し該判断に応じた能力通知を行う仕組みを備えることを特徴とする。【選択図】　　　図２０
2004005194.tif 000002
【特許請求の範囲】
【請求項１】
複数のメンバプリンタドライバを制御可能なグループプリンタドライバによる印刷制御方法であって、
アプリケーションからグループプリンタドライバの能力通知指示を受ける受付ステップと、
能力通知方法としてメンバプリンタドライバの能力のコンフリクト結果を通知するかグループプリンタドライバ固定の能力を通知するかを判断する判断ステップと、
前記判断ステップにおいてメンバプリンタのコンフリクト結果を通知すると判断された場合は各メンバプリンタより情報を収集する情報収集ステップと、
前記収集した情報のコンフリクト処理を行うコンフリクト処理ステップと、
前記コンフリクト結果を能力としてアプリケーションに通知する第１通知ステップと、
前記判断ステップでグループプリンタドライバ固定の能力を通知すると判断された場合は、あらかじめ定義された能力を通知する第２通知ステップとを有することを特徴とする印刷制御方法。
【請求項２】
前記能力は、メンバプリンタドライバがサポートしている用紙サイズの情報を含むことを特徴とする請求項１に記載の印刷制御方法。
【請求項３】
前記判断ステップは、グループプリンタドライバのＧＵＩ上でユーザが切り替え可能であることを特徴とする請求項１または２に記載の印刷制御方法。
【請求項４】
前記複数のメンバプリンタドライバの夫々が機能制御可能か機能制御不可かで異なるコンフリクト処理を実行するコンフリクト制御ステップを有することを特徴とする請求項１から３の何れかに記載の印刷制御方法。
【請求項５】
複数のメンバプリンタドライバと該複数のメンバプリンタドライバを制御可能なグループプリンタドライバを制御する制御装置であって、
アプリケーションからグループプリンタドライバの能力通知指示を受ける受付手段と、
能力通知方法としてメンバプリンタの能力のコンフリクト結果を通知するかグループプリンタドライバ固定の能力を通知するかを判断する判断手段と、
前記判断ステップにおいてメンバプリンタのコンフリクト結果を通知すると判断された場合は各メンバプリンタより情報を収集する情報収集手段と、
前記収集した情報のコンフリクト処理を行うコンフリクト処理手段と、
前記コンフリクト結果を能力としてアプリケーションに通知する能力通知手段と、
前記判断ステップでグループプリンタドライバ固定の能力を通知すると判断された場合は、あらかじめ定義された能力を通知する通知手段を有することを特徴とする印刷制御装置。
【請求項６】
前記能力は、プリンタドライバがサポートしている用紙サイズのリストを含むことを特徴とする請求項５に記載の印刷制御装置。
【請求項７】
前記判断手段は、グループプリンタドライバのＧＵＩ上でユーザが切り替え可能であることを特徴とする請求項５または６に記載の印刷制御装置。
【請求項８】
前記複数のメンバプリンタドライバの夫々が機能制御可能か機能制御不可かで異なるコンフリクト処理を実行するコンフリクト制御手段を有することを特徴とする請求項５から７の何れかに記載の印刷制御装置。
【請求項９】
複数のメンバプリンタドライバを制御可能なグループプリンタドライバによる制御方法を実現するための情報処理装置により実行される印刷制御プログラムであって、
アプリケーションからグループプリンタドライバの能力通知指示を受ける受付ステップと、
能力通知方法としてメンバプリンタの能力のコンフリクト結果を通知するかグループプリンタドライバ固定の能力を通知するかを判断する判断ステップと、
前記判断ステップにおいてメンバプリンタのコンフリクト結果を通知すると判断された場合は各メンバプリンタより情報を収集する情報収集ステップと、
前記収集した情報のコンフリクト処理を行うコンフリクト処理ステップと、
前記コンフリクト結果を能力としてアプリケーションに通知する能力通知ステップと、
前記判断ステップでグループプリンタドライバ固定の能力を通知すると判断された場合は、あらかじめ定義された能力を通知する通知ステップを有することを特徴とする印刷制御プログラム。
【請求項１０】
前記能力は、プリンタドライバがサポートしている用紙サイズのリストを含むことを特徴とする請求項９に記載の印刷制御プログラム。
【請求項１１】
前記判断ステップは、グループプリンタドライバのＧＵＩ上でユーザが切り替え可能であることを特徴とする請求項９または１０に記載の印刷制御プログラム。
【請求項１２】
前記複数のメンバプリンタドライバの夫々が機能制御可能か機能制御不可かで異なるコンフリクト処理を実行するコンフリクト制御ステップとを有することを特徴とする請求項９から１１の何れかに記載の印刷制御プログラム。
【請求項１３】
請求項９から１２の何れかに記載のプログラムを格納したコンピュータ可読の記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、アプリケーションからの描画コマンドに対応して印刷処理を行う印刷制御方法及び印刷制御装置及び情報処理装置が実行可能な印刷制御プログラム並びにコンピュータが読み出し可能なプログラムを格納した記憶媒体に関するものである。
【０００２】
【従来の技術】
近年、ネットワーク機器が一般に利用され、ネットワーク上に多数のパソコン（以下、ＰＣ）やプリンタが接続されるようになった。このようなネットワーク環境において、印刷を行う際、ページ数の多いドキュメントあるいは部数の多いドキュメントについては、印刷時間の短縮を図るために、いったん印刷ジョブをスプールし、複数のプリンタに頁ごとあるいは部数ごとに分散して出力するシステム（分散印刷システム）が知られている。
【０００３】
また、このようなネットワーク環境において、カラー頁、モノクロ頁が混在する一つのドキュメントに対して、印刷時のコストおよび印刷時間の短縮を図るために、カラー頁はカラープリンタへ、モノクロ頁はモノクロプリンタへ分散して出力するシステム（カラー・モノクロ分散印刷システム）が知られている。
【０００４】
また、このようなネットワーク環境において、一つのドキュメントを一度の印刷指示で、複数のプリンタに同時に送信し印刷するシステム（同報印刷システム）が知られている。
【０００５】
さらに、このようなネットワーク環境において、一つのプリンタに送信したドキュメントに対し、そのプリンタでエラーが発生した場合は、自動的に他のプリンタに切り替えて印刷するシステム（エラー代行印刷システム）が知られている。
【０００６】
上記説明したような複数のプリンタ（プリンタドライバ）を対象にしたような印刷処理において、複数のプリンタ（プリンタドライバ）に対してまとめて各種印刷設定を行うような仮想プリンタドライバＵＩなどが知られている。
【０００７】
さらにこのようなネットワーク環境における印刷システムにおいては、１つの仮想的なプリンタ（グループプリンタ）と、それに関連付けられた複数のメンバプリンタを１つのクライアントマシン上に有し、グループプリンタがそれぞれのメンバプリンタの能力を問い合わせ、ＵＩの制御を行う方法が知られている。
【０００８】
また、一般にアプリケーションは印刷対象として選択しているプリンタドライバの能力をＷｉｎｄｏｗｓ（Ｒ）で定義されたＡＰＩを通じて取得することが知られている。特にＤＴＰ系のアプリケーションなどは、印刷対象として選択しているプリンタドライバが印刷可能な用紙サイズ情報（サポート用紙サイズ）をプリンタドライバに問い合わせ、その情報に応じてアプリケーション内で定義できる用紙サイズや機能を制限することが知られている。
【０００９】
さらに、一般にプリンタドライバは、アプリケーションからの能力問い合わせに対して、あらかじめ決められた能力をアプリケーションに通知することが知られている。
【００１０】
【発明が解決しようとする課題】
しかしながら、１つの仮想的なプリンタ（グループプリンタ）がアプリケーションからの能力の問い合わせに対し、グループプリンタドライバであらかじめ定義された固定の能力を通知していたため、メンバプリンタの構成によっては実際の能力と異なる場合があり、メンバプリンタの構成に従った能力を通知することが出来なかった。特にサポートしている用紙サイズのリストについては、グループプリンタ固定の用紙サイズのリストとメンバプリンタの用紙サイズのリストが異なり、アプリケーション上で作成したドキュメントの用紙サイズと実際のメンバプリンタの出力の使用される用紙サイズとを一致させることが出来なかった。また、ドキュメントの用紙サイズと実際の出力に使用される用紙サイズが一致しないため、はみ出た画像領域が切れて出力されるなどの問題があった。
【００１１】
【課題を解決するための手段】
本発明は上記目的を達成する為に、複数のメンバプリンタドライバを制御可能なグループプリンタドライバによる印刷制御方法であって、アプリケーションからグループプリンタドライバの能力通知指示を受ける受付ステップと、能力通知方法としてメンバプリンタの能力のコンフリクト結果を通知するかグループプリンタドライバ固定の能力を通知するかを判断する判断ステップと、前記判断ステップにおいてメンバプリンタのコンフリクト結果を通知すると判断された場合は各メンバプリンタより情報を収集する情報収集ステップと、前記収集した情報のコンフリクト処理を行うコンフリクト処理ステップと、前記コンフリクト結果を能力としてアプリケーションに通知する能力通知ステップと、前記判断ステップでグループプリンタドライバ固定の能力を通知すると判断された場合は、あらかじめ定義された能力を通知する通知ステップとを実現可能な仕組みを提供する。
【００１２】
【発明の実施の形態】
（第一の実施形態）
以下、本発明を適用するのに好適である実施形態について説明を行う。
【００１３】
図１は、本発明を適用可能な情報処理システムの概略構成を説明するブロック図である。なお、本システムにおけるクライアントコンピュータは、１台、または複数台接続されていることを仮定している。
【００１４】
図において、１０２、１０３、１０４はクライアントコンピュータ（クライアント）としての情報処理装置であり、イーサネット（登録商標）などのネットワークケーブルによって、ネットワーク１０６に接続され、アプリケーションプログラム等の各種のプログラムを実行可能であり、印刷データをプリンタに対応するプリンタ言語に変換する機能を有するプリンタドライバを搭載している。なお、プリンタドライバは複数のプリンタドライバをサポートするものとする。
【００１５】
１０１は本実施形態のサーバ（以下、プリントサーバと呼ぶ）としての情報処理装置であり、ネットワークケーブルによって、ネットワーク１０６に接続され、ネットワークで使用されるファイルを蓄積したり、ネットワーク１０６の使用状態を監視したりする。プリントサーバ１０１は、ネットワーク１０６に接続されている複数のプリンタを管理している。
【００１６】
構成としては、クライアント１０２〜１０４とプリントサーバ１０１は、一般的な情報処理装置であり、クライアントとプリントサーバには、それぞれ異なる制御を行う印刷制御プログラムが実行可能に格納されている。
【００１７】
本実施形態におけるプリントサーバ１０１は、さらにクライアントコンピュータ１０２、１０３、１０４から印刷要求が出されると、印字データを含む印刷ジョブを格納して印刷したり、或いは、クライアントコンピュータ１０２、１０３、１０４から印字データを含まないジョブ情報のみ受け取り、クライアントコンピュータ１０２、１０３、１０４の印刷順序を管理し、印刷順序になったクライアントに対して印字データを含む印刷ジョブのプリンタデバイスへの送信許可を通知したり、ネットワークプリンタ１０５のステータスや印刷ジョブの各種情報を取得し、クライアントコンピュータ１０２、１０３、１０４に通知したりする機能を備えている。
【００１８】
１０５は印刷制御装置であるネットワーク対応プリンタであり、図示省略したネットワークインタフェースを介してネットワーク１０６と接続されており、クライアントコンピュータ或いはプリントサーバから送信される印字データを含む印刷ジョブを解析して１ページずつドットイメージに変換して、１ページ毎に印刷する。１０６はネットワークであり、クライントコンピュータ１０２、１０３、１０４、サーバ１０１、ネットワークプリンタ１０５等を通信可能に接続している。有線／無線によって実現可能であることは言うまでもない。
【００１９】
図２は、本発明の情報処理装置の構成を説明するブロック図であり、情報処理装置であるクライントコンピュータ１０２、１０３、１０４も同じ構成であり、さらにサーバ１０１も同様或いは同等のハードウエア構成とする。よって、クライアントとサーバの構成を説明するブロック図として説明する。
【００２０】
図２において、２００は情報処理装置の制御手段であるＣＰＵであり、ハードディスク（ＨＤ）２０５に格納されているアプリケーションプログラム、プリンタドライバプログラム、ＯＳや本発明のネットワークプリンタ制御プログラム等を実行し、ＲＡＭ２０２にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。
【００２１】
２０１は記憶手段であるＲＯＭであり、内部には、基本Ｉ／Ｏプログラム等のプログラム、文書処理の際に使用するフォントデータ、テンプレート用データ等の各種データを記憶する。２０２は一時記憶手段であるＲＡＭであり、ＣＰＵ２００の主メモリ、ワークエリア等として機能する。
【００２２】
２０３は記憶媒体読み込み手段としてのフロッピー（登録商標）ディスク（ＦＤ）ドライブであり、後述する図５に示すようにＦＤドライブ２０３を通じて記憶媒体としてのＦＤ２０４に記憶されたプログラム等を本コンピュータシステムにロードすることができる。なお、記憶媒体は、ＦＤに限らず、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＰＣカード、ＤＶＤ、ＩＣメモリカード、ＭＯ、メモリスティック等、任意である。
【００２３】
２０４は記憶媒体であるフロッピー（Ｒ）ディスク（ＦＤ）であり、コンピュータが読み取り可能なプログラムが格納された記憶媒体である。
【００２４】
２０５は外部記憶手段の一つであり、大容量メモリとして機能するハードディスク（ＨＤ）であり、アプリケーションプログラム、プリンタドライバプログラム、ＯＳ、ネットワークプリンタ制御プログラム、関連プログラム等を格納している。さらにスプール手段であるスプーラはここに確保される。スプール手段は、クライアントではクライアントスプーラのことであり、プリントサーバではサーバスプーラのことである。また、プリントサーバでは、クライアントから受けたジョブ情報を格納し、順序制御を行うためのテーブルもこの外部記憶手段に生成されて格納される。
【００２５】
２０６は指示入力手段であるキーボードであり、ユーザがクライアントコンピュータに対して、また、オペレータや管理者がプリントサーバに対して、デバイスの制御コマンドの命令等を入力指示するものである。
【００２６】
２０７は表示手段であるディスプレイであり、キーボード２０６から入力したコマンドや、プリンタの状態等を表示したりするものである。
【００２７】
２０８はシステムバスであり、クライアントやプリントサーバであるコンピュータ内のデータの流れを司るものである。
【００２８】
２０９は入出力手段であるインタフェースであり、該インタフェース２０９を介して情報処理装置は外部装置とのデータのやり取りを行う。
【００２９】
図３は、図２に示したＲＡＭ２０２のメモリマップの一例を示す図であり、ＦＤ２０４からロードされる上記ネットワークプリンタ制御プログラムが、ＲＡＭ２０２にロードされ実行可能となった状態のメモリマップである。
【００３０】
本実施形態では、ＦＤ２０４からネットワークプリンタ制御プログラムおよび関連データを直接ＲＡＭ２０２にロードして実行させる例を示すが、これ以外にも、ＦＤ２０４からネットワークプリンタ制御プログラムを動作させる度に、既にネットワークプリンタ制御プログラムがインストールされているＨＤ２０５からＲＡＭ２０２にロードするようにしてもよい。
【００３１】
また、本ネットワークプリンタ制御プログラムを記憶する媒体は、ＦＤ以外にＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＰＣカード、ＤＶＤ、ＩＣメモリカードであってもよい。さらに、本ネットワークプリンタ制御プログラムをＲＯＭ２０１に記憶しておき、これをメモリマップの一部となすように構成し、直接ＣＰＵ２００で実行することも可能である。
【００３２】
また、以上の各装置と同等の機能を実現するソフトウェアをもって、ハードウェア装置の代替として構成することもできる。
【００３３】
また、本ネットワークプリンタ制御プログラムのことを、簡単に印刷制御プログラムと呼ぶこともある。印刷制御プログラムは、クライアントにおいて印刷ジョブの印刷先の変更を指示したり、印刷順序を変更する指示をするための制御を行うプログラムを含み、また、プリントサーバにおいて、印刷ジョブの順序制御を行ったり、印刷ジョブの印刷終了や印刷先変更要求などを通知するためのプログラムを含んでいる。また、このような制御を行う本発明の印刷制御プログラムは、クライアントにインストールされるモジュールと、プリントサーバにインストールされるモジュールを別々に分けてもよいし、ひとつの印刷制御プログラムが、実行される環境によりクライアント用として機能したり、またはプリントサーバ用として機能するようにしてもよい。あるいは一台のコンピュータに、クライアント用の機能を持つモジュールと、プリントサーバ用として機能するモジュールをともにインストールし、同時に、あるいは時分割で擬似的に平行動作させる構成も可能である。
【００３４】
３０１は基本Ｉ／Ｏプログラムであり、本制御装置の電源がＯＮされたときに、ＨＤ２０５からＯＳがＲＡＭ２０２に読み込まれ、ＯＳの動作を開始させるＩＰＬ（イニシャルプログラムローデイング）機能などを有しているプログラムが入っている領域である。
【００３５】
３０２はオペレーティングシステム（ＯＳ）であり、３０３はネットワークプリンタ制御プログラムで、ＲＡＭ２０２上に確保される領域に記憶される。３０４は関連データで、ＲＡＭ２０２上に確保される領域に記憶される。３０５はワークエリアで、ＣＰＵ２００が本プリンタ制御プログラムを実行する領域が確保されている。
【００３６】
図４は、図２に示したＦＤ２０４のメモリマップの一例を示す図である。図４において、４００は前記ＦＤ２０４のデータ内容であり、４０１はデータの情報を示すボリューム情報であり、４０２はディレクトリ情報、４０３は本実施形態で説明する印刷制御プログラムであるネットワークプリンタ制御プログラム、４０４はその関連データである。４０３のネットワークプリンタ制御プログラムは、実施形態で説明するフローチャートに基づいてプログラム化したものであり、本実施形態では、クライアント、サーバ共、同様の構成をとっている。
【００３７】
図５は、図２に示したＦＤドライブ２０３に対して挿入されるＦＤ２０４との関係を示す図であり、図２と同一のものには同一の符号を付してある。図５において、ＦＤ２０４には、本実施形態で説明するネットワークプリンタ制御プログラムおよび関連データを格納している。
【００３８】
次に本実施の形態における、プリンタを複数台使用して、前述の分散、同報、代行といった印刷処理を行う、印刷ジョブ制御システムについて説明する。
【００３９】
図６は本システムおいてＭｉｃｒｏｓｏｆｔ　Ｗｏｒｄ（登録商標）などの一般的なアプリケーションから発行された印刷ジョブが、印刷ジョブ制御システムにおいてどのように処理されるかを示した図である。図６において、６００はクライアントマシンで、印刷ジョブ制御システムのクライアントモジュールが動作するマシンを指す。
【００４０】
通常、印刷の指示がされるとアプリケーションプログラムは一連の描画命令を生成し、該生成された描画命令はプリンタドライバを経てＷｉｎｄｏｗｓ（Ｒ）Ｓｐｏｏｌｅｒに渡される。Ｗｉｎｄｏｗｓ（Ｒ）　Ｓｐｏｏｌｅｒは、ユーザが選択したポートモニタにプリントジョブデータを渡してプリンタデバイスに送信させる手順をとる。
【００４１】
本実施形態では、ユーザはあらかじめ印刷ジョブ制御システム用のポートモニタ６２１（以降、本実施形態ではジョブ制御ポートモニタと略記）を指定して印刷を指示する。アプリケーション６０１は入力されてくるデータが既に汎用印刷ファイルとして生成されたものでなかった場合には、図８にて詳しく説明する汎用印刷ファイルを構築する為のデータを生成する。尚、印刷指示に応じてアプリケーション６０１から既に汎用印刷ファイルとして生成されたデータがＷｉｎｄｏｗ　Ｓｐｏｏｌｅｒに投入される場合については後述（図１１〜図１４）にて詳しく説明することとする。描画命令を受け取ったグループプリンタドライバ６０３では、汎用形式のドキュメントデータ（文字、図形、写真画像等を含む）を生成し、Ｗｉｎｄｏｗｓ（Ｒ）　Ｓｐｏｏｌｅｒ６０４へ出力する。Ｗｉｎｄｏｗｓ（Ｒ）　Ｓｐｏｏｌｅｒ６０４は受け取った印刷データを通常のポートモニタではなく、ジョブ制御ポートモニタ６２１にプリントジョブデータとして送信する。ジョブ制御ポートモニタ６２１はプリントジョブデータをプリンタデバイス６５０に送信するのではなく、印刷ジョブ制御システム用プリントサービス６２２（以降、本実施形態ではジョブ制御プリントサービスと略記）に送信する。そして、ジョブ制御ポートモニタ６２１を経て（ａ）、ジョブとしてジョブ制御プリントサービス６２２に導かれる（ｂ）。ジョブ制御プリントサービス６２２はこのプリントジョブに対して汎用印刷ファイルを生成し、その汎用印刷ファイルをもとに描画命令をＯＳを介して生成させ（ｃ）、続いて各ＰＤＬドライバ６０２がその描画命令をプリンタデバイス６５０が解釈可能なＰＤＬ（ＰａｇｅＤｅｓｃｒｉｐｔｉｏｎ　Ｌａｎｇｕａｇｅ）ファイルにする。図６では、ジョブ制御プリントサービス６２２で、このプリントジョブに対してプリントジョブをふたつに分けるジョブ制御（分散印刷制御）が行われる例が示されており、２つのメンバジョブが生成された例を２つの矢印（ｃ）で示している。ＰＤＬドライバ６０２で生成されたＰＤＬファイルはＷｉｎｄｏｗｓ（Ｒ）　スプーラ６０４、ジョブ制御ポートモニタ６２１を経て（ｄ）、再びジョブ制御プリントサービス６２２に渡される（ｅ）。ジョブ制御プリントサービス６２２は、ジョブ制御サーバ６３０の送信許可の通知に従ってＰＤＬのプリントジョブデータをプリンタデバイス６５０に送信する（ｆ）。ジョブ制御プリントサービス６２２は、生成した汎用印刷ファイル中の印刷指示書（印刷指示部１０−ａに対応）の指示にしたがって、一つの汎用印刷ファイルを複数のプリントジョブに論理的に分割してそれぞれ別のプリンタデバイスに送信したり、一度送信したプリントジョブデータを別のプリンタデバイスに送信し直したりする。図中の（ｃ）（ｄ）（ｅ）（ｆ）はそのような場合のプリントジョブデータの経路を示している。
【００４２】
ここで，本実施形態における用語の技術的意味について説明しておくと、複数のプリンタを１つのプリンタとして仮想的に束ねる仮想プリンタをグループプリンタ、束ねられるプリンタをメンバプリンタと呼ぶ、また、グループプリンタ及びメンバプリンタに対応するプリンタドライバを夫々グループプリンタドライバ、メンバプリンタドライバと呼ぶこととする。
【００４３】
グループプリンタ（グループプリンタドライバ）、メンバプリンタ（メンバプリンタドライバ）を更に具体的に定義すると、アプリケーションからＯＳを介して生成される描画命令に基づいて中間形式ファイル（汎用印刷ファイル）を生成する為のデータを生成する仮想ドライバ（印刷ユーティリティー）をグループプリンタドライバと呼ぶ。そしてジョブ制御プリントサービス６２２により、先の中間形式のファイルに基づいてページ記述言語を生成させるべく各個別のプリンタに印刷指示がなされるが、この個別の各プリンタをメンバプリンタと呼ぶ。
【００４４】
一方、本実施形態において、アプリケーションにおける印刷指示に応じてＷｉｎｄｏｗｓ（登録商標）等のＯＳを介して出力される描画命令（一般的にＤＤＩ或いはＧＤＩと呼ばれている）或いはＥＭＦ（Ｅｎｈａｎｃｅｄ　Ｍｅｔａｆｉ１ｅＦｏｒｍａｔ：拡張メタファイル）を解釈しページ記述言語を生成及びデバイスへ出力させるようなプリンタドライバを通常プリンタドライバ、この時のデバイスを通常デバイスと呼び、グループプリンタやメンバプリンタと区別する。また、デバイスであるプリンタとは区別してプリンタドライバとプリンタ出力ポートとの組み合わせをプリンタと呼ぶこともある。例えば、後述する図７のＬｏｇｉｃａｌＰｏｒｔ（ジョブ制御ポートモニタ６２１）とグループプリンタドライバとの組み合わせを指定することを、グループプリンタを指定すると呼ぶこととする。
【００４５】
図６の説明に戻ると、印刷ジョブ制御システム用プリントマネージャ６２３（以降、本実施形態ではジョブ制御プリントマネージャと略記）は、ユーザがジョブ制御プリントサービス６２２内部でプリントジョブがどのような状態にあるかを調べたり、プリントジョブを操作したりするためのユーザインタフェース（ＵＩ）を提供するプログラムである。ジョブ制御プリントマネージャ６２３はジョブ制御プリントサービス６２２とソフトウェアのインタフェース（ＡＰＩ）を介して情報・指示をやり取りしている。
【００４６】
印刷ジョブ制御システム用サーバ６３０（以降、本実施形態ではジョブ制御サーバと略記）は、個々のクライアント６００上のジョブ制御プリントサービス６２２がプリンタデバイス６５０にプリントジョブデータを送信するタイミングを集中制御（スケジューリング）している。
【００４７】
印刷ジョブ制御システム用マネージメントコンソール６３３（以降、本実施形態ではジョブ制御マネージメントコンソールと略記）は、ジョブ制御サーバ６３０が持つソフトウェアがアクセスするためのＡＰＩを介してジョブ制御サーバ６３０と情報・指示をやり取りすることで、印刷ジョブ制御システム全体を監視することができる。また、ジョブ制御サーバ６３０はデバイス情報コントロールモジュール６３１を用いて各プリンタデバイス６５０と通信を行い、各プリンタ内の印刷ジョブや動作状態に関する情報を入手したり、操作を行ったりする。入手した情報はクライアント６００側のジョブ制御プリントサービス６２２に渡すことができる。
【００４８】
次に図７でＷｉｎｄｏｗｓ（Ｒ）が提供するＰｒｉｎｔＳｙｓｔｅｍと印刷ジョブ制御システムにおける印刷ジョブの関係と処理をさらに詳しく述べる。
【００４９】
図７中で印刷ジョブ制御システム７００は、サーバとクライアントの制御プログラムが動作する物理的なマシンをまたいだ、印刷ジョブ制御システムの範囲を示している。また、サーバが管理している出力ポート（Ｏｕｔｐｕｔ　Ｐｏｒｔ）７１１は、クライアントのジョブ制御プリントサービス６２２のプロキシ出力ポート（Ｐｒｏｘｙ　ＯｕｔｐｕｔＰｏｒｔ）７１２と関連付けられ、ひとつのポートに関連づけられた各クライアント上のプロキシ出力ポート全てを統一的に管理している。本実施形態では、実際のプリントジョブデータはおのおののクライアントのプロキシ出力ポート７１２に保持される。ジョブ制御サーバ６３０は、プリントジョブデータ自体の送信処理は行わず、ジョブ制御プリントサービス６２２に対して印刷ジョブの送信指示のみを行う。その指示に応じてクライアントのジョブ制御プリントサービス６２２はプリントジョブデータをデバイス６５０に送信する。
【００５０】
次に、印刷ジョブ制御システム７００における、代行印刷、分散印刷、同報印刷などの複数のプリンタを対象としたような印刷処理について説明をする。
【００５１】
印刷ジョブ制御システム７００が、代行印刷、分散印刷、同報印刷などの付加価値的な印刷を行う場合には、アプリケーション６０１はグループプリンタドライバ６０３が割り当てられたプリンタに印刷ジョブを発行しなければならない。ジョブ制御プリントサービス６２２は、グループプリンタドライバ６０３によって処理されたジョブデータをジョブ制御ポートモニタ６２１を介して汎用形式のドキュメントデータ及び印刷指示情報とを一連のジョブデータとして受け取る。図中７１０のＬｏｇｉｃａｌＰｏｒｔは、このジョブの受け入れ口であるジョブが投入されるポートを意味する。ジョブ制御プリントサービス６２２はＬｏｇｉｃａｌＰｏｒｔ７１０で受け取ったパケット化されたデータを受け取り、汎用印刷ファイル生成部７０２に渡す。汎用印刷ファイル生成部は受け取ったデータを汎用印刷ファイル７０３の形式に再構築すると共に、汎用印刷ファイル７０３として書き出す処理を実行する。
【００５２】
次にＤｅ−ｓｐｏｏｌｅｒ７０１がこの汎用印刷ファイル７０３を読み込み、ＰＤＬドライバが割り当てられた別のプリンタ（プリンタドライバ）にジョブ（メンバジョブ）を発行して印刷を行わせる。この時、Ｄｅ−ｓｐｏｏｌｅｒ７０１は後述にて詳しく説明する図１０で説明した汎用印刷ファイルの印刷指示部１０−ａを解釈し、該解釈に基づきドキュメントデータ部１０−ｂのドキュメントデータを加工して、所定の描画命令（Ｗｉｎｄｏｗｓ（Ｒ）の場合にはＧＤＩ関数に相当）に変換し、各プリンタドライバに対して印刷指示を行い印刷ジョブを発行する。例えば印刷体裁指示部（図１０参照）に、２−ＵＰの指示が記録されていた場合、用紙１枚に２ページ分のドキュメントデータを縮小レイアウトする。また出力方法指定部に分散印刷あるいは同報印刷が記録されている場合には、それらの設定に応じて印刷指示部１０−ａに記述されている複数のメンバプリンタ宛てにジョブを発行する。代行印刷の場合は、代行する条件が満たされたと判断された場合に、自動代行では予め印刷指示部１０−ａに記録された代行プリンタの設定に応じて、手動代行ではユーザの操作に応じて代行プリンタへの再ジョブが発行される。
【００５３】
また、Ｄｅ−ｓｐｏｏｌｅｒ７０１は各メンバプリンタにジョブを発行する際、メンバプリンタドライバに対応する印刷指示として、各メンバプリンタのＤＥＶＭＯＤＥを作成する必要があるが、このＤＥＶＭＯＤＥは印刷指示部１０−ａに記載された内容を適宜各メンバプリンタのＤＥＶＭＯＤＥに反映させて生成する。ＤＥＶＭＯＤＥについてもう少し詳しく説明すると、通常のプリンタドライバは、通常の印刷処理に必要な基本的な設定情報（たとえば、印刷の部数や両面印刷の可否情報）をドライバ設定情報の共通領域（Ｐｕｂｌｉｃ　ＤＥＶＭＯＤＥ）と呼ばれる領域から抽出する。この領域に設定されている情報は異なるプリンタベンダーにおいても、設定項目の読込及び書き込みが可能なように規定されている。一方、各プリンタ固有の機能として、たとえば、ステイプル機能、パンチ機能、製本印刷機能といったものは、ドライバ設定情報の拡張領域（拡張　ＤＥＶＭＯＤＥ）に記憶されおり、この領域の設定情報はプリンタベンダーによってフォーマットが異なっている。
【００５４】
クライアント側のジョブ制御プリントサービス６２２は、ＰＤＬドライバ６０２によってレンダリングされた、夫々のメンバジョブのＰＤＬデータをジョブ制御ポートモニタ６２１を介して受け取り、受け取ったジョブに関する情報をサーバ側に知らせ、ジョブデータは自身のプロキシ出力キュー（Ｐｒｏｘｙ　Ｏｕｔｐｕｔ　Ｐｏｒｔ）７１２で一時保持する。その後、ジョブ制御サーバ６３０からの送信指示を受けた後にプリントデバイス６５０に送信する。
【００５５】
尚、図６、図７においては、ジョブ制御サーバ６３０が送信許可をクライアントに発行するような形で印刷ジョブのプリンタデバイスへの送信を制御するように説明してきたが、各メンバプリンタドライバにプリンタデバイスのＩＰアドレスを割り当てておき、クライアントから直接的に印刷データ（ＰＤＬ）を送信するような形態や、図７中のアプリケーション６０１とグループプリンタＤｒｉｖｅｒ６０３が含まれるブロック（ＰＤＬＤｒｉｖｅｒが含まれるブロックは除く）とをクライアントに、それ以外の各ブロックの機能を物理的にクライアントとは別に設けられたプリンタサーバに設けるようなことも想定される。また、上に説明してきたグループプリンタについての設定について補足的に説明すると、本実施形態においては、予め設定された複数のグループプリンタドライバが選択及び利用可能な形態で保持されている。このグループプリンタドライバの設定については、複数のメンバプリンタをグループプリンタドライバ名に対応付ける設定、グループプリンタドライバに対応する出力方法（分散印刷や代行印刷等）を対応付ける設定、及びデフォルトの印刷解像度、用紙サイズ、Ｎ−ＵＰ面付等の印刷体裁設定情報などの設定が少なくとも含まれる。これらの各設定はユーザインターフェイスを介して行われ、設定された各グループプリンタは選択可能な候補としてクライアントに提供される。
【００５６】
次に、アプリケーション６０１よりＯＳを介して通常の描画命令（ＤＤＩ：Ｄｅｖｉｃｅ　Ｄｒｉｖｅｒ　Ｉｎｔｅｒｆａｃｅ）が投入されてくる際のグループプリンタドライバ６０３の処理について説明をする。
【００５７】
図８は図６、図７におけるグループプリンタドライバ６０３がアプリケーション６０１からＯＳを介して発行される描画命令を受けてＷｉｎｄｏｗｓ（Ｒ）　Ｓｐｏｏｌｅｒ６０４にデータを出力するフローを示したものである。
【００５８】
まずステップＳ８−１で、アプリケーション６０１によりＯＳを介して発行される一連の描画コマンドＤＤＩを順次受け取る。
【００５９】
次にステップＳ８−２に進み前記ステップＳ８−１で受け取ったコマンドが、描画終了のコマンドか否かを判断する。
【００６０】
前記ステップＳ８−２で終了でないと判断されれば、ステップＳ８−３に進み、印刷指示情報のデータをそのコマンドより読み取り生成する。印刷指示情報とは、本実施形態では描画コマンドとして一くくりにしているが、用紙サイズ、面付けの情報、ステープル情報など、ＵＩの設定等が含まれている。
【００６１】
次に、ステップＳ８−４に進み、前記ステップＳ８−１で受け取った描画コマンドを汎用形式のドキュメントデータに変換し生成する。ここでは、一つの描画コマンドに対して一つのドキュメントデータとしてもよいし、描画コマンドを一旦キャッシュすることにより、まとめてひとつのドキュメントデータとしてもよい。
【００６２】
次にステップＳ８−５に進み、前記ステップＳ８−４で生成された汎用形式のドキュメントデータを前記説明したＷｉｎｄｏｗｓ（Ｒ）　Ｓｐｏｏｌｅｒ６０４にパケット化して出力する。
【００６３】
次にステップＳ８−１に戻り、再びアプリケーションの描画コマンドを受け取る。
前記ステップＳ８−２で終了と判断した場合は、ステップＳ８−６に進み、前記Ｓ８−３で生成した印刷指示情報を出力する。
【００６４】
次にＳ８−７に進み、出力が終了したことを知らせるジョブ終了命令を出力し終了する。
【００６５】
このように図８のフローチャートが実行されることにより、描画命令、用紙サイズ等の情報を随時パケット化する処理が行われ、またドキュメントデータについては随時Ｓｐｏｏｌｅｒに出力され、印刷指示情報（図１０の印刷指示部１０−ａに基づくデータに相当）については、ドキュメントデータの出力後まとめて出力される。これによりグループプリンタドライバによって汎用印刷ファイルを生成する為のデータが作成さ、図７にて説明した汎用印刷ファイル生成部７０２の負荷が軽減される。
【００６６】
図９は、図８の一連の出力で得られるパケット化されたデータを模式的に示した図である。
【００６７】
まず、出力される一連のデータはＪｏｂの開始であるＪｏｂＳｔａｒｔとＪｏｂの終了であるＪｏｂｅｎｄの出力のパケットで囲まれている。また、図の汎用形式のドキュメントデータ部１、２、３、、、は前記ステップＳ８−５で出力される汎用形式のドキュメントデータが一連のパケット化データとして構成されていることを示している。また、印刷指示データ部は図９中には１つのパケットとして示されているが、ドキュメントデータど同様に複数のパケットに分割して送信するようにしてもよい。
【００６８】
ここで出力された一連のパケット化されたデータは前述したようにＷｉｎｄｏｗｓ（Ｒ）　スプーラ６０４からジョブ制御ポートモニタ６２１を経て（ａ）、ジョブとしてジョブ制御プリントサービス６２２に導かれる（ｂ）。
【００６９】
ジョブ制御プリントサービス６２２はこの送信されてきたデータに対して汎用印刷ファイルを構築し、その汎用印刷ファイルをもとに描画コマンドを生成し（ｃ）、続いて各ＰＤＬドライバ６０２がその描画コマンドをプリンタデバイス６５０が解釈可能なＰＤＬファイルにする。
【００７０】
図１０は、上に説明してきた汎用印刷ファイルの構成の一例を示した図である。
【００７１】
本実施形態で使用される汎用印刷ファイルは、印刷指示部１０−ａと、ドキュメントデータ部１０−ｂから構成される。
【００７２】
印刷指示部は、ドキュメントの情報と印刷指示を記述した部分であり、上に説明した図８のステップＳ８−５のＳ８−６にて出力された情報に基づいて構築（生成）されたものに対応する。また、ドキュメントデータは、アプリケーションのドキュメントのデータを汎用的な形式のデータに変換したものであり、プリンタ言語に依存しないデータフォーマットとなっている。変換後の形式は、ページ単位の原稿を詳細な書式をもって表現可能であれば特に問わない。実質的な標準形式のうちでは、例えばＷｉｎｄｏｗｓ（Ｒ）システムにおけるＥＭＦ（Ｅｎｈａｎｃｅｄ　Ｍｅｔａｆｉ１ｅＦｏｒｍａｔ）形式や、ＳＶＧ形式などが汎用印刷ドキュメント形式として採用できる。
【００７３】
印刷指示部はヘッダ部、ページ情報部、印刷体裁指示部、出力方法指定部、グループプリンタドライバ設定情報部、メンバプリンタ数、メンバプリンタドライバ名、メンバプリンタドライバ設定情報部などから構成されている。
【００７４】
ヘッダ部は本ファイルのバージョン識別やファイル情報などの情報を格納する部分である。
【００７５】
ページ情報部は、ドキュメントデータ部８−ｂのドキュメントデータのページ数、各ページのサイズなどの情報を格納する部分である。
【００７６】
印刷体裁指示部は、印刷ページ範囲（余白に対応）、印刷部数、ドキュメントデータの面付け情報（Ｎ−ＵＰや製本印刷など）、ステイプル指示やパンチ指示など、出力体裁に関する情報を格納する部分である。
【００７７】
出力方法指定部は、出力方法として、分散印刷、カラーモノクロ分散印刷、代行印刷、同報印刷などの情報を格納する部分である。
【００７８】
グループプリンタドライバ設定情報部は、グループプリンタドライバの設定ＵＩを介して設定された設定情報を格納する部分である。グループプリンタは出力方法毎やメンバプリンタの組み合わせて対応して複数定義できるものであり、設定された複数のグループプリンタの中からポインティングデバイスを介して指示されたグループプリンタが印刷指示部１０−ａのグループプリンタドライバ設定情報部に含まれるよう設定される。
【００７９】
メンバプリンタ数はグループプリンタドライバが関連付けているメンバプリンタの数を格納する部分である。
【００８０】
メンバプリンタドライバ名は、メンバプリンタのプリンタドライバ名を格納する部分である。
【００８１】
メンバプリンタドライバ設定情報部はメンバプリンタに対応するドライバＵＩを介して設定された設定情報として例えばＤＥＶＭＯＤＥ情報を格納する部分である。夫々の出力ポートやデバイスＩＰアドレスも含まれる。尚、ここでのドライバＵＩを介して設定された設定情報とは、グループプリンタドライバＵＩを介して各メンバプリンタに共通の印刷設定が施された後に、個別のメンバプリンタドライバに対応するドライバＵＩが開かれ変更された設定情報に対応する場合も想定される。
【００８２】
このメンバプリンタドライバ名とメンバプリンタドライバ設定情報部は、前述のメンバプリンタ数に格納された数だけの格納エリアを持っている。
【００８３】
尚、本ファイルは、印刷指示部１０−ａとドキュメントデータ部１０−ｂが分離可能な異なるファイルとして利用可能にすることも想定される。その場合、印刷指示部は印刷指示書ファイルとして、ドキュメントデータ部はドキュメントデータファイルとしてそれぞれ存在し、これらを一つのアーカイブ形式でまとめて同様に一つのファイルのように扱うことも可能である。
【００８４】
次に本実施の形態における、汎用印刷ファイルの生成に関して図１１を用いて説明する。
【００８５】
図１１は前記図７の汎用印刷ファイル生成部７０２に関して汎用印刷ファイル７０３を生成するフローを説明したものである。
【００８６】
まず、ステップＳ１１−１で、図７のＬｏｇｉｃａｌＰｏｒｔ７１０で受け取ったデータが汎用印刷ファイルであるか否かを判断する。この時点で汎用印刷ファイルであるということは、前述した図６および図７のアプリケーション６０１にてすでに汎用印刷ファイルが生成されている場合である。ステップＳ１１−１で受け取ったデータが汎用印刷ファイルであれば、ステップＳ１１−７に進み、受け取ったそのままの形を汎用印刷ファイルとして書き込み終了する。
【００８７】
ステップＳ１１−１で受け取ったデータが汎用印刷ファイルの形式でなかった場合は、ステップＳ１１−２に進み、汎用印刷ファイルを作成する為の初期化ステップを踏む。
【００８８】
次に、ステップＳ１１−３に進み、受け取った印刷ジョブデータを読み込み解読し汎用印刷データ形式に変換する。ここで受け取った印刷ジョブデータは前述の図９で説明した一連の汎用形式のドキュメントデータ部と印刷支持情報部とから成っている。
【００８９】
次に、ステップＳ１１−５に進み、汎用印刷ファイルとして書き込みを行う。
【００９０】
次にステップＳ１１−６に進み、汎用印刷ファイルの終了処理を行うとともに、前述の図７で説明したＤｅｓｐｏｏｌｅｒ７０１に汎用印刷ファイルを読み込ませる手続きなどを行い終了する。
【００９１】
次に本実施の形態における、共通設定領域と、拡張設定領域といった記憶領域をもつプリンタドライバを持つプリンタを複数台使用して、前述の分散、同報、代行といった印刷処理を行う、印刷ジョブ制御システムのためのプリンタドライバのＵＩ制御について説明する。
【００９２】
図１２は、本発明のグループプリンタドライバのＵＩ制御フローを示すフローチャートである。
【００９３】
アプリケーションからグループプリンタドライバへのＵＩ表示要求が来ると、処理はステップ１２−１へ進む。
【００９４】
ステップ１２−２は、印刷ジョブ制御システムＡＰＩを使って、グループプリンタドライバを構成するメンバプリンタドライバの識別ＩＤ問い合わせるステップであり、グループプリンタを構成する全てのメンバプリンタドライバの識別ＩＤを獲得する。
【００９５】
ステップ１２−３は、前記ステップ９−２で獲得した各メンバプリンタドライバの識別ＩＤよりメンバプリンタドライバの能力を収得するステップであり、グループプリンタを構成する全てのメンバプリンタドライバに対して、ドライバ機能の収得がドライバ設定情報の拡張領域の部分まで可能かつドライバＵＩ制御が可能な、’’機能制御可能なドライバ’’か、または、それ以外のドライバ’’機能制御不可なドライバ’’かを読み出すステップである。
【００９６】
ここで、機能制御可能／不可能について詳しく説明すると、機能制御可能とは、例えば、図７中のジョブ制御プリントサービス６２２（ソフトウェアモジュール）から、拡張設定項目である印刷設定（例えば、製本とじ代）の指示が行えたり、図１７に示されるように所定の設定項目をグレーアウト表示制御させることができるようなプリンタドライバを機能制御可能なメンバプリンタ、逆にそのようなことができないプリンタドライバを機能制御不可なメンバプリンタと呼ぶ。具体的には、プリンタドライバの拡張設定項目を設定したり、グレーアウト表示などの表示制御を行うにはプリンタドライバの制御用に開発されたＳＤＫ（Ｓｏｆｔｗａｒｅ　Ｄｅｖｅｌｏｐｍｅｎｔ　Ｋｉｔ）を知る必要があり、制御するべくプリンタドライバのＳＤＫを知らない場合などに機能制御ができないこととなる。
【００９７】
ステップ１２−４は、前記ステップで読み出した機能制御可否の情報より、メンバプリンタの構成を判定するステップであり、’’機能制御可能なドライバ’’のみで構成されている場合ステップ１２−５へ、それ以外の構成ではステップ１２−６へ進む。
【００９８】
図１３（ａ）に本発明のメンバプリンタの構成と、設定可能項目の対応を示し、図１３（ｂ）に、共通設定項目・拡張設定項目と各設定項目の対応を示す。
【００９９】
なお、本特許では共通設定項目は、前記、共通設定領域に存在する項目、拡張設定項目は、前記、拡張設定領域に存在する項目として分類し規定しているが、印刷ジョブ制御システムを運用するＯＳの違いによっては、設定項目の分類が異なる場合や設定可能項目に変更がある場合があるが、本特許のＵＩ制御フローが有効なのは言うまでもない。
【０１００】
図１４は、ステップ１２−５の詳細を表したフローである。ステップ１４−１は各メンバプリンタドライバの個々の共通設定項目に関する能力を問い合わせて、機能のコンフリクト処理を行い、その結果に基づきグループプリンタドライバＵＩで表示する項目の選択を行うステップである。
【０１０１】
機能のコンフリクト処理とは、グループプリンタの対象となる各メンバプリンタドライバに対して、各設定項目の機能のあり・なしをチェックし対象となるメンバープリンタドライバ全てに機能がある場合に、グループプリンタドライバＵＩでその機能を設定可能項目として扱い、また、１台でも、機能がないものがあればその項目については、設定不可項目として扱う処理などとして説明することができる。無論、そのほかのＡＮＤ処理に変わってＯＲ処理を利用するようなコンフリクト処理も想定される。
【０１０２】
具体例を示して前記ＵＩ制御を説明する。
【０１０３】
図１３（ｃ）中のプリンタドライバＡは、グループプリンタドライバを表しプリンタドライバ、Ｂ，Ｃ，Ｄはグループプリンタドライバを構成するメンバプリンタドライバを表し、表中の、’’あり’’、’’なし’’は各メンバプリンタドライバが製本印刷機能、ステイプル印刷機能、パンチ機能をサポートしているかどうかを示したものである。
【０１０４】
まず製本印刷機能に着目すると、ドライバＡ、Ｂは製本印刷機能があるが、ドライバＣにはその機能がないため、グループプリンタドライバＡの製本印刷機能は’’なし’’となる。
【０１０５】
同様に、ステイプル機能は、Ｂ，Ｃ，Ｄ全てのメンバプリンタドライバに機能があるため、グループプリンタドライバＡのステイプルは、’’あり’’となり、パンチ機能は、Ｂ，Ｃ，Ｄ全てのメンバプリンタドライバに機能がないため、グループプリンタドライバＡのパンチ機能は、’’なし’’となる。
【０１０６】
ステップ１４−２は、前記ステップで示した機能のコンフリクト処理を各メンバプリンタドライバの拡張設定項目に関して行うステップである。
【０１０７】
ステップ１１−３は、ステップ１４−１，１４−２で行ったコンフリクト処理の結果に基づきグループプリンタドライバＵＩ表示行い、ユーザによる項目の設定を行うステップである。
【０１０８】
前記コンフリクトの結果、機能のないものについては、ＵＩ上で設定が行えないよう、項目をグレーアウト表示、もしくは非表示といったＵＩ制御を行い、機能がある項目についてはＵＩ制御を行わない。
【０１０９】
図１７（ａ）、１７（ｂ）にＵＩのグレーアウト制御、非表示制御の具体例を示す。設定項目の両面印刷、製本印刷のダイアログボックスが前記ＵＩ制御を施した部分である。
【０１１０】
また、本ステップでは、ユーザの指定により、たとえば「製本印刷」が指定された時のパンチや、ステイプルの指定といった、機能上ありえない組み合わせが設定できないようＵＩ制御を行い設定項目に矛盾が発生しないようにする。
【０１１１】
ステップ１４−４は、グループプリンタドライバＵＩ上に設定項目がない項目をメンバプリンタのＵＩを開き詳細に設定させるステップであり、グループプリンタドライバＵＩ上で設定対象のメンバプリンタ指定するステップである。
【０１１２】
ステップ１４−５は、前記ステップで指定されたメンバプリンタドライバＵＩを開き、詳細設定を行うステップである。
【０１１３】
なお、メンバプリンタドライバＵＩを開いた場合、グループプリンタドライバで設定可能な項目についても、設定可能となり同一機能が両者に設定された場合に処理が２重にかかってしまうため、次に示すＵＩ制御を施し表示を行う。
▲１▼メンバプリンタが’’機能制御可能なドライバ’’である場合、グループプリンタドライバＵＩ上の設定項目と競合する項目については、メンバプリンタドライバＵＩでの設定が行えないように、項目をグレーアウト表示、もしくは非表示としてＵＩ制御する。
▲２▼メンバプリンタが’’機能制御不可なドライバ’’である場合、共通設定項目についてはメンバプリンタドライバで設定された設定でＵＩ表示する。ＵＩ表示後、メンバプリンタドライバＵＩ上でその項目について変更がなされた場合、ドライバＵＩを閉じるステップでグループプリンタドライバで設定された設定項目の情報を対応するメンバプリンタドライバの共通設定項目に上書きし、メンバプリンタＵＩ上での設定変更を許さない。
【０１１４】
また、上書き処理を行う際に、メンバプリンタＵＩ上での設定変更が無効であるといった警告表示を行う事も可能である。
【０１１５】
なお、本ステップでは、対象となるメンバプリンタ全て’’機能制御可能なドライバ’’であるため前記▲１▼のＵＩ制御が行われる。
【０１１６】
図１５は、ステップ１２−６の詳細を表したフローである。
【０１１７】
本ステップではメンバプリンタドライバの構成が、ステップ１２−５と異なり’’機能制御可能なドライバ’’と’’機能制御不可能なドライバ’’との混合となる。したがって、グループプリンタドライバＵＩで設定可能な項目は、共通に設定情報の読み書きが可能な基本設定項目に限定される。
【０１１８】
ステップ１５−１は、前記ステップ１４−１と同様に各メンバプリンタドライバの個々の共通設定項目に関する能力を問い合わせて、機能のコンフリクト処理を行い、その結果に基づきグループプリンタドライバＵＩで表示する項目の選択を行うステップである。
【０１１９】
ステップ１５−２は、ステップ１２−１で行ったＵＩコンフリクト処理の結果に基づきグループプリンタドライバＵＩ表示を行うステップでありコンフリクトの結果、機能のないもの及び拡張設定項目については、ＵＩ上で設定が行えないよう項目をグレーアウト表示もしくは非表示とする。
【０１２０】
ステップ１５−３は、前記ステップで設定不可であった、拡張設定項目及び各メンバプリンタが持つ固有の設定項目をメンバプリンタのＵＩを開き、詳細設定を行うステップでありグループプリンタドライバＵＩ上で設定対象のメンバプリンタ指定するステップである。
【０１２１】
ステップ１５−４は、前記ステップで指定されたメンバプリンタドライバＵＩを開き、詳細設定を行うステップである。
【０１２２】
図１６は、ステップ１５−４の詳細を表したフローである。
【０１２３】
ステップ１６−１は、メンバプリンタドライバの種別判定を行うステップであり、対象ドライバが’’機能制御可能なドライバ’’であれば、ステップ１６−２へ、それ以外であれば１６−３へ進む。
【０１２４】
ステップ１６−２は、ステップ１４−５の▲１▼で示した規則に則して、メンバプリンタドライバの共通設定項目ＵＩの制御を行うステップであり、共通設定項目に対してＵＩのグレーアウト制御等を施したＵＩ表示を行い詳細設定を行う。
【０１２５】
ステップ１６−３は、ステップ１４−５の▲２▼で示した規則に則して、メンバプリンタドライバの共通設定項目ＵＩの制御を行うステップであり、このステップを施したＵＩ表示を行い詳細設定を行う。
【０１２６】
グループプリンタドライバＵＩ上で全ての設定が終わった場合、設定終了ボタンをクリックする事でステップ１２−７の設定終了処理のステップへ進む。
【０１２７】
ステップ１２−８は、グループプリンタで設定した項目が、各メンバプリンタドライバの設定項目として矛盾がないかどうか、チェックを行うステップである。
【０１２８】
たとえば、
プリンタＡでは、Ａ４用紙にステイプル可能な位置は用紙左上のみ
プリンタＢでは、Ａ４用紙にステイプル可能な位置は用紙左下のみ
といった様に、プリンタにはデバイスのもつ機能に密接に関連した項目がある。
【０１２９】
本ステップでは、各メンバプリンタにステップ１１−３で行われた、設定機能上ありえない組み合わせについてのコンフリクトチェックの他に、各メンバプリンタドライバに対して、グループプリンタドライバＵＩ上で設定した項目が、各メンバプリンタドライバの設定項目として反映可能かどうかを、メンバプリンタドライバを対象にチェックを行う。
【０１３０】
ステップ１２−９は、前記ステップで行ったコンフリクトチェックの結果を判定するステップであり、グループプリンタドライバＵＩ上で設定した設定項目が、全てのメンバプリンタで妥当であった場合には、ステップ１２−１２に進みグループプリンタドライバＵＩの表示を終了する。判定で、設定項目にコンフリクトが発生する項目があると判定された場合には、ステップ１２−１０へ進み、「グループプリンタドライバＵＩ上で設定項目を再設定するか、もしくは、現状の設定項目で印刷処理を行うか」といったメッセージと共に、再設定、強行ボタンをＵＩ表示する。ステップ１２−１１は、再設定、強行ボタンのどちらが押されたかを判定するステップであり、再設定ボタンが押された場合には、メンバプリンタの構成によって、ステップ１４−３または、ステップ１５−２の直前に戻る。また、強行ボタンが押された場合には、ステップ１２−１２に進みグループプリンタドライバＵＩの表示を終了する。
【０１３１】
次に、本実施の形態における前述のＵＩで設定された情報の記録と前述の図１０における汎用印刷ファイルとの関係について説明する。
【０１３２】
本実施の形態においては、前述のＵＩで設定された情報について、グループプリンタドライバのドライバ設定情報（ＤＥＶＭＯＤＥ）は共通領域、拡張領域共に、前述の図１０で説明した汎用印刷ファイル内の印刷指示部に記録される。また、各メンバプリンタのドライバ設定情報（ＤＥＶＭＯＤＥ）は、共通領域、拡張領域共に、汎用印刷ファイル内のメンバプリンタのドライバ情報設定部に記録されることとなる。
【０１３３】
その後、本汎用印刷ファイルは前述の印刷ジョブ制御システムを使ったプリンティング処理にて利用され、本実施の形態における印刷を行うことが可能となる。
【０１３４】
次に前述の図１４−３および図１５−２で説明した、グループプリンタドライバのＧＵＩについて説明する。
【０１３５】
本実施の形態では、本ドライバＵＩを開くことにより、出力方法である、割合分散、カラー／白黒分散、同報、自動代行が選択でき、それぞれに対してメンバプリンタドライバの指定および設定を行うことにより、１つのプリンタドライバで複数の印刷指示が可能となるものである。
【０１３６】
なお、別の形態として、ステップＳ１２−５の処理を「少なくとも１つの機能制御可能なメンバプリンタドライバが含まれる場合のＵＩ表示」には、ステップＳ１２−６を「全て機能制御不可な場合のＵＩ表示」として、ステップＳ１２−４をそれに対応させるようにすることも想定される。
【０１３７】
この場合、「少なくとも１つの機能制御可能なメンバプリンタドライバが含まれる場合のＵＩ表示」はグループプリンタドライバでは機能制御可能なメンバプリンタドライバを対象に共通設定項目及び拡張設定項目を項目対象としてのコンフリクト処理を実行させる。その際に機能制御可能なメンバプリンタドライバＵＩが個別に指示された場合には、グループプリンタドライバでの設定項目についてはグレーアウト表させる等、重複設定が行われないような処理が行われ、機能制御不可なメンバプリンタドライバＵＩが個別に指示された場合には、グループプリンタドライバの設定項目のうち共通設定項目が設定済みとなって反映される。
【０１３８】
また、「全て機能制御不可な場合のＵＩ表示」は、グループプリンタドライバのＵＩには共通設定項目のみを対象としたコンフリクト処理を事項させる。その際に機能制御不可なメンバプリンタドライバＵＩが個別に指示された場合には、グループプリンタドライバの設定項目（共通設定項目）がメンバプリンタドライバの設定に設定済みとなって反映される。例えばグループプリンタドライバでＡ４の用紙サイズが設定されると、メンバプリンタドライバのＵＩを開いた際にもＡ４の用紙サイズが設定されている。
【０１３９】
図１８は本実施の形態のグループプリンタドライバのＵＩ操作フローを示したフローチャートである。
【０１４０】
まずステップＳ１８−１において、出力方法を指定する。出力方法には、前述のとおり割合分散、カラー／白黒分散、同報、自動代行が選択が可能である。
【０１４１】
次にステップＳ１８−２に進み、それぞれの出力方法に適したメンバプリンタの登録指定を行う。
【０１４２】
次にステップＳ１８−３に進み、それぞれの出力方法の詳細指定を行う。
【０１４３】
次にステップＳ１８−４に進み、それぞれの出力方法におけるコンフリクト対象のメンバプリンタを設定する。ここで設定されたメンバプリンタに対してのみ、図１２〜図１７で説明したグループプリンタドライバとメンバプリンタドライバのコンフリクト動作が行われる。
【０１４４】
本実施の形態の１つの例として、出力方法として割合分散（分散印刷と同義）が選択されていた場合、コンフリクト対象のメンバプリンタは、分散先のすべてのメンバプリンタのプリンタドライバが対象となるものとする。
【０１４５】
次にステップＳ１５−５に進み、上記設定した各項目の記録を行う。この設定項目の記録は、図１０で説明した汎用印刷ファイルに記録することで実現する。例えば、上記設定項目は、本汎用印刷ファイルの印刷指示部１０−ｂ中、特に、ステップＳ１５−１の設定項目においては出力方法指定部を利用して記録する。また、ステップＳ１８−２の設定項目においては、メンバプリンタ数およびメンバプリンタドライバ名、メンバプリンタドライバ情報設定部を利用して記録する。また、ステップＳ１８−３の設定項目においては、グループプリンタドライバ設定情報部を利用して記録する。
【０１４６】
次に図１９を用いて本実施の形態における、アプリケーションに用紙サイズを通知する処理におけるアプリケーションとグループプリンタドライバの関係について説明する。
【０１４７】
アプリケーションは一般に印刷対象として選択しているプリンタドライバの能力をＯＳ（例えばＷｉｎｄｏｗｓ（Ｒ））で定義されたＡＰＩ（１９０１）を通じて取得する機能を備える。特にＤＴＰ系のアプリケーションなどは、印刷対象として選択しているプリンタドライバが印刷可能な各種情報、例えば用紙サイズ情報（サポート用紙サイズ）をプリンタドライバに問い合わせ、その情報に応じてアプリケーション内で定義できる用紙サイズや機能を制限したりする。具体的に、プリンタドライバからＡ４のみがサポート情報としてアプリケーションに通知された場合に、アプリケーションにて用紙サイズがＡ３が設定されているような場合には不具合が発生することが予測され、アプリケーションにて用紙サイズの変更を促すなどの警告情報が発行されたりする。
【０１４８】
図１９において、アプリケーション６０１からグループプリンタドライバ６０３への矢印は、アプリケーションが印刷対象として選択しているグループプリンタドライバ６０３へＷｉｎｄｏｗｓ（Ｒ）で定義されたＡＰＩであるＷｉｎ３２ＡＰＩを用いて用紙情報の要求を行う際のデータ流れを示している。
【０１４９】
その逆にグループプリンタドライバ６０３からアプリケーション６０１への矢印は、グループプリンタドライバ６０３がアプリケーション６０１に対して、用紙情報の能力を返す際のデータの流れを示している。尚、本実施形態はＷｉｎｄｏｗｓ（Ｒ）のＡＰＩに限定されるものではなく、他のＯＳにて用意された関数を利用することによっても実現される。
【０１５０】
グループプリンタドライバ６０３と、各ＰＤＬドライバを結ぶ相互の矢印は、図１８まで説明したグループプリンタドライバとメンバプリンタドライバの各種情報に関するコンフリクトの制御を示している。
【０１５１】
また、ここには用紙情報に関する用紙サイズリスト情報が含まれる。また、図中、用紙情報テーブル１９０２は、グループプリンタドライバ固有の用紙情報を格納したテーブルである。このテーブルはグループプリンタドライバに対して予め固定して定義されたテーブルであり、グループプリンタドライバがロード（起動）される際、一緒にメモリーにロードされる。この用紙情報テーブルは、レジストリや外部ファイルとして定義されていてもよい。用紙サイズのリストの内容としては、グループプリンタドライバのメンバプリンタとなりうるメンバプリンタドライバがサポートする用紙サイズすべてを網羅した用紙サイズリストなどして設定とすることが可能である。用紙情報テーブル１９０２からグループプリンタドライバ６０３への矢印は、グループプリンタドライバ６０３が用紙サイズ等の用紙情報を取得する際のデータの流れを示している。
【０１５２】
次に図２０を用いてグループプリンタドライバがアプリケーションに対して用紙情報を通知する際のフローを説明する。
【０１５３】
図２０はグループプリンタドライバがアプリケーションに対して用紙情報を通知するフローを示したものである。
【０１５４】
まず、ステップＳ２０−１でグループプリンタドライバはアプリケーションよりサポート用紙問い合わせの指示をうける。
【０１５５】
次にステップＳ２０−２で、用紙サイズの通知フラグがＯＮか否かを判定し、フラグがＯＮであればステップＳ２０−３に進む。
【０１５６】
ステップＳ２３−３ではグループプリンタドライバに対応して登録された各メンバプリンタドライバにサポート用紙サイズのリストを問い合わせ取得する。
【０１５７】
次にステップＳ２０−４に進み、前記ステップＳ２０−３で収集した用紙サイズのリストについて、すべてのメンバプリンタで共通に定義されているサポート用紙サイズをグループプリンタドライバの用紙サイズにするなどのコンフリクト処理を行う。例えば、メンバプリンタドライバＡ、Ｂ、Ｃから夫々（Ａ４、Ａ３、Ｂ５）、（Ａ４、Ａ３、Ｂ４）（Ａ４、Ａ３）をサポートする用紙情報が収集されコンフリクト処理が施されると、グループプリンタドライバからアプリケーションに応答される用紙サイズ情報は（Ａ４、Ａ３）となる。
【０１５８】
次にステップＳ２０−６へ進み、前記ステップＳ２０−４で処理した用紙サイズをグループプリンタドライバの用紙サイズリストとして、アプリケーションに通知する。
【０１５９】
前記ステップＳ２０−２で通知フラグがＯＦＦであった場合、ステップＳ２０−５に進み、あらかじめ定義されている用紙情報テーブル（グループプリンタドライバデフォルトでサポートしている単数或いは複数の用紙サイズ）よりサポート用紙サイズのリストを取得する。次にステップＳ２０−６に進み、ステップＳ２０−５で取得した用紙サイズリストをアプリケーションに通知する。
【０１６０】
次に、図２１（ａ）、（ｂ）を用いて、前述の図２０のステップＳ２０−２で判断される通知フラグの設定ＵＩについて説明する。
【０１６１】
図２１の（ａ）は前述の図１８までに説明した出力方法の選択、メンバプリンタの登録指定等を行うグループプリンタドライバのシートを示したものである。図中２１−１−ａは、前述の図２０のステップＳ２０−２で説明した通知フラグの設定ＵＩを表示するためのボタンである。このボタンが押下されると、次に示す図２１の（ｂ）の通知フラグ設定画面が表示される。図中の“使用可能な出力用紙サイズを正確にアプリケーションへ通知する”が通知フラグと連動し、このチェックボックスがチェックありのときは通知フラグがＯＮ、チェックなしのときは通知フラグがＯＦＦと判定する。
【０１６２】
上記図２０のフローチャートが実現されることにより、コンフリクト処理を省略することが可能となり、より高速なスループットの良いな印刷処理を実現することが可能となる。また、コンフリクト処理を行うか否かを選択的にユーザインタフェースを介して設定することができるので、ユーザのその都度の要望に沿った印刷システムを構築することができる効果を得ることができる。
【０１６３】
（第二の実施形態）
第一の実施形態においては、グループプリンタドライバが通知する能力として用紙サイズを例に挙げて来た、第二の実施形態においては用紙サイズとは別に印字可能領域情報（上下左右の余白）を例に説明する。
【０１６４】
第一の実施の形態と異なるところは、図１９の１９０２における用紙情報テーブルに用紙サイズのリストでなく、各デバイスの印字可能領域情報（各用紙サイズに対応して画像形成可能な領域を示す情報）のリストとする点と、図２０のステップＳ２０−３、Ｓ２０−４、Ｓ２０−５において、用紙情報ではなく、各印字可能領域情報をデータとして扱う点を異ならせることで実現が可能となる。
【０１６５】
なお、第二の実施形態においては第一の実施形態の用紙サイズに変わって印字可能領域を例にしてきたが、これに限定されるものではなく、例えば印字可能領域に変わって各メンバプリンタドライバの余白情報や、解像度情報などを用紙サイズに適用するようにすることも想定される。
【０１６６】
また、特定の情報のみだけではなく、用紙サイズ、印字可能領域、解像度情報などをまとめてコンフリクト処理をするか否かの対象にさせるようなことも想定される。その場合には、図２１（ｂ）の通知フラグ設定画面は用紙サイズのみのチェックフラグをＯＮにする為のものではなく、複数のコンフリクト項目に対してコンフリクト処理を行うか否かを設定させる為のチェックフラグを指示する為のものになる。
【０１６７】
また、更なる応用例としては、例えば、「用紙サイズ」、「印字可能領域」、「解像度」の夫々に対して独立させて図２１の（ｂ）のようなユーザインターフェースを設けるようにすることも想定される。
【０１６８】
その場合には、図２１（ｂ）に示されるようなチェックボックスが項目毎に複数個設けられ、各チェックボックスの指示に応じて各項目に対応した通知フラグのＯＮ／ＯＦＦが設定され、各項目のチェックフラグのＯＮ／ＯＦＦに応じて図２０に示されたようなフローチャートが各項目毎に行われる。その際には、図１９に示される様子情報テーブル１９０２に相当する情報テーブルが各項目毎に用意されており、項目毎のステップＳ２０−５の処理で対応するテーブルが参照される。また、各項目毎にステップＳ２０−１、Ｓ２０−３、Ｓ２０−４、Ｓ２０−６が対象項目について行われる。
【０１６９】
第二の実施形態によれば、様々な項目（用紙サイズ、印字可能領域、余白情報、解像度等）或いは、それらの項目の組合せを第一の実施形態に適用することができ、よりユーザ所望の印刷環境を実現することが可能となる。
【０１７０】
（その他の実施例）
本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成される。
【０１７１】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１７２】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（Ｒ）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【０１７３】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１７４】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１７５】
【発明の効果】
以上説明したように、本発明によれば、一つの仮想的な画像入出力装置に束ねられた複数の画像入出力装置に対して印刷ジョブを制御する印刷処理システムにおいて、１つの仮想的なプリンタ（グループプリンタ）がアプリケーションからの能力の問い合わせに対し、メンバプリンタの構成に従った能力を通知することが可能となった。
【０１７６】
特にサポートしている用紙サイズのリストについては、アプリケーション上で作成したドキュメントの用紙サイズと実際のメンバプリンタの出力の使用される用紙サイズとを一致させることが可能となった。さらにドキュメントの用紙サイズと実際の出力に使用される用紙サイズが一致させることが可能になったため、画像領域が切れて出力されることがなくなった。
【０１７７】
また、グループプリンタドライバからアプリケーションに対して、コンフリクト処理を省略することにより高速な応答を行うことが可能となった。
【図面の簡単な説明】
【図１】本発明を適用可能な情報処理システムの構成を説明するブロック図。
【図２】本発明の情報処理装置の構成を説明するブロック図。
【図３】図２に示したＲＡＭ２０２のメモリマップの一例。
【図４】図２に示したＦＤ２０４のメモリマップの一例。
【図５】図２に示したＦＤドライブ２０３に対して挿入されるＦＤ２０４との関係を示す図。
【図６】本発明の情報処理装置のプリント制御モジュール構成を説明するブロック図。
【図７】プリントサーバで管理されるジョブ情報のデータ構造の一例。
【図８】グループプリンタドライバ処理フロー。
【図９】印刷ジョブの構造。
【図１０】汎用印刷ファイルの構造。
【図１１】汎用印刷ファイル生成部のフローチャート。
【図１２】グループメンバプリンタドライバＵＩ表示基本フローチャート。
【図１３】グループプリンタドライバの利用する情報の一例。
【図１４】グループメンバプリンタドライバＵＩ表示フローチャート（共通設定、拡張設定項目）。
【図１５】グループメンバプリンタドライバＵＩ表示フローチャート（共通設定項目）。
【図１６】メンバプリンタＵＩ表示基本フローチャート。
【図１７】ＵＩ制御例
【図１８】ドライバＵＩ操作フローチャート。
【図１９】用紙情報のデータフローを示した図。
【図２０】用紙情報通知処理フローチャート。
【図２１】出力設定のドライバＵＩの例。
【図１】
2004005194.tif 000003
【図２】
2004005194.tif 000004
【図３】
2004005194.tif 000005
【図４】
2004005194.tif 000006
【図５】
2004005194.tif 000007
【図６】
2004005194.tif 000008
【図７】
2004005194.tif 000009
【図８】
2004005194.tif 000010
【図９】
2004005194.tif 000011
【図１０】
2004005194.tif 000012
【図１１】
2004005194.tif 000013
【図１２】
2004005194.tif 000014
【図１３】
2004005194.tif 000015
【図１４】
2004005194.tif 000016
【図１５】
2004005194.tif 000017
【図１６】
2004005194.tif 000018
【図１７】
2004005194.tif 000019
【図１８】
2004005194.tif 000020
【図１９】
2004005194.tif 000021
【図２０】
2004005194.tif 000022
【図２１】
2004005194.tif 000023