以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
図1は、本実施形態における情報処理システムの構成を示すブロック図である。図1において、102、103、104はそれぞれ情報処理装置であり、クライアント・サーバシステムのクライアントとして機能する。各クライアントは、イーサネット(登録商標)などのネットワークケーブルによってネットワーク106に接続され、アプリケーションプログラム等の各種プログラムを実行可能である。尚、本システムにおけるクライアントは、パーソナルコンピュータであり、1台又は複数台が接続されているものとする。また各クライアントのことを「クライアントPC」とも称す。
また、クライアントPCは、印刷データをプリンタに対応するプリンタ言語に変換する機能を有するプリンタドライバを搭載している。尚、プリンタドライバは複数のプリンタドライバをサポートするものとする。
101は情報処理装置であり、クライアント・サーバシステムのサーバとして機能する。また、サーバ101はネットワークケーブルによってネットワーク106に接続され、ネットワーク106上のクライアントで使用されるファイルを蓄積したり、ネットワーク106の使用状態を監視したりする。尚、このサーバ101はネットワーク106に接続されている複数のプリンタを管理するプリントサーバとしても機能する。
本実施形態のクライアントPC102〜104及びプリントサーバ101は、一般的な情報処理装置であり、クライアントPCとプリントサーバにはそれぞれ異なる制御を行う印刷制御プログラムが実行可能に格納されている。また、プリントサーバ101はクライアントPC102〜104の機能を同時に持つこともできる。
本実施形態におけるプリントサーバ101は、更に各クライアントPC102、103、104から印刷要求が出された印字データを含む印刷ジョブを格納して印刷する機能、又はクライアントPC102、103、104から印字データを含まないジョブ情報のみ受け取り、クライアントPC102、103、104の印刷順序を管理し、印刷順序になったクライアントPCに対して印字データを含む印刷ジョブの送信許可を通知する機能、或いは後述するネットワークプリンタのステータスや印刷ジョブの各種情報などを取得し、クライアントPC102、103、104に通知する機能などを有する。
105は印刷装置であるネットワークプリンタであり、ネットワークインタフェース(不図示)を介してネットワーク106と接続され、クライアントPCから送信される印字データを含む印刷ジョブを解析して1ページずつドットイメージに変換し、1ページ毎に印刷する。106はネットワークであり、サーバ101、クライントPC102、103、104、ネットワークプリンタ105等を接続している。
図2は、本実施形態における情報処理装置の構成を示すブロック図である。尚、上述した情報処理装置であるプリントサーバ101、クライントPC102、103、104も同様或いは同等のハードウェア構成とする。よって、クライアントとサーバの構成を示すブロック図として説明する。
図2において、200は情報処理装置の制御手段であるCPUであり、後述するハードディスク(HD)に格納されているアプリケーションプログラム、プリンタドライバプログラム、オペレーティングシステム(OS)やネットワークプリンタ制御プログラム等を実行し、RAM202にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。
201は記憶手段であるROMであり、内部には基本I/Oプログラム等のプログラム、文書処理の際に使用するフォントデータ、テンプレート用データ等の各種データを記憶する。202は一時記憶手段であるRAMであり、CPU200の主メモリ、ワークエリア等として機能する。
203は記録媒体読み込み手段としてのフレキシブルディスク(FD)ドライブであり、FDドライブ203を通じて記録媒体としてのFD204に記録されたプログラム等を本コンピュータシステムにロードすることができる。尚、記録媒体はFDだけに限らず、例えばCD−ROM、CD−R、CD−RW、PCカード、DVD、ICメモリカード、MO、メモリスティック等、任意である。また、FDからのロードに関しては図5を参照して更に後述する。
204は記録媒体であるフレキシブルディスク(FD)であり、コンピュータが読み取り可能なプログラムが格納された記録媒体である。205は外部記憶手段の一つであり、大容量メモリとして機能するハードディスク(HD)であり、アプリケーションプログラム、プリンタドライバプログラム、OS、ネットワークプリンタ制御プログラム、関連プログラム等を格納している。
尚、スプール手段であるスプーラはここに確保される。スプール手段は、クライアントPCではクライアントスプーラのことであり、プリントサーバ101ではサーバスプーラのことである。また、プリントサーバ101では、各クライアントPCから受けたジョブ情報を格納し、順序制御を行うための各種テーブルもこの外部記憶手段に生成されて格納される。
206は指示入力手段であるキーボードであり、ユーザがクライアントPCに対して、或いはオペレータや管理者がプリントサーバ101に対して、デバイスの制御コマンドの命令等を入力指示するものである。
207は表示手段であるディスプレイであり、キーボード206から入力したコマンドや、プリンタの状態等を表示したりするものである。
208はシステムバスであり、クライアントPCやプリントサーバである情報処理装置内のデータの流れを司るものである。209は入出力手段であるインタフェースであり、このインタフェース209を介して外部装置とのデータのやり取りを行う。
図3は、図2に示したRAM202のメモリマップの一例を示す図であり、FD204からロードされる上述のネットワークプリンタ制御プログラムが、RAM202にロードされ、実行可能となった状態のメモリマップである。
本実施形態では、FD204からネットワークプリンタ制御プログラム及び関連データを直接RAM202にロードして実行させる例を示すが、これ以外にも、FD204からネットワークプリンタ制御プログラムを動作させる度に、既にネットワークプリンタ制御プログラムがインストールされているHD205からRAM202にロードするようにしても良い。
また、このネットワークプリンタ制御プログラムを記録した媒体は、FD以外にCD−ROM、CD−R、PCカード、DVD、ICメモリカードであっても良い。更に、このネットワークプリンタ制御プログラムをROM201に記憶させておき、メモリマップの一部となすように構成し、直接CPU200で実行することも可能である。
また、以上の各装置と同等の機能を実現するソフトウェアにより、ハードウェア装置の代替として構成することもできる。
また、このネットワークプリンタ制御プログラムのことを、簡単に印刷制御プログラムと呼ぶこともある。この印刷制御プログラムは、クライアントPCにおいて印刷ジョブの印刷先の変更を指示したり、印刷順序を変更する指示をするための制御を行うプログラムを含み、プリントサーバ101において、印刷ジョブの順序制御を行ったり、印刷ジョブの印刷終了や印刷先変更要求などを通知するためのプログラムを含んでいる。
また、このような制御を行う印刷制御プログラムは、クライアントPCにインストールされるモジュールと、プリントサーバ101にインストールされるモジュールとを別々に分けても良いし、一つの印刷制御プログラムが、実行される環境によりクライアントPC用として機能したり、プリントサーバ用として機能するようにしても良い。或いは一台のコンピュータに、クライアントPC用の機能を持つモジュールとプリントサーバ用として機能するモジュールを一緒にインストールし、同時に、或いは時分割で擬似的に平行動作させる構成も可能である。
301は基本I/Oプログラムであり、情報処理装置の電源がONされたときに、HD205からOSをRAM202に読み込み、OSの動作を開始させるIPL(イニシャルプログラムローデイング)機能などを有しているプログラムが入っている領域である。
302はOSであり、303はネットワークプリンタ制御プログラムで、RAM202上に確保される領域に記憶される。304は関連データで、RAM202上に確保される領域に記憶される。305はワークエリアで、CPU200がプリンタ制御プログラムを実行する領域が確保されている。
図4は、図2に示したFD204のメモリマップの一例を示す図である。図4において、400はFD204のデータ内容であり、401はデータの情報を示すボリューム情報であり、402はディレクトリ情報、403は本実施形態で説明する印刷制御プログラムであるネットワークプリンタ制御プログラム、404はその関連データである。403のネットワークプリンタ制御プログラムは、実施形態で説明するフローチャートに基づいてプログラム化したものであり、本実施例ではクライアントPC、サーバ共に同様の構成をとっている。
図5は、図2に示したFDドライブ203に対して挿入されるFD204の関係を示す図であり、図2と同一のものには同一の符号を付してある。図5において、FD204には、本実施形態で説明するネットワークプリンタ制御プログラムや関連データを格納している。
次に、本実施形態における情報処理装置にインストールされるプリンタドライバが扱う汎用印刷ファイルの構成について説明する。ここで、本実施形態では、複数のプリンタを1台のプリンタとして仮想的に束ねるプリンタをグループプリンタ、束ねられるプリンタをメンバプリンタと呼ぶ。また、対応するプリンタドライバをそれぞれグループプリンタドライバ、メンバプリンタドライバと呼ぶ。
図6は、本実施形態における汎用印刷ファイルの一構成例を示す図である。尚、本実施形態で使用される汎用印刷ファイルは、各クライアントPCの印刷アプリケーションから後述するグループプリンタドライバに印刷指示をした過程で生成され、印刷指示部6−aと、ドキュメントの内容を格納するドキュメントデータ部6−bとから構成される。
まず、印刷指示部6−aはドキュメントの情報と印刷指示を記述した部分である。またドキュメントデータ部6−bはアプリケーションのドキュメントのデータを汎用的な形式のデータに変換したものであり、プリンタ言語に依存しないデータフォーマットとなっている。
図6に示すように、印刷指示部6−aは、ヘッダ部、ページ情報部、印刷体裁指示部、出力方法指定部、グループプリンタドライバ設定情報部、メンバプリンタ数、メンバプリンタドライバ名、メンバプリンタドライバ設定情報部などから構成されている。
ヘッダ部は、本ファイルのバージョン識別やファイル情報などの情報を格納する部分である。ページ情報部は、ドキュメントデータ部6−bのドキュメントデータのページ数、各ページのサイズなどの情報を格納する部分である。印刷体裁指示部は、印刷ページ範囲、印刷部数、ドキュメントデータの面付け情報(N−UPや製本印刷など)、ステイプル指示やパンチ指示など、出力体裁に関する情報を格納する部分である。
出力方法指定部は、出力方法として、分散印刷、カラーモノクロ分散印刷、代行印刷、同報印刷などの情報を格納する部分である。グループプリンタドライバ設定情報部は、後述するグループプリンタドライバのユーザインタフェース(UI)の設定情報を格納する部分である。メンバプリンタ数はグループプリンタドライバが関連付けているメンバプリンタの数を格納する部分である。メンバプリンタドライバ名は、メンバプリンタのプリンタドライバ名を格納する部分である。
メンバプリンタドライバ設定情報部は、メンバプリンタのドライバUIの設定情報として、例えばDEVMODE情報を格納する部分である。
このメンバプリンタドライバ名とメンバプリンタドライバ設定情報部は、上述のメンバプリンタ数に格納された数だけの格納エリアを持っている。
尚、上述したファイルは、印刷指示部6−aとドキュメントデータ部6−bとが異なるファイルであってもかまわない。その場合、印刷指示部6−aは印刷指示書ファイルとして、ドキュメントデータ部6−bはドキュメントデータファイルとしてそれぞれ存在し、これらを一つのアーカイブ形式でまとめて同様に一つのファイルのように扱うことも可能である。
次に、図7、図8を用いて本実施形態におけるグループプリンタドライバによって表示される印刷設定用のUIについて説明する。
図7は、本実施形態におけるグループプリンタドライバのUIの一例を示す図であり、ページ設定のシートを示す画面である。この例では、原稿サイズ、出力用紙サイズ、部数、印刷の向き、ページレイアウトなどの設定情報が上述した図6に示すページ情報部或いは印刷体裁指示部に記述される。
図8は、本実施形態におけるグループプリンタドライバのUIの一例を示す図であり、出力方法のシートを示す画面である。図8において、801は割合分散、カラーモノクロ分散、同報、自動代行などの出力方法を選択し、指定するコンボボックスである。802はメンバプリンタの登録を行うためのUIを開くボタンである。尚、ここで開かれるUIについては後述する。
803はメンバプリンタを登録した後に、そのメンバプリンタの一覧を表示するリストボックスである。この一覧表示の内容は上述の801で指定した出力方法に従って、その表示内容も変更される。この中で、807はメンバプリンタを出力対象のプリンタより、一時的にはずしたり、追加したりするチェックボックスである。このチェックボックスにチェックがあれば、そのメンバプリンタを対象プリンタとみなし、チェックがなければ、そのメンバプリンタを一時的に対象プリンタからはずすことを意味している。即ち、上述の802のボタンを押下することによって表示されるUI上で登録したメンバプリンタに対し、改めてこのチェックボックスで、選択された対象メンバプリンタを一時的に対象外にすることが可能となる。
また、806はデバイス情報表示欄であり、予め設定してあるメンバプリンタの情報をメンバプリンタドライバの名称と共に表示している。804は出力方法の詳細指定を行うためのUIを開くボタンである。この詳細設定の内容は上述の801で指定した出力方法に従って、その表示内容も変更される。
805はメンバプリンタドライバのUIを開くボタンである。対象となるメンバプリンタは上述した803の一覧の中から選択することで行う。即ち、現在803上で選択されているメンバプリンタに対するメンバプリンタドライバUIを開くことが可能である。
また、メンバプリンタのUIを開く際の表示制御については後述する。
この例のように、UIを開くことにより、出力方法である割合分散、カラー/白黒分散、同報、自動代行が選択でき、それぞれに対してメンバプリンタドライバの指定及び設定を行うことにより、1つのプリンタドライバで複数の印刷指示が可能となる。
次に、図9乃至図12を用いてDOMS(Document Output Management Service:文書出力管理サービス)共有プリンタのセットアップについて説明する。
図9は、サーバにおけるグループプリンタドライバ、メンバプリンタドライバのセットアップを示すフローチャートである。まず、ステップS901において、セットアップを開始する。ここで言うセットアップとは、モジュールのインストール及びサーバ側の各種設定を含めた処理のことであり、モジュールインストール後、各種設定を行ってもかまわない。次に、ステップS902において、構成モジュールをインストールする。この構成モジュールとは後述する本システムにおいてサーバに必要な各種モジュールである。
次に、ステップS903において、プリンタポートを設定する。詳細は後述するが、システムはここで設定するプリンタポートを介して印刷ジョブを受け取り、所望の動作を実現する。そして、ステップS904において、メンバプリンタの設定を行う。ここでは、メンバプリンタとなりうるプリンタドライバを選択し、各プリンタドライバの接続ポートを上述のステップS903で設定したプリンタポートに対応させる。
次に、ステップS905において、グループプリンタの設定を行う。この設定処理は、グループプリンタの出力方法、ステップS904で設定したメンバプリンタより、各グループプリンタのメンバプリンタの指定及びグループプリンタドライバの接続ポートを上述したステップS903で設定したプリンタポートに対応させる。
そして、ステップS906において、設定内容をプリンタ管理情報として登録し、この処理を終了する。プリンタ管理情報については更に後述する。
次に、クライアントPC側における共有プリンタのインストール及び設定方法について説明する。
図10は、クライアントPCでの共有プリンタのインストールを示すフローチャートである。まず、ステップS1001において、セットアップを開始する。ここで言うセットアップとは、モジュールのインストール及びクライアントPC側の各種設定を含めた処理のことであり、モジュールインストール後、各種設定を行ってもかまわない。次に、ステップS1002において、構成モジュールをインストールする。この構成モジュールとは後述する本システムにおいてクライアントPCに必要な各種モジュールである。
次に、ステップS1003において、上述した図9で設定したサーバをネットワーク上から探索する。そして、ステップS1004において、探索したサーバより、共有設定先のサーバを選択する。即ち、ステップS1004で複数のサーバが探索された場合、それらの中から1つを選択する。尚、この際に、クライアントはサーバのOS及びOSの種類(種類及びバージョンの差異も含む)を取得するものとする。
次に、ステップS1005において、ステップS1004で選択したサーバ側にインストールされているプリンタドライバのうち共有可能なプリンタドライバを調査する。尚、共有可能か否かは、本システムが備えている機能により実現することが可能である。また、ここでは上述のステップS906でサーバに登録されたプリンタ管理情報を読み込み、サーバに登録されたグループプリンタドライバとメンバプリンタドライバの関係及び情報を取得する。このプリンタ管理情報については後述する。また、この情報の取得の際に、各メンバプリンタドライバのバージョン情報も取得するものとする。
次に、ステップS1006において、ステップS1005で調査した共有可能なプリンタドライバから共有設定したいグループプリンタドライバを選択する。選択が終了すると、ステップS1007へ進み、ステップS1006で指定したグループプリンタドライバを共有プリンタドライバとしてインストールする。そして、ステップS1008において、メンバプリンタドライバをインストールする。
ここでは、ステップS1006で指定した各グループプリンタドライバにおけるメンバプリンタを、上述のステップS1005で調査したグループプリンタそのメンバプリンタの関係情報より、自動的に調査してインストールする。即ち、グループプリンタドライバを指定し、共有インストール指示を行うと、関連したメンバプリンタドライバも自動的にインストールすることができる。
また、1つのメンバプリンタが複数のグループプリンタのメンバになっている場合には、メンバプリンタドライバの共有インストールを1つだけ行えば良い。更に、追加インストールに際して、既に共有インストールされているメンバプリンタドライバは改めてインストールさせないようにしても良い。
図11は、クライアントPCに共有インストールを行う際のセットアップ画面の一例を示す図である。図11に示すように、プリンタの一覧にリストアップされているプリンタはサーバ上で共有設定されたプリンタの一覧で、“分散くん1号”はグループプリンタを表し、“Printer-A”〜“Printer-D”の4つのプリンタは“分散くん1号”のメンバプリンタを表している。図10の説明を補足すると、ステップS1006でグループプリンタドライバである“分散くん1号”を選択すると、そのメンバプリンタである“Printer-A”〜“Printer-D”のプリンタドライバも自動的にクライアントPCに共有インストールされる。
次に、図12を用いて図9に示すステップS906において登録するプリンタ管理情報について説明する。
図12は、本実施形態におけるプリンタ管理情報テーブルの構成の一例を示す図である。図12に示すように、プリンタ管理情報として、登録されたグループプリンタの数及び各グループプリンタの情報を保持している。各グループプリンタ情報としては、グループプリンタ名、共有設定されているか否か、ポート情報、及び分散印刷や同胞印刷などの出力方法や出力方法に必要な情報を設定情報として保持している。また、メンバプリンタの情報としてメンバプリンタ数及びそれぞれのメンバプリンタ名を保持している。図12に示す例では、グループプリンタ数が2で、まずグループプリンタ名1のグループプリンタはメンバプリンタが3つあり、それぞれのメンバプリンタ名はA,B,Cである。次に、グループプリンタ名2では、対応しているメンバプリンタが3つあり、それぞれのメンバプリンタ名はA,B,Dであることを表している。
また、メンバプリンタの管理情報として、総メンバプリンタ数と各メンバプリンタ情報を保持している。各メンバプリンタ情報としては、メンバプリンタ名、共有設定されているか否か、及びポート情報や出力方法に応じた情報を保持している。図12に示す例では、メンバプリンタの総数は4であり、メンバプリンタと名としてA,B,C,Dを保持している様子を示している。また、グループプリンタとメンバプリンタとの関連はグループプリンタの管理情報として保持しているメンバプリンタのメンバプリンタ名によって管理され、関連付けられている。この管理情報は図9に示すステップS906においてサーバにファイル或いはメモリ上にテーブル形式で保存、管理され、上述のステップS1005でクライアントPC側から参照可能となっているものである。
従って、ステップS1008では、この管理情報よりグループプリンタに属するメンバプリンタが自動的に判断され、共有インストールすることが可能となる。また、この管理情報はクライアントPC側からの登録変更が可能であっても良い。
次に、プリンタを複数台使用して上述した分散、同報、代行といった印刷処理を行う、印刷ジョブ制御システムについて説明する。
図13は、アプリケーションから発行された印刷ジョブが本実施形態の印刷ジョブ制御システムにおいてどのように処理されるかを示す図である。図13に示すように、本実施形態では、印刷システムはクライアントとサーバとから構成されている。サーバ側はOSによって提供される印刷システムと印刷ジョブ制御システムとで構成され、クライアントはサーバ上のプリンタドライバの共有によって関連付けられている。
まず、この共有について説明すると、クライアント上のグループプリンタドライバ2301及びメンバプリンタドライバ2302−1、2302−2は、OSによって提供される印刷システムの枠組みの中で、サーバ上のグループプリンタドライバ603、スプーラ604、メンバプリンタドライバであるPDLドライバ602が共有プリンタドライバとして設定されている。図中ではグループプリンタドライバの共有設定の関係を破線双方向矢印、23−dで示している。また、メンバプリンタ同士の共有設定については、PDLドライバ2302−1とPDLドライバ602の共有プリンタの関係を破線23−eで示している。同様に、PDLドライバ2302−2とPDLドライバ602については破線23−fで示している。
上述したように、いずれの場合も共有プリンタはOSによって提供される印刷システム枠組みの中で設定されており、OSによって提供される印刷システム共有プリンタ機能を備えている。
次に、印刷ジョブの流れについて説明する。通常、ユーザがクライアントPCで印刷の指示を行うと、アプリケーションプログラムが一連の描画命令を生成し、その描画命令はプリンタドライバを経てOSのスプーラに渡される。そして、OSのスプーラは、ユーザが選択したポートモニタにプリントジョブデータを渡してプリンタデバイスに送信させる手順をとる。
本実施形態では、ユーザは予め印刷ジョブ制御システム用のポートモニタ621(以降、ジョブ制御ポートモニタと略記)を指定して印刷を指示する。クライアント上のアプリケーションプログラムは一連の描画命令を生成する。この描画命令を受け取ったグループプリンタドライバ2301では、汎用形式のドキュメントデータを生成し、図13に示す矢印23−bのルートでOSのスプーラ2303へ出力する。
上述したように、クライアントPC側のグループプリンタドライバ2301とサーバ側のグループプリンタドライバ603とはOSによって提供される印刷システムの中で共有設定されているため、スプーラ2303に送られたジョブは、図13に示す矢印23−cのルートでサーバ側のスプーラ604に送られる。
一方、サーバ側のスプーラ604は、受け取った印刷データをポートモニタではなく、ジョブ制御ポートモニタ621にプリントジョブデータとして送信する。このジョブ制御ポートモニタ621はプリントジョブデータをプリンタデバイス650に送信するのではなく、印刷ジョブ制御システム用プリントサービス622(以降、本実施形態ではジョブ制御プリントサービスと略記する)に送信する。ジョブ制御プリントサービス622は、プリントジョブデータに対して後述するような印刷ジョブ制御処理を行う。
印刷ジョブ制御システム用のプリントマネージャ623(以降、本実施形態ではジョブ制御プリントマネージャと略記する)は、ユーザがジョブ制御プリントサービス622の内部でプリントジョブがどのような状態にあるかを調べたり、プリントジョブを操作したりするためのUIを提供するプログラムである。
また、ジョブ制御プリントマネージャ623は、ジョブ制御プリントサービス622のソフトウェアのインタフェース(API)を介してジョブ制御プリントサービス622と情報・指示をやり取りする。
印刷ジョブ制御システム用のサーバ630(以降、本実施形態ではジョブ制御サーバと略記する)は、サーバ上のジョブ制御プリントサービス622がプリンタデバイス650にプリントジョブデータを送信するタイミングを集中制御(スケジューリング)する。
印刷ジョブ制御システム用のマネージメントコンソール633(以降、本実施形態ではジョブ制御マネージメントコンソールと略記する)は、ジョブ制御サーバ630が有するソフトウェアがアクセスするためのAPIを介してジョブ制御サーバ630と情報・指示をやり取りすることで、印刷ジョブ制御システム全体を監視することができる。
また、ジョブ制御サーバ630はデバイス情報コントロールモジュール631を用いて各プリンタデバイス650と通信を行い、各プリンタ内の印刷ジョブや動作状態に関する情報を入手したり、操作を行ったりする。また、入手した情報はクライアント側のジョブ制御プリントサービス622に渡すことができる。
ここで、ジョブ制御プリントサービス622は前述した汎用形式のドキュメントデータに基づき、そのプリントジョブに対して汎用印刷ファイルを生成する。そして、その汎用印刷ファイルに基づいてデスプーラ701が描画コマンド(c)を生成し、続いてPDLドライバ602がその描画コマンドをプリンタデバイス650が解釈可能なPDLファイルにする。
図13に示す例では、ジョブ制御プリントサービス622が、プリントジョブに対して分散印刷などプリントジョブを二つに分けるジョブ制御を行う例で、2つのメンバジョブが生成された例を2つの矢印(c)で示している。
次に、PDLドライバ602で生成されたPDLファイルはOSのスプーラ604及びジョブ制御ポートモニタ621を経て(d)、再びジョブ制御プリントサービス622に渡される(e)。ジョブ制御プリントサービス622は、ジョブ制御サーバ630の指示に従ってPDLのプリントジョブデータをプリンタデバイス650に送信する(f)。
このように、ジョブ制御プリントサービス622は、生成した汎用印刷ファイルの中の印刷指示書の指示に従って、一つの汎用印刷ファイルを複数のプリントジョブに論理的に分割してそれぞれ別のプリンタデバイスに送信したり、一度送信したプリントジョブデータを別のプリンタデバイスに送信し直したりする。図13に示す(c)〜(f)は、そのような場合のプリントジョブデータの経路である。
次に、OSが提供する印刷システムと、印刷ジョブ制御システムにおける印刷ジョブの関係と処理概要を更に詳しく説明する。
図13に示すように、印刷ジョブ制御システム700は印刷ジョブ制御システムの範囲を示し、管理している出力ポート(Output Port)711はジョブ制御プリントサービス622のプロキシ出力ポート(Proxy Output Port)712と関連付けて管理している。本実施形態では、実際のプリントジョブデータはプロキシ出力ポート712に保持される。そして、ジョブ制御サーバ630は、プリントジョブデータ自体の送信処理は行わず、ジョブ制御プリントサービス622に対して印刷ジョブの送信指示のみを行う。その指示に応じてジョブ制御プリントサービス622はプリントジョブデータをデバイス650に送信する。
この処理において本実施形態では、ジョブ制御サーバ630は印刷ジョブ制御システム700として、ジョブ制御プリントサービス622と同じサーバ上にインストールされて存在するが、ジョブ制御サーバ630を印刷ジョブ制御システムとして別の装置上にインストールし、サーバの如く動作させることも可能である。この場合、実際のジョブ制御サーバ630が管理しているOutputPort711はそれぞれのジョブ制御プリントサービス622のプロキシ出力ポート(Proxy Output Port)712と関連付けられ、一つのポートに関連づけられた各装置上のプロキシ出力ポート全てを統一的に管理することとなる。
次に、印刷ジョブ制御システム700が代行印刷、分散印刷、同報印刷などの付加価値的な印刷を行う場合の処理を説明する。
まず、印刷ジョブ制御システム700が代行印刷、分散印刷、同報印刷などの付加価値的な印刷を行う場合には、上述したように、ユーザ又はアプリケーションはグループプリンタドライバ2301が割り当てられたプリンタに印刷ジョブを発行しなければならない。次に、ジョブ制御プリントサービス622はグループプリンタドライバ2301で処理されたジョブデータをジョブ制御ポートモニタ621を介して汎用形式のドキュメントデータ及び印刷指示情報の一連のジョブデータとして受け取る。図13に示すLogicalPort710は、このジョブの受け入れ口である。
次に、ジョブ制御プリントサービス622はLogicalPort710で受け取ったパケット化されたデータジョブを受け取り、汎用印刷ファイル生成部702に渡す。この汎用印刷ファイル生成部702は前述した、受け取ったデータジョブを汎用印刷ファイル703の形式に生成し尚し、汎用印刷ファイル703として書き出す。
次に、デスプーラ701がこの汎用印刷ファイル703を読み込み、PDLドライバが割り当てられた別のプリンタにジョブ(メンバジョブ)を発行して印刷を行わせる。この時、デスプーラ701は前述した図6で説明した汎用印刷ファイルの印刷指示部6−aを解釈する。そして、ドキュメントデータ部6−bのドキュメントデータを加工してOSの描画インタフェース、この場合、Microsoft社のOSであるWindows(登録商標)シリーズのGDI(Graphic Device Interface)に変換し、各プリンタドライバに対して印刷指示を行い、印刷ジョブを発行する。
例えば、印刷指示部6−aの印刷体裁指定部に2−UPの指示が記録されていた場合、用紙1枚に2ページ分のドキュメントデータを縮小レイアウトする。また、分散印刷或いは同報印刷の場合には、それらの設定に応じて印刷指示部6−aに記述されている複数のメンバプリンタにジョブを発行する。代行印刷の場合は、代行する条件が満たされた時に、自動代行では事前の設定時に、手動代行ではユーザの操作に応じてメンバジョブを発行する。図13では上述した通り、分散印刷などにおけるメンバジョブを2つに分けて発行している様子を示している。
また、デスプーラ701は各メンバプリンタにジョブを発行する際に、メンバプリンタドライバに対応する印刷指示として、各メンバプリンタのDEVMODEを作成する必要があるが、このDEVMODEは印刷指示部6−aに記載された内容を適宜各メンバプリンタのDEVMODEに反映させて生成する。
このようにして、ジョブ制御プリントサービス622はPDLドライバ602によってレンダリングされた、それぞれのメンバジョブのPDLデータをジョブ制御ポートモニタ621を介して受け取り、受け取ったジョブに関する情報をサーバ側に知らせ、ジョブデータは自身のプロキシ出力キュー(Proxy Output Port)712で一時保持する。その後、ジョブ制御サーバ630からの送信指示を受けた後に、プリントデバイス650に送信する。
次に、グループプリンタドライバ2301によって表示されるプリンタ情報の取得方法について説明する。
図13に示す印刷ジョブ制御システム700内のプリンタ情報管理部704は、セットアップ時にユーザが入力したプリンタ情報及びジョブ制御サーバ630からデバイス状態を取得し、管理するものである。また、印刷ジョブ制御システム700が動作するサーバ上のOS及びそのバージョン情報、また実際に印刷ジョブを生成する各メンバプリンタのプリンタドライババージョンの各情報についての情報も保持している。
また、プリンタ情報管理部704で管理されている情報はプリンタ情報管理部2304としてクライアント内にも存在する。そして、プリンタ情報管理部2304はサーバ内のプリンタ情報管理部704と通信することが可能である。実線23−jはその関係を示すものである。
グループプリンタドライバ2301はプリンタ情報の取得のために、クライアント内のプリンタ情報管理部2304のAPIをコールして取得する。一方、APIコールされたプリンタ情報管理部2304は、サーバ上のプリンタ情報管理部704に23−jの経路で問い合わせ、プリンタ情報を取得し、グループプリンタドライバに返す。
尚、プリンタ情報のアップデートは、グループプリンタドライバ2301の指示により動的にプリンタ情報管理部2304がジョブ制御サーバ630に問い合わせて最新の情報を取得しても良いし、プリンタ情報管理部2304がジョブ制御サーバ630からの通知を受けて自動的にアップデートする方法でも良い。
ここで、本実施形態における共通設定領域と拡張設定領域とから構成される記憶領域を有するプリンタドライバを持つプリンタを複数台使用し、分散、同報、代行といった印刷処理を行う印刷ジョブ制御システム700のためのプリンタドライバのUI制御について説明する。
図14は、グループプリンタドライバのUI制御を示すフローチャートである。まず、クライアントにおいてアプリケーションからグループプリンタドライバ2301へのUI表示要求があると、ステップS1401へ処理を進め、印刷ジョブ制御システム700のAPIによりグループプリンタドライバを構成するメンバプリンタドライバの識別IDを問い合わせ、全てのメンバプリンタドライバの識別IDを獲得する。また同様に、サーバのOS、OSバージョン及び各メンバプリンタのドライババージョンの各情報についても取得する。また、自クライアント装置のOS、OSバージョン及びサーバ上の各メンバプリンタドライバのプリンタドライババージョンは自装置内部から取得すれば良い。
次に、ステップS1402において、グループプリンタドライバに対して登録されている各メンバプリンタドライバの識別IDよりメンバプリンタドライバの能力を収得する。つまり、グループプリンタを構成する全てのメンバプリンタドライバに対して、ドライバ機能の収得がドライバ設定情報の拡張領域の部分まで可能、かつドライバUI制御が可能な“機能制御可能なドライバ”か、又はそれ以外の“機能制御不可なドライバ”かを読み出す。また同時に、サーバのOS/OSバージョン及びサーバ上の各メンバプリンタドライバのプリンタドライババージョンと、クライアントのOS/OSバージョン及びクライアント上の各メンバプリンタドライバのプリンタドライババージョンとを比較し、プリンタドライバの設定詳細を納めたDEVMODEがサーバ/クライアントで互換性があるかないかを調査する。そして、このステップS1402の処理により、サーバとクライアントとの間におけるOSの種類やプリンタドライバのバージョンの差異などの印刷システムでの環境の差異によって生じる不都合を未然に防ぐことができる。
尚、サーバのOS、OSバージョン及びサーバ上の各メンバプリンタドライバのプリンタドライババージョンはステップS1402の前に通信回線を介してサーバから取得するようにしても良いし、上に説明したステップS1004及びステップS1005において取得したサーバのOS、OSバージョン及びサーバ上の各メンバプリンタドライバのプリンタドライババージョンを利用するようにしても良い。
通常、クライアント/サーバとも同一OS、かつサーバの全てのメンバプリンタドライバのプリンタドライババージョンの方がクライアントの各メンバプリンタドライバのプリンタドライババージョンより新しい場合に互換性があると判断できる。
一方、サーバとクライアントとの間でOSが異なる場合には互換性がないものとする。また、サーバにおける何れかのプリンタドライババージョンのほうがクライアントにおける何れかのプリンタドライババージョンよりも低い場合に互換性がないと判断できる。互換性がない場合には、クライアントからは制限された印刷設定を施した印刷データをサーバに転送することになる。
また、以下の説明において、互換性があるということは、サーバの各メンバプリンタドライバのバージョンがクライアントにおける各メンバプリンタドライバのバージョンよりも全て新しい場合で、クライアントからサーバに対して所定の処理の指示を行なう場合に、自由な指示を行なうことができるということを意味する。
次に、ステップS1403において、ステップS1402で読み出した機能制御可否の情報とサーバ及びクライアント間のドライバ互換性とにより、メンバプリンタの構成を判定する。ここで、“機能制御可能なドライバ”のみで構成されている場合はステップS1404へ、それ以外の構成ではステップS1405へ進む。
図15は、本実施形態におけるメンバプリンタの構成と、設定可能項目の対応を示す図である。図16は、共通設定項目・拡張設定項目と各設定項目の対応を示す図である。
尚、本実施形態では、共通設定項目は共通設定領域に存在する項目、また拡張設定項目は拡張設定領域に存在する項目として分類し規定しているが、印刷ジョブ制御システムを運用するOSの違いによっては設定項目の分類が異なる場合や設定可能項目に変更がある場合もあるが、このUI制御が有効なのは言うまでもない。
ここで、図14に戻り、ステップS1404では、メンバプリンタが“機能制御可能なドライバ”のみで構成されている場合のUI表示を行う。
図18は、ステップS1404の詳細を示すフローチャートである。まず、ステップS1801において、各メンバプリンタドライバの個々の共通設定項目に関する能力を問い合わせて、機能のコンフリクト処理を行い、その結果に基づきグループプリンタドライバUIで表示する項目の選択を行う。
尚、機能のコンフリクト処理とは、グループプリンタの対象となる各メンバプリンタドライバに対して各設定項目(機能)の有・無をチェックし、対象となるメンバープリンタドライバ全てに機能がある場合に、グループプリンタドライバUIでその機能を設定可能項目として扱い、また1台でも機能がないものがあれば、その項目については、設定不可項目として扱う処理である。
ここで、図17に示す具体例を用いて上述のUI制御について説明する。図17に示す例では、プリンタドライバAはグループプリンタドライバを表し、プリンタドライバB、C、Dはグループプリンタドライバを構成するメンバプリンタドライバをそれぞれ表し、図中の“あり”、“なし”は各メンバプリンタドライバが製本印刷機能、ステイプル印刷機能、パンチ機能をサポートしているか否かを示したものである。
まず、製本印刷機能に着目すると、メンバプリンタドライバB、Dには製本印刷機能があるが、メンバプリンタドライバCにはその機能がないため、グループプリンタドライバAの製本印刷機能は“なし”となる。次に、ステイプル機能は、メンバプリンタドライバB、C、Dの全てに機能があるため、グループプリンタドライバAのステイプル機能は、“あり”となる。また同様に、パンチ機能は、メンバプリンタドライバB、C、Dの全てに機能がないため、グループプリンタドライバAのパンチ機能は、“なし”となる。
次に、ステップS1802において、上述のステップS1402で示したサーバ及びクライアント間のプリンタドライバ互換性のチェックを行なう。そしてこのチェック結果に基づき、各メンバプリンタドライバのどのような項目(機能)に関して拡張設定項目のコンフリクト処理を行うかを判定する。そして、ステップS1803又はステップS1805において、ステップS1802の結果に基づき決定された機能の拡張設定項目におけるコンフリクト処理を各メンバプリンタドライバ間で行なう。尚、ステップS1802で、サーバ及びクライアント間のドライバ互換性無しと判断された場合は、拡張設定項目のうち常時設定可能項目のみが対象となり、その他の拡張設定項目は、機能が無いと見なされる。
図16に、拡張設定項目における常時設定可能項目(機能)と、ドライバ非互換時設定不可能項目(機能)との関係が図示されている。
次に、ステップS1804又はステップS1806では、上述のコンフリクトの結果、複数のメンバプリンタドライバのうち何れかにおいて機能のないものについては、UI上で設定が行えないよう、項目をグレーアウト表示するか、もしくは非表示といったUI制御を行い、機能がある項目についてはUI制御を行わない。
図21は、UI制御で設定項目をグレーアウト表示した一例を示す図である。図21において、設定項目の両面印刷、製本印刷のダイアログボックスがUI制御を施した部分である。尚、表示制御としてはグレーアウト表示制御に限定されるものではなく、非表示ととするような制御でも適用可能である。
また、ステップS1804又はステップS1806では、ユーザの指定により、例えば「製本印刷」が指定された時のパンチや、ステイプルの指定といった、機能上ありえない組み合わせに関しては設定できないようにUI制御を行い、設定項目に矛盾が発生しないようにするものとする。
次に、ステップS1807において、グループプリンタドライバUI上に設定項目がない項目をメンバプリンタのUIを開き詳細に設定させる場合、グループプリンタドライバUI上で設定対象のメンバプリンタを指定する。そして、ステップS1808において、ステップS1807で指定したメンバプリンタドライバUIを開き、詳細設定を行う。
尚、ステップS1807及びステップS1808は、サーバ/クライアント間で設定に互換性がある場合しか意味のない設定であるため、サーバ及びクライアント間でドライバ互換性がない場合はステップS1806の段階でメンバプリンタを指定し開くことができないように表示される。
また、メンバプリンタドライバUIを開いた場合に、グループプリンタドライバで設定可能な項目についても設定可能となり、同一機能が両者に設定された場合に処理が2重にかかってしまうため、次に示すUI制御を施して表示を行う。
(1)メンバプリンタが“機能制御可能なドライバ”である場合、グループプリンタドライバUI上の設定項目と競合する項目については、メンバプリンタドライバUIでの設定が行えないように、項目をグレーアウト表示、もしくは非表示としてUI制御する。
(2)メンバプリンタが“機能制御不可なドライバ”である場合、共通設定項目についてはメンバプリンタドライバで設定された設定でUI表示する。UI表示後、メンバプリンタドライバUI上でその項目について変更がなされた場合、メンバプリンタドライバUIを閉じるときにグループプリンタドライバで設定された設定項目の情報を対応するメンバプリンタドライバの共通設定項目に上書きし、メンバプリンタドライバUI上での設定変更を許さない。
また、上書き処理を行う際に、メンバプリンタドライバUI上での設定変更が無効であるといった警告表示を行うことも可能である。
尚、このステップでは、対象となるメンバプリンタ全て“機能制御可能なドライバ”であるため、上記(1)のUI制御が行われる。
次に、図14に示すステップS1405におけるメンバプリンタが機能制御不可な場合のUI表示の詳細な処理について説明する。
図19は、ステップS1405の詳細な処理を示すフローチャートである。ここでは、メンバプリンタドライバの構成がステップS1404の場合と異なり、“機能制御可能なドライバ”と“機能制御不可能なドライバ”との混合となっている場合である。従って、グループプリンタドライバUIで設定可能な項目は、共通に設定情報の読み書きが可能な基本設定項目に限定される。
まず、ステップS1901において、上述したステップS1801と同様に、各メンバプリンタドライバの個々の共通設定項目に関する能力を問い合わせ、機能のコンフリクト処理を行い、その結果に基づき、グループプリンタドライバUIで表示する項目の選択を行う。次に、ステップS1902において、上述したステップS1403で示したプリンタドライバ互換性のチェック結果に基づき、各メンバプリンタドライバのUI表示を可能とするかを判定する。
そして、ステップS1903又はステップS1904において、ステップS1901で行ったUIコンフリクト処理の結果に基づき、グループプリンタドライバUI表示を行う。尚、コンフリクト処理の結果、機能のないもの及び拡張設定項目については、UI上で設定が行えないように項目をグレーアウト表示もしくは非表示とする。
次に、ステップS1905において、設定不可であった、拡張設定項目及び各メンバプリンタが持つ固有の設定項目をメンバプリンタのUIを開き、詳細設定を行う。ここでは、グループプリンタドライバUI上で設定対象のメンバプリンタを指定する。ステップS1906では、ステップS1905で指定したメンバプリンタドライバUIを開き、詳細設定を行う。
ステップS1905及びステップS1906は、サーバ/クライアント間で設定に互換性がある場合しか意味のない設定であるため、サーバ及びクライアント間でドライバ互換性がない場合は、ステップS1904の段階でメンバプリンタを指定し開くことができないように表示する。
図20は、ステップS1906の詳細な処理を示すフローチャートである。ステップS2001において、メンバプリンタドライバの種別判定を行う。ここで、対象ドライバが“機能制御可能なドライバ”であればステップS2002へ進み、それ以外であれば2003へ進む。
ステップS2002では、ステップS1808において説明した(1)の規則に則してメンバプリンタドライバの共通設定項目UIの制御を行う。具体的には、共通設定項目に対してUIのグレーアウト制御等を施したUI表示を行い、詳細設定を行う。
また、ステップS2003では、ステップS1808において説明した(2)の規則に則してメンバプリンタドライバの共通設定項目UIの制御を行う。このステップを施したUI表示を行い、詳細設定を行う。
ここで、図14に戻り、ステップS1406において、設定終了か否かを判定し、設定終了でなければステップS1411へ進み、メンバプリンタの構成から再設定する場合にはステップS1402へ、構成はそのままであればステップS1403へ戻る。また、グループプリンタドライバUI上で全ての設定が終了し、設定終了ボタンがクリックされるとステップS1407へ進む。
このステップS1407では、グループプリンタで設定した項目が、各メンバプリンタドライバの設定項目として矛盾がないか否かをチェックする。例えば、
プリンタAでは、A4用紙にステイプル可能な位置は用紙左上のみ
プリンタBでは、A4用紙にステイプル可能な位置は用紙左下のみ
といったように、プリンタにはデバイスのもつ機能に密接に関連した項目がある。
このステップS1407では、各メンバプリンタに設定機能上ありえない組み合わせについてのコンフリクトチェックの他に、各メンバプリンタドライバに対して、グループプリンタドライバUI上で設定した項目が、各メンバプリンタドライバの設定項目として反映可能か否かを、メンバプリンタドライバを対象にチェックする。
次に、ステップS1408において、ステップS1407でのコンフリクトチェックの結果を判定し、グループプリンタドライバUI上で設定した設定項目が、全てのメンバプリンタで妥当であった場合には、このグループプリンタドライバUIの表示を終了する。また、設定項目にコンフリクトが発生する項目があると判定した場合にはステップS1409へ進み、「グループプリンタドライバUI上で設定項目を再設定するか、もしくは、現状の設定項目で印刷処理を行うか」といったメッセージと共に、再設定ボタン及び強行ボタンをUI表示する。そして、ステップS1410において、再設定ボタンか強行ボタンのどちらが押されたかを判定する。ここで、再設定ボタンが押された場合にはステップS1411へ進み、メンバプリンタの構成から再設定する場合にはステップS1402へ、構成はそのままであればステップS1403へ戻る。また、強行ボタンが押された場合には、このグループプリンタドライバUIの表示を終了する。
次に、上述したUIで設定された情報の記録と図6に示した汎用印刷ファイルとの関係について説明する。
本実施形態においては、上述したUIで設定された情報について、グループプリンタドライバのドライバ設定情報(DEVMODE)は共通領域、拡張領域共に、図6を用いて説明した汎用印刷ファイル内の印刷体裁指示部に記録される。また、各メンバプリンタのドライバ設定情報(DEVMODE)は、共通領域、拡張領域共に、汎用印刷ファイル内のメンバプリンタのメンバプリンタドライバ情報設定部に記録される。
その後、汎用印刷ファイルは上述した印刷ジョブ制御システムを使った印刷処理に利用され、本実施形態における印刷を行うことが可能となる。
尚、本実施形態においてはグループプリンタドライバにおける表示制御を説明してきたが、本発明はこれに限定されるものではなく、例えば所定のプリントデバイスに印刷出力を行なわせるための単独プリンタドライバのユーザインタフェースに適用することも可能である。
即ち、サーバとクライアントとの間のOSの種類やプリントドライバのバージョンなどの環境の互換性に応じた最適な機能項目を選択し、選択された機能項目を設定可能な機能項目として単独プリンタドライバのUI表示に反映させることにより、印刷データを生成するサーバと通信名可能なクライアントコンピュータと、プリンタと通信可能なサーバとからなる印刷システムにおけるクライアントコンピュータにおいてサーバとクライアントコンピュータにおけるOSの種類やプリンタドライバのバージョンなどの環境の互換性に応じた最適な機能項目を選択し、該選択された機能項目を反映させた表示を印刷設定画面に行わせることが実現される。
以上説明したように、本実施形態によれば、一つの仮想的な画像入出力装置に束ねられた複数の画像入出力装置に対して印刷ジョブを制御する印刷処理システムにおいて、1つの仮想的なプリンタ(グループプリンタ)が共有プリンタとして設定され、サーバ上で設定された各メンバのプリンタ情報を、クライアント側で取得し表示することが可能である場合に、実際には有効にならない印刷設定をユーザに選択不可能とし、より容易にグループプリンタドライバ及びメンバプリンタドライバの設定を行えるようにUIの制御を行うことが可能となる。
また、本実施形態によれば、サーバとクライアントとの間におけるOSの種類やプリンタドライバのバージョンの差異などの印刷システムでの環境の差異によって生じる不都合を未然に防いだ印刷環境をユーザに提供することができる。
尚、本発明は複数の機器(例えば、ホストコンピュータ,インタフェース機器,リーダ,プリンタなど)から構成されるシステムに適用しても、1つの機器からなる装置(例えば、複写機,ファクシミリ装置など)に適用しても良い。
また、本発明の目的は前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(CPU若しくはMPU)が記録媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
この場合、記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
このプログラムコードを供給するための記録媒体としては、例えばフロッピー(登録商標)ディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
更に、記録媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。