(57)【要約】【課題】プラグインの開発負担を軽減する。【解決手段】プリンタドライバ１０３は、複数のモジュール（１２１、１２２、１２３、及び１２４）と、所定の機能を実現するための一つ以上の追加モジュールで構成されたプラグインの追加を受け付けるインターフェース部１１２と、プラグインの所定の機能を実現するための部分的な処理に関する情報を定義した設定情報を記憶する記憶部１０４と、を備え、上述した複数のモジュールは、所定の機能を実現するための部分的な処理であって、当該プラグインを構成する追加モジュールではできない処理を、設定情報に従って行うこと、を特徴とする。【選択図】図２
2010218309.tif 000002
【特許請求の範囲】
【請求項１】
複数のモジュールと、
所定の機能を実現するための一つ以上の追加モジュールで構成されたプラグインの追加を受け付けるインターフェース手段と、
前記プラグインの前記所定の機能を実現するために、前記モジュールのいずれか一つ以上が実行する部分的な処理を定義した設定情報を記憶する記憶手段と、を備え、
前記複数のモジュールは、前記所定の機能を実現するための前記部分的な処理であって、当該プラグインを構成する前記追加モジュールではできない処理を、前記設定情報に従って行うこと、
を特徴とするプリンタドライバ。
【請求項２】
前記複数のモジュールは、表示手段に表示する表示制御モジュールを含み、
前記記憶手段は、前記所定の機能の設定を行うための表示情報を定義した、前記設定情報を記憶し、
前記表示制御モジュールは、前記設定情報に従って、前記所定の機能の設定を行うための表示情報を表示すること、
を特徴とする請求項１に記載のプリンタドライバ。
【請求項３】
前記複数のモジュールは、当該プリンタドライバによる印刷処理で用いる設定値を管理する設定管理モジュールを含み、
前記記憶手段は、前記所定の機能で用いる設定値を定義した、前記設定情報を記憶し、
前記設定管理モジュールは、前記設定情報に従って、前記所定の機能に用いる前記設定値を管理すること、
を特徴とする請求項１に記載のプリンタドライバ。
【請求項４】
前記記憶手段が記憶する前記設定情報は、前記プラグインのインストール時に当該プラグインのインストーラにより定義されたこと、
を特徴とする請求項１乃至３のいずれか一つに記載のプリンタドライバ。
【請求項５】
複数のモジュールと、所定の機能を実現するための一つ以上の追加モジュールで構成されたプラグインの追加を受け付けるインターフェース手段と、記憶部と、を備えたプリンタドライバに対して、所定の機能を実現するための一つ以上の追加モジュールで構成されたプラグインをインストールするインストール手段と、
前記複数のモジュールが実行する、前記所定の機能を実現するための前記部分的な処理であって、当該プラグインを構成する前記追加モジュールではできない処理に関する情報を定義した設定情報を、前記記憶手段に対して追加する追加手段と、
をコンピュータに実行させるためのプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【請求項６】
複数のモジュールと、
所定の機能を実現するための一つ以上の追加モジュールで構成されたプラグインの追加を受け付けるインターフェース手段と、
前記プラグインの前記所定の機能を実現するために、前記複数のモジュールのうちいずれか一つ以上が実行する部分的な処理を定義した設定情報を記憶する記憶手段と、を備え、
前記複数のモジュールは、前記所定の機能を実現するための前記部分的な処理であって、当該プラグインを構成する前記追加モジュールではできない処理を、前記設定情報に従って行うこと、
を特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリンタドライバ、記憶媒体、及び情報処理装置に関する。
【背景技術】
【０００２】
近年、オフィスのコンピュータ環境について、仕事の効率化を図るために様々な提案がなされている。
【０００３】
これに従って、プリンタや複合機などを含む画像形成装置について、必要な機能のみ利用可能となるようにカスタマイズして販売する要求が高まっている。そこで、機能をプラグインとして追加できるプリンタなどが開発されている。このように機能をプラグインとしてプリンタに追加する場合、プリンタを制御するプリンタドライバに対しても、追加した機能を使えるように機能拡張する必要がある。
【０００４】
さらにプリンタに機能を追加しない場合でも、プリンタドライバ単体に対して、機能拡張のニーズが存在する。
【０００５】
しかしながら、プリンタドライバの機能拡張する場合、通常はプリンタドライバを再コンパイルし、顧客の環境に再インストールしてもらう必要がある。このような手順が必要とあっては、ユーザの利便性が低下する。
【０００６】
そこで、プリンタドライバの機能を拡張するために、再コンパイレーションや再インストールを行わずに、プラグインとしてプリンタドライバに機能を追加する技術が提案されている。
【０００７】
例えば、特許文献１には、デバイスドライバにプラグインの追加を検知する手段を持たせ、検知したプラグインに、オペレーティングシステムからのイベント通知を転送することで、機能拡張をする技術が開示されている。これにより、デバイスドライバの再コンパイレーションの必要なく動的拡張を可能としている。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１を含めた従来術においては、プラグインとして新たな機能を追加する場合には、当該機能を実現するためには、実は画面表示、設定の保存、印字制御など多くの処理が必要であるが、これら処理を行うためにプリンタドライバ既存の処理部を使用するのが困難である。そこで、プラグインは、これら全ての処理を実現できるように開発する必要があるため、開発コストが高くなるという問題がある。
【０００９】
本発明は、上記に鑑みてなされたものであって、プラグインの開発コストの抑止可能なプリンタドライバ、記憶媒体、及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するために、本発明にかかるプリンタドライバは、複数のモジュールと、所定の機能を実現するための一つ以上の追加モジュールで構成されたプラグインの追加を受け付けるインターフェース手段と、前記プラグインの前記所定の機能を実現するために、前記複数のモジュールのいずれか一つ以上が実行する部分的な処理を定義した設定情報を記憶する記憶手段と、を備え、前記複数のモジュールは、前記所定の機能を実現するための前記部分的な処理であって、当該プラグインを構成する前記追加モジュールではできない処理を、前記設定情報に従って行うこと、を特徴とする。
【００１１】
また、本発明にかかる記憶媒体は、複数のモジュールと、所定の機能を実現するための一つ以上の追加モジュールで構成されたプラグインの追加を受け付けるインターフェース手段と、記憶部と、を備えたプリンタドライバに対して、所定の機能を実現するための一つ以上の追加モジュールで構成されたプラグインをインストールするインストール手段と、前記複数のモジュールが実行する、前記所定の機能を実現するための前記部分的な処理であって、当該プラグインを構成する前記追加モジュールではできない処理に関する情報を定義した設定情報を、前記記憶手段に対して追加する追加手段と、をコンピュータに実行させるためのプログラムを記憶したコンピュータ読み取り可能な記憶媒体であることを特徴とする。
【００１２】
また、本発明にかかる情報処理装置は、複数のモジュールと、所定の機能を実現するための一つ以上の追加モジュールで構成されたプラグインの追加を受け付けるインターフェース手段と、前記プラグインの前記所定の機能を実現するために、前記複数のモジュールのうちいずれか一つ以上が実行する部分的な処理を定義した設定情報を記憶する記憶手段と、を備え、前記複数のモジュールは、前記所定の機能を実現するための前記部分的な処理であって、当該プラグインを構成する前記追加モジュールではできない処理を、前記設定情報に従って行うこと、を特徴とする。
【発明の効果】
【００１３】
本発明によれば、プラグインに必要な全てのモジュールを格納する必要がないので、プラグインの開発負担を軽減できるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】図１は、第１の実施の形態にかかるプリンタシステムの全体構成図を示した図である。
【図２】図２は、第１の実施の形態にかかるＰＣの構成を示すブロック図である。
【図３】図３は、レイアウト情報の例を示した図である。
【図４】図４は、図３のレイアウト情報を読み込んだ場合に、コアドライバの画面表示部が表示する印刷設定画面の例を示した図である。
【図５】図５は、機能情報の例を示した図である。
【図６】図６は、機能情報が図５である場合における保存先情報の例を示した図である。
【図７】図７は、スタンププラグインインストーラの構成を示したブロック図である。
【図８】図８は、スタンププラグインインストーラが有する追加レイアウト情報の例を示した図である。
【図９】図９は、スタンププラグインインストーラが有する追加保存先情報の例を示した図である。
【図１０】図１０は、ボールドラインプラグインインストーラの追加機能情報の例を示した図である。
【図１１】図１１は、第１の実施の形態にかかるＰＣに対して、スタンププラグインインストーラを用いたプラグインのインストール処理について処理の手順を示すフローチャートである。
【図１２】図１２は、スタンププラグインとボールドラインプラグインとを追加した後のレイアウト情報を示した図である。
【図１３】図１３は、スタンププラグインとボールドラインプラグインとを追加した後に、コアドライバの画面表示部が表示する印刷設定画面の例を示した図である。
【図１４】図１４は、スタンププラグインの画面表示部が表示する、スタンププラグインの設定画面の例を示した図である。
【図１５】図１５は、スタンププラグインとボールドラインプラグインとを追加した後の保存先情報を示した図である。
【図１６】図１６は、スタンププラグインとボールドラインプラグインとを追加した後の機能情報を示した図である。
【図１７】図１７は、スタンププラグインとボールドラインプラグインを追加した場後のプラグイン情報を示した図である。
【図１８】図１８は、第１の実施の形態にかかるＰＣにおける全体的な印刷処理の手順を示すフローチャートである。
【図１９】図１９は、第１の実施の形態にかかるプリンタドライバにおける設定画面の表示処理の手順を示すフローチャートである。
【図２０】図２０は、第１の実施の形態にかかるプリンタドライバにおけるが設定画面を表示する際の各モジュール間の処理の手順を示すシーケンス図である。
【図２１】図２１は、第１の実施の形態にかかるプリンタドライバが必要とする動作を行う際の各モジュール間の処理の手順を示すシーケンス図である。
【図２２】図２２は、スタンププラグインとボールドラインプラグインを追加した場合に、表示された設定画面で入力された設定値に従って、プリンタドライバで行われる処理を示すシーケンス図である。
【図２３】図２３は、スタンププラグインとボールドラインプラグインを追加した場合に、設定画面の終了処理を示すシーケンス図である。
【図２４】図２４は、第１の実施の形態にかかる設定保存部における、設定値を保存する際の処理の手順を示すフローチャートである。
【図２５】図２５は、スタンププラグインとボールドラインプラグインを追加した場合に、アプリケーションから印刷が実行された場合の処理を示すシーケンス図である。
【図２６】図２６は、ボールドラインプラグインの画面表示部を追加した場合のＰＣの構成を示すブロック図である。
【図２７】図２７は、ボールドラインプラグインに画面表示部を追加した場合のプラグイン情報の例を示す図である。
【図２８】図２８は、ボールドラインプラグインに画面表示部を追加した場合に、インストーラにより記述を変更された後のレイアウト情報の例を示した図である。
【図２９】図２９は、ボールドラインプラグインに画面表示部を追加した場合に、コアドライバの画面表示部が表示する設定画面の例を示した図である。
【図３０】図３０は、ボールドラインプラグインの画面表示部が表示する設定画面の例を示した図である。
【図３１】図３１は、第１の実施の形態のＰＣ１００のハードウェア構成を示した図である。
【発明を実施するための形態】
【００１５】
以下に添付図面を参照して、この発明にかかるプリンタドライバ、記憶媒体、及び情報処理装置の最良な実施の形態を詳細に説明する。
【００１６】
（第１の実施の形態）
図１は、本発明の第１の実施の形態にかかるプリンタシステムの全体構成図を示した図である。図１に示すように、本実施の形態ではＰＣ１００とプリンタ１５０とがネットワーク１６０を介して接続されているものとする。そして、ＰＣ１００からの印刷要求に応じて、プリンタ１５０が印刷処理を行う。
【００１７】
図２は、ＰＣ１００の構成を示すブロック図である。図２に示すように、ＰＣ１００は、アプリケーション１０１と、ＯＳ１０２と、プリンタドライバ１０３と、
部１０４と、通信部１０５とを備えている。図２に示すプリンタドライバ１０３内の機能ブロックは、プリンタ１５０の制御を実現するための機能又は手段を示している。
【００１８】
通信部１０５は、ネットワーク１６０を介して接続されたプリンタ１５０と情報の送受信を行う。
【００１９】
アプリケーション１０１は、利用者が利用するソフトウェアとする。ユーザはアプリケーション１０１で編集したデータを印刷したい場合、アプリケーション１０１が、印刷要求を受け付ける。この場合、アプリケーション１０１は、単体でプリンタ１５０に対する印刷データの生成を行わず、印刷要求と共に、印刷対象の情報をＯＳ１０２に受け渡す。
【００２０】
ＯＳ１０２は、ＰＣ１００のハードウェアとソフトウェアとを管理するプログラムである。ＯＳ１０２は、プログラムの起動、情報の読み込み制御、保存制御等を行う。ＯＳのうち代表的なものとしては、ＵＮＩＸ（登録商標）等が知られている。
【００２１】
また、ＯＳ１０２は、アプリケーション１０１から受け渡された印刷要求と共に、印刷対象の情報を、プリンタドライバ１０３に受け渡す。
【００２２】
記憶部１０４は、様々な情報を記憶する記憶手段とする。記憶される情報としては、プラグインによる所定の機能（例えば、スタンプ、ボールドラインなど）を実現するための部分的な処理に関する情報を定義した設定情報を記憶する。この設定情報の例としては、レイアウト情報、保存先情報、及び機能情報、プラグイン情報とする。これら設定情報（レイアウト情報、保存先情報、機能情報、及びプラグイン情報）は、プラグインが有する機能を実現するために、各モジュールが実行する部分的な処理が定義されている。部分的な処理の定義としては、処理に用いる設定値や、プラグインの機能に関する設定値の変更するための表示情報など、処理に必要なあらゆる情報を含むものとする。
【００２３】
プラグイン情報は、インターフェース部１１２を介して追加されたプラグインが記述された情報とする。そして、コアドライバ１１１の画面表示部１２１、設定保存部１２２、及び設定管理部１２３は、インストールされたプラグインを確認する際に、記憶部１０４のプラグイン情報を参照する。これにより、インストールされているプラグインを確認できる。
【００２４】
プリンタドライバ１０３は、コアドライバ１１１と、インターフェース部１１２と、スタンププラグイン１１３と、ボールドラインプラグイン１１４とを備えている。
【００２５】
コアドライバ１１１は、画面表示部１２１と、設定保存部１２２と、設定管理部１２３と、描画部１２４と、を備え、プリンタドライバ１０３としての標準機能を有する。これら、画面表示部１２１、設定保存部１２２、設定管理部１２３、及び描画部１２４は、プリンタドライバ１０３としての機能を果たすためのモジュール群とする。
【００２６】
コアドライバ１１１に含まれるモジュール群は、印刷処理のためにのみならず、インストールされたプラグインについて、当該プラグインに含まれる（追加）モジュールではできない部分的な処理を、上述した各設定情報（レイアウト情報、保存先情報、機能情報、プラグイン情報）に従って代行する。
【００２７】
画面表示部１２１は、印刷設定画面を表示する。本実施の形態にかかる画面表示部１２１は、記憶部１０４に記憶されたレイアウト情報に基づいて印刷設定画面等を表示する。
【００２８】
レイアウト情報は、各設定の表示方法や表示位置等が記述された情報とする。レイアウト情報は、設定画面に表示されるＵＩコンポーネントのレイアウトが記述されている。
【００２９】
図３は、レイアウト情報の例を示した図である。図３に示すレイアウト情報は、スタンププラグインや、ボールドラインプラグインはまだ追加されていない場合とする。そして、図３に示すレイアウト情報では、ＪＳＯＮ形式で記述するが他の形式でも良い。
【００３０】
図３に示すレイアウト情報の例では、ＵＩコンポーネント毎にレイアウトデータの記述されている。ＵＩコンポーネント毎のレイアウトデータはそれぞれ、属性としてｔｙｐｅ，ｎａｍｅ，ａｘｉｓを有している。
【００３１】
ｔｙｐｅは、ＵＩコンポーネントの種類を表している。ｔｙｐｅの値であるＣｏｍｂｏＢｏｘはコンボボックスコンポーネントで表示することを示している。ＣｈｅｃｋＢｏｘはチェックボックスコンポーネントで表示することを示している。ＳｐｉｎＢｏｘはスピンボックスコンポーネントで表示することを示している。ＥｄｉｔＢｏｘはエディットボックスコンポーネントで表示することを示している。
【００３２】
ｎａｍｅは、設定の名前を表している。ｎａｍｅの値のうち、ｌａｙｏｕｔは、集約設定であることを指定している。ｂｏｏｋｌｅｔは、製本設定であることを示している。ｐａｐｅｒｓｉｚｅは、印刷用紙設定であることを指定している。ｃｏｐｉｅｓは、部数設定であることを指定している。ｕｓｅｒｉｄは、利用者別ＩＤ設定であることを指定している。
【００３３】
ａｘｉｓは、表示位置の座標を表している。ａｘｉｓの属性である、ｘはダイアログボックスの左上原点からの水平方向座標を示している。ｙはダイアログボックスの左上原点からの垂直方向座標を示している。例えば、集約設定のａｘｉｓ３０１では、コンボボックスコンポーネントで水平位置２５、垂直位置３０に表示することが記述されている。
【００３４】
そして、画面表示部１２１は、記憶部１０４からレイアウト情報を読み込み、読み込んだレイアウト情報に従って設定画面を生成し、設定画面を表示する。
【００３５】
なお、画面表示部１２１は、レイアウト情報に記述されている各ＵＩコンポーネントのうち、設定管理部１２３で管理されている設定項目のみを表示する。
【００３６】
図４は、図３のレイアウト情報を読み込んだ場合に、コアドライバ１１１の画面表示部１２１が表示する印刷設定画面の例を示した図である。なお、図４に示す例では、レイアウト情報に記述されている各設定が、すべて設定管理部１２３で管理されているものとする。図４に示すように、Ｌａｙｏｕｔに集約設定レイアウトが、Ｂｏｏｋｌｅｔに中綴じ設定レイアウトが、ｃｏｐｉｅｓに部数設定レイアウトが、Ｕｓｅｒｉｄに利用者別ＩＤ設定レイアウトが、Ｐａｐｅｒｓｉｚｅに用紙サイズ設定レイアウトが配置されている。
【００３７】
また、図４に示す、ＯＫボタンは印刷設定の変更の保存するボタンであり、Ｃａｎｃｅｌボタンは、キャンセルを実行するボタンである。これらＯＫボタン及びＣａｎｃｅｌボタンは、レイアウト情報とは関係なく実装しているものとする。
【００３８】
図２に戻り、設定管理部１２３は、印刷処理に用いられる設定（各設定の設定値など）を管理する。本実施の形態にかかる設定管理部１２３は、印刷設定を管理し、印刷設定の各設定の設定可能範囲や各設定値間の禁則を解決する。
【００３９】
また、設定管理部１２３は、記憶部１０４に記憶された機能情報に基づいて、印刷処理に用いられる設定（各設定の設定値など）を管理する。
【００４０】
機能情報は、各設定値の設定可能な範囲や各設定間の禁則が記述されている。具体的な例としては、機能情報は、プリンタドライバの持つ各設定やその禁則が記述されている。
【００４１】
図５は、機能情報の例を示した図である。図５に示す機能情報は、スタンププラグインや、ボールドラインプラグインはまだ追加されていない場合とする。そして、図５に示す機能情報では、ＸＭＬ形式で記述するが他の形式でも良い。
【００４２】
図５に示す機能情報の例では、各設定の情報を、ｉｔｅｍタグ毎に定義されている。ｉｔｅｍタグは、ｎａｍｅとｔｙｐｅの属性を持っている。
【００４３】
属性ｎａｍｅは、設定の名前を表している。属性ｎａｍｅは、レイアウト情報のｎａｍｅと対応している。そして、属性ｎａｍｅの値である、ｌａｙｏｕｔは集約設定であることを指定している。ｂｏｏｋｌｅｔは製本設定であることを指定している。ｐａｐｅｒｓｉｚｅは印刷用紙設定であることを指定している。ｃｏｐｉｅｓは部数設定であることを指定している。ｕｓｅｒｉｄは利用者別ＩＤ設定であることを指定している。
【００４４】
属性ｔｙｐｅは、入力される設定値の形式を表している。ｔｙｐｅの値である、ｐｉｃｋｏｎｅは、選択肢形式を指定している。ｓｔｒｉｎｇは、文字列入力形式を指定している。ｎｕｍｂｅｒは、数値入力形式を指定している。
【００４５】
ｉｔｅｍタグは、図５に示す集約設定５０１のようにｃｏｎｓｔｒａｉｎｔタグを持つことができる。ｃｏｎｓｔｒａｉｎｔタグは、親タグであるｉｔｅｍタグの設定の禁則情報を表している。ｃｏｎｓｔｒａｉｎｔタグ内の属性であるｆｉｘｖａｌｕｅは、ｃｏｎｓｔｒａｉｎｔタグに禁則条件が合致している場合に強制的に変更される設定値を表している。
【００４６】
ｃｏｎｓｔｒａｉｎｔタグは、図５の集約設定５０１のようにｃｏｎｄｉｔｉｏｎタグを持つことができる。ｃｏｎｄｉｔｉｏｎタグは親タグであるｃｏｎｓｔｒａｉｎｔタグの禁則条件を表しており、属性であるｅｘｐｒｅｓｓｉｏｎは、その条件を表している。
【００４７】
集約設定においては、例えば、ｂｏｏｋｌｅｔがＯＮの場合に禁則条件に合致し、ｌａｙｏｕｔ（集約設定）の設定値がＯＦＦに強制的に変更される。
【００４８】
ｐｉｃｋｏｎｅタグは、親タグであるｉｔｅｍタグのｔｙｐｅが選択肢形式の時の選択可能な設定値を表している。そして、ｐｉｃｋｏｎｅタグ内の属性ｎａｍｅは、設定値が設定されている。また、図５の例とは異なるが、ｐｉｃｋｏｎｅタグは、ｃｏｎｓｔｒａｉｎｔタグを持つことができる。このように、ｐｉｃｋｏｎｅタグ自体、すなわち選択肢自身も禁則情報を持つことができる。
【００４９】
ｐｉｃｋｏｎｅの属性であるｎａｍｅの値は、集約設定において、ｏｆｆが機能オフ、２ｉｎ１が２イン１印刷、４ｉｎ１が４イン１印刷を表している。また、中綴じ設定において、ｏｆｆが機能オフ、ｏｎが機能オンを表している。さらに、用紙サイズ設定において、ａ３がＡ３用紙、ａ４がＡ４用紙を表している。
【００５０】
ｒａｎｇｅタグは、親タグであるｉｔｅｍタグのｔｙｐｅが数値形式の時の選択可能な範囲を表しており、ｍｉｎは最小値、ｍａｘは最大値を表している。
【００５１】
ｓｔｒｉｎｇタグは、親タグであるｉｔｅｍタグのｔｙｐｅが文字列形式の時の選択可能な文字列を表している。そして、ｍｉｎが最小文字数、ｍａｘが最大文字数を表している。ｃｈａｒｔｙｐｅは、文字の種類を表している。ｃｈａｒｔｙｐｅの設定値のａｌｐｈａｎｕｍｅｒｉｃは、数値とアルファベットの文字列が入力可能であることを表している。以上のように、機能情報には、コアドライバ１１１の設定管理部１２３の行うべき動作、換言すれば各設定の設定値の管理手法が記述されている。
【００５２】
そして、設定管理部１２３は、上述した機能情報を読み込むことで、管理すべき設定の種類や、その禁則処理を決定し、印刷処理に関する設定を行うことになる。
【００５３】
設定保存部１２２は、設定管理部１２３で管理されている各設定値をＤｅｖｍｏｄｅやＯＳ１０２の（図示しない）レジストリ等のデータ保存領域に保存する。また、設定保存部１２２は、記憶部１０４に記憶された保存先情報を参照する。
【００５４】
Ｄｅｖｍｏｄｅとは、印刷に関する様々な設定を保持するために、ＯＳ１０２から提供される構造体とする。
【００５５】
保存先情報は、各設定の保存場所についての情報が記述されている。図６は、機能情報が図５である場合における保存先情報の例を示した図である。図６に示す例では、保存先情報はＪＳＯＮ形式で記述されているが他の形式であっても良い。
【００５６】
保存先情報のＤｅｖｍｏｄｅとｒｅｇｉｓｔｏｒｙというキー内に記述された各設定名は、機能情報およびレイアウト情報に記述されている各設定名と対応関係を有している。例えば、ｌａｙｏｕｔは集約設定であることを、ｂｏｏｋｌｅｔは製本設定であることを、ｐａｐｅｒｓｉｚｅは印刷用紙設定であることを、ｃｏｐｉｅｓは部数設定であることを、ｕｓｅｒｉｄは利用者別ＩＤ設定であることを指定している。
【００５７】
そして、Ｄｅｖｍｏｄｅというキー内に記述された各設定名で示された設定は、Ｄｅｖｍｏｄｅ構造体に保存される。また、ｒｅｇｉｓｔｏｒｙというキー内に記述された各設定名で示される設定は、レジストリに保存される。保存される各設定は、設定管理部１２３で管理されている設定値とする。
【００５８】
このように、設定保存部１２２は、保存先情報を読み込むことで各設定の保存場所を決定する。そして、設定管理部１２３が、決定された保存場所から各設定値を読み出して、印刷処理に必要な設定を行うこととする。
【００５９】
描画部１２４は、アプリケーション１０１から印刷を要求されたデータをプリンタが解釈可能な印刷命令に変換する。そして変換された印刷命令は、通信部１０５を介して、プリンタドライバ１０３に送信される。
【００６０】
図２に戻り、破線１３０で囲まれたスタンププラグイン１１３、及びボールドラインプラグイン１１４は、コアドライバ１１１に機能を追加するダイナミック・リンク・ライブラリであるプラグインとする。これらプラグインは、所定の機能を実現するために、一つ以上のモジュールで構成されている。
【００６１】
一般的なプラグインは、画面表示部、設定管理部、及び描画部のいずれか一つ以上のモジュールで構成される。
【００６２】
そして、プラグインの画面表示部は、インターフェース部１１２を介して行われたコアドライバ１１１の画面表示部１２１からの表示命令に従って、プラグインが有する機能についての設定画面を表示する。また、プラグインの設定管理部は、インターフェース部１１２を介して行われたコアドライバ１１１の設定管理部１２３からの命令に従って、プラグインが有する機能についての各設定値の設定可能範囲や各設定値間の禁則を解決する。また、プラグインの描画部は、プラグインが有する機能を用いてなされた描画機能を実現する。
【００６３】
つまり、コアドライバ１１１の画面表示部１２１の拡張部分がプラグインの画面表示部となる。そして、コアドライバ１１１の設定管理部１２３の拡張部分がプラグインの設定管理部となる。さらに、コアドライバ１１１の描画部１２４の拡張部分がプラグインの描画部となる。
【００６４】
本実施の形態にかかるプリンタドライバ１０３は、追加されるプラグインにおいて、上述した３つのモジュール全てが必要不可欠ではないという特徴を有する。つまり、従来のプラグインでは、追加する機能を実現するために３つのモジュール全て作成する必要があった。本実施の形態においては、追加するプラグインによっては、コアドライバ１１１のモジュールを代替して利用することで、全てのモジュールを作成する必要がなくなった。これにより、プラグインの開発負担を軽減している。
【００６５】
コアドライバ１１１のモジュールを代替して利用するために、コアドライバ１１１の各モジュールが参照する外部ファイルを更新する必要がある。つまり、必要なモジュールの追加と、コアドライバ１１１の各モジュールが参照する設定情報を更新するだけで、プラグインとして動作することができる。
【００６６】
インターフェース（Ｉ／Ｆ）部１１２は、プラグインの追加を受け付けるインターフェースとする。プリンタドライバ１０３にプラグインが追加された場合、当該インターフェース部１１２を介して、追加されたプラグインの各モジュールを呼び出すことができる。また、追加されたプラグインも、当該インターフェース部１１２を介して、コアドライバ１１１の各モジュールを呼び出すことが可能となる。
【００６７】
本実施の形態にかかるプリンタドライバ１０３に関するプラグインの追加は、プラグイン自身のダイナミック・リンク・ライブラリの追加と、レイアウト情報、機能情報、保存先情報、及びプラグイン情報のいずれか一つ以上に対して記述を追加することで行う。これにより、ＰＣ１００にインストール済みのプリンタドライバ１０３に対して、プラグインの追加を容易に行うことが可能となる。つまり、ユーザはプリンタドライバを再インストールする必要がなくなる。
【００６８】
本実施の形態では、スタンププラグイン１１３と、ボールドラインプラグイン１１４とを追加する例について説明する。スタンププラグイン１１３は、指定した座標に指定したスタンプを印字するスタンプ機能を有する。また、ボールドラインプラグイン１１４は、集約時に論理ページに仕切り線を付ける仕切り線機能を有する。
【００６９】
次に、プラグインを追加するインストーラについて説明する。図７は、スタンププラグイン１１３をインストールするためのスタンププラグインインストーラ７００の構成を示したブロック図である。図７に示すように、スタンププラグインインストーラ７００は、スタンププラグイン１１３と、追加レイアウト情報７０１と、追加保存先情報７０２と、起動部７０３とを備えている。スタンププラグイン１１３は、図２のスタンププラグイン１１３と同様の構成を備えている。
【００７０】
追加レイアウト情報７０１は、スタンププラグイン１１３の機能を実現するために、記憶部１０４のレイアウト情報に対して追加する情報が格納されている。
【００７１】
図８は、追加レイアウト情報７０１の例を示した図である。図８に示すように、スタンププラグイン１１３に関する情報を設定画面に表示するための情報が格納されている。
【００７２】
図７に戻り、追加保存先情報７０２は、スタンププラグイン１１３の機能を実現するために、記憶部１０４の保存先情報に対して追加する情報が格納されている。
【００７３】
図９は、追加保存先情報７０２の例を示した図である。図９に示すように、スタンププラグイン１１３の機能を実現するために用いられる設定の保存先が格納されている。
【００７４】
図７に戻り、起動部７０３は、追加部７１１と、登録部７１２を備え、プラグインのインストールを制御する。具体的には、起動部７０３は、ユーザによりスタンププラグインインストーラ７００が起動された場合に、プラグインの追加対象となるドライバを、ＯＳ１０２にインストールする制御をした後、プリンタドライバ１０３に、スタンププラグイン１１３を追加する。
【００７５】
追加部７１１は、追加情報（追加レイアウト情報、追加保存先情報、追加機能情報）を、記憶部１０４に記憶された各設定情報（レイアウト情報、保存先情報、機能情報）に追加する処理を行う。
【００７６】
登録部７１２は、記憶部１０４のプラグイン情報に、追加するプラグインのモジュールを示すファイル名を、各スコープに登録する。
【００７７】
上述した例では、スタンププラグインインストーラ７００の場合について説明した。なお、上に示す例では記述されていないが、設定情報である機能情報に追加する情報として、追加機能情報などが含まれていてもよい。
【００７８】
また、ボールドラインプラグインインストーラもほぼ同様の構成で実現できる。この場合、ボールドラインプラグインインストーラは、ボールドラインプラグインの他に、追加レイアウト情報、追加保存先情報、追加機能情報が必要となる。スタンププラグインインストーラ７００と異なる点としては追加機能情報を備えている点である。
【００７９】
図１０は、ボールドラインプラグインインストーラの追加機能情報の例を示した図である。図１０に示すように、ボールドラインプラグイン１１４の機能を実現するための設定が格納されている。
【００８０】
本実施の形態にかかるプラグインインストーラでは、追加するプラグインが１つの場合について説明したが、追加するプラグインが複数であっても良い。
【００８１】
次に、本実施の形態にかかるスタンププラグインインストーラ７００を用いたプラグインのインストール処理について説明する。図１１は、本実施の形態にかかるＰＣ１００に対するスタンププラグインインストーラ７００における上述した処理の手順を示すフローチャートである。
【００８２】
まずは、ユーザからの操作に従って、スタンププラグインインストーラ７００が実行される。これに伴い、起動部７０３が起動する（ステップＳ１１０１）。
【００８３】
次に、起動部７０３が、プリンタドライバ１０３のインターフェース部１１２を呼び出す（ステップＳ１１０２）。そして、インターフェース部１１２が、インストールＯＫである旨を、スタンププラグインインストーラ７００に出力する（ステップＳ１１０３）。
【００８４】
そして、スタンププラグインインストーラ７００は、プラグインの追加対象となるドライバが保存されているインストールディレクトリに、当該プラグインの画面表示部１３１、設定管理部１３２、及び描画部１３３をインストール（コピー）する（ステップＳ１１０４）。
【００８５】
その後、スタンププラグインインストーラ７００の追加部７１１が、プリンタドライバ１０３のコアドライバ１１１が参照するレイアウト情報に、スタンププラグインの追加レイアウト情報を追加する（ステップＳ１１０５）。
【００８６】
さらに、追加部７１１は、プリンタドライバ１０３のコアドライバ１１１が参照する保存先情報に、スタンププラグインの追加保存先情報を追加する（ステップＳ１１０６）。
【００８７】
その後、登録部７１２が、プリンタドライバ１０３のコアドライバ１１１が参照するプラグイン情報に、スタンププラグイン１１３の画面表示部、設定管理部、及び描画部のファイル名を各スコープに登録する（ステップＳ１１０７）。
【００８８】
上述した処理手順により、スタンププラグイン１１３のインストールが終了する。なお、上述した処理手順では行わなかったが、必要に応じて機能情報の追加も行う。例えばボールドラインプラグインをインストールする場合には行われる。
【００８９】
また、上述したように、プリンタドライバ１０３のインストール後に、プラグインを追加することに制限するものではなく、ＰＣ１００にインストールする前のプリンタドライバ１０３のパッケージに対して、プラグインを追加しても良い。この場合も同様に、スタンププラグイン１１３の各モジュールをパッケージに追加すると共に、インストール後に展開される各設定情報に対して情報を追加する等の処理を行うこととする。
【００９０】
図２に戻り、スタンププラグイン１１３は、画面表示部１３１と、設定管理部１３２と、描画部１３３とを備え、印刷処理におけるスタンプ機能を実現するプラグインとする。
【００９１】
スタンププラグイン１１３のスタンプ機能は、座標の指定可能な範囲を、用紙サイズから決定する機能である。スタンプ機能について指定可能な範囲を決定する処理が複雑で、記憶部１０４に記憶された機能情報に記述することは難しい。このため、スタンププラグイン１１３は、当該処理を行うための設定管理部１３２を備える。また、スタンププラグイン１１３は、スタンプの位置を視覚的にわかるプレビューを表示させるが、当該プレビューの表示はレイアウト情報に定義できない。このため、スタンププラグイン１１３は、当該表示を行うための画面表示部１３１を備える。さらに、スタンププラグイン１１３は、スタンプを印字するための描画部１３３を備える。
【００９２】
画面表示部１３１は、スタンプ設定画面を表示する。設定管理部１３２は、スタンプ処理に用いられる設定を管理する。本実施の形態にかかる設定管理部１２３は、印刷設定を管理し、印刷設定の各設定の設定可能範囲や各設定値間の禁則を解決する。描画部１３３は、印刷対象に対して行うスタンプの描画処理を行う。
【００９３】
ボールドラインプラグイン１１４は、描画部１４１を備え、印刷処理におけるボールドライン機能を実現するプラグインとする。なお、当該プラグインのインストール手順は、スタンププラグイン１１３とほぼ同様のため説明を省略する。また、描画部１４１は、ボールドラインの描画処理を行う。
【００９４】
ボールドラインプラグイン１１４は、仕切り線機能が、集約がｏｆｆ以外の時に選択可能となるプラグインとする。その禁則処理は、機能情報に十分記述できる処理であるため、ボールドラインプラグイン１１４は、設定管理部を有さず、当該禁則処理を機能情報に追記することで対応する。また、ボールドラインプラグイン１１４について設定画面で表示したい項目が、レイアウト情報で記述できる範囲とする。そこで、ボールドラインプラグイン１１４は、画面表示部を有さず、表示したい項目を、記憶部１０４のレイアウト情報に追記することとした。これにより、ボールドラインプラグイン１１４に関する設定項目は、コアドライバ１１１の画面表示部１２１で行う。また、ボールドラインプラグイン１１４は、論理ページに仕切り線を印字する描画部１４１を有する。
【００９５】
本実施の形態にかかるプリンタドライバ１０３に追加する、スタンププラグイン１１３については、画面表示部１３１、設定管理部１３２、及び描画部１３３を開発する必要がある。これに対し、ボールドラインプラグイン１１４については、描画部１４１を開発するだけで十分な機能を提供できる。そして、また、一切の開発を行わないモジュールである、設定変更の受け付けや禁則処理などを設定ファイルに記述を追加するだけで実現することができる。
【００９６】
また、本実施の形態とは異なるが、例えば、各印刷設定を元に簡易的なプレビューを提示するプラグインを追加する場合などは、設定表示部だけを持つプラグインを開発することで実現できる。このようにプラグイン毎に、必要なモジュールのみ開発すればよい。
【００９７】
図１２は、スタンププラグイン１１３とボールドラインプラグイン１１４とを追加した後のレイアウト情報を示した図である。図１２に示すレイアウト情報は、追加されたプラグインに関する機能の設定を行うためのレイアウトデータ（表示情報）が定義されている。
【００９８】
ただし、図１２に示すレイアウト情報では、コアドライバ１１１に関する記述は、図３から変更されていない。そして、当該レイアウト情報では、スタンププラグイン１１３とボールドラインプラグイン１１４に関する記述が追加されている。
【００９９】
ボールドラインプラグイン１１４に関する記述は、チェックボックス形式でボールドライン設定を追加することを示している。これにより、ボールドラインに関する設定のＵＩ表示処理の全てをコアドライバ１１１の画面表示部１２１が行うことになる。つまり、ボールドラインプラグイン１１４では、画面表示部がなくとも、設定画面上で設定することが可能となる。
【０１００】
スタンププラグイン１１３に関する記述では、属性ｔｙｐｅの値であるＰｌｕｇｉｎＤｉａｌｏｇＢｕｔｔｏｎが、スタンププラグイン１１３の設定画面を呼び出すプッシュボタンを示すＵＩコンポーネントとして表されている。そして、属性ｎａｍｅの値には、呼び出すプラグイン名が記述されている。このプラグイン名は、プラグイン情報に記述されているプラグイン名と関連付けされている。コアドライバ１１１の画面表示部１２１は、レイアウト情報から読み込んだプラグイン名をキーとして、プラグイン情報から呼び出すべきプラグインのファイル名を取得できる。これにより、スタンププラグイン１１３の画面表示部１３１を呼び出すことができる。
【０１０１】
図１３は、スタンププラグイン１１３とボールドラインプラグイン１１４とを追加した後に、コアドライバ１１１の画面表示部１３１が表示する印刷設定画面の例を示した図である。図１３に示す印刷設定画面の例では、図４の印刷設定画面と比べて、画面右上にある中綴じ設定のチェックボックス１３０１と、画面右下にあるスタンププラグイン１１３の設定画面を呼び出すプッシュボタン１３０２が追加されている。
【０１０２】
次に、プッシュボタン１３０２が押下された場合に表示する画面について説明する。図１４は、スタンププラグイン１１３の画面表示部１３１が表示する、スタンププラグイン１１３の設定画面の例を示した図である。
【０１０３】
図１４に示す、スタンププラグイン１１３の設定画面の例では、画面左のチェックボックス１４０１が、スタンプ機能のＯＮ／ＯＦＦを決定する。画面左の“Ｓｔａｍｐ  Ｉｍａｇｅ”がスタンプされる画像を選択できる。例えば、図１４に示す例では、“Ｓａｍｐｌｅ”が指定されているため、文字列“Ｓａｍｐｌｅ”が、記録紙に印字される。画面右の“Ａｘｉｓ  Ｘ”は、スタンプ機能が印字される水平方向の座標を指定する。“Ａｘｉｓ  Ｘ”は、スタンプ機能が印字される垂直方向の座標を指定する。
【０１０４】
図１５は、スタンププラグイン１１３とボールドラインプラグイン１１４とを追加した後の保存先情報を示した図である。図１５に示す保存先情報では、コアドライバ１１１に関する記述は、図６から変更されていない。そして、当該保存先情報では、スタンププラグイン１１３とボールドラインプラグイン１１４に関する記述が追加されている。
【０１０５】
ボールドラインプラグイン１１４に関する記述では、ボールドラインという仕切り線のＯＮ／ＯＦＦの設定値がＤｅｖｍｏｄｅ構造体に保存されることが指定されている。
【０１０６】
スタンププラグイン１１３に関する記述では、設定名“ｓｔａｍｐ”により、スタンプ機能のＯＮ／ＯＦＦの設定値をＤｅｖｍｏｄｅに保存することが指定されている。また、設定名“ｓｔａｍｐ＿ｉｍａｇｅ”により、スタンプの種類を指定する値をＤｅｖｍｏｄｅに保存することが指定されている。そして、設定名“ｓｔａｍｐ＿ａｘｉｓ＿ｘ”により、スタンプ機能として印字される水平方向の座標の設定値をＤｅｖｍｏｄｅに保存することが指定されている。設定名“ｓｔａｍｐ＿ａｘｉｓ＿ｙ”により、スタンプ機能として印字される垂直方向の座標の設定値をＤｅｖｍｏｄｅに保存することが指定されている。
【０１０７】
図１６は、スタンププラグイン１１３とボールドラインプラグイン１１４とを追加した後の機能情報を示した図である。図１６に示す機能情報では、追加されたプラグインによる機能で用いる設定値を定義されている。
【０１０８】
ただし、図１６に示す機能情報では、コアドライバ１１１に関する記述は、図５から変更されていない。そして、図５に記述された機能情報と比べて、ボールドラインプラグイン１１４に関する記述が追加されている。
【０１０９】
図１６の機能情報で示された、ボールドライン設定は、仕切り線のＯＮ／ＯＦＦ機能の設定であり、ボールドラインは集約がなしの時に、強制的に機能が“OFF”となり、それ以外の場合では、機能のＯＮ／ＯＦＦが選択可能となるように記述されている。機能情報に基づいて、コアドライバ１１１の設定管理部１２３が、ボールドラインの設定を管理するため、ボールドラインプラグイン１１４は設定管理部１２３を必要としない。
【０１１０】
スタンププラグイン１１３の各設定であるｓｔａｍｐ、ｓｔａｍｐ＿ｉｍａｇｅ、ｓｔａｍｐ＿ａｘｉｓ＿ｘ、ｓｔａｍｐ＿ａｘｉｓ＿ｙは、スタンププラグイン１１３の設定管理部１３２より管理される。このため、機能情報には、スタンププラグイン１１３による記述がない。
【０１１１】
上述したように、各プラグインは、必要に応じてモジュール（画面表示部、設定管理部、及び描画部）を備えれば良く、必要ない場合にはコアドライバ１１１のモジュール（画面表示部１２１、設定管理部１２３、及び描画部１２４）を呼び出せばよい。これにより、必要のないモジュールの作成が省略されるため、開発負担を軽減することができる。
【０１１２】
図１７は、スタンププラグイン１１３とボールドラインプラグイン１１４を追加した場後のプラグイン情報を示した図である。当該プラグイン情報は、いずれの形式でも良いが、本実施の形態では“ｉｎｉ”形式を用いた。
【０１１３】
図１７に示すプラグイン情報は、“ｕｉ＿ｐｌｕｇｉｎ”と、“ｓｅｔｔｉｎｇ＿ｍａｎａｇｅｒ＿ｐｌｕｇｉｎ”と、“ｇｒａｐｈｉｃ＿ｐｌｕｇｉｎ”と、の三つのスコープを持っている。
【０１１４】
“ｕｉ＿ｐｌｕｇｉｎ”は、各プラグインの名称と、画面表示部のファイル名とを対応付けて保持する。そして、“ｕｉ＿ｐｌｕｇｉｎ”に記述された各プラグインのファイル名を用いて、コアドライバ１１１などの画面表示部１２１から、各プラグインの画面表示部を呼び出すことができる。つまり、プラグインの画面表示部は、コアドライバの画面表示部によってのみ呼び出される。
【０１１５】
“ｓｅｔｔｉｎｇ＿ｍａｎａｇｅｒ＿ｐｌｕｇｉｎ”は、各プラグインの名称と、各プラグインの設定管理部のファイル名とを対応付けて保持する。そして、“ｓｅｔｔｉｎｇ＿ｍａｎａｇｅｒ＿ｐｌｕｇｉｎ”に記述された各プラグインのファイル名を指定することで、コアドライバ１１１などの設定管理部１２３から、各プラグインの設定管理部を呼び出すことができる。つまり、プラグインの設定管理部は、コアドライバの設定管理部によってのみ呼び出される。
【０１１６】
“ｇｒａｐｈｉｃ＿ｐｌｕｇｉｎ”は、各プラグインの名称と、各プラグインの描画部のファイル名とを対応付けて保持する。そして、“ｇｒａｐｈｉｃ＿ｐｌｕｇｉｎ”に記述された各プラグインのファイル名を指定することで、コアドライバ１１１などの描画部１２４から、各プラグインの描画部を呼び出すことができる。つまり、プラグインの描画部は、コアドライバの描画部によってのみ呼び出される。
【０１１７】
そして、図１７に示す例では、ボールドラインプラグイン１１４は描画部１４１しか有していないため、“ｇｒａｐｈｉｃ＿ｐｌｕｇｉｎ”にのみ記述されている。
【０１１８】
図１７に示すプラグイン情報の例では、スタンププラグイン１１３の各モジュールについて同一のダイナミック・リンク・ライブラリを指定したが、別々のダイナミック・リンク・ライブラリを指定してもよい。
【０１１９】
つまり、画面表示部１２１、設定保存部１２２、設定管理部１２３、及び描画部１２４で示されたモジュール群は、プラグインが実行する所定の機能に必要な処理であって、プラグインを構成するモジュールではできない部分処理を、設定情報（レイアウト情報、保存先情報、機能情報、及びプラグイン情報）に従って代行する。
【０１２０】
そして、記憶部１０４に記憶される設定情報が、プラグインのインストーラにより書き込まれ、画面表示部１２１、設定保存部１２２、設定管理部１２３、及び描画部１２４が、書き込まれた設定情報を参照することで、代行することを可能としている。
【０１２１】
次に、以上のように構成された本実施の形態にかかるＰＣ１００における全体的な印刷処理について説明する。図１８は、本実施の形態にかかるＰＣ１００における上述した処理の手順を示すフローチャートである。
【０１２２】
まず、ＰＣ１００では、アプリケーション１０１を起動する（ステップＳ１８０１）。そして、アプリケーション１０１からの要求に従って、コアドライバの画面表示部１２１が、印刷設定画面を表示する（ステップＳ１８０２）。
【０１２３】
次に、画面表示部１２１は、プラグイン情報を参照し、画面表示部を有するプラグインがあるか否かを判別する（ステップＳ１８０３）。画面表示部を有するプラグインが存在しないと判別した場合（ステップＳ１８０３：Ｎｏ）には、ステップＳ１８０５に進む。
【０１２４】
一方、画面表示部を有するプラグインが存在すると判別した場合（ステップＳ１８０３：Ｙｅｓ）には、各プラグインの画面表示部が、設定画面を表示する（ステップＳ１８０４）。その後ステップＳ１８０５に進む。
【０１２５】
そして、プリンタドライバ１０３は、ステップＳ１８０２及びステップＳ１８０４で表示した設定画面から、印刷設定の変更を受け付ける（ステップＳ１８０５）。
【０１２６】
次に、コアドライバ１１１の設定管理部１２３が、受け付けた印刷設定について禁則チェックを行う（ステップＳ１８０６）。
【０１２７】
その後、コアドライバ１１１の設定管理部１２３は、プラグイン情報を参照し、設定管理部を有するプラグインが存在するか否かを判別する（ステップＳ１８０７）。存在しないと判別した場合（ステップＳ１８０７：Ｎｏ）、ステップＳ１８０９に進む。
【０１２８】
設定管理部を有するプラグインが存在すると判別した場合（ステップＳ１８０７：Ｙｅｓ）、各プラグインの設定管理部が禁則チェックを行う（ステップＳ１８０８）。
【０１２９】
その後、プリンタドライバ１０３は、ユーザの操作から、印刷設定画面を閉じる旨の操作を受け付ける（ステップＳ１８０９）。
【０１３０】
次に、設定保存部１２２が、印刷設定の変更結果を、Ｄｅｖｍｏｄｅや保存領域に保存する（ステップＳ１８１０）。
【０１３１】
そして、アプリケーション１０１が印刷を実行する（ステップＳ１８１１）。
【０１３２】
そして、プリンタドライバ１０３のコアドライバ１１１における、描画部１２４が印刷処理を実行する（ステップＳ１８１２）。その後、描画部１２４は、プラグイン情報を参照し、描画部を持つプラグインが存在するか否かを判別する（ステップＳ１８１３）。存在しないと判別した場合には（ステップＳ１８１３：Ｎｏ）、ステップＳ１８１５に進む。
【０１３３】
一方、描画部１２４が存在すると判別した場合（ステップＳ１８１３：Ｙｅｓ）、各プラグインの描画部が、印刷に関する描画処理を実行する（ステップＳ１８１４）。
【０１３４】
最後に、アプリケーション１０１を終了して（ステップＳ１８１５）、処理を終了する。
【０１３５】
上述した処理手順により、コアドライバ１１１の各モジュール、及びプラグインの各モジュールの処理が実行されるので、プラグインの機能を伴う印刷処理が可能となる。以下に、各ステップの詳細な手順について説明する。
【０１３６】
次に、図１８のステップＳ１８０２で示した、本実施の形態にかかるプリンタドライバ１０３における設定画面の表示処理について説明する。図１９は、本実施の形態にかかるプリンタドライバ１０３における上述した処理の手順を示すフローチャートである。
【０１３７】
まず、コアドライバ１１１の画面表示部１２１は、レイアウト情報を参照して、各コンポーネントのレイアウトデータのリストを取得する（ステップＳ１９０１）。
【０１３８】
次に、画面表示部１２１は、レイアウトデータのリストが空か否か判別する（ステップＳ１９０２）。空ではないと判別した場合（ステップＳ１９０２：Ｎｏ）、リストから１つレイアウトデータを読み込む（ステップＳ１９０３）。
【０１３９】
そして、画面表示部１２１は、レイアウトデータのｎａｍｅに指定されている設定名に基づいて、設定管理部１２３から設定値、禁則に合致しているか否か、又は選択肢等の設定の情報を取得する。
【０１４０】
その後、画面表示部１２１は、設定管理部１２３から、設定の情報を取得できたか否か判別する（ステップＳ１９０４）。取得できたと判別した場合（ステップＳ１９０４：Ｙｅｓ）、レイアウトデータと設定の情報に従って、表示する（ステップＳ１９０５）。
【０１４１】
一方、画面表示部１２１は、設定の情報を取得できなかったと判別した場合（ステップＳ１９０４：Ｎｏ）、ＰｌｕｇｉｎＤｉａｌｏｇＢｕｔｔｏｎのようにプラグインを呼び出すコンポーネントであるか否かを判別する（ステップＳ１９０６）。当該コンポーネントではないと判別した場合（ステップＳ１９０６：Ｎｏ）、ステップＳ１９０２に進む。
【０１４２】
そして、画面表示部１２１は、当該コンポーネントではあると判別した場合（ステップＳ１９０６：Ｙｅｓ）、プラグイン情報から該当プラグインのファイル名を取得する。
【０１４３】
その後、画面表示部１２１は、プラグイン情報から該当プラグインのファイル名を取得できたか否かを判別する（ステップＳ１９０７）。取得できなかった場合（ステップＳ１９０７：Ｎｏ）、ステップＳ１９０２から処理を開始する。
【０１４４】
また、画面表示部１２１は、プラグイン情報から該当プラグインのファイル名を取得できたと判別した場合（ステップＳ１９０７：Ｙｅｓ）、レイアウトデータと設定の情報に従いコンポーネントを表示する（ステップＳ１９０５）。
【０１４５】
そして、ステップＳ１９０２で、リストが空と判別した場合（ステップＳ１９０２：Ｙｅｓ）、処理を終了する。
【０１４６】
上述した処理手順により、設定画面には、プリンタドライバ１０３でサポートされている設定やプラグインのコンポーネントが表示される。
【０１４７】
また、画面表示部１２１は、プラグインの呼び出しを行わないコンポーネントについて、当該コンポーネントに対応する設定の情報が、コアドライバ１１１の設定管理部１２３又はプラグインの設定管理部で管理されていない場合、その設定の情報をプリンタドライバ１０３がサポートしていないものと判断し、表示しない。
【０１４８】
また、画面表示部１２１は、設定画面を表示する際に、プラグインの呼び出しを行うコンポーネントについて、当該プラグインがプラグイン情報に記述されている場合に限り表示し、プラグイン情報に記述されていない場合は当該コンポーネントを表示しない。
【０１４９】
次に、本実施の形態にかかるプリンタドライバ１０３が設定画面を表示する際の各モジュール間の処理について説明する。図２０は、本実施の形態にかかるプリンタドライバ１０３における上述した処理の手順を示すシーケンス図である。なお、当該シーケンス図は、図１８のステップＳ１８０２を詳細に示したシーケンスである。
【０１５０】
まず、ユーザから、設定画面の表示命令を画面表示部１２１が受け付ける（ステップＳ２００１）。
【０１５１】
次に、画面表示部１２１が、設定保存部１２２にＤｅｖｍｏｄｅを受け渡し、設定管理部の初期化を要求する（ステップＳ２００２）。
【０１５２】
そして、設定保存部１２２が、設定管理部１２３に設定のリストの取得命令を行う（ステップＳ２００３）。そして、設定管理部１２３が、プラグイン情報を参照し、特定されたスタンププラグイン１１３の設定管理部１３２に設定のリストの取得要求を行う（ステップＳ２００４）。
【０１５３】
これに伴い、スタンププラグイン１１３の設定管理部１３２は、設定管理部１２３に、スタンププラグイン１１３が管理している設定のリストを返す（ステップＳ２００５）。
【０１５４】
次に、設定管理部１２３が、コアドライバ１１１用に管理している設定のリストに、スタンププラグイン１１３の設定のリストを追加して、設定保存部１２２に返す（ステップＳ２００６）。
【０１５５】
そして、設定保存部１２２が、記憶部１０４などの設定値が保存された領域から、リストに格納された設定に対応する設定値を取得する（ステップＳ２００７）。
【０１５６】
次に、設定保存部１２２は、ステップＳ２００６で受け取った設定リストの各設定に、Ｄｅｖｍｏｄｅの値及び保存された領域から取得した設定値を、設定管理部１２３に対して反映を要求する（ステップＳ２００８）。
【０１５７】
そして、設定管理部１２３が、スタンププラグイン１１３において管理されている設定に対応する設定値を、設定管理部１３２に対して反映を要求する（ステップＳ２００９）。
【０１５８】
次に、設定管理部１２３が、コアドライバ１１１が管理する各設定の設定値に対する禁則チェックを行う（ステップＳ２０１０）。
【０１５９】
次に、設定管理部１２３が、スタンププラグイン１１３の設定管理部１３２が管理している各設定の禁則チェックを行う（ステップＳ２０１１）。
【０１６０】
その後、画面表示部１２１が、レイアウト情報に記述されている各設定の情報の取得要求を行う（ステップＳ２０１２）。なお、設定の情報とは、設定の設定値や禁則や選択肢等とする。
【０１６１】
さらに、設定管理部１３２が、要求された設定の情報を返す（ステップＳ２０１３）。その後、画面表示部１２１が、受け取った各設定の情報と、レイアウト情報により、設定画面を表示する（ステップＳ２０１４）。
【０１６２】
上述した処理手順により、設定画面を表示することができる。
【０１６３】
次に、本実施の形態にかかるプリンタドライバ１０３が必要とする動作を行う際の各モジュール間の処理について説明する。図２１は、本実施の形態にかかるプリンタドライバ１０３における上述した処理の手順を示すシーケンス図である。
【０１６４】
図２１に示す例では、プリンタドライバ１０３に既にスタンププラグイン１１３とボールドラインプラグイン１１４とが追加された場合であって、アプリケーションからＤｅｖｍｏｄｅの修正命令を受け付けた時のシーケンスとする。
【０１６５】
まず、アプリケーション１０１が、設定保存部にＤｅｖｍｏｄｅの修正命令を行う（ステップＳ２１０１）。次に、設定保存部１２２が、設定管理部１２３に設定のリストの取得命令を行う（ステップＳ２１０２）。
【０１６６】
その後、設定管理部１２３が、スタンププラグイン１１３の設定管理部１３２に設定のリストの取得命令を行う（ステップＳ２１０３）。
【０１６７】
次に、設定管理部１３２は、スタンププラグイン１１３用に管理している設定のリストを、設定管理部１２３に返す（ステップＳ２１０４）。その後、設定管理部１２３は、自らが管理している設定のリストに、スタンププラグイン１１３の設定リストを追加して、設定保存部１２２に返す（ステップＳ２１０５）。
【０１６８】
そして、設定保存部１２２が、記憶部１０４などの保存領域から、設定値を取得する（ステップＳ２１０６）。
【０１６９】
次に、設定保存部１２２は、ステップＳ２１０５で受け取った設定リストの各設定に、Ｄｅｖｍｏｄｅの値と保存領域に保存されていた設定値を反映するように、設定管理部１２３に要求する（ステップＳ２１０７）。
【０１７０】
そして、設定管理部１２３が、スタンププラグイン１１３の設定管理部１３２に対して、スタンププラグイン１１３で管理する設定（ステップＳ２１０４で受け取ったリストの各設定名）へ、ステップＳ２１０７で入力された設定値を反映するように要求する（ステップＳ２１０８）。
【０１７１】
次に、設定管理部１２３が、自己が管理する各設定について禁則チェックを行う（ステップＳ２１０９）。その後、設定管理部１２３が、スタンププラグイン１１３の設定管理部１３２が管理している各設定について禁則チェックを行う（ステップＳ２１１０）。
【０１７２】
次に、設定保存部１２２が、設定管理部１２３に各設定の設定値の取得要求を行う（ステップＳ２１１１）。これに伴い、設定管理部１２３が、スタンププラグイン１１３の設定管理部１３２の管理している各設定の設定値の取得要求を行う（ステップＳ２１１２）。
【０１７３】
そして、スタンププラグイン１１３の設定管理部１３２が、管理している各設定の設定値を、設定管理部１２３に返す（ステップＳ２１１３）。その後、設定管理部１２３は、自ら管理している各設定の設定値と、スタンププラグイン１１３の設定管理部１３２から入力された各設定の設定値と、を設定保存部１２２に返す（ステップＳ２１１４）。
【０１７４】
そして、設定保存部１２２は、入力された各設定の設定値のうち、保存先情報でＤｅｖｍｏｄｅが指定されている設定の設定値のみを、Ｄｅｖｍｏｄｅに保存する（ステップＳ２１１５）。その後、設定保存部１２２は、入力された各設定の設定値のうち、保存先情報で保存領域（例えばレジストリ）に指定されている設定の設定値のみを保存領域に保存する（ステップＳ２１１６）。その後、設定保存部１２２は、設定値等が保存されたＤｅｖｍｏｄｅ構造体を返す（ステップＳ２１１７）。
【０１７５】
上述した処理手順により、印刷処理に必要な設定値をＤｅｖｍｏｄｅ構造体や保存領域に対して設定することができる。
【０１７６】
また、上述した処理手順では、コアドライバの設定保存部１２２は、コアドライバの設定管理部１２３を通してのみプラグインの設定管理部のデータをやり取りするため、機能情報に記述を増やすだけで、プラグインの設定管理部があるかのような動作をすることができる。
【０１７７】
次に設定表示画面において、ユーザから設定の変更を受け付けた場合の処理について説明する。図２２は、スタンププラグイン１１３とボールドラインプラグイン１１４を追加した場合に、表示された設定画面で入力された設定値に従って、プリンタドライバ１０３で行われる処理を示すシーケンスとする。なお、当該処理は、図１８のステップＳ１８０４〜Ｓ１８０８の処理に該当する。
【０１７８】
まず、画面表示部１２１が、設定画面で表示された設定値の変更を、ユーザから受け付ける（ステップＳ２２０１）。次に、画面表示部１２１は、変更を受け付けた設定値を、設定管理部１２３に出力する（ステップＳ２２０２）。次に、設定管理部１２３が、入力された設定値を設定した後、自らが管理している各設定の設定値の禁則チェックを行う（ステップＳ２２０３）。
【０１７９】
その後、設定管理部１２３が、スタンププラグイン１１３の設定管理部１３２が管理している各設定の設定値の禁則チェックを行う（ステップＳ２２０４）。
【０１８０】
その後、画面表示部１２１が、レイアウト情報に記述されている各設定の設定値を取得する（ステップＳ２２０５）。その後、設定管理部１２３が、要求された各設定の設定値を返す（ステップＳ２２０６）。
【０１８１】
そして、画面表示部１２１は、受け取った各設定の設定値に従って、設定画面を更新する（ステップＳ２２０７）。
【０１８２】
次に、ユーザが、表示されている設定画面から、スタンププラグイン１１３のダイアログを呼び出したものとする。この場合、ユーザからダイアログの呼び出しが、スタンププラグイン１１３の画面表示部１３１に対して行われる（ステップＳ２２０８）。
【０１８３】
そして、スタンププラグイン１１３の画面表示部１３１が、スタンププラグイン１１３の設定画面に表示される各設定の設定値の取得要求を、コアドライバ１１１の設定管理部１２３に対して行う（ステップＳ２２０９）。
【０１８４】
そして、設定管理部１２３は、要求を受けた各設定の設定値の取得要求を、スタンププラグイン１１３の設定管理部１３２に対して行う（ステップＳ２２１０）。
【０１８５】
これに伴い、スタンププラグイン１１３の設定管理部１３２は、取得要求に対して、各設定の設定値を返す（ステップＳ２２１１）。さらに、設定管理部１２３が、スタンププラグイン１１３の設定管理部１３２から受け取った各設定の設定値を返す（ステップＳ２２１２）。
【０１８６】
そして、スタンププラグイン１１３の画面表示部１３１は、受け取った各設定の設定値に従って、スタンププラグイン１１３の設定画面を表示する（ステップＳ２２１３）。
【０１８７】
次に、スタンププラグイン１１３の画面表示部１３１は、表示された設定画面に対して、ユーザからの操作に従って、各設定の設定値の変更を受け付ける（ステップＳ２２１４）。
【０１８８】
そして、画面表示部１３１は、受け付けた各設定の設定値を、設定管理部１２３に出力する（ステップＳ２２１５）。設定管理部１２３は、入力された設定の設定値が、スタンププラグイン１１３の設定管理部１３２が管理している設定の設定値と判別し、入力された設定の設定値を、スタンププラグイン１１３の設定管理部１３２に出力する（ステップＳ２２１６）。
【０１８９】
その後、コアドライバ１１１の設定管理部１２３が、管理している各設定の設定値の禁則チェックを行う（ステップＳ２２１７）。さらに、コアドライバ１１１の設定管理部１２３が、スタンププラグイン１１３の設定管理部１３２が管理している各設定の設定値の禁則チェックを行う（ステップＳ２２１８）。
【０１９０】
その後、スタンププラグイン１１３の画面表示部１３１が、表示している各設定の設定値の取得要求を、設定管理部１２３に対して行う（ステップＳ２２１９）。
【０１９１】
そして、設定管理部１２３は、スタンププラグイン１１３の設定管理部１３２に対して要求された各設定の設定値の取得要求を行う（ステップＳ２２２０）。
【０１９２】
そして、スタンププラグイン１１３の設定管理部１３２が、要求された各設定の設定値を返す（ステップＳ２２２１）。その後、設定管理部１２３が、要求された各設定の設定値を返す（ステップＳ２２２２）。
【０１９３】
そして、スタンププラグイン１１３の画面表示部１３１は、受け取った各設定の設定値から、スタンププラグイン１１３の設定画面を更新して、表示する（ステップＳ２２２３）。
【０１９４】
そして、スタンププラグイン１１３の画面表示部１３１は、ユーザから設定画面を閉じる操作を受け付けた場合、当該設定画面の表示を停止する（ステップＳ２２２４）。
【０１９５】
そして、コアドライバ１１１の画面表示部１２１が、各設定の設定値の取得要求を、コアドライバ１１１の設定管理部１２３に対して行う（ステップＳ２２２５）。そして、コアドライバ１１１の設定管理部１２３が、各設定の設定値を返す（ステップＳ２２２６）。
【０１９６】
その後、画面表示部１２１が、設定画面（ＵＩ）の更新を行う（ステップＳ２２２７）。
【０１９７】
本実施の形態にかかるプリンタドライバ１０３では、ボールドラインプラグイン１１４に関する項目は、コアドライバ１１１の画面表示部１２１が表示した設定画面に含まれている。つまり、レイアウト情報に追加されたプラグインに関する記述を、コアドライバ１１１が表示できる。そして、プラグインが設定表示部を備えていなくとも、当該プラグインの設定を変更させる手段をユーザに提供することができる。
【０１９８】
コアドライバ１１１の設定保存部１２２、コアドライバ１１１の画面表示部１２１、及びプラグインの設定表示部は、コアドライバの設定管理部１２３を通してのみ、プラグインの設定管理部との各設定の設定値のやり取りを行う。つまり、プラグインの設定管理部が各設定の設定値のやりとりを行う共通インターフェースとなるため、機能情報に記述を増やすだけで、プラグインの設定管理部があるかのような動作をすることができる。
【０１９９】
次に設定画面を終了する場合の処理について説明する。図２３は、スタンププラグイン１１３とボールドラインプラグイン１１４を追加した場合に、設定画面の終了処理を示すシーケンスとする。なお、当該処理は、図１８のステップＳ１８０９の処理に該当する。
【０２００】
まず、画面表示部１２１は、ユーザから設定画面の終了要求を受け付ける（ステップＳ２３０１）。
【０２０１】
終了要求に伴い、設定保存部１２２が、設定管理部１２３に各設定の設定値の取得を要求する（ステップＳ２３０２）。そして、設定管理部１２３が、スタンププラグイン１１３の設定管理部１３２の管理している各設定の設定値の取得を要求する（ステップＳ２３０３）。
【０２０２】
そして、スタンププラグイン１１３の設定管理部１３２は、設定管理部１２３に、自ら管理している各設定の設定値を返す（ステップＳ２３０４）。そして、設定管理部１２３は、自ら管理している各設定の設定値と、スタンププラグイン１１３の設定管理部１３２が管理している各設定の設定値と、を設定保存部１２２に返す（ステップＳ２３０５）。
【０２０３】
そして、設定保存部１２２は、各設定の設定値のうち、保存先情報でＤｅｖｍｏｄｅに保存先が指定されている、設定の設定値のみをＤｅｖｍｏｄｅに保存する（ステップＳ２３０６）。
【０２０４】
その後、設定保存部１２２は、各設定の設定値のうち、保存先情報で保存領域に保存先が指定されている、設定の設定値のみを保存領域に保存する（ステップＳ２３０７）。そして、設定保存部１２２が、Ｄｅｖｍｏｄｅを返す（ステップＳ２３０８）。
【０２０５】
上述した処理手順では、コアドライバ１１１の設定保存部１２２は、コアドライバの設定管理部１２３を通して、プラグインのも含んだ設定値を受け取ることができる。これにより、機能情報に記述を追加するだけで、プラグインの設定管理部があるかのような動作をすることができる。
【０２０６】
次に、本実施の形態にかかるコアドライバ１１１の設定保存部１２２における、設定値を保存する際の処理について説明する。図２４は、本実施の形態にかかる設定保存部１２２における上述した処理の手順を示すフローチャートである。
【０２０７】
まず、設定保存部１２２が、記憶部１０４に記憶された保存先情報から、Ｄｅｖｍｏｄｅキー内の、設定リストを取得する（ステップＳ２４０１）。図６に示す例では、ｌａｙｏｕｔ、ｂｏｏｋｌｅｔ、ｃｏｐｉｅｓ、ｐａｐｅｒｓｉｚｅを設定リストとして取得する。これら設定は、Ｄｅｖｍｏｄｅに保存すべき設定である。
【０２０８】
そして、設定保存部１２２が、設定リストが空か否か判別する（ステップＳ２４０２）。設定リストが空と判別した場合（ステップＳ２４０２：Ｙｅｓ）、ステップＳ２４０６に進む。
【０２０９】
一方、設定保存部１２２は、設定リストが空ではないと判別した場合（ステップＳ２４０２：Ｎｏ）、設定リストから、次の設定名を読み込む（ステップＳ２４０３）。当該設定名の読み込みは、図６に示す例では、ｌａｙｏｕｔ、ｂｏｏｋｌｅｔ、ｃｏｐｉｅｓ、ｐａｐｅｒｓｉｚｅの順に行われる。
【０２１０】
次に、設定保存部１２２が、設定管理部１２３に対して取得要求を行い、設定名に対応する設定値を取得できたか否か判別する（ステップＳ２４０４）。取得できなかった場合（ステップＳ２４０４：Ｎｏ）、再びステップＳ２４０２から処理を開始する。
【０２１１】
一方、設定保存部１２２が、取得できたと判別した場合（ステップＳ２４０４：Ｙｅｓ）、取得した設定値をＤｅｖｍｏｄｅ構造体に保存する（ステップＳ２４０５）。その後、再びステップＳ２４０２から処理を開始する。
【０２１２】
そして、Ｄｅｖｍｏｄｅに関する設定リストが空になった後、設定保存部１２２が、記憶部１０４に記憶された保存先情報から、ｒｅｇｉｓｔｒｙキー内の、設定リストを取得する（ステップＳ２４０６）。図６に示す例では、ｕｓｅｒｉｄを設定リストとして取得する。これら設定は、レジストリに保存すべき設定である。
【０２１３】
そして、設定保存部１２２が、レジストリに関する設定リストが空か否か判別する（ステップＳ２４０７）。設定リストが空ではないと判別した場合（ステップＳ２４０７：Ｎｏ）、設定リストから、次の設定名を読み込む（ステップＳ２４０８）。当該設定名の読み込みは、図６に示す例では、ｕｓｅｒｉｄの順に行われる。
【０２１４】
次に、設定保存部１２２が、設定管理部１２３に対して取得要求を行い、設定名に対応する設定値を取得できたか否か判別する（ステップＳ２４０９）。取得できなかった場合（ステップＳ２４０９：Ｎｏ）、再びステップＳ２４０７から処理を開始する。
【０２１５】
一方、設定保存部１２２が、取得できたと判別した場合（ステップＳ２４０９：Ｙｅｓ）、取得した設定値をレジストリに保存する（ステップＳ２４１０）。その後、再びステップＳ２４０７から処理を開始する。
【０２１６】
一方、ステップＳ２４０７で設定リストが空と判別した場合（ステップＳ２４０７：Ｙｅｓ）、処理を終了する。
【０２１７】
上述した処理により、プリンタドライバ１０３が処理を行うために必要な設定が、Ｄｅｖｍｏｄｅ構造体及びレジストリに対して保存されたことになる。また、プラグインが追加された場合でも、図１６に示す保存先情報に従って、上述した処理を行うことで、各プラグインによる処理に必要な設定を行うことができる。
【０２１８】
次に印刷処理について説明する。図２５は、スタンププラグイン１１３とボールドラインプラグイン１１４を追加した場合に、アプリケーションから印刷が実行された場合の処理を示すシーケンスとする。なお、当該処理は、図１８のステップＳ１８１１〜Ｓ１８１４の処理に該当する。
【０２１９】
まず、アプリケーション１０１が、コアドライバ１１１の描画部１２４に印刷ジョブの開始命令をする（ステップＳ２５０１）。
【０２２０】
次に、コアドライバ１１１の描画部１２４は、スタンププラグイン１１３の描画部１３３に印刷ジョブの開始を通知する（ステップＳ２５０２）。この通知では、このスタンププラグイン１１３は特に処理を行わない。
【０２２１】
そして、コアドライバ１１１の描画部１２４は、ボールドラインプラグイン１１４の描画部１４１に印刷ジョブの開始を通知する（ステップＳ２５０３）。この通知では、このボールドラインプラグイン１１４は特に処理を行わない。
【０２２２】
その後、アプリケーション１０１は、コアドライバ１１１の描画部１２４にページの印刷の開始命令をする（ステップＳ２５０４）。
【０２２３】
そして、コアドライバ１１１の描画部１２４は、スタンププラグイン１１３の描画部１３３にページの印刷開始命令をする（ステップＳ２５０５）。この通知では、スタンププラグイン１１３は特に処理を行わない。
【０２２４】
その後、コアドライバ１１１の描画部１２４は、ボールドラインプラグイン１１４の描画部１４１にページの印刷開始命令をする（ステップＳ２５０６）。この通知では、ボールドラインプラグイン１１４は特に処理を行わない。
【０２２５】
そして、アプリケーション１０１は、コアドライバ１１１の描画部１２４に描画データを送る（ステップＳ２５０７）。その後、描画部１２４は描画データをプリンタの解釈できる原稿データに変換する（ステップＳ２５０８）。
【０２２６】
そして、アプリケーション１０１は、コアドライバ１１１の描画部１２４に対して、印刷の終了命令をする（ステップＳ２５０９）。
【０２２７】
そして、コアドライバ１１１の描画部１２４がスタンププラグイン１１３の描画部１３３にページの印刷終了命令をする（ステップＳ２５１０）。この時、スタンププラグイン１１３の機能がＯｎならば、スタンププラグイン１１３の描画部１３３が、原稿データに対してスタンプを追加する（ステップＳ２５１１）。本処理手順では、スタンププラグイン１１３の機能がＯＮとする。
【０２２８】
その後、コアドライバ１１１の描画部１２４が、ボールドラインプラグイン１１４の描画部１４１にページの印刷終了命令をする（ステップＳ２５１２）。この時、ボールドラインプラグイン１１４の機能がＯＮならば、ボールドラインプラグイン１１４の描画部１４１が、原稿データに対してボールドラインを追加する（ステップＳ２５１３）。
【０２２９】
上述したステップＳ２５０４〜Ｓ２５１３まで処理をページ数分繰り返す。そして、アプリケーション１０１は、コアドライバ１１１の描画部１２４に対して印刷ジョブの終了命令をする（ステップＳ２５１４）。
【０２３０】
上述した処理手順で示したように、印刷処理時において、プラグインの各描画部は、コアドライバ１１１の描画部１２４から通知を受け取った際、必要に応じて処理を行うこととする。
【０２３１】
図２に示す例では、ボールドラインプラグイン１１４には、モジュールとして描画部１４１のみを有していたが、新たにボールドラインの設定画面を表示する画面表示部を開発し、追加する場合について説明する。
【０２３２】
図２６は、ボールドラインプラグイン１１４の画面表示部１６２１を追加した場合のＰＣ１００の構成を示すブロック図である。
【０２３３】
図２６に示すように、ＰＣ１００のプリンタドライバ１０３においては、ボールドラインプラグイン１１４に対して、設定画面を表示するための画面表示部１６２１が追加されている。
【０２３４】
ボールドラインプラグイン１１４に新たに画面表示部１６２１を追加する手順について説明する。当該手順は、本実施の形態ではインストーラを用いて行うが、ユーザが手動で行ってもよい。
【０２３５】
まずは、インストーラが、ボールドラインプラグイン１１４の画面表示部のダイナミック・リンク・ライブラリを追加する。その後、インストーラは、記憶部１０４のプラグイン情報に、ボールドラインプラグイン１１４の画面表示部１６２１に関する記述を追加する。
【０２３６】
図２７は、ボールドラインプラグイン１１４に画面表示部１６２１を追加した場合のプラグイン情報の例を示す。符号２７０１に示すように、プラグイン情報には、ボールドラインプラグイン１１４の画面表示部１６２１が追加されている。
【０２３７】
図２７に示すように、ボールドラインプラグイン１１４の画面表示部１６２１のダイナミック・リンク・ライブラリのファイル名はｂｏｒｄｅｒｌｉｎｅＵＩ.ｄｌｌとする。ボールドラインプラグイン１１４に関しては、画面表示部１６２１は、ｂｏｒｄｅｒｌｉｎｅＵＩ.ｄｌｌ、描画部１４１はｂｏｒｄｅｒｌｉｎｅ.ｄｌｌという異なるダイナミック・リンクライブラリが用意されている。そして、プラグイン情報でそれぞれ異なるダイナミック・リンクライブラリを指定することで、それぞれ適切に呼び出すことができる。
【０２３８】
次に、インストーラが、記憶部１０４のレイアウト情報から、ボールドラインプラグイン１１４の機能に関する記述を削除する。そして、インストーラが、レイアウト情報に対して、ボールドラインプラグイン１１４の設定画面を呼び出すＰｌｕｇｉｎＤｉａｌｏｇＢｕｔｔｏｎに関する記述を追加する。
【０２３９】
図２８は、ボールドラインプラグイン１１４に画面表示部１６２１を追加した場合に、インストーラにより記述を変更された後のレイアウト情報の例を示した図である。図２８に示す例では、符号２８０１に示すように、ボールドラインプラグイン１１４用に、“ＰｌｕｇｉｎＤｉａｌｏｇＢｕｔｔｏｎ”に関する記述が追加されている。
【０２４０】
当該レイアウト情報に基づいて表示される設定画面について説明する。図２９は、ボールドラインプラグイン１１４に画面表示部１６２１を追加した場合に、コアドライバ１１１の画面表示部１２１が表示する設定画面の例を示した図である。図２９の符号２９０１が示すように、ボールドラインプラグイン１１４の機能ＯＮ／ＯＦＦのチェックボックスの代わりに、ボールドラインプラグイン１１４の設定画面を呼び出すプッシュボタンが追加されている。
【０２４１】
そして、プッシュボタンがユーザに押下された場合、ボールドラインプラグイン１１４の画面表示部１６２１が、設定画面を表示する。図３０は、ボールドラインプラグイン１１４の画面表示部１６２１が表示する設定画面の例を示した図である。
【０２４２】
図３０に示したボールドラインプラグイン１１４の設定画面では、集約機能とボールドラインプラグイン１１４の機能ＯＮ／ＯＦＦと印刷結果の簡易プレビューが表示される。当該設定画面でボールドラインプラグイン１１４に関する設定を受け付けることができる。
【０２４３】
このように、ボールドラインプラグイン１１４の描画部１４１を変更する必要はないし、機能情報を変更する必要がない。仮に、ボールドラインプラグイン１１４が設定保存部を有していた場合でも、設定保存部を変更する必要はない。また、ＯＳ１０２にインストール済みのプリンタドライバに対して、設定情報以外に変更を行う必要がないため、プリンタドライバを再インストールする必要はない。これによりユーザの作業負担を軽減することができる。
【０２４４】
つまり、従来から、プリンタドライバは、画面表示や設定の保存と更新の管理や印字などの、多くのモジュールを持っている。そのため、それら全てを行うプラグインを開発すると開発コストが高くなっていた。本実施の形態のプリンタドライバ１０３においては、プラグインで必要なモジュールのみ作成し、他のモジュールはプリンタドライバ１０３のモジュールを呼び出せば良いため、開発コストを削減することができる。
【０２４５】
ドライバの各専用のモジュールの代替手段として、参照ファイルに情報を追加するだけで、当該プラグインドライバの専用のモジュールが実行される場合と同等の処理をプリンタドライバのモジュールが実行されることで実現することが可能となり、プラグインドライバの開発コストを削減できる。
【０２４６】
本実施の形態にかかるプリンタドライバ１０３のコアドライバ１１１の各モジュールは、各種設定情報（レイアウト情報、保存先情報、機能情報、及びプラグイン情報）を変更するだけで、プラグインの各モジュールの代替手段として、当該各モジュールと同等の動作を行うことを可能とする。これにより、プラグイン開発時のコストを下げることができる。
【０２４７】
また、プラグインについて、複数の物理モジュールとして分け、それぞれを同じプラグインの部品として利用する仕組みとした。これにより、追加したい物理モジュール以外の物理モジュールを変更せずに、新しい処理部の物理モジュールを追加できる。これにより、既存のプラグインへの処理を追加する際の開発コストを下げることができる。
【０２４８】
図３１は、本実施の形態のＰＣ１００のハードウェア構成を示した図である。図３１に示すようにＰＣ１００は、ＣＰＵ３１０１と、ＲＯＭ（Read  Only  Memory）３１０２と、ＲＡＭ３１０３と、ＨＤＤ３１０４と、ディスプレイ装置などの表示装置３１０５と、キーボードやマウスなどの入力装置３１０６と、通信インターフェース３１０７と、これらを接続するバス３１０８と、を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【０２４９】
本実施の形態にかかるＰＣ１００で実行されるプリンタドライバ（プログラム）１０３は、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記憶媒体に記録されて提供される。
【０２５０】
また、本実施の形態にかかるＰＣ１００で実行されるプリンタドライバ１０３を、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施の形態にかかるＰＣ１００で実行されるプリンタドライバ１０３をインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【０２５１】
また、本実施の形態にかかるＰＣ１００で実行されるプリンタドライバ１０３を、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０２５２】
本実施の形態にかかるＰＣ１００で実行されるプリンタドライバ１０３は、上述した各部（コアドライバ１１１、及び各種プラグイン）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ３１０１が上記記憶媒体からプリンタドライバ１０３を読み出して実行することにより上記各部がＲＡＭ３１０３上にロードされ、コアドライバ１１１、及び各種プラグインがＲＡＭ３１０３上に生成されるようになっている。
【符号の説明】
【０２５３】
１００  ＰＣ
１０１  アプリケーション
１０３  プリンタドライバ
１０４  記憶部
１０５  通信部
１１１  コアドライバ
１１２  インターフェース部
１１３  スタンププラグイン
１１４  ボールドラインプラグイン
１２１  画面表示部
１２２  設定保存部
１２３  設定管理部
１２４  描画部
１３１  画面表示部
１３２  設定管理部
１３３  描画部
１４１  描画部
１５０  プリンタ
１６０  ネットワーク
５０１  集約設定
７００  スタンププラグインインストーラ
７０１  追加レイアウト情報
７０２  追加保存先情報
７０３  起動部
７１１  追加部
７１２  登録部
１６２１  画面表示部
３１０１  ＣＰＵ
３１０２  ＲＯＭ
３１０３  ＲＡＭ
３１０４  ＨＤＤ
３１０５  表示装置
３１０６  入力装置
３１０７  通信インターフェース
３１０８  バス
【先行技術文献】
【特許文献】
【０２５４】
【特許文献１】特開２００４−００５６０８号公報
【図１】
2010218309.tif 000003
【図２】
2010218309.tif 000004
【図３】
2010218309.tif 000005
【図４】
2010218309.tif 000006
【図５】
2010218309.tif 000007
【図６】
2010218309.tif 000008
【図７】
2010218309.tif 000009
【図８】
2010218309.tif 000010
【図９】
2010218309.tif 000011
【図１０】
2010218309.tif 000012
【図１１】
2010218309.tif 000013
【図１２】
2010218309.tif 000014
【図１３】
2010218309.tif 000015
【図１４】
2010218309.tif 000016
【図１５】
2010218309.tif 000017
【図１６】
2010218309.tif 000018
【図１７】
2010218309.tif 000019
【図１８】
2010218309.tif 000020
【図１９】
2010218309.tif 000021
【図２０】
2010218309.tif 000022
【図２１】
2010218309.tif 000023
【図２２】
2010218309.tif 000024
【図２３】
2010218309.tif 000025
【図２４】
2010218309.tif 000026
【図２５】
2010218309.tif 000027
【図２６】
2010218309.tif 000028
【図２７】
2010218309.tif 000029
【図２８】
2010218309.tif 000030
【図２９】
2010218309.tif 000031
【図３０】
2010218309.tif 000032
【図３１】
2010218309.tif 000033