以下に添付図面を参照して、この発明にかかるプリンタドライバ、記憶媒体、及び情報処理装置の最良な実施の形態を詳細に説明する。
(第1の実施の形態)
図1は、本発明の第1の実施の形態にかかるプリンタシステムの全体構成図を示した図である。図1に示すように、本実施の形態ではPC100とプリンタ150とがネットワーク160を介して接続されているものとする。そして、PC100からの印刷要求に応じて、プリンタ150が印刷処理を行う。
図2は、PC100の構成を示すブロック図である。図2に示すように、PC100は、アプリケーション101と、OS102と、プリンタドライバ103と、
部104と、通信部105とを備えている。図2に示すプリンタドライバ103内の機能ブロックは、プリンタ150の制御を実現するための機能又は手段を示している。
通信部105は、ネットワーク160を介して接続されたプリンタ150と情報の送受信を行う。
アプリケーション101は、利用者が利用するソフトウェアとする。ユーザはアプリケーション101で編集したデータを印刷したい場合、アプリケーション101が、印刷要求を受け付ける。この場合、アプリケーション101は、単体でプリンタ150に対する印刷データの生成を行わず、印刷要求と共に、印刷対象の情報をOS102に受け渡す。
OS102は、PC100のハードウェアとソフトウェアとを管理するプログラムである。OS102は、プログラムの起動、情報の読み込み制御、保存制御等を行う。OSのうち代表的なものとしては、UNIX(登録商標)等が知られている。
また、OS102は、アプリケーション101から受け渡された印刷要求と共に、印刷対象の情報を、プリンタドライバ103に受け渡す。
記憶部104は、様々な情報を記憶する記憶手段とする。記憶される情報としては、プラグインによる所定の機能(例えば、スタンプ、ボールドラインなど)を実現するための部分的な処理に関する情報を定義した設定情報を記憶する。この設定情報の例としては、レイアウト情報、保存先情報、及び機能情報、プラグイン情報とする。これら設定情報(レイアウト情報、保存先情報、機能情報、及びプラグイン情報)は、プラグインが有する機能を実現するために、各モジュールが実行する部分的な処理が定義されている。部分的な処理の定義としては、処理に用いる設定値や、プラグインの機能に関する設定値の変更するための表示情報など、処理に必要なあらゆる情報を含むものとする。
プラグイン情報は、インターフェース部112を介して追加されたプラグインが記述された情報とする。そして、コアドライバ111の画面表示部121、設定保存部122、及び設定管理部123は、インストールされたプラグインを確認する際に、記憶部104のプラグイン情報を参照する。これにより、インストールされているプラグインを確認できる。
プリンタドライバ103は、コアドライバ111と、インターフェース部112と、スタンププラグイン113と、ボールドラインプラグイン114とを備えている。
コアドライバ111は、画面表示部121と、設定保存部122と、設定管理部123と、描画部124と、を備え、プリンタドライバ103としての標準機能を有する。これら、画面表示部121、設定保存部122、設定管理部123、及び描画部124は、プリンタドライバ103としての機能を果たすためのモジュール群とする。
コアドライバ111に含まれるモジュール群は、印刷処理のためにのみならず、インストールされたプラグインについて、当該プラグインに含まれる(追加)モジュールではできない部分的な処理を、上述した各設定情報(レイアウト情報、保存先情報、機能情報、プラグイン情報)に従って代行する。
画面表示部121は、印刷設定画面を表示する。本実施の形態にかかる画面表示部121は、記憶部104に記憶されたレイアウト情報に基づいて印刷設定画面等を表示する。
レイアウト情報は、各設定の表示方法や表示位置等が記述された情報とする。レイアウト情報は、設定画面に表示されるUIコンポーネントのレイアウトが記述されている。
図3は、レイアウト情報の例を示した図である。図3に示すレイアウト情報は、スタンププラグインや、ボールドラインプラグインはまだ追加されていない場合とする。そして、図3に示すレイアウト情報では、JSON形式で記述するが他の形式でも良い。
図3に示すレイアウト情報の例では、UIコンポーネント毎にレイアウトデータの記述されている。UIコンポーネント毎のレイアウトデータはそれぞれ、属性としてtype,name,axisを有している。
typeは、UIコンポーネントの種類を表している。typeの値であるComboBoxはコンボボックスコンポーネントで表示することを示している。CheckBoxはチェックボックスコンポーネントで表示することを示している。SpinBoxはスピンボックスコンポーネントで表示することを示している。EditBoxはエディットボックスコンポーネントで表示することを示している。
nameは、設定の名前を表している。nameの値のうち、layoutは、集約設定であることを指定している。bookletは、製本設定であることを示している。papersizeは、印刷用紙設定であることを指定している。copiesは、部数設定であることを指定している。useridは、利用者別ID設定であることを指定している。
axisは、表示位置の座標を表している。axisの属性である、xはダイアログボックスの左上原点からの水平方向座標を示している。yはダイアログボックスの左上原点からの垂直方向座標を示している。例えば、集約設定のaxis301では、コンボボックスコンポーネントで水平位置25、垂直位置30に表示することが記述されている。
そして、画面表示部121は、記憶部104からレイアウト情報を読み込み、読み込んだレイアウト情報に従って設定画面を生成し、設定画面を表示する。
なお、画面表示部121は、レイアウト情報に記述されている各UIコンポーネントのうち、設定管理部123で管理されている設定項目のみを表示する。
図4は、図3のレイアウト情報を読み込んだ場合に、コアドライバ111の画面表示部121が表示する印刷設定画面の例を示した図である。なお、図4に示す例では、レイアウト情報に記述されている各設定が、すべて設定管理部123で管理されているものとする。図4に示すように、Layoutに集約設定レイアウトが、Bookletに中綴じ設定レイアウトが、copiesに部数設定レイアウトが、Useridに利用者別ID設定レイアウトが、Papersizeに用紙サイズ設定レイアウトが配置されている。
また、図4に示す、OKボタンは印刷設定の変更の保存するボタンであり、Cancelボタンは、キャンセルを実行するボタンである。これらOKボタン及びCancelボタンは、レイアウト情報とは関係なく実装しているものとする。
図2に戻り、設定管理部123は、印刷処理に用いられる設定(各設定の設定値など)を管理する。本実施の形態にかかる設定管理部123は、印刷設定を管理し、印刷設定の各設定の設定可能範囲や各設定値間の禁則を解決する。
また、設定管理部123は、記憶部104に記憶された機能情報に基づいて、印刷処理に用いられる設定(各設定の設定値など)を管理する。
機能情報は、各設定値の設定可能な範囲や各設定間の禁則が記述されている。具体的な例としては、機能情報は、プリンタドライバの持つ各設定やその禁則が記述されている。
図5は、機能情報の例を示した図である。図5に示す機能情報は、スタンププラグインや、ボールドラインプラグインはまだ追加されていない場合とする。そして、図5に示す機能情報では、XML形式で記述するが他の形式でも良い。
図5に示す機能情報の例では、各設定の情報を、itemタグ毎に定義されている。itemタグは、nameとtypeの属性を持っている。
属性nameは、設定の名前を表している。属性nameは、レイアウト情報のnameと対応している。そして、属性nameの値である、layoutは集約設定であることを指定している。bookletは製本設定であることを指定している。papersizeは印刷用紙設定であることを指定している。copiesは部数設定であることを指定している。useridは利用者別ID設定であることを指定している。
属性typeは、入力される設定値の形式を表している。typeの値である、pickoneは、選択肢形式を指定している。stringは、文字列入力形式を指定している。numberは、数値入力形式を指定している。
itemタグは、図5に示す集約設定501のようにconstraintタグを持つことができる。constraintタグは、親タグであるitemタグの設定の禁則情報を表している。constraintタグ内の属性であるfixvalueは、constraintタグに禁則条件が合致している場合に強制的に変更される設定値を表している。
constraintタグは、図5の集約設定501のようにconditionタグを持つことができる。conditionタグは親タグであるconstraintタグの禁則条件を表しており、属性であるexpressionは、その条件を表している。
集約設定においては、例えば、bookletがONの場合に禁則条件に合致し、layout(集約設定)の設定値がOFFに強制的に変更される。
pickoneタグは、親タグであるitemタグのtypeが選択肢形式の時の選択可能な設定値を表している。そして、pickoneタグ内の属性nameは、設定値が設定されている。また、図5の例とは異なるが、pickoneタグは、constraintタグを持つことができる。このように、pickoneタグ自体、すなわち選択肢自身も禁則情報を持つことができる。
pickoneの属性であるnameの値は、集約設定において、offが機能オフ、2in1が2イン1印刷、4in1が4イン1印刷を表している。また、中綴じ設定において、offが機能オフ、onが機能オンを表している。さらに、用紙サイズ設定において、a3がA3用紙、a4がA4用紙を表している。
rangeタグは、親タグであるitemタグのtypeが数値形式の時の選択可能な範囲を表しており、minは最小値、maxは最大値を表している。
stringタグは、親タグであるitemタグのtypeが文字列形式の時の選択可能な文字列を表している。そして、minが最小文字数、maxが最大文字数を表している。chartypeは、文字の種類を表している。chartypeの設定値のalphanumericは、数値とアルファベットの文字列が入力可能であることを表している。以上のように、機能情報には、コアドライバ111の設定管理部123の行うべき動作、換言すれば各設定の設定値の管理手法が記述されている。
そして、設定管理部123は、上述した機能情報を読み込むことで、管理すべき設定の種類や、その禁則処理を決定し、印刷処理に関する設定を行うことになる。
設定保存部122は、設定管理部123で管理されている各設定値をDevmodeやOS102の(図示しない)レジストリ等のデータ保存領域に保存する。また、設定保存部122は、記憶部104に記憶された保存先情報を参照する。
Devmodeとは、印刷に関する様々な設定を保持するために、OS102から提供される構造体とする。
保存先情報は、各設定の保存場所についての情報が記述されている。図6は、機能情報が図5である場合における保存先情報の例を示した図である。図6に示す例では、保存先情報はJSON形式で記述されているが他の形式であっても良い。
保存先情報のDevmodeとregistoryというキー内に記述された各設定名は、機能情報およびレイアウト情報に記述されている各設定名と対応関係を有している。例えば、layoutは集約設定であることを、bookletは製本設定であることを、papersizeは印刷用紙設定であることを、copiesは部数設定であることを、useridは利用者別ID設定であることを指定している。
そして、Devmodeというキー内に記述された各設定名で示された設定は、Devmode構造体に保存される。また、registoryというキー内に記述された各設定名で示される設定は、レジストリに保存される。保存される各設定は、設定管理部123で管理されている設定値とする。
このように、設定保存部122は、保存先情報を読み込むことで各設定の保存場所を決定する。そして、設定管理部123が、決定された保存場所から各設定値を読み出して、印刷処理に必要な設定を行うこととする。
描画部124は、アプリケーション101から印刷を要求されたデータをプリンタが解釈可能な印刷命令に変換する。そして変換された印刷命令は、通信部105を介して、プリンタドライバ103に送信される。
図2に戻り、破線130で囲まれたスタンププラグイン113、及びボールドラインプラグイン114は、コアドライバ111に機能を追加するダイナミック・リンク・ライブラリであるプラグインとする。これらプラグインは、所定の機能を実現するために、一つ以上のモジュールで構成されている。
一般的なプラグインは、画面表示部、設定管理部、及び描画部のいずれか一つ以上のモジュールで構成される。
そして、プラグインの画面表示部は、インターフェース部112を介して行われたコアドライバ111の画面表示部121からの表示命令に従って、プラグインが有する機能についての設定画面を表示する。また、プラグインの設定管理部は、インターフェース部112を介して行われたコアドライバ111の設定管理部123からの命令に従って、プラグインが有する機能についての各設定値の設定可能範囲や各設定値間の禁則を解決する。また、プラグインの描画部は、プラグインが有する機能を用いてなされた描画機能を実現する。
つまり、コアドライバ111の画面表示部121の拡張部分がプラグインの画面表示部となる。そして、コアドライバ111の設定管理部123の拡張部分がプラグインの設定管理部となる。さらに、コアドライバ111の描画部124の拡張部分がプラグインの描画部となる。
本実施の形態にかかるプリンタドライバ103は、追加されるプラグインにおいて、上述した3つのモジュール全てが必要不可欠ではないという特徴を有する。つまり、従来のプラグインでは、追加する機能を実現するために3つのモジュール全て作成する必要があった。本実施の形態においては、追加するプラグインによっては、コアドライバ111のモジュールを代替して利用することで、全てのモジュールを作成する必要がなくなった。これにより、プラグインの開発負担を軽減している。
コアドライバ111のモジュールを代替して利用するために、コアドライバ111の各モジュールが参照する外部ファイルを更新する必要がある。つまり、必要なモジュールの追加と、コアドライバ111の各モジュールが参照する設定情報を更新するだけで、プラグインとして動作することができる。
インターフェース(I/F)部112は、プラグインの追加を受け付けるインターフェースとする。プリンタドライバ103にプラグインが追加された場合、当該インターフェース部112を介して、追加されたプラグインの各モジュールを呼び出すことができる。また、追加されたプラグインも、当該インターフェース部112を介して、コアドライバ111の各モジュールを呼び出すことが可能となる。
本実施の形態にかかるプリンタドライバ103に関するプラグインの追加は、プラグイン自身のダイナミック・リンク・ライブラリの追加と、レイアウト情報、機能情報、保存先情報、及びプラグイン情報のいずれか一つ以上に対して記述を追加することで行う。これにより、PC100にインストール済みのプリンタドライバ103に対して、プラグインの追加を容易に行うことが可能となる。つまり、ユーザはプリンタドライバを再インストールする必要がなくなる。
本実施の形態では、スタンププラグイン113と、ボールドラインプラグイン114とを追加する例について説明する。スタンププラグイン113は、指定した座標に指定したスタンプを印字するスタンプ機能を有する。また、ボールドラインプラグイン114は、集約時に論理ページに仕切り線を付ける仕切り線機能を有する。
次に、プラグインを追加するインストーラについて説明する。図7は、スタンププラグイン113をインストールするためのスタンププラグインインストーラ700の構成を示したブロック図である。図7に示すように、スタンププラグインインストーラ700は、スタンププラグイン113と、追加レイアウト情報701と、追加保存先情報702と、起動部703とを備えている。スタンププラグイン113は、図2のスタンププラグイン113と同様の構成を備えている。
追加レイアウト情報701は、スタンププラグイン113の機能を実現するために、記憶部104のレイアウト情報に対して追加する情報が格納されている。
図8は、追加レイアウト情報701の例を示した図である。図8に示すように、スタンププラグイン113に関する情報を設定画面に表示するための情報が格納されている。
図7に戻り、追加保存先情報702は、スタンププラグイン113の機能を実現するために、記憶部104の保存先情報に対して追加する情報が格納されている。
図9は、追加保存先情報702の例を示した図である。図9に示すように、スタンププラグイン113の機能を実現するために用いられる設定の保存先が格納されている。
図7に戻り、起動部703は、追加部711と、登録部712を備え、プラグインのインストールを制御する。具体的には、起動部703は、ユーザによりスタンププラグインインストーラ700が起動された場合に、プラグインの追加対象となるドライバを、OS102にインストールする制御をした後、プリンタドライバ103に、スタンププラグイン113を追加する。
追加部711は、追加情報(追加レイアウト情報、追加保存先情報、追加機能情報)を、記憶部104に記憶された各設定情報(レイアウト情報、保存先情報、機能情報)に追加する処理を行う。
登録部712は、記憶部104のプラグイン情報に、追加するプラグインのモジュールを示すファイル名を、各スコープに登録する。
上述した例では、スタンププラグインインストーラ700の場合について説明した。なお、上に示す例では記述されていないが、設定情報である機能情報に追加する情報として、追加機能情報などが含まれていてもよい。
また、ボールドラインプラグインインストーラもほぼ同様の構成で実現できる。この場合、ボールドラインプラグインインストーラは、ボールドラインプラグインの他に、追加レイアウト情報、追加保存先情報、追加機能情報が必要となる。スタンププラグインインストーラ700と異なる点としては追加機能情報を備えている点である。
図10は、ボールドラインプラグインインストーラの追加機能情報の例を示した図である。図10に示すように、ボールドラインプラグイン114の機能を実現するための設定が格納されている。
本実施の形態にかかるプラグインインストーラでは、追加するプラグインが1つの場合について説明したが、追加するプラグインが複数であっても良い。
次に、本実施の形態にかかるスタンププラグインインストーラ700を用いたプラグインのインストール処理について説明する。図11は、本実施の形態にかかるPC100に対するスタンププラグインインストーラ700における上述した処理の手順を示すフローチャートである。
まずは、ユーザからの操作に従って、スタンププラグインインストーラ700が実行される。これに伴い、起動部703が起動する(ステップS1101)。
次に、起動部703が、プリンタドライバ103のインターフェース部112を呼び出す(ステップS1102)。そして、インターフェース部112が、インストールOKである旨を、スタンププラグインインストーラ700に出力する(ステップS1103)。
そして、スタンププラグインインストーラ700は、プラグインの追加対象となるドライバが保存されているインストールディレクトリに、当該プラグインの画面表示部131、設定管理部132、及び描画部133をインストール(コピー)する(ステップS1104)。
その後、スタンププラグインインストーラ700の追加部711が、プリンタドライバ103のコアドライバ111が参照するレイアウト情報に、スタンププラグインの追加レイアウト情報を追加する(ステップS1105)。
さらに、追加部711は、プリンタドライバ103のコアドライバ111が参照する保存先情報に、スタンププラグインの追加保存先情報を追加する(ステップS1106)。
その後、登録部712が、プリンタドライバ103のコアドライバ111が参照するプラグイン情報に、スタンププラグイン113の画面表示部、設定管理部、及び描画部のファイル名を各スコープに登録する(ステップS1107)。
上述した処理手順により、スタンププラグイン113のインストールが終了する。なお、上述した処理手順では行わなかったが、必要に応じて機能情報の追加も行う。例えばボールドラインプラグインをインストールする場合には行われる。
また、上述したように、プリンタドライバ103のインストール後に、プラグインを追加することに制限するものではなく、PC100にインストールする前のプリンタドライバ103のパッケージに対して、プラグインを追加しても良い。この場合も同様に、スタンププラグイン113の各モジュールをパッケージに追加すると共に、インストール後に展開される各設定情報に対して情報を追加する等の処理を行うこととする。
図2に戻り、スタンププラグイン113は、画面表示部131と、設定管理部132と、描画部133とを備え、印刷処理におけるスタンプ機能を実現するプラグインとする。
スタンププラグイン113のスタンプ機能は、座標の指定可能な範囲を、用紙サイズから決定する機能である。スタンプ機能について指定可能な範囲を決定する処理が複雑で、記憶部104に記憶された機能情報に記述することは難しい。このため、スタンププラグイン113は、当該処理を行うための設定管理部132を備える。また、スタンププラグイン113は、スタンプの位置を視覚的にわかるプレビューを表示させるが、当該プレビューの表示はレイアウト情報に定義できない。このため、スタンププラグイン113は、当該表示を行うための画面表示部131を備える。さらに、スタンププラグイン113は、スタンプを印字するための描画部133を備える。
画面表示部131は、スタンプ設定画面を表示する。設定管理部132は、スタンプ処理に用いられる設定を管理する。本実施の形態にかかる設定管理部123は、印刷設定を管理し、印刷設定の各設定の設定可能範囲や各設定値間の禁則を解決する。描画部133は、印刷対象に対して行うスタンプの描画処理を行う。
ボールドラインプラグイン114は、描画部141を備え、印刷処理におけるボールドライン機能を実現するプラグインとする。なお、当該プラグインのインストール手順は、スタンププラグイン113とほぼ同様のため説明を省略する。また、描画部141は、ボールドラインの描画処理を行う。
ボールドラインプラグイン114は、仕切り線機能が、集約がoff以外の時に選択可能となるプラグインとする。その禁則処理は、機能情報に十分記述できる処理であるため、ボールドラインプラグイン114は、設定管理部を有さず、当該禁則処理を機能情報に追記することで対応する。また、ボールドラインプラグイン114について設定画面で表示したい項目が、レイアウト情報で記述できる範囲とする。そこで、ボールドラインプラグイン114は、画面表示部を有さず、表示したい項目を、記憶部104のレイアウト情報に追記することとした。これにより、ボールドラインプラグイン114に関する設定項目は、コアドライバ111の画面表示部121で行う。また、ボールドラインプラグイン114は、論理ページに仕切り線を印字する描画部141を有する。
本実施の形態にかかるプリンタドライバ103に追加する、スタンププラグイン113については、画面表示部131、設定管理部132、及び描画部133を開発する必要がある。これに対し、ボールドラインプラグイン114については、描画部141を開発するだけで十分な機能を提供できる。そして、また、一切の開発を行わないモジュールである、設定変更の受け付けや禁則処理などを設定ファイルに記述を追加するだけで実現することができる。
また、本実施の形態とは異なるが、例えば、各印刷設定を元に簡易的なプレビューを提示するプラグインを追加する場合などは、設定表示部だけを持つプラグインを開発することで実現できる。このようにプラグイン毎に、必要なモジュールのみ開発すればよい。
図12は、スタンププラグイン113とボールドラインプラグイン114とを追加した後のレイアウト情報を示した図である。図12に示すレイアウト情報は、追加されたプラグインに関する機能の設定を行うためのレイアウトデータ(表示情報)が定義されている。
ただし、図12に示すレイアウト情報では、コアドライバ111に関する記述は、図3から変更されていない。そして、当該レイアウト情報では、スタンププラグイン113とボールドラインプラグイン114に関する記述が追加されている。
ボールドラインプラグイン114に関する記述は、チェックボックス形式でボールドライン設定を追加することを示している。これにより、ボールドラインに関する設定のUI表示処理の全てをコアドライバ111の画面表示部121が行うことになる。つまり、ボールドラインプラグイン114では、画面表示部がなくとも、設定画面上で設定することが可能となる。
スタンププラグイン113に関する記述では、属性typeの値であるPluginDialogButtonが、スタンププラグイン113の設定画面を呼び出すプッシュボタンを示すUIコンポーネントとして表されている。そして、属性nameの値には、呼び出すプラグイン名が記述されている。このプラグイン名は、プラグイン情報に記述されているプラグイン名と関連付けされている。コアドライバ111の画面表示部121は、レイアウト情報から読み込んだプラグイン名をキーとして、プラグイン情報から呼び出すべきプラグインのファイル名を取得できる。これにより、スタンププラグイン113の画面表示部131を呼び出すことができる。
図13は、スタンププラグイン113とボールドラインプラグイン114とを追加した後に、コアドライバ111の画面表示部131が表示する印刷設定画面の例を示した図である。図13に示す印刷設定画面の例では、図4の印刷設定画面と比べて、画面右上にある中綴じ設定のチェックボックス1301と、画面右下にあるスタンププラグイン113の設定画面を呼び出すプッシュボタン1302が追加されている。
次に、プッシュボタン1302が押下された場合に表示する画面について説明する。図14は、スタンププラグイン113の画面表示部131が表示する、スタンププラグイン113の設定画面の例を示した図である。
図14に示す、スタンププラグイン113の設定画面の例では、画面左のチェックボックス1401が、スタンプ機能のON/OFFを決定する。画面左の“Stamp Image”がスタンプされる画像を選択できる。例えば、図14に示す例では、“Sample”が指定されているため、文字列“Sample”が、記録紙に印字される。画面右の“Axis X”は、スタンプ機能が印字される水平方向の座標を指定する。“Axis X”は、スタンプ機能が印字される垂直方向の座標を指定する。
図15は、スタンププラグイン113とボールドラインプラグイン114とを追加した後の保存先情報を示した図である。図15に示す保存先情報では、コアドライバ111に関する記述は、図6から変更されていない。そして、当該保存先情報では、スタンププラグイン113とボールドラインプラグイン114に関する記述が追加されている。
ボールドラインプラグイン114に関する記述では、ボールドラインという仕切り線のON/OFFの設定値がDevmode構造体に保存されることが指定されている。
スタンププラグイン113に関する記述では、設定名“stamp”により、スタンプ機能のON/OFFの設定値をDevmodeに保存することが指定されている。また、設定名“stamp_image”により、スタンプの種類を指定する値をDevmodeに保存することが指定されている。そして、設定名“stamp_axis_x”により、スタンプ機能として印字される水平方向の座標の設定値をDevmodeに保存することが指定されている。設定名“stamp_axis_y”により、スタンプ機能として印字される垂直方向の座標の設定値をDevmodeに保存することが指定されている。
図16は、スタンププラグイン113とボールドラインプラグイン114とを追加した後の機能情報を示した図である。図16に示す機能情報では、追加されたプラグインによる機能で用いる設定値を定義されている。
ただし、図16に示す機能情報では、コアドライバ111に関する記述は、図5から変更されていない。そして、図5に記述された機能情報と比べて、ボールドラインプラグイン114に関する記述が追加されている。
図16の機能情報で示された、ボールドライン設定は、仕切り線のON/OFF機能の設定であり、ボールドラインは集約がなしの時に、強制的に機能が“OFF”となり、それ以外の場合では、機能のON/OFFが選択可能となるように記述されている。機能情報に基づいて、コアドライバ111の設定管理部123が、ボールドラインの設定を管理するため、ボールドラインプラグイン114は設定管理部123を必要としない。
スタンププラグイン113の各設定であるstamp、stamp_image、stamp_axis_x、stamp_axis_yは、スタンププラグイン113の設定管理部132より管理される。このため、機能情報には、スタンププラグイン113による記述がない。
上述したように、各プラグインは、必要に応じてモジュール(画面表示部、設定管理部、及び描画部)を備えれば良く、必要ない場合にはコアドライバ111のモジュール(画面表示部121、設定管理部123、及び描画部124)を呼び出せばよい。これにより、必要のないモジュールの作成が省略されるため、開発負担を軽減することができる。
図17は、スタンププラグイン113とボールドラインプラグイン114を追加した場後のプラグイン情報を示した図である。当該プラグイン情報は、いずれの形式でも良いが、本実施の形態では“ini”形式を用いた。
図17に示すプラグイン情報は、“ui_plugin”と、“setting_manager_plugin”と、“graphic_plugin”と、の三つのスコープを持っている。
“ui_plugin”は、各プラグインの名称と、画面表示部のファイル名とを対応付けて保持する。そして、“ui_plugin”に記述された各プラグインのファイル名を用いて、コアドライバ111などの画面表示部121から、各プラグインの画面表示部を呼び出すことができる。つまり、プラグインの画面表示部は、コアドライバの画面表示部によってのみ呼び出される。
“setting_manager_plugin”は、各プラグインの名称と、各プラグインの設定管理部のファイル名とを対応付けて保持する。そして、“setting_manager_plugin”に記述された各プラグインのファイル名を指定することで、コアドライバ111などの設定管理部123から、各プラグインの設定管理部を呼び出すことができる。つまり、プラグインの設定管理部は、コアドライバの設定管理部によってのみ呼び出される。
“graphic_plugin”は、各プラグインの名称と、各プラグインの描画部のファイル名とを対応付けて保持する。そして、“graphic_plugin”に記述された各プラグインのファイル名を指定することで、コアドライバ111などの描画部124から、各プラグインの描画部を呼び出すことができる。つまり、プラグインの描画部は、コアドライバの描画部によってのみ呼び出される。
そして、図17に示す例では、ボールドラインプラグイン114は描画部141しか有していないため、“graphic_plugin”にのみ記述されている。
図17に示すプラグイン情報の例では、スタンププラグイン113の各モジュールについて同一のダイナミック・リンク・ライブラリを指定したが、別々のダイナミック・リンク・ライブラリを指定してもよい。
つまり、画面表示部121、設定保存部122、設定管理部123、及び描画部124で示されたモジュール群は、プラグインが実行する所定の機能に必要な処理であって、プラグインを構成するモジュールではできない部分処理を、設定情報(レイアウト情報、保存先情報、機能情報、及びプラグイン情報)に従って代行する。
そして、記憶部104に記憶される設定情報が、プラグインのインストーラにより書き込まれ、画面表示部121、設定保存部122、設定管理部123、及び描画部124が、書き込まれた設定情報を参照することで、代行することを可能としている。
次に、以上のように構成された本実施の形態にかかるPC100における全体的な印刷処理について説明する。図18は、本実施の形態にかかるPC100における上述した処理の手順を示すフローチャートである。
まず、PC100では、アプリケーション101を起動する(ステップS1801)。そして、アプリケーション101からの要求に従って、コアドライバの画面表示部121が、印刷設定画面を表示する(ステップS1802)。
次に、画面表示部121は、プラグイン情報を参照し、画面表示部を有するプラグインがあるか否かを判別する(ステップS1803)。画面表示部を有するプラグインが存在しないと判別した場合(ステップS1803:No)には、ステップS1805に進む。
一方、画面表示部を有するプラグインが存在すると判別した場合(ステップS1803:Yes)には、各プラグインの画面表示部が、設定画面を表示する(ステップS1804)。その後ステップS1805に進む。
そして、プリンタドライバ103は、ステップS1802及びステップS1804で表示した設定画面から、印刷設定の変更を受け付ける(ステップS1805)。
次に、コアドライバ111の設定管理部123が、受け付けた印刷設定について禁則チェックを行う(ステップS1806)。
その後、コアドライバ111の設定管理部123は、プラグイン情報を参照し、設定管理部を有するプラグインが存在するか否かを判別する(ステップS1807)。存在しないと判別した場合(ステップS1807:No)、ステップS1809に進む。
設定管理部を有するプラグインが存在すると判別した場合(ステップS1807:Yes)、各プラグインの設定管理部が禁則チェックを行う(ステップS1808)。
その後、プリンタドライバ103は、ユーザの操作から、印刷設定画面を閉じる旨の操作を受け付ける(ステップS1809)。
次に、設定保存部122が、印刷設定の変更結果を、Devmodeや保存領域に保存する(ステップS1810)。
そして、アプリケーション101が印刷を実行する(ステップS1811)。
そして、プリンタドライバ103のコアドライバ111における、描画部124が印刷処理を実行する(ステップS1812)。その後、描画部124は、プラグイン情報を参照し、描画部を持つプラグインが存在するか否かを判別する(ステップS1813)。存在しないと判別した場合には(ステップS1813:No)、ステップS1815に進む。
一方、描画部124が存在すると判別した場合(ステップS1813:Yes)、各プラグインの描画部が、印刷に関する描画処理を実行する(ステップS1814)。
最後に、アプリケーション101を終了して(ステップS1815)、処理を終了する。
上述した処理手順により、コアドライバ111の各モジュール、及びプラグインの各モジュールの処理が実行されるので、プラグインの機能を伴う印刷処理が可能となる。以下に、各ステップの詳細な手順について説明する。
次に、図18のステップS1802で示した、本実施の形態にかかるプリンタドライバ103における設定画面の表示処理について説明する。図19は、本実施の形態にかかるプリンタドライバ103における上述した処理の手順を示すフローチャートである。
まず、コアドライバ111の画面表示部121は、レイアウト情報を参照して、各コンポーネントのレイアウトデータのリストを取得する(ステップS1901)。
次に、画面表示部121は、レイアウトデータのリストが空か否か判別する(ステップS1902)。空ではないと判別した場合(ステップS1902:No)、リストから1つレイアウトデータを読み込む(ステップS1903)。
そして、画面表示部121は、レイアウトデータのnameに指定されている設定名に基づいて、設定管理部123から設定値、禁則に合致しているか否か、又は選択肢等の設定の情報を取得する。
その後、画面表示部121は、設定管理部123から、設定の情報を取得できたか否か判別する(ステップS1904)。取得できたと判別した場合(ステップS1904:Yes)、レイアウトデータと設定の情報に従って、表示する(ステップS1905)。
一方、画面表示部121は、設定の情報を取得できなかったと判別した場合(ステップS1904:No)、PluginDialogButtonのようにプラグインを呼び出すコンポーネントであるか否かを判別する(ステップS1906)。当該コンポーネントではないと判別した場合(ステップS1906:No)、ステップS1902に進む。
そして、画面表示部121は、当該コンポーネントではあると判別した場合(ステップS1906:Yes)、プラグイン情報から該当プラグインのファイル名を取得する。
その後、画面表示部121は、プラグイン情報から該当プラグインのファイル名を取得できたか否かを判別する(ステップS1907)。取得できなかった場合(ステップS1907:No)、ステップS1902から処理を開始する。
また、画面表示部121は、プラグイン情報から該当プラグインのファイル名を取得できたと判別した場合(ステップS1907:Yes)、レイアウトデータと設定の情報に従いコンポーネントを表示する(ステップS1905)。
そして、ステップS1902で、リストが空と判別した場合(ステップS1902:Yes)、処理を終了する。
上述した処理手順により、設定画面には、プリンタドライバ103でサポートされている設定やプラグインのコンポーネントが表示される。
また、画面表示部121は、プラグインの呼び出しを行わないコンポーネントについて、当該コンポーネントに対応する設定の情報が、コアドライバ111の設定管理部123又はプラグインの設定管理部で管理されていない場合、その設定の情報をプリンタドライバ103がサポートしていないものと判断し、表示しない。
また、画面表示部121は、設定画面を表示する際に、プラグインの呼び出しを行うコンポーネントについて、当該プラグインがプラグイン情報に記述されている場合に限り表示し、プラグイン情報に記述されていない場合は当該コンポーネントを表示しない。
次に、本実施の形態にかかるプリンタドライバ103が設定画面を表示する際の各モジュール間の処理について説明する。図20は、本実施の形態にかかるプリンタドライバ103における上述した処理の手順を示すシーケンス図である。なお、当該シーケンス図は、図18のステップS1802を詳細に示したシーケンスである。
まず、ユーザから、設定画面の表示命令を画面表示部121が受け付ける(ステップS2001)。
次に、画面表示部121が、設定保存部122にDevmodeを受け渡し、設定管理部の初期化を要求する(ステップS2002)。
そして、設定保存部122が、設定管理部123に設定のリストの取得命令を行う(ステップS2003)。そして、設定管理部123が、プラグイン情報を参照し、特定されたスタンププラグイン113の設定管理部132に設定のリストの取得要求を行う(ステップS2004)。
これに伴い、スタンププラグイン113の設定管理部132は、設定管理部123に、スタンププラグイン113が管理している設定のリストを返す(ステップS2005)。
次に、設定管理部123が、コアドライバ111用に管理している設定のリストに、スタンププラグイン113の設定のリストを追加して、設定保存部122に返す(ステップS2006)。
そして、設定保存部122が、記憶部104などの設定値が保存された領域から、リストに格納された設定に対応する設定値を取得する(ステップS2007)。
次に、設定保存部122は、ステップS2006で受け取った設定リストの各設定に、Devmodeの値及び保存された領域から取得した設定値を、設定管理部123に対して反映を要求する(ステップS2008)。
そして、設定管理部123が、スタンププラグイン113において管理されている設定に対応する設定値を、設定管理部132に対して反映を要求する(ステップS2009)。
次に、設定管理部123が、コアドライバ111が管理する各設定の設定値に対する禁則チェックを行う(ステップS2010)。
次に、設定管理部123が、スタンププラグイン113の設定管理部132が管理している各設定の禁則チェックを行う(ステップS2011)。
その後、画面表示部121が、レイアウト情報に記述されている各設定の情報の取得要求を行う(ステップS2012)。なお、設定の情報とは、設定の設定値や禁則や選択肢等とする。
さらに、設定管理部132が、要求された設定の情報を返す(ステップS2013)。その後、画面表示部121が、受け取った各設定の情報と、レイアウト情報により、設定画面を表示する(ステップS2014)。
上述した処理手順により、設定画面を表示することができる。
次に、本実施の形態にかかるプリンタドライバ103が必要とする動作を行う際の各モジュール間の処理について説明する。図21は、本実施の形態にかかるプリンタドライバ103における上述した処理の手順を示すシーケンス図である。
図21に示す例では、プリンタドライバ103に既にスタンププラグイン113とボールドラインプラグイン114とが追加された場合であって、アプリケーションからDevmodeの修正命令を受け付けた時のシーケンスとする。
まず、アプリケーション101が、設定保存部にDevmodeの修正命令を行う(ステップS2101)。次に、設定保存部122が、設定管理部123に設定のリストの取得命令を行う(ステップS2102)。
その後、設定管理部123が、スタンププラグイン113の設定管理部132に設定のリストの取得命令を行う(ステップS2103)。
次に、設定管理部132は、スタンププラグイン113用に管理している設定のリストを、設定管理部123に返す(ステップS2104)。その後、設定管理部123は、自らが管理している設定のリストに、スタンププラグイン113の設定リストを追加して、設定保存部122に返す(ステップS2105)。
そして、設定保存部122が、記憶部104などの保存領域から、設定値を取得する(ステップS2106)。
次に、設定保存部122は、ステップS2105で受け取った設定リストの各設定に、Devmodeの値と保存領域に保存されていた設定値を反映するように、設定管理部123に要求する(ステップS2107)。
そして、設定管理部123が、スタンププラグイン113の設定管理部132に対して、スタンププラグイン113で管理する設定(ステップS2104で受け取ったリストの各設定名)へ、ステップS2107で入力された設定値を反映するように要求する(ステップS2108)。
次に、設定管理部123が、自己が管理する各設定について禁則チェックを行う(ステップS2109)。その後、設定管理部123が、スタンププラグイン113の設定管理部132が管理している各設定について禁則チェックを行う(ステップS2110)。
次に、設定保存部122が、設定管理部123に各設定の設定値の取得要求を行う(ステップS2111)。これに伴い、設定管理部123が、スタンププラグイン113の設定管理部132の管理している各設定の設定値の取得要求を行う(ステップS2112)。
そして、スタンププラグイン113の設定管理部132が、管理している各設定の設定値を、設定管理部123に返す(ステップS2113)。その後、設定管理部123は、自ら管理している各設定の設定値と、スタンププラグイン113の設定管理部132から入力された各設定の設定値と、を設定保存部122に返す(ステップS2114)。
そして、設定保存部122は、入力された各設定の設定値のうち、保存先情報でDevmodeが指定されている設定の設定値のみを、Devmodeに保存する(ステップS2115)。その後、設定保存部122は、入力された各設定の設定値のうち、保存先情報で保存領域(例えばレジストリ)に指定されている設定の設定値のみを保存領域に保存する(ステップS2116)。その後、設定保存部122は、設定値等が保存されたDevmode構造体を返す(ステップS2117)。
上述した処理手順により、印刷処理に必要な設定値をDevmode構造体や保存領域に対して設定することができる。
また、上述した処理手順では、コアドライバの設定保存部122は、コアドライバの設定管理部123を通してのみプラグインの設定管理部のデータをやり取りするため、機能情報に記述を増やすだけで、プラグインの設定管理部があるかのような動作をすることができる。
次に設定表示画面において、ユーザから設定の変更を受け付けた場合の処理について説明する。図22は、スタンププラグイン113とボールドラインプラグイン114を追加した場合に、表示された設定画面で入力された設定値に従って、プリンタドライバ103で行われる処理を示すシーケンスとする。なお、当該処理は、図18のステップS1804〜S1808の処理に該当する。
まず、画面表示部121が、設定画面で表示された設定値の変更を、ユーザから受け付ける(ステップS2201)。次に、画面表示部121は、変更を受け付けた設定値を、設定管理部123に出力する(ステップS2202)。次に、設定管理部123が、入力された設定値を設定した後、自らが管理している各設定の設定値の禁則チェックを行う(ステップS2203)。
その後、設定管理部123が、スタンププラグイン113の設定管理部132が管理している各設定の設定値の禁則チェックを行う(ステップS2204)。
その後、画面表示部121が、レイアウト情報に記述されている各設定の設定値を取得する(ステップS2205)。その後、設定管理部123が、要求された各設定の設定値を返す(ステップS2206)。
そして、画面表示部121は、受け取った各設定の設定値に従って、設定画面を更新する(ステップS2207)。
次に、ユーザが、表示されている設定画面から、スタンププラグイン113のダイアログを呼び出したものとする。この場合、ユーザからダイアログの呼び出しが、スタンププラグイン113の画面表示部131に対して行われる(ステップS2208)。
そして、スタンププラグイン113の画面表示部131が、スタンププラグイン113の設定画面に表示される各設定の設定値の取得要求を、コアドライバ111の設定管理部123に対して行う(ステップS2209)。
そして、設定管理部123は、要求を受けた各設定の設定値の取得要求を、スタンププラグイン113の設定管理部132に対して行う(ステップS2210)。
これに伴い、スタンププラグイン113の設定管理部132は、取得要求に対して、各設定の設定値を返す(ステップS2211)。さらに、設定管理部123が、スタンププラグイン113の設定管理部132から受け取った各設定の設定値を返す(ステップS2212)。
そして、スタンププラグイン113の画面表示部131は、受け取った各設定の設定値に従って、スタンププラグイン113の設定画面を表示する(ステップS2213)。
次に、スタンププラグイン113の画面表示部131は、表示された設定画面に対して、ユーザからの操作に従って、各設定の設定値の変更を受け付ける(ステップS2214)。
そして、画面表示部131は、受け付けた各設定の設定値を、設定管理部123に出力する(ステップS2215)。設定管理部123は、入力された設定の設定値が、スタンププラグイン113の設定管理部132が管理している設定の設定値と判別し、入力された設定の設定値を、スタンププラグイン113の設定管理部132に出力する(ステップS2216)。
その後、コアドライバ111の設定管理部123が、管理している各設定の設定値の禁則チェックを行う(ステップS2217)。さらに、コアドライバ111の設定管理部123が、スタンププラグイン113の設定管理部132が管理している各設定の設定値の禁則チェックを行う(ステップS2218)。
その後、スタンププラグイン113の画面表示部131が、表示している各設定の設定値の取得要求を、設定管理部123に対して行う(ステップS2219)。
そして、設定管理部123は、スタンププラグイン113の設定管理部132に対して要求された各設定の設定値の取得要求を行う(ステップS2220)。
そして、スタンププラグイン113の設定管理部132が、要求された各設定の設定値を返す(ステップS2221)。その後、設定管理部123が、要求された各設定の設定値を返す(ステップS2222)。
そして、スタンププラグイン113の画面表示部131は、受け取った各設定の設定値から、スタンププラグイン113の設定画面を更新して、表示する(ステップS2223)。
そして、スタンププラグイン113の画面表示部131は、ユーザから設定画面を閉じる操作を受け付けた場合、当該設定画面の表示を停止する(ステップS2224)。
そして、コアドライバ111の画面表示部121が、各設定の設定値の取得要求を、コアドライバ111の設定管理部123に対して行う(ステップS2225)。そして、コアドライバ111の設定管理部123が、各設定の設定値を返す(ステップS2226)。
その後、画面表示部121が、設定画面(UI)の更新を行う(ステップS2227)。
本実施の形態にかかるプリンタドライバ103では、ボールドラインプラグイン114に関する項目は、コアドライバ111の画面表示部121が表示した設定画面に含まれている。つまり、レイアウト情報に追加されたプラグインに関する記述を、コアドライバ111が表示できる。そして、プラグインが設定表示部を備えていなくとも、当該プラグインの設定を変更させる手段をユーザに提供することができる。
コアドライバ111の設定保存部122、コアドライバ111の画面表示部121、及びプラグインの設定表示部は、コアドライバの設定管理部123を通してのみ、プラグインの設定管理部との各設定の設定値のやり取りを行う。つまり、プラグインの設定管理部が各設定の設定値のやりとりを行う共通インターフェースとなるため、機能情報に記述を増やすだけで、プラグインの設定管理部があるかのような動作をすることができる。
次に設定画面を終了する場合の処理について説明する。図23は、スタンププラグイン113とボールドラインプラグイン114を追加した場合に、設定画面の終了処理を示すシーケンスとする。なお、当該処理は、図18のステップS1809の処理に該当する。
まず、画面表示部121は、ユーザから設定画面の終了要求を受け付ける(ステップS2301)。
終了要求に伴い、設定保存部122が、設定管理部123に各設定の設定値の取得を要求する(ステップS2302)。そして、設定管理部123が、スタンププラグイン113の設定管理部132の管理している各設定の設定値の取得を要求する(ステップS2303)。
そして、スタンププラグイン113の設定管理部132は、設定管理部123に、自ら管理している各設定の設定値を返す(ステップS2304)。そして、設定管理部123は、自ら管理している各設定の設定値と、スタンププラグイン113の設定管理部132が管理している各設定の設定値と、を設定保存部122に返す(ステップS2305)。
そして、設定保存部122は、各設定の設定値のうち、保存先情報でDevmodeに保存先が指定されている、設定の設定値のみをDevmodeに保存する(ステップS2306)。
その後、設定保存部122は、各設定の設定値のうち、保存先情報で保存領域に保存先が指定されている、設定の設定値のみを保存領域に保存する(ステップS2307)。そして、設定保存部122が、Devmodeを返す(ステップS2308)。
上述した処理手順では、コアドライバ111の設定保存部122は、コアドライバの設定管理部123を通して、プラグインのも含んだ設定値を受け取ることができる。これにより、機能情報に記述を追加するだけで、プラグインの設定管理部があるかのような動作をすることができる。
次に、本実施の形態にかかるコアドライバ111の設定保存部122における、設定値を保存する際の処理について説明する。図24は、本実施の形態にかかる設定保存部122における上述した処理の手順を示すフローチャートである。
まず、設定保存部122が、記憶部104に記憶された保存先情報から、Devmodeキー内の、設定リストを取得する(ステップS2401)。図6に示す例では、layout、booklet、copies、papersizeを設定リストとして取得する。これら設定は、Devmodeに保存すべき設定である。
そして、設定保存部122が、設定リストが空か否か判別する(ステップS2402)。設定リストが空と判別した場合(ステップS2402:Yes)、ステップS2406に進む。
一方、設定保存部122は、設定リストが空ではないと判別した場合(ステップS2402:No)、設定リストから、次の設定名を読み込む(ステップS2403)。当該設定名の読み込みは、図6に示す例では、layout、booklet、copies、papersizeの順に行われる。
次に、設定保存部122が、設定管理部123に対して取得要求を行い、設定名に対応する設定値を取得できたか否か判別する(ステップS2404)。取得できなかった場合(ステップS2404:No)、再びステップS2402から処理を開始する。
一方、設定保存部122が、取得できたと判別した場合(ステップS2404:Yes)、取得した設定値をDevmode構造体に保存する(ステップS2405)。その後、再びステップS2402から処理を開始する。
そして、Devmodeに関する設定リストが空になった後、設定保存部122が、記憶部104に記憶された保存先情報から、registryキー内の、設定リストを取得する(ステップS2406)。図6に示す例では、useridを設定リストとして取得する。これら設定は、レジストリに保存すべき設定である。
そして、設定保存部122が、レジストリに関する設定リストが空か否か判別する(ステップS2407)。設定リストが空ではないと判別した場合(ステップS2407:No)、設定リストから、次の設定名を読み込む(ステップS2408)。当該設定名の読み込みは、図6に示す例では、useridの順に行われる。
次に、設定保存部122が、設定管理部123に対して取得要求を行い、設定名に対応する設定値を取得できたか否か判別する(ステップS2409)。取得できなかった場合(ステップS2409:No)、再びステップS2407から処理を開始する。
一方、設定保存部122が、取得できたと判別した場合(ステップS2409:Yes)、取得した設定値をレジストリに保存する(ステップS2410)。その後、再びステップS2407から処理を開始する。
一方、ステップS2407で設定リストが空と判別した場合(ステップS2407:Yes)、処理を終了する。
上述した処理により、プリンタドライバ103が処理を行うために必要な設定が、Devmode構造体及びレジストリに対して保存されたことになる。また、プラグインが追加された場合でも、図16に示す保存先情報に従って、上述した処理を行うことで、各プラグインによる処理に必要な設定を行うことができる。
次に印刷処理について説明する。図25は、スタンププラグイン113とボールドラインプラグイン114を追加した場合に、アプリケーションから印刷が実行された場合の処理を示すシーケンスとする。なお、当該処理は、図18のステップS1811〜S1814の処理に該当する。
まず、アプリケーション101が、コアドライバ111の描画部124に印刷ジョブの開始命令をする(ステップS2501)。
次に、コアドライバ111の描画部124は、スタンププラグイン113の描画部133に印刷ジョブの開始を通知する(ステップS2502)。この通知では、このスタンププラグイン113は特に処理を行わない。
そして、コアドライバ111の描画部124は、ボールドラインプラグイン114の描画部141に印刷ジョブの開始を通知する(ステップS2503)。この通知では、このボールドラインプラグイン114は特に処理を行わない。
その後、アプリケーション101は、コアドライバ111の描画部124にページの印刷の開始命令をする(ステップS2504)。
そして、コアドライバ111の描画部124は、スタンププラグイン113の描画部133にページの印刷開始命令をする(ステップS2505)。この通知では、スタンププラグイン113は特に処理を行わない。
その後、コアドライバ111の描画部124は、ボールドラインプラグイン114の描画部141にページの印刷開始命令をする(ステップS2506)。この通知では、ボールドラインプラグイン114は特に処理を行わない。
そして、アプリケーション101は、コアドライバ111の描画部124に描画データを送る(ステップS2507)。その後、描画部124は描画データをプリンタの解釈できる原稿データに変換する(ステップS2508)。
そして、アプリケーション101は、コアドライバ111の描画部124に対して、印刷の終了命令をする(ステップS2509)。
そして、コアドライバ111の描画部124がスタンププラグイン113の描画部133にページの印刷終了命令をする(ステップS2510)。この時、スタンププラグイン113の機能がOnならば、スタンププラグイン113の描画部133が、原稿データに対してスタンプを追加する(ステップS2511)。本処理手順では、スタンププラグイン113の機能がONとする。
その後、コアドライバ111の描画部124が、ボールドラインプラグイン114の描画部141にページの印刷終了命令をする(ステップS2512)。この時、ボールドラインプラグイン114の機能がONならば、ボールドラインプラグイン114の描画部141が、原稿データに対してボールドラインを追加する(ステップS2513)。
上述したステップS2504〜S2513まで処理をページ数分繰り返す。そして、アプリケーション101は、コアドライバ111の描画部124に対して印刷ジョブの終了命令をする(ステップS2514)。
上述した処理手順で示したように、印刷処理時において、プラグインの各描画部は、コアドライバ111の描画部124から通知を受け取った際、必要に応じて処理を行うこととする。
図2に示す例では、ボールドラインプラグイン114には、モジュールとして描画部141のみを有していたが、新たにボールドラインの設定画面を表示する画面表示部を開発し、追加する場合について説明する。
図26は、ボールドラインプラグイン114の画面表示部1621を追加した場合のPC100の構成を示すブロック図である。
図26に示すように、PC100のプリンタドライバ103においては、ボールドラインプラグイン114に対して、設定画面を表示するための画面表示部1621が追加されている。
ボールドラインプラグイン114に新たに画面表示部1621を追加する手順について説明する。当該手順は、本実施の形態ではインストーラを用いて行うが、ユーザが手動で行ってもよい。
まずは、インストーラが、ボールドラインプラグイン114の画面表示部のダイナミック・リンク・ライブラリを追加する。その後、インストーラは、記憶部104のプラグイン情報に、ボールドラインプラグイン114の画面表示部1621に関する記述を追加する。
図27は、ボールドラインプラグイン114に画面表示部1621を追加した場合のプラグイン情報の例を示す。符号2701に示すように、プラグイン情報には、ボールドラインプラグイン114の画面表示部1621が追加されている。
図27に示すように、ボールドラインプラグイン114の画面表示部1621のダイナミック・リンク・ライブラリのファイル名はborderlineUI.dllとする。ボールドラインプラグイン114に関しては、画面表示部1621は、borderlineUI.dll、描画部141はborderline.dllという異なるダイナミック・リンクライブラリが用意されている。そして、プラグイン情報でそれぞれ異なるダイナミック・リンクライブラリを指定することで、それぞれ適切に呼び出すことができる。
次に、インストーラが、記憶部104のレイアウト情報から、ボールドラインプラグイン114の機能に関する記述を削除する。そして、インストーラが、レイアウト情報に対して、ボールドラインプラグイン114の設定画面を呼び出すPluginDialogButtonに関する記述を追加する。
図28は、ボールドラインプラグイン114に画面表示部1621を追加した場合に、インストーラにより記述を変更された後のレイアウト情報の例を示した図である。図28に示す例では、符号2801に示すように、ボールドラインプラグイン114用に、“PluginDialogButton”に関する記述が追加されている。
当該レイアウト情報に基づいて表示される設定画面について説明する。図29は、ボールドラインプラグイン114に画面表示部1621を追加した場合に、コアドライバ111の画面表示部121が表示する設定画面の例を示した図である。図29の符号2901が示すように、ボールドラインプラグイン114の機能ON/OFFのチェックボックスの代わりに、ボールドラインプラグイン114の設定画面を呼び出すプッシュボタンが追加されている。
そして、プッシュボタンがユーザに押下された場合、ボールドラインプラグイン114の画面表示部1621が、設定画面を表示する。図30は、ボールドラインプラグイン114の画面表示部1621が表示する設定画面の例を示した図である。
図30に示したボールドラインプラグイン114の設定画面では、集約機能とボールドラインプラグイン114の機能ON/OFFと印刷結果の簡易プレビューが表示される。当該設定画面でボールドラインプラグイン114に関する設定を受け付けることができる。
このように、ボールドラインプラグイン114の描画部141を変更する必要はないし、機能情報を変更する必要がない。仮に、ボールドラインプラグイン114が設定保存部を有していた場合でも、設定保存部を変更する必要はない。また、OS102にインストール済みのプリンタドライバに対して、設定情報以外に変更を行う必要がないため、プリンタドライバを再インストールする必要はない。これによりユーザの作業負担を軽減することができる。
つまり、従来から、プリンタドライバは、画面表示や設定の保存と更新の管理や印字などの、多くのモジュールを持っている。そのため、それら全てを行うプラグインを開発すると開発コストが高くなっていた。本実施の形態のプリンタドライバ103においては、プラグインで必要なモジュールのみ作成し、他のモジュールはプリンタドライバ103のモジュールを呼び出せば良いため、開発コストを削減することができる。
ドライバの各専用のモジュールの代替手段として、参照ファイルに情報を追加するだけで、当該プラグインドライバの専用のモジュールが実行される場合と同等の処理をプリンタドライバのモジュールが実行されることで実現することが可能となり、プラグインドライバの開発コストを削減できる。
本実施の形態にかかるプリンタドライバ103のコアドライバ111の各モジュールは、各種設定情報(レイアウト情報、保存先情報、機能情報、及びプラグイン情報)を変更するだけで、プラグインの各モジュールの代替手段として、当該各モジュールと同等の動作を行うことを可能とする。これにより、プラグイン開発時のコストを下げることができる。
また、プラグインについて、複数の物理モジュールとして分け、それぞれを同じプラグインの部品として利用する仕組みとした。これにより、追加したい物理モジュール以外の物理モジュールを変更せずに、新しい処理部の物理モジュールを追加できる。これにより、既存のプラグインへの処理を追加する際の開発コストを下げることができる。
図31は、本実施の形態のPC100のハードウェア構成を示した図である。図31に示すようにPC100は、CPU3101と、ROM(Read Only Memory)3102と、RAM3103と、HDD3104と、ディスプレイ装置などの表示装置3105と、キーボードやマウスなどの入力装置3106と、通信インターフェース3107と、これらを接続するバス3108と、を備えており、通常のコンピュータを利用したハードウェア構成となっている。
本実施の形態にかかるPC100で実行されるプリンタドライバ(プログラム)103は、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記憶媒体に記録されて提供される。
また、本実施の形態にかかるPC100で実行されるプリンタドライバ103を、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施の形態にかかるPC100で実行されるプリンタドライバ103をインターネット等のネットワーク経由で提供または配布するように構成しても良い。
また、本実施の形態にかかるPC100で実行されるプリンタドライバ103を、ROM等に予め組み込んで提供するように構成してもよい。
本実施の形態にかかるPC100で実行されるプリンタドライバ103は、上述した各部(コアドライバ111、及び各種プラグイン)を含むモジュール構成となっており、実際のハードウェアとしてはCPU3101が上記記憶媒体からプリンタドライバ103を読み出して実行することにより上記各部がRAM3103上にロードされ、コアドライバ111、及び各種プラグインがRAM3103上に生成されるようになっている。