以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また、本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
<実施形態1>
図1は本実施形態のクライアントサーバ印刷システムの全体構成を示す図である。
クライアントサーバ印刷システムは、サーバ装置であるサーバPC1、クライアント装置であるクライアントPC2及びPC3、印刷装置であるプリンタ4によって構成される。サーバPC1とクライアントPC2及びPC3はネットワーク10に接続され、相互に通信(情報の送受信)可能である。ここでは、ネットワークとしてLAN(Local Area Network)を想定しているが、WAN(Wide Area Network)であっても構わない。また、ネットワークの接続形態として有線無線を問わず、これらが混在していても構わない。サーバPC1には、通信インタフェース20を介してプリンタ4が接続され、サーバPC1はプリンタ4の制御を実行する。ここでは、通信インタフェースとしてUSB(Universal Serial Bus)を想定している。
サーバPC1とクライアントPC2及びPC3の各PCはパーソナルコンピュータであり、例えば、OSとしてMac OS(登録商標) Xが各PCにおいて動作する。図1には示していないが、PCの資源、例えば、PC内の各構成要素はOSにより管理されている。ここで、PCは一般的な情報処理装置が備えるハードウェア構成を有している。
具体的には、PCは、CPU、ROM、ハードディスク、RAM、各種デバイスコントローラを備える。CPUは、ROMのプログラム用ROMに記憶された、或いはハードディスクからRAMにロードされたOSや印刷アプリケーション等のプログラムを実行する。後述する各フローチャートの処理はこのプログラムの実行により実現できる。また、RAMは、CPUの主メモリ、ワークエリア等の記憶領域としても機能する。また、PCはキーボード、ディスプレイ、各種データを記憶するハードディスク(HD)やフレキシブルディスク(FD)等の記憶媒体におけるデータアクセスを制御するディスクコントローラ(DKC)等のコントローラも備える。また、PCは、PC間(例えば、クライアントPC2及びPC3とサーバPC1)のネットワークを介した信号の交換や接続されたプリンタとの信号の交換を制御する通信制御部等の制御部も備える。
サーバPC1は、ジョブ管理部51、印刷キュー52、ジョブ表示部53、PPD(PostScript Printer Description)ファイル54、ステータス格納部55、印刷フィルタ56、ユーティリティフィルタ57、ネットワーク制御部58、及びUSB制御部59によって構成される。
クライアントPC2は、ROMに格納されCPUにより実行されるプログラムモジュールとして、各種の機能を備える。その機能には、ジョブ管理部61、印刷キュー62、ジョブ表示部63、PPDファイル64、ステータス格納部65、印刷アプリケーション66、印刷設定制御部67、ユーティリティアプリケーション68(以下、ユーティリティ68と略称する)、及びネットワーク制御部69が含まれる。クライアントPC3は、クライアントPC2と同様の構成である。本実施形態では、ネットワークに2台のクライアントPC2及びPC3が接続されていることを想定しているが、3台以上のクライアントPCが接続されていても構わない。
プリンタ4もクライアントPC2と同様に、ROM内に各種の機能に対応するプログラムモジュールが格納されており、その機能には、USB制御部71、動作制御部72、及び印刷部73が含まれる。本実施形態では、OSの印刷制御システムとして、例えば、Mac OS Xに含まれるCUPS(Common UNIX(登録商標) Printing System)があり、サーバPC1とクライアントPC2及びPC3それぞれのジョブ管理部、印刷キュー、PPDファイル、ステータス格納部はCUPSが制御する。
本実施形態では、クライアントPCがCUPSにより印刷ジョブをサーバPCに送信する。また、詳細は後述するが、本実施形態では、サーバPCまたはプリンタにおける印刷設定状態をクライアントPCが取得するためのジョブを、CUPSがサーバPCに送信する。CUPSがこのようなジョブを送信する場合、クライアントPC、サーバPCはそれぞれ、印刷ジョブと同様の処理を行うことで、ジョブの送信、受信を行うことができる。即ち、クライアントPCは、CUPSによるジョブ送信とは異なる処理を行わなくても、サーバPCに印刷設定の設定要求や、印刷設定状態の取得を行うことができる。
以下、サーバPCとクライアントPCとの間の動作の一例として、サーバPC1とクライアントPC2との間の動作について説明する。以下に説明する動作は、サーバPC1とクライアントPC3との間でも実現でき、それ以外のクライアントPCとの間でも実現できる。
サーバPC1のPPDファイル54には、印刷装置であるプリンタ4で利用可能な機能及び情報である印刷環境情報が記述されていて、これには、例えば、プリンタ4で使用可能な記録媒体である用紙の用紙サイズや用紙種類、また、それらの初期値がある。また、PPDファイル54には各種プリンタの動作状態に対応した表示用メッセージも記述されている。例えば、クライアントPC2からサーバPC1に接続されているプリンタ4を使用するために、クライアントPC2でプリンタ4を選択して登録すると、OSによってサーバPC1のPPDファイル54に記述されている内容がクライアントPC2のPPDファイル64にコピーされる。
クライアントPC2において、ユーザが印刷アプリケーション66で作成した印刷データを印刷しようとすると、印刷設定制御部67は、PPDファイル64に記述されている用紙サイズや用紙種類の印刷環境情報をジョブ管理部61に問い合わせて取得し、ユーザにこれらの印刷設定を促す。そして、ユーザがこれらの印刷設定を行って印刷を要求すると、その要求は印刷ジョブとしてジョブ管理部61に投入される。ジョブ管理部61は、印刷ジョブを印刷キューで管理しており、順次取り出して処理する。ジョブ管理部61は、印刷キュー62から印刷ジョブを取り出すと、ネットワーク制御部69を経てサーバPC1のジョブ管理部51に送信する。
しかしながら、例えば、ネットワーク上のクライアントPC2からサーバPC1のプリンタドライバやプリンタ4における設定が変更された場合、仮にPPDファイル54にその更新後の印刷設定が格納されたとしても、その印刷設定状態をクライアントPC2が取得できない場合がある。例えば、PPDファイル54の最新情報を取得するためには、サーバPC1、クライアントPC2において、PPDファイル54の内容を直接通信するための、印刷ジョブに関する情報を通信するための構成とは別の構成が必要な場合がある。
よって、そのような構成を有さないOSで構成された印刷システムの場合、仮に、クライアントPC2がプリンタ4を登録したときの印刷設定状態を当該クライアントPC2が取得できたとしても、その登録後にサーバPC1のプリンタドライバやプリンタにおいて新たに追加または変更された設定をクライアントPCが取得できない場合がある。
そこで、本実施形態では、サーバPC1がクライアントPC2から設定取得ジョブを受信した場合、PPDファイル54の印刷設定状態をステータス格納部55にコピーし、ステータス格納部55に格納された印刷設定状態をクライアントPC2に通知する。
詳細は後述するが、サーバPC1がクライアントPC2から印刷ジョブを受信し、プリンタ4に印刷を実行させた場合、ステータス格納部55にはプリンタ4において印刷が完了したことを示す印刷完了情報が格納される。そして、その印刷完了情報がクライアントPC2に通知される。
本実施形態では、上記のように、クライアントPC2が設定取得ジョブの発行を行い、サーバPC1がステータス格納部55に格納されている印刷設定状態をクライアントPC2に通知する。そのため、上記印刷完了情報のクライアントPC2への通知と同様の構成により、PPDファイル54内の最新の印刷設定状態をクライアントPC2に通知することができる。また、クライアントPC2も、印刷ジョブの発行と同様にジョブ発行処理を行い、設定取得ジョブをサーバPC1に通知することで、最新の印刷設定状態を取得することができる。そのため、最新の印刷設定状態を取得するための、ジョブ発行とは異なる処理を行わなくても、最新の印刷設定状態を取得することができる。
尚、本実施形態における印刷設定状態は、プリンタ4に印刷ジョブが投入されたときに自動的に電源をオンにする自動電源オン設定の有効/無効の状態、また、プリンタ4が所定時間使用されない場合に電源を切る自動電源オフの有効/無効の状態を含む。また、プリンタ4において印刷に使用するインクカートリッジの設定、また、印刷に使用するインクを節約するためのインク節約設定のオン/オフ、等の設定状態を含む。
以上の処理の詳細については後述する。
サーバPC1では、ジョブ管理部51がネットワーク制御部58を介してクライアントPC2からの印刷ジョブ、設定ジョブ、または設定取得ジョブを受信する。ジョブ管理部51は、クライアントPC2から送信された印刷ジョブ、設定ジョブ、または設定取得ジョブを印刷キュー52で管理し、順次取り出して処理する。ジョブ管理部51は、印刷キュー52から印刷ジョブを取り出すと印刷フィルタ56に送信する。プリンタドライバとして機能する印刷フィルタ56は、印刷データを生成してUSB制御部59を経てプリンタ4に送信する。その後、印刷フィルタ56は、印刷処理が完了するまでプリンタ4の動作状態を監視する。この間、印刷フィルタ56は、USB制御部59を経てプリンタ4からステータスを取得し、解析した結果をプリンタ4の動作状態としてステータス格納部55に定期的に格納する。ステータス格納部55には複数のステータスを格納可能であり、印刷フィルタ56は、プリンタ4の動作状態を複数格納できる。
ステータス格納部55への格納はジョブ管理部51を介して行われ、印刷フィルタ56がプリンタ4の動作状態の格納をジョブ管理部51に要求すると、ジョブ管理部51が格納する。また、既に格納されているプリンタ4の動作状態を削除することも可能であり、印刷フィルタ56が既に格納されているプリンタ4の動作状態の削除をジョブ管理部51に要求すると、ジョブ管理部51が削除する。ジョブ表示部53は、ジョブ管理部51を介してステータス格納部55に格納されているステータスを取得し、プリンタ4の動作状態に対応する表示用メッセージをPPDファイル54から取得してジョブ表示部53に表示する。また、ジョブ表示部53は、印刷キュー52で管理されている印刷ジョブをジョブ管理部51から取得し、印刷キュー52で管理中のジョブの一覧としてこれらを表示する。
一方、クライアントPC2のジョブ表示部63も、印刷キュー62で管理されている印刷ジョブをジョブ管理部61から取得して表示する。サーバPC1のジョブ管理部51に送信した印刷ジョブの処理状態は、OSによってクライアントPC2のジョブ管理部61にも反映されており、サーバPC1のジョブ管理部51で処理が完了するまでの間はジョブ表示部63にも表示される。また、サーバPC1のステータス格納部55に格納されたプリンタ4の動作状態は印刷ジョブが処理されている間、サーバPC1のOSによって定期的にクライアントPC2に送信される。そして、クライアントPC2のステータス格納部65にコピーされる。ジョブ表示部63は、コピーされたプリンタ4の動作状態をジョブ管理部61に問い合わせて取得し、対応する表示用メッセージをPPDファイル64から取得して表示する。
このように、クライアントPC2は、印刷ジョブをサーバPC1に送信して印刷を実行させると、プリンタ4の動作状態(エラー、印刷の進捗や、印刷完了等)を、サーバPC1のステータス格納部55から取得することができる。本実施形態では、クライアントPC2は、プリンタの動作状態に加え、サーバPC1のプリンタドライバやプリンタにおける印刷設定状態をサーバPC1のステータス格納部55から取得する。
クライアントPC2のユーティリティ68では、プリンタ4の動作モードの設定や印刷データの生成モードの設定を行うことができる。ユーザがクライアントPC2のユーティリティ68でこれらの設定を要求すると、その要求は、プリンタ4に当該設定を行わせるための設定ジョブとしてジョブ管理部61に投入され、印刷ジョブと同様に処理され、サーバPC1のジョブ管理部61に送信される。但し、サーバPC1のジョブ管理部51は、設定ジョブを印刷キュー52から取り出すとユーティリティフィルタ57に送信する。
サーバPC1のユーティリティフィルタ57は、プリンタ4の動作モードを設定するための制御コマンドを生成して、USB制御部59を経てプリンタ4に送信する。その後、ユーティリティフィルタ57は送信処理が完了するまでプリンタ4の動作状態を監視する。この間、ユーティリティフィルタ57は、印刷フィルタ56と同様にUSB制御部59を経てプリンタ4からステータス(印刷設定状態)を取得し、解析した結果をプリンタ4の動作状態としてステータス格納部55に定期的に格納する。そして、送信処理が完了すると、ユーティリティフィルタ57は、プリンタ4の動作モードの設定値と印刷データの生成モードの設定値をPPDファイル54に追記する。但し、サーバPC1のPPDファイル54に記述されている内容がクライアントPC2のPPDファイル64にコピーされるのは、クライアントPC2でサーバPC1に接続されたプリンタ4を登録したときのみであり、ここで、サーバPC1のPPDファイル54に追記した設定値はクライアントPC2のPPDファイル64に反映されない。
サーバPC1のPPDファイル54に追記した設定値は、その後、サーバPC1上で動作する印刷フィルタ56やユーティリティフィルタ57に参照され、これらフィルタの処理の制御に使用される。
更に、本実施形態において、ユーティリティフィルタ57は、印刷データの生成モードの設定状態をステータス格納部55にも格納する。即ち、ステータス格納部55にはプリンタ4の動作状態だけでなく、プリンタ4の印刷環境の各種設定状態もステータスとして複数格納される。また、ユーティリティフィルタ57はプリンタ4の動作状態と同様にジョブ管理部51を介して各種設定状態を格納及び削除できる。
そして、サーバPC1のステータス格納部55に格納された設定状態は、プリンタ4の動作状態と同様に、OSによってクライアントPC2のステータス格納部65にコピーされる。但し、設定状態に対応する表示用メッセージをPPDファイル64に記述していないので、設定状態をステータス格納部65に格納してもクライアントPC2のジョブ表示部63及びサーバPC1のジョブ表示部53には何も表示されない。ステータス格納部65に格納した設定状態は、その後、クライアントPC2のユーティリティ68から参照され、サーバPC1の印刷環境の設定状態を表示する画面の制御に使用される。
以上のように、本実施形態では、印刷ジョブの発行と同様に、設定取得ジョブ(ステータス確認ジョブ)を発行し、サーバPC1に送信することで、サーバPC1におけるプリンタドライバやプリンタの設定状態を取得することができる。
よって、クライアントPC2のユーティリティ68では、プリンタ4の動作モードの設定や印刷データの生成モードの設定の現在の設定状態を確認することもでき、ユーティリティ68はステータス格納部65に格納されている設定状態を取得して画面に表示する。
ジョブ発行による、サーバPC1の印刷設定状態の取得処理について更に詳細に説明する。
ユーティリティ68は、設定状態を表示するとき、設定状態の取得を要求する設定取得ジョブをジョブ管理部61に投入する。設定取得ジョブは設定ジョブと同様に処理されサーバPC1のジョブ管理部51に送信される。
サーバPC1のジョブ管理部51がクライアントPC2から受信した設定取得ジョブをユーティリティフィルタ57に送信すると、ユーティリティフィルタ57は、プリンタ4からプリンタ4の動作モードの設定を取得し、解析した結果に基づきプリンタ4の動作モードの設定状態をステータス格納部55に格納する。ここで、ステータス格納部55に格納したプリンタ4の動作モードの設定状態と設定ジョブの処理時に格納しておいた印刷データの生成モードの設定状態は、印刷ジョブの処理時と同様に設定取得ジョブを処理している間、OSによって定期的にクライアントPC2のステータス格納部65にコピーされる。クライアントPC2のユーティリティ68はコピーされたこれらの設定状態をジョブ管理部61に問い合わせて取得し、画面に表示する。
プリンタ4は、USB制御部71を介して印刷データをサーバPC1から受信したり、サーバPC1からのステータスの問い合わせに応じてプリンタ4のステータスを返却したりする。動作制御部72は、サーバPC1から受信した印刷データに基づき印刷部73を制御して用紙に印刷する。また、動作制御部72は、プリンタ4の動作モードを設定する制御コマンドをサーバPC1から受信すると、制御コマンドに基づきプリンタ4の動作モードを設定する。
本実施形態では、このようなクライアントサーバ印刷システムにおいてクライアントPC2とサーバPC1で稼働するMac OS Xの印刷制御システムであるCUPSと連携して動作する印刷設定制御部、印刷フィルタ、ユーティリティ、ユーティリティフィルタを提供する例を説明する。
図2は、クライアントPC2のユーティリティ68の操作ウインドウを示す図である。
ユーティリティ68では、プリンタ4の動作モードの設定として、プリンタ4に印刷ジョブが投入されたときに自動的に電源をオンにする自動電源オン設定とリンタが所定時間使用されない場合に自動的に電源を切る自動電源オフ設定を行うことができる。更に、印刷データの生成モードの設定として、印刷に使用するインクを節約するためのインク節約設定と、印刷に使用するインクカートリッジのカートリッジ設定を行うことができる。これらの設定は、ネットワーク上の2台のクライアントPC2及びPC3のどちらからでも行うことができる。自動電源オン設定は、プリンタ4の電源を自動的にオンする機能の設定である。自動電源オン設定が有効のとき、プリンタ4はサーバPC1から印刷データや制御コマンドを受信すると自動的に起動する。自動電源オフ設定は、プリンタ4の電源を自動的にオフする機能の設定である。自動電源オフ設定が有効のとき、プリンタ4は使用されない状態で所定時間(例えば、30分)以上経過すると自動的に電源を切る。
インク節約設定は印刷時のインク使用量を減らす機能の設定である。インク節約設定が有効のとき、サーバPC1の印刷フィルタ56はインク使用量が少なくなるような印刷データを生成する。カートリッジ設定は印刷時に使用するカートリッジを指定する機能の設定である。本実施形態では、プリンタ4としてブラックカートリッジとカラーカートリッジが搭載されたインクジェットプリンタを想定しており、使用するカートリッジとして両方、カラーのみ、ブラックのみの何れかを指定できる。カートリッジ設定に応じて、サーバPC1の印刷フィルタ56は、指定されたカートリッジを使用する印刷データを生成する。
尚、ユーティリティ68で設定できる内容は、図2に示す内容に限定されず、プリンタ4の印刷環境や機能に応じて、様々な設定を行うことができることは言うまでもない。例えば、用紙サイズや用紙向き、片面/両面印刷、仕上げ方法等の様々な印刷処理の設定を行うことができる。また、印刷方式としては、インクジェット方式に限定されず、電子写真方式、熱転写方式等の他の印刷方式を採用することができる。
ユーザがユーティリティ68を起動すると、操作ウインドウ100が表示される。尚、ユーティリティ68を起動したときに後述する図9における設定状態の取得処理が実行され、サーバPC1におけるプリンタドライバやプリンタ4において設定されている設定状態が、操作ウインドウ100における初期値として反映される。
また、ユーザは、クローズボタン101により操作ウインドウ100を閉じてユーティリティ68を終了できる。また、ユーザは、複数のメニュー項目が登録されているタブメニュー102によりユーティリティ68の操作画面を切り替えることができる。ユーザがタブメニュー102の「特殊設定」を選択すると、ユーティリティ68は特殊設定画面103を表示し、ユーザがタブメニュー102の「カートリッジ設定」を選択すると、ユーティリティ68はカートリッジ設定画面110を表示する。図4(a)は特殊設定画面103が表示されている時のユーティリティ68の操作ウインドウを示している。図4(b)はカートリッジ設定画面110が表示されている時のユーティリティ68の操作ウインドウを示している。
特殊設定画面103で、ユーザは、自動電源オン設定、自動電源オフ設定、インク節約設定を行うことができる。ユーザは、自動電源オン設定チェックボックス104によりプリンタ4の自動電源オン機能の有効/無効を設定できる。まだ一度も設定していない初期の状態では無効になっている(チェックが外れている)。ユーザは、自動電源オフ設定チェックボックス105によりプリンタ4の自動電源オフ機能の有効/無効を設定できる。まだ一度も設定していない初期の状態では無効になっている(チェックが外れている)。ユーザは、インク節約設定チェックボックス106によりインク節約機能の有効/無効を設定できる。まだ一度も設定していない初期の状態では無効になっている(チェックが外れている)。
ユーザは、適用ボタン107を押下することにより、各種設定チェックボックスのチェック状態に応じて、自動電源オン設定と自動電源オフ設定をサーバPC1に接続されたプリンタ4に適用し、インク節約設定をサーバPC1の印刷処理に適用することができる。適用ボタン107を押下すると、ユーティリティ68は特殊設定ジョブをジョブ管理部61に投入する。その後、特殊設定ジョブが処理されるまでの間、図3(a)に示す設定中ダイアログ200を表示する。そして、特殊設定ジョブの処理が完了すると、ユーティリティ68は設定中ダイアログ200を閉じて、特殊設定画面103に戻る。
クライアントPC2のユーティリティ68は、起動直後、特殊設定画面103を表示する。ユーティリティ68は、特殊設定画面103を表示するとき、各種機能の設定チェックボックスをサーバPC1の設定状態にして表示する。このように表示することにより、ネットワーク上の他のクライアントPCから各種機能の設定状態が変更されても、ユーティリティ68は、サーバPC1に接続されたプリンタ4やサーバPC1の印刷環境の現在の設定状態をユーザに示すことができる。
ユーティリティ68は、特殊設定画面103を表示するとき、特殊設定取得ジョブをジョブ管理部61に投入する。特殊設定取得ジョブを投入すると、サーバPC1のユーティリティフィルタ57が、サーバPC1の設定状態をステータス格納部55に格納するので、それらがOSによってクライアントPC2のステータス格納部65にコピーされる。この処理の詳細については後述する。
その後、クライアントPC2のステータス格納部65に格納されている特殊設定の設定状態を取得するまでの間、図3(b)に示す設定取得中ダイアログ201を表示する。そして、特殊設定の設定状態の取得が完了すると、設定取得中ダイアログ201を閉じて、取得した設定状態を特殊設定画面103の各種設定チェックボックスに反映する。これらの機能がまだ設定されていなければ、サーバPC1に接続されたプリンタ4及びサーバPC1の印刷環境は初期状態で動作するので、ユーティリティ68は各種設定チェックボックスを初期状態で表示する。
カートリッジ設定画面110で、ユーザは、カートリッジ設定を設定できる。ユーザは、カートリッジ設定ポップアップメニュー111により印刷時に使用するカートリッジを設定できる。カートリッジ設定ポップアップメニュー111の項目には「両方」、「カラーのみ」、「ブラックのみ」があり、これらの何れかを設定できる。「両方」を設定すると、印刷処理時に印刷フィルタ56はブラックとカラーの両カートリッジを使用して印刷するための印刷データを生成する。「カラーのみ」を設定すると印刷フィルタ56はカラーカートリッジのみを使用して印刷するための印刷データを生成する。「ブラックのみ」を設定すると印刷フィルタ56はブラックカートリッジのみを使用して印刷するための印刷データを生成する。まだ一度も設定していない初期状態では「両方」が設定されている。ユーザは、適用ボタン112を押下することにより、カートリッジ設定を印刷処理に適用することができる。適用ボタン112を押下すると、ユーティリティ68はカートリッジ設定ジョブをジョブ管理部61に投入する。その後、カートリッジ設定ジョブが処理されるまでの間、図3(a)に示す設定中ダイアログ200を表示する。そして、カートリッジ設定ジョブの処理が完了すると、ユーティリティ68は設定中ダイアログ200を閉じて、カートリッジ設定画面110に戻る。
クライアントPC2のユーティリティ68は、カートリッジ設定画面110を表示するとき、カートリッジ設定ポップアップメニュー111をサーバPC1の設定状態にして表示する。このように表示することにより、ネットワーク上の他のクライアントPCから設定状態が変更されても、ユーティリティ68はサーバPC1に接続されたプリンタ4やサーバPC1の印刷環境の現在の設定状態をユーザに示すことができる。
ユーティリティ68は、カートリッジ設定画面110を表示するとき、カートリッジ設定取得ジョブをジョブ管理部61に投入する。カートリッジ設定取得ジョブを投入すると、サーバPC1のユーティリティフィルタ57が、サーバPC1の設定状態をステータス格納部55に格納するので、それらがOSによってクライアントPC2のステータス格納部65にコピーされる。この処理の詳細については後述する。その後、クライアントPC2のステータス格納部65に格納されるカートリッジ設定の設定状態を取得するまでの間、図3(b)に示す設定取得中ダイアログ201を表示する。そして、カートリッジ設定の設定状態の取得が完了すると設定取得中ダイアログ201を閉じて、取得した設定状態をカートリッジ設定画面110上のカートリッジ設定ポップアップメニュー111に反映する。カートリッジ設定がまだ設定されていなければ、サーバPC1の印刷環境は初期状態で動作するので、ユーティリティ68はカートリッジ設定ポップアップメニュー111を初期状態で表示する。
図3は、クライアントPC2のユーティリティ68の処理中のダイアログを示す図である。
ユーティリティ68は、特殊設定画面103やカートリッジ設定画面110の各種機能を設定しているとき、図3(a)の設定中ダイアログ200を表示する。各種設定画面上の適用ボタンが押下されると、ユーティリティ68は設定ジョブをジョブ管理部61に投入して設定中ダイアログ200を表示する。そして、投入した設定ジョブの処理が完了すると設定中ダイアログ200を閉じて各種設定画面に戻る。ユーティリティ68は、特殊設定画面103やカートリッジ設定画面110を表示する前に各画面の各種機能のサーバPC1の設定状態を取得している。このとき、図3(b)の設定取得中ダイアログ201を表示する。ユーティリティ68は各種設定画面を表示するとき、設定取得ジョブをジョブ管理部61に投入して設定取得中ダイアログ201を表示する。そして、投入したジョブの処理が完了すると設定取得中ダイアログ201を閉じて取得した設定状態または初期値を各設定画面上に反映する。
図4は、クライアントPC2のジョブ表示部63とサーバPC1のジョブ表示部53のウインドウを示す図である。
以下では、クライアントPC2のジョブ表示部63の動作について説明するが、サーバPC1のジョブ表示部53についても同様の動作が実行される。
ジョブ表示部63は、OSが制御しており、ユーザがジョブ表示部63を開くとOSはジョブ表示ウインドウ300を開く。ユーザは、クローズボタン301によりジョブ表示ウインドウ300を閉じることができる。また、ユーザは、削除ボタン302により実行中のジョブをキャンセルすることができる。ステータス表示領域303にはPPDファイル64に記述されている各種プリンタ4の動作状態に対応する表示用メッセージが表示される。
ジョブ表示部63は、ステータス格納部65に格納されているステータスを取得すると、それらに対応する表示用メッセージをジョブ管理部61に問い合わせる。ジョブ管理部61は、問い合わせを受けたステータスに対応する表示用メッセージの記述がPPDファイル64にあればそれをジョブ表示部63に返す。一方、ジョブ管理部61は、対応する表示用メッセージの記述がPPDファイル64になければ、ないことを示す値をジョブ表示部63に返す。
ジョブ表示部63は、ジョブ管理部61から、対応する表示用メッセージが返されると、それをステータス表示領域303に表示する。一方、ジョブ管理部61から、対応する表示用メッセージがないことを示す値が返されると何も表示しない。本実施形態では、PPDファイル64に各種プリンタの動作状態として紙なしエラー状態、インクなしエラー状態、通信エラー状態、その他のエラー状態に対応する表示用メッセージを記述している。よって、これらのエラー状態がステータス格納部65に格納されると、対応する表示用メッセージがステータス表示領域303に表示される。ユーティリティ68の各種機能の設定状態のステータスがステータス格納部65に格納されても、PPDファイル64には対応する表示用メッセージの記述がないのでステータス表示領域303には何も表示されない。ジョブ表示領域304には印刷キュー62で管理されているジョブの一覧が表示される。
特に、図4(a)は、ユーティリティ68が特殊設定画面103の設定に伴い特殊設定ジョブを投入したときのジョブ表示ウインドウ300である。ジョブ表示領域304には特殊設定ジョブが処理中の状態として表示され、このときユーティリティ68が投入したジョブの名称「特殊設定」が表示される。
図4(b)は、特殊設定ジョブを処理中にエラーが発生したときのジョブ表示ウインドウ300である。ここでは一例として、処理中に通信エラーが発生したときのジョブ表示ウインドウ300を示している。ステータス表示領域303には、ユーティリティフィルタ57がステータス格納部65に格納した通信エラー状態に対応した表示用メッセージが表示される。ジョブ表示部63は、ジョブ管理部61を介して通信エラー状態に対応した表示用メッセージをPPDファイル64から取得してステータス表示領域303に表示する。
図4(c)はユーティリティ68が特殊設定画面103の表示に伴い特殊設定取得ジョブを投入したときのジョブ表示ウインドウ300である。ジョブ表示領域304には特殊設定取得ジョブが処理中の状態で表示され、このときユーティリティ68が投入したジョブの名称「特殊設定の取得」が表示される。
図5もジョブ表示部63のジョブ表示ウインドウ300を示す図である。
図5(a)及び図5(b)は、各々カートリッジ設定ジョブとカートリッジ設定取得ジョブを投入したときのジョブ表示ウインドウ300である。ジョブ表示領域304には各々のジョブが処理中の状態で表示され、このとき各々ユーティリティ68が投入したジョブの名称「カートリッジ設定」、「カートリッジ設定の取得」が表示される。
図6もジョブ表示部63のジョブ表示ウインドウ300を示す図である。
図6(a)は印刷アプリケーション66からの印刷要求に伴い印刷ジョブが投入されたときのジョブ表示ウインドウ300である。ジョブ表示領域304には印刷ジョブが処理中の状態として表示され、このとき印刷アプリケーション66が投入した印刷ジョブの名称が表示される。
図6(b)は印刷ジョブを処理中にエラーが発生したときのジョブ表示ウインドウ300である。ここでは一例として、印刷中に用紙なしエラーが発生したときのジョブ表示ウインドウ300を示している。ステータス表示領域303には、印刷フィルタ56がステータス格納部55に格納した用紙なしエラー状態に対応した表示用メッセージが表示される。ジョブ表示部63は、ジョブ管理部61を介して用紙なしエラー状態に対応した表示用メッセージをPPDファイル64から取得してステータス表示領域303に表示する。
次に図7、図8を用いて、クライアントPC2のユーティリティ68において設定された特殊設定を、サーバPC1を介してプリンタ4に設定する処理について説明する。
図7はクライアントPC2のユーティリティ68の特殊設定処理を示すフローチャートである。尚、図7に示すフローチャートに示す処理に対応するプログラムがクライアントPC2のROMに格納されており、クライアントPC2のCPUがRAM上でこのプログラムを実行することで、図7に示す処理が実現される。
ユーザが、特殊設定画面103で適用ボタン107を押下すると、ユーティリティ68は特殊設定処理を実行する。S100で、ユーティリティ68は、特殊設定処理を開始する。S101で、ユーティリティ68は、特殊設定ジョブをジョブ管理部61に投入する。クライアントPC2で投入された特殊設定ジョブは、OSによってサーバPC1のジョブ管理部51に送信される。S102で、ユーティリティ68は、自身が投入した特殊設定ジョブの処理状態をジョブ管理部61に問い合わせて取得する。S103で、ユーティリティ68は、取得したジョブの処理状態に基づき特殊設定ジョブが完了したか否かを判定する。完了していないと判定する場合(S103でNO)、S102に戻り、ユーティリティ68は、再度、ジョブの処理状態をジョブ管理部61から取得する。一方、完了したと判定する場合(S1033でYES)、S104に進み、処理を終了する。
図7に示した処理により、ユーザがプリンタ4に設定させる印刷設定(例えば、自動電源オン設定)を、特殊設定ジョブというジョブ形式により、サーバPC1に通知することができる。
図8はサーバPC1のユーティリティフィルタ57の特殊設定処理を示すフローチャートである。尚、図8に示すフローチャートに示す処理に対応するプログラムがサーバPC1のROMに格納されており、サーバPC1のCPUがRAM上でこのプログラムを実行することで、図8に示す処理が実現される。
ネットワーク上の2台のクライアントPC2及びPC3のどちらかのユーティリティ68が各種機能の特殊設定を行うと、特殊設定ジョブがジョブ管理部61に投入されてサーバPC1のジョブ管理部51に送信される。サーバPC1のユーティリティフィルタ57は、ジョブ管理部51から特殊設定ジョブが送信されると、この特殊設定処理を実行する。尚、ここでは印刷設定として、自動電源オン設定と、自動電源オフ設定、インク節約設定を例に説明する。
S200で、ユーティリティフィルタ57は、特殊設定処理を開始する。S201で、ユーティリティフィルタ57は、特殊設定ジョブとともに送信される自動電源オン設定と自動電源オフ設定の設定値に基づき設定制御コマンドを生成する。自動電源設定は、プリンタ自身に設定される内容であり、その設定内容をプリンタに通知する必要がある。そのため、S201で、設定制御コマンドを生成する。
S202で、ユーティリティフィルタ57は、生成した設定制御コマンドをプリンタ4に送信する。プリンタ4は、この設定制御コマンドを受信すると、自身の動作モードを設定することになる。
S203で、ユーティリティフィルタ57は、設定制御コマンドの送信状態をジョブ管理部51から取得する。S204で、ユーティリティフィルタ57は、設定制御コマンドの送信が完了したか否かを判定する。送信が完了していないと判定する場合(S204でNO)、S205に進む。S205で、ユーティリティフィルタ57は、プリンタ4からステータスを取得する。そして、S206で、ユーティリティフィルタ57は、取得したステータスを解析する。S207で、ユーティリティフィルタ57は、ステータスを解析した結果に基づきステータス格納部55のプリンタ4の動作状態を更新する。
この更新では、プリンタ4でエラーが発生していなければ、ユーティリティフィルタ57は、ステータス情報のステータス格納部55への格納は行わない。プリンタ4でエラーが発生していれば、ユーティリティフィルタ57は、エラー状態をステータス格納部55に格納する。また、プリンタ4のエラーが解決されれば、ユーティリティフィルタ57は、ステータス格納部55に格納したエラー状態を削除する。ユーティリティフィルタ57がステータス格納部55に格納する各種エラー状態は対応する表示用メッセージがPPDファイル54に記述されているので、図4(b)に示すように、ジョブ表示ウインドウ300のステータス表示領域303に表示される。また、サーバPC1のステータス格納部55に格納したプリンタ4の動作状態は、OSによってクライアントPC2のステータス格納部65にコピーされ、クライアントPC2のジョブ表示ウインドウ300のステータス表示領域303にも表示される。
ユーティリティフィルタ57は、エラー状態を更新すると、S203に戻り、再度、設定制御コマンドの送信状態をジョブ管理部51から取得する。そして、設定制御コマンドの送信が完了したと判定する場合(S204でYES)、S208に進む。
S208で、ユーティリティフィルタ57は、自動電源オン設定及び自動電源オフ設定を含む自動電源の設定値をPPDファイル54に追記する。PPDファイル54への各種設定値の追記は、ユーティリティフィルタ57がジョブ管理部51に機能名称と設定値を通知することによって行われる。ジョブ管理部51は、この通知を受けて機能名称と設定値をPPDファイル54に追記する。このとき、既に同じ機能名称の設定値があれば上書きする。PPDファイル54の各種設定値の上書きは異なるクライアントPCから特殊設定ジョブを送信されたときにも行われる。即ち、PPDファイル54に追記される各種設定値は最後に特殊設定ジョブを投入したクライアントPCのユーティリティ68の設定状態に基づくことになる。
S209で、ユーティリティフィルタ57は、特殊設定ジョブとともに送信されるインク節約設定の設定値に基づきインク節約設定の設定値をPPDファイル54に追記する。尚、インク節約設定は、プリンタ4に対する設定ではなく、サーバPC1のプリンタドライバにおいて印刷データを作成するときに反映される。そのため、S201〜S207に示したように、プリンタ4への設定コマンドの送信、設定を行わない。
S210で、ユーティリティフィルタ57は、ステータス格納部55のインク節約設定の設定状態を更新する。ステータス格納部55にインク節約設定の設定状態がなければ、ユーティリティフィルタ57は新たに設定状態をステータス格納部55に格納する。一方、ステータス格納部55に既にインク節約設定の設定状態があれば、ユーティリティフィルタ57は、その設定状態を一旦削除してから新たに設定状態をステータス格納部55に格納する。
尚、PPDファイル54に追記される各種設定値と同様にステータス格納部55への各種設定状態の格納は異なるクライアントPCから設定ジョブを送信されたときにも行われる。即ち、ステータス格納部55に格納される各種設定状態は最後に特殊設定ジョブを投入したクライアントPCのユーティリティ68の設定状態に基づくことになる。よって、あるクライアントPCにおいて設定した特殊設定とは異なる設定が、他のクライアントPCにより設定され、その設定がPPDファイル54に格納されていることが起こり得る。
そこで、本実施形態では、ステータス格納部55に格納されたインク節約設定の設定状態が、図9を用いて後述する処理により、S207で格納したプリンタ4の動作状態と同様にOSによってクライアントPC2のステータス格納部65にコピーされる。但し、ユーティリティフィルタ57が格納する各種設定状態は、対応する表示用メッセージがPPDファイル54に記述されていないのでジョブ表示ウインドウ300のステータス表示領域303に表示されることはない。
S211で、ユーティリティフィルタ57は、ステータス格納部55のプリンタ4の動作状態を削除する。S207でプリンタ4のエラー状態をステータス格納部55に格納したままになっていれば、ユーティリティフィルタ57は削除する。ステータス格納部55にプリンタ4のエラー状態が格納されていなければ、ユーティリティフィルタ57は何もしない。その後、S212で、ユーティリティフィルタ57は、処理を終了する。
以上の図8に示す処理により、サーバPC1は、クライアントPC2から受信した特殊設定ジョブに含まれている設定値に従って、プリンタ4の設定を更新することができる。またその設定値が、プリンタ4の動作状態(エラー等)と同様に、ステータス格納部55に格納される。
ユーティリティフィルタ57は、処理終了時、ステータス格納部55に格納したインク節約設定の設定状態を削除せず、格納したまま終了する。よって、ユーティリティフィルタ57の処理が終了してもインク節約設定の設定状態はステータス格納部55に格納されたままになる。この特殊設定処理で、サーバPC1のPPDファイル54に追記した各種設定値は、クライアントPC2のPPDファイル64に反映されない。サーバPC1のPPDファイル54に追記した設定値は、その後、サーバPC1上で動作する印刷フィルタ56やユーティリティフィルタ57に参照され、これらフィルタの処理の制御に使用される。
一方、サーバPC1のステータス格納部55に格納した各種設定状態は、その後、後述する図9に示す処理によりサーバPCのOSによってクライアントPC2のステータス格納部65にコピーされる。そして、クライアントPC2のユーティリティ68は、クライアントPC2のステータス格納部65から各種設定状態を取得して、特殊設定画面に反映する。この処理の詳細については図9を用いて説明する。
図9はクライアントPC2のユーティリティ68の特殊設定取得処理を示すフローチャートである。尚、図9に示すフローチャートに示す処理に対応するプログラムがクライアントPC2のROMに格納されており、クライアントPC2のCPUがRAM上でこのプログラムを実行することで、図9に示す処理が実現される。
ユーティリティ68がクライアントPC2のユーザの指示により起動した場合、ユーティリティ68は、特殊設定画面103を表示する前に図9に示す特殊設定取得処理を実行し、取得した設定状態を特殊設定画面103の各種設定チェックボックスに反映する。
S300で、ユーティリティ68は、この特殊設定取得処理を開始する。S301で、ユーティリティ68は、特殊設定取得ジョブをジョブ管理部61に投入する。S300における特殊設定ジョブの投入により、ジョブ管理部61がサーバPC1に特殊設定ジョブを送信する。すると、後述する図10のサーバPC1の処理により、サーバPC1のステータス格納部55に格納されている最新の設定状態が、クライアントPC2のステータス格納部65にコピーされる。
S302で、ユーティリティ68は、ジョブ管理部61を介してステータス格納部65のステータスを取得する。S300における処理により投入された特殊設定ジョブにより図10の処理が行われた場合、ステータス格納部65には、サーバPC1のステータス格納部55の内容がクライアントPC2、サーバPC1のOSによりコピーされている。よって、S302では、サーバPC1における最新の印刷設定状態を取得することができる。尚、ステータスの取得は、ユーティリティ68がジョブ管理部61に問い合わせ、ジョブ管理部61がステータス格納部65のステータスをユーティリティ68に返すことによって行われる。
S303で、ユーティリティ68は、取得したステータスに自動電源オン設定及び自動電源オフ設定を含む自動電源の設定状態があるか否かを判定する。自動電源の設定状態があると判定する場合(S303でYES)、S304に進む。S304で、ユーティリティ68は、ステータスを解析して自動電源オン設定及び自動電源オフ設定を含む自動電源の設定状態を取得して、S305に進む。一方、自動電源の設定状態がないと判定する場合(S303でNO)、そのままS305に進む。S305で、ユーティリティ68は、取得したステータスにインク節約設定の設定状態があるか否かを判定する。インク節約の設定状態があると判定する場合(S305でYES)、S306に進む。S306で、ユーティリティ68は、ステータスを解析してインク節約設定の設定状態を取得して、S307に進む。一方、インク節約の設定状態がないと判定する場合(S305でNO)、そのままS307に進む。
S307で、ユーティリティ68は、自身が投入した特殊設定取得ジョブの処理状態をジョブ管理部61に問い合わせて取得する。S308で、ユーティリティ68は、取得したジョブの処理状態に基づき特殊設定取得ジョブが完了したか否かを判定する。完了していないと判定する場合(S308でNO)、S302に戻り、ユーティリティ68は、再度、ステータス格納部65のステータスをジョブ管理部61から取得する。一方、完了したと判定する場合(S308でYES)、S309に進む。
S309で、ユーティリティ68は、自身の投入した特殊設定取得ジョブの処理が完了するまでに、サーバPC1のステータス格納部65に格納されている内容がステータス格納部55にコピーされ、S302においてそのコピーされた内容がS302においてユーティリティ68により取得されたか判断する。具体的には、サーバPC1からコピーされた後の自動電源オン設定及び自動電源オフ設定を含む自動電源の設定状態を取得したか否かを判定する。自動電源の設定状態を取得していないと判定する場合(S309でNO)、S310に進む。S310で、ユーティリティ68は、内部に保持する自動電源オン設定及び自動電源オフ設定を含む自動電源の初期設定を取得して、S311に進む。一方、自動電源の設定状態を取得したと判定する場合(S309でYES)、そのままS311に進む。
S311で、ユーティリティ68は、サーバPC1からコピーされた後のインク節約設定の設定状態を取得したか否かを判定する。設定状態を取得していないと判定する場合(S311でNO)、S312に進む。そして、S312で、ユーティリティ68は、内部に保持するインク節約設定の初期設定を取得して、S313に進み、処理を終了する。一方、インク節約設定の設定状態を取得したと判定する場合(S311でYES)、そのままS313に進む。
S313では、S304またはS310で取得された自動電源の設定状態、またS306またはS312で取得されたインク節約の設定状態を、ユーティリティ68の起動時に表示される特殊設定画面103のチェックボックスに反映させる。そして、そのようにチェックボックスに設定状態が反映された特殊設定画面103を、クライアントPC2が備える、またはクライアントPC2に接続されている表示装置に表示させる。
S313の表示制御処理が実行されると、S314において処理を終了する。そして、図9に示す処理が実行されると、図7に示す処理により、特殊設定ジョブの投入による特殊設定処理が可能となる。
図10はサーバPC1の特殊設定取得処理を示すフローチャートである。尚、図10に示すフローチャートに示す処理に対応するプログラムがサーバPC1のROMに格納されており、サーバPC1のCPUがRAM上でこのプログラムを実行することで、図10に示す処理が実現される。
ネットワーク上の2台のクライアントPC2及びPC3のどちらかのユーティリティ68が各種機能の設定画面を表示するとき、図9のS301における処理により特殊設定取得ジョブがジョブ管理部61に投入されてサーバPC1のジョブ管理部51に送信される。サーバPC1のユーティリティフィルタ57は、サーバPC1のジョブ管理部51から特殊設定取得ジョブが送信されると、この特殊設定取得処理を実行する。
S400で、ユーティリティフィルタ57は、特殊設定取得処理を開始する。S401で、ユーティリティフィルタ57は、プリンタ4のステータスを取得できるか否かを判定する。取得できないと判定する場合(S401でNO)、S402に進み、ユーティリティフィルタ57は、PPDファイル54の自動電源オン設定及び自動電源オフ設定を含む自動電源の設定値を検索する。PPDファイル54の検索は、ユーティリティフィルタ57が各種機能名称の設定値をジョブ管理部51に問い合わせることによって行われる。ジョブ管理部51は、問い合わせを受けた機能名称の設定値の記述がPPDファイル54にあれば、その設定値をユーティリティフィルタ57に返す。一方、ジョブ管理部51は、設定値の記述がPPDファイル54になければ、ないことを示す値をユーティリティフィルタ57に返す。
S403で、ユーティリティフィルタ57は、検索結果に基づき、自動電源オン設定及び自動電源オフ設定を含む自動電源の設定値がPPDファイル54にあるか否かを判定する。自動電源の設定値がないと判定する場合(S403でNO)、S407に進み、ユーティリティフィルタ57は、処理を終了する。このとき、ステータス格納部55の自動電源オン設定及び自動電源オフ設定の設定状態は更新されない。
一方、自動電源の設定値があると判定する場合(S403でYES)、S404に進む。S404で、ユーティリティフィルタ57は、自動電源オン設定及び自動電源オフ設定を含む自動電源の設定値をPPDファイル54から取得する。ここで、PPDファイル54から取得する各種設定値は最後に設定を行ったクライアントPC2のユーティリティ68の設定状態になる。そして、S406で、ユーティリティフィルタ57は、PPDファイル54から取得した設定値に基づき、ステータス格納部55の自動電源オン設定及び自動電源オフ設定を含む自動電源の設定状態を更新する。ステータス格納部55にこれらの設定状態がなければ、ユーティリティフィルタ57は、新たにこれらの設定状態をステータス格納部55に格納する。一方、ステータス格納部55に既にこれらの設定状態があれば、ユーティリティフィルタ57は、それらの設定状態を一旦削除してから新たにこれらの設定状態をステータス格納部55に格納する。
一方、S401で、ユーティリティフィルタ57は、プリンタのステータスを取得できると判定する場合(S401でYES)、S405に進む。S405で、ユーティリティフィルタ57は、プリンタ4から自動電源オン設定及び自動電源オフ設定を含む自動電源の設定状態を取得して、S406に進む。S406で、ユーティリティフィルタ57は、プリンタ4から取得した設定状態に基づき、ステータス格納部55の自動電源オン設定及び自動電源オフ設定を含む自動電源の設定状態を更新する。ステータス格納部55にこれらの設定状態がなければ、ユーティリティフィルタ57は、新たにこれらの設定状態をステータス格納部55に格納する。一方、ステータス格納部55に既にこれらの設定状態があれば、ユーティリティフィルタ57は、それらの設定状態を一旦削除してから新たにこれらの設定状態をステータス格納部55に格納する。
そして、S407で、サーバPC1のOSは、クライアントPC2のOSと連携し、サーバPC1のステータス格納部55に格納されている設定状態を、当該特殊設定取得ジョブを投入したクライアントPC2のステータス格納部65にコピーする。コピーされる設定状態には、S406における処理により、自動電源の最新の設定状態と、インク節約の最新の設定状態が含まれる。S407における処理、また、図9のS302における処理により、サーバPC1において最新の設定状態が、クライアントPC2のユーティリティ68に通知される。
S407の処理が実行されるとサーバPC1は、S408において処理を終了する。
尚、この特殊設定取得処理において、ユーティリティフィルタ57は、サーバPC1のステータス格納部55に自動電源オン設定及び自動電源オフ設定を含む自動設定の設定状態を格納するが、インク節約設定の設定状態を格納しない。しかし、既に、特殊設定処理を行っていれば、図8のS211でユーティリティフィルタ57によってインク節約設定の設定状態はサーバPC1のステータス格納部55に格納されている。この設定状態でクライアントPC2から送信された特殊設定取得ジョブがサーバPC1のジョブ管理部51で処理されると、OSによってサーバPC1のステータス格納部55のこれらの設定状態がクライアントPC2のステータス格納部65にコピーされる。よって、クライアントPC2のユーティリティ68は、クライアントPC2のステータス格納部65にコピーされる自動電源オン設定及び自動電源オフ設定を含む自動電源の設定状態やインク節約設定の設定状態を取得して、特殊設定画面103の各種設定チェックボックスに反映できる。
図11はクライアントPC2のユーティリティ68のカートリッジ設定処理を示すフローチャートである。尚、図11に示すフローチャートに示す処理に対応するプログラムがクライアントPC2のROMに格納されており、クライアントPC2のCPUがRAM上でこのプログラムを実行することで、図11に示す処理が実現される。
ユーザが、カートリッジ設定画面110で、適用ボタン112を押下すると、ユーティリティ68は、このカートリッジ設定処理を実行する。S500で、ユーティリティ68は、このカートリッジ設定処理を開始する。S501で、ユーティリティ68は、カートリッジ設定ジョブをジョブ管理部61に投入する。S502で、ユーティリティ68は、自身が投入したカートリッジ設定ジョブの処理状態をジョブ管理部61に問い合わせて取得する。S503で、ユーティリティ68は、取得したジョブの処理状態に基づきカートリッジ設定ジョブが完了したか否かを判定する。完了していないと判定する場合(S503でNO)、S502に戻り、ユーティリティ68は、再度、ジョブの処理状態をジョブ管理部61から取得する。一方、完了したと判定する場合(S503でYES)、S504に進み、ユーティリティ68は、処理を終了する。
図12はサーバPC1のユーティリティフィルタ57のカートリッジ設定処理を示すフローチャートである。尚、図12に示すフローチャートに示す処理に対応するプログラムがサーバPC1のROMに格納されており、サーバPC1のCPUがRAM上でこのプログラムを実行することで、図12に示す処理が実現される。
ユーティリティフィルタ57は、サーバPC1のジョブ管理部51からカートリッジ設定ジョブが送信されると、このカートリッジ設定処理を実行する。S600で、ユーティリティフィルタ57は、このカートリッジ設定処理を開始する。S601で、ユーティリティフィルタ57は、カートリッジ設定ジョブとともに送られるカートリッジ設定の設定値をPPDファイル54に追記する。PPDファイル54に追記されたカートリッジ設定の設定値は、印刷処理時に印刷フィルタ56によって参照され、印刷フィルタ56は設定値に基づき印刷データの生成モードを変更する。この処理の詳細については後述する。
S602で、ユーティリティフィルタ57は、ステータス格納部55のカートリッジ設定の設定状態を更新する。ステータス格納部55にカートリッジ設定の設定状態がなければ、ユーティリティフィルタ57は、新たに設定状態をステータス格納部55に格納する。一方、ステータス格納部55に既にカートリッジ設定の設定状態があれば、ユーティリティフィルタ57は、その設定状態を一旦削除してから新たに設定状態をステータス格納部55に格納する。そして、S603に進み、ユーティリティフィルタ57は、処理を終了する。
ユーティリティフィルタ57は、処理終了時、ステータス格納部55に格納したカートリッジ設定の設定状態を削除せず、格納したまま終了する。よって、ユーティリティフィルタ57の処理が終了してもカートリッジ設定の設定状態は、ステータス格納部55に格納されたままになる。このカートリッジ設定処理で、サーバPC1のPPDファイル54に追記した設定値は、特殊設定処理と同様にクライアントPC2のPPDファイル64に反映されない。サーバPC1のPPDファイル54に追記した設定値は、その後、サーバPC1上で動作する印刷フィルタ56やユーティリティフィルタ57に参照され、これらフィルタの処理の制御に使用される。一方、サーバPC1のステータス格納部55に格納した設定状態は、その後、OSによってクライアントPC2のステータス格納部65にコピーされる。そして、クライアントPC2のユーティリティ68は、ステータス格納部65から設定状態を取得して、カートリッジ設定画面110に反映する。この処理の詳細については後述する。
図13はクライアントPC2のユーティリティ68のカートリッジ設定取得処理を示すフローチャートである。尚、図13に示すフローチャートに示す処理に対応するプログラムがクライアントPC2のROMに格納されており、クライアントPC2のCPUがRAM上でこのプログラムを実行することで、図13に示す処理が実現される。
ユーティリティ68は、カートリッジ設定画面110を表示する前に、このカートリッジ設定取得処理を実行し、取得した設定状態をカートリッジ設定ポップアップメニュー111に反映する。S700で、ユーティリティ68は、このカートリッジ設定取得処理を開始する。S701で、ユーティリティ68は、カートリッジ設定取得ジョブをジョブ管理部61に投入する。S702で、ユーティリティ68は、ジョブ管理部61を介してステータス格納部65のステータスを取得する。ステータスの取得は、ユーティリティ68がジョブ管理部61に問い合わせ、ジョブ管理部61がステータス格納部65のステータスをユーティリティ68に返すことによって行われる。
S703で、ユーティリティ68は、取得したステータスにカートリッジ設定の設定状態があるか否かを判定する。設定状態があると判定する場合(S703でYES)、S704に進む。S704で、ユーティリティ68は、ステータスを解析してカートリッジ設定の設定状態を取得し、S705に進む。一方、設定状態がないと判定する場合(S703でNO)、そのままS705に進む。S705で、ユーティリティ68は、自身が投入したカートリッジ設定取得ジョブの処理状態をジョブ管理部61に問い合わせて取得する。
S706で、ユーティリティ68は、取得したジョブの処理状態に基づきカートリッジ設定取得ジョブが完了したか否かを判定する。完了していないと判定する場合(S706でNO)、S702に戻り、ユーティリティ68は、再度、ステータス格納部65のステータスをジョブ管理部61から取得する。一方、完了したと判定する場合(S706でYES)、S707に進む。
S707で、ユーティリティ68は、自身の投入したカートリッジ設定取得ジョブの処理が完了するまでに、サーバPC1のステータス格納部55からコピーされたカートリッジ設定の最新の設定状態がS702において取得されたか否かを判定する。設定状態を取得していないと判定する場合(S707でNO)、S708に進む。そして、S708で、ユーティリティ68は、内部に保持するカートリッジ設定の初期設定を取得して、S709に進み、処理を終了する。一方、設定状態を取得したと判定する場合(S707でYES)、S709に進む。
S709では、S704またはS708で取得されたカートリッジ設定の設定状態を、カートリッジ設定画面110の初期画面の初期設定に反映させる。そして、そのように初期設定に設定状態が反映された特殊設定画面103を、クライアントPC2が備える、またはクライアントPC2に接続されている表示装置に表示させる。
S709における表示制御処理が実行されると、そのままS710に進み、ユーティリティ68は、処理を終了する。
図14はサーバPC1のカートリッジ設定取得処理を示すフローチャートである。尚、図14に示すフローチャートに示す処理に対応するプログラムがサーバPC1のROMに格納されており、サーバPC1のCPUがRAM上でこのプログラムを実行することで、図14に示す処理が実現される。
サーバPC1は、サーバPC1のジョブ管理部51からカートリッジ設定取得ジョブが送信されると、S800で、カートリッジ設定取得処理を開始する。次に、S801で、サーバPC1は、クライアントPC2のOSと連携し、サーバPC1のステータス格納部55に格納されている設定状態を、当該特殊設定取得ジョブを投入したクライアントPC2のステータス格納部65にコピーする。そして、S802に進み、処理を終了する。
既にカートリッジ設定処理を行っていれば、図12のS602でユーティリティフィルタ57によってカートリッジ設定の設定状態はサーバPC1のステータス格納部55に格納されている。この設定状態でクライアントPC2から送信されたカートリッジ設定取得ジョブがサーバPC1のジョブ管理部51で処理されると、図14におけるOSの処理によってサーバPC1のステータス格納部55のカートリッジ設定の設定状態がクライアントPC2のステータス格納部65にコピーされる。よって、クライアントPC2のユーティリティ68は、ステータス格納部65にコピーされるカートリッジ設定の設定状態を取得して、カートリッジ設定画面110に反映できる。
図15はサーバPC1の印刷処理を示すフローチャートである。尚、図15に示すフローチャートに示す処理に対応するプログラムがサーバPC1のROMに格納されており、サーバPC1のCPUがRAM上でこのプログラムを実行することで、図15に示す処理が実現される。
印刷フィルタ56は、サーバPC1のジョブ管理部51から印刷ジョブが送信されると、この印刷処理を実行する。S900で、印刷フィルタ56は、この印刷処理を開始する。S901で、印刷フィルタ56は、PPDファイル54に追記されたカートリッジ設定やインク節約設定の設定値に基づき出力データ(印刷データ)を生成する。この処理の詳細については後述する。S902で、印刷フィルタ56は、生成した出力データをプリンタ4に送信する。プリンタ4は出力データを受信すると、印刷を開始する。
S903で、印刷フィルタ56は、プリンタ4からステータスを取得する。S904で、印刷フィルタ56は、取得したステータスを解析する。S905で、印刷フィルタ56は、ステータスを解析した結果に基づきステータス格納部55のプリンタ4の動作状態を更新する。プリンタ4でエラーが発生していなければ、印刷フィルタ56は、ステータスの格納は行わない。プリンタ4でエラーが発生していれば、印刷フィルタ56は、エラー状態をステータス格納部55に格納する。また、プリンタ4のエラーが解決されれば、印刷フィルタ56は、ステータス格納部55に格納したエラー状態を削除する。ここで、印刷フィルタ56が格納する各種エラー状態は対応する表示用メッセージがPPDファイル54に記述されているので、図6(b)に示すように、ジョブ表示ウインドウ300のステータス表示領域303に表示される。
S906で、サーバPC1のOSが、サーバPC1のステータス格納部55に格納したプリンタ4の動作状態を、クライアントPC2のステータス格納部65にコピーする。そしてクライアントPC2のジョブ表示ウインドウ300のステータス表示領域303にも表示される。
S907で、印刷フィルタ56は、ステータスを解析した結果に基づき印刷が完了したか否かを判定する。印刷が完了していないと判定する場合(S907でNO)、印刷フィルタ56は、S903に戻り、再度、プリンタ4からステータスを取得して解析する。一方、印刷が完了したと判定する場合(S907でYES)、S908に進み、印刷フィルタ56は、ステータス格納部55のプリンタ4の動作状態を削除する。S905でプリンタ4のエラー状態をステータス格納部55に格納したままになっていれば、印刷フィルタ56は、そのエラー状態を削除する。ステータス格納部55にプリンタ4のエラー状態が格納されていなければ、印刷フィルタ56は、削除処理は行わない。その後、サーバPC1は、S909に進み、処理を終了する。
図16はサーバPC1の印刷フィルタ56の出力データ生成処理を示すフローチャートである。尚、図16に示すフローチャートに示す処理に対応するプログラムがサーバPC1のROMに格納されており、サーバPC1のCPUがRAM上でこのプログラムを実行することで、図16に示す処理が実現される。
この処理は、図15のS901の処理の詳細である。S1000で、印刷フィルタ56は、この出力データ生成処理を開始する。S1001で、印刷フィルタ56は、PPDファイル54に追記されたカートリッジ設定の設定値を検索する。PPDファイル54の検索は、印刷フィルタ56が各種機能名称の設定値をジョブ管理部51に問い合わせることによって行われる。ジョブ管理部51は、問い合わせを受けた機能名称の設定値の記述がPPDファイル54にあれば、その設定値を印刷フィルタ56に返す。一方、ジョブ管理部51は、設定値がPPDファイル54になければ、ないことを示す値を印刷フィルタ56に返す。
S1002で、印刷フィルタ56は、検索結果に基づき、カートリッジ設定の設定値がPPDファイル54にあるか否かを判定する。設定値があると判定する場合(S1002でYES)、S1003に進み、印刷フィルタ56は、カートリッジ設定の設定値をPPDファイル54から取得する。S1004で及びS1006で、印刷フィルタ56は、カートリッジ設定の設定値を判定する。カートリッジ設定の設定値がブラックであると判定する場合(S1004でYES)、S1005に進み、印刷フィルタ56は、ブラックカートリッジのみを使用する出力データを生成する。一方、カートリッジ設定の設定値がブラックではないがカラーであると判定する場合(S1004でNO、かつS1006でYES)、S1007で、印刷フィルタ56は、カラーカートリッジのみを使用する出力データを生成する。更に、カートリッジ設定の設定値がブラックでなく、かつカラーでもないと判定する場合(S1004でNO、かつS1006でNO)、S1008に進み、印刷フィルタ56は、ブラックカートリッジとカラーカートリッジの両方を使用する出力データを生成する。
S1002で、カートリッジの設定値がPPDファイル54にないと判定する場合(S1002でNO)、S1008に進み、印刷フィルタ56は、ブラックカートリッジとカラーカートリッジの両方を使用する出力データを生成する。S1009で、印刷フィルタ56は、PPDファイル54に追記されたインク節約設定の設定値を検索する。S1010で、印刷フィルタ56は、検索結果に基づき、インク節約設定の設定値がPPDファイル54にあるか否かを判定する。インク節約設定の設定値がないと判定する場合(S1010でNO)、S1014に進み、印刷フィルタ56は、出力データ生成処理を終了する。一方、インク節約設定の設定値があると判定する場合(S1010でYES)、S1011に進み、印刷フィルタ56は、インク節約設定の設定値をPPDファイル54から取得する。
S1012で、印刷フィルタ56は、インク節約設定が有効であるか否かを判定する。インク節約設定が有効であると判定する場合(S1012でYES)、S1013に進み、印刷フィルタ56は、既に、S1005、S1007、S1008の何れかで生成した出力データを、インク使用量が少なくなる出力データに変換する。そして、S1014に進み、印刷フィルタ56は、出力データ生成処理を終了する。一方、インク節約設定が有効でないと判定する場合(S1012でNO)、S1014に進み、印刷フィルタ56は、出力データ生成処理を終了する。
図17はPPDファイル54の一部分を示す図であり、ユーティリティフィルタ57の各種機能の設定状態に関する記述部分と表示用メッセージに関する記述部分を示している。
文字列400は、自動電源オン設定に関する記述である。ユーティリティフィルタ57が自動電源オン設定の設定値をジョブ管理部51に通知すると、ジョブ管理部51はPPDファイル54に文字列400のように追記する。本実施形態では、PPDファイル54に追記する自動電源オン設定の機能名称を「AutoPowerOn」とし、設定値は無効であれば0、有効であれば1としている。
文字列401は、自動電源オフ設定に関する記述である。ユーティリティフィルタ57が自動電源オフ設定の設定値をジョブ管理部51に通知すると、ジョブ管理部51はPPDファイル54に文字列401のように追記する。本実施形態では、PPDファイル54に追記する自動電源オフ設定の機能名称を「AutoPowerOff」とし、設定値は無効であれば0、有効であれば1としている。
文字列402は、インク節約設定に関する記述である。ユーティリティフィルタ57がインク節約設定の設定値をジョブ管理部51に通知すると、ジョブ管理部51はPPDファイル54に文字列402のように追記する。本実施形態では、PPDファイル54に追記するインク節約設定の機能名称を「InkSaveMode」とし、設定値は無効であれば0、有効であれば1としている。
文字列403は、カートリッジ設定に関する記述である。ユーティリティフィルタ57がカートリッジ設定の設定値をジョブ管理部51に通知すると、ジョブ管理部51はPPDファイル54に文字列403のように追記する。本実施形態では、PPDファイル54に追記するカートリッジ設定の機能名称を「CartridgeSetting」とし、設定値は「ブラックのみ」であれば1、「カラーのみ」であれば2、「両方」であれば3としている。ユーティリティフィルタ57が各種機能名称と設定値をジョブ管理部51に通知すると、ジョブ管理部51はPPDファイル54に図のように追記する。
一方、印刷フィルタ56が各種機能名称を用いてジョブ管理部51に設定値を問い合わせると、ジョブ管理部51は問い合わせを受けた機能名称の記述があれば、その設定値を印刷フィルタ56に返す。一方、ジョブ管理部51は、機能名称の記述がなければ、ないことを示す値を印刷フィルタ56に返す。
文字列404〜407は、各種エラー状態に対応する表示用メッセージに関する記述である。表示用メッセージに関する記述はプリンタ4で使用可能な用紙サイズや用紙種類、またそれらの初期値とともにPPDファイル54が初期の状態で記述されている。文字列先頭の「cupsIPPReason」はこの行が表示用メッセージに関する記述であることを示している。本実施形態では、用紙なしエラー状態、インクなしエラー状態、通信エラー状態、その他のエラー状態に対応する表示用メッセージをPPDファイル54に記述している。
文字列404は、紙なしエラー状態の表示用メッセージに関する記述である。「com.cij.paper−out−error」は、ユーティリティフィルタ57または印刷フィルタ56がステータス格納部55に格納する紙なしエラー状態を示すステータスであり、「用紙がなくなりました。」は紙なしエラー状態に対応する表示用メッセージである。
文字列405は、インクなしエラー状態の表示用メッセージに関する記述である。「com.cij.ink−out−error」は、ユーティリティフィルタ57または印刷フィルタ56がステータス格納部55に格納するインクなしエラー状態を示すステータスであり、「インクがなくなりました。」はインクなしエラー状態に対応する表示用メッセージである。
文字列406は、通信エラー状態の表示用メッセージに関する記述である。「com.cij.off−line−error」は、ユーティリティフィルタ57または印刷フィルタ56がステータス格納部55に格納する通信エラー状態を示すステータスであり、「プリンタと通信できません。」は通信エラー状態に対応する表示用メッセージである。
文字列407は、その他のエラー状態の表示用メッセージに関する記述である。「com.cij.other−error」は、ユーティリティフィルタ57または印刷フィルタ56がステータス格納部55に格納するその他のエラー状態を示すステータスであり、「エラーが発生しました。」はその他のエラー状態に対応する表示用メッセージである。
ユーティリティフィルタ57や印刷フィルタ56は、プリンタ4から取得したステータスに基づきこれらのエラー状態を示すステータスをステータス格納部55に格納する。一方、ジョブ表示部53は、これらのエラー状態を示すステータスを用いてジョブ管理部51に対応する表示用メッセージを問い合わせる。ジョブ管理部51は、問い合わせを受けたエラー状態の表示用メッセージの記述がPPDファイル54にあれば、それをジョブ表示部53に返す。一方、エラー状態の表示用メッセージの記述がPPDファイル54になければ、ないことを示す値をジョブ表示部53に返す。
以上説明したように、実施形態1によれば、クライアントPC2で動作するユーティリティ68は、サーバPC1に接続されたプリンタ4やサーバPC1の印刷処理の設定状態をサーバPC1から取得できる。図9、図10のように、本実施形態では、その取得において、クライアントPC2が特殊設定取得ジョブをサーバPC1に送信し、サーバPC1はプリンタ4或いはプリンタドライバの設定状態をステータス格納部55に格納することで、クライアントPC2に設定状態を取得させることができる。
また、上記のようなクライアントPC2によるジョブの送信、サーバPC1による設定状態のステータス格納部55への格納は、図15において説明したように、印刷ジョブの送信による、プリンタ4の動作状態の通知にも用いられる。
よって、実施形態1によれば、印刷時におけるプリンタの動作状態の通知と共通の構成により、サーバPC1のプリンタドライバ或いはプリンタ4の設定状態を、クライアントPC2に通知することができる。そのため、クライアントPC2とサーバPC1において、プリンタ4の動作状態の通知とは異なる、設定状態の通信のための構成がなくても、当該設定状態を適切に通信することができる。
よって、ネットワークに複数台のクライアントPC2が接続され、他のクライアントPCで動作するユーティリティ68からこれらの設定が変更されても、ユーティリティ68は、最後に設定された有効な設定状態をサーバPC1から取得して各種設定画面に反映することができる。
このように、実施形態1では、サーバ装置の印刷環境の設定状態を、適切なタイミングで、サーバ装置とクライアント装置との間で同期させる。換言すれば、サーバ装置とクライアント装置との間で、印刷環境の設定状態を共有する。
このような構成により、ユーザは、クライアントPC2において、サーバPC1の印刷環境として、インク切れや用紙切れ等のエラーの有無や、エラーが発生し得る状況を事前に確認することができるので、その状況に適した最適な印刷を実行することができる。
尚、サーバPC1のOS、クライアントPC2のOSによるステータスのコピー処理は、上述した図10のS407、図14のS801、図15のS906のタイミングで行う場合に限らない。例えば、サーバPC1のOSがステータス格納部55に格納された情報をクライアントPC2に定期的に送信してもよい。或いは、サーバPC1のOSがステータス格納部55を監視し、更新があった場合に、クライアントPC2に更新後の内容を通知してもよい。
また、クライアントPC2による設定取得ジョブの発行は、ユーティリティ68の起動時に限らず、例えば、ユーティリティ68の画面に対するユーザの指示があった場合に、設定取得ジョブが発行されてもよい。
<実施形態2>
実施形態1では、サーバPC1のユーティリティフィルタ57は、ジョブ管理部51から特殊設定ジョブが送信されるとインク節約設定の設定状態をステータス格納部55に格納する。また、実施形態1では、サーバPC1のユーティリティフィルタ57は、ジョブ管理部51からカートリッジ設定ジョブが送信されるとカートリッジ設定の設定状態をステータス格納部55に格納する。
これに対して、実施形態2では、サーバPC1のユーティリティフィルタ57が、ジョブ管理部51から特殊設定取得ジョブが送信されたときもインク節約設定の設定状態をステータス格納部55に格納する構成について説明する。また、実施形態2では、サーバPC1のユーティリティフィルタ57が、ジョブ管理部51からカートリッジ設定取得ジョブが送信されたときもカートリッジ設定の設定状態をステータス格納部55に格納する構成について説明する。
尚、実施形態2において、印刷システムの全体構成、ユーティリティの操作ウインドウ、処理中のダイアログ、ジョブ表示部のウインドウ、PPDファイルのユーティリティ設定記述部分については、実施形態1と同様であるので省略する。また、実施形態2において、ユーティリティの特殊設定処理、特殊設定取得処理、カートリッジ設定処理、カートリッジ設定取得処理、ユーティリティフィルタの特殊設定処理、カートリッジ設定処理、印刷フィルタの印刷処理、出力データ生成処理のフローについても実施形態1と同様であるので省略する。
図18はサーバPC1の特殊設定取得処理を示すフローチャートである。尚、図18に示すフローチャートに示す処理に対応するプログラムがサーバPC1のROMに格納されており、サーバPC1のCPUがRAM上でこのプログラムを実行することで、図18に示す処理が実現される。
ユーティリティフィルタ57は、サーバPC1のジョブ管理部51から特殊設定取得ジョブが送信されると、この特殊設定取得処理を実行する。S2000で、ユーティリティフィルタ57は、この特殊設定取得処理を開始する。S2001で、ユーティリティフィルタ57は、プリンタ4のステータスを取得できるか否かを判定する。ステータスを取得できないと判定する場合(S2001でNO)、S2002に進み、ユーティリティフィルタ57は、PPDファイル54の自動電源オン設定及び自動電源オフ設定を含む自動電源の設定値を検索する。PPDファイル54の検索は、ユーティリティフィルタ57が各種機能名称の設定値をジョブ管理部51に問い合わせることによって行われる。ジョブ管理部51は、問い合わせを受けた機能名称の設定値の記述がPPDファイル54にあれば、その設定値をユーティリティフィルタ57に返す。一方、ジョブ管理部51は、その設定値の記述がPPDファイル54になければ、ないことを示す値をユーティリティフィルタ57に返す。
S2003で、ユーティリティフィルタ57は、検索結果に基づき、自動電源オン設定及び自動電源オフ設定を含む自動電源の設定値がPPDファイル54にあるか否かを判定する。設定値がないと判定する場合(S2003でYES)、S2007に進む。このとき、ステータス格納部55の自動電源オン設定及び自動電源オフ設定の設定状態は更新されない。
一方、設定値があると判定する場合(S2003でNO)、S2004に進む。S2004で、ユーティリティフィルタ57は、自動電源オン設定及び自動電源オフ設定を含む自動電源の設定値をPPDファイル54から取得して、S2006進む。S2006で、ユーティリティフィルタ57は、PPDファイル54から取得した設定値に基づき、ステータス格納部55の自動電源オン設定及び自動電源オフ設定を含む自動電源の設定状態を更新する。ステータス格納部55にこれらの設定状態がなければ、ユーティリティフィルタ57は、新たにこれらの設定状態をステータス格納部55に格納する。一方、ステータス格納部55に既にこれらの設定状態があれば、ユーティリティフィルタ57は、これらの設定状態を一旦削除してから新たにこれらの設定状態をステータス格納部55に格納する。そして、S2007に進む。
一方、ステータスを取得できると判定する場合(S2001でYES)、S2005に進む。S2005で、ユーティリティフィルタ57は、プリンタ4から自動電源オン設定及び自動電源オフ設定を含む自動電源の設定状態を取得して、S2006に進む。S2006で、ユーティリティフィルタ57は、プリンタ4から取得した設定状態に基づき、ステータス格納部55の自動電源オン設定及び自動電源オフ設定を含む自動電源の設定状態を更新する。ステータス格納部55にこれらの設定状態がなければ、ユーティリティフィルタ57は、新たにこれらの設定状態をステータス格納部55に格納する。一方、ステータス格納部55に既にこれらの設定状態があれば、ユーティリティフィルタ57は、これらの設定状態を一旦削除してから新たにこれらの設定状態をステータス格納部55に格納する。そして、S2007に進む。
S2007で、ユーティリティフィルタ57は、PPDファイル54のインク節約設定の設定値を検索する。S2008で、ユーティリティ68は、検索結果に基づき、インク節約設定の設定値がPPDファイル54にあるか否かを判定する。設定値がないと判定する場合(S2008でNO)、S2011に進み、ユーティリティフィルタ57は、処理を終了する。このとき、ステータス格納部55のインク節約設定の設定状態は更新されない。
一方、設定値があると判定する場合(S2008でYES)、ユーティリティフィルタ57は、S2009に進む。S2009で、ユーティリティフィルタ57は、インク節約設定の設定値をPPDファイル54から取得する。S2010で、ユーティリティフィルタ57は、PPDファイル54から取得した設定値に基づき、ステータス格納部55のインク節約設定の設定状態を更新する。ステータス格納部55にインク節約設定の設定状態がなければ、ユーティリティフィルタ57は、新たに設定状態をステータス格納部55に格納する。一方、ステータス格納部55に既にインク節約設定の設定状態があれば、ユーティリティフィルタ57は、その設定状態を一旦削除してから新たに設定状態をステータス格納部55に格納する。
そして、S2011で、サーバPC1のOSは、クライアントPC2のOSと連携し、サーバPC1のステータス格納部55に格納されている設定状態を、当該特殊設定取得ジョブを投入したクライアントPC2のステータス格納部65にコピーする。コピーされる設定状態には、自動電源の最新の設定状態と、インク節約の最新の設定状態が含まれる。
S2011の処理が実行されると、サーバPC1は、S2012に進み、ユーティリティフィルタ57は、処理を終了する。
実施形態2では、PPDファイル54にインク節約設定の設定値があれば、ユーティリティフィルタ57は、特殊設定処理だけでなく、この特殊設定取得処理でもステータス格納部55のインク節約設定の設定状態を更新する。よって、クライアントPC2のユーティリティ68が特殊設定画面103を表示するときに特殊設定取得ジョブを投入すると、この特殊設定取得処理においてステータス格納部55のインク節約設定の設定状態が更新される。
図19はサーバPC1のユーティリティフィルタ57のカートリッジ設定取得処理を示すフローチャートである。尚、図19に示すフローチャートに示す処理に対応するプログラムがサーバPC1のROMに格納されており、サーバPC1のCPUがRAM上でこのプログラムを実行することで、図18に示す処理が実現される。
ユーティリティフィルタ57は、サーバPC1のジョブ管理部51からカートリッジ設定取得ジョブが送信されると、このカートリッジ設定取得処理を実行する。S2100で、ユーティリティフィルタ57は、カートリッジ設定取得処理を開始する。S2101で、ユーティリティフィルタ57は、PPDファイル54のカートリッジ設定の設定値を検索する。S2102で、ユーティリティ68は、検索結果に基づき、カートリッジ設定の設定値がPPDファイル54にあるか否かを判定する。
設定値がないと判定する場合(S2102でNO)、S2105に進み、ユーティリティフィルタ57は、処理を終了する。このとき、ステータス格納部55のカートリッジ設定の設定状態は更新されない。一方、設定値があると判定する場合(S2102でYES)、ユーティリティフィルタ57は、S2103に進む。S2103で、ユーティリティフィルタ57は、カートリッジ設定の設定値をPPDファイル54から取得する。S2104で、ユーティリティフィルタ57は、PPDファイル54から取得した設定値に基づき、ステータス格納部55のカートリッジ設定の設定状態を更新する。ステータス格納部55にカートリッジ設定の設定状態がなければ、ユーティリティフィルタ57は、新たに設定状態をステータス格納部55に格納する。一方、ステータス格納部55に既にカートリッジ設定の設定状態があれば、ユーティリティフィルタ57は、その設定状態を一旦削除してから新たに設定状態をステータス格納部55に格納する。
そして、S2105で、サーバPC1のOSは、クライアントPC2のOSと連携し、サーバPC1のステータス格納部55に格納されている設定状態を、当該特殊設定取得ジョブを投入したクライアントPC2のステータス格納部65にコピーする。
S2105の処理が実行されると、サーバPC1は、S2106において処理を終了する。
実施形態2では、PPDファイル54にカートリッジ設定の設定値があれば、ユーティリティフィルタ57は、カートリッジ設定処理だけでなく、このカートリッジ設定取得処理でもステータス格納部55のカートリッジ設定の設定状態を更新する。よって、クライアントPC2のユーティリティ68がカートリッジ設定画面110を表示するときにカートリッジ設定取得ジョブを投入すると、このカートリッジ設定取得処理においてステータス格納部55のカートリッジ設定の設定状態が更新される。
以上説明したように、実施形態2によれば、クライアントPC2で動作するユーティリティ68がサーバPC1に接続されたプリンタ4やサーバPC1の印刷環境を設定するときだけでなく、これらの設定状態を取得するときにもステータス格納部55のこれらの設定状態が更新される。よって、設定した後に、これらの設定状態がジョブ管理部51によって削除されることがあっても、ユーティリティ68は、各種設定画面を表示するときに設定状態を取得して設定画面に反映することができる。
<実施形態3>
実施形態1及び2では、クライアントPC2のユーティリティ68は、各種設定取得ジョブを投入することにより、サーバPC1に接続されたプリンタ4やサーバPC1の印刷処理の設定状態を取得して画面に表示している。
これに対して、実施形態3では、クライアントPC2の印刷設定制御部67が、実施形態1、実施形態2と同様にジョブを投入することにより、サーバPC1に接続されたプリンタ4に印刷を要求するときに指定可能な設定を取得して、印刷設定ダイアログに表示する構成について説明する。
尚、実施形態3において、印刷システムの全体構成、ジョブ表示部のウインドウについては、実施形態1と同様であるので省略する。
図20は、クライアントPC2の印刷設定制御部67の印刷設定ダイアログ500を示す図である。
ユーザがクライアントPC2上の印刷アプリケーション66で作成したデータを印刷しようとすると、印刷設定制御部67は、印刷設定ダイアログ500を表示して、ユーザに各種印刷設定を促す。ユーザは、プリントボタン501により印刷ジョブをジョブ管理部61に投入することができる。また、キャンセルボタン502により印刷をキャンセルして印刷設定ダイアログ500を閉じることができる。
また、ユーザは、用紙サイズ設定ポップアップメニュー503により、印刷時に使用する用紙のサイズを設定できる。用紙サイズ設定ポップアップメニュー503の項目には、A4、A5、B5、L版、はがきがあり、これらの何れかを設定できる。印刷設定ダイアログ500を開いたときの初期状態ではA4が設定されている。
また、ユーザは、用紙の種類設定ポップアップメニュー504により、印刷時に使用する用紙の種類を設定できる。用紙の種類設定ポップアップメニュー504の項目には、普通紙、写真用紙、はがきがあり、これらの何れかを設定できる。印刷設定ダイアログ500を開いたときの初期状態では普通紙が設定されている。
また、ユーザは、給紙方法設定ポップアップメニュー505により、印刷時に使用する給紙用のカセットを設定できる。本実施形態では、例えば、2段のカセットを装着可能なプリンタ4を想定している。初期状態ではプリンタ4に1段のカセットが装着されており、更にもう1段のカセットを追加して装着可能である。プリンタ4に追加のカセットが装着されていなければ、給紙方法設定ポップアップメニュー505の項目はカセット1のみになる。プリンタ4に追加のカセットが装着されていれば、給紙方法設定ポップアップメニューの項目にはカセット1、カセット2があり、これらの何れかを設定できる。プリンタ4に追加のカセットが装着されているか否かに関わらず、印刷設定ダイアログ500を開いたときの初期状態ではカセット1が設定されている。
印刷設定制御部67は、印刷設定ダイアログ500を表示するとき、給紙方法設定ポップアップメニュー505の項目にプリンタ4で現在指定可能な給紙用のカセットを表示することにより、ユーザに現在のカセット装着状態を示す。このとき、印刷設定制御部67は、カセット装着状態取得ジョブをジョブ管理部61に投入する。カセット装着状態取得ジョブは、ユーティリティ68が投入する設定ジョブや設定取得ジョブと同様に処理され、サーバPC1のジョブ管理部51に送信される。
サーバPC1のジョブ管理部51は、カセット装着状態取得ジョブを印刷キュー62から取り出すとユーティリティフィルタ57に送信し、その後、ユーティリティフィルタ57が処理する。この処理の詳細については後述する。
印刷設定制御部67は、ジョブ投入後、カセット装着状態の取得が完了すると、取得した装着状態を印刷設定ダイアログ500上の給紙方法設定ポップアップメニュー505の項目に反映する。カセット装着状態を取得できなければ、初期状態としてカセット1のみを給紙方法設定ポップアップメニュー505の項目に表示する。
図21は印刷設定制御部67が印刷設定ダイアログ500の表示に伴い、カセット装着状態取得ジョブを投入したときのジョブ表示ウインドウ300である。ジョブ表示領域304には、カセット装着状態取得ジョブが処理中の状態で表示され、このとき、印刷設定制御部67が投入したジョブの名称「カセット装着状態の取得」が表示される。
図22はクライアントPC2の印刷設定制御部67のカセット装着状態取得処理を示すフローチャートである。尚、図22に示すフローチャートに示す処理に対応するプログラムがクライアントPC2のROMに格納されており、クライアントPC2のCPUがRAM上でこのプログラムを実行することで、図22に示す処理が実現される。
印刷設定制御部67は、印刷設定ダイアログ500を表示する前に、このカセット装着状態取得処理を実行し、取得したカセット装着状態を給紙方法設定ポップアップメニュー505に反映する。S3000で、印刷設定制御部67は、このカセット装着状態取得処理を開始する。S3001で、印刷設定制御部67は、カセット装着状態取得ジョブをジョブ管理部61に投入する。S3002で、印刷設定制御部67は、ジョブ管理部61を介してステータス格納部65のステータスを取得する。ステータスの取得は、印刷設定制御部67がジョブ管理部61に問い合わせ、ジョブ管理部61がステータス格納部65のステータスを印刷設定制御部67に返すことによって行われる。
S3003で、印刷設定制御部67は、取得したステータスにカセット装着状態があるか否かを判定する。カセット装着状態があると判定する場合(S3003でYES)、S3004に進み、印刷設定制御部67は、ステータスを解析してカセット装着状態を取得し、S3005に進む。一方、カセット装着状態がないと判定する場合(S3003でNO)、そのままS3005に進む。S3005で、印刷設定制御部67は、自身が投入したジョブの処理状態をジョブ管理部61に問い合わせて取得する。S3006で、印刷設定制御部67は、取得したジョブの処理状態に基づきカセット装着状態取得ジョブが完了したか否かを判定する。完了していないと判定する場合(S3006でNO)、S3002に戻り、印刷設定制御部67は、再度、ステータス格納部65のステータスをジョブ管理部61から取得する。一方、完了したと判定する場合(S3006でYES)、S3007に進む。
S3007で、印刷設定制御部67は、自身の投入したカセット装着状態取得ジョブの処理が完了するまでに、OSによってコピーされた、サーバPC1における最新のカセット装着状態を取得したか否かを判定する。カセット装着状態を取得していないと判定する場合(S3007でNO)、S3008に進む。S3008で、印刷設定制御部67は、内部に保持するカセット装着の初期状態を取得して、S3009に進み、処理を終了する。一方、カセット装着状態を取得したと判定する場合(S3007でNO)、S3009に進む。
S3009では、S3004またはS3008で取得されたカセット装着状態を、印刷設定ダイアログ500における「給紙方法」に反映させる。そして、その印刷設定ダイアログを、クライアントPC2が備える、またはクライアントPC2に接続されている表示装置に表示させる。
S3009の表示制御処理が実行されると、S3010において処理を終了する。
図23はサーバPC1のカセット装着状態取得処理を示すフローチャートである。尚、図23に示すフローチャートに示す処理に対応するプログラムがサーバPC1のROMに格納されており、サーバPC1のCPUがRAM上でこのプログラムを実行することで、図23に示す処理が実現される。
サーバPC1のユーティリティフィルタ57は、サーバPC1のジョブ管理部51からカセット装着状態取得ジョブが送信されると、このカセット装着状態取得処理を実行する。S3100で、ユーティリティフィルタ57は、このカセット装着状態取得処理を開始する。S3101で、ユーティリティフィルタ57は、プリンタ4のステータスを取得できるか否かを判定する。ステータスを取得できないと判定する場合(S3101でNO)、S3102に進み、ユーティリティフィルタ57は、PPDファイル54の各カセット装着状態を検索する。PPDファイル54の検索は、ユーティリティフィルタ57が各カセット名称の装着状態をジョブ管理部51に問い合わせることによって行われる。ジョブ管理部51は問い合わせを受けたカセット名称の装着状態の記述がPPDファイル54にあれば、その装着状態をユーティリティフィルタ57に返す。一方、ジョブ管理部51は、装着状態の記述がPPDファイル54になければ、ないことを示す値をユーティリティフィルタ57に返す。
S3103で、ユーティリティフィルタ57は、検索結果に基づき、カセット装着状態がPPDファイル54にあるか否かを判定する。カセット装着状態がないと判定する場合(S3103でNO)、S3108に進み、ユーティリティフィルタ57は、処理を終了する。このとき、ステータス格納部55のカセット装着状態は更新されない。
一方、カセット装着状態があると判定する場合(S3130でYES)、S3104に進む。S3104で、ユーティリティフィルタ57は、カセット装着状態をPPDファイル54から取得する。そして、S3107に進み、ユーティリティフィルタ57は、PPDファイル54から取得した装着状態に基づき、ステータス格納部55のカセット装着状態を更新する。ステータス格納部55にカセット装着状態がなければ、ユーティリティフィルタ57は、新たに装着状態をステータス格納部55に格納する。一方、ステータス格納部55に既にカセット装着状態があれば、ユーティリティフィルタ57は、そのカセット装着状態を一旦削除してから新たに装着状態をステータス格納部55に格納する。
一方、ステータスを取得できると判定する場合(S3101でYES)、S3105に進む。S3105で、ユーティリティフィルタ57は、プリンタ4からカセット装着状態を取得して、S3106に進む。S3106で、ユーティリティフィルタ57は、プリンタ4から取得したカセット装着状態に基づき、PPDファイル54に各カセット装着状態を追記する。PPDファイルに追記されたカセット装着状態は、その後、ユーティリティフィルタ57が、再度、カセット装着状態をPPDファイル54から取得するときにプリンタ4からステータスを取得できなければ参照され、カセット装着状態として使用される。
S3107で、ユーティリティフィルタ57は、プリンタ4から取得した装着状態に基づき、ステータス格納部55のカセット装着状態を更新する。ステータス格納部55にカセット装着状態がなければ、ユーティリティフィルタ57は、新たに装着状態をステータス格納部55に格納する。一方、ステータス格納部55に既にカセット装着状態があれば、ユーティリティフィルタ57は、そのカセット装着状態を一旦削除してから新たに装着状態をステータス格納部55に格納する。
そして、S3108で、サーバPC1のOSは、クライアントPC2のOSと連携し、サーバPC1のステータス格納部55に格納されている設定状態を、当該特殊設定取得ジョブを投入したクライアントPC2のステータス格納部65にコピーする。
S3108の処理が実行されるとサーバPC1は、S3109において処理を終了する。
図24はPPDファイル54のカセット装着状態に関する記述部分を示す図である。
文字列600は、カセット装着状態に関する記述である。ユーティリティフィルタ57がカセット装着状態をジョブ管理部51に通知すると、ジョブ管理部51はPPDファイル54に文字列600のように追記する。本実施形態では、PPDファイル54に追記する各カセット名称を「PaperFeeder1」、「PaperFeeder2」とし、装着状態であれば「Yes」、未装着状態であれば「No」としている。ユーティリティフィルタ57が、各カセット名称と装着状態をジョブ管理部51に通知すると、ジョブ管理部51はPPDファイル54に図のように追記する。一方、ユーティリティフィルタ57が各カセット名称を用いてジョブ管理部51に装着状態を問い合わせると、ジョブ管理部51は問い合わせを受けたカセット名称の記述があれば、その装着状態をユーティリティフィルタ57に返す。一方、ジョブ管理部51は、カセット名称の記述がなければ、ないことを示す値をユーティリティフィルタ57に返す。
以上説明したように、実施形態3によれば、クライアントPC2で動作する印刷設定制御部67は、サーバPC1に接続されているプリンタ4のカセット装着状態をサーバPC1から取得して印刷設定ダイアログ500に反映することができる。
尚、以上の実施形態では、設定状態や動作状態が取得される所定の装置として、印刷装置を例に説明したが、これに限らない。例えば、原稿を読み取るスキャナや、テレビ等の表示装置等、各種の装置に本実施形態の処理を適用することができる。
尚、以上の実施形態の機能は以下の構成によっても実現することができる。つまり、本実施形態の処理を行うためのプログラムコードをシステムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)がプログラムコードを実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することとなり、またそのプログラムコードを記憶した記憶媒体も本実施形態の機能を実現することになる。
また、本実施形態の機能を実現するためのプログラムコードを、1つのコンピュータ(CPU、MPU)で実行する場合であってもよいし、複数のコンピュータが協働することによって実行する場合であってもよい。さらに、プログラムコードをコンピュータが実行する場合であってもよいし、プログラムコードの機能を実現するための回路等のハードウェアを設けてもよい。またはプログラムコードの一部をハードウェアで実現し、残りの部分をコンピュータが実行する場合であってもよい。