(57)【要約】【課題】プリンタドライバによる処理時の読込時間を短縮する。【解決手段】プリンタドライバ１１０は、追加又は取り外し可能なプラグインと協働するプリンタドライバであって、印刷処理中にフックされる所定のタイミングで使用される可能性を有するプラグインを判定する判定部２１３と、判定部２１３により使用される可能性を有すると判定されたプラグインを読み込む読込部２１４と、読込部により読み込まれたプラグインを呼び出すプラグイン呼出部２１２と、を備える。【選択図】図２
2012198674.tif 000002
【特許請求の範囲】
【請求項１】
追加又は取り外し可能なプラグインと協働するプリンタドライバであって、
印刷処理中にフックされる所定のタイミングで使用される可能性を有するプラグインを判定する判定手段と、
前記判定手段により使用される可能性を有すると判定された前記プラグインを読み込む読込手段と、
前記読込手段により読み込まれた前記プラグインを呼び出す呼出手段と、
を備えることを特徴とするプリンタドライバ。
【請求項２】
前記判定手段は、前記プラグインを読み込む条件が示されたプラグイン情報を記憶手段から読み込み、当該プラグイン情報に従って判定すること、
を特徴とする請求項１に記載のプリンタドライバ。
【請求項３】
前記判定手段は、前記プラグイン情報に含まれている、前記印刷処理中でプラグインを実行するタイミングに関する条件に従って判定すること、
を特徴とする請求項２に記載のプリンタドライバ。
【請求項４】
前記判定手段は、前記プラグイン情報に含まれている、前記印刷処理の対象となる中間データを前記プラグインが対応しているか否かを示した条件に従って判定すること、
を特徴とする請求項２に記載のプリンタドライバ。
【請求項５】
前記判定手段は、前記プラグイン情報に含まれている、出力先のプリンタに前記プラグインが対応しているか否かを示した条件に従って判定すること、
を特徴とする請求項２に記載のプリンタドライバ。
【請求項６】
追加又は取り外し可能なプラグインと協働するプリンタドライバをインストールした情報処理装置であって、
前記プリンタドライバが、
印刷処理中にフックされる所定のタイミングで使用される可能性を有するプラグインを判定する判定手段と、
前記判定手段により使用される可能性を有すると判定された前記プラグインを読み込む読込手段と、
前記読込手段により読み込まれた前記プラグインを呼び出す呼出手段と、
を備えたことを特徴とする情報処理装置。
【請求項７】
前記判定手段は、前記プラグインを読み込む条件が示されたプラグイン情報を記憶手段から読み込み、当該プラグイン情報に従って判定すること、
を特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記判定手段は、前記プラグイン情報に含まれている、前記印刷処理中でプラグインを実行するタイミングに関する条件に従って判定すること、
を特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記判定手段は、前記プラグイン情報に含まれている、前記印刷処理の対象となる中間データを前記プラグインが対応しているか否かを示した条件に従って判定すること、
を特徴とする請求項７に記載の情報処理装置。
【請求項１０】
前記判定手段は、前記プラグイン情報に含まれている、出力先のプリンタに前記プラグインが対応しているか否かを示した条件に従って判定すること、
を特徴とする請求項７に記載の情報処理装置。
【請求項１１】
請求項１から請求項５のいずれか１つに記載されたプリンタドライバを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリンタドライバ、情報処理装置、及び記録媒体に関する。
【背景技術】
【０００２】
従来、例えばＭＳ  Ｗｉｎｄｏｗｓ（登録商標）等のＯＳでは、プリンタに対する印刷シーケンスを実行するためにプリンタドライバをインストールしておく必要がある。ところで、プリンタドライバで制御されるプリンタは、機能の追加、拡張が行われる場合がある。また、ユーザからの要望に応じて、プリンタ毎に搭載される機能が異なる場合もある。このような場合、プリンタドライバは、各プリンタに搭載される機能に対応する必要がある。
【０００３】
このように、プリンタ毎に搭載される機能が異なる場合、搭載される機能に対応するために、各プリンタに応じたプリンタドライバの再コンパイルが必要であった。しかしながら、プリンタ毎に再コンパイルが必要となると、管理者の負担が大きいという問題がある。
【０００４】
そこで、特許文献１には、プリンタの機能に合わせて、プリンタドライバにプラグインモジュールを追加する技術が提案されている。このようにプラグインモジュールの追加を行うことで、プリンタに合わせて動的に機能を拡張することが可能となる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、インストールされたプラグインの数が多くなると、印刷処理の実行時にプリンタドライバ及びプラグインの読込に時間を要するという問題が生じる。
【０００６】
本発明は、上記に鑑みてなされたものであって、処理実行時の読込時間を短縮するプリンタドライバ、情報処理装置、及び記録媒体を提供する。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、追加又は取り外し可能なプラグインと協働するプリンタドライバであって、印刷処理中にフックされる所定のタイミングで使用される可能性を有するプラグインを判定する判定手段と、前記判定手段により使用される可能性を有すると判定された前記プラグインを読み込む読込手段と、前記読込手段により読み込まれた前記プラグインを呼び出す呼出手段と、を備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、印刷処理を行う際のプラグインの読み出し時間の短縮という効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１の実施形態にかかるプリンタシステムの全体構成図を示した図である。
【図２】図２は、第１の実施形態にかかるＰＣの構成を示すブロック図である。
【図３】図３は、第１の実施形態にかかるプラグイン情報ファイルの構成を説明した図である。
【図４】図４は、第１の実施形態にかかるプリンタドライバで印刷開始時に行われる処理手順を示したフローチャートである。
【図５】図５は、第１の実施形態にかかるＰＣにおいて、"DocumentEvent"が通知された際の処理を示した図である。
【図６】図６は、第１の実施形態にかかるプリンタドライバに、両面強制プラグインと、プレビュープラグインと、がインストールされた場合の構成の例を示した図である。
【図７】図７は、第１の実施形態にかかるプラグイン情報ファイルの第１の例を示した図である。
【図８】図８は、第１の実施形態にかかるＰＣ及びプリンタで行われる印刷処理のシーケンスの一例を示した図である。
【図９】図９は、第１の実施形態にかかるプラグイン情報ファイルの第２の例を示した図である。
【図１０】図１０は、第１の実施形態にかかるＰＣ及びプリンタで行われる印刷処理のシーケンスの一例を示した図である。
【図１１】図１１は、第１の実施形態にかかるＰＣのハードウェア構成を示した図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、この発明にかかるプリンタドライバ、情報処理装置、及び記録媒体の一実施形態を詳細に説明する。
【００１１】
（第１の実施形態）
図１は、第１の実施形態にかかるプリンタシステムの全体構成図を示した図である。図１に示すように、本実施形態ではＰＣ１００とプリンタ１５０とがネットワーク１６０を介して接続されているものとする。そして、ＰＣ１００に搭載されたプリンタドライバ１１０からの印刷要求に応じて、プリンタ１５０が印刷処理を行う。
【００１２】
図２は、ＰＣ１００の構成を示すブロック図である。図２に示すように、ＰＣ１００は、アプリケーション２０１と、ＯＳ２０２と、プリンタドライバ１１０と、通信部２０３と、記憶部２０４と、を備えている。そして、ＰＣ１００の起動・実行時には、記憶部２０４に記憶されていたアプリケーション２０１と、ＯＳ２０２と、プリンタドライバ１１０が、（図示しない）メインメモリ上にロードされ展開されて、これらが（図示しない）ＣＰＵにより実行される。なお、ＰＣ１００は、キーボードやマウスなどの入力装置やディスプレイなどの出力装置等を備える通常のコンピュータを利用したハードウェア構成を有するが、図２においては説明の簡単のため省略している。
【００１３】
アプリケーション２０１は、ユーザが印刷指示をすることができる任意のソフトウェアとする。ユーザはアプリケーション２０１で編集したデータを印刷したい場合、アプリケーション２０１が、ユーザによる印刷指示を受け付ける。この場合、アプリケーション２０１は、単体でプリンタ１５０に対する印刷データの生成を行わず、上記印刷指示に応じた印刷要求と共に、印刷対象の情報をＯＳ２０２に渡す。
【００１４】
ＯＳ２０２は、ＰＣ１００のハードウェアとソフトウェアとを管理するプログラムである。ＯＳ２０２は、プログラムの起動、情報の読み込みや保存の制御等を行う。本実施形態においては、ＯＳとしてＭＳ  Ｗｉｎｄｏｗｓ（登録商標）を用いた場合について説明する。
【００１５】
通信部２０３は、ネットワーク１６０を介して接続されたプリンタ１５０と情報の送受信を行う。
【００１６】
記憶部２０４は、様々な情報を記憶する記憶手段とする。記憶部２０４としては、例えばＨＤＤを用いる。記憶部２０４が記憶する情報としては、アプリケーション２０１と、ＯＳ２０２と、プリンタドライバ１１０と、などのプログラムの他、プリンタドライバ１１０が読み込む各種プラグイン等とする。さらには、後述するプラグイン情報ファイル等も含まれる。
【００１７】
プリンタドライバ１１０は、このドライバが有する機能を果たすためのモジュール群として、コア部２１０と、プラグイン保持部２２０と、を備えている。本実施形態にかかるプリンタドライバ１１０は、後述する、追加又は取り外し可能なプラグインと協働する。
【００１８】
プラグイン保持部２２０は、プラグイン情報ファイル２２１と、コア部２１０から呼出可能な複数のプラグインと、を保持する。本実施形態にかかるプラグイン保持部２２０は、プラグイン２２２Ａと、プラグイン２２２Ｂと、プラグイン２２２Ｃと、を備えることとするが、図２は一例であって、プラグインは任意に追加および削除することができる。
【００１９】
プラグイン情報ファイル２２１は、プリンタドライバ１１０が読込可能なプラグイン（図２で示す例では、プラグイン２２２Ａ、プラグイン２２２Ｂ、及びプラグイン２２２Ｃ）の情報が記載されている。
【００２０】
図３は、プラグイン情報ファイル２２１の構成を説明した図である。図３に示すようにプラグイン情報ファイル２２１は、複数のファンクションで構成されている。このファンクション"function*"は、プラグイン保持部２２０が保持するプラグイン毎に設けられている。
【００２１】
ファンクションに格納されている各パラメータについて説明する。これらファンクションに示された各パラメータは、当該ファンクションで示されたプラグインを読み込む条件として示されたものとする。"filename"は、プラグインを示すファイル名とする。"supportevent"は、プリンタドライバ１１０が実行可能な処理のうち、当該プラグインが対応している処理（イベント）が示されている。"supportpdl"は、当該プラグインが対応しているＰＤＬが示されている。"supportmodel"は、当該プラグインが対応している、プリンタの機種が示されている。
【００２２】
図３に示す例では、機能"functionA"が実装されているプラグインファイルが"functionA.dll"であることが示されている。そして、機能"functionA"を実現するプラグインにおいて、サポートしている処理が"DocumentEvent"であり、サポートしているＰＤＬが"PCL6"と"PS"、サポートしているプリンタの機種が全機種であることがわかる。
【００２３】
また、機能"functionB"が実装されているプラグインファイルが"functionB.dll"  であることが示されている。そして、機能"functionB"を実現するプラグインにおいて、サポートしている処理が"uievent"であり、サポートしているＰＤＬが"PCL6"のみ、サポートしているプリンタの機種が"ModelB"のみであることがわかる。
【００２４】
このようなプラグイン情報ファイルにおいては、例えば、ＰＤＬ"PCL6"を印刷する際、"DocumentEvent"のタイミングでは"functionA"のみ呼び出せばよいことがわかる。
【００２５】
図２に戻り、コア部２１０は、プリンタドライバ１１０として、機種・ＰＤＬ等の差異によって処理の違いが発生しない汎用的な機能を備えている。また、コア部２１０は、プリンタドライバ１１０として、機種・ＰＤＬに対応する独自の処理を実現するためのモジュール群として、フック部２１１と、プラグイン呼出部２１２と、を備える。そして、コア部２１０は、プラグインの有無を意識せずに、プラグイン呼出部２１２を通して、プラグインへ処理の一部を委譲する。
【００２６】
フック部２１１は、プラグイン等による独自の処理を行うために、コア部２１０により実行される印刷シーケンス中に処理をフックする。フック部２１１により所定のタイミングをフックして、独自の処理を行うことを可能にするためのインターフェイスが、ＯＳ２０２側に用意されている。
【００２７】
例えば、所定のタイミングをフックして独自の処理を行うことを可能にするために、ＭＳ  Ｗｉｎｄｏｗｓ（登録商標）にはプリンタドライバのインターフェイスとして"DocumentEvent"というインターフェイスが用意されている。これにより、ＯＳ２０２が、独自の処理を行わせたい場合、当該インターフェイスを呼び出して、プリンタドライバ１１０が行っている印刷処理をフックして、独自な処理を行わせることができる。
【００２８】
このように、本実施形態にかかるＯＳ２０２からの呼び出しに基づく印刷処理中に、独自の処理を行いたい場合に、特定のタイミングでフックすることが可能となる。これにより、印刷途中に印刷設定の変更、あるいはプリンタへ送信する情報の付加を行うことができる。
【００２９】
また、本実施形態においてＯＳ２０２からフックを行うタイミングは、印刷の処理の開始、文書印刷の開始・終了、ページ印刷の開始・終了等とする。なお、印刷途中のこれらのタイミングをフックして、プラグインによる独自の処理を行うための命令を"DocumentEvent"と称す。
【００３０】
プラグイン呼出部２１２は、プラグイン保持部２２０に保持された各種プラグインの呼出を行う。また、プラグイン呼出部２１２は、インストールされたプラグインを確認する際に、プラグイン情報ファイル２２１を参照する。これにより、コア部２１０は、インストールされているプラグインを確認できる。また、プラグイン呼出部２１２は、プラグインを呼び出すためのモジュール群として、判定部２１３と、読込部２１４と、を備える。
【００３１】
判定部２１３は、プリンタドライバ１１０による印刷処理中でフックされる所定のタイミングで使用される可能性のあるプラグインを判定する。使用される可能性があると判定されたプラグインは、読込部２１４によりロード（読込）がなされる。なお、本実施形態における所定のタイミングは、印刷の処理の開始、文書印刷の開始・終了、ページ印刷の開始・終了等とする。さらに本実施形態にかかる判定部２１３は、判定を行う際に、プラグイン情報ファイル２２１を参照し、当該プラグイン情報ファイル２２１に従って、各プラグインについて判定を行う。このプラグイン情報ファイル２２１には、上述したように、各プラグインを読み込むための条件が示されている。
【００３２】
当該プラグイン情報ファイル２２１は、この各プラグインを読み込むための条件として、印刷処理中でプラグインを実行するタイミングに関する条件、印刷処理の対象となる中間データをプラグインモジュールが対応しているか否かを示した条件、及び出力先のプリンタの機種にプラグインが対応しているか否かを示した条件が含まれている。そして、判定部２１３は、これらの条件に従って、読込部２１４により読み込みの対象となるプラグインを判定する。
【００３３】
ところで、従来技術においては、プリンタドライバが処理を行う際に、プラグインの読み込みを行わなければならないが、読み込むプラグインの数が多くなるとプラグインの読み込みに時間がかかるという問題が生じていた。より詳細な例としては、プラグインの数が数個程度であれば読み込み時間はさほど問題にならないと考えられるが、数十個のプラグインがインストールされていた場合は読み込みにかなりの時間を要していた。このため、ユーザの利便性を損ねるという状況を生じていた。
【００３４】
そこで、本実施形態にかかるプリンタドライバ１１０では、プラグイン毎に読込の対象となるか否かを判定することとした。これにより、当該印刷処理で必要なプラグインのみ読み込まれることになるため、読込速度が向上し、ユーザの利便性を向上させることが可能となった。
【００３５】
読込部２１４は、判定部２１３により使用される可能性を有すると判定されたプラグインを読み込む。
【００３６】
そして、プラグイン呼出部２１２は、読込部２１４により読み込まれたプラグインに対して、処理を実行させるために呼び出す。
【００３７】
このように、本実施形態にかかるプリンタドライバ１１０では、プラグイン情報ファイル２２１を参照し、必要なプラグインのみ呼び出すこととした。
【００３８】
次に、本実施形態にかかるプリンタドライバ１１０で印刷開始時に、DocumentEventの呼出が行われるタイミングについて説明する。図４は、プリンタドライバ１１０で印刷開始時に行われる処理手順を示したフローチャートである。
【００３９】
まず、プリンタドライバ１１０は、ＯＳ２０２からの要求に従って、印刷処理を開始する（ステップＳ４０１）。そして、プリンタドライバ１１０が印刷処理を開始した後に、ＯＳ２０２から"DocumentEvent"を受け付けた場合に、プリンタドライバ１１０のフック部２１１が処理をフックし、プラグイン呼出部２１２がプラグインの呼び出しを行う（ステップＳ４０２）。
【００４０】
次に、プリンタドライバ１１０は、ＯＳ２０２からの要求に従って、文書印刷を開始する（ステップＳ４０３）。そして、プリンタドライバ１１０が文書印刷を開始した後に、ＯＳ２０２から"DocumentEvent"を受け付けた場合に、プリンタドライバ１１０のフック部２１１が処理をフックし、プラグイン呼出部２１２がプラグインの呼び出しを行う（ステップＳ４０４）。
【００４１】
その後、プリンタドライバ１１０は、ＯＳ２０２からの要求に従って、ページ印刷を開始する（ステップＳ４０５）。そして、プリンタドライバ１１０がページ印刷を開始した後に、ＯＳ２０２から"DocumentEvent"を受け付けた場合に、プリンタドライバ１１０のフック部２１１が処理をフックし、プラグイン呼出部２１２がプラグインの呼び出しを行う（ステップＳ４０６）。
【００４２】
なお、ステップＳ４０５及びステップＳ４０６の処理は、文書に含まれているページ毎に行われることとする。さらに、"DocumentEvent"により処理をフックするのは、上述した印刷処理の開始、文書印刷の開始、及びページ印刷の開始だけではなく、印刷処理の終了、文書印刷の終了、及びページ印刷の終了の時も行われることとする。
【００４３】
次に、ＯＳ２０２から"DocumentEvent"を受け付けた際の処理について説明する。図５は、本実施形態にかかるＰＣ１００において、"DocumentEvent"が通知された際の処理を示した図である。
【００４４】
まず、ＯＳ２０２が、プリンタドライバ１１０のコア部２１０に対して、"DocumentEvent"を通知する（ステップＳ５０１）。当該通知の受け付けでフック部２１１が処理をフックした後、プリンタドライバ１１０のコア部２１０が、プラグイン呼出部２１２に対して"DocumentEvent"を通知する（ステップＳ５０２）。
【００４５】
次に、プラグイン呼出部２１２が、プラグイン情報ファイル２２１を読み込む（ステップＳ５０３）。その後、プラグイン情報ファイル２２１に示された最初のプラグインのファンクションが判定の対象に設定される（ステップＳ５０４）。
【００４６】
次に、判定部２１３が、当該ファンクションで示された、プラグインがサポートしている処理と、現在行われている処理と、が一致しているか否かを判定する（ステップＳ５０５）。本フローでは、現在行われている処理（命令）が、通知として受け付けた"DocumentEvent"である場合とする。そして、一致してないと判定した場合（ステップＳ５０５：Ｎｏ）、当該ファンクションで示されたプラグインのロードを行わず、ステップＳ５０９に移行する。
【００４７】
一方、判定部２１３が、プラグインがサポートしている処理と、現在行われている処理と、が一致していると判定した場合（ステップＳ５０５：Ｙｅｓ）、当該ファンクションで示された、当該プラグインがサポートしているＰＤＬと、現在の処理の対象となっているＰＤＬと、が一致しているか否かを判定する（ステップＳ５０６）。そして、一致してないと判定した場合（ステップＳ５０６：Ｎｏ）、当該ファンクションで示されたプラグインのロードを行わず、ステップＳ５０９に移行する。
【００４８】
一方、判定部２１３が、プラグインがサポートしているＰＤＬと、現在の処理の対象となっているＰＤＬと、が一致していると判定した場合（ステップＳ５０６：Ｙｅｓ）、当該ファンクションで示された、当該プラグインがサポートしている機種と、印刷先のプリンタ１５０の機種と、が一致しているか否かを判定する（ステップＳ５０７）。そして、一致してないと判定した場合（ステップＳ５０７：Ｎｏ）、当該ファンクションで示されたプラグインのロードを行わず、ステップＳ５０９に移行する。
【００４９】
一方、判定部２１３が、プラグインがサポートしている機種と、印刷先のプリンタ１５０の機種と、が一致していると判定した場合（ステップＳ５０７：Ｙｅｓ）、当該ファンクションで示されたプラグインをロードの対象として特定する（ステップＳ５０８）。
【００５０】
次に、判定部２１３は、プラグイン情報ファイル２２１に次のプラグインのファンクションが含まれているか否かを判定する（ステップＳ５０９）。次のプラグインのファンクションが含まれていると判定した場合（ステップＳ５０９：Ｙｅｓ）、次のプラグインのファンクションを判定の対象として設定し（ステップＳ５１０）、再びステップＳ５０５から処理を開始する。
【００５１】
また、判定部２１３が、全てのファンクションについて判定を終了し、次のプラグインのファンクションが含まれていないと判定した場合（ステップＳ５０９：Ｎｏ）、読込部２１４が、ステップＳ５０８で特定されたプラグインをロードする（ステップＳ５１１）。
【００５２】
その後、プラグイン呼出部２１２が、ロードしたプラグインに対して、"DocumentEvent"を通知する（ステップＳ５１２）。
【００５３】
上述した処理手順により、必要なプラグインのみロードがなされると共に、当該プラグインに対して、"DocumentEvent"が通知されることになる。
【００５４】
次に、両面強制プラグイン等がインストールされた場合に行われる処理について具体的に説明する。図６は、プリンタドライバ１１０に、両面強制プラグイン６０１と、プレビュープラグイン６０２と、がインストールされた場合の構成の例を示した図である。
【００５５】
そして、両面強制プラグイン６０１は、DocumentEvent部６１１を備え、両面印刷を強制するプラグインとする。DocumentEvent部６１１は、プラグイン呼出部２１２からの"DocumentEvent"の通知を受け付けるインターフェイスとし、当該通知を受け付けた場合に、両面印刷を行うための処理を行う。
【００５６】
また、両面強制プラグイン６０１は、まず強制的に両面で印刷を行うための機能を有している。そして、両面強制プラグイン６０１は、印刷設定を確認し、両面印刷に‘ＯＦＦ’が設定されている場合、文書印刷の開始時にユーザに対する警告ダイアログを表示する機能を有する。さらに、両面強制プラグイン６０１は、当該警告ダイアログにおいて、ユーザに両面印刷を‘ＯＮ’に設定するか、印刷を中断するかの選択を受け付ける機能を有している。そして、両面強制プラグイン６０１は、両面印刷を‘ＯＮ’にする設定を受け付けた場合に、印刷設定の両面印刷を‘ＯＮ’に変更して印刷を継続する。また、両面強制プラグイン６０１は、印刷を中断する選択を受け付けた場合には印刷を中断する。
【００５７】
そして、プレビュープラグイン６０２は、uievent部６２１を備え、プレビューを表示するためのプラグインとする。uievent部６２１は、プラグイン呼出部２１２からの"uievent"の通知を受け付けるインターフェイスとし、当該通知を受け付けた場合に、プレビューを行うための処理を行う。なお、"uievent"の通知は、ＯＳ２０２から、ユーザインターフェイスに関する操作等がなされた場合に発行される通知とする。つまり、プレビュープラグイン６０２は、ユーザインターフェイスに関する操作がなされた場合に限り、ロードがなされるプラグインとする。
【００５８】
図７は、プラグイン情報ファイルの第１の例を示した図である。"duplex"ファンクション７０１が、両面強制プラグイン６０１を示し、"preview"ファンクション７０２が、プレビュープラグイン６０２を示している。
【００５９】
そして、"duplex"ファンクション７０１に示されるように、両面強制プラグイン６０１は、"DocumentEvent"の通知があり、ＰＤＬが"PCL6"である場合に呼び出される。なお、プリンタの機種は特に問わない。
【００６０】
一方、"preview"ファンクション７０２に示されるように、プレビュープラグイン６０２は、"uievent"の通知があり、ＰＤＬが"PS"であり、プリンタの機種が"ModelB"である場合に呼び出される。
【００６１】
次に、これらプラグインを備えた場合に、第１の実施形態にかかるＰＣ１００及びプリンタ１５０で行われる印刷処理について説明する。図８は、第１の実施形態にかかるＰＣ１００及びプリンタ１５０で行われる印刷処理のシーケンスの一例を示した図である。なお、当該シーケンス図において、処理の開始時では、両面印刷の設定が‘ＯＦＦ’になっている場合とする。
【００６２】
まず、ＯＳ２０２が、プリンタドライバ１１０のコア部２１０に対して印刷処理の開始を要求する（ステップＳ８０１）。次に、コア部２１０は、印刷開始の処理を行う（ステップＳ８０２）。
【００６３】
その後、コア部２１０のフック部２１１が、ＯＳ２０２から、印刷開始時における"DocumentEvent"を受け付け（ステップＳ８０３）、印刷開始の処理をフックする。
【００６４】
その後、コア部２１０が、プラグイン呼出部２１２に対して、印刷開始時における"DocumentEvent"を通知する（ステップＳ８０４）。当該通知を受けて、プラグイン呼出部２１２は、プラグイン情報ファイル２２１を読み込む（ステップＳ８０５）。読み込んだプラグイン情報ファイル２２１は、プラグイン呼出部２１２から参照可能に、（図示しない）ＲＡＭ等の記憶領域に格納される。
【００６５】
そして、判定部２１３が、読み込んだプラグイン情報ファイル２２１に基づいて、現在行われている印刷開始の処理の条件と一致するプラグインを特定する（ステップＳ８０６）。その後、読込部２１４が、ステップＳ８０６で特定されたプラグインのロードを行う（ステップＳ８０７）。本シーケンスでは、ステップＳ８０７において、両面強制プラグイン６０１がロードされたものとする。
【００６６】
そして、プラグイン呼出部２１２が、ロードされた両面強制プラグイン６０１に対して、"DocumentEvent"を通知する（ステップＳ８０８）。そして、"DocumentEvent"の通知を受け付けた両面強制プラグイン６０１は、印刷開始では実行すべき処理が無いため、何も行わない（ステップＳ８０９）。
【００６７】
次に、ＯＳ２０２が、プリンタドライバ１１０のコア部２１０に対して文書印刷の開始を要求する（ステップＳ８１０）。次に、コア部２１０は、文書印刷の開始処理を行う（ステップＳ８１１）。
【００６８】
その後、コア部２１０のフック部２１１が、ＯＳ２０２から、文書印刷の開始時における"DocumentEvent"を受け付け（ステップＳ８１２）、文書印刷の開始処理をフックする。
【００６９】
その後、コア部２１０が、プラグイン呼出部２１２に対して、文書印刷の開始時における"DocumentEvent"を通知する（ステップＳ８１３）。当該通知を受けて、プラグイン呼出部２１２は、記憶領域に格納されているプラグイン情報ファイル２２１に基づいて、現在行われている印刷開始の処理の条件と一致するプラグインを特定する（ステップＳ８１４）。ステップＳ８１４では、両面強制プラグイン６０１が特定されたものとする。この場合、両面強制プラグイン６０１は既にロードされているので読込部２１４によるロードは行われない。
【００７０】
そして、プラグイン呼出部２１２が、ロードされた両面強制プラグイン６０１に対して、"DocumentEvent"を通知する（ステップＳ８１５）。そして、"DocumentEvent"の通知を受け付けた両面強制プラグイン６０１は、両面印刷の設定がなされていないことを示した警告ダイアログを表示する（ステップＳ８１６）。その後、両面強制プラグイン６０１が、当該警告ダイアログを介して、ユーザからの選択を受け付ける（ステップＳ８１７）。本シーケンスでは、両面印刷を‘ＯＮ’にする旨の設定を受け付けたものとする。
【００７１】
これにより、両面強制プラグイン６０１は、コア部２１０に対して、両面印刷が‘ＯＮ’に設定された旨を通知する（ステップＳ８１８）。
【００７２】
その後、ＯＳ２０２が、プリンタドライバ１１０のコア部２１０に対してページ印刷の開始を要求する（ステップＳ８１９）。次に、コア部２１０は、当該ページを印刷するための描画を実行する（ステップＳ８２０）。その後、コア部２１０が、プリンタ１５０に対して、描画データと共にコマンドを送信する（ステップＳ８２１）。
【００７３】
その後、プラグイン呼出部２１２が、ＯＳ２０２から、ページ印刷の開始時における"DocumentEvent"を受け付ける（ステップＳ８２２）。
【００７４】
そして、プラグイン呼出部２１２が、記憶領域に格納されているプラグイン情報ファイル２２１に基づいて、現在行われているページ印刷開始の処理の条件と一致するプラグインを特定する（ステップＳ８２３）。ステップＳ８２３では、両面強制プラグイン６０１が特定されたものとする。この場合、両面強制プラグイン６０１は既にロードされているので読込部２１４によるロードは行われない。
【００７５】
その後、プラグイン呼出部２１２が、両面強制プラグイン６０１に対して、"DocumentEvent"を通知する（ステップＳ８２４）。そして、"DocumentEvent"の通知を受け付けた両面強制プラグイン６０１は、印刷開始では実行すべき処理が無いため、何も行わない（ステップＳ８２５）。
【００７６】
次に、ステップＳ８０５〜Ｓ８０６のプラグインを特定するまでの処理を、図５で示したフローチャートに従って説明する。なお、プリンタドライバ１１０は、ＰＤＬが‘ＰＣＬ６’用のドライバとして動作しており、ドライバが対応しているプリンタ１５０の機種が‘ModelA’であり、処理の命令（イベント）として"DocumentEvent"が渡された場合であり、プラグイン情報ファイル２２１は、図７で示した例とする。
【００７７】
まずは、図５のステップＳ５０１〜Ｓ５０３までの処理により、プラグイン呼出部２１２が、プラグイン情報ファイル２２１の読込まで行う。その後、プラグイン呼出部２１２は、プラグイン情報ファイルの最初に示されている"duplex"ファンクションを判定の対象として設定する（ステップＳ５０４）。
【００７８】
そして、"duplex"ファンクションは、"supportevent"が"DocumentEvent"であり、"supportpdl"が"PCL6"であり、"supportmodel"が"ALL"のため、判定部２１３が、ステップＳ５０５〜Ｓ５０７までを一致しているものとして判定し、"duplex"ファンクションで示された両面強制プラグイン６０１を、ロードの対象として特定する（ステップＳ５０８）。
【００７９】
その後、ステップＳ５０９〜Ｓ５１０の処理により、"preview"ファンクションが判定の対象として設定される。
【００８０】
そして、"preview"ファンクションは"supportevent"が"uievent"のため、判定部２１３が、ステップＳ５０５において一致しないと判定する（ステップＳ５０５：Ｎｏ）。そして、プラグイン情報ファイル２２１は全てのファンクションについて判定が終了したため（ステップＳ５０９：Ｎｏ）、読込部２１４が、両面強制プラグイン６０１を示す"duplex.dll"のみロードし（ステップＳ５１１）、ロードした両面強制プラグイン６０１に対して、"DocumentEvent"が通知される（ステップＳ５１２）。
【００８１】
このように、"DocumentEvent"においては、両面強制プラグイン６０１のみロードして、イベントを伝えればよいことが確認できる。
【００８２】
次に、図７と異なるプラグイン情報ファイルの場合に行われる処理フローについて説明する。図９は、当該処理フローの説明で用いられるプラグイン情報ファイルの例を示した図である。図９に示すプラグイン情報ファイルは、"dupulex"ファンクションの"supportpdl"に"PS"９０１が追加された点、及び"supportmodel"が"ModelC"９０２に変更された点が異なる。
【００８３】
次に、図９に示すプラグイン情報ファイルを用いた場合における、ＰＣ１００及びプリンタ１５０で行われる印刷処理について説明する。図１０は、図９に示すプラグイン情報ファイルを利用する場合における、ＰＣ１００及びプリンタ１５０で行われる印刷処理のシーケンスの一例を示した図である。なお、当該シーケンス図において、処理の開始時では、両面印刷の設定が‘ＯＦＦ’になっている場合とする。さらに、プリンタドライバ１１０は、ＰＤＬが‘ＰＣＬ６’用のドライバとして動作しており、ドライバが対応しているプリンタ１５０の機種が‘ModelA’であり、処理の命令（イベント）として"DocumentEvent"が渡された場合とする。
【００８４】
まず、図８のステップＳ８０１〜Ｓ８０５と同様の処理で、プラグイン情報ファイル２２１の読込まで行う（ステップＳ１００１〜Ｓ１００５）。その後、判定部２１３が、読み込んだプラグイン情報ファイルに基づいて、現在行われている印刷の開始処理時の"DocumentEvent"で示される条件と一致するプラグインを特定する（ステップＳ１００６）。本シーケンスでは、ロードされるプラグインが特定されなかったものとする。このため、読込部２１４によるプラグインのロード等も行われない。
【００８５】
その後も、図８のステップＳ８１０〜Ｓ８１４と同様の処理で、現在行われている文書印刷の開始処理時の"DocumentEvent"で示される条件と一致するプラグインの特定まで行われる（ステップＳ１００７〜Ｓ１０１１）。この文書印刷の開始処理においても、ロードされるプラグインが特定されなかったものとする。
【００８６】
さらに、図８のステップＳ８１９〜Ｓ８２３と同様の処理で、ページ文書印刷の開始処理時の"DocumentEvent"で示される条件と一致するプラグインの特定まで行われる（ステップＳ１０１２〜Ｓ１０１５）。このページ印刷の開始処理においても、ロードされるプラグインが特定されなかったものとする。
【００８７】
上述したシーケンスでは、条件と一致するプラグインが存在しなかったため、プラグインのロードは行われない例を示した。当該シーケンスでは、使用されないプラグインをロードする必要がないため、処理時間の短縮とメモリ領域の節約とを行うことができる。
【００８８】
次に、ステップＳ１００５〜Ｓ１００６のプラグインを特定するまでの処理を、図５で示したフローチャートに従って説明する。
【００８９】
まずは、図５のステップＳ５０１〜Ｓ５０３までの処理により、プラグイン呼出部２１２が、プラグイン情報ファイル２２１の読込まで行う。その後、プラグイン呼出部２１２は、プラグイン情報ファイルの最初に示されている"duplex"ファンクションを判定の対象として設定する（ステップＳ５０４）。
【００９０】
そして、"duplex"ファンクションは、"supportevent"が"DocumentEvent"であり、"supportpdl"が"PCL6"であるため、判定部２１３は、ステップＳ５０５〜Ｓ５０６までは一致していると判定するものの、ステップＳ５０７では、"supportmodel"が"ModelC"であるのに対し、プリンタドライバ１１０が印刷先としているプリンタの機種が"ModelA"のため、一致しないと判定し（ステップＳ５０７：Ｎｏ）、両面強制プラグイン６０１はロードの対象として特定されない。その後の"preview"ファンクションが判定対象として設定された（ステップＳ５０９、Ｓ５１０）後は、上述した処理と同様として、ロードの対象として特定されない（ステップＳ５０５〜Ｓ５０９）。
【００９１】
このため、読込部２１４によるプラグインのロードが行われずに、処理が終了する（ステップＳ５１１〜Ｓ５１２）。
【００９２】
本実施の形態にかかるＰＣ１００では、対応していないプラグインについてはロードがなされずにプリンタドライバ１１０による処理が行われるため、不要なプラグインのロードを抑制できる。
【００９３】
このように、本実施形態にかかるプリンタドライバ１１０では、プリンタの機種、ＰＤＬの種類に応じてＯＳ２０２からの"DocumentEvent"の処理の差異がある場合に、現在接続されたプリンタの種類及び現在印刷処理中のＰＤＬに必要なプラグインのみ読み込めるようにし、プラグインの読み込み時間を削減可能とした。
【００９４】
本実施形態にかかるプリンタドライバ１１０は、上述した構成を備えることで、必要なプラグインのみ呼び出すことができるため、読込時間を削減することが可能となった。
【００９５】
図１０は、ＰＣ１００のハードウェア構成を示した図である。図１０に示すように、本実施形態のＰＣ１００は、制御を行うＣＰＵ１１０１と、ＲＯＭ（Read  Only  Memory）１１０２と、ＣＰＵ１１０１の作業領域となるＲＡＭ１１０３と、ＨＤＤ１１０４、ディスプレイ装置などの表示装置１１０５と、キーボードやマウスなどの入力装置１１０６と、通信インターフェイス１１０７と、を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【００９６】
本実施形態のＰＣ１００で実行されるプリンタドライバ１１０は、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【００９７】
また、本実施形態のＰＣ１００で実行されるプリンタドライバ１１０を、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態のＰＣ１００で実行されるプリンタドライバ１１０をインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【符号の説明】
【００９８】
１００  ＰＣ
１１０  プリンタドライバ
１５０  プリンタ
１６０  ネットワーク
２０１  アプリケーション
２０２  ＯＳ
２０３  通信部
２０４  記憶部
２１０  コア部
２１１  フック部
２１２  プラグイン呼出部
２１３  判定部
２１４  読込部
２２０  プラグイン保持部
２２１  プラグイン情報ファイル
２２２Ａ、２２２Ｂ、２２２Ｃ  プラグイン
６０１  両面強制プラグイン
６０２  プレビュープラグイン
６１１  DocumentEvent部
６２１  uievent部
【先行技術文献】
【特許文献】
【００９９】
【特許文献１】特開２００４−００５６０８号公報
【図１】
2012198674.tif 000003
【図２】
2012198674.tif 000004
【図３】
2012198674.tif 000005
【図４】
2012198674.tif 000006
【図５】
2012198674.tif 000007
【図６】
2012198674.tif 000008
【図７】
2012198674.tif 000009
【図８】
2012198674.tif 000010
【図９】
2012198674.tif 000011
【図１０】
2012198674.tif 000012
【図１１】
2012198674.tif 000013