以下、添付の図面を参照して、本発明の好適な実施形態について説明する。
(第1の実施形態)
図1は、本発明を適用可能な情報処理システムの構成を説明するブロック図である。なお、本システムにおけるクライアントコンピュータは、1台、または複数台接続されていることを仮定している。
図1において、102、103、104はクライアントとしての情報処理装置(以下、クライアントコンピュータという)であり、イーサネット(登録商標)などのネットワークケーブルによって、ネットワーク106に接続され、アプリケーションプログラム等の各種のプログラムを実行可能である。各クライアントは、印刷データをプリンタに対応するプリンタ言語に変換する機能を有するプリンタドライバを搭載している。なお、プリンタドライバは複数のプリンタドライバをサポートするものとする。
101は本実施形態のサーバとしての情報処理装置(以下、プリントサーバと呼ぶ)であり、ネットワークケーブルによって、ネットワーク106に接続され、ネットワーク106で使用されるファイルを蓄積したり、ネットワーク106の使用状態を監視したりする。プリントサーバ101は、ネットワーク106に接続されている複数のプリンタを管理している。
なお、クライアントコンピュータ102〜104とプリントサーバ101の構成は、一般的な情報処理装置であり、クライアントコンピュータとプリントサーバには、それぞれ異なる制御を行う印刷制御プログラムが実行可能に格納されている。また、プリントサーバ101は、クライアントとしての機能を同時に持つこともできる。
本実施形態におけるプリントサーバ101はさらに次のような機能を備えている。すなわち、(1)クライアントコンピュータ102、103、104から印刷要求が出された印字データを含む印刷ジョブを格納して印刷する、(2)クライアントコンピュータ102、103、104から印字データを含まないジョブ情報を受け取り、クライアントコンピュータ102、103、104の印刷順序を管理し、印刷の順番が来たクライアントに対して印字データを含む印刷ジョブの送信許可を通知する、(3)ネットワークプリンタ105のステータスや印刷ジョブの各種情報を取得し、クライアントコンピュータ102、103、104に通知する、等の機能を揃えている。
105は印刷制御装置であるネットワークプリンタであり、図示を省略したネットワークインタフェースを介してネットワーク106と接続されている。ネットワークプリンタ105は、クライアントコンピュータから送信される印字データを含む印刷ジョブをネットワーク106を介して受信し、これを解析して1ページずつドットイメージに変換して、1ページ毎に印刷する。また、106はネットワークであり、クライントコンピュータ102、103、104、サーバ101、ネットワークプリンタ105等を接続している。
図2は、本実施形態の情報処理装置の構成を説明するブロック図である。クライントコンピュータ102、103、104は、情報処理装置であり、図2に示構成を有する。さらにプリントサーバ101も図2に示される構成と同様あるいは同等のハードウェア構成を有する。よって、以下の説明において、図2はクライアントとサーバの構成を説明するブロック図として説明する。
図2において、200は情報処理装置の制御手段であるCPUであり、ハードディスク(HD)205に格納されているアプリケーションプログラム、プリンタドライバプログラム、OSや本実施形態のネットワークプリンタ制御プログラム等を実行し、RAM202にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。
201は記憶手段であるROMであり、内部には、基本I/Oプログラム等のプログラム、文書処理の際に使用するフォントデータ、テンプレート用データ等の各種データを記憶する。202は一時記憶手段であるRAMであり、CPU200の主メモリ、ワークエリア等として機能する。
203は記憶媒体読み込み手段としてのフロッピー(登録商標)ディスク(FD)ドライブであり、後述する図5に示すようにFDドライブ203を通じて記憶媒体としてのFD204に記憶されたプログラム等を本コンピュータシステムにロードすることができる。なお、記憶媒体は、FDに限らず、CD−ROM、CD−R、CD−RW、PCカード、DVD、ICメモリカード、MO、メモリスティック等、任意である。なお、204は記憶媒体であるフロッピーディスク(FD)であり、コンピュータが読み取り可能なプログラムが格納された記憶媒体である。
205は外部記憶手段の一つであり、大容量メモリとして機能するハードディスク(HD)であり、アプリケーションプログラム、プリンタドライバプログラム、OS、ネットワークプリンタ制御プログラム、関連プログラム等を格納している。さらにスプール手段であるスプーラはここに確保される。スプール手段は、クライアントではクライアントスプーラのことであり、プリントサーバではサーバスプーラのことである。また、プリントサーバでは、クライアントから受けたジョブ情報を格納し、順序制御を行うためのテーブルもこの外部記憶手段に格納される。
206は指示入力手段であるキーボードであり、ユーザがクライアントコンピュータに対して、また、オペレータや管理者がプリントサーバに対して、デバイスの制御コマンドの命令等を入力指示するものである。207は表示手段であるディスプレイであり、キーボード206から入力したコマンドや、プリンタの状態等を表示したりするものである。208はシステムバスであり、クライアントやプリントサーバであるコンピュータ内のデータの流れを司るものである。209は入出力手段であるインタフェースであり、該インタフェース209を介して情報処理装置は外部装置とのデータのやり取りを行う。インタフェース209は例えばネットワークインタフェースであり、ネットワーク106とシステムバス208とを接続する。
図3は、図2に示したRAM202のメモリマップの一例を示す図であり、FD204からネットワークプリンタ制御プログラムがRAM202にロードされ実行可能となった状態のメモリマップである。本実施形態では、FD204からネットワークプリンタ制御プログラムおよび関連データを直接RAM202にロードして実行させる例を示すが、これ以外にも、ネットワークプリンタ制御プログラムを動作させる度に、既にネットワークプリンタ制御プログラムがインストールされているHD205から、等該制御プログラムをRAM202にロードするようにしてもよい。
また、本ネットワークプリンタ制御プログラムを記憶する媒体は、FD以外にCD−ROM、CD−R、PCカード、DVD、ICメモリカードであってもよい。さらに、本ネットワークプリンタ制御プログラムをROM201に記憶しておき、これをメモリマップの一部となすように構成し、直接CPU200で実行することも可能である。また、以上の各装置と同等の機能を実現するソフトウェアをもって、ハードウェア装置の代替として構成することもできる。
また、本ネットワークプリンタ制御プログラムのことを、簡単に印刷制御プログラムと呼ぶこともある。印刷制御プログラムは、クライアントにおいて印刷ジョブの印刷先の変更を指示したり、印刷順序を変更する指示をするための制御を行うプログラムを含み、また、プリントサーバにおいて、印刷ジョブの順序制御を行ったり、印刷ジョブの印刷終了や印刷先変更要求などを通知するためのプログラムを含んでいる。
また、このような制御を行う本実施形態の印刷制御プログラムは、クライアントにインストールされるモジュールと、プリントサーバにインストールされるモジュールを別々に分けてもよいし、ひとつの印刷制御プログラムが、実行される環境によりクライアント用として機能したり、またはプリントサーバ用として機能するようにしてもよい。あるいは一台のコンピュータに、クライアント用の機能を持つモジュールと、プリントサーバ用として機能するモジュールをともにインストールし、同時に、あるいは時分割で擬似的に平行動作させる構成も可能である。
図3において、301は基本I/Oプログラムであり、本制御装置の電源がONされたときに、HD205からOSをRAM202にロードしてOSの動作を開始させるIPL(イニシャルプログラムローデイング)機能などを有するプログラムである。302はオペレーティングシステム(OS)であり、303はネットワークプリンタ制御プログラムで、それぞれRAM202上に確保される領域に記憶される。304は関連データで、RAM202上に確保される領域に記憶される。さらに、305はワークエリアで、CPU200が本プリンタ制御プログラムを実行するにおいて、一時的なデータの格納等に利用するべく確保された領域である。
図4は、図2に示したFD204のメモリマップの一例を示す図である。図4において、401はデータの情報を示すボリューム情報であり、402はディレクトリ情報、403は本実施形態で説明する印刷制御プログラムであるネットワークプリンタ制御プログラム、404はその関連データである。403のネットワークプリンタ制御プログラムは、実施形態で説明するフローチャートに基づいてプログラム化したものであり、本実施形態では、クライアント、サーバ共、同様の構成をとっている。
図5は、図2に示したFDドライブ203に対して挿入されるFD204との関係を示す図であり、図2と同一のものには同一の符号を付してある。図5において、FD204には、図4で説明したように、本実施形態で説明するネットワークプリンタ制御プログラムおよび関連データが格納されている。
次に本実施形態における、プリンタを複数台使用して、前述の分散、同報、代行といった印刷処理を行う、印刷ジョブ制御システムについて説明する。なお、本実施形態では、複数のプリンタを1台のプリンタとして仮想的に束ね、これをグループプリンタ(仮想的なプリンタである)と呼び、束ねられている各プリンタをメンバプリンタと呼ぶ。また、対応するプリンタドライバをそれぞれグループプリンタドライバ、メンバプリンタドライバと呼ぶ。
図6は本システムのクライアントサーバモデルにおいてMicrosoft Word(商標)などの一般的なアプリケーションから発行された印刷要求が、印刷ジョブ制御システムにおいてどのように処理されるかを示した図である。図6において、600はクライアントコンピュータ(図1の102から104に対応する)であり、本実施形態の印刷ジョブ制御システムのクライアントモジュールが動作するマシンを指す。また、610はプリントサーバであり、図1の101に対応している。
通常、印刷の指示がされるとアプリケーションプログラムは一連の描画命令(GDI関数)を生成し、OSを介して変換された描画命令(DDI関数)がプリンタドライバに渡される。プリンタドライバはOSから入力される描画命令に基づいて、プリンタが解釈可能なプリンタ制御言語(PDL)を生成し、JL(Job Language)でくくられた印刷ジョブ(以下、プリントジョブデータとも呼ぶ)としてOSが提供するプリントスプーラ(例えば、WindowsSpooler)に渡される。プリントスプーラは、ユーザが選択したポートモニタにプリントジョブデータを渡してプリントデバイスに送信させる手順をとる。
これに対して、本実施形態では、ユーザはあらかじめ印刷ジョブ制御システム用のポートモニタ621(以降、本実施形態ではジョブ制御ポートモニタと略記)を指定して印刷を指示する。印刷指示を受けたアプリケーションプログラム601は一連の描画命令を生成する。描画命令を受け取ったグループプリンタドライバ603では、汎用印刷ファイルを生成する。汎用印刷ファイルについては後述する。そして、グループプリンタドライバ603は、プリントデバイスへプリントジョブデータを送信するポートモニタではなく、ジョブ制御ポートモニタ621に、この汎用印刷ファイルをプリントジョブデータとして送信する。さらに、ジョブ制御ポートモニタ621はプリントジョブデータをプリントデバイス650に送信するのではなく、印刷ジョブ制御システム用プリントサービス622(以降、本実施形態ではジョブ制御プリントサービスと略記)に送信する。ジョブ制御プリントサービス622は、受けとったプリントジョブデータに対して、後述するような印刷ジョブ制御処理を行う。なお、ジョブ制御プリントサービス622が受け取るプリントジョブデータは、実際の印刷ジョブではなく、前述したように汎用印刷ファイルであり、後述するように、後の制御により最終的な印刷ジョブが生成されることになる。
印刷ジョブ制御システム用プリントマネージャ623(以降、本実施形態ではジョブ制御プリントマネージャと略記)は、ユーザがジョブ制御プリントサービス622内部でプリントジョブがどのような状態にあるかを調べたり、プリントジョブを操作したりするためのユーザインタフェース(以下、UI)を提供するためのプログラムである。ジョブ制御プリントマネージャ623はジョブ制御プリントサービス622のソフトウェアのインタフェース(API)を介して、ジョブ制御プリントサービス622と情報・指示をやり取りしている。
一方、プリントサーバ610において、印刷ジョブ制御システム用サーバ630(以降、本実施形態ではジョブ制御サーバと略記)は、個々のクライアント600上のジョブ制御プリントサービス622がプリントデバイス650にプリントジョブデータを送信するタイミングを集中制御(スケジューリング)している。印刷ジョブ制御システム用マネージメントコンソール633(以降、本実施形態ではジョブ制御マネージメントコンソールと略記)は、ジョブ制御サーバ630が持つソフトウェアがアクセスするためのAPIを介してジョブ制御サーバ630と情報・指示をやり取りすることで、印刷ジョブ制御システム全体を監視することができる。
また、ジョブ制御サーバ630はデバイス情報コントロールモジュール631を用いて各プリントデバイス650と通信を行い、各プリントデバイス内の印刷ジョブや動作状態に関する情報を入手したり、操作を行ったりする。入手した情報はクライアント600側のジョブ制御プリントサービス622に渡すことができる。
次に本実施形態におけるグループプリンタドライバ603からの印刷について説明する。グループプリンタドライバ603はアプリケーションプログラムが生成した一連の描画コマンドを、プリントデバイスの種類に依存しない中間フォーマットのファイルである汎用印刷ファイルに変換する。この汎用印刷ファイルの構成については後述する。
この汎用印刷ファイルは前述したようにスプーラ604からジョブ制御ポートモニタ621を経て(a)、ジョブ制御プリントサービス622に導かれる(b)。ジョブ制御プリントサービス622はこのプリントジョブに対して行うジョブ制御の種類に応じて、汎用印刷ファイルをもとに描画コマンドを生成し(c)、PDLドライバ602がその描画コマンドをプリントデバイス650が解釈可能なPDLファイルにする。図6では、ジョブ制御プリントサービス622で、このプリントジョブに対してプリントジョブを2つに分けるジョブ制御が行われる例であり、2つのメンバジョブが生成された例を2つの矢印(c)で示している。PDLドライバ602で生成されたPDLファイルはスプーラ604、ジョブ制御ポートモニタ621を経て(d)、再びジョブ制御プリントサービス622に渡される(e)。ジョブ制御プリントサービス622は、ジョブ制御サーバ630の指示に従ってPDLのプリントジョブデータをプリントデバイス650に送信する(f)。
ジョブ制御プリントサービス622は、汎用印刷ファイル中の印刷指示書(ジョブチケット)の指示にしたがって、一つの汎用印刷ファイルを複数の印刷要求に論理的に分割してそれぞれ別のプリントデバイスに送信したり、一度送信したプリントジョブデータを別のプリントデバイスに送信し直したりする。図6における(c)(d)(e)(f)はそのような場合のプリントジョブデータの経路を示している。
一方、汎用印刷ファイルをアプリケーションソフトウェアが作成し、そのアプリケーションソフトウェアが汎用印刷ファイルを印刷要求として直接投入する場合、一般のアプリケーションとはグループプリンタドライバ603への情報の渡し方や、グループプリンタドライバ603での処理内容が異なる。
前述のように、一般のアプリケーションの場合、アプリケーションはグループプリンタドライバ603に描画情報を渡す際、通常のプリンタドライバと同じようにWindowsOS(Windowsは米国マイクロソフト社の登録商標)のGDI関数を呼び出し、グループプリンタドライバ603がそれに応じて汎用印刷ファイルを生成する。これに対して汎用印刷ファイルを直接作成するアプリケーションの場合は、アプリケーションが汎用印刷ファイルをすでに持っており、それをグループプリンタドライバ603に供給する。グループプリンタドライバ603は、必要に応じて、あらかじめ設定された印刷方法に基づいて汎用印刷ファイル内部の印刷指示書を書き換えてスプーラ604に送る。
図8は、汎用印刷ファイルの構成の一例を示した図である。本実施形態で使用される汎用印刷ファイルは、印刷指示部8−aと、ドキュメントデータ部8−bからなる。印刷指示部8−aは、ドキュメントの情報と印刷指示を記述した部分である。また、ドキュメントデータ部8−bは、アプリケーションのドキュメントのデータを汎用的な形式のデータに変換したものであり、プリンタ言語に依存しないデータフォーマットとなっている。
印刷指示部8−aはヘッダ部、ページ情報部、印刷体裁指示部、出力方法指定部、グループプリンタドライバ設定情報部、メンバプリンタ数、メンバプリンタドライバ名、メンバプリンタドライバ設定情報部などから構成されている。以下、これらについて説明する。
ヘッダ部は本ファイルのバージョン識別やファイル情報などの情報を格納する部分である。ページ情報部は、ドキュメントデータ部8−bのドキュメントデータのページ数、各ページのサイズなどの情報を格納する部分である。印刷体裁指示部は、印刷ページ範囲、印刷部数、ドキュメントデータの面付け情報(N−UPや製本印刷など)、ステイプル指示やパンチ指示など、出力体裁に関する情報を格納する部分である。出力方法指定部は、出力方法として、分散印刷、カラーモノクロ分散印刷、代行印刷、同報印刷などの情報を格納する部分である。グループプリンタドライバ設定情報部は、後述するグループプリンタドライバのUIの印刷設定情報を格納する部分である。メンバプリンタ数はグループプリンタドライバが関連付けているメンバプリンタドライバの数を格納する部分である。メンバプリンタドライバ名は、メンバプリンタのプリンタドライバ名を格納する部分である。メンバプリンタドライバ設定情報部はメンバプリンタドライバのドライバUIの印刷設定情報として例えばDEVMODE情報を格納する部分である。このメンバプリンタドライバ名とメンバプリンタドライバ設定情報部は、前述のメンバプリンタ数に格納された数だけの格納エリアを持っている。
前述の図6で説明したグループプリンタドライバ603では、汎用印刷ファイルを生成する際、グループプリンタドライバが提供するGUI上の設定を印刷指示部8−aへ記録する。さらに、グループプリンタドライバ603はGDIでアプリケーション601より受け取ったデータを汎用的なデータに変換しドキュメントデータとして、本汎用印刷ファイルのドキュメントデータ部8−bに記録することとなる。
なお、本汎用印刷ファイルは、印刷指示部8−aとドキュメントデータ部8−bが異なるファイルであってもかまわない。その場合、印刷指示部は印刷指示書ファイルとして、ドキュメントデータ部はドキュメントデータファイルとしてそれぞれ存在し、これらを一つのアーカイブ形式でまとめて同様に一つのファイルのように扱うことも可能である。
次に図7を参照して、Windowsが提供するPrintSystemと印刷ジョブ制御システムにおける印刷ジョブの関係と処理概要をさらに詳しく述べる。
図7中で印刷ジョブ制御システム700は、サーバとクライアントの制御プログラムが動作する物理的なマシンを跨いだ、印刷ジョブ制御システムの範囲を示している。また、サーバが管理している出力ポート(Output Port)711A,Bは、クライアントのジョブ制御プリントサービス622のプロキシ出力ポート(Proxy OutputPort)712A,Bと関連付けられ、ひとつのポートに関連づけられた各クライアント上のプロキシ出力ポート全てを統一的に管理している。本実施形態では、実際のプリントジョブデータは各々のクライアントのプロキシ出力ポート712に保持される。ジョブ制御サーバ630は、プリントジョブデータ自体の送信処理は行わず、ジョブ制御プリントサービス622に対して印刷ジョブの送信指示のみを行う。クライアントのジョブ制御プリントサービス622は、その指示に応じてプリントジョブデータをデバイス650に送信する。
次に、印刷ジョブ制御システム700が、代行印刷、分散印刷、同報印刷などの付加価値的な印刷を行う場合の処理を説明する。
印刷ジョブ制御システム700が、代行印刷、分散印刷、同報印刷などの付加価値的な印刷を行う場合には、前述のようにユーザまたはアプリケーション601はグループプリンタドライバ603が割り当てられたプリンタに印刷ジョブを発行しなければならない。ジョブ制御プリントサービス622は、グループプリンタドライバ603によって処理されたジョブデータをジョブ制御ポートモニタ621を介して汎用印刷ファイルとして受け取る。ジョブ制御プリントサービス622はこのジョブを受け取り、デスプーラ(De-spooler)701を介してPDLドライバ602が割り当てられた別のプリンタにジョブ(メンバジョブ)を発行して印刷を行わせる。
このとき、デスプーラ701は前述の図8で説明した汎用印刷ファイルの印刷指示部8−aを解釈し、ドキュメントデータ部8−bのドキュメントデータを加工して、WindowsのGDIに変換し、各プリンタドライバに対して印刷指示を行い印刷ジョブを発行する。例えば印刷体裁指定部に、2−UPの指示が記録されていた場合、用紙1枚に2ページ分のドキュメントデータを縮小レイアウトする。また分散印刷あるいは同報印刷の場合には、それらの設定に応じて印刷指示部8−aに記述されている複数のメンバプリンタドライバにジョブを発行する。代行印刷の場合は、代行する条件が満たされたときに、自動代行では事前の設定、手動代行ではユーザの操作に応じてメンバジョブを発行する。
また、デスプーラ701は各メンバプリンタドライバにジョブを発行する際、メンバプリンタドライバに対応する印刷指示として、各メンバプリンタドライバのDEVMODEを作成する必要があるが、このDEVMODEは印刷指示部8−aに記載された内容を適宜各メンバプリンタドライバのDEVMODEに反映させて生成される。
クライアント側のジョブ制御プリントサービス622は、PDLドライバ602によってレンダリングされた、それぞれのメンバジョブのPDLデータをジョブ制御ポートモニタ621を介して受け取り、受け取ったジョブに関する情報をサーバ側に知らせるとともに、ジョブデータを自身のプロキシ出力キュー(Proxy Output Port)712A,Bで一時保持する。その後、ジョブ制御サーバ630からの送信指示を受けた後に、保持しているプリントジョブをプリントデバイス650に送信する。
次に本発明の実施形態における、印刷ジョブ制御システムのためのグループプリンタドライバの制御について説明する。
図15は本実施形態におけるグループプリンタドライバの設定の様子を示した図である。図15は、本実施形態の印刷ジョブ制御システムのインストールの際の設定の様子、或は、ユーザの指示に応じて設定変更され、設定が変更された際の設定の様子に相当する。
図15に示されるように、プリンタドライバA、B,Cの組合せと、夫々のメンバプリンタドライバに設定される各種設定値、また、図示はされていないが、インストール時に表示部に表示されるユーザインターフェイスを介して指示された出力方法などがデフォルト値として記憶されている。なお、出力方法に関しては、通常の特定の単体プリンタに印刷処理を行わせる通常印刷、或は、上に説明した分散印刷、同報印刷、カラー/モノクロ分散印刷、代行印刷などを挙げることができる。
図15に示された設定が施された場合のグループプリンタドライバのユーザインターフェイスの1例を図16に示す。図16においては、出力方法に割合分散が指定されており、1601には、グループプリンタドライバを構成するメンバプリンタドライバとして、プリンタA、プリンタB、プリンタC、が設定されている。また、1602はメンバプリンタドライバの追加/削除を指示するための操作ボタンで、例えば、図16のようにプリンタAが選択された状態で、1602に押下指示が入力されると、PRINTER Aは本制御プログラムによって、当該メンバプリンタドライバの構成から削除されるよう制御される。
図9は、本実施形態によるグループプリンタドライバのUI表示処理時の処理制御フローを示すフローチャートである。この図9のフローチャートの各ステップの処理は、上に説明した情報処理装置に設けられたCPU(中央演算処理装置)が、ROM、FD等の所定の記憶媒体、ハードディスク(HD)等に記憶された制御プログラムを読込み、該読込んだプログラムに基づく処理を実行することに応じて実現されるものとする。
まず、ステップS901において、Windows Systemを介してアプリケーションからUI表示要求があると、印刷ジョブ制御システムAPIを使って、グループプリンタドライバで使用可能であるメンバプリンタ名を取得する。ここで、取得するメンバプリンタドライバ名とは、ステップS901の処理が実行される時点で、印刷ジョブ制御システム(グループプリンタドライバ)内に記憶されている複数のメンバプリンタドライバを指す。また、記憶されている複数のメンバプリンタドライバを取得する方法としては、メンバプリンタドライバ名に限定されるものではなく、各々のメンバプリンタドライバを識別することができるメンバプリンタドライバ識別情報であれば本発明に適用可能である。
次に、ステップS902において、グループプリンタドライバがデフォルトとして保持するメンバプリンタ構成(メンバプリンタ識別情報)とステップS901で取得されたメンバプリンタ名との比較処理を実行する。このステップS902の処理は、グループプリンタドライバがデフォルトとして保持するメンバプリンタドライバ構成(メンバプリンタドライバ識別情報)と、情報処理装置にプログラムの実体として記憶されているメンバプリンタドライバとの比較処理に相当する。例えば、図15、図16に示されるように、グループプリンタドライバがメンバプリンタドライバA、B,Cの3つのメンバプリンタドライバ名をデフォルト値として保持している場合、実際にメンバプリンタドライバA、B、Cの制御プログラムの実体が情報処理装置に使用可能な形態で記憶されているかのチェックがステップS902の処理に該当する。
そして、ステップS902の比較処理の結果、いずれかのメンバプリンタが印刷ジョブ制御システムで使用不能であれば、即ち、グループプリンタドライバが識別情報として保持しているメンバプリンタドライバの実体が印刷ジョブ制御システムに利用可能な形態で記憶されていないと判断されるような場合には、ステップS903へ進み、図12に示すような警告メッセージを表示する。尚、この図12の表示は、本実施形態の印刷制御用プログラム(グループプリンタドライバを含む)に含まれるユーザインターフェイスを表示するための画面情報に基づく表示が、OSを介して表示部に表示されたものに相当するものであり、本実施形態における他の表示も同様の仕組みで表示されたものに相当する。
そして、ステップS904においては、使用不能であると判断されたメンバプリンタドライバを現在のメンバプリンタドライバの構成から削除し、処理を続行する。
その後、ステップS905にてグループプリンタドライバUI表示の処理を行う。
図10は、図9のUI表示処理(ステップS905)について、詳細な動作を示したフローチャートである。尚、図10のフローチャートの各ステップの処理は上に説明した情報処理装置に設けられたCPU(中央演算処理装置)が、ROM、FD等の所定の記憶媒体、ハードディスク(HD)等に記憶された制御プログラムを読込み、該読込んだプログラムに基づく処理を実行することに応じて実現されるものとする。
以下、図10に示される処理について、実際のユーザインターフェイスの例としての図13を参照しつつ説明する。
まず、ステップS1001では図13の1301のように表示されたコンボボックスリストがユーザの操作に応じて指示され、現在選択状態の「お気に入り」以外の「お気に入り」が選択されたかを判断する。実際には、本UIを表示するにあたって、登録された複数の「お気に入り」について、ユーザがそれらのうちのいずれかを選択可能な形態のリストとして表示させるためのリスト情報が生成される。そして、図13のボタン1301に対する押下信号が入力されると、現在登録されている単数、或は、複数のお気に入りの設定のリストが表示され、ユーザはその中かから所望のお気に入りを選択することができる。ステップS1001では、そのリスト中より別のお気に入りが新たに選択されたか否かが判定される。なお、本明細書において、「お気に入り」とは、複数のメンバプリンタに対する印刷設定情報を登録する複合印刷設定情報である。
ステップS1001にて、お気に入り選択変更がなされたと判定された場合には、ステップS1002にて、「お気に入り」の選択変更に伴う設定の確認処理を行う。尚、このステップS1002の詳細は後述する。
ステップS1003では、ステップS1002にて変更された内容が、変更が許可されるものであるか否かの判定が行われる。ステップS1003の判定の結果がYesである場合には、ステップS1004にて全シートのコントロールを新しい設定に応じて変更し、全てのメンバプリンタの設定についても、お気に入りで保持されていた設定に変更する。一方、ステップS1003の判定の結果がNoであった場合には設定を変更せず、ステップS1001に処理を戻す。
また、ステップS1001で「お気に入り」の選択が変更されていないと判定された場合には、ステップS1005へ処理を移行する。ステップS1005では、図13の1302に示されるような「お気に入りの追加ボタン」の押下が操作者に指示に応じて入力されたか否かを判断する。
そして、ステップS1005において、追加ボタンが押下されたと判断された場合には、ステップS1006にて、現在の設定でお気に入りの登録に関する一連の処理を行う。この現在の設定には、図13のようなユーザインターフェイス(「ページ設定」シート)を介して設定された各項目の設定値や、また、図16のようなユーザインターフェイス(「出力設定」シート)を介して設定されたメンバプリンタドライバの組合せ(本例では、出力設定シート上の「プリンタの追加/削除」ボタン1602を操作することにより、メンバプリンタの追加、削除が可能である)や、その他「仕上げ」、「給紙」、「印刷品質」等の各シートが選択されて表示された夫々のユーザインターフェイスを介して設定された設定値までがお気に入りの設定として登録(保存)される。
お気に入りの登録処理では、グループプリンタドライバUIを介して設定された印刷設定情報はもちろん、各メンバプリンタドライバの個別のUIを介して設定された印刷設定情報を含めて印刷設定情報が、名前を付して登録される。その際の名前は、ユーザに入力させても良いし、日時や設定内容から決定することもできる。なお、お気に入りの登録は、DEVEMODE(図15を参照して後述する共通設定項目と拡張設定項目の双方を含む)のデータ構造に基づいたデータを保存(複写)するものとする。本実施形態では、図21で後述するように、グループプリンタドライバのDEVMODEと各メンバプリンタドライバのDEVMODEをまとめて保存する。
図20は本実施形態によるお気に入りの登録処理を説明するフローチャートである。図13に示されるボタン1302をクリックすると、ステップS2001において不図示の登録画面を表示し、お気に入りの名称を入力するようユーザに促す。名称が入力されると、ステップS2002に進み、現在のグループプリンタとして登録されているメンバプリンタを取得する。例えば、図16で説明したように、メンバプリンタA,B,Cが登録されていれば、本ステップでプリンタA,B,Cが取得されることになる。なお、このとき、グループプリンタのDEVMODEを取得し、お気に入りのデータに加えられる。そして、ステップS2003、S2004において、ステップS2002で取得されたメンバプリンタのDEVMODEを順次取得し、当該お気に入りの情報としてメンバプリンタを識別する情報と対応付けて追加格納していく。
図21は図20の処理によって生成されたお気に入りのデータ構成例を示す図である。グループプリンタと各メンバプリンタについてDEVMODE情報が登録される。なお、グループプリンタドライバのDEVMODEには共通設定項目の設定内容以外に、分散、代行、同報といった印刷方法の指示や、メンバプリンタのリスト等の、印刷ジョブ制御システムの設定が含まれる。従って、お気に入りが選択された場合、グループプリンタドライバによって設定された共通設定項目や、印刷方法が復元されるとともに、各メンバプリンタA,B,Cに対して、登録されているDEVMODE情報が渡され(ステップS1004)、各メンバプリンタに対して設定がなされ、お気に入りに登録された状態が完全に復元されることになる。なお、図21の構成と図15の構成の関係を説明すると、1501から1503のプリンタドライバA〜CがプリンタIDに対応し、各設定項目に対する設定内容がDEVMODE情報に対応する。
なお、上記ステップS1001〜ステップS1007においては、各「お気に入り」毎にグループプリンタを構成するメンバプリンタの構成が登録されており、所望のお気に入りを選択すれば、そのお気に入りにおいて登録されているメンバプリンタに対してお気に入りに記録されている印刷設定情報が反映される。例えば、現在A、B、Dのプリンタドライバをプリンタドライバとしてグループプリンタが動作していても、新たに選択されたお気に入りのメンバプリンタのメンバ構成がA、B、Cであれば、そのお気に入りが選択された時点でメンバプリンタ構成がA、B、Cとなる。しかしながら、「お気に入り」に対してメンバプリンタの構成を登録しないようにしてもよい。その場合は、お気に入りに登録されている印刷設定情報は、その時点で使用が可能なメンバプリンタドライバや、その時点で別の操作によって設定されたメンバプリンタ構成に対して反映される。即ち、例えば、現在A、B、Dのプリンタドライバをプリンタドライバとしてグループプリンタが動作している場合、当該メンバ構成のプリンタドライバに対してお気に入りに登録されている印刷設定情報が反映されることになる。
続いてステップ1007では、1301の「お気に入り」の表示を新しく登録したものが選択状態になるように変更し、処理をステップS1001へ戻す。
一方、ステップS1005において、追加ボタン1302が押下されていないと判断された場合は、ステップS1008において、ユーザの指示により「お気に入り」以外の設定(例えば、用紙サイズ等)が変更されたか否かを判断する。ステップS1008で設定が変更されたと判断された場合は、ステップS1009において、その操作がメンバプリンタの追加や削除などの構成の操作であるか判定する。ステップS1009の判断の結果、メンバプリンタドライバ構成の操作であれば、ステップS1010において、設定が可能か否か確認処理を行い、ステップS1011へ処理を移行する。
ステップS1011では、メンバプリンタドライバの構成の変更が可能であるか否かの判定が行われる。この判定処理は、図11にて説明する、ステップS1002の処理と同様の処理に相当する。すなわち、変更されたメンバプリンタドライバの構成に対応する夫々のメンバプリンタドライバが実施に本印刷ジョブ制御プログラムが使用可能な形態で記憶されているか否かの判断を行う。例えば、図15に示したようなメンバプリンタドライバA、B、Cの名称に対応するプリンタドライバの実体(プリンタドライバの名称の他、制御プログラムも含む)のみが本印刷ジョブ制御プログラムが使用可能な形態で記憶されているような場合には、メンバプリンタドライバの単純な削除は許可されても、新たなメンバプリンタドライバDの追加などは許可されないこととなる。
ステップS1011にて、変更可能であると判断された場合には、処理をステップS1012に移行する。
ステップS1009の判定の結果、メンバプリンタドライバ構成の変更以外の設定変更である判断された場合(Noであった場合)には、そのままステップS1012に進み、指示された設定の変更を行う。例えば、図15に示された何れかの項目の設定の変更などがこれに相当する。
ステップS1012の処理の結果、表示選択中の「お気に入り」の設定内容と実際の設定が異なることになるので、それを明示するためにUI表示を変更する(ステップS1013)。具体的には、例えば色を黒から他の色に変えたり、アイコンを変化させて表示させたりする。図14は表示が変更された状態の表示例である。即ち、ページレイアウト1402に示されるように、「1ページ/枚」から「2ページ/枚」に設定が変更されると、1401に示されるように、図13のコンボボックスリスト1301の内容が変更される。
ユーザがダイアログを閉じるまで、すなわち、設定終了指示がなされるまで、以上の判定を繰り返す。(ステップS1014)。
次に、設定の変更が可能であるかの確認処理(ステップS1002)の詳細を、図11のフローチャートを用いて説明する。尚、図11のフローチャートの各ステップの処理は上に説明した情報処理装置に設けられたCPU(中央演算処理装置)が、ROM、FD等の所定の記憶媒体、ハードディスク(HD)等に記憶された制御プログラムを読込み、該読込んだプログラムに基づく処理を実行することに応じて実現されるものとする。
まず、ステップS1101では、印刷ジョブ制御システムAPIを使って、グループプリンタドライバで使用可能であるメンバプリンタドライバ名を取得する。そして、ステップS1102において、ステップS1101で取得された単数或は複数のメンバプリンタドライバ名と、「お気に入り」に対応してグループプリンタドライバが保持するメンバプリンタの構成(複数のメンバプリンタドライバの識別情報)と比較する。
例えば、選択された新たな「お気に入り」に対応するメンバプリンタドライバの構成が、図15にて説明したプリンタドライバAとプリンタドライバBであったような場合に、いま、図15に示されるようなメンバプリンタドライバの実体が使用可能な状態で登録されていれば、ステップS1102の判定の結果はYesとなる。一方、選択された新たな「お気に入り」に対応するメンバプリンタドライバの構成に、プリンタドライバDが含まれており、このプリンタドライバDがインストールされていない、或は、本印刷ジョブ制御プログラムが使用可能な形態で登録されていないような場合には、ステップS1102の判定の結果はNoとなる。
ステップS1102における比較の結果、何れかのメンバプリンタが印刷ジョブ制御システムで使用不能であれば、ステップS1104にて、図12のような警告メッセージを表示する。また、その場合にはメンバプリンタドライバの構成変更を許可しない(ステップS1105)。一方、ステップS1102にて、新しいメンバプリンタ構成で指定されている全てのメンバプリンタが使用可能である場合は、ステップS1103にて、メンバプリンタ構成の変更を許可し、一連の処理を終了する。
なお、上記ステップS1105では、メンバプリンタの構成変更を許可しないとしているが、これに限らない。すなわち、ステップS1105の別の実施形態として、使用不可能なメンバプリンタを現在のメンバプリンタ構成から削除したうえで、メンバプリンタ構成の変更を許可するようにしてもよい。そのような構成をとることにより、より一層ユーザの希望に沿った印刷設定の環境を実現することができる。
以上のような構成によれば、メンバプリンタドライバによる詳細な設定を、お気に入りとして登録することが可能になる。また、お気に入りを選択した際に、グループプリンタドライバで使用する全てのメンバプリンタの設定が一度の操作で復元できる。
また、お気に入りの登録は、DEVEMODEのデータ構造に基づいたデータを保存、或いは複写するので、例えば、拡張設定項目を認識できないようなメンバプリンタドライバの設定に対しても、該メンバプリンタドライバに保存されているDEVEMODEを受け渡すだけで、設定の復元を実現することができる。
(第2の実施形態)
第2の実施形態では、第1の実施形態にて説明してきたグループプリンタドライバのユーザインターフェイスを介しての設定について、更に詳細な説明を行う。
図17〜図19は本印刷ジョブ制御プログラムの制御フローを示すフローチャートである。尚、図17〜図19のフローチャートの各ステップの処理は上に説明した情報処理装置に設けられたCPU(中央演算処理装置)が、ROM、FD、ハードディスク(HD)等所定の記憶媒体に記憶された制御プログラムを読込み、該読込んだプログラムに基づく処理を実行することに応じて実現されるものとする。
まずステップS1701において、OSを介したグループプリンタドライバのUI表示要求を受け付ける。そして、ステップS1702において、印刷ジョブ制御システムAPIを使って、グループプリンタドライバを構成するメンバプリンタドライバの識別ID(例えば名称)問い合わせ、グループプリンタを構成する全てのメンバプリンタドライバの識別IDを獲得する。ステップS1703では、ステップS1702で獲得した各メンバプリンタドライバの識別IDよりメンバプリンタドライバの能力を収得する。ステップS1703では、グループプリンタを構成する全てのメンバプリンタドライバに対して、グループプリンタドライバによってドライバ機能の収得がドライバ設定情報の拡張領域の部分まで可能であり、且つ、ドライバUI制御が可能な、“機能制御可能なドライバ”か、または、それ以外のドライバ“機能制御不可なドライバ”かをチェックし、機能制御可否の情報を得る。なお、機能制御可能かどうかについては所定の問い合わせ(たとえばAPIcall)に対する応答をチェックすることなどが挙げられる。
ステップS1704では、ステップS1704で得られた機能制御可否の情報より、メンバプリンタの構成を判定するステップであり、“機能制御可能なドライバ”のみで構成されている場合ステップS1705(図18の処理へ移行)へ、それ以外の構成ではステップS1706(図19の処理へ移行)へ処理を進める。
尚、共通設定項目と、拡張設定項目については、図15に示した通りであり、共通設定項目のデータ形式は提供者によって異なることがなく、共通したデータ形式が取られている。また、拡張設定項目のデータ形式(データの意味)は提供者によって異なり、読込むことはできるが、認識できない場合があるものに相当する。
図18は、ステップS1705の詳細を表したフローである。ステップS1801では、各メンバプリンタドライバの個々の共通設定項目に関する能力を問い合わせて、機能のコンフリクト処理を行い、その結果に基づきグループプリンタドライバUIで表示する項目の選択を行う。なお、機能のコンフリクト処理とは、グループプリンタの対象となる各メンバプリンタドライバに対して、各設定項目の機能のあり・なしをチェックし、対象となるメンバープリンタドライバ全てに機能がある場合に、グループプリンタドライバUIでその機能を設定可能項目として扱い、また、1台でも、機能がないものがあればその項目については、設定不可項目として扱う処理である。
ステップS1802では、前記ステップで示した機能のコンフリクト処理を各メンバプリンタドライバの拡張設定項目に関して行うステップである。ステップS1803では、ステップS1801及びステップS1802で実行されたコンフリクト処理の結果に基づきグループプリンタドライバUIの表示行い、ユーザ指示に応じて各項目の設定が行われる。
このとき、上記コンフリクト処理の結果、全メンバプリンタのうち、一部のメンバプリンタには存在しない機能については、例えば、UI上で設定が行えないよう、項目をグレーアウト表示、もしくは非表示といったUI制御を行う。一方、全てのメンバプリンタに共通して存在する機能については、そのようなUI制御を行わない。また、本ステップでは、ユーザの指定により、たとえば「製本印刷」が指定された時のパンチや、ステイプルの指定といった、機能上ありえない組み合わせが設定できないようUI制御を行い設定項目に矛盾が発生しないようにすることも行う。
ステップS1804では、グループプリンタドライバUI上に設定項目がない項目をメンバプリンタのUIを開き詳細に設定させるためにメンバプリンタドライバの指定がなされたか否かの判定が行われる。指定されるメンバプリンタドライはグループプリンタドライバを構成するメンバプリンタの何れかであり、例えば、図16に示されるメンバプリンタドライバの一覧より、マウス等のポインティングデバイスを介して入力に応じて選択される。
ステップS1804で何れかのメンバプリンタドライバが選択されたと判断されれば、ステップS1805へ進み、ステップS1804で指定されたメンバプリンタドライバUIが表示され、このUIを介して詳細な設定が行われる。
例えば、図16に示されるプリンタドライバCが選択されると、プリンタドライバCの個別のメンバプリンタドライバUIが表示され、「Water Mark」の設定が「有り」と設定された場合には、図15の1505に示されるように、プリンタドライバCの「Water Mark」の設定が「有り」と設定される。
これは、例えば、プリンタドライバCのみがWater Markの機能を有しているような場合に、施される処理に相当する。
なお、ここで、プリンタドライバCに「Water Mark」の設定が「有り」と設定されている状態が変更されることなく保持された状態で、お気に入りの登録が指示されると(ステップS1005のYes)、メンバプリンタドライバUIにて個別に設定された印刷設定情報もお気に入りの複合印刷設定情報の一部として保存(登録)される。無論、グループプリンタドライバUIで設定された各項目の印刷設定情報も合せてその複合印刷設定情報として保存(登録)される。
なお、メンバプリンタドライバUIを開いた場合、グループプリンタドライバで設定可能な項目についても設定可能となり、同一機能が両者に設定された場合に処理が2重にかかってしまう。このような不具合を防止するため、次に示すUI制御を施し表示を行う。
(A)メンバプリンタが“機能制御可能なドライバ”である場合、グループプリンタドライバUI上の設定項目と競合する項目については、メンバプリンタドライバUIでの設定が行えないように、項目をグレーアウト表示、もしくは非表示としてUI制御する。
(B)メンバプリンタが“機能制御不可なドライバ”である場合、共通設定項目についてはメンバプリンタドライバで設定された設定でUI表示する。UI表示後、メンバプリンタドライバUI上でその項目について変更がなされた場合、ドライバUIを閉じるステップでグループプリンタドライバで設定された設定項目の情報を対応するメンバプリンタドライバの共通設定項目で上書きし、メンバプリンタUI上での設定変更を許さない。
また、上書き処理を行う際に、メンバプリンタUI上での設定変更が無効であるといった警告表示を行うことも可能である。
なお、ステップS1805では、対象となるメンバプリンタ全て“機能制御可能なドライバ”であるため上記(A)のUI制御が行われる。
ステップS1805の処理を終えると、処理は図17のステップS1707へ移行される。
図19は、ステップS1706の詳細を表したフローである。ステップS1706への処理の移行は、メンバプリンタドライバの構成が、ステップS1705とは異なり、メンバプリンタドライバの構成が、“機能制御可能なドライバ”と“機能制御不可能なドライバ”との混合、或は、“機能制御不可能なドライバ”のみの場合となる。従って、この場合においては、グループプリンタドライバUIで設定可能な項目は共通に印刷設定情報の読み書きが可能な共通設定項目に限定される。
ステップS1901では、図18のステップS1801と同様に各メンバプリンタドライバの個々の共通設定項目に関する能力を問い合わせて、機能のコンフリクト処理が行われ、その結果に基づきグループプリンタドライバUIで表示する項目の選択が行われる。ステップS1902では、ステップS1901で行ったUIコンフリクト処理の結果に基づき、グループプリンタドライバUI表示を行うステップである。このステップでは、コンフリクト処理の結果、機能のないもの及び拡張設定項目については、グループプリンタドライバUI上で設定が行えないように、設定不可能な項目としてグレーアウト表示もしくは非表示とするような制御が施される。
ステップS1902で設定不可であった、拡張設定項目及び各メンバプリンタが持つ固有の設定項目について設定を行う場合には、各メンバプリンタのUIを用いる必要がある。従って、ステップS1903では、メンバプリンタのUIを開くべく、グループプリンタドライバUI上で設定対象のメンバプリンタが指定されたかを判定する。メンバプリンタが指定されたならば、ステップステップS1904へ進み、ステップS1903で指定されたメンバプリンタドライバUIを開き、ユーザによる詳細設定を可能とする。
例えば、図16に示されるプリンタドライバCが選択(ステップS1903に相当)され、プリンタドライバCの個別のメンバプリンタドライバUIが表示され、「Water Mark」の設定が「有り」と設定された場合には、図15の1505に示されるように、プリンタドライバCの「Water Mark」の設定が「有り」と設定される。
これは、例えば、プリンタドライバA、B,Cの夫々の提供者が異なり拡張設定項目のデータ形式(データの意味が異なり)、且つ、プリンタドライバCがWater Markの機能を有しているような場合に、施される処理に相当する。
ここで、プリンタドライバCに「Water Mark」の設定が「有り」と設定されている状態が変更されることなく保持された状態で、お気に入りの登録が指示されると(ステップS1005のYes)と、メンバプリンタドライバUIにて個別に設定された項目情報もお気に入りの設定状態の一部として保存(登録)される。無論、グループプリンタドライバUIで設定された各項目の印刷設定情報も合せてお気に入りの印刷設定情報として保存(登録)される。
ステップS1904の後は処理を図17のステップS1707に移行する。
以上説明してきた図17〜19のフローチャート及び図10のフローチャートによれば、メンバプリンタドライバ個別のユーザインターフェイスを介して設定された項目情報も、お気に入りの印刷設定情報の一部として保存(登録)されるので、その後、このお気に入りが選択され、複数のメンバプリンタドライバに対してまとめて設定されるような処理(例えば、S1004)では、メンバプリンタドライバのユーザインターフェースを介して個別に設定されたような印刷設定情報(例えば、上に説明した「Water Mark」)も個別設定の対象となったメンバプリンタドライバに対して復元されることになり、ユーザにより使い勝手の良いユーザインターフェイスを提供することができる。
以上のように、上記各実施形態によれば、複数のメンバプリンタドライバの設定内容をグループプリンタドライバUIを介してまとめて設定するような形態に対して、その印刷設定情報を複合印刷設定(お気に入り)として、保存しておくことができる。また、ユーザは保存された複合印刷設定を再度利用することができるので、複数のメンバプリンタドライバを対象としたような印刷処理の際にも、わざわざ個々のメンバプリンタドライバのUIを開いて何度も個別に設定し直す必要がなくなる。
また、保持したメンバプリンタドライバの固有の設定も複合印刷設定情報の一部として複合設定リストに登録可能とすることができる。さらには、複合印刷設定情報を複数通り登録させることができ、それをリストから選択するような仕組みを実現できるので、よりユーザの使い勝手が良くなる。
なお、本発明は、複数の機器(例えばホストコンピュータ,インタフェイス機器,リーダ,プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機,ファクシミリ装置など)に適用してもよい。
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。