ネットワーク上で、例えばパーソナルコンピュータ等の情報処理装置(以下、単にPCという。)と、例えばプリンタ、スキャナ及びファクシミリ(FAX)等の周辺機器とが接続されている場合に、PCは、自身にインストールされているアプリケーションで作成されたデータを、周辺機器が処理可能なデータへ変換するためのデバイスドライバを有する。
図1は、PCとプリンタとから成る情報処理システムのネットワーク構成図の従来例を示す。
図1において、情報処理システム10は、第1及び第2のPC11及び12と、第1及び第2のプリンタ13及び14と、それらを相互に接続して、データ通信を可能にするネットワーク15とを有する。
第1のPC11は、OS(Operating System)上で動作するアプリケーション16と、第1のプリンタ13に対応する第1のプリンタドライバ17と、第2のプリンタに対応する第2のプリンタドライバ18とを有する。
第2のPC12も、原則的には、第1のPC11と同様の構成を有する。
第1のプリンタドライバ17は、ユーザーインターフェース(UI)モジュール171と、印刷データ生成モジュール172と、機器情報処理モジュール173と、記憶装置174とを有する。
UIモジュール171は、第1のプリンタドライバ17に対応するプリンタ、即ち、第1のプリンタ13の各種機能に係る機器情報に基づいて、第1のプリンタ13を設定するための設定画面を表示する手段である。ユーザは、UIモジュール171により表示された設定画面で、第1のプリンタ13の各種機能の設定を入力する。UIモジュール171は、更に、ユーザの入力に基づいて、第1のプリンタ13に実行させる処理内容を設定する。
印刷データ生成モジュール172は、アプリケーション16で作成又は閲覧した文書データ等を、ユーザが入力した第1のプリンタ13の各種機能の設定に従って、第1のプリンタ13が解釈可能な印刷データへ変換する手段である。機器情報処理モジュール173は、UIモジュール171が設定画面を表示することができるよう、記憶装置174から第1のプリンタ13の機器情報を読み出す手段である。記憶装置174は、第1のプリンタ13の機器情報を記憶しておく手段である。
第2のプリンタドライバ18も、原則的には、第1のプリンタドライバ17と同様の構成を有する。
なお、「機器情報」とは、プリンタ等の周辺機器のデバイス構成情報と、これに関連したコマンド情報とを対応付けているファイル情報である。また、「処理内容」は、デバイス初期化及び周辺機器の環境等に関する情報を含み、DEVMODE構造体というデータ構造体に格納される。図2は、機器情報及び処理内容の従来のデータ構造の一例を概略的に表す図である。
図2(a)は、機器情報のデータ構造をテーブル形式で表している。図2(a)のデータ構造は、列21、22及び23を有する。列21には、プリンタが有している機能名が格納されており、列22には、列21に格納された機能が実行可能であるか否かを表すデータが格納されている。更に、列22において、その機能が実行可能であって、機能実行時の詳細な設定を行うための選択肢が存在することを表すデータが格納されている場合には、列23に選択肢の内容が格納されている。なお、「選択肢」とは、例えばプリンタの場合には、「ステープル」機能を実行する際の用紙の綴じ位置(「右上」、「左下」等)が選択肢となる。
図2(b)は、処理内容のデータ構造を表し、図2(a)と同じく、理解を容易とするために、テーブル形式で表されている。図2(b)のデータ構造は、列24及び25を有する。列24には、プリンタが有している機能名が格納されており、列25には、ユーザが設定画面で入力した印刷設定の設定、即ち、図2(a)に示す機器情報の列23に格納された選択肢の中からユーザによって選択された値が格納されている。
次に、図1に示した従来の情報処理システムにおけるプリンタドライバの動作について図3を用いて説明する。
ユーザが、例えば図1の第1のプリンタへの印刷設定要求を行った場合、最初に、ステップS101において、第1のプリンタ13の印刷設定をするための設定画面を表示するよう、設定画面呼び出し要求が、アプリケーション16からUIモジュール171へ送信される。UIモジュール171は、アプリケーション16からの要求を受け、ステップS102において、機器情報処理モジュール173へ、第1のプリンタ13の機器情報を取得するよう機器情報取得命令を送信する。機器情報処理モジュール173は、ステップS103において、記憶装置174(図1)に記憶されている機器情報を読み出し、それをステップS104においてUIモジュール171へ送信する。ステップS105において、UIモジュール171は、機器情報処理モジュール173からの機器情報に基づいて、第1のプリンタ13の印刷設定をするための設定画面を、モニタ等の表示手段(図示せず。)を介してユーザに表示する。ステップS106において、ユーザは、UIモジュール171が表示した設定画面で、マウス及びキーボード等の入力手段(図示せず。)を用いて、第1のプリンタ13への印刷設定値を入力する。UIモジュール171は、ステップS107において、ユーザが入力した設定値を第1のプリンタ13に実行させる処理内容として設定し、ステップS108において、設定した処理内容をアプリケーション16へ送信する。送信後、ステップS109において、アプリケーション16は、処理内容を保存する。
そして、ユーザがステップS110においてアプリケーション上で第1のプリンタ13への印刷要求を行うと、印刷データ生成モジュール172は、ステップS111において、アプリケーション16に保存された処理内容を読み込む。次に、印刷データ生成モジュール172は、ステップS112において、読み込んだ処理内容に基づいて、第1のプリンタ13が解釈可能な印刷データを生成し、ステップS113において、生成した印刷データを第1のプリンタ13又はスプーラへ送信する。印刷データの送信後、印刷データ生成モジュール172は、ステップS114において、送信完了通知をアプリケーション16へ送信する。ステップS115において、アプリケーション16は、送信完了通知を受けて、印刷処理を完了する。
このように、従来のPCには、接続されたプリンタの夫々に対応する複数のプリンタドライバが組み込まれている。即ち、PCは、利用するプリンタの数だけプリンタドライバを有することとなる。
例えば、特開2004−310488号公報(特許文献1参照。)に、同じ種類の印刷装置に対するドライバのインストールを1つにする印刷システムが開示されている。特許文献1に開示された印刷システムでは、1つの識別子の印刷装置を複数のネットワークIDで管理された印刷装置として見せることにより、複数の印刷装置を管理する端末側では複数のドライバをイントールせずに済むようになる。
また、寿命及び故障等の理由から使用中の機器を新しいものに交換する場合に、たとえ新しい機器が前の機器と同じ種類のものであったとしても、前の機器にはなかった新しい機能が追加されている場合には、追加された機能に対応するデバイスドライバを情報処理装置にインストールする必要が生ずる。
例えば、特開2005−173701号公報(特許文献2参照。)に、ドライバ全体を再インストールするのではなく、新たに追加された機能のみをプラグインモジュールとしてインストールすることができる情報処理装置等が開示されている。
本発明を実施するための最良の形態を、添付の図面を参照して説明する。
図4は、本発明の一実施形態としてのコンピュータのハードウェア構成例を示す図である。図4に示されるように、コンピュータ40は、バス46によって相互に接続されたドライブ装置41と、補助記憶装置42と、メモリ装置43と、演算処理装置44と、インターフェース装置45とを有する。コンピュータ40での処理を実現するプログラムは、CD−ROM等の記録媒体47によって提供される。
ドライブ装置41は、記録媒体47を読み取るための装置である。プログラムを記録した記録媒体47がドライブ装置41にセットされると、プログラムが記録媒体47からドライブ装置41を介して補助記憶装置42にインストールされる。なお、本実施形態では、記録媒体に記録されたプログラムとして、プリンタドライバやPC−FAXドライバ等の各種デバイスドライバが適用可能であるが、説明を簡単なものとするため、以降はプリンタドライバを例として説明する。
補助記憶装置42は、インストールされたプログラムを格納すると共に、必要なファイル及びデータ等を格納する装置である。メモリ装置43は、プログラムの起動指示があった場合に、補助記憶装置42からプログラムを読み出して格納する装置である。演算処理装置44は、メモリ装置43に格納されたプログラムに従って、コンピュータ40に係る機能を実行する装置である。インターフェース装置45は、コンピュータ40を外部のネットワーク又は公衆回線へ接続するための装置である。
図5は、コンピュータ40の機能構成例を示す図である。図5に示されるように、コンピュータ40は、ネットワークを介してプリンタ50に接続されており、アプリケーション410と、描画サービス420と、プリンタドライバ430と、印刷データ送信サービス440とを有する。なお、このコンピュータ40としては、一般的なPCに限らず、サーバーPC、PDA(Personal Digital Assistant)若しくは携帯電話等の携帯型端末、又は、プリンタ若しくは複合機等の組み込み機器等であっても良い。
アプリケーション410は、例えばウィンドウズ(登録商標)のようなOS上で動作するプログラムであって、例えば、文書作成ソフト及び表計算ソフト等のような汎用アプリケーションである。
描画サービス420は、OS上で動作する描画エンジンであって、一般に、アプリケーション410と描画サービス420との間を接続するインターフェースと共にGDI(Graphic Device Interface)に含まれている。
プリンタドライバ430は、OSの内部命令をプリンタ50が解釈可能な印刷データ、所謂プリンタ言語(PDL)データに変換するモジュールである。一般に、GDI420とプリンタドライバ430との間は、DDI(Device Driver Interface)と呼ばれるインターフェースで接続されている。
印刷データ送信サービス440は、所謂スプーラであって、プリンタドライバ430で生成されたPDLデータをスプールするモジュールである。このスプーラ440によりスプールされたPDLデータは、印刷ポートからネットワークを介してプリンタ50へ送信される。
更に、図6は、上述したコンピュータ40とプリンタとが接続された情報処理システムの一例を表すネットワーク構成図である。
図6において、情報処理システム60は、第1及び第2のコンピュータ40a及び40bと、第1及び第2のプリンタ50a及び50bと、それらを相互に接続して、データ通信を可能にするネットワーク65とを有する。
第1のコンピュータ40aは、アプリケーション410と、1つのプリンタドライバ430とを有する。第2のコンピュータ40bも、原則的には、第1のコンピュータ40aと同様の構成を有する。
また、第1及び第2のプリンタ50a及び50bは、夫々、記憶装置510及び520の夫々を有する。記憶装置510及び520は、第1及び第2のプリンタ50a及び50bの夫々の各種機能に係る機器情報を記憶しておく装置である。
プリンタドライバ430は、ユーザーインターフェース(UI)モジュール431と、印刷データ生成モジュール432と、機器情報処理モジュール433とを有する。
UIモジュール431は、第1及び第2のプリンタ50a及び50bの夫々の各種機能に係る機器情報に基づいて、夫々のプリンタを設定するための設定画面を表示する手段である。ユーザは、UIモジュール431により表示された設定画面で、第1及び第2のプリンタ50a及び50bの夫々の各種機能の設定を入力する。UIモジュール431は、更に、ユーザの入力に基づいて、第1及び第2のプリンタ50a及び50bに実行させる処理内容を設定する。
印刷データ生成モジュール432は、アプリケーション410で作成又は閲覧した文書データ等を、ユーザが入力した第1及び第2のプリンタ50a及び50bの夫々の各種機能の設定に従って、夫々のプリンタが解釈可能な印刷データへ変換する手段である。機器情報処理モジュール433は、UIモジュール431が設定画面を表示することができるよう、夫々のプリンタの記憶装置510及び520に記憶された機器情報を読み出す手段である。
以下、このコンピュータにおける処理について詳細に説明する。
図7は、本実施形態のコンピュータが有しているプリンタドライバ430の構成の一例を表すブロック図である。
このプリンタドライバ430は、ユーザーインターフェース(UI)モジュール431と、印刷データ生成モジュール432と、機器情報処理モジュール433とを有する。
機器情報処理モジュール433は、図6のようにネットワークを介して接続されたプリンタから、そのプリンタが実行可能な機能に係る機器情報を取得する機器情報取得部711と、以前に取得したそのプリンタ又は他のプリンタの機器情報を保存する機器情報保存部712と、機器情報取得部711が取得した機器情報と機器情報保存部712に保存されている機器情報とを比較する情報比較部713とを有する。情報比較部713による比較の結果より、機器情報取得部711が取得した機器情報に含まれる新しい情報を用いて、機器情報保存部712に保存されている機器情報を更新する。
UIモジュール431は、機器情報保存部712に保存された機器情報に基づいて、印刷対象となる文書データの印刷設定を受け付ける設定画面を生成し、更に、この設定画面から受け付けた、後述するDEVMODE構造体等に処理内容を設定する処理内容設定部721と、処理内容設定部721で生成された設定画面をモニタ等(図示せず。)に表示する表示部722と、キーボード及びマウス等によりユーザからの入力を受ける入力部723とを有する。
アプリケーション410は、処理内容設定部721で設定された処理内容を保存する処理内容保存部731を有する。この処理内容保存部731の例としては、後述するDEVMODE構造体のような所定の形式の構造体も含む。
印刷データ生成モジュール432は、処理内容保存部731に保存された処理内容を読み込む処理内容読込部741と、処理内容読込部741が読み込んだ処理内容を調べることで、その内容に印刷データ生成モジュールにとって未知の情報が含まれているか否かを判定し、未知の情報が含まれている場合には、機器情報保存部712から未知の情報に対応するコマンドを取得するコマンド取得部742と、コマンド取得部742が取得したコマンドと処理内容読込部741が読み込んだ処理内容とに基づいて、プリンタが解釈可能な印刷データを生成するデータ生成部743と、プリンタが認識可能なコマンドを印刷データ生成モジュールが認識可能な設定値と対応付けて記憶したコマンド記憶部744とを有する。
コマンド取得部742は、処理内容読込部741が読み込んだ処理内容に含まれる設定値をコマンド記憶部744に記憶された設定値と比較することにより、処理内容読込部741が読み込んだ処理内容に印刷データ生成モジュールにとって未知の情報が含まれているか否を判定することができる。詳細には、コマンド記憶部744は、例えば、後述のDEVMODE構造体の固定領域に予め格納されている項目や値等の情報を記憶しており、コマンド取得部742は、固定領域に格納されていない情報を未知の情報として扱う。
データ生成部743は、処理内容読込部741が読み込んだ処理内容に含まれる設定値に対応するコマンドをコマンド記憶部744から取得し、このコマンドと、コマンド取得部742が取得したコマンドとに基づいて、印刷データを生成する。データ生成部743が生成した印刷データは、上述のスプーラ440へ送信される。
次に、このプリンタドライバ430の動作について、図8のシーケンス図を参照して説明する。
ユーザが、例えば図6の第1のプリンタ50aへの印刷設定要求を行った場合、例えば、ウィンドウズ(登録商標)で動作するアプリケーションの印刷設定画面において「プロパティ」ボタンを押した場合、最初に、ステップS201において、第1のプリンタ50aの印刷設定をするための設定画面(例えば、プロパティ画面)を表示するよう、設定画面呼び出し要求が、アプリケーション410からUIモジュール431へ送信される。UIモジュール431は、アプリケーション410からの要求を受け、ステップS202において、機器情報処理モジュール433へ、第1のプリンタ50aの機器情報を取得するよう機器情報取得命令を送信する。
機器情報処理モジュール433は、UIモジュール431からの命令を受けると、ステップS203において、機器情報取得部711を用いて第1のプリンタ50aの記憶装置510に記憶されている機器情報を読み出す。次に、ステップS204において、機器情報取得部711が読み出した機器情報は、情報比較部713により、機器情報保存部712に保存されていれる機器情報と比較されて、その中に含まれる新しい情報部分が、機器情報保存部712に保存されている機器情報を更新するために用いられる。これにより、機器情報保存部712に保存されている機器情報は、第1のプリンタ50aの現在実行可能な機能に係る機器情報へと書き換えられることになる。この機器情報は、ステップS205においてUIモジュール431へ送信される。
UIモジュール431は、機器情報処理モジュール433からの機器情報を受け、ステップS206において、処理内容設定部721が、その機器情報に基づいて、第1のプリンタ50aの各種機能を設定する設定画面を生成し、表示部722を介してユーザに表示する。ステップS207において、ユーザは、表示部722が表示した設定画面で、入力部723を用いて、第1のプリンタ50aへの印刷設定値を入力する。処理内容設定部721は、ステップS208において、ユーザが入力部723を介して入力した設定値を第1のプリンタ50aに実行させる処理内容として設定する。この処理内容は、ステップS209においてアプリケーション410へ送信される。処理内容の送信後、ステップS210において、アプリケーション410は、処理内容保存部731に処理内容を保存する。
この場合に、ユーザが、ステップS211においてアプリケーション上で第1のプリンタ50aへの印刷要求を行うと、印刷データ生成モジュール432の処理内容読込部741は、ステップS212において、アプリケーション410の処理内容保存部731に保存された処理内容を読み込む。次に、コマンド取得部742は、ステップS213において、読み込んだ処理内容に含まれる設定値をコマンド記憶部744に記憶された設定値と比較することにより、読み込んだ処理内容に印刷データ生成モジュールにとって未知の情報が含まれているか否かを判定し、未知の情報が含まれている場合には、ステップS214において、機器情報処理モジュール433へ問い合わせを行う。機器情報処理モジュール433は、ステップS215において、機器情報保存部712に保存されている機器情報を読み出して、その中から、コマンド取得部742から問い合わせのあった未知の情報に対応するコマンドを抽出し、ステップS216において、コマンド取得部742へ送信する。
ステップS217において、コマンド取得部742は、機器情報処理モジュール433から送信されたコマンドを取得する。次に、ステップS218において、このコマンドと、先のステップS212で処理内容読込部741が読み込んだ処理内容とに基づいて、データ生成部743は、第1のプリンタ50aが解釈可能な印刷データを生成する。生成された印刷データは、ステップS219において上述のスプーラ440へ送信される。印刷データの送信後、印刷データ生成モジュール432は、ステップS220において、送信完了通知をアプリケーション410へ送信する。ステップS221において、アプリケーション410は、送信完了通知を受けて、印刷処理を完了する。
このように、本実施形態でのコンピュータは、異なる種類のプリンタが複数接続されている場合に、全てのプリンタの機器情報を予め記憶しておくのではなく、必要に応じて、プリンタからその機器情報を読み出し、機器情報に含まれる未知の情報に関してそれに対応するコマンドを取得することにより、1つのプリンタドライバで異なる種類の複数のプリンタに対応することが可能となる。
また、コンピュータにプリンタドライバをインストールした後に、そのプリンタドライバに対応するプリンタに機能拡張が生じた場合にも、本実施形態のコンピュータは、機能拡張により追加された新規の機能に対応するコマンドを取得することができるので、プリンタドライバの再インストールをすることなく、容易にプリンタの機能拡張に対応することが可能となる。
以下、本実施形態の具体的な処理及びデータ構造について説明する。
〔設定画面の構成〕
図9は、本実施例のコンピュータにおいてプリンタの各種機能を設定するための設定画面の一例を示す。
図9の設定画面には、プリンタの印刷実行に用いる紙種を選択するための項目(「Paper Type」)が設けられている。ユーザが、設定画面上で紙種の選択を行う場合、選択肢90が表示される。選択肢90は、デフォルト部91と、追加部92とから成る。デフォルト部91は、プリンタから取得した機器情報のうち、コンピュータ側で既知であった情報であり、追加部92は、コンピュータ側で未知であった情報である。即ち、追加部92は、プリンタから新たに機器情報を取得した際に、新規な情報として、既にコンピュータが有していた機器情報に追加された情報である。
図9のような設定画面は、図10(a)及び(b)においてテーブル形式で表されている機器情報及び機器情報に関連づけられた参照情報に基づいて生成される。また、図9の設定画面において追加部92にある選択項目のいずれかが選ばれた場合の処理内容の設定状態は、図10(c)のように、テーブル形式で表される。なお、機器情報、参照情報及び処理内容のデータ構造は、テーブル形式以外の形式でもよい。
〔機器情報及び処理内容のデータ構造〕
図10(a)は、本実施例における機器情報のデータ構造の一例を概略的に表す図である。
図7及び図8を参照して上で説明したように、プリンタドライバ430は、所定のプリンタから読み出した機器情報と、既知の機器情報とを情報比較部713により比較して、所定のプリンタから読み出した機器情報に含まれる新しい情報、即ち、ある機能の選択肢の項目に係る追加情報を抽出し、これを既知の機器情報に加える。このように更新された機器情報は、図10(a)のようなデータ構造で機器情報保存部712に保存される。
図10(a)のデータ構造は、列210、220及び230を有する。列210には、プリンタが有している機能名が格納されており、列220には、列210に格納された機能が実行可能であるか否かを表すデータが格納されている。更に、列220において、その機能が実行可能であって、機能実行時の詳細な設定を行うための選択肢が存在することを表すデータが格納されている場合には、列230に選択肢の内容が格納されている。ただし、新たに選択肢の項目が追加された機能、即ち、「紙種」においては、その選択肢の内容が列230の対応する行に格納されず、代わりに、「紙種」の選択肢を表す参照情報に関連づけられている。
図10(b)は、本実施例における図10(a)の機器情報に関連づけられた参照情報のデータ構造の一例を概略的に表す図である。
図10(b)のデータ構造は、列260、270及び280を有する。列260には、設定画面上に実際に表示するための文字列が格納されている。列270には、プリンタドライバが認識可能な、選択肢の夫々の項目に対応する設定値が格納されている。列280には、プリンタが認識可能な、選択肢の夫々の項目に対応するコマンドが格納されている。なお、参照情報も、機器情報と同じく、プリンタドライバの機器情報保存部712に保存される。
図7及び図8を参照して上で説明したように、プリンタドライバ430は、機器情報保存部712に保存された機器情報に基づいて、表示部722を介してユーザに設定画面を表示する。本実施例のように、ある機能の選択肢の項目が追加された場合には、図10(a)及び(b)の機器情報及び拡張情報に基づいて、図9のような設定画面が表示される。図9の設定画面において、表示される紙種の選択肢90は、図10(b)に示した拡張情報の列260に格納された文字列に基づく。
また、図10(c)は、本実施例における図10(a)及び(b)の機器情報及び参照情報に基づく処理内容のデータ構造の一例を概略的に表す図である。
図10(c)のデータ構造は、DEVMODE構造体という構造体であって、列240及び250を有する。列240には、プリンタが有している機能名が格納されており、列250には、ユーザが設定画面で入力した印刷設定の設定値、即ち、図10(a)に示す機器情報の列230に格納された選択肢、又は図10(b)の参照情報により表される選択肢の中から、ユーザによって選択された値が格納されている。なお、一般に、DEVMODE構造体は、固定領域と拡張領域とを有するが、本実施例では固定領域のみを使用する。
図10(a)の機器情報及び図10(b)の拡張情報が保存された後に、ユーザが、図9の設定画面において紙種の設定を行い、選択肢90の中から追加部92に含まれる項目を選択した場合を考える。例えば、ユーザが項目「特殊紙3A」を選択したとすると、図10(c)のように、処理内容の機能「紙種」の設定に対応する所定領域には、図10(b)の参照情報において文字列「特殊紙3A」に対応する設定値「512」が格納される。その後、図10(c)のようなデータ構造を有する処理内容は、上述のアプリケーション410に保存される。
次に、ユーザが、アプリケーション上で所定のプリンタへの印刷要求を行うと、プリンタドライバ430は、プリンタが解釈可能な印刷データを生成するために、アプリケーション410からの処理内容を読み込む。このとき、プリンタドライバ430は、読み込んだ処理内容に含まれる設定値をコマンド記憶部744に記憶された設定値と比較することにより、読み込んだ処理内容に印刷データ生成モジュールにとって未知の情報が含まれているか否かを判定するが、プリンタから機器情報を取得した際に新たに追加された情報を未知の情報として認識する。本実施例では、図10(c)の処理内容において、設定値「512」が未知の情報として扱われる。
図7及び図8を参照して上で説明したように、プリンタドライバ430は、処理情報に未知の情報が含まれていた場合に、プリンタが解釈可能な印刷データを生成するために、機器情報から未知の情報に対応するコマンドを取得する。以下、このコマンド取得動作について、図7のブロック図及び図11のフロー図を参照して更に詳細に説明する。
〔コマンド取得及びデータ生成〕
図11は、処理内容が図10(c)のようなデータ構成を有する場合の本実施例のプリンタドライバにおけるコマンド取得動作の一例を説明するフロー図である。
ユーザが、アプリケーション上で所定のプリンタへの印刷要求を行うと、印刷データ生成モジュール432の処理内容読込部741は、ステップS301において、アプリケーション410の処理内容保存部731に保存された、図10(c)のようなデータ構造を有する処理内容を読み込む。更に、処理内容読込部741は、ステップS302において、読み込んだ処理内容の固定領域のみを抽出して読み込む。次に、コマンド取得部742は、ステップS303において、読み込まれた固定領域の一行目から順に、図10(c)の列250に格納された印刷設定を読み出して、この印刷設定に含まれる設定値をコマンド記憶部744に記憶された設定値と比較することで、ステップS304において、読み出した印刷設定に未知の設定値が含まれるか否かを判定する。
判定の結果、読み出した印刷設定に未知の設定値が含まれていない場合には、ステップはS305に進み、コマンド取得部742は、印刷設定に対応するコマンドを生成する。
一方、判定の結果、読み出した印刷設定に未知の設定値が含まれている場合には、ステップはS306に進み、コマンド取得部742は、機器情報処理モジュール433に対して、その未知の設定値に関する問い合わせを行う。機器情報処理モジュール433は、ステップS307において、機器情報保存部712に保存されている機器情報、本実施例では、図10(a)のようなデータ構造を有する機器情報を読み出して、その中から、コマンド取得部742から問い合わせのあった未知の設定値に対応するコマンドを抽出し、ステップS308において、コマンド取得部742へ送信する。
図10(c)の処理内容において紙種の印刷設定の設定値として格納された「512」が未知の設定値である場合に、コマンド情報取得部742は、紙種の「512」という設定値に関して機器情報処理モジュール433へ問い合わせを行う。機器情報処理モジュール433は、コマンド情報取得部742からの問い合わせを受けて、機器情報保存部712に保存されている図10(a)の機器情報を読み出す。図10(a)の機器情報を見ると、「紙種」は参照情報に関連づけられているので、機器情報処理モジュール433は、更に、同じく機器情報保存部712に保存されている図10(b)の参照情報を読み出す。図10(b)の参照情報より、コマンド取得部742から問い合わせのあった設定値「512」に対応するコマンドは「SPECIAL3A」であることが分かる。機器情報処理モジュール433は、このコマンド「SPECIAL3A」をコマンド取得部742へ返す。
このように、印刷データ生成モジュール432は、コマンド取得部742により、未知の設定値、即ち、新たに追加された選択肢の項目に対応するコマンドを取得することができる。
ステップS305においてコマンドを生成した後、又はステップS306からS308においてコマンドを取得した後、ステップS309において、コマンド取得部742は、固定領域にまだ読み出していない印刷設定の設定値が存在するか否かを判定する。
判定の結果、まだ読み出していない印刷設定の設定値が存在する場合には、ステップはS303に戻り、上述したコマンド生成又は取得のための動作を繰り返す。
一方、判定の結果、固定領域の全ての印刷設定の設定値が読み出され、それらの夫々に対してコマンドが生成又は取得されている場合には、ステップはS310に進む。ステップS310において、データ生成部743は、コマンド取得部742が生成又は取得したコマンドを用いて、プリンタが解釈可能な印刷データとして、例えばPDLデータのPJL(Printer Job Language)部を生成し、これを上述のスプーラ440へ送信する。
このように、本実施例のコンピュータは、機能の異なるプリンタが接続される場合に、そのプリンタから取得した新規の情報を、プリンタドライバが予め有する機器情報に関連づけて参照情報として保存することにより、参照情報からコマンドを取得して、そのコマンドを用いてプリンタが解釈可能な印刷データを生成することが可能となる。
〔設定画面の構成〕
図12は、本実施例のコンピュータにおいてプリンタの各種機能を設定するための設定画面の一例を示す。
図12の設定画面には、プリンタの拡張機能を設定するためのタブページ1200が設けられている。プリンタに拡張機能が追加されていない場合の設定画面121において、拡張機能の表示1210は、ユーザが設定を行うことができないようオフとなっている。一方、拡張機能が存在する場合の設定画面122では、拡張機能表示1220はオンとなり、拡張機能の機能名が明示され、その機能の設定を行うための選択肢1230が用意される。ユーザは、プリンタのデフォルト機能と同じように、拡張機能に関しても設定を行うことができる。
図12の設定画面122より、拡張機能として「Z折り」1220が追加され、その折り目の有無及び方向を設定するための選択肢1230として「なし」、「左」、「右」及び「上」が用意されていることが分かる。
拡張機能は、プリンタから新たに機器情報を取得した際に、新規な情報として、既にコンピュータが有していた機器情報に追加された情報である。
図12のような設定画面は、図13(a)、(b)及び(c)においてテーブル形式で表されている機器情報、機器情報に関連づけられた第1の参照情報及び第1の参照情報に関連づけられた第2の参照情報に基づいて生成される。また、図12の設定画面122において拡張機能1220が設定される場合の処理内容の設定状態は、図13(d)のように、テーブル形式で表される。なお、機器情報、第1及び第2の参照情報並びに処理内容のデータ構造は、テーブル形式以外の形式でもよい。
〔機器情報及び処理内容のデータ構造〕
図13(a)は、本実施例における機器情報のデータ構造の一例を概略的に表す図である。
図7及び図8で説明したように、プリンタドライバ430は、所定のプリンタから読み出した機器情報と、既知の機器情報とを情報比較部713により比較して、所定のプリンタから読み出した機器情報に含まれる新しい情報、即ち、プリンタの拡張機能に係る追加情報を抽出し、これを既知の機器情報に加える。このように更新された機器情報は、図13(a)のようなデータ構造で機器情報保存部712に保存される。
図13(a)のデータ構造は、列2100、2200及び2300を有する。列2100には、プリンタが有している機能名が格納されており、列2200には、列2100に格納された機能が実行可能であるか否かを表すデータが格納されている。更に、列2200において、その機能が実行可能であって、機能実行時の詳細な設定を行うための選択肢が存在することを表すデータが格納されている場合には、列2300に選択肢の内容が格納されている。ただし、拡張機能においては、その実行可否及び選択肢の内容が列2200及び2300の対応する行に格納されず、代わりに、拡張機能の実際の機能を表す第1の参照情報に関連づけられている。
図13(b)は、本実施例における図13(a)の機器情報に関連づけられた第1の参照情報のデータ構造の一例を概略的に表す図である。
図13(b)のデータ構造は、列2610、2620、2630及び2640を有する。列2610には、設定画面上に実際に表示するための文字列が格納されている。列2620には、処理内容のデータ構造における所定領域を表す領域IDが格納されている。列2630には、プリンタが認識可能な、その機能に対応するコマンドが格納されている。更に、列2640において、拡張機能は、その機能の選択肢を表す第2の参照情報に関連づけられている。
図13(c)は、本実施例における図13(b)の第1の参照情報に関連づけられた第2の参照情報のデータ構造の一例を概略的に表す図である。
図13(c)のデータ構造は、列2710、2720及び2730を有する。列2710には、設定画面上に実際に表示するための文字列が格納されている。列2720には、プリンタドライバが認識可能な、選択肢の夫々の項目に対応する設定値が格納されている。列2730には、プリンタが認識可能な、選択肢の夫々の項目に対応するコマンドが格納されている。
なお、第1及び第2の参照情報も、機器情報と同じく、プリンタドライバの機器情報保存部712に保存される。
図7及び図8で説明したように、プリンタドライバ430は、機器情報保存部712に保存された機器情報に基づいて、表示部722を介してユーザに設定画面を表示する。そしてプリンタに拡張機能が存在する場合には、図13(a)、(b)及び(c)の機器情報並びに第1及び第2の拡張情報に基づいて、図12のような設定画面122が表示される。図12の設定画面122において、拡張機能表示1220に表示される機能名「Z折り」は、図13(b)に示した第1の拡張機能の列2610に格納された文字列であり、選択肢1230の表示される項目は、図13(c)に示した第2の拡張機能列2710に格納された文字列である。
また、図13(d)は、本実施例における図13(a)〜(c)の機器情報及び参照情報に基づく処理内容のデータ構造の一例を概略的に表す図である。
図13(d)のデータ構造は、DEVMODE構造体という構造体であって、列2400及び2500を有する。図13(d)のデータ構造は、更に、固定領域200aと拡張領域200bとに分けられている。
固定領域200aは、プリンタが予め有する機能に係る設定が格納される領域であって、固定領域200aにおいて、列2400には、プリンタが有している機能名が格納されており、列2500には、ユーザが設定画面で入力した印刷設定の設定値、即ち、図13(a)に示す機器情報の列2300に格納された選択肢、又は、先の実施例1のように、ある機能の選択肢の項目が追加された場合には図10(b)の参照情報により表される選択肢の中から、ユーザによって選択された値が格納されている。
拡張領域200bは、プリンタに追加された機能、即ち、拡張機能に係る設定が格納される領域であって、拡張領域200bにおいて、列2400には、拡張領域内の場所を表す領域IDが格納されており、列2500には、拡張機能の存在を表すフラグ2510と、ユーザが設定画面で入力した印刷設定の設定値、即ち、図13(c)の第2の参照情報により表される選択肢の中から、ユーザによって選択された値とが格納されている。
図13(a)の機器情報並びに図13(b)及び(c)の第1及び第2の拡張情報が保存された後に、ユーザが、図12の設定画面において拡張機能の設定を行い、選択肢1230の中からいずれかの項目を選択した場合を考える。例えば、ユーザが拡張機能1220「Z折り」の選択肢1230から項目「左」を選択したとすると、図13(b)の第1の参照情報の列2620には、文字列「Z折り」に対応する領域IDとして「5」が入力されているから、図13(d)のように、処理内容の拡張領域200bにおいて領域ID「5」に対応する行の列2500には、拡張機能の存在を表すようフラグ2510が立てられる。例えば、データが2進数で表される場合には、「1」がフラグオン、「0」がフラグオフを表すとする。更に、領域ID「5」に対応する行の列2500には、印刷設定2520として、図13(c)の第2の参照情報において文字列「左」に対応する設定値「1」が格納される。その後、図13(d)のようなデータ構造を有する処理内容は、上述のアプリケーション410に保存される。
次に、ユーザが、アプリケーション上で所定のプリンタへの印刷要求を行うと、プリンタドライバ430は、プリンタが解釈可能な印刷データを生成するために、アプリケーション410からの処理内容を読み込む。このとき、プリンタドライバ430は、読み込んだ処理内容を調べることで、その内容に未知の情報が含まれているか否かを判定するが、プリンタから機器情報を取得した際に新たに追加された情報を未知の情報として認識する。本実施例では、図13(d)の処理内容の拡張領域200bにおいて、フラグ2510が立てられている(「1」である)領域の領域ID「5」及び設定値「1」が未知の情報として扱われる。
図7及び図8を参照して上で説明したように、プリンタドライバ430は、処理情報に未知の情報が含まれていた場合に、プリンタが解釈可能な印刷データを生成するために、機器情報から未知の情報に対応するコマンドを取得する。以下、このコマンド取得動作について、図7のブロック図及び図14のフロー図を参照して更に詳細に説明する。
〔コマンド取得及びデータ生成〕
図14は、処理内容が図13(d)のようなデータ構成を有する場合のプリンタドライバ430におけるコマンド取得動作の一例を説明するフロー図である。
ユーザが、アプリケーション上で所定のプリンタへの印刷要求を行うと、印刷データ生成モジュール432の処理内容読込部741は、ステップS401において、アプリケーション410の処理内容保存部731に保存された、図13(d)のようなデータ構造を有する処理内容を読み込む。
最初に、ステップS402において、処理内容読込部741は、読み込んだ処理内容の固定領域200aのみを抽出して読み込み、先の実施例1で図11を参照して説明したコマンドの生成及び取得の動作、ステップS302〜S309を実行する。
固定領域の上記処理が完了した後に、ステップS403において、処理内容読込部741は、読み込んだ処理内容の拡張領域200bを抽出して読み込む。コマンド取得部742は、ステップS404において、読み込まれた拡張領域200bの一行目から順に、図13(d)の列2500に格納されたフラグ2510を読み出し、ステップS405において、フラグが存在するか否か(「1」であるか否か)を判定する。
判定の結果、フラグが存在しない(「0」である)場合には、ステップはS410に進む。
一方、判定の結果、フラグが存在する(「1」である)場合には、ステップはS406に進み、コマンド取得部742は、そのフラグに対応する領域の領域ID及び印刷設定を読み出す。次に、ステップS407において、コマンド取得部742は、機器情報処理モジュール433に対して、読み出した領域ID及び印刷設定に関する問い合わせを行う。機器情報処理モジュール433は、ステップS408において、機器情報保存部712に保存されている機器情報、本実施例では、図13(a)のようなデータ構造を有する機器情報を読み出して、その中から、コマンド取得部742から問い合わせのあった領域ID及び印刷設定に対応するコマンドを抽出し、ステップS409において、コマンド取得部742へ送信する。
図13(d)の処理内容において、領域ID「5」に対応する拡張領域200bの所定領域のフラグ2510が「1」であって、更に、その領域に印刷設定の設定値として「1」が格納されている場合に、コマンド情報取得部742は、領域ID「5」及び印刷設定値「1」に関して機器情報処理モジュール433へ問い合わせを行う。機器情報処理モジュール433は、コマンド情報取得部742からの問い合わせを受けて、機器情報保存部712に保存されている図13(a)の機器情報を読み出す。図13(a)の機器情報において機器の拡張機能に係る情報は、第1の参照情報として機器情報に関連づけられている。従って、機器情報処理モジュール433は、更に、同じく機器情報保存部712に保存されている図13(b)の第1の参照情報を読み出す。図13(b)の第1の参照情報より、コマンド取得部742から問い合わせのあった領域ID「5」に対応するコマンドは「ZFOLDING」であることが分かる。第1の参照情報において、領域ID「5」に対応するコマンドは、更に第2の参照情報に関連づけられているので、機器情報処理モジュール433は、更に、同じく機器情報保存部712に保存されている図13(c)の第2の参照情報を読み出す。図13(c)の第2の参照情報より、コマンド取得部742から問い合わせのあった印刷設定値「1」に対応するコマンドは「LEFT」であることが分かる。従って、機器情報処理モジュール433は、コマンド「ZFOLDING」及び「LEFT」をコマンド取得部742へ返す。
このように、印刷データ生成モジュール432は、コマンド取得部742により、未知の情報に対応するコマンド、即ち、プリンタの新たに追加された機能に対応するコマンドを取得することができる。
ステップS405においてフラグが存在しないことが確認された後、又はステップS406からS409においてコマンドを取得した後、ステップS410において、コマンド取得部742は、拡張領域200bにまだ読み出していないフラグが存在するか否かを判定する。
判定の結果、まだ読み出していないフラグが存在する場合には、ステップはS404に戻り、拡張機能に対応するコマンドを取得するための上記動作を繰り返す。
一方、判定の結果、拡張領域200bの全てのフラグが読み出されている場合には、ステップはS411に進む。ステップS411において、データ生成部743は、コマンド取得部742が取得したコマンドを用いて、プリンタが解釈可能な印刷データとして、例えばPDLデータのPJL(Printer Job Language)部を生成し、これを上述のスプーラ440へ送信する。
このように、本実施例のコンピュータは、機能の異なるプリンタが接続される場合に、そのプリンタから取得した新規の情報を、プリンタドライバが予め有する機器情報に関連づけて第1の参照情報として保存し、更に、新規の情報の詳細な設定を表す設定値を第2の参照情報として保存することにより、第1及び第2の参照情報の夫々から、新規の情報に対応するコマンドと、新規な情報に係る設定値に対応するコマンドとを取得して、それらのコマンドを用いてプリンタが解釈可能な印刷データを生成することが可能となる。
〔変形例〕
以上、本発明の実施形態では、プリンタドライバに関して説明したが、アプリケーションからの指示を機器が処理可能なデータへ変換するソフトウェアであれば、スキャナドライバ及びPC−FAXドライバ等の他のデバイスドライバにも適用することができる。
また、本発明の機能は、情報処理装置のハードディスク(HDD)、読出し専用メモリ(ROM)等のメモリに格納されたプログラムによっても実現されるとしたが、あるいは、情報処理装置においてハードウェアとして実現されても良い。
また、変形例でのコンピュータは、機器の機器情報を、所定の時点又は非同期に取得しても良い。
また、上記機器の機器情報は、例えば外部の記憶装置としてのサーバー装置で保存されても良い。
また、本発明の実施形態は、デバイスドライバドライバ及びそれに準じるモジュールの形態に限定されず、アプリケーション自身に適用させても良い。
以上、発明を実施するための最良の形態について説明を行ったが、本発明は、この最良の形態で述べた実施の形態に限定されるものではない。本発明の主旨を損なわない範囲で変更することが可能である。