以下、図面を参照して本発明を実施するための最良の形態について詳細に説明する。
[第1の実施の形態]
<印刷処理システムの構成例>
図1は、実施形態に係る印刷処理システムの構成を示す図である。
同図において、101、102、103、104は、ネットワーク106に接続され、相互に通信可能なネットワークコンピュータであり、典型的にはパーソナルコンピュータ(PC)である。
これらのうち、102,103,104はクライアントコンピュータ(以下、クライアント)であり、それぞれイーサネット(登録商標)などのネットワークケーブルによってネットワーク106に接続され、アプリケーションプログラム等の各種のプログラムを実行可能であり、印刷データをプリンタに対応するプリンタ言語に変換する機能を有するプリンタドライバを搭載している。ここで、各クライアントは複数のプリンタドライバをサポートするものとする。
これに対し101はサーバコンピュータ(以下、サーバ)であり、ネットワークケーブルによってネットワーク106に接続され、ネットワークで使用されるファイルを蓄積したり、ネットワーク106の使用状態を監視する。このサーバは、ネットワーク106に接続されているプリンタを管理する印刷ジョブ制御システム700としても機能する。具体的には、プリントサーバ101は、クライアントコンピュータ102、103、104から印刷要求が出されたプリントデータを含む印刷ジョブを格納して印刷する機能や、クライアントコンピュータ102〜104から印字データを含まないジョブ情報を受け取って印刷順序を管理し、印刷順序になったクライアントに対して印字データを含む印刷ジョブの送信許可を通知する機能、後述するネットワークプリンタ(プリンタデバイス)105のステータスや印刷ジョブの各種情報を取得して、クライアントコンピュータ102〜104に通知する機能などを有している。
105は、印刷制御装置としてのネットワークプリンタであり、図示しないネットワークインタフェースを介してネットワーク106と接続されており、クライアントコンピュータから送信されてくる印字データを含む印刷ジョブを解析し、1ページずつドットイメージに変換して印刷する。なお、同図にネットワークプリンタ105は1台しか示されていないが、他のネットワークプリンタが複数接続されているものとする。各ネットワークプリンタの機能は相違するものであってもよい。
また、106はネットワークであり、クライントコンピュータ102〜104、プリントサーバ101、ネットワークプリンタ105等と接続している。
<ネットワークコンピュータのハードウエア構成例>
図2は、クライアント102〜104とプリントサーバ101として使用されるコンピュータの構成を説明するブロック図である。なお、本実施形態においてはこのように、クライントコンピュータ102〜104もプリントサーバ101も同様あるいは同等のハードウエア構成とするが、それぞれ専用のハードウエア構成であっても構わない。
図2において、200は装置全体の制御を行うCPUであり、ハードディスク(HD)205に格納されているアプリケーションプログラム、プリンタドライバプログラム、OSや、本実施形態のネットワークプリンタ制御プログラム等を実行し、RAM202にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。
201は記憶手段としてのROMであり、内部には、基本I/Oプログラム等のプログラム、文書処理の際に使用するフォントデータ、テンプレート用データ等の各種データを記憶する。202は一時記憶手段としてのRAMであり、CPU200の主メモリ、ワークエリア等として機能する。
203は記憶媒体読み込み手段としてのフロッピディスクドライブであり、後述する図5に示すようにFDドライブ203を通じて、記憶媒体としてのFD204に記憶されたプログラム等を本コンピュータにロードすることができる。204は記憶媒体であるフロッピディスク(FD)であり、コンピュータが読み取り可能にプログラムが格納された記憶媒体である。なお、記憶媒体はFDに限らず、CD−ROM、CDR、CDRW、PCカード、DVD、ICメモリカード、MO、メモリスティック等、任意である。
205は外部記憶手段の一つであり、大容量メモリとして機能するハードディスク(HD)であり、アプリケーションプログラム、プリンタドライバプログラム、OS、ネットワークプリンタ制御プログラム、関連プログラム等を格納している。更に、スプール手段であるスプーラはここに確保される。スプール手段は、クライアントではクライアントスプーラのことであり、プリントサーバではサーバスプーラのことである。また、プリントサーバでは、クライアントから受けたジョブ情報を格納し、順序制御を行うためのテーブルもこの外部記憶手段に生成されて格納される。
206は指示入力手段であるキーボードであり、ユーザがクライアントコンピュータに対して、また、オペレータや管理者がプリントサーバに対して、デバイスの制御コマンドの命令等を入力指示するものである。207は表示手段であるディスプレイであり、キーボード206から入力したコマンドや、プリンタの状態等を表示したりするものである。
208はシステムバスであり、クライアントやプリントサーバであるコンピュータ内のデータの流れを司るものである。209は入出力手段であるインタフェースであり、該インタフェース209を介して情報処理装置は外部装置とのデータのやり取りを行う。
なお、上記コンピュータの構成はその一例であり、図2の構成例に限定されるものではない。例えば、データやプログラムの格納先は、その特徴に応じてROM、RAM、HDなどで変更することも可能である。
図3は、図2に示したRAM202のメモリマップの一例を示す図であり、FD204からロードされる上記ネットワークプリンタ制御プログラムが、RAM202にロードされ実行可能となった状態のメモリマップである。
なお、本実施形態では、ネットワークプリンタ制御プログラムおよび関連データをFD204から直接RAM202にロードして実行させる例を示すが、これ以外にも、ネットワークプリンタ制御プログラムを動作させる度に、既にネットワークプリンタ制御プログラムがFD204からインストールされているHD205から、RAM202にロードするようにしてもよい。また、本ネットワークプリンタ制御プログラムを記憶する媒体は、FD以外にCD−ROM、CDR、PCカード、DVD、ICメモリカードであってもよい。さらに、本ネットワークプリンタ制御プログラムをROM201に記憶しておき、これをメモリマップの一部となすように構成し、直接CPU200で実行することも可能である。また、以上の各装置と同等の機能を実現するソフトウェアをもって、ハードウェア装置の代替として構成することもできる。
また、以下では、本ネットワークプリンタ制御プログラムのことを、簡単に印刷制御プログラムまたはプリンタドライバと呼ぶこともある。印刷制御プログラムは、クライアントにおいては、印刷ジョブの印刷先の変更を指示したり、印刷順序を変更する指示をするための制御を行うプログラムを含む。一方、プリントサーバにおいては、印刷ジョブの順序制御を行ったり、印刷ジョブの印刷終了や印刷先変更要求などを通知するためのプログラムを含んでいる。また、このような制御を行う本実施形態の印刷制御プログラムは、クライアントにインストールされるモジュールと、プリントサーバにインストールされるモジュールを別々に分けてもよいし、ひとつの印刷制御プログラムが、実行される環境によりクライアント用として機能したり、プリントサーバ用として機能するようにしてもよい。あるいは、一台のコンピュータに、クライアント用の機能を持つモジュールとプリントサーバ用として機能するモジュールとをともにインストールし、同時にあるいは時分割で、擬似的に平行動作させる構成も可能である。
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には、本実施形態で説明するネットワークプリンタ制御プログラムおよび関連データが格納されている。
<印刷処理システムにおけるソフトウエア構成例>
ここで、本実施形態における用語の技術的意味について説明しておく。
複数のプリンタを1つのプリンタとして仮想的に束ねる仮想プリンタを「グループプリンタ」、束ねられるプリンタを「メンバプリンタ」とよぶ。また、グループプリンタおよびメンバプリンタには、所定の出力ポートが対応付けられた仮想プリンタドライバおよびデバイスドライバが対応しているので、グループプリンタ及びメンバプリンタをドライバに対応して考えることもできる。そして、後述する図18乃至21のフローチャートにおいて仮想プリンタを作成する処理について説明する。
グループプリンタを更に具体的に説明すると、アプリケーションからOSを介して生成される描画命令に基づいて中間形式ファイル(汎用印刷ファイル)を生成するためのデータを生成する仮想ドライバをグループプリンタドライバと呼ぶ。そして、後述するジョブ制御プリントサービスにより、先の中間形式のファイルに基づいてページ記述言語を生成させるべく各個別のプリンタドライバに印刷指示がなされるが、この個別の各プリンタドライバに対応するプリンタをメンバプリンタと呼ぶ。また、各メンバプリンタは最終的には特定のデバイスに対応することとなる。
一方、本実施形態において、アプリケーションにおける印刷指示に応じてWindows(登録商標)等のOSを介して出力される描画命令(一般的にDDI或いはGDIと呼ばれている)あるいはEMF(EnhancedMetafi1eFormat:拡張メタファイル)を解釈しページ記述言語を生成しデバイスへ出力させるようなプリンタドライバを通常プリンタドライバ、このときのデバイスを通常デバイスと呼び、グループプリンタやメンバプリンタと区別する。なお、OSとしてはWindows(登録商標)に限定されるものではなく、描画命令を備えるOSであれば適用可能であることは言うまでもない。
図6は、本システムのクライアントサーバモデルにおいて、Microsoft Word(登録商標)などの一般的なアプリケーションから発行された描画コマンドを含む印刷ジョブが、印刷ジョブ制御システムにおいてどのように処理されるかを示した図である。
通常、印刷の指示がされると、アプリケーションプログラムは一連の描画命令をOSを介して生成させる。この生成された描画命令はプリンタドライバを経て所定の形式に変換された後、ウインドウズ(登録商標)スプーラ(Windows(登録商標) Spooler)に渡される。Windows(登録商標) Spoolerは、ユーザがユーザインタフェースを介して選択し指示したポートモニタにプリントジョブデータを渡して、プリンタデバイスに送信させる手順をとる。本実施形態では、今述べた通常の動作に対してユーザはあらかじめ印刷ジョブ制御システム用のポートモニタ621(以降、ジョブ制御ポートモニタと略記)を指定して印刷を指示する。
アプリケーションプログラム601は一連の描画命令をOSを介して生成させる。ここで、OSを介して生成された描画命令は、グループプリンタドライバ603或はPDLDriver602の何れか指定されたプログラムに引き渡させる。
OSを介して生成された描画命令を受け取ったグループプリンタドライバ603では、汎用印刷ファイルを生成するための汎用ドキュメントデータを生成し、プリンタデバイスへプリントジョブデータを送信するOSに標準で装備されたTCP/IP Standard Portなどのポートモニタではなく、ジョブ制御ポートモニタ621にプリントジョブデータとして送信する。また、プリンタドライバインタフェースを介して設定された用紙サイズ、ステープル指示等の印刷設定情報も、ジョブ制御ポートモニタ621に送信される。
ジョブ制御ポートモニタ621は、プリントジョブデータである汎用印刷ドキュメントデータをプリンタデバイス105に送信するのではなく、印刷ジョブ制御システム用プリントサービス622(以降、ジョブ制御プリントサービスと略記)に送信する。ジョブ制御プリントサービス622は、プリントジョブデータに対して、後述するような印刷ジョブ制御処理を行う。
一方、OSを介して生成された描画命令がPDLDriver602に投入された場合には、PDLDriver602よって頁記述言語が生成され、該生成された頁記述言語は、印刷処理を行うよう設定されたPDLDriver602対応するジョブ制御ポートモニタ621、ジョブ制御サービス622を介して対応するデバイスに送信される。
印刷ジョブ制御システム用プリントマネージャ623(以降、ジョブ制御プリントマネージャと略記)は、ユーザがジョブ制御プリントサービス622内部でプリントジョブがどのような状態にあるかを調べたり、プリントジョブを操作したりするためのユーザインタフェースを提供するプログラムである。ジョブ制御プリントマネージャ623は、ジョブ制御プリントサービス622のソフトウェアのインタフェース(API:Application Program Interface)を介して、ジョブ制御プリントサービス622と情報・指示をやり取りしている。更に詳細な処理としては、プリントマネージャー623がジョブ制御プリントサービス622に対してデバイスを指定してのイベントを発行し、ジョブ制御プリントサービス622は発行されたイベントに基づくデバイスのステータスを監視して、該監視に基づく結果をプリントマネージャー623に通知する。
印刷ジョブ制御システム用サーバ630(以降、ジョブ制御サーバと略記)は、個々のクライアント102〜104上のジョブ制御プリントサービス622がプリンタデバイス105にプリントジョブデータを送信するタイミングを集中制御(スケジューリング)している。印刷ジョブ制御システム用マネージメントコンソール633(以降、ジョブ制御マネージメントコンソールと略記)は、ジョブ制御サーバ630が持つソフトウェアがアクセスするためのAPIを介して、ジョブ制御サーバ630と情報・指示をやり取りすることで、印刷ジョブ制御システム全体を監視することができる。
また、ジョブ制御サーバ630は、デバイス情報コントロールモジュール631を用いて各プリンタデバイス105と通信を行い、各プリンタ内の印刷ジョブや動作状態に関する情報を入手したり、操作を行ったりする。入手した情報は、クライアント102〜104側のジョブ制御プリントサービス622に渡すことができる。
<印刷処理システムの動作例>
次に、本実施形態におけるグループプリンタドライバ603からの印刷について説明する。
グループプリンタドライバ603は汎用印刷ファイル中の印刷指示書(後述の図8にて説明)の指示にしたがって、アプリケーションプログラム601が生成した一連の描画コマンドをプリンタデバイスやOSの種類に依存しない汎用中間フォーマットデータ(前述の汎用ドキュメントデータに相当)に変換する。この汎用中間フォーマットデータは、Windows(登録商標) Spooler604からジョブ制御ポートモニタ621を経て(図6の(a))、ジョブ制御プリントサービス622に導かれる(図6の(b))。ここで、汎用中間フォーマットデータは、汎用印刷ファイルに構築される。この汎用印刷ファイルの構成については後述する。
ジョブ制御プリントサービス622は、このプリントジョブに対して行うジョブ制御の種類に応じて、汎用印刷ファイルをもとに描画コマンドを生成し(図6の(c))、続いてPDLドライバ602がその描画コマンドをプリンタデバイス105が解釈可能なPDL形式のファイルにする。
図6では代行機能仮想プリンタ(後述の図18で作成される仮想プリンタ)から印刷ジョブが投入された場合に、ジョブ制御プリントサービス622で、このプリントジョブに対してプリンタ側のエラーを検知して代行印刷を行う例を示しており、実線で示されるのは当初印刷を予定していたメンバジョブであり、破線については代行印刷のために生成されたのジョブを示している(図6の(c))。PDLドライバ602で生成されたPDLファイルはWindows(登録商標) Spooler604、ジョブ制御ポートモニタ621を経て(図6の(d))、再びジョブ制御プリントサービス622に渡される(図6の(e))。ジョブ制御プリントサービス622は、ジョブ制御サーバ630の指示に従ってPDLのプリントジョブデータをプリンタデバイス105に送信する(図6の(f))。
また、分散印刷仮想プリンタ(後述の図19、図20で作成される仮想プリンタ)のUIを介しての設定に基づく汎用印刷ファイルがグループプリンタドライバ603により行なわれ、ジョブ制御プリントサービス622に投入される(図6の(a)、(b))。この汎用印刷ファイルの印刷指示書には分散メンバーの論理プリンタを特定する情報が含まれている。ジョブ制御プリントサービス622は、汎用印刷ファイル中の印刷指示書の指示にしたがって、1つの汎用印刷ファイルを複数のプリントジョブに論理的に分割してそれぞれ別のプリンタデバイス(分散メンバー)に送信する。ジョブ制御プリントサービス622は汎用中間フォーマットデータに基づく印刷指示を(図6の(c)、(d)、(e)、(f))分散メンバプリンタの数だけ繰り返し行なう。
また、カラーモノクロ分散仮想プリンター(後述の図21で作成される仮想プリンタ)については、グループプリンタドライバ603で汎用中間フォーマットデータを作成する際に描画コマンド中のカラー属性の有無を物理ページ毎に判別し汎用印刷ファイルを作成する。そして、作成された汎用印刷ファイルはジョブ制御プリントサービス622に投入される(図6の(a)、(b))。
そして、汎用印刷ファイルの印刷指示書に従い、カラー属性が含まれる物理ページの汎用中間フォーマットデータをカラー論理プリンタに処理させ(図6の(c)→カラーPDL Driver602→(d)→(e)→(f)→)、カラー属性が含まれない物理ページの汎用中間フォーマットデータをモノクロ論理プリンタに処理させる(図6の(c)→モノクロPDL Driver602→(d)→(e)→(f)→)すればよい。
<汎用印刷ファイルの構成例>
図8は、構築された汎用印刷ファイルの構成の一例を示した図である。
本実施形態で使用される汎用印刷ファイルは、印刷指示部8a(前述の印刷指示書に相当)とドキュメントデータ部8bとからなる。印刷指示部8aは、ドキュメントの情報と印刷指示とを記述した部分である。また、ドキュメントデータ8bは、上に説明した如くアプリケーションのドキュメントのデータを汎用的な形式のデータに変換したものであり、プリンタ言語やOSの種類に依存しない或は依存しにくい形式のデータフォーマットとなっている。
アプリケーションデータを変換した後の変換後データ(汎用印刷データ)としては、印刷リソースデータとして利用可能でかつワードプロセッサアプリケーション等により再度編集可能な形式のデータであることが想定され、実質的な標準形式のうち、例えば、XML形式や、WINDOWSシステムにより提供されるEMF形式、或はAdobe Systems IncorporatedによるPDF(Portable Document Format)形式やSVG形式などが汎用形式の汎用印刷データとして採用できる。
また、図示はされてはいないが、汎用印刷ファイルには、各メンバプリンタに対応したDEVMODEも含まれているものとする。該DEVMODEには、後述の図12にて詳しく説明する共通設定項目及び拡張設定項目の双方が含まれるものとする。
更に詳細に説明すると、印刷指示部8aは、ヘッダ部801、ページ情報部802、ドキュメント属性部803、印刷体裁指示部804、出力方法指定部805、メンバプリンタ数806、メンバプリンタドライバ名807などから構成されている。
ヘッダ部801は、本ファイルのバージョン識別やファイル情報などの情報を格納する部分である。ページ情報部802は、ドキュメントデータ部8bのドキュメントデータのページ数、各ページのサイズなどの情報を格納する部分である。
印刷体裁指示部804は、グループプリンタドライバのUIや、メンバプリンタの個別のUIを介して設定された印刷ページ範囲、印刷部数、ドキュメントデータの面付け情報(N−UPや製本印刷など)、ステイプル指示やパンチ指示など、出力体裁に関する情報を格納する部分である。尚、ステイプル、パンチ指示については、Page単位で指定(サブセットステイプ等)されることもある。尚、各メンバプリンタの個別のUIを介して設定された内容は印刷指示部804に反映されると共に、各メンバプリンタに対応するDEVMODEにも反映されて保存される。
出力方法指定部805は、出力方法として、分散印刷、同報印刷、代行印刷、カラーモノクロ分散印刷、通常印刷(代行しない印刷)などの出力方法に関する情報を格納する部分である。この出力方法指定部805に代行印刷が設定されている場合には、更に優先順位情報(第一候補、第二候補・・・)を付したプリンタ情報が含まれる。
メンバプリンタ数806は、グループプリンタドライバが関連付けているメンバプリンタの数を格納する部分である。メンバプリンタドライバ名807は、メンバプリンタのプリンタドライバ名を格納する部分である。このメンバプリンタドライバ名807は、前述のメンバプリンタ数806の数だけの格納エリアを持っている。
前述の図6で説明したジョブ制御プリントサービス622では、汎用印刷中間フォーマットデータより汎用印刷ファイルを生成する際、グループプリンタドライバのGUI上での設定を印刷指示部8aへ記憶する。更に、グループプリンタドライバから受け取った汎用印刷中間フォーマットデータを、汎用印刷ファイルのドキュメントデータ部8bに記録する処理も、ジョブ制御プリントサービス622により実行される。
<Windows(登録商標) Print Systemと印刷ジョブ制御システムの関係例>
次に、図7でWindows(登録商標)が提供するPrint Systemと印刷ジョブ制御システムとにおける印刷ジョブの関係と処理概要をさらに詳しく述べる。ここで、図6と同じ機能は同じ参照番号を付与しており、その機能については詳説しない。
図7中では、印刷ジョブ制御システム700は、制御プログラムが動作するプリントサーバ101とクライアント102〜104の物理的なマシンをまたいだ、印刷ジョブ制御システムの範囲を示している。また、プリントサーバが管理している出力ポート(Output Port)711は、クライアントのジョブ制御プリントサービス622のプロキシ出力ポート(Proxy Output Port)712とそれぞれ関連付けられ、このプロキシ出力ポートは自ポートに関連づけられた各クライアント上のプロキシ出力ポートの全てを統一的に管理している。本実施形態では、実際のプリントジョブデータは各々のクライアントのプロキシ出力ポート712に保持される。また、クライアント102〜104にジョブ制御サーバと同様の機能が備えられ、クライアント102〜104の各々が単独で本形態の印刷処理を実行する場合には、図7中のProxy OpuPut PortがOpuPut Portに置き換えられるものとして考えることが出来る。
ジョブ制御サーバ630は、プリントジョブデータ自体の送信処理は行わず、ジョブ制御プリントサービス622に対して印刷ジョブの送信指示のみを行う。その指示に応じて、クライアントのジョブ制御プリントサービス622はプリントジョブデータをプリントデバイス105に送信する。
次に、印刷ジョブ制御システム700が、代行印刷といった付加価値印刷を行う場合の処理を説明する。
印刷ジョブ制御システム700が、代行印刷といった付加価値的な印刷を行う場合には、前述のようにユーザまたはアプリケーション601は、グループプリンタドライバ603に割り当てられたプリンタに印刷ジョブを発行しなければならない。ジョブ制御プリントサービス622は、グループプリンタドライバ603によって処理された汎用印刷中間フォーマットデータをジョブ制御ポートモニタ621を介して受け取る。ジョブ制御プリントサービス622は、この汎用印刷中間フォーマットデータより汎用印刷ファイルを構築し(図7の715)、先に説明した印刷指示部8aの指示内容に従う印刷指示をデスプーラ(Despooler)701に対して行う。そして、Despooler701を介してPDLドライバが割り当てられた別のプリンタにジョブ(メンバジョブ)を発行して、印刷を行わせる。
このとき、Despooler701は、ジョブ制御プリントサービス622の汎用印刷ファイルの印刷指示部8aの解釈に基づく指示に応じて、ドキュメントデータ部8bのドキュメントデータを加工してWindows(登録商標)のGDIに変換し、プリンタドライバに対して印刷指示を行い、印刷ジョブを発行する。例えば、印刷体裁指定部804に2−UPに相当する指示が記録されていた場合、用紙1枚に2ページ分のドキュメントデータを縮小レイアウトするようにDEVMODEを介してメンバプリンタに対して指示する。また、印刷体裁指定部804にステイプル指示がある場合にはDEVMODEを介してステイプルの指示を行う。また、代行印刷時には、印刷指示部8aに記述されている代行先メンバプリンタにジョブを発行する。尚、2−UP等の縮小レイアウトを処理する場合に、Despooler自身が印刷体裁指定部804の内容に基づき縮小レイアウトするようにして、メンバプリンタにはDEVMODEを介して1−UPを指示するようにしても良い。
また、Despooler701はメンバプリンタにジョブを発行する際、メンバプリンタドライバに対応する印刷指示として、メンバプリンタのDEVMODEを作成する必要があるが、このDEVMODEは印刷指示部8a或は各メンバプリンタに対応して保存されたDEVMODEに記載された内容を適宜各メンバプリンタDEVMODEに反映させて生成する。
クライアント側のジョブ制御プリントサービス622は、PDLドライバ602によってレンダリングされたそれぞれのメンバジョブのPDLデータをジョブ制御ポートモニタ621を介して受け取り、受け取ったジョブ(PDLデータ)に関する情報をプリントサーバ側に知らせ、ジョブデータは自身のプロキシ出力キュー(Proxy Output Port)712で一時保持する。その後、ジョブ制御サーバ630からの送信指示を受けた後にプリンタデバイス105に送信する。
次に、本発明の第一の実施形態における、印刷ジョブ制御システム700における設定の制御について説明する。
<印刷ジョブ制御システム設定プログラム900の内部構成及び動作>
図9は、図1に示したPC101で動作する印刷ジョブ制御システム700の設定を行うための設定プログラム(=900)の内部的なソフトウェアモジュール構成を具体的に示した図である。ここでは印刷ジョブ制御システム700自体の構成の詳細は本発明の趣旨からははずれるため省略する。ただし、当該システムはWindows(登録商標)におけるポートモニタ及びポートとして固有のものを割り当てた論理プリンタを使用することに留意する必要がある。尚、図7中ではポートモニタとポートとが区別されて示されているが、ポートモニタが所定のポートをモニタする際には、ポートモニタは前記所定のポートの設定(例えばIPアドレスや通信方式)を共有しているのでので、よってポートモニタとポートとは特に区別することなく、Output Portとジョブ制御ポートモニタの組を1つの実体と見るようにしても良い。よってポートモニタ及びポートの設定や状態のことを単なるポート或いはポート部やポート情報やポート設定情報などと呼ぶこともある。
本実施形態および他の実施形態において、各モジュール及び各フローチャートは、図2のコンピュータ(情報処理装置)102におけるCPU200によって制御されている。なお、図9及び図10の各モジュールは、ハードウエア構成として実現しても良い。
印刷ジョブ制御システム700が接続されるネットワークシステムは図6に示されるものである。
図13は、ネットワークを介して複数のプリンタデバイスと通信可能な図9、図10に示される機能を備えた情報処理装置において実行されるフローチャートであり、仮想プリンタ作成処理における条件属性を取得し、該取得された条件属性に基づいたユーザの所望する仮想プリンタを複数の論理プリンタを用いて自動的に作成する処理を示す。
まず、後述の図13のステップS1301の処理、つまり既存の論理プリントの情報収集処理に係る図9の説明を行う。ここで、既存の論理プリンタに、本印刷ジョブ制御システム固有のポートモニタに関連付けられた論理プリンタを含めるものとして説明するが、対象をそうでない論理プリンタのみとするようにしても良い。
全体制御モジュール901はまずインストール済み論理プリンタ解析モジュール902を呼び出す。インストール済み論理プリンタ解析モジュール902は、本印刷ジョブ制御システム700専用の論理プリンタを作成しようとする以前に汎用的な論理プリンタが存在しているかどうかをまず調べ、存在する場合はその設定内容を抽出してインストール済み論理プリンタ情報記憶モジュール916内部のインストール済み論理プリンタ情報テーブルに保存する。
インストール済み論理プリンタ解析モジュール902は配下に論理プリンタ検出モジュール903、ポートモニタ解析モジュール904、フィルタ情報記憶モジュール911、インストール済み論理プリンタの対応機種判別モジュール912を持つ。
論理プリンタ検出モジュール903はOSにインストールされている全ての論理プリンタを検出し、インストール済み論理プリンタ解析モジュール902にその情報を渡す。
ポートモニタ解析モジュール904はさらに配下にポートモニタタイプ判別モジュール905、IPアドレス取得モジュール907、プリントジョブ送信方式取得モジュール909を持つ。
ポートモニタタイプ判別モジュール905は、検出された論理プリンタに割り当てられているポートモニタ及びポートが印刷ジョブ制御システム設定プログラム900に対応可能なものであるかどうかを判定する。対応可能であると判断されれば、対応可能な種類のポートモニタ及びポートごとに、ポート付け替え処理を可能とするためのプラグインモジュールが存在することになる。このプラグインモジュールによってデバイスのIPアドレスが取得される。なお、本実施例ではWindows(登録商標)に標準で用意されているStandard TCP/IPポートのみに対応するものとし、図9にはStandard TCP/IPポート判別プラグインモジュール906のみが示されている。また、本形態におけるIPアドレスとは、所謂Internet Protocol アドレスに限定されるものではなく、通信に用いることができる情報であれば、IDやMACアドレスなどの様々なアドレス情報に置き換えることができるものとする。以下、アドレス情報の代表としてIPアドレスを例に説明を行なう。
ポートモニタ解析モジュール904は、ポートモニタタイプ判別モジュール905によって印刷ジョブ制御システム700がサポートするポートモニタ及びポートが割り当てられていると判定された論理プリンタについて、IPアドレス取得モジュール907を呼び出す。IPアドレス取得モジュール907は、ポートモニタ及びポートに設定されているIPアドレスをポートモニタ及びポートのタイプに応じたIPアドレスプラグインモジュール(本実施例ではStandard TCP/IPポートIPアドレス取得プラグインモジュールを図示している)を介して取得してポートモニタ解析モジュール904に返す。
さらに、プリントジョブ送信方式取得モジュール909も呼び出す。プリントジョブ送信方式取得モジュール909は、ポートモニタ及びポートに設定されているLPRあるいはRAWのプリンタデバイスへのプリントジョブデータの転送方法、さらにLPRの場合はキュー名、RAWの場合にはポート番号を取得する。これはポートモニタ及びポートのタイプに応じたIPアドレスプラグインモジュール(本実施例ではStandard TCP/IPポートIPアドレス取得プラグインモジュールを図示している)を介して行われる。結果はポートモニタ解析モジュール904に返す。ポートモニタ解析モジュール904はポートモニタ及びポートから収集したこれらの情報を上位のインストール済み論理プリンタ解析モジュール902に渡す。
次に、インストール済み論理プリンタ解析モジュール902はポートモニタ及びポートの解析が終わると、次にインストール済み論理プリンタ対応機種判別モジュール911を呼ぶ。インストール済み論理プリンタ対応機種判別モジュール912は、インストール済み論理プリンタのドライバ名取得モジュール913により当該論理プリンタに割り当てられているプリンタドライバ名をまず取得し、さらにドライバ名/機種変換モジュール914を呼び出して、取得したプリンタドライバ名からプリンタデバイスの種類を割り出す。 インストール済み論理プリンタ解析モジュール902は、割り出されたプリンタデバイスの種類から、そのデバイスの印刷速度、ステイプル機能の有無、両面印刷機能の有無、カラー印刷能力の有無等の情報を機種属性情報DBモジュール915に問い合わせることにより入手する。
ポートモニタ解析モジュール904は、以上により得られたIPアドレス、LPRキュー名の情報を上位のインストール済み論理プリンタ解析モジュール902に返し、インストール済み論理プリンタ解析モジュール902は返された情報をインストール済み論理プリンタ情報記憶モジュール916に記憶させる。インストール済み論理プリンタ情報記憶モジュール916は、インストール済み論理プリンタ名により整理されたテーブルに記憶すべき情報を格納する。
さらに、インストール済み論理プリンタ解析モジュール902は、入手された上記のデバイス属性とフィルタ情報記憶モジュール911に保持されたプリンタ選択条件とを照らし合わせ、選択条件を満たす論理プリンタのみ、インストール済み論理プリンタ情報記憶モジュール916内のインストール済み論理プリンタ情報テーブルにポートモニタ及びポート置換のフラグを立てる。
すなわち、論理プリンタ情報記憶モジュールに記憶される情報は、たとえば論理プリンタ毎に次のようなものとなる。
(1)サポート対象のポートモニタ及びポートが割り当てられていると判定された論理プリンタのIPアドレス、
(2)ポートモニタ及びポートに設定されているLPRあるいはRAWのプリンタデバイスへのプリントジョブデータの転送方法、
(3)データの転送方法がLPRの場合はキュー名、RAWの場合にはポート番号、
(4)論理プリンタに割り当てられているプリンタドライバ名、
(5)論理プリンタに割り当てられているプリンタデバイスの種類、
(6)印刷速度、ステイプル機能の有無、両面印刷機能の有無、カラー印刷能力のうち、フィルタ情報記憶モジュール911によって指定された条件を満たすもの、である。
これら情報が、既に設定済みの論理プリンタから得られ、保持され、ユーザ先に既に存在している論理プリンタに関連付けられた情報が、新たな論理プリンタの作成にあたって有効に活用されることとなる。る。本実施形態では、印刷ジョブ制御システム設定プログラム900はTCP/IPにのみ対応するものとしていることから、IPアドレス等を取得して記憶するものとなっている。しかしながら、既に設定されている論理プリンタについては、その論理プリンタに対応するポートが設定されており、上記(1)で記憶される項目は、その設定済ポートということになる。TCP/IP対応の論理プリンタであればそのポートとしてIPアドレスが設定されていることから、そのIPアドレスが論理プリンタ情報記憶モジュールに記憶される。同様に、他のプロトコルに対応する論理プリンタであったとしても、印刷ジョブ制御システム設定プログラム900の対応を条件として、論理プリンタ対応ポートが取得され記憶される。
次に、後述の図13のステップS1302の処理に係る図9の説明を行う。全体制御モジュール901は、インストール済み論理プリンタ解析モジュール904の処理が終わると、次にインストール済み論理プリンタ変更モジュール917を呼び出す。インストール済み論理プリンタ変更モジュール917は、インストール済み論理プリンタ情報記憶モジュール916に格納された情報を読み出して以下の処理を行う。
まず、ひとつのインストール済み論理プリンタを選択する。次に、この論理プリンタについて前述の処理によってポートモニタ置換のフラグが付加されているかどうかが調べられる。ポートモニタ置換のフラグが立っている場合は、本印刷ジョブ制御システム専用ポートモニタ作成モジュール918を呼び出し、ポートモニタ920のインスタンス(オプジェクト指向プログラミングで実行時に作成されるオブジェクトの実体を指す。)を一つ作成する。そして、作成したポートモニタ920のインスタンスを先に選択したインストール済み論理プリンタに既に割り当てられているものに代えて新たに割り当てる。以上の手順を、インストール済み論理プリンタ変換モジュール917はインストール済み論理プリンタ情報記憶モジュール916中のインストール済み論理プリンタ情報テーブルの各エントリについて実行する。
以上の処理により、インストール済み論理プリンタのポートモニタ及びポートが本印刷ジョブ制御システム固有のポートモニタ及びポートに置き換えられた場合は続いて図13のステップS1306の、S1411或いはS1608の条件属性に対応した論理プリンタを用いて仮想プリンタを自動的に作成する仮想プリンタ922の作成に移る(後述)。置き換えられなかった場合は、以下に示す図13のステップS1304の手順によって本印刷ジョブ制御システム固有のポートモニタ及びポートを持った論理プリンタ921を新規に作成する処理を行う。ここで、固有のポートモニタ及びポートとしては図6のジョブ制御ポートモニタ及びOut PutPortの組み合わせが相当する。
次に、図13のステップS1304の処理に係る図10の説明を行う。全体制御モジュール901はプリンタデバイス情報収集モジュール1001を呼び出す。呼ばれたプリンタデバイス情報収集モジュール1001は配下のネットワークプリンタデバイス探索モジュール1002を呼び出す。ネットワークプリンタデバイス探索モジュール1002は、ネットワーク上に、ネットワーク管理プロトコル(例えばSNMPプロトコル)に則ったパケットのブロードキャストを行うことにより、ネットワークに接続されているプリンタデバイスの検索を行う。ブロードキャストに応答したプリンタデバイスから返されるパケットはそのデバイスの機種名、IPアドレス、デバイス名、MACアドレスの情報を持っている。ネットワークプリンタデバイス探索モジュール1002は全ての有効な応答パケットに含まれている機種名、IPアドレス、デバイス名、MACアドレスの情報をプリンタデバイス情報収集モジュール1001に返す。
プリンタデバイス情報収集モジュール1001は、返された前記の情報(機種名、IPアドレス、デバイス名、MACアドレス)を論理プリンタ情報記憶モジュール1005に保存させる。なおこのSNMPプロトコルによるデバイスの情報収集の手順は、IETFにより標準化されており、一般に用いられているものである。読み出した機種名がサポート機種の場合、機種名をもとにこのプリンタデバイスの属性(印刷速度、ステイプル機能の有無、両面印刷機能の有無、カラー印刷機能の有無)を機種属性情報DBモジュール915から取得する。一方、フィルタ情報記憶モジュール911からフィルタファイルに記憶されているフィルタ情報を取得し、両者を比較することにより論理プリンタを作成すべきかどうかを判定する。その結果、作成すべきであると判定された場合、つまりプリンタデバイスの属性がフィルタファイルで指定された条件を満たす場合は、プリンタデバイス情報記憶モジュール1005が持つプリンタデバイス情報テーブルにおいて当該プリンタデバイスに対応するエントリの論理プリンタ作成フラグを立てる。
次に、後述の図13のステップS1305の処理に係る図10の説明を行う。全体制御モジュール901は、プリンタデバイス情報収集モジュール1002の処理が終わると、次に論理プリンタ自動作成モジュール1006を呼び出す。論理プリンタ自動作成モジュール1006は、プリンタデバイス情報記憶モジュール1005に格納された機種名、IPアドレス、論理プリンタ作成フラグを各エントリについて読み出す。
論理プリンタ作成フラグが立っていた場合は、論理プリンタを作成する。すなわち機種名をドライバ名変換モジュール1007に渡し、機種名に対応するプリンタドライバの名称を取得する。次に、機種名をジョブ送信方式情報取得モジュール1008に渡し、プリントジョブのプリンタデバイスへの送信方式とそれに関連する初期設定情報を取得する。本実施例では前者はLPRまたはRAW、後者はLPRの場合にはLPRキュー名、RAWの場合にはポート番号を持つ。この取得する情報はジョブ送信方式情報取得モジュール1008が管理する静的な情報であり、各機種に対してあらかじめ一意に決められている。
論理プリンタ自動作成モジュール1006は、プリンタデバイス情報記憶モジュール1005から取得したIPアドレスに加え、ジョブ送信方式情報取得モジュール1008から得られた上記情報を印刷ジョブ制御システム700専用ポートモニタ作成モジュール918に渡す。印刷ジョブ制御システム700専用ポートモニタ作成モジュール918は配下のポートモニタ初期値取得モジュール1009に機種名とジョブ送信方式情報を渡して、ポートモニタ及びポートの各種設定値の初期値を生成させ、入手する。これと前記のIPアドレス、ジョブ送信方式情報を用いて印刷ジョブ制御システム700専用のポートモニタ920のインスタンスを作成する。
論理プリンタ作成モジュール1006は、上記で作成されたポートモニタ及びポートと上記で取得したプリンタドライバ名を用いて論理プリンタを作成する。
次に、後述の図13のステップS1306の処理に係る図10の説明を行う。仮想プリンタ作成モジュール1010は、論理プリンタ921を用い、それらの属性に応じて代行機能、分散、カラー/モノクロ分散の機能を持つ仮想プリンタを適宜作成する。また、この仮想プリンタ作成モジュール1010には、後述の図18乃至21において作成される仮想プリンタに対応するグループプリンタドライバ603が予め含まれているものとする。以下、その詳細を述べる。(以下においては、特に断らない限り論理プリンタは全て本印刷ジョブ制御システム固有のポートモニタ及びポートを割り当てられたものに限ることとする。)ここで仮想プリンタ作成の対象となる論理プリンタは上述の手順により作成された論理プリンタ921のみとするようにしても良いし、予め装置内にインストールされた本印刷ジョブ制御システム固有のポートモニタが関連付けられた論理プリンタ921を含めるようにしても良い。
仮想プリンタ作成モジュール1010は、まず論理プリンタ921のインスタンスが実際に存在するかどうかを調べる。存在しない場合は仮想プリンタを作成せずに処理を終了する。存在する場合は、論理プリンタ921のインスタンスの属性に応じて代行機能、分散印刷機能、カラー/モノクロ分散印刷機能を持った仮想プリンタ922のインスタンスを状況に応じてそれぞれ作成する。以下、それぞれの処理の詳細を述べる。なお、具体的な手順についてはフローチャートを用いて後述する。
(代行機能仮想プリンタ)
まず、代行機能を持った仮想プリンタ922のインスタンスを作成する処理を以下の要領で行う。尚、ここでいう代行機能プリンタとは自動代行プリンタ或いは代行時にユーザが選択可能な代行候補プリンタを指す。
(1)論理プリンタの中にオペレーティングシステムにおける「通常使うプリンタ(デフォルトで利用するように設定されているプリンタ)」が存在する場合、この論理プリンタを優先度1(代行前に最初に利用される論理プリンタ)のメンバプリンタとする。存在しない場合、プリンタ属性を考慮して優先度1のメンバプリンタを決定する。例えばモノクロデバイスの論理プリンタのうち、デバイスの印刷速度の最も高速なものを優先度1のメンバプリンタとする。また、モノクロデバイスの論理プリンタが存在しない場合はカラーデバイスの論理プリンタのうち、デバイスの印刷速度の最も高速なものを優先度1のメンバプリンタとするなどが想定される。(印刷速度の最速な論理プリンタが複数存在する場合は、それらの論理プリンタの名前の辞書順の最も若いものに優先度1を割り当てる。)
(2)優先度2以下のメンバプリンタには、例えば前記優先度1の論理プリンタとカラー属性において同じ全ての論理プリンタが選択される。また、優先度2以下のメンバプリンタは印刷速度の速い順に優先度を割り当てたり、同じ印刷速度同士では論理プリンタ名の辞書順の若い順に優先度を割り当てたりしても良い。
(3)仮想プリンタ作成モジュール1010は、上記の方針に従って優先度を割り振られた一つまたは複数の論理プリンタをメンバプリンタとする自動代行印刷の仮想プリンタ922のインスタンスを作成する。
(分散印刷仮想プリンタ)
続いて、仮想プリンタ作成モジュール1010は、論理プリンタ921の属性に応じて所定のプリンタの優先度を高くして分散印刷の仮想プリンタ922のインスタンスを作成する。例えば以下の要領により作成する。尚、ここでいう分散印刷仮想プリンタの分散割合としてはプリンタの印刷速度(能力)に基づくなど特に限定されない。
(1)同一カラー属性(カラーまたはモノクロ)の論理プリンタが複数存在する場合のみ分散印刷の仮想プリンタのインスタンスを作成する。
(2)モノクロデバイスの論理プリンタが複数存在し、かつ「通常使うプリンタ」が、その中の一つがである場合、この論理プリンタを優先度1のメンバプリンタとする。
(3)カラーデバイスの論理プリンタが複数存在し、かつその中の一つが「通常使うプリンタ」である場合、この論理プリンタを優先度1のメンバプリンタとする。
(4)「通常使うプリンタ」と同じカラー属性の論理プリンタが一つしかない場合、もう一方のカラー属性の論理プリンタから優先度1のメンバプリンタを選択する。
(5)「通常使うプリンタ」が本システム固有のポートモニタ及びポートを持つ論理プリンタ中に存在しない場合は、モノクロデバイスの論理プリンタをメンバプリンタとする。ただしモノクロデバイスの論理プリンタが一つしか存在しない場合はカラーデバイスの論理プリンタをメンバとする。いずれの場合もデバイスの印刷速度の最も速い論理プリンタを優先度1のメンバプリンタとする。
(6)優先度2以下のメンバプリンタは印刷速度の速い順に優先度を割り当てる。同じ印刷速度同士では論理プリンタ名の辞書順の若い順に優先度を割り当てる。
(7)仮想プリンタ作成モジュール1010は、上記の方針に従って優先度を割り振られた一つまたは複数の論理プリンタをメンバプリンタとする自動代行印刷の仮想プリンタ922のインスタンスを作成する。
(カラー/モノクロ分散仮想プリンタ)
さらに続いて仮想プリンタ作成モジュール1010は、論理プリンタ922の属性に基づき所定のプリンタの優先度を高くしてカラー/モノクロ分散印刷の仮想プリンタ922のインスタンスを作成する。以下の要領で作成する。
(1)カラーデバイス、モノクロデバイスの論理プリンタが少なくとも一つずつ存在する場合のみ、カラー/モノクロ分散印刷の仮想プリンタのインスタンスを作成する。
(2)カラーデバイス、モノクロデバイスの論理プリンタの中に「通常使うプリンタ」が存在し、それがカラーデバイスの論理プリンタである場合はカラー印刷用のメンバプリンタとして選択する。モノクロ印刷用のメンバプリンタとしては最もデバイスの印刷速度の速い論理プリンタを選択する。「通常使うプリンタ」がモノクロデバイスの論理プリンタであった場合は、カラー、モノクロについて上と逆の処理を行う。
(3)カラーデバイス、モノクロデバイスの論理プリンタの中に「通常使うプリンタ」が存在しない場合は、カラー印刷用、モノクロ印刷用のメンバプリンタとしてそれぞれ最もデバイスの印刷速度の速い論理プリンタを選択する。
(4)仮想プリンタ作成モジュール1010は、上記の方針に従って選択された論理プリンタをメンバプリンタとして、カラー/モノクロ分散印刷の仮想プリンタ922のインスタンスを作成する。
以上述べた、インストール済み論理プリンタのポートモニタ及びポートの変更から、あるいはネットワーク上のデバイスの探索をもとにした論理プリンタの作成から始まり仮想プリンタの作成に終わる一連の処理は、通常、印刷ジョブ制御システム700のインストール時に行われる。前述のようにフィルタ情報記憶モジュール911には、プリントデバイスや論理プリンタを選択する条件に関する情報が保持されているが、この情報をユーザから取得する方法について次に述べる。上に述べた一連の処理は、インストールが完了してから実際に稼動するまでに行うことも論理上可能であるが、インストール時に行う方法の方が手間がかからず便利である。本実施の形態ではそのような場合について説明する。
図11は、印刷ジョブ制御システム700のインストーラの一画面である。この画面では「オートセットアップを行う」と「マニュアルセットアップを行う」という選択肢が用意されているが、ユーザが前者を選択すると図12に示す「Auto Setup機能指定画面」を表示する。尚、図12に示される指定画面はこれに限定されるものではなく、例えば、プリンタ言語の条件や、サドルステッチ等の製本仕上げ機構の条件や、プリンタデバイスが所定のネットワーク環境内のもとなるようにするIPアドレスのアドレス範囲など、様々な条件を含めるようにしても良い。
この図12の設定画面を介して、仮想プリンタ作成処理における条件が指定される。この条件とは、どのような機能或いは属性を持った仮想プリンタを作成するかの指定に該当する。また、仮想プリンタのメンバーを構成する論理プリンタの条件とも捉えることが出来る。
指定された情報はいったん既定のファイルに保存される。フィルタ情報記憶モジュール911は初期化時にこのファイルからフィルタ情報を読み込んで内部に保持し、以後の処理において用いる。また、フィルタ情報記憶モジュールに記憶されるフィルタ情報は外部からコンピュータに読み込ませたファイルによるものでも良い。例えば、印刷システム管理者により電子メールファイルを介して配布されたファイルを読み込みフィルタ情報記憶モジュール911に記憶させるようにしても良い。
(まとめ)
以上に述べた実施形態により次の処理が行われる。
(1)ユーザの指定した或いは外部から読み込んだファイルに基づく条件を用いてポートモニタ及びポートを本印刷ジョブ制御システム700専用のものに変更するべきインストール済みの論理プリンタを決定する。
(2)インストール済みの論理プリンタがなかった場合は、本印刷ジョブ制御システム700専用のポートモニタ及びポートを作成すべきネットワーク上のプリントデバイスを決定し、さらに作成されたポートモニタ及びポートを割り当てられた論理プリンタをユーザの指定した或いは外部から読み込んだファイルに基づく条件を用いて作成する。
(3)(1)または(2))によって作成された論理プリンタを用いて本印刷ジョブ制御システム700固有のサービスを提供する仮想プリンタを作成する。
本実施の形態によれば、仮想プリンタを作成すべきデバイス(論理プリンタ)の機能・性能をユーザがあらかじめ指定しておけば、条件に見合った論理プリンタを自動的に抽出し本印刷ジョブ制御システムで使用するための仮想プリンタまで作成するようになる。それにより、設定の自動化がより進み、システムの導入における手間を軽減することができるようになる。
<印刷ジョブ制御システム設定プログラム900の処理フロー>
図13は、印刷ジョブ制御システム設定プログラム900の機能の概要をフローチャートにより示したものである。以下に各ステップについて説明する。
ステップS1301では、OSに既に登録された各論理プリンタについてデバイスの属性を調べ、ユーザが指定した条件にもとづいて、本印刷ジョブ制御システム固有のポートモニタ及びポートを割り当てるべき論理プリンタが決定される。
ステップS1302では、ステップS1301の結果にもとづいて、新たに本印刷ジョブ制御システム固有のポートモニタ及びポートが作成され、既存の論理プリンタに割り当てられる。
ステップS1303では、ステップS1301、S1302の結果、新たに作成された本印刷ジョブ制御システム固有のポートモニタ及びポートを割り当てられた論理プリンタが存在するかどうかが判断される。存在する場合、処理は仮想プリンタの作成処理ステップS1306に進み、存在しない場合はネットワーク上のデバイスを検索し情報を収集するステップS1304に進む。
ステップS1304では、ネットワーク上のデバイスを検索し情報が収集される。検索されたデバイスそれぞれについて、ユーザが指定した条件にもとづいて論理プリンタを作成するかどうかが判断される。
ステップS1305では、ステップS1304の結果にもとづいて、新たに本印刷ジョブ制御システム固有のポートモニタ及びポートが作成され、さらにそれを用いて新たに論理プリンタが作成される。
ステップS1306では、本印刷ジョブ制御システム固有のポートモニタ及びポートを割り当てられた論理プリンタを一つまたは複数用いて、それらの属性に応じて仮想プリンタが適宜作成される。
図14は、上記のステップS1301をさらに詳細に示したものである。
ステップS1401では、インストール済みの論理プリンタに関する情報を保持するインストール済み論理プリンタ情報テーブルが初期化される。このテーブルはインストール済み論理プリンタ情報記憶モジュール916によって管理されている。なお、ここで「初期化」とは、テーブルの準備をする処理をいう。
ステップS1402では、論理プリンタ検出モジュール903が、Windows(登録商標) スプーラAPI(Application Program Interface)919を用いてOS上にインストールされている論理プリンタ(921)のリスト情報を取得する。ここで、既に本印刷ジョブ制御システム固有のポートモニタを割当てられた論理プリンタは検索されたとしても無視するようにすれば後述の各ステップの処理や図15の処理を省略することが出来る。
ステップS1403では、インストール済み論理プリンタ解析モジュール902が、ステップS1402の結果に基づいて、論理プリンタが一つでも検出されたかどうかを判断する。
ステップS1404では、ステップS1403で論理プリンタが一つ以上検出された場合に、インストール済み論理プリンタ解析モジュール902が、そのひとつひとつについてステップS1405以下の処理を行うよう制御している。そのために、ステップS1405以下の処理を行っていない論理プリンタが存在するかどうかが判断される。
ステップS1405では、ステップS1405以下の処理を行っていない論理プリンタのなかから一つの論理プリンタがプログラム内部によって選択される。選択の順序については特に制限は無いが、例えば、検索された順序で選択されるようにしてもよい。
ステップS1406では、ポートモニタタイプ判別モジュール905とそのプラグインモジュールであるStandard TCP/IPポート判別プラグインモジュール906によって、ステップS1405で選択された論理プリンタに割り当てられたポートモニタ及びポートがStandard TCP/IPポートであるかどうか判断される。
ステップS1407では、インストール済み論理プリンタ解析モジュール902が、ポートモニタ解析モジュール904から受け取ったインストール済み論理プリンタの名称をインストール済み論理プリンタ情報記憶モジュール916に渡してインストール済み論理プリンタ情報テーブルに記憶させる。
ステップS1408では、インストール済み論理プリンタ解析モジュール902が、ポートモニタ解析モジュール904から受け取ったインストール済み論理プリンタに割り当てられたポートモニタ及びポートの持つIPアドレスを取得する。
ステップS1409では、ステップS1408で取得されたIPアドレスが、インストール済み論理プリンタ情報記憶モジュール916に渡してインストール済み論理プリンタ情報テーブルに記憶させる。
ステップS1410では、インストール済み論理プリンタ解析モジュール902が、ポートモニタ解析モジュール904から受け取ったインストール済み論理プリンタに割り当てられたポートモニタ及びポートの持つプリントジョブ送信方式とそれに関する情報をインストール済み論理プリンタ情報記憶モジュール916に渡してインストール済み論理プリンタ情報テーブルに記憶させる。
ステップS1411では、インストール済み論理プリンタ解析モジュール902が、インストール済み論理プリンタの対応機種判別モジュール905から受け取ったプリンタデバイスの機種名を取得し、機種属性DBモジュール915から当該機種に関する属性情報(印刷速度、ステイプル機能の有無、両面印刷機能の有無、カラー/モノクロ)を取得する。また、論理プリンタに対応するプリンタデバイスの情報をデバイスコンフィグレーションにより、ネットワークを介してプリンタデバイスから情報処理装置側に取得するように指定もよい。例えば、ステップS1408において取得されたIPアドレスをもとに、プリンタデバイスと通信を行なうことができる。
ステップS1412では、仮想プリンタ作成処理における条件属性を取得する。例えば先の図12のような設定画面を介して入力されフィルタ情報記憶モジュール911保持されるデバイスの選択条件となる属性情報(条件属性)を取得する。
ステップS1413では、ステップS1411で取得したデバイスの属性情報とステップS1412で取得したデバイスの選択条件となる属性情報が比較され、適合する場合には処理はステップS1414に進む。適合しない場合には処理はステップS1404に戻る。
ステップS1414では、インストール済み論理プリンタ情報記憶モジュール916中のインストール済み論理プリンタ情報テーブルにおける、当該論理プリンタのポートモニタ変更フラグを立て条件に見合うプリンタをチェックする処理を行なう。
ステップS1415では、既存の論理プリンタ情報を収集すべく、ステップS1412で取得したデバイスの属性情報(印刷速度、ステイプル機能の有無、両面印刷機能の有無、カラー/モノクロ)をインストール済み論理プリンタ情報記憶モジュール916に渡してインストール済み論理プリンタ情報テーブルに記憶させる。
このように全ての既存の論理プリンタ情報が収集できれば、ステップS1301の処理は終了し、ステップS1302の処理に進む。
図15は、図13におけるステップS1302をさらに詳細に示したものである。
ステップS1501では、インストール済み論理プリンタ情報記憶モジュール916中のインストール済み論理プリンタ情報記憶テーブルに未処理のものがあるかどうかを判断する。ここで、「未処理のもの」とは、ステップS1502以下の処理を行っていない既存プリンタを意味する。なお、図14の一連の処理で、インストール済の既存プリンタが存在しなかった場合には、ステップS1501の処理でYESとなってステップS1502以降の処理には進まないこととなる。
ステップS1502では、インストール済み論理プリンタ情報記憶モジュール916中のインストール済み論理プリンタ情報記憶テーブルにおいてステップS1502以下の処理について未処理のものが1つづつ選択される。
ステップS1503では、インストール済み論理プリンタ情報記憶モジュール916から、ステップS1502で選択した論理プリンタに関係するIPアドレスおよび機種名が取得される。
ステップS1504では、ステップS1502で選択された論理プリンタに関して、インストール済み論理プリンタ情報記憶モジュール916中のインストール済み論理プリンタ情報記憶テーブルのポートモニタ変更フラグが立っている場合は、処理はステップS1505に進む。当該フラグが立っていない場合には、処理はステップS1501に戻る。 ステップS1505では、インストール済み論理プリンタ情報記憶モジュール916から、ステップS1502で選択された論理プリンタに関係するプリントジョブの送信方式とそれに関する情報が取得される。
ステップS1506では、ステップS1503、S1505で取得した情報を用いて本印刷ジョブ制御システム700固有のポートモニタ及びポートのインスタンスが作成される。尚、ステップS1504で本印刷ジョブ制御システム700に固有のポートモニタ及びポートを持つ既存の論理プリンタに対してポートモニタ変更フラグが立っていた場合には、ステップS1506、S1507の処理を省略する。
ステップS1507では、予め情報処理装置内に設定された論理プリンタの既存のポート情報を更新する。具体的には、ステップS1502で選択した論理プリンタにステップS1506で作成したポートモニタ及びポートのインスタンスを割り当てる。
また、既存の論理プリンタの用紙サイズ、解像度などのデフォルト印刷設定や、オペレーティングシステムで「通常使うプリンタ」となっているデフォルトプリンタ設定などを、更新後の論理プリンタに継承するようにする。こうすることにより、ユーザが事前に設定した様々な情報を再度設定する必要がなくなる。このステップS1507において更新されたポート情報(論理プリンタ)が用いられ仮想プリンタが作成される。論理プリントとはプリンタドライバと出力ポートとの組合せ、或いは、プリンタドライバを用いずにアプリケーションやOSに、プリンタにとって中間形式データ(例えばPDF(アドビシステムズ社))を作成する機能が備えられている場合には、ポートそのものが論理プリンタとなる。
そして、インストール済の論理プリンタ全てについて、ステップS1502以下の処理が施されれば、既存論理プリンタの変更処理S1302が終了し、ステップS1303に処理が移行する。
図16は、図13におけるステップS1304をさらに詳細に示したものであり、ステップS1303でのNOに対応して論理プリンタが存在しない場合にフィルタ情報記憶モジュール911から取得された条件属性に基づく論理プリンタを作成する処理に相当する。
ステップS1601では、探索により見つかったプリンタデバイスに関する情報を保持するプリンタデバイス情報テーブルが初期化される。このテーブルはプリンタデバイス情報記憶モジュール1005が管理している。
ステップS1602では、ネットワークにSNMP(Simple Network Management Protocol)のパケットをブロードキャストし、その応答を受信することによって、ネットワーク上に動作しているプリンタデバイスが検出される。応答パケット内にはMIB(Management Information Base)オブジェクトの値として機種名が含まれている。また、パケットの送信先を調べることによりIPアドレスを取得することができる。これらの情報をプリンタデバイス情報記憶モジュール1005に渡し、プリンタデバイス情報テーブルに保存される。
ステップS1603では、ステップS1602の結果、プリンタデバイスが一つでも検出されたかどうかが判断される。
ステップS1604では、ステップS1603でプリンタデバイスが一つ以上検出された場合には、プリンタデバイス情報収集モジュール1001において、そのひとつひとつについてステップS1605以下の処理を行うよう制御される。そのために、処理を行っていないプリンタデバイスが存在するかどうかが判断される。
ステップS1605では、処理を行っていないプリンタデバイスのなかから一つのデバイスが選択される。選択の方法には特に制限はない。
ステップS1606では、ステップS1605で選択されたプリンタデバイスの、ステップS1602でデバイスから取得した機種名を見て、当該印刷ジョブ制御システム700が対応可能な機種の場合には処理はステップS1604に戻り、次のプリンタデバイスの処理にスキップする。それ以外の場合は処理はステップS1607に進む。
ステップS1607では、プリンタデバイス情報収集モジュール1001が、ステップS1605で選択したプリンタデバイスについて、ステップS1602で取得したIPアドレスと機種名がプリンタデバイス情報記憶モジュール1005に渡され、その中のプリンタデバイス情報テーブルに記憶される。
ステップS1608では、ステップS1605で選択したプリンタデバイスの、ステップS1602でデバイスから取得した機種名から、機種属性DBモジュール911から当該機種に関する属性情報(印刷速度、ステイプル機能の有無、両面印刷機能の有無、カラー/モノクロ)が取得される。またステップS1411と同様に、プリンタデバイスから直接に機能やオプション装備の属性情報を取得するようにしても良い。
ステップS1609では、ユーザが指定した、仮想プリンタ作成処理における条件属性を取得する。例えば、外部からファイルとして読み込まれ、フィルタ情報記憶モジュール911に保持されるデバイスの選択条件となる属性情報(条件属性)を取得する。
ステップS1610では、ステップS1608で取得されたデバイスの属性情報とステップS1609で取得されたデバイスの選択条件となる属性情報が比較され、適合する場合には処理はステップS1611に進む。適合しない場合には処理はステップS1604に戻る。
ステップS1611では、プリンタデバイス情報記憶モジュール1005中のプリンタデバイス情報記憶テーブルにおける当該デバイスについて、論理プリンタ作成フラグが立てられる。
ステップS1612では、プリンタデバイス情報収集モジュール902が、ステップS1608で取得したデバイスの属性情報(印刷速度、ステイプル機能の有無、両面印刷機能の有無、カラー/モノクロ)をプリンタデバイス情報記憶モジュール904に渡して格納する。
そして、検索された全てのプリンタデバイスについて、ステップS1605以下の処理が終了すると、ネットワーク上のプリンタデバイスの情報収集処理(S1304)は終了する。
図17は、上記のステップS1305をさらに詳細に示したものである。
ステップS1701では、プリンタデバイス情報記憶モジュール1005中のプリンタデバイス情報記憶テーブルにステップS1702の処理について未処理のプリンタデバイスのエントリがあるかどうかが判断される。
ステップS1702では、プリンタデバイス情報記憶モジュール1005中のプリンタデバイス情報記憶テーブルに未処理のプリンタデバイスからプリンタデバイスを一つ選択する。
ステップS1703では、ステップS1702で選択されたデバイスについて、プリンタデバイス情報記憶モジュール1005中のプリンタデバイス情報記憶テーブルに論理プリンタ作成フラグ(ステップS1611で付加されるべきフラグ)が立っているか判断され、フラグが立っていれば処理はステップS1704に進む。フラグが立っていなければ、処理はステップS1701に戻る。
ステップS1704では、プリンタデバイス情報記憶モジュール1005からステップS1702で選択したプリンタデバイスに関係する機種名とIPアドレスが取得される。
ステップS1705では、ドライバ名変換モジュール1007が、ステップS1704で取得された機種名をもとにドライバ名を生成して論理プリンタ作成モジュール1006に返す。
ステップS1706では、ジョブ送信方式情報取得モジュール1008が、ステップS1704で取得された機種名をもとにジョブ送信方式とその設定情報を生成して論理プリンタ作成モジュール1006に返す。
ステップS1707では、ポートモニタ初期値取得モジュール1009が、ステップS1704で取得された機種名をもとにポートモニタ設定の初期値を生成して印刷ジョブ制御システム専用ポートモニタ作成モジュール918に返す。ここで、初期値とは、ポートを作成する際に必要な値で、ここではデフォルト値を取得するようにしている。なぜなら、例えばポート優先度、動作時間帯等、ポートにはデバイスの属性からは決まらないいくつかの設定項目があるからであり、これらは初期値としてデフォルト値に設定される。
ステップS1708では、ステップS1704で取得されたIPアドレスと、ステップS1707で生成されたポートモニタ設定の初期値をもとに、ポート設定のためのAPI関数が呼び出され、新たにポートモニタ及びポートが作成される。
ステップS1709では、ステップS1705で取得されたドライバ名と、ステップS1708で作成されたポートモニタ及びポートとをもとに新たに論理プリンタが作成される。このステップS1709において作成された論理プリンタ(ポート或いはポートとプリンタドライバの組合せ)が用いられ仮想プリンタが作成される。尚、プリンタドライバは予め設定プログラムに含まれているものとする。例えば、図10の論理プリンタ自動作成モジュール1006に予め複数種類のプリンタドライバが含まれている。無論、外部からダウンロードするようにしても良い。
そして、プリンタデバイス情報テーブルに登録されたプリンタデバイス全てについてステップS1702以下の処理が行われたら、新規論理プリンタの作成処理(ステップS1305)が終了する。
図18〜図21は、図13のステップS1306すなわち新規仮想プリンタの作成処理をさらに詳細に示したものである。
ステップS1801では、仮想プリンタ作成モジュール1010はステップS1305までの処理の結果、本印刷ジョブ制御システム固有のポートモニタ及びポートを持つ論理プリンタが一つ以上作成されたかどうかをチェックする。作成されなかった場合は新規仮想プリンタの作成処理を終了する。一つ以上作成された場合はステップS1802に進む。
ステップS1802では、ステップS1002で作成された論理プリンタの中にWindows(登録商標)の「通常使うプリンタ」が存在するかどうかが調べられる。存在する場合は処理はステップS1803に進み、存在しない場合はステップS1804に進む。
ステップS1803では、「通常使うプリンタ」を優先度1のメンバプリンタとして選択する処理がなされる。
ステップS1804では、モノクロデバイスの論理プリンタが存在する場合に、その中で最もデバイスの印刷速度の速いものを代行機能仮想プリンタにおける優先度1のメンバプリンタとして選択する処理がなされる。存在しない場合は例えばカラーデバイスの論理プリンタの中で最も印刷速度の速いなどの所定の条件に従う論理プリンタが優先度1のメンバプリンタとして選択される。また、最も印刷速度の速い論理プリンタが複数存在する場合は、論理プリンタの名前の辞書順で最も若いものが選択される。更に、ユーザに優先度1のプリンタ或いは「通常使うプリンタ」を設定画面を介して指示させ設定するようにしても良い。
ステップS1805では、ステップS1803またはステップS1804で選択した優先度1の論理プリンタのプリンタデバイスがカラーデバイスかモノクロデバイスかを判断する。カラーデバイスの場合はステップS1806に進み、モノクロデバイスの場合はステップS1807に進む。このS1805の処理に分岐に基づき、オペレーティングシステムにデフォルトで利用するように設定されている論理プリンタの種別に応じた代行印刷の仮想プリンタが後述するステップS1809において作成される。つまりかカラー論理プリンタが「通常使うプリンタ」に設定されていれば、カラー論理プリンタをメンバーにした仮想プリンタが作成され、モノクロ論理プリンタが「通常使うプリンタ」に設定されていれば、モノクロ論理プリンタをメンバーにした仮想プリンタが作成される。また、カラーモノクロ論理プリンタ及びカラー論理プリンタが各々1つしかない場合には、フローチャートには図示されていないが、モノクロ論理プリンタとモノクロ論理プリンタとを用いた代行印刷の仮想プリンタを作成するものとする。
ステップS1806では、その他の全てのカラーデバイス用論理プリンタが列挙される。
ステップS1807では、その他の全てのモノクロデバイス用論理プリンタが列挙される。
ステップS1808では、ステップS1806またはステップS1807で列挙された論理プリンタに対して、デバイスの印刷速度の速い順に優先度2以降の値が割り振られる。印刷速度の同じ論理プリンタが複数存在する場合は、論理プリンタの名前の辞書順で最も若いものが選択される。ここで選択された複数のプリンタは図6、図7で説明した代行印刷時に利用される。
ステップS1809では、ステップS1808までで決定したメンバプリンタとその優先度を用いて自動代行印刷の仮想プリンタが作成される。
続いて分散印刷の仮想プリンタの作成処理が実行される(図19)。
ステップS1901では、本印刷ジョブ制御システム固有のポートモニタ及びポートを持つ論理プリンタが2つ以上存在するかどうかチェックされる。存在する場合はステップS1902に進み、存在しない場合は新規仮想プリンタの作成処理を終了する。
ステップS1902では、「通常使うプリンタ」がモノクロデバイスの論理プリンタかカラーデバイスの論理プリンタかが判断される。モノクロデバイスの場合はステップS1903に進み、カラーデバイスの場合は図20のステップS2001に進む。不明の場合もステップS1903に進む。このステップS1902における分岐に基づき、オペレーティングシステムにデフォルトで利用するように設定されている論理プリンタの種別に応じてユーザにとって良く利用するプリンタの優先度を高くした分散印刷仮想プリンタが後述のステップS1908、S2006において行なわれる。
ステップS1903では、モノクロデバイスの論理プリンタが二つ以上存在するかどうか調べられ、二つ以上存在する場合はステップS1904に進み、一つまたは存在しない場合はステップS1909に進む。
ステップS1904では、「通常使うプリンタ」が本印刷ジョブ制御システム700固有のポートモニタ及びポートを持つ論理プリンタに含まれるかどうか調べられ、含まれる場合はステップS1905に進み、含まれない場合はステップS1906に進む。
ステップS1905では、「通常使うプリンタ」が優先度1のメンバプリンタとして選択される。
ステップS1906では、モノクロデバイスの論理プリンタの中で最もデバイスの印刷速度が速いものが優先度1のメンバプリンタとして選択される。
ステップS1907では、その他のモノクロデバイスの論理プリンタが全て列挙され、列挙され論理プリンタに対して、デバイスの印刷速度の速い順に優先度2以降の値が割り振られる。印刷速度の同じ論理プリンタが複数存在する場合は、論理プリンタの名前の辞書順で最も若いものが選択される。
ステップS1908では、ステップS1907までで決定されたメンバプリンタとその優先度を用いて分散印刷の仮想プリンタが作成される。
ステップS1909では、カラーデバイスの論理プリンタが二つ以上存在するかどうか調べられ、二つ以上存在する場合はステップS1910に進み、一つまたは存在しない場合は図20のステップS2001に進む。
ステップS1910では、カラーデバイスの論理プリンタの中で最もデバイスの印刷速度が速いものが優先度1のメンバプリンタとして選択される。
ステップS1911では、その他のカラーデバイスの論理プリンタが全て列挙され、列挙した論理プリンタに対して、デバイスの印刷速度の速い順に優先度2以降の値が割り振られる。印刷速度の同じ論理プリンタが複数存在する場合は、論理プリンタの名前の辞書順で最も若いものが選択される。
ステップS1912では、ステップS1911までで決定されたメンバプリンタとその優先度を用いて分散印刷の仮想プリンタが作成される。
図20は、分散印刷の仮想プリンタの作成処理の図19からの続きである。
ステップS2001では、カラーデバイスの論理プリンタが二つ以上存在するかどうか調べられ、二つ以上存在する場合はステップS2002に進み、一つまたは存在しない場合はステップS2007に進む。
ステップS2002では、「通常使うプリンタ」が本印刷ジョブ制御システム固有のポートモニタ及びポートを持つ論理プリンタに含まれるかどうか調べられ、含まれる場合はステップS2003に進み、含まれない場合はステップS2004に進む。
ステップS2003では、「通常使うプリンタ」が優先度1のメンバプリンタとして選択される。
ステップS2004では、カラーデバイスの論理プリンタの中で最もデバイスの印刷速度が速いものが優先度1のメンバプリンタとして選択される。
ステップS2005では、その他のカラーデバイスの論理プリンタが全て列挙され、列挙された論理プリンタに対して、デバイスの印刷速度の速い順に優先度2以降の値が割り振られる。印刷速度の同じ論理プリンタが複数存在する場合は、論理プリンタの名前の辞書順で最も若いものが選択される。
ステップS2006では、ステップS2005までで決定されたメンバプリンタとその優先度を用いて分散印刷の仮想プリンタが作成される。
ステップS2007では、モノクロデバイスの論理プリンタが二つ以上存在するかどうか調べられ、二つ以上存在する場合はステップS2008に進み、一つまたは存在しない場合は図21のステップS2101に進む。
ステップS2008では、モノクロデバイスの論理プリンタの中で最もデバイスの印刷速度が速いものが優先度1のメンバプリンタとして選択される。
ステップS2009では、その他のモノクロデバイスの論理プリンタが全て列挙され、列挙された論理プリンタに対して、デバイスの印刷速度の速い順に優先度2以降の値が割り振られる。印刷速度の同じ論理プリンタが複数存在する場合は、論理プリンタの名前の辞書順で最も若いものが選択される。
ステップS2010では、ステップS1911までで決定されたメンバプリンタとその優先度を用いて分散印刷の仮想プリンタが作成される。その後、処理は図21のステップS2101に進む。
図21はカラー/モノクロ分散の仮想プリンタを作成する処理を示す図である。
ステップS2101では、本印刷ジョブ制御システム固有のポートモニタ及びポートを持つ、モノクロデバイスおよびカラーデバイスのための論理プリンタがそれぞれ1つ以上存在するかどうかチェックされる。
ステップS2102では、本印刷ジョブ制御システム固有のポートモニタ及びポートを持つカラーデバイス用論理プリンタでかつ「通常使うプリンタ」に設定されているものがあるかどうか調べられる。ある場合は、処理はステップS2103に進み、ない場合はステップS2104に進む。
ステップS2103では、「通常使うプリンタ」がカラー印刷用のメンバプリンタとして選択される。
ステップS2104では、カラーデバイス用で、最も印刷速度の速いデバイスのための論理プリンタがカラー印刷用のメンバプリンタとして選択される。
ステップS2105では、印刷ジョブ制御システム固有のポートモニタ及びポートを持つモノクロデバイス用論理プリンタでかつ「通常使うプリンタ」に設定されているものがあるかどうか調べられる。ある場合は、処理はステップS2103に進み、ない場合はステップS2104に進む。
ステップS2106では、「通常使うプリンタ」がモノクロ印刷用のメンバプリンタとして選択される。
ステップS2107では、モノクロデバイス用で、最も印刷速度の速いデバイスのための論理プリンタがモノクロ印刷用のメンバプリンタとして選択される。
ステップS2108では、以上で選択されたカラー印刷用、モノクロ印刷用論理プリンタをメンバプリンタとしたカラー/モノクロ分散印刷の仮想プリンタが作成される。
このように、図18乃至21のフローチャートにより、仮想プリンタ作成手段により、ユーザの所望する条件に対応した論理プリンタを用いて複数種類の仮想プリンタがまとめて作成され、ユーザの手間を軽減することが出来る。
図22は、上記実施形態による処理の結果本印刷ジョブ制御システム固有のポートモニタ及びポートが複数個作成された様子を示すものであり、チェックボックスへのチェックが示すようにプリンタAのプロパティーの閲覧からポートの情報を参照したことを示している。図22には、ポート、ポートモニタの説明、プリンタ(プリンタ名)が含まれている。また、図中の「ジョブ制御ポートモニタ」は図6におけるジョブ制御ポートモニタ621を示している。また、本実施の形態では、図22でStandard TCP/IP Portのポートモニタにプリンタが割当てられていないように、ポートを書き換えても以前のポートが残っているため、印刷ジョブ制御プログラムをアンインストールしたとしても、以前のポート環境に容易に復帰できるようになる。このため、ユーザにとって非常に便利である。また、クライアント側に論理プリンタが予め登録されている場合には、その論理プリンタの登録情報を有用に利用することができる。
図22においては紙面の都合上、ポート名が表記しきれないので、念のためここで説明する。上から、IP_177_24.111.131、IP_177_24.111.132、IP_177_24.111.133、オリジナル論理ポート_177_24.111.131(プリンタA)、オリジナル論理ポート_177_24.111.132(プリンタB)、オリジナル論理ポート_177_24.111.133(プリンタC)、割合分散Port、代行印刷Port、カラーモノクロ分散Portである。
図23は、上記実施形態による処理の結果、本印刷ジョブ制御システム固有のポートモニタ及びポートが割り当てられた論理プリンタおよび仮想プリンタが作成された様子を示す。ここでは自動代行印刷、分散印刷、カラー/モノクロ分散印刷の全ての方法の仮想プリンタが作成されたことを示している。
<本実施形態の具体的適用例>
図23で示された結果となるのは、たとえば以下のケースが考えられる。
(ケース1)
プリンタデバイスとしてデバイスA(モノクロ)、デバイスB(モノクロ)、デバイスC(カラー)、デバイスD(カラー)がネットワーク上に存在し、本印刷ジョブ制御システムをインストールする前にすでにデバイスA、デバイスB,デバイスCのための標準TCP/IPポートを持った論理プリンタ、プリンタA(通常使うプリンタ)、プリンタB、プリンタCが存在した。また、図12を介した条件にプリンタDが適合していなかった。
→ この場合、本発明の処理によれば、デバイスA、デバイスB,デバイスCのポートモニタが本印刷ジョブ制御システム固有のポートモニタに置き換わる。さらに、プリンタA、プリンタBをメンバに持つ代行印刷の仮想プリンタおよび分散印刷の仮想プリンタ、プリンタAとプリンタCをメンバに持つカラー/モノクロ分散印刷の仮想プリンタがおのおの作成される。
(ケース2)
プリンタデバイスとしてデバイスA(モノクロ)、デバイスB(モノクロ)、デバイスC(カラー)がネットワーク上に存在し、本印刷ジョブ制御システムをインストールする前にはそれらのデバイスのための標準TCP/IPポートを持ったプリンタが存在しなかった。
この場合、本発明の処理によれば、デバイスA、デバイスB,デバイスCに対応する論理プリンタ、プリンタA、プリンタB、プリンタCが作成される。さらにプリンタA,プリンタBをメンバに持つ自動代行印刷、分散印刷の仮想プリンタ、プリンタAとプリンタCをメンバに持つカラー/モノクロ分散印刷の仮想プリンタがそれぞれ作成される。
[第2の実施の形態]
上記の第1の実施形態では、図7の制御システム700におけるジョブ制御プリントサービス622とジョブ制御サーバ630が一体となった形に適用した場合について説明した。すなわちジョブ制御サーバ630におけるOutput PortA 711AおよびOutput PortB 711Bは、Proxy Output PortA 712AおよびProxy Output PortB 712Bと同様にWindows(登録商標) Print Systemからのジョブを受け付け、汎用印刷ファイル構築715、De−spooler701を経て再度Windows(登録商標) Print Systemにジョブを投入することも可能である。これはちょうどProxy Output PortA 712AおよびProxy Output PortB 712BがOutput PortA 711AおよびOutput PortB 711Bに置き換わった形である。
しかしながら、図7のジョブ制御プリントサービス622に対しても、上記第一の実施形態に若干の変更を加えることにより本発明は適用し得る。すなわち、図13におけるステップS1301既存の論理プリンタの情報収集処理において、ジョブ制御プリントサービス622が動作する環境上に存在する論理プリンタに関する情報を収集し、ステップS1302既存論理プリンタの変更処理においてはジョブ制御サーバ630上のOutput Port(711Aおよび711Bに相当)を参照し、既存の論理プリンタと同じデバイスに対応するインスタンスが存在する場合にProxy Output Port(712Aまたは712Bに相当)のインスタンスを新たに作成して前記論理プリンタに割り当てる。引き続き、ステップS1306新規仮想プリンタ作成処理に進む。このとき、Proxy Output Port(712Aまたは712Bに相当)には、Output Port(711Aおよび711Bに相当)のデバイス情報(IPアドレス、通信方式、デバイス名,デバイスモデル名、両面やステイプルなどのデバイスの各種機能)が反映される。
ここで、プリントサーバに保持されるポート情報について説明を行なう。ジョブ制御サーバ630におけるポート情報は例えば上に説明した図13のフローチャートの処理を実行することにより実現する。また、ジョブ制御サーバ630における所定のプリンタデバイスに対応するポート情報は、印刷システム管理者やサービスマンが予め作成したポート情報を設定するようにしても良いし、ジョブ制御サーバ630によりネットワークを介して通信可能なプリンタデバイスの探索を行うことにより作成するようにしても良い。この時の探索処理は、図15及び図16において説明した処理と基本的に同様のものとするので、詳しい説明は省略する。
一方、上記処理の中で、既存の論理プリンタがジョブ制御プリントサービス622の動作する環境に存在しない場合は、第1の実施形態ではステップS1304でネットワーク上のデバイスを探索し、見出されたデバイスから該デバイスに関する情報を取得していた。これに対して第2の実施形態ではジョブ制御サーバ630上にOutput Port(出力ポート)のインスタンスが存在するかどうかを調べ、見出された各Output Portのインスタンス(711Aおよび711B)に設定されているデバイス情報(IPアドレス、通信方式、デバイス名,デバイスモデル名、両面やステイプルなどのデバイスの各種機能)を取得する。そして、ステップS1609、S1610と同様に、フィルタ情報記憶モジュール911に保持された条件属性に基づき見出された各OutputPort(出力ポート)を選択するか或いは無視するかを判断する。
次に、ステップS1305においてと同様に、前記見出され且つ選択されたOutput Portのインスタンス(711Aおよび711B)に対応するProxy Output Portのインスタンス(712Aおよび712B)をジョブ制御プリントサービス622の動作する環境に作成し(ステップS1708に対応)、作成されたProxy Output Port(出力ポート)を用いてさらに論理プリンタを作成する(ステップS1709に対応)。
このProxy Output Portには、先に取得したデバイス情報(IPアドレス、通信方式、デバイス名,機種名、両面やステイプルなどのデバイスの各種機能)が設定されている。そして、図17のステップS1704乃至1709と同様の処理を行い、機種名を元にProxy Output Portにプリンタドライバを関連付ける。
続いて第1の実施形態と同様に、新規仮想プリンタ作成処理であるステップS1306に進む。
[第3の実施の形態]
上記の第1及び第2の実施形態では、フィルタ情報記憶モジュール911に保持された選択条件(条件属性)を、本印刷ジョブ制御システム固有のポートモニタ及びポートを持つ論理プリンタを作成する際の判断で使用しているが、もう一つの実施形態として、フィルタリングを、ポートモニタ及びポートを作成する段階ではなく、仮想プリンタを作成する段階で行うということが可能である。すなわち、後者の実施形態では、まず本印刷ジョブ制御システム700に固有のポートモニタ及びポートを持つ論理プリンタを用意し、フィルタ情報記憶モジュール911に保持された条件を、仮想プリンタを作成する際にメンバプリンタとして使用する論理プリンタを抽出する際に使用する。
そこで、本発明の第3の実施形態における、印刷ジョブ制御システム700における設定の制御について次に説明する。
第3の実施形態における制御の流れは基本的に第1の実施形態と同様であるが、以下の点において異なる。
(1)図14においてステップS1412、S1413が省略される。これにより図15のステップS1504の判断は常にYESとなり、インストール済みの論理プリンタ(論理プリンタの既存ポート)は対応するプリンタデバイスが対応機種であればポートモニタ及びポートを本印刷ジョブ制御システム固有のものにステップS1507で置き換えられる(更新される)ことになる。
(2)図16においてステップS1609、S1610が省略される。これにより図17のステップS1703の判断は常にYESとなり、探索によって見つかったプリンタデバイスが対応機種であれば必ず論理プリンタを作成することになる。
(3)図18においてステップS1801の次に以下のステップが追加される。これを図24として示す。すなわち、ユーザが指定したデバイスの選択条件を取得するステップS2402と、その選択条件となるデバイス属性と存在する論理プリンタの属性とを比較して選択条件に適合しない論理プリンタは以降の論理プリンタの参照では無視するようにするステップS2403とを追加する。
以上、第1及び第2の実施形態によれば、本印刷ジョブ制御システム700の設定プログラムは、(ア)システム固有のポートモニタ及びポートを作成するとき、(イ)システム固有のポートモニタ及びポートを割り当てた論理プリンタを作成するとき、(ウ)仮想プリンタを作成するとき、のいずれかにおいてユーザの所望する性能・機能を持ったプリンタデバイスを用いて、本印刷ジョブ制御システム固有の拡張機能を実現するための仮想プリンタを自動的に作成することができる。
それにより、ユーザが自分でプリンタデバイスの性能・機能を調べて、どのデバイスを用いた仮想プリンタを作成すべきかを自ら判断することなく仮想プリンタを作成し、本印刷ジョブ制御システム700によって提供される拡張機能を享受することができる。このことはユーザの設定作業にかかわる手間を低減させることに寄与する。
[第4の実施の形態]
上記の第1乃至第3の実施形態では、論理プリンタを基に仮想プリンタ(仮想出力デバイス)を作成するというものであったが、本発明はこれに限定されるものではなく、論理プリンタではなく、プリンタデバイスそのものを対象にして仮想出力デバイスを作成するようにしても良い。この仮想出力デバイスとは複数のプリンタデバイスを用いるようにすることにより、代行機能や、分散機能の付加価値を持ち合わせた仮想的なプリンタデバイスを意味する。
具体的には、上に説明した図12の画面を仮想出力デバイスの条件属性を指定する設定画面として、図18〜図21における各々のステップで「論理プリンタ」を対象にしていたが、「本システムが取り扱い可能なプリンタデバイス」を対象にするようにすれば良い。この「本システムが取り扱い可能なプリンタデバイス」とは、ジョブ制御プリントサービス622と、各種情報の通信が可能で、図16のS1608をプリンタデバイスから取得するようにし、S1611のプリンタデバイスに対している作成フラグを立てるようにし、図17のステップS1703をステップS1611で立てられたプリンタデバイスに対するフラグを調べるようにし実行するようにすれば良い。
仮想出力デバイス作成処理における条件属性を取得し該取得された条件属性に基づいて、図18乃至図21のフローに基づく複数のプリンタデバイスからなる複数種類の仮想出力デバイスを自動的に作成する仮想出力デバイス作成の仕組みを情報処理装置において実現できる。