以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
<実施形態1>
図1は本実施形態のクライアントサーバ印刷システムの全体構成を示す図である。クライアントサーバ印刷システムは、クライアントPC100、サーバPC120、プリンタ140を含む。クライアントPC100とサーバPC120とはネットワークに接続され、相互に通信可能である。ここではネットワークとしてLAN(Local Area Network)を想定しているが、WAN(Wide Area Network)であっても構わない。また、ネットワークの接続形態として有線無線を問わず、これらが混在していても構わない。サーバPC120はプリンタ140と接続しており、プリンタ140を制御する。ここでは、プリンタ140はネットワーク印刷をサポートしておらず、通信インタフェースとしてUSB(Universal Serial Bus)を想定している。なお、ここではネットワーク印刷をサポートしていないプリンタを例に挙げているが、ネットワーク印刷をサポートしているものの、USBなどの通信インタフェースのみを介して接続されている環境下のプリンタであってもよい。
サーバPC120とクライアントPC100はパーソナルコンピュータであり、OS(オペレーションシステム)としてMac OS(登録商標) Xを想定している。OSは図1には示していないが、PCの資源、たとえばPC内の各ブロックはOSにより管理されている。ここで、PCは一般的な情報処理装置が備えるハードウェア構成を有している。具体的には、CPU、ROM、ハードディスク、RAM,各種デバイスコントローラを備える。CPUは、プログラム用ROMに記憶された、或いはハードディスクからRAMにロードされたOSやアプリケーション等のプログラムを実行する。後述する各フローチャートの処理はこのプログラムの実行により実現できる。また、RAMは、CPUの主メモリ、ワークエリア等としても機能する。また、キーボード、ディスプレイ、各種データを記憶するハードディスク(HD)やフレキシブルディスク(FD)等におけるデータアクセスを制御するディスクコントローラ(DKC)等も備える。また、クライアントPCとサーバPCのネットワークを介した信号の交換や接続されたプリンタとの信号の交換を制御する通信制御部等も備える。
次に、クライアントPC100のソフトウエア構成を図1を参照して説明する。クライアントPC100は印刷処理部101、印刷キュー102、ジョブ表示部103、PPDファイル104、アプリケーション105、印刷設定制御部106、ユーティリティ107、プリンタドライバ108、ネットワーク制御部113を有する。プリンタドライバ108は設定画面拡張部109、印刷フィルタ110、ユーティリティフィルタ111、プロファイル格納部112を有する。各ブロックの役割や処理などについては後述する。
サーバPC120はクライアントPC100と同様の構成を備えている。すなわち、サーバPC120は印刷処理部121、印刷キュー122、ジョブ表示部123、PPDファイル124、アプリケーション125、印刷設定制御部126、ユーティリティ127、プリンタドライバ128、ネットワーク制御部133を有する。プリンタドライバ128は設定画面拡張部129、印刷フィルタ130、ユーティリティフィルタ131、プロファイル格納部132を有する。また、サーバPC120はさらにUSB制御部134を有する。
サーバPC120とクライアントPC100とはネットワーク制御部133、113を介して相互に通信可能である。またサーバPC120はUSB制御部134を介してプリンタ140に接続している。
プリンタ140はUSB制御部141、動作制御部142、印刷部143、プロファイル情報格納部144、プロファイル格納部145を有する。
本実施形態ではOSが各PCの印刷処理部101、121を制御しており、印刷キュー102、122、ジョブ表示部103、123、印刷設定制御部106、126はOSによって提供される。OSによって制御される印刷処理部101、121はPCに接続されているプリンタをネットワーク上の他のPCと共有する機能を備えている。この機能を有効にすることにより、あるPC(サーバPC)接続されているプリンタをネットワーク上の他のPC(クライアントPC)からも使用プリンタとして選択することが可能になる。この機能により、プリンタがネットワーク印刷をサポートしていなくても、ユーザはプリンタが接続されているPCをサーバPCとし、複数台のクライアントPCでそのプリンタを利用することが可能になる。
OSによって制御される印刷処理部は、PC内のローカルにおける印刷システムともいえる。印刷処理部は後述するように各種の制御を行なう。印刷キューは、印刷ジョブをキューイングする処理を行なう。ジョブ表示部はジョブの状態を示すジョブ表示画面をディスプレイに表示する処理を行なう。印刷設定制御部は、アプリケーションが作成したデータを印刷する際の印刷設定を行なう印刷設定画面をディスプレイに表示して、ユーザからの指定に応じた印刷設定を行なう。詳細は後述する。
サーバPC120には接続されたプリンタ140に対応したプリンタドライバ128とPPDファイル124とがインストールされている。サーバPC120のPPDファイル124にはプリンタ140がサポートする用紙サイズや用紙種類、またそれらのデフォルト値が記述されている。サーバPC120においてユーザがアプリケーション125で作成したデータを印刷しようとする。すると、印刷設定制御部126は印刷処理部121を介してPPDファイル124からプリンタ140のサポートする用紙サイズと用紙種類を取得して印刷設定画面上に表示し、ユーザに設定を促す。そしてユーザが用紙サイズと用紙種類を指定して印刷を要求すると、その要求は印刷ジョブとしてアプリケーション125から印刷処理部121に渡される。
印刷処理部121は印刷ジョブを印刷キュー122で管理しており、順次取り出して処理する。印刷処理部121は印刷キュー122から印刷ジョブを取り出すと印刷フィルタ130に送る。印刷フィルタ130はプリンタ140に応じた印刷データを生成して、USB制御部134を経てプリンタ140に送信する。
サーバPC120においてユーザはユーティリティ127でプリンタのメンテナンスを行うこともできる。ユーティリティ127はアプリケーションの一種であり、プリンタのメンテナンスを行なうためのソフトウエアモジュールである。ユーザがユーティリティ127でプリンタ140のメンテナンスを要求すると、その要求はメンテナンスジョブとして印刷処理部121に渡され、印刷ジョブと同様に印刷キュー122で管理される。印刷処理部121はメンテナンスジョブを印刷キュー122から取り出すとユーティリティフィルタ131に送る。ユーティリティフィルタ131はプリンタ140をメンテナンスするための制御コマンドを生成して、USB制御部134を経てプリンタ140に送信する。
プリンタ140はUSB制御部141を介して印刷データや制御コマンドをサーバPC120から受信する。動作制御部142は、サーバPC120から受信した印刷データに基づき印刷部143を制御して用紙に印字したり、制御コマンドに基づきプリンタ140のメンテナンスを実行したりする。プリンタ140のプロファイル格納部145にはPCから印刷を実行するときの色空間の変換で使用するICCプロファイルが格納されている。また、プロファイル情報格納部144にはプロファイル格納部145に格納されているICCプロファイルの情報(以下、プリンタプロファイル情報と称す)が格納されている。
本実施形態ではプリンタ140のファームウェアのアップデートにより、新しいICCプロファイルがプリンタ140のプロファイル格納部145に追加されて、プロファイル情報格納部144のプリンタプロファイル情報が更新されることを想定している。プリンタ140が直接接続されているサーバPC120はユーザによるユーティリティ127を介した指示によって、プリンタ140に追加されたICCプロファイル(以下、追加ICCプロファイルと称す)を取得して使用できる。すなわち、サーバPCのユーティリティ127は、USB制御部134を介して直接プリンタ140から追加ICCプロファイルを取得してプリンタドライバ128に組み込む。そしてさらにサーバPCのユーティリティ127は、組み込んだプロファイルの情報をPPDファイル124に追記することによって、OSのカラ―マネージメントシステムが追加ICCプロファイルを色空間の変換の際に使用できるようになる。
クライアントPC100においてもサーバPC120と同様に印刷やメンテナンスを行うことができる。クライアントPC100にもサーバPC120に接続されているプリンタ140に対応したプリンタドライバ108がインストールされている。ただし、クライアントPC100の印刷フィルタ110とユーティリティフィルタ111は動作しない。クライアントPC100は直接プリンタ140と接続されていないからである。また、クライアントPC100のPPDファイル104は、サーバPC120に接続されているプリンタ140がクライアントPC100と共有されるとOSによってサーバPC120のPPDファイル124からコピーされる。
すなわち、PPDファイル104は共有が開始された場合に、その時点のサーバPC120のPPDファイル124がクライアントPC100のOSによってクライアントPC100にコピーされることになる。また、クライアントPC100とサーバPC120とが共有状態である間はサーバPC120のPPDファイル124が更新されたとしても、更新後のPPDファイル124はOSによってクライアントPC100にコピーされない。つまり、クライアントPC100においては、サーバPC120と共有が開始された時点のままのPPDファイル104が使われることになる。なお、本実施例では、クライアントPC100のOSがコピーすると記載したが、サーバPC120のOSがPPDファイルをコピーして、クライアントPCに送信しても良い。
ここで、本実施例の課題が生じる一例について説明する。クライアントPC100に、サーバPCに接続されたプリンタに対応するプリンタドライバがインストールされているとする。しかし、クライアントPC100では、サーバPCに接続されたプリンタに対応するプリントキューは未作成とする。この状況で、サーバPC120に接続されたプリンタの機能や用紙の情報が更新された場合、サーバPCのプリンタドライバとPPDファイルは、上記プリンタの更新に従って更新される。そして、サーバPCのプリンタドライバとPPDファイルが更新された後に、クライアントPCにおいて、サーバPCに接続されたプリンタに対応するプリントキューが作成された場合、更新後のPPDファイルがクライアントPCにコピーされる。一方、既にクライアントPCにインストールされているサーバPCに接続されたプリンタに対応するプリンタドライバに対しては更新処理が実行されない。その結果、クライアントPCにおいて、プリンタドライバとPPDファイルの間で不整合が生じることとなる。不整合の具体例については後述する。
クライアントPC100においてユーザがアプリケーション105で作成したデータを印刷しようとする。すると、印刷設定制御部106は印刷処理部101を介してクライアントPCのPPDファイル104からプリンタ140のサポートする用紙サイズと用紙種類を取得して印刷設定画面上に表示し、ユーザに設定を促す。そしてユーザが用紙サイズと用紙種類を指定して印刷を要求すると、その要求は印刷ジョブとしてアプリケーション105から印刷処理部101に渡される。クライアントPCの印刷処理部101は印刷ジョブを印刷キュー102で管理しており、順次取り出して処理する。クライアントPCの印刷処理部101は印刷キュー102から印刷ジョブを取り出すと、その印刷ジョブをネットワーク制御部113を経てサーバPCの印刷処理部121に送る。サーバPC120では印刷処理部121がネットワーク制御部133を介してクライアントPC100からの印刷ジョブを受け取る。サーバPCの印刷処理部121はクライアントPC100から送られた印刷ジョブを印刷キュー122で管理しており、順次取り出して処理する。サーバPCの印刷処理部121は印刷キュー122から印刷ジョブを取り出すと印刷フィルタ130に送る。印刷フィルタ130は印刷データを生成してUSB制御部134を経てプリンタ140に送信する。
クライアントPCのユーティリティ107でユーザがメンテナンスを要求すると、その要求はメンテナンスジョブとしてクライアントPCの印刷処理部101に渡され、印刷ジョブと同様に処理されサーバPCの印刷処理部121に送られる。サーバPCの印刷処理部121はメンテナンスジョブを印刷キュー122から取り出すとユーティリティフィルタ131に送る。サーバPCのユーティリティフィルタ131はプリンタのメンテナンスを実行するための制御コマンドを生成して、USB制御部134を経てプリンタ140に送信する。
クライアントPC100はプリンタ140と直接接続されていないので、クライアントPCのユーティリティ107はサーバPC120のようにUSB制御部134を介してプリンタ140からICCプロファイルを取得できない。その一方で、サーバPCがプリンタ140から取得した追加ICCプロファイルの情報がサーバPCのPPDファイル124に追記されているとする。この状態においてサーバPCとクライアントPCとがプリンタ140の共有の開始をすると、サーバPC120からコピーされたクライアントPCのPPDファイル104にも追加ICCプロファイルの情報が記載されることになる。しかし、クライアントPCのプリンタドライバ108には追加ICCプロファイルは組み込まれておらず、クライアントPCのPPDファイル104とクライアントPCのプリンタドライバ108との間で不整合が起こる。なお、不整合の具体例は図10を用いて後述する。
この不整合に起因してクライアントPCのOSでは、不整合が生じたことのエラーをジョブ表示部103によって表示される画面上でジョブが発生するごとに表示し続けてしまうことになる。このような状況を解消するために、本実施形態ではクライアントPCのユーティリティ107がクライアントPCのプリンタドライバ108の構成に合わせてクライアントPCのPPDファイル104のICCプロファイルの記述を更新する機能を備えている。これにより、クライアントPCのPPDファイル104とクライアントPCのプリンタドライバ108との間で不整合が解消されるので、エラー表示を表示し続けてしまうことを防止することができる。以下、具体的に説明する。
まず、図2〜図9を使ってサーバPC120において行なわれる印刷やメンテナンスの実行処理や、プリンタ140において追加されたICCプロファイルの取得について説明する。なお、以下で特に違いを説明をしない場合の処理については、クライアントPC100でも同様の処理が行なわれる。
図2は、サーバPC120にインストールされる初期状態のPPDファイル124の記述の一部とプリンタドライバ128のプロファイル格納部132を示す図である。
図2(a)はサーバPC120にインストールされる初期状態のPPDファイル124の記述の一部であり、プリンタ140がサポートする用紙サイズ、用紙種類、印刷時の色空間の変換で使用するプロファイルが記述されている。用紙サイズ記載部分200にはプリンタのサポートする用紙サイズが記述される。本実施形態のプリンタ140はA4、レター、2Lの用紙サイズをサポートしている。各行は用紙サイズの記述を表すメインKey、各用紙サイズを表すオプションKey、用紙サイズの表記で構成される。メインKeyは英語表記の情報であれば「*PageSize」、日本語表記の情報であれば「*ja.PageSize」である。オプションKeyは「A4」、「Letter」、「5x7」である。OSの制御する印刷設定制御部126は印刷処理部121を介してPPDファイル124からメインKeyとオプションKeyにより各用紙サイズの表記を取得して印刷設定画面に表示し、ユーザに用紙サイズの設定を促す。
用紙種類記載部分201にはプリンタ140がサポートする用紙種類が記述される。本実施形態のプリンタ140は普通紙、光沢フォトペーパー、マットフォトペーパーの用紙種類をサポートしている。各行は用紙種類の記述を表すメインKey、各用紙種類を表すオプションKey、用紙種類の表記で構成される。メインKeyは英語表記の情報であれば「*MediaType」、日本語表記の情報であれば「*ja.MediaType」である。オプションKeyは「Plain」、「GlossyPhoto」、「MattePhoto」である。OSの制御する印刷設定制御部126は印刷処理部121を介してPPDファイル124からメインKeyとオプションKeyにより各用紙種類の表記を取得して印刷設定画面に表示して、ユーザに用紙種類の設定を促す。
プロファイル記載部分202にはプリンタドライバ128がサポートするプロファイル情報(以下、ドライバプロファイル情報と称す)が記述される。本実施形態のプリンタドライバ128は初期状態で用紙種類が光沢フォトペーパーのときに使用可能なICCプロファイルと、その他の用紙種類のときに使用可能なデフォルトのICCプロファイルとをサポートしている。各行はICCプロファイルの記述を表すメインKey、カラーモデルKey、用紙種類Key、プロファイル説明、ICCプロファイルのパスで構成される。光沢フォトペーパーのICCプロファイルの情報のメインKeyは「*cupsICCProfile」、カラーモデルKeyは「RGB」、用紙種類Keyは光沢フォトペーパーを表す「GlossyPhoto」となっている。また、プロファイル説明は「Glossy Photo」となっており、ICCプロファイルのパスはプリンタドライバのプロファイル格納部132における格納先を示す。デフォルトのICCプロファイルの情報のメインKeyは「*cupsICCProfile」、カラーモデルKey、用紙種類Keyは省略されている。また、プロファイル説明は「Default」となっており、ICCプロファイルのパスはプリンタドライバのプロファイル格納部132における格納先を示す。OSの制御する印刷設定制御部126は印刷設定画面で設定されている用紙種類に対応するICCプロファイルをPPDファイル124に記述されたプロファイル格納部132から取得する。そして、取得したICCプロファイルOSのカラ―マネージメントシステムが行う色空間の変換の出力プロファイルとして設定する。
図2(b)はサーバPC120にインストールされるプリンタドライバ128のプロファイル格納部132の初期状態の構成である。プロファイル格納部132はプリンタドライバのインストール時にPPDファイル124に記述されたパス「/Library/Printers/IJDriver/Profiles」に作成される。本実施形態のプリンタドライバ128は初期状態で光沢フォトペーパー用のICCプロファイルである「GlossyPhoto.icc」とデフォルトプロファイルである「IJPrinter.icc」をプロファイル格納部132に保持する。
図3はOSの制御する印刷設定制御部126によって表示される印刷設定画面を示す図である。ユーザがアプリケーション125で作成したデータを印刷しようとすると、OSの制御する印刷設定制御部126は印刷設定画面300をサーバPC120のディスプレイに表示して、ユーザに各種印刷設定を促す。ユーザは部数設定テキストフィールド301によって印刷部数を指定できる。ユーザはページ設定ラジオボタン302によって全ページを印刷するか特定のページを印刷するかを指定できる。特定のページを印刷する場合、ユーザはページ範囲設定テキストフィールド303によって印刷するページを指定できる。ユーザは用紙サイズ設定ポップアップメニュー304によって印刷する用紙サイズを指定できる。本実施形態では図2(a)で説明したように、A4、レター、2Lの何れかを指定できる。ユーザは用紙種類設定ポップアップメニュー305によって印刷する用紙種類を指定できる。本実施形態では図2(a)で説明したように、普通紙、光沢フォトペーパー、マットフォトペーパーの何れかを指定できる。印刷設定制御部126は、ユーザによって指定された内容に基づいて印刷設定を行なう。
印刷設定制御部126は、用紙種類設定ポップアップメニュー305で選択された用紙種類に対応するICCプロファイルをPPDファイル124に記述されたプロファイル格納部132から取得する。そしてそのICCプロファイルをOSのカラ―マネージメントシステムが行う色空間の変換の出力プロファイルに設定する。光沢フォトペーパーが選択された場合は、PPDファイル124に記述された情報に基づき光沢フォトペーパー用のICCプロファイルである「GlossyPhoto.icc」を設定する。光沢フォトペーパー以外が選択された場合は、デフォルトのICCプロファイルである「IJPrinter.icc」を設定する。印刷設定制御部126が出力プロファイルを指定すると印刷実行時にOSのカラーマネージメントシステムによって色空間の変換処理が行われる。プリントボタン308を押下すると印刷設定制御部126はディスプレイに表示している印刷設定画面を閉じる。そして印刷設定制御部126は、アプリケーション125で作成したデータを図3の画面を用いてユーザによって指定された設定で印刷する要求を、印刷ジョブとして印刷処理部121に渡す。キャンセルボタン307を押下すると印刷設定制御部126はディスプレイに表示している印刷設定画面を閉じて印刷設定をキャンセルする。
また、印刷設定制御部126は図3に示す印刷設定画面をディスプレイ上に表示する際にプリンタドライバ128に含まれる設定画面拡張部129をロードする。設定画面拡張部129は、必要に応じて図3に示す印刷設定画面の拡張領域306にメッセージを表示する処理を行なう。設定画面拡張部129は印刷設定制御部126にロードされると、拡張領域306に必要に応じてメッセージを表示する。本実施形態では、サーバPCのプリンタドライバに含まれる設定画面拡張部129が、サーバPC120に接続されているプリンタ140にICCプロファイルが追加されていることを検知する例を説明する。設定画面拡張部129はサーバPC120に接続されているプリンタ140にICCプロファイルが追加されていることを検知すると、拡張領域306にICCプロファイルの取得を促すメッセージを表示する。また、クライアントPCのプリンタドライバに含まれる設定画面拡張部109がPPDファイルとプリンタドライバとの間で不整合が生じていることを検知すると、不整合の解消を促すメッセージを表示する。詳細については後述する。
図4は、OSの制御するジョブ表示部123がディスプレイ上に表示するジョブ表示画面を示す図である。ジョブ表示画面400のジョブ表示領域404には、印刷キュー122が保持する印刷ジョブの一覧が表示される。メンテナンスジョブは印刷ジョブとともに印刷キュー122に保持されるがジョブ表示領域には表示されない。ユーザは操作部などを介して必要に応じてジョブ表示画面400をディスプレイに表示することができる。また、ユーザはクローズボタン401によってジョブ表示画面400を閉じることができる。ユーザはジョブ削除ボタン402によってジョブ表示領域にて選択したジョブのキャンセルを印刷処理部101に要求できる。印刷処理部101はキャンセルの要求に応じて、そのジョブを印刷キュー122から取り除く。ステータス表示領域403には処理中の印刷ジョブの状態が表示される。図4はアプリケーションの一例としてテキスト編集用のアプリケーションであるテキストエディット(登録商標)から文書1の印刷ジョブが渡されたときの画面を示す。ジョブ表示領域404では処理中のジョブとして「文書1」の印刷ジョブがハイライト表示され「処理中」と表示される。ステータス表示領域403には文書1が印刷中であることを示すメッセージが表示される。
図5は、サーバPCのユーティリティ127の操作画面500を示す図である。ユーティリティ127はプリンタ140のメンテナンスを行なうためのソフトウエアモジュールである。ユーティリティ127はプリンタ140のメンテナンスとして、プリンタ140に装着されたヘッドのクリーニングの指示を行なうことができる。また、ユーティリティ127はプリンタ140から追加ICCプロファイルを取得してプリンタドライバ128に組み込むとともに、組み込んだプロファイルの情報をPPDファイル124に追記することができる。ユーザがユーティリティ127を起動すると、ユーティリティ127は操作画面500をディスプレイに表示する。ユーザはクローズボタン501により操作画面500を閉じてユーティリティを終了できる。また、ユーザは画面選択ポップアップメニュー502によりユーティリティの操作画面を切り替えることができる。ユーザが画面選択ポップアップメニュー502で「クリーニング」を選択するとユーティリティ127はクリーニング画面503を表示し、ユーザが「プロファイル取得」を選択するとユーティリティ127はプロファイル取得画面515を表示する。
図5(a)はクリーニング画面503が表示されている時のユーティリティ127の操作画面500を示す図である。ユーティリティ127は起動直後、クリーニング画面を表示する。クリーニング画面503における操作によって、ユーザはプリンタ140に装着されているヘッドのクリーニングを行うことができる。具体的には、ユーザは実行ボタン504を押下することによりプリンタのヘッドをクリーニングの指示を行なうことができる。実行ボタン504が押下されるとユーティリティ127はクリーニングの実行要求をメンテナンスジョブとして印刷処理部121に渡す。
図5(b)はプロファイル取得画面515が表示されている時のユーティリティ127の操作画面510を示す図である。プロファイル取得画面515における操作によってユーザはプリンタ140から追加ICCプロファイルを取得してプリンタドライバ128に組み込むとともに、組み込んだプロファイルの情報をPPDファイル124に追記することができる。具体的には、ユーザが実行ボタン516を押下すると、ユーティリティ127はUSB制御部を介して直接プリンタから、プリンタプロファイル情報格納部144に格納されているプリンタプロファイル情報を取得する。次にユーティリティ127は、印刷処理部121を介してPPDファイル124からドライバプロファイル情報を取得する。そして、ユーティリティ127は、プリンタプロファイル情報とドライバプロファイル情報とを比較してプリンタドライバ128のプロファイル格納部132に格納されていないICCプロファイルがプリンタ140にあるか否かを判定する。例えば、プリンタ140のファームウェアなどのバージョンアップがされた場合などに、ICCプロファイルを含む各種の機能モジュールが追加される場合がある。そこで、ユーティリティ127は、プリンタドライバ128のプロファイル格納部132に格納されていないICCプロファイルがプリンタ140にあるか否かをユーザの指示に応じて判定する。
プリンタドライバのプロファイル格納部132に格納されていないICCプロファイルがあると判定された場合、ユーティリティ127は次の処理を行なう。すなわち、ユーティリティ127は、プリンタのプロファイル格納部145に格納されている該当するICCプロファイルを取得してプリンタドライバのプロファイル格納部132に格納する。また、格納したICCプロファイルの情報をPPDファイル124に追記する。プリンタ140に格納されているICCプロファイルをプリンタドライバのプロファイル格納部132が全て格納していればユーティリティ127は何もしない。
図6はプリンタのプリンタプロファイル情報格納部144に格納されるプリンタプロファイル情報の詳細を示す図である。プリンタプロファイル情報は、各プロファイルの情報を示すデータを含んでいる。各データは特定の情報にアクセスするためのKeyと情報を格納するValueによって構成される。格納される各々の情報には固有なKeyが割り当てられ、ユーティリティ127はKeyに基づいてValueを参照することによって必要な情報を取得することができる。
図6(a)はプリンタが初期出荷状態のときのプリンタプロファイル情報を示す。本実施形態ではプリンタは初期出荷状態で光沢フォトペーパー用のICCプロファイルである「GlossyPhoto.icc」とデフォルトプロファイルである「IJPrinter.icc」をプロファイル格納部145に格納していることを想定している。プリンタプロファイル情報のプロファイル総数情報にはKeyである「num」とValueである「2」が含まれる。プリンタプロファイル情報の1番目のプロファイル情報にはKeyである「1」とValueである1番目のプロファイル情報が含まれる。1番目のプロファイル情報はICCプロファイルの対応用紙種類情報とICCプロファイルの名称情報で構成される。ICCプロファイルの対応用紙情報にはKeyである「MediaType」とValueである「Default」が含まれる。ICCプロファイルの名称情報にはKeyである「Name」とValueである「IJPrinter.icc」が含まれる。プリンタプロファイル情報の2番目のプロファイル情報にはKeyである「2」とValueである2番目のプロファイル情報が含まれる。2番目のプロファイル情報も同様にICCプロファイルの対応用紙種類情報とICCプロファイルの名称情報で構成され、ICCプロファイルの対応用紙情報にはKeyである「MediaType」とValueである「GlossyPhoto」が含まれる。ICCプロファイルの名称情報はKeyである「Name」とValueである「GlossyPhoto.icc」で構成される。
図6(b)はプリンタのファームウェアのアップデート(ファームアップデート)が行われた後のプロファイル情報格納部144に格納されているプリンタプロファイル情報を示す。本実施形態ではファームアップデートにより、プリンタ140にマットフォトペーパー用のICCプロファイルである「MattePhoto.icc」が追加されたとする。ファームアップデートにより、プリンタプロファイル情報のプロファイル総数情報の「Value」は「3」になる。また、3番目のプロファイル情報が追加される。3番目のプロファイル情報はKeyである「3」とValueである3番目のプロファイル情報で構成される。3番目のプロファイル情報のICCプロファイルの対応用紙情報にはKeyである「MediaType」とValueである「MattePhoto」が含まれる。ICCプロファイルの名称情報にはKeyである「Name」とValueである「MattePhoto.icc」が含まれる。
図7はプリンタ140のファームアップデートが行われた後に、サーバPC120の印刷設定制御部126が表示する印刷設定画面を示す図である。前述のように、印刷設定制御部126が印刷設定画面を開くときにプリンタドライバの設定画面拡張部129をロードする。すると、ロードされた設定画面拡張部129はUSB制御部134を介してプリンタ140からプリンタプロファイル情報を取得する。次に、設定画面拡張部129は印刷処理部121を介してPPDファイル124からドライバプロファイル情報を取得する。そして、設定画面拡張部129はプリンタプロファイル情報に含まれる各ICCプロファイルをプリンタドライバが保持しているか否かPPDファイル124を参照して判定する。保持していないICCプロファイルがあれば拡張領域306にアイコン710とメッセージ711とを表示する。本実施形態では設定画面拡張部129は「ユーティリティでプロファイルを取得できます。」というメッセージを表示して、ユーザにユーティリティ127でプロファイルの取得を実行するように促す。これを確認したユーザは、前述の図5(b)に示すようなユーティリティ127の画面からプロファイル取得の指示を行い、この指示に応じてユーティリティ127がUSB制御部134を介してプリンタ140から追加プロファイルを取得する処理を行なう。
図8はサーバPCのユーティリティ127のプロファイル取得のフローを示す図である。すなわち、図5(b)に示すユーティリティ画面においてユーザによって実行ボタン516が押下された場合の処理を示すフローである。なお、図8の処理はユーティリティ127によって処理が行なわれることになるが、ハードウェアの観点で見ると、RAMに読み出されていたユーティリティ127のプログラムをサーバPCのCPUが実行することによって図8の処理が実現されることになる。
ステップS801においてユーティリティ127は、印刷処理部121を介してPPDファイル124に含まれるドライバプロファイル情報を取得する。ステップS802においてユーティリティ127は、プリンタ140からプリンタプロファイル情報を取得する。ステップS803においてユーティリティ127は、ステップS802で取得したプリンタプロファイル情報に含まれるプロファイル総数を取得する。
続くステップS804〜S812でユーティリティ127は、プリンタプロファイル情報に含まれる各ICCプロファイルをプリンタドライバが保持しているか否かを判定する。保持していなければプリンタ140からICCプロファイルを取得してプリンタドライバに組み込むとともに、組み込んだプロファイルの情報をPPDファイル124に追記する処理を行なう。以下、具体的な処理を説明する。ステップS804でユーティリティ127は、変数Nに初期値として「1」を代入する。ステップS805でユーティリティ127は、プリンタプロファイル情報に含まれるN番目のICCプロファイルの名称を取得する。ステップS806でユーティリティ127は、N番目のICCプロファイルの名称と同じICCプロファイルがドライバプロファイル情報に存在するか否かを確認する。そしてステップS807に進み、ドライバプロファイル情報にあると判定すると、ステップS811に進む。
ステップS807においてドライバプロファイルにないと判定すると、ステップS808に進み、ユーティリティ127は、N番目のICCプロファイルをプリンタ140から取得する。すなわち、ユーティリティ127は、USB制御部134を介してプリンタのプロファイル格納部145に格納されているN番目のICCプロファイルを取得する。ステップS809でユーティリティは取得したICCプロファイルをプリンタドライバのプロファイル格納部132に格納する。ステップS810でユーティリティ127は、プリンタプロファイル情報からN番目のICCプロファイルに対応する用紙種類を取得して、ICCプロファイルの格納先とともにPPDファイル124に追記する。
ステップS811でユーティリティ127は、Nがプリンタプロファイル情報に含まれるプロファイルの総数より小さいか否かを判定する。総数より小さいと判定するとステップS812に進み、Nを1つインクリメントしてステップS805に戻り、次のICCプロファイルをプリンタドライバが保持しているか否かを確認する。Nがプロファイルの総数より小さくないと判定すると、プロファイル取得処理を終了する。本実施形態ではファームアップデートによりプリンタにマットフォトペーパー用のICCプロファイルである「MattePhoto.icc」が追加された後で、ユーザがユーティリティのプロファイル取得を実行することを想定している。この場合、ステップS806〜S807でユーティリティ127は、マットフォトペーパー用のICCプロファイルがドライバプロファイル情報にないと判定する。そして、ステップS808〜S810でユーティリティ127はプリンタからマットフォトペーパー用のICCプロファイルを取得してプリンタドライバのプロファイル格納部132に保存する。さらに、保存したプロファイルの情報をPPDファイル124に追記する。
図9はサーバPCのユーティリティ127が、図8に示す処理を行なった結果、すなわち、追加ICCプロファイルを取得した後のサーバPCのPPDファイル124の記述の一部とプリンタドライバのプロファイル格納部132とを示す図である。
図9(a)はサーバPCのPPDファイル124のプロファイル記載部分である。ユーティリティ127におけるプロファイル取得処理を実行したことにより、マットフォトペーパーのICCプロファイルの情報が追記されている。マットフォトペーパーのICCプロファイル情報のメインKeyは「*cupsICCProfile」、カラーモデルKeyは「RGB」、用紙種類Keyはマットフォトペーパーを表す「MattePhoto」となっている。また、プロファイル説明は「Matte Photo」となっており、ICCプロファイルのパスはプリンタドライバの格納先を示す。
図9(b)はサーバPCのプリンタドライバのプロファイル格納部132の構成である。ユーティリティ127におけるICCプロファイル取得処理を実行したことにより、サーバPCのプリンタドライバは、プロファイル格納部132にマットフォトペーパー用のICCプロファイルである「MattePhoto.icc」を保持した状態になる。この状態でユーザが印刷設定画面でマットフォトペーパーを選択して印刷を実行する。すると、OSの制御する印刷設定制御部126はサーバPCのPPDファイル124の記述に基づきマットフォトペーパー用のICCプロファイルである「MattePhoto.icc」を色空間の変換の出力プロファイルに指定するようになる。
以上、サーバPCからの印刷やメンテナンスの実行、ICCプロファイルの取得について説明した。この状態でサーバPC120に接続されているプリンタ140をクライアントPC100と共有するとクライアントPC100ではPPDファイル104とプリンタドライバ108との間で不整合が生じる。すなわち、プリンタ140は、初期出荷状態からファームアップデートによりICCプロファイルが追加されている。そしてサーバPC120では、この追加されたICCプロファイルをプリンタドライバ128に組み込みPPDファイル124を更新している。このような状態においてプリンタ140をクライアントPC100とサーバPC120とで共有した場合に不整合が生じる。なお、クライアント100におけるPPDファイル104とプリンタドライバ108との間で生じる不整合の具体例は図10を用いて説明する。
次に図10〜図14を使って、クライアントPC100での不整合を解消する方法について説明する。
クライアントPC100にもサーバPC120と同様にサーバPCに接続されているプリンタに対応したプリンタドライバ108がインストールされており、その初期状態は図2(b)に示サーバPCと同じである。一方、クライアントPCのPPDファイル104は共有に伴いサーバPCからPPDファイル124がコピーされる。図10はクライアントPCのPPDファイル104の記述の一部とプリンタドライバのプロファイル格納部112を示す図である。詳細には、サーバPCにおけるユーティリティ127がプロファイル取得を実行した後、サーバPC120がプリンタ140をクライアントPC100と共有開始したときのクライアントPCのPPDファイル104とプロファイル格納部112を示す図である。
図10(a)はクライアントPC100のPPDファイル104のプロファイル記載部分である。クライアントPCのPPDファイル104には、サーバPC120とプリンタ140を共有したことに応じてOSによってサーバPC120のPPDファイル124に記述されている内容がコピーされる。クライアントPCのPPDファイル104のプロファイル記載部分にはサーバPCで追記されたマットフォトペーパー用のICCプロファイルである「MattePhoto.icc」の情報が含まれる。
図10(b)はクライアントPCのプリンタドライバのプロファイル格納部112の構成である。クライアントPCのプリンタドライバは初期状態のままでプロファイル格納部112は光沢フォトペーパー用のICCプロファイルである「GlossyPhoto.icc」とデフォルトプロファイルである「IJPrinter.icc」とを格納している。しかし、クライアントPCのプリンタドライバのプロファイル格納部112はクライアントPCのPPDファイル104に記述されているマットフォト用のICCプロファイルである「MattePhoto.icc」を格納していない。よって、クライアントPC100ではプリンタドライバ108とPPDファイル104との間で「MattePhoto.icc」に関する不整合が生じた状態になる。
このようにプリンタドライバ108とPPDファイル104との間で不整合が生じると、OSがこの不整合を認識してエラーメッセージを表示し続けてしまうことになる。図11はクライアントPCにおいて不整合が生じた状態で、以降で説明するようなユーティリティのプロファイル適正化を行わずに印刷を実行したときのクライアントPCのジョブ表示部103が表示する画面を示す図である。クライアントPCで動作するOSはPPDファイル104に記述されたマットフォトペーパー用のICCプロファイル「MattePhoto.icc」がクライアントPCのプリンタドライバのプロファイル格納部112にないことを検知する。この結果、OSは、ステータス表示領域にエラーを表示する。このエラーの表示はジョブ表示部103がジョブ表示画面を表示する度に図11に示すようにエラーメッセージが表示されてしまう。従って、例えばマットフォトペーパー用のICCプロファイル「MattePhoto.icc」を用いない印刷ジョブの場合でもエラーメッセージが表示されてしまう。
そこで、本実施形態においてはクライアントPCのユーティリティ107が、後述するプロファイル適正化処理を行うことで、プリンタドライバとPPDファイルとの不整合を解消する例を説明する。
図12はクライアントPC100においてプリンタドライバ108とPPDファイル104との間に不整合が生じた状態で表示される印刷設定画面1200を示す図である。クライアントPCの印刷設定制御部106も、サーバPCで説明したものと同様に印刷設定画面を開く際にプリンタドライバの設定画面拡張部109をロードする。クライアントPCの印刷設定制御部106が設定画面拡張部109をロードすると、クライアントPCの設定画面拡張部109は、印刷処理部101を介してクライアントPCのPPDファイル104からドライバプロファイル情報を取得する。そしてクライアントPCの設定画面拡張部109はドライバプロファイル情報に含まれる各ICCプロファイルがプリンタドライバのプロファイル格納部112に格納されているか否かを判定する。格納していなければ、設定画面拡張部109は、拡張領域1210にアイコン1201とメッセージ1202を表示する。本実施形態では、クライアントPCのユーティリティ107は、クライアントPCのプリンタドライバの保持するICCプロファイルに合わせてクライアントPCのPPDファイル104のプロファイル記載部分を適正化する。詳細については後述する。図12に示すように、クライアントPCの設定画面拡張部109は、拡張領域1210に「ユーティリティでプロファイルの適正化を行ってください。」とのメッセージ1202を表示する。これにより、ユーザにクライアントPCのユーティリティ107でプロファイルの適正化を実行するように促す。
図13は、クライアントPCのユーティリティ107を起動した際の操作画面を示す図である。
クライアントPCのユーティリティ107でもサーバPCと同様にプリンタ140のメンテナンスとしてプリンタに装着されているヘッドのクリーニングができる。一方、クライアントPCのユーティリティ107は、USB制御部を介してプリンタ140と接続されていないので、プリンタ140から追加ICCプロファイルを取得できない。このため、クライアントPCのユーティリティは画面選択ポップアップメニュー502に「プロファイル取得」を表示しない。その代わりにユーティリティ107は、「プロファイル適正化」を表示し、ユーザが選択するとクライアントPCのPPDファイル104とクライアントPCのプリンタドライバ108との間の不整合を解消するためのプロファイル適正化画面1301を表示する。
図13(a)はクリーニング画面が表示されている時のクライアントPCのユーティリティ107の操作画面を示す図であり、ユーザはサーバPCのクリーニング画面と同等の操作ができる。
図13(b)はプロファイル適正化画面1301が表示されている時のクライアントPCのユーティリティ107の操作画面を示す図である。クライアントPCのプロファイル適正化画面1301を介してユーザは、クライアントPCのPPDファイル104のプロファイル記載部分を更新する指示を行なうことができる。すなわち、ユーザは、クライアントPCのプリンタドライバのプロファイル格納部112に格納されているICCプロファイルに基づきPPDファイル104のプロファイル記載部分を更新する指示をする。具体的には、ユーザによってプロファイル適正化画面1301の実行ボタン1302が押下されると、クライアントPCのユーティリティ107は、クライアントPCのPPDファイル104からドライバプロファイル情報を取得する。そして、ユーティリティ107は、クライアントPCのPPDファイル104に記述されているICCプロファイルがプリンタドライバのプロファイル格納部112に格納されているか否かを判定する。ICCプロファイルがクライアントPCのプリンタドライバ108に格納されていなければ、ユーティリティ107は、次の処理をする。すなわち、ユーティリティ107はクライアントPCのPPDファイル104のプロファイル記載部分からプリンタドライバ108に格納されていないICCプロファイルに対応するICCプロファイルの記述を削除する。ユーティリティ107は、PPDファイル104に記述されているICCプロファイルに関する情報に対応する全てのICCプロファイルがクライアントPCのプリンタドライバのプロファイル格納部112に格納されていれば、何もしない。
図14はクライアントPCのユーティリティ107のプロファイル適正化のフローを示す図である。ユーザによってクライアントPCのユーティリティ107のプロファイル適正化画面で実行ボタンが押下されるとクライアントPCのユーティリティ107はプロファイル適正化処理を開始してステップS1401に進む。なお、図14の処理はユーティリティ107によって処理が行なわれることになる。しかし、ハードウェアの観点で見ると、RAMに読み出されてたユーティリティ107のプログラムをクライアントPCのCPUが実行することによって図14の処理が実現されることになる。
S1401においてクライアントPCのユーティリティ107は、印刷処理部101を介してクライアントPCのPPDファイル104からドライバプロファイル情報を取得する。ステップS1402においてクライアントPCのユーティリティ107は、ステップS1401で取得したドライバプロファイル情報に含まれるICCプロファイルの総数を取得する。
ステップS1403〜S1409でクライアントPCのユーティリティは、ドライバプロファイル情報に含まれる各ICCプロファイルをクライアントPCのプリンタドライバが保持しているか否かを判定する。保持していなければクライアントPCのPPDファイル104の該当するICCプロファイルの記述を削除する。以下、具体的な処理を説明する。ステップS1403においてクライアントPCのユーティリティ107は、変数Nに初期値として「1」を代入する。ステップS1404でクライアントPCのユーティリティ107は、ドライバプロファイル情報に含まれるN番目のICCプロファイルのパスを取得する。ステップS1405でユーティリティ107は、パスに示された格納先にICCプロファイルがあるか否かを確認する。なお、S1404では、ICCプロファイルの有無を確認しているが、ICCプロファイルに限る必要はない。
そして、ステップS1406に進み、クライアントPCのユーティリティ107は、ICCプロファイルがあると判定すると、ステップS1408に進む。クライアントPCのユーティリティ107は、ICCプロファイルがないと判定すると、S1407に進み、クライアントPCのPPDファイル104のプロファイル記載部分にあるN番目のICCプロファイルの記述を削除する。つまり、S1405−S1407によって、プリンタドライバ108とPPDファイル104との間に不整合が生じているか否かが判定される。
ステップS1408でクライアントPCのユーティリティ107は、NがICCプロファイルの総数より小さいか否かを判定する。クライアントPCのユーティリティ107は、総数より小さいと判定するとステップS1409に進み、Nを1つインクリメントしてステップS1404に戻り、次のICCプロファイルをクライアントPCのプリンタドライバが保持しているか否かを確認する。クライアントPCのユーティリティ107は、総数より小さくないと判定するとS1410に進み、ダミーのメンテナンスジョブを印刷処理部101に投入する。
ユーティリティ107が、クライアントPCのPPDファイル104とクライアントPCのプリンタドライバ108との不整合を解消しても、その直後にジョブを実行するとクライアントPCのOSは、まだ不整合が解消されたことを認識していない。このためクライアントPCのOSによる制御によってジョブ表示部103はステータス表示領域に図11のようなエラーを表示する。よって、クライアントPCのOSが不整合の解消を認識するようにするために、クライアントPCのユーティリティ107はダミーのジョブを投入する。OSの制御するジョブ表示部103はメンテナンスジョブを表示しないので、クライアントPCのユーティリティ107はダミーのジョブとしてメンテナンスジョブを投入する。これにより、ユーザが意図しないところでユーティリティ107が投入したジョブが、ジョブ表示部103によって表示されることはない。クライアントPCのOSは、ダミーのジョブの投入後におけるその後のジョブの処理時においては、不整合が生じていないと認識している。従って、不整合を解消した後にダミーのジョブ投入をしておけばその後のジョブの処理時において図11で説明したようなエラーメッセージを表示してしまうという事態を生じなくさせることができる。
クライアントPCの印刷処理部101はダミーのメンテナンスジョブを印刷キューから取り出すとネットワーク制御部を介してサーバPCの印刷処理部121に送る。サーバPCの印刷処理部121はダミーのメンテナンスジョブをサーバPCのユーティリティフィルタ131に送る。サーバPCのユーティリティフィルタ131はダミーのメンテナンスジョブであれば何もせずにすぐに終了する。
ダミーのメンテナンスジョブ自体は、前述のようにクライアントPCのジョブ表示部103によって表示されることはない。ただし、前述のようにクライアントPCのOSはメンテナンスジョブを処理するときに不整合の解消をまだ認識しておらず、メンテナンスジョブを処理している間、クライアントPCのジョブ表示部によって表示されるジョブ表示面にエラーが一旦は表示される。しかし、サーバPCのユーティリティフィルタはダミージョブを受けると何もしないのですぐにジョブが終了してクライアントPCのジョブ表示部のエラーはすぐに消える。通常、ジョブ表示部103によって表示されるジョブ表示画面はバックグラントで隠れているのでユーザはこのダミージョブの投入に伴い瞬間的に表示されるエラー表示を視認することはない。つまり、ダミージョブを投入することで、結果として、ユーザが意識することなく、OSに不整合が解消したこと(不整合が生じていないこと)を認識させることができる。
ステップS1411でクライアントPCのユーティリティ107はダミーのメンテナンスジョブの処理状態を取得する。そしてステップS1412に進み、クライアントPCのユーティリティ107はダミーのメンテナンスジョブが完了していれば処理を終了する。クライアントPCのユーティリティはダミーのメンテナンスジョブが完了していなければステップS1411に戻り、ダミーのメンテナンスジョブの完了を待つ。
本実施形態ではサーバPCのプリンタドライバにマットフォトペーパー用のICCプロファイルである「MattePhoto.icc」が組み込まれ、そのICCプロファイルの情報がサーバPCのPPDファイルに追記された状態を想定している。そしてその状態において、さらにユーザがプリンタをサーバPCとクライアントPCとで共有することを想定している。このときクライアントPC100でプロファイル適正化を行う。すると、クライアントPCのユーティリティ107はステップS1405〜S1406でマットフォトペーパー用のICCプロファイルがクライアントPCのプリンタドライバのプロファイル格納部にないと判定する。そして、ステップS1407でクライアントPCのユーティリティはクライアントPCのPPDファイルのプロファイル記載部分のマットフォトペーパー用のICCプロファイルの記述を削除する。その後、ステップS1410でダミーのメンテナンスジョブを投入してクライアントPCのOSに不整合が解消されたことを認識させる。
以上説明してきたように、本実施形態のクライアントサーバ印刷システムによれば、クライアントPCで生じるPPDファイルとプリンタドライバの不整合をユーティリティのプロファイル適正化を実行することにより解消することができる。さらにOSに不整合が解消したことを認識させて不要なエラーの表示を防ぐことができる。
なお、本実施形態では、S1410においてダミージョブを投入する処理を説明したが、ユーティリティ107が、たとえばS1410−S1412を実行しなくても構わない。その結果、不整合が解消された直後のジョブの処理では図11のような画面が表示されることになるが、それ以降は図11が表示されなくなることにより本実施形態の課題を解決しても良い。
<その他の実施形態>
本発明の実施形態1ではプリンタのファームウェアアップデートで追加される機能としてICCプロファイルを例に説明したが、新しい色のインクタンクの追加やオプションの給紙口の追加など、その他の機能モジュールの追加であってもよい。すなわち、PPDファイルに追加機能を追記するだけでなく、プリンタドライバに追加機能を使用するためのデータを組み込む必要があるのであれば同様の効果を有する。すなわち、PPDファイルのように所定の機能情報を記述した機能ファイルを利用し、この所定の機能情報を処理するために必要な所定のモジュールをプリンタドライバに組み込む形態であれば同様の効果を有する。
また、本発明の実施形態1の印刷システムは、クライアントPCとサーバPCおよびサーバPCとプリンタが特定のインタフェースで接続された構成をとっている。しかしながら、この例に限られることなく、クライアントPCがサーバPCを介してプリンタに印刷を要求する構成の印刷システムであれば上述した発明を適用可能であり有効である。
また、実施形態1ではOSとしてMac OS(登録商標)Xを例に挙げて説明したが、これに限られるものではない。すなわち、プリンタがクライアントPCとサーバPCとの間で共有された場合に、PPDファイルがサーバPCからクライアントPCにコピーされ、かつ、追加ICCプロファイルはクライアントPCに含まれないような処理をするOSにも適用することができる。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。