(57)【特許請求の範囲】
【請求項１】
実プリンタードライバーを呼び出すために用いられる仮想プリンタードライバーによる印刷処理を行うときに、出力デバイスを特定する出力デバイス特定処理手段と、
前記仮想プリンタードライバーによる印刷処理を行うための準備処理及び整理処理を行うプリンタードライバー管理処理手段を備え、
前記プリンタードライバー管理処理手段は、前記準備処理として、前記出力デバイスのハードウェア情報を取得し、当該ハードウェア情報を元に適合するプリンタードライバーを検索し、当該検索された実プリンタードライバーをインストールし、
前記プリンタードライバー管理処理手段は、さらに、前記整理処理として、インストールされた前記実プリンタードライバーを用いて前記出力デバイスの構成情報が必要かを判定し、前記出力デバイスの構成情報が必要な場合は前記構成情報が取得済みかを判定し、前記出力デバイスの構成情報が取得済みではない場合は前記出力デバイスの構成情報を取得し、
前記プリンタードライバー管理処理手段は、前記実プリンタードライバーにより当該構成情報が印刷制御装置に保持されているか否かに基づいて、前記出力デバイスの構成情報を取得済みか判定する
ことを特徴とする印刷制御装置。
【請求項２】
前記プリンタードライバー管理処理手段は、印刷設定として保持しているマークアップ言語の記述に基づいて、前記出力デバイスの構成情報が必要かを判定することを特徴とする請求項１に記載の印刷制御装置。
【請求項３】
前記プリンタードライバー管理処理手段は、前記実プリンタードライバーに対してプリンターを機能させるオブジェクトを問い合わせたときの戻り値に基づいて、前記出力デバイスの構成情報が必要かを判定することを特徴とする請求項１に記載の印刷制御装置。
【請求項４】
前記プリンタードライバー管理処理手段は、前記実プリンタードライバーの構成ファイルに双方向形式ファイルが含まれているか否かに基づいて、前記出力デバイスの構成情報が取得済みかを判定することを特徴とする請求項１に記載の印刷制御装置。
【請求項５】
前記プリンタードライバー管理処理手段は、インストールした前記実プリンタードライバーが備えている、前記出力デバイスの構成情報を取得する外部インターフェースを通じて、前記出力デバイスの構成情報を取得することを特徴とする請求項１に記載の印刷制御装置。
【請求項６】
前記プリンタードライバー管理処理手段は、前記出力デバイスの構成情報を取得するとき、インストールした前記実プリンタードライバーのプリンタープロパティを開いて、ユーザに前記出力デバイスの構成情報の入力をさせる画面を提供することを特徴とする請求項１に記載の印刷制御装置。
【請求項７】
前記プリンタードライバー管理処理手段は、前記出力デバイスの構成情報を必要としない判定した場合に、印刷処理の完了後に前記出力デバイスの構成情報を取得することを特徴とする請求項１に記載の印刷制御装置。
【請求項８】
請求項１〜７のいずれか１項に記載の手段としてコンピューターを機能させるためのプログラム。
【請求項９】
実プリンタードライバーを呼び出すために用いられる仮想プリンタードライバーによる印刷処理を行うときに、出力デバイスを特定する工程と、
前記仮想プリンタードライバーによる印刷処理を行うための準備処理及び整理処理を行う工程を備え、
前記準備処理は、前記出力デバイスのハードウェア情報を取得し、当該ハードウェア情報を元に適合するプリンタードライバーを検索し、当該検索された実プリンタードライバーをインストールする工程を含み、
前記整理処理は、インストールされた前記実プリンタードライバーを用いて前記出力デバイスの構成情報が必要かを判定し、前記出力デバイスの構成情報が必要な場合は前記構成情報が取得済みかを判定し、前記出力デバイスの構成情報が取得済みではない場合は前記出力デバイスの構成情報を取得し、前記プリンタードライバー管理処理手段は、前記実プリンタードライバーにより当該構成情報が印刷制御装置に保持されているか否かに基づいて、前記出力デバイスの構成情報を取得済みか判定する工程を含む
ことを特徴とする印刷制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷制御装置、印刷制御方法およびプログラムに関する。より詳しくは、本発明は、ユーザが設置されたプリンターの中から利用するものを特定するだけで、インストール作業を強いられることなく効率よく印刷できるものに関する。
【背景技術】
【０００２】
パーソナルコンピューターなどの情報処理装置からプリンターなどの周辺機器を利用するには、一般的にその周辺機器に対応した特定のデバイスドライバー（プリンターであればプリンタードライバー）を組み込む必要がある。したがって、従来は、利用するプリンターが複数台ある場合はその台数分だけプリンタードライバーを組み込まなければならない。このため、ユーザはその度にＩＰアドレスを調べたり、対応するプリンタードライバーを探してきたり、といった面倒なインストール作業を強いられてきた。
【０００３】
そこで、近年、プリンターの種類によらず利用可能な共通のプリンタードライバーである「仮想プリンタードライバー」が研究・開発されている。例えば、非特許文献１には、アプリケーションから仮想プリンタードライバーに対して印刷指示を出した後に、出力可能なネットワークプリンターを選んで印刷する方法が開示されている。この方法ならば、あらかじめ仮想プリンタードライバーのみを情報処理装置に組み込んでおくだけで、仮想プリンタードライバーが対応するすべてのプリンターを利用することが可能である。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】"HP Universal Print Driver Series forWindows - overview and features", インターネット<http://h20338.www2.hp.com/hpsub/cache/342988-0-0-225-121.html>
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、非特許文献１に示された仮想プリンタードライバーは、対応する全プリンターが共通で処理可能な形式のコマンドを生成し送信するため、各プリンターに特化した専用のプリンタードライバーを用いて印刷する場合に比べて機能が制限される。また、仮想プリンタードライバーが送信するコマンドを処理できない種類のプリンターには印刷できない。
【０００６】
上述の課題を鑑み、本発明は、ユーザが設置されたプリンターの中から利用するものを特定するだけで、機能制限なく任意の種類のプリンターが利用可能な印刷制御装置、印刷制御方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述の課題を解決するために、本発明に係る印刷制御装置は、実プリンタードライバーを呼び出すために用いられる仮想プリンタードライバーによる印刷処理を行うときに、出力デバイスを特定する出力デバイス特定処理手段と、前記仮想プリンタードライバーによる印刷処理を行うための準備処理及び整理処理を行うプリンタードライバー管理処理手段を備え、前記プリンタードライバー管理処理手段は、前記準備処理として、前記出力デバイスのハードウェア情報を取得し、当該ハードウェア情報を元に適合するプリンタードライバーを検索し、当該検索された専用または汎用プリンタードライバーをインストールし、前記プリンタードライバー管理処理手段は、さらに、前記整理処理として、前記出力デバイスの構成情報が必要かを判定し、前記出力デバイスの構成情報が必要な場合は前記構成情報が取得済みかを判定し、前記出力デバイスの構成情報が取得済みではない場合は前記出力デバイスの構成情報を取得し、前記プリンタードライバー管理処理手段は、前記実プリンタードライバーにより当該構成情報が印刷制御装置に保持されているか否かに基づいて、前記出力デバイスの構成情報を取得済みか判定することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、出力先として特定されたプリンターに最適なプリンタードライバーが仮想プリンタードライバーを通じてその場で自動的にインストールされる。そして、必要に応じてプリンターの構成情報を取得することで、ユーザは面倒なインストール作業を強いられることなく、かつ、任意の種類のプリンターの機能を利用することが可能になる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態に係るシステムの概略構成を示すブロック図である。
【図２】ホストコンピューターと出力デバイスの装置構成を示すブロック図である。
【図３】ユーザインターフェースの説明図である。
【図４】プリンタードライバーとプリントキューとポートのオブジェクト図である。
【図５】プリンタードライバーのインストール処理のフローチャートである。
【図６】プリンタードライバーのインストール処理のフローチャートである。
【図７】印刷処理の説明に用いるデータフロー図である。
【図８】印刷処理の説明に用いるシーケンス図である。
【図９】印刷処理でのユーザインターフェースの説明図である。
【図１０】印刷処理でのユーザインターフェースの説明図である。
【図１１】印刷処理でのユーザインターフェースの説明図である。
【図１２】ユーザインターフェースの遷移の説明図である。
【図１３】出力準備処理の説明に用いるフローチャートである。
【図１４】汎用・専用プリンタードライバーインストール処理のフローチャートである。
【図１５】ドライバーの選択のユーザインターフェースの説明図である。
【図１６】削除方法の指定のユーザインターフェースの説明図である。
【図１７】出力デバイスの構成情報を取得する処理のフローチャートである。
【図１８】印刷設定判定処理のフローチャートである。
【図１９】出力デバイスの構成情報を必要とするか否かを判定するための記述の説明図である。
【図２０】構成情報取得の判定処理のフローチャートである。
【図２１】構成情報取得処理のフローチャートである。
【図２２】プリンタードライバーのプロパティの説明図である。
【図２３】印刷処理後の構成情報取得処理のフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための最良の形態について図面を用いて説明する。図１は、本発明の実施形態に係る印刷制御装置および全体システムの概略構成を示すブロック図である。このネットワークシステムは、ホストコンピューター１０１と、このホストコンピューター１０１より印刷データを受信して印刷を行う複数の出力デバイス１０２ａ，１０２ｂ，…と、プリンタードライバー配信サーバー１０３等を備える。これらはネットワーク１０４を介して接続されている。
【００１１】
図２は、図１のホストコンピューター１０１と出力デバイス１０２の装置構成を示すブロック図である。ホストコンピューター１０１において、ＣＰＵ１１１は、ＲＡＭ１１２に記憶されているプログラムに従って、システムバス１１４に接続される各デバイスを総括的に制御している。このＲＡＭ１１２は、ＣＰＵ１１１の主メモリ、ワークエリア等としても機能している。
【００１２】
ＲＯＭ１１３は、各種プログラム及びデータを格納している。ＲＯＭ１１３は、各種フォントを記憶するフォントＲＯＭ１１３ａ、ブートプログラムやＢＩＯＳ等を記憶するプログラムＲＯＭ１１３ｂ、及び各種データを記憶するデータＲＯＭ１１３ｃに区分けして構成されている。
【００１３】
キーボードコントローラＩ／Ｆ１１５は、キーボード１１９や不図示のポインティングデバイス（マウス）からのキー入力を制御する。ディスプレイＩ／Ｆ１１６は、ディスプレイ１２０への表示を制御している。外部メモリＩ／Ｆ１１７は、例えばハードディスク（ＨＤ）、半導体メモリディスク（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ（ＳＳＤ））等の外部メモリ１２１とのアクセスを制御する。外部メモリ１２１は、コンピューターが読み取り可能な記憶媒体として機能する。外部メモリ１２１には、オペレーティングシステムプログラム（以下、ＯＳ）１２２をはじめとし、各種アプリケーション１２３、印刷処理関連プログラム１２４、更に、不図示のユーザファイル、編集ファイル等が記憶される。なお、ここではＯＳ１２２としてＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）を使用するものとする。
【００１４】
印刷処理関連プログラム１２４は、プリントジョブマネージャー１２５と、仮想プリンタードライバー１２６と、汎用プリンタードライバー１２７と、専用プリンタードライバー１２８と、プリンタードライバーインストーラー１２９とを含んでいる。仮想プリンタードライバーとは、ドキュメントを物理的な出力デバイスに対して間接的に印刷するために利用されるプログラムである。間接的なプログラムであるため「仮想」と呼称しているが、仮想プリンタードライバー１２６は、ＯＳ１２２上では一般的なプリンタードライバーとして登録されるため、ユーザは通常の印刷作業手順に近い感覚で作業を行うことができる。
【００１５】
汎用プリンタードライバー１２７と専用プリンタードライバー１２８は、一般的な実プリンタードライバーとして分類される。実プリンタードライバーとは、アプリケーションからの印刷要求を物理的な出力デバイスが解釈できる言語に変換するものである。具体的には、汎用プリンタードライバー１２７とは、複数のデバイスモデルに印刷可能なプリンタードライバーである。汎用プリンタードライバー１２７は、対応するデバイスモデルが共通で持つ機能を利用することができる。専用プリンタードライバー１２８とは、単一のデバイスモデルにのみ対応したプリンタードライバーである。専用プリンタードライバー１２８は、対応するデバイスモデルの機能を最大限に引き出すことが可能である。
【００１６】
ネットワークＩ／Ｆ１１８は、ネットワーク１０４を介して出力デバイス１０２に接続され、出力デバイス１０２との間で通信制御処理を行う。なお、プリンタードライバー配信サーバー１０３（図１参照）もホストコンピューター１０１と同様の装置構成を備える。
【００１７】
次に出力デバイス１０２の構成について説明する。ＣＰＵ１３２は、出力デバイス１０２の全体の動作を制御している。ＲＡＭ１３９は、ＣＰＵ１３２の主メモリ、ワークエリア等として機能するとともに、出力情報展開領域、環境データ格納領域としても用いられる。またこのＲＡＭ１３９は、ＮＶＲＡＭ（Ｎｏｎ−ｖｏｌａｔｉｌｅ  ＲＡＭ：不揮発性ＲＡＭ）領域も備えており、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。ＲＯＭ１３３は、各種フォントを記憶するフォントＲＯＭ１３３ａ、ＣＰＵ１３２により実行される制御プログラム等を記憶するプログラムＲＯＭ１３３ｂ、及び各種データを記憶するデータＲＯＭ１３３ｃを備えている。
【００１８】
ネットワークＩ／Ｆ１３８は、ホストコンピューター１０１との間でデータの送受信を行う。印刷部Ｉ／Ｆ１３６は、プリンターエンジンである印刷部１３７とのインターフェースを制御している。外部メモリ１３４は、外部メモリＩ／Ｆ１４０によりアクセスが制御される。外部メモリ１３４は、オプションとして接続されるハードディスク（ＨＤ）、半導体メモリディスク（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ（ＳＳＤ））等を含んでいる。外部メモリ１３４は、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。更に、外部メモリ１３４は、本実施形態に係る専用プリンタードライバー１４３を記憶することも可能である。
【００１９】
なお、ハードディスク等の外部メモリ１３４が接続されていない場合には、ＲＯＭ１３３のデータＲＯＭ１３３ｃが、ホストコンピューター１０１で利用される情報等を記憶する。なお、この外部メモリ１３４は１個に限らず複数備えるものであっても良い。例えば、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンター制御言語を解釈するプログラム等を格納した外部メモリを複数接続できるように構成されていても良い。
【００２０】
操作部１４２は、ユーザによる操作を受け付ける操作パネルを有し、その操作パネルは操作のためのスイッチ及びＬＥＤ表示器等が備えている（不図示）。また、操作部１４２は、不図示のＮＶＲＡＭを有し、操作パネルからのプリンターモード設定情報を記憶するようにしても良い。
【００２１】
ＣＰＵ１３２は、ＲＯＭ１３３のプログラムＲＯＭ１３３ｂに記憶された制御プログラム等に基づき、印刷部Ｉ／Ｆ１３６を介して印刷部１３７に出力情報としての画像信号を出力する。また、ＣＰＵ１３２はネットワークＩ／Ｆ１３８を介してホストコンピューター１０１との通信処理が可能となっている。ＣＰＵ１３２は、ホストコンピューター１０１から送信される印刷データを受信すると共に、出力デバイス１０２内の情報等をホストコンピューター１０１に通知可能に構成される。
【００２２】
図３は、図２のプリンタードライバーインストーラー１２９が備えるユーザインターフェース２００である。ユーザインターフェース２００は、プリンタードライバーインストーラー１２９を実行すると、ディスプレイ１２０上に表示される。
【００２３】
プリンター一覧２０１は、インストール可能なプリンタードライバーの一覧を表示する。プリンター一覧２０１における”Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  Ａ”は、デバイスモデルＡの出力デバイスに対応した専用プリンタードライバーである。”Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  Ｂ”は、デバイスモデルＢの出力デバイスに対応した専用プリンタードライバーである。”Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  Ｃ”は、デバイスモデルＣの出力デバイスに対応した専用プリンタードライバーである。”Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  Ｄ”は、デバイスモデルＤの出力デバイスに対応した専用プリンタードライバーである。”Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １”は、デバイスモデルＡ、Ｂに対応した汎用プリンタードライバーである。”Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  ２”は、デバイスモデルＣ、Ｄに対応した汎用プリンタードライバーである。”Ｖｉｒｔｕａｌ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ”は、デバイスモデルＡ、Ｂ、Ｃ、Ｄだけではなく、あらゆる出力デバイスに対応可能な仮想プリンタードライバーである。
【００２４】
ユーザは、任意のモデルを選択し、追加ボタン２０２を押下し、インストールするプリンター一覧２０３に選択したモデルを加える。その後、ユーザがインストールボタン２０４を押下することで、プリンタードライバーインストーラー１２９は指定されたモデルのプリンタードライバーをインストールする。
【００２５】
図４は、プリンタードライバーとプリントキューとポートの各情報とそれらの関係を説明した図である。図４では、プリンタードライバーとプリントキューとポートの各情報がＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）のオブジェクト図を使って表現されている。
【００２６】
図４において、プリントキュー３０２は、アプリケーションから印刷する際の印刷対象オブジェクトである。プリントキュー３０２は、同一デバイスモデルのプリンタードライバー３０１から複数作成することができる。例えば、オフィスに”Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  Ａ”の出力デバイスが３台導入されたとする。この場合、”Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  Ａ”に対応したプリンタードライバーを１つインストールして、そのプリンタードライバーを使ったプリントキューを３つ作成することになる。
【００２７】
ポート３０３は、ネットワークの出力先を特定するオブジェクトである。プリントキューとポートの関係は通常は一対一であるが、図のように同じポートを複数のプリントキューが使用してもかまわない。
【００２８】
また、プリンタードライバー３０１は、プリンタードライバー構成情報３０４を保持している。プリンタードライバー構成情報３０４は、ドライバーバージョン、デバイスモデル名、ハードウェア情報、ドライバーモジュール名、等から構成される。このプリンタードライバー構成情報３０４は、ＯＳ１２２によって管理される。
【００２９】
プリントキュー３０２は、プリントキュー構成情報３０５を保持している。プリントキュー構成情報３０５は、プリントキュー名、ポート名、印刷設定情報、ジョブ投入時刻、ジョブステータス、等から構成される。プリントキュー構成情報３０５は、ＯＳ１２２によって管理される。更に、プリントキュー３０２は、自動生成識別子３０６と更新日時３０７をも保持する。これらの情報は、プリントジョブマネージャー１２５によって管理される。詳細は、後に説明する。
【００３０】
ポート３０３は、ポート構成情報３０８を保持している。ポート構成情報３０８は、ポート名、モジュール名、ＩＰアドレス、等から構成される。このポート構成情報３０８は、ＯＳ１２２によって管理される。
【００３１】
図５は、図２のプリンタードライバーインストーラー１２９による一般的なプリンタードライバーのインストール処理を示すフローチャートである。一般的なプリンタードライバーとは、専用プリンタードライバー及び汎用プリンタードライバーを指す。
【００３２】
図５において、プリンタードライバーのインストールを開始すると（ステップＳ４００）、プリンタードライバーインストーラー１２９は、まずユーザによるデバイスモデルの選択を受け付ける（ステップＳ４０１）。ここでは、図３のプリンター一覧２０１において、”Ｖｉｒｔｕａｌ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ”以外のデバイスモデルを選択された場合を想定している。”Ｖｉｒｔｕａｌ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ”の選択も含んだインストール処理については図６にて後述する。
【００３３】
専用プリンタードライバー若しくは汎用プリンタードライバーの選択を受け付けると、プリンタードライバーインストーラー１２９は、選択されたデバイスモデルのプリンタードライバーをインストールする（ステップＳ４０２）。次に、プリンタードライバーインストーラー１２９は、ユーザによるＩＰアドレス等のポート情報の入力を受け付け（ステップＳ４０３）、ポートを作成する（ステップＳ４０４）。次に、プリンタードライバーインストーラー１２９は、ユーザによるプリントキュー名の入力を受け付ける（ステップＳ４０５）。そして、プリンタードライバーインストーラー１２９は、ステップＳ４０２でインストールしたプリンタードライバーとステップＳ４０４で作成したポートを関連付けて、プリントキューを作成する（ステップＳ４０６）。以上で、専用プリンタードライバー及び汎用プリンタードライバーのインストール処理が終了する（ステップＳ４０７）。
【００３４】
図６は、図２のプリンタードライバーインストーラー１２９によるプリンタードライバーのインストール処理を示すフローチャートである。ここでは、”Ｖｉｒｔｕａｌ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ”の選択も含んだインストール処理が行われる。図６において、プリンタードライバーのインストールを開始すると（ステップＳ５００）、プリンタードライバーインストーラー１２９は、まずユーザによるデバイスモデルの選択を受け付ける（ステップＳ５０１）。そして、プリンタードライバーインストーラー１２９は、選択されたデバイスモデルが仮想プリンタードライバーかどうか判断する（ステップＳ５０２）。
【００３５】
ステップＳ５０２にて選択されたデバイスモデルが仮想プリンタードライバーではない場合、プリンタードライバーインストーラー１２９は、専用・汎用プリンタードライバーのインストール処理を行う（ステップＳ５０３）。ステップＳ５０３は、図５のステップＳ４０２以降の処理部と等価である。そして、当インストール処理を終了する（ステップＳ５１６）。
【００３６】
ステップＳ５０２にて選択されたデバイスモデルが仮想プリンタードライバーの場合、プリンタードライバーインストーラー１２９は、仮想プリンタードライバーをインストールする（ステップＳ５０４）。仮想プリンタードライバー自体は、ポートに対する印刷データの出力を行わないので、プリンタードライバーインストーラー１２９は、ユーザによる入力を伴わずにダミーのポートを作成する（ステップＳ５０５）。また、仮想プリンタードライバーに対し複数のプリントキューを作る必要性がないので、プリンタードライバーインストーラー１２９は、ユーザによる入力を伴わずにデバイスモデル名と同じ名前でプリントキューを作成する（ステップＳ５０６）。
【００３７】
そして、プリンタードライバーインストーラー１２９は、インストールセットに含まれる全ての汎用プリンタードライバーを列挙する（ステップＳ５０７〜ステップＳ５１０）。図３のプリンター一覧２０１において、汎用プリンターは、”Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １”と”Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  ２”が存在する。よって、１回目のループ処理では、”Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １”を取り出し、２回目のループ処理では、”Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  ２”を取り出す。
【００３８】
プリンタードライバーインストーラー１２９は、取り出した汎用プリンタードライバーがホストコンピューター１０１にインストール済みかどうか判断する（ステップＳ５０８）。ステップＳ５０８にて、まだ、取り出した汎用プリンタードライバーがホストコンピューター１０１にインストールしていない場合は、プリンタードライバーインストーラー１２９は、取り出した汎用プリンタードライバーをインストールする（ステップＳ５０９）。このとき、汎用プリンタードライバーを使ったプリントキューを作成しないので、ユーザが汎用プリンタードライバーのインストールを意識することはない。そして、処理はステップＳ５１０へ進む。ループ処理が終了したら、当インストール処理を終了する（ステップＳ５１６）。
【００３９】
ステップＳ５０８にて、取り出した汎用プリンタードライバーがインストール済みの場合は、プリンタードライバーインストーラー１２９は、インストール済みの汎用プリンタードライバーのバージョンを取得する（ステップＳ５１１）。そして、バージョン数から継続使用可能どうか判断する（ステップＳ５１２）。継続使用可能と判断した場合、処理はステップＳ５１０へ進む。ループ処理が終了したら、当インストール処理を終了する（ステップＳ５１６）。
【００４０】
ステップＳ５１２にて、インストール済みの汎用プリンタードライバーが継続使用不可能と判断した場合、プリンタードライバーインストーラー１２９は、インストール済みの汎用プリンタードライバーをアンインストールする（ステップＳ５１３）。そして、取り出した汎用プリンタードライバーをインストールする（ステップＳ５１４）。更に、プリンタードライバーインストーラー１２９は、ステップＳ５１３の処理前にインストール済み汎用プリンタードライバーで構成されたプリントキューを、ステップＳ５１４でインストールした汎用プリンタードライバーで復元する（ステップＳ５１５）。そして、ステップＳ５１０へ処理を進める。ループ処理が終了したら、当インストール処理を終了する（ステップＳ５１６）。
【００４１】
なお、図５で一般的なプリンタードライバーのインストール処理について説明した際、ユーザによる入力は、ステップＳ４０１とステップＳ４０３とステップＳ４０５の３回あった。一方、図６に示したように、本実施形態のプリンタードライバーのインストール処理においては、ユーザによる入力はステップＳ５０１だけである。もし、プリンタードライバーインストーラー１２９が仮想プリンタードライバーだけを対象としたプログラムだったら、ステップＳ５０１も不要となる。つまり、仮想プリンタードライバーのインストール処理方法は、ユーザの負担と運用コストを低減させる効果がある。
【００４２】
以上、プリンタードライバーインストーラー１２９が、仮想プリンタードライバーをインストールしてそのプリントキューを作成すると、自動的に汎用プリンタードライバーをインストールすることを説明した。なお、ステップＳ５０７以降の汎用プリンタードライバーのインストール処理については、図２のプリンタードライバーインストーラー１２９が実施することで説明をしたが、仮想プリンタードライバー１２６の初期化処理において実施してもかまわない。また、一般にＶｅｎｄｏｒＳｅｔｕｐと呼ばれるＯＳ１２２から呼び出される不図示のプリンタードライバーのセットアップモジュールで実施してもかまわない。
【００４３】
図７は印刷処理のデータフロー図である。本図を用いて、印刷処理関連プログラムの各コンポーネント間でどのような入出力が行われているか明らかにする。図７において、アプリケーション１２３は、仮想プリンタードライバー１２６に対して、ＯＳ１２２の提供する描画インターフェースであるＧＤＩ（Ｇｒａｐｈｉｃ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）６００を通じて印刷指示命令を出力する。次に仮想プリンタードライバー１２６は、入力された印刷指示命令をＥＭＦ（Ｅｎｈａｎｃｅｄ  Ｍｅｔａ  Ｆｉｌｅ）６０１の形式に変換してプリントジョブマネージャー１２５に出力する。
【００４４】
ここでＥＭＦ６０１とは、ＧＤＩ６００の印刷指示命令と互換性のある中間データ形式であり、アプリケーション１２３から出力された一連の印刷指示命令を再現可能なデータとして記録したものである。本実施形態では中間データ形式としてＥＭＦ６０１を用いて説明しているが、印刷指示命令を再現可能なデータであれば、これに限定されない。例えばＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）、ＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）、あるいは独自に定義した任意の形式であっても良い。
【００４５】
次に、プリントジョブマネージャー１２５は、後述する出力デバイスの特定、汎用・専用プリンタードライバーの管理など固有の処理を行い、ＧＤＩ６００を通じて印刷指示命令を出力する。出力された印刷指示命令は、汎用プリンタードライバー１２７あるいは専用プリンタードライバー１２８に対して入力される。
【００４６】
次に、汎用プリンタードライバー２１７あるいは専用プリンタードライバー２１８は、出力デバイス１０２が処理可能なＰＤＬ（Ｐｒｉｎｔｅｒ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）６０２の形式に変換し、出力デバイス１０２に出力する。最後に出力デバイス１０２は、入力されたＰＤＬ６０２を処理して印刷出力を行う。
【００４７】
図８は印刷処理のシーケンス図である。また、図９〜図１１は、印刷処理でのユーザインターフェース画面を示す図である。これらを用いて、一連の印刷処理中に関連プログラムの各コンポーネントの内部、およびそれらの間でどのような処理が行われているか明らかにする。
【００４８】
まず、ユーザはアプリケーション１２３に対して印刷したいドキュメントの印刷指示を図９で示すユーザインターフェース８０００を通じて入力する（ステップＳ７００）。図９に示すように、ユーザインターフェース８０００は、プリントキューを示すアイコン８００１〜８００３を有する。このうち、アイコン８００１は仮想プリンタードライバーのプリントキューであり、アイコン８００２、アイコン８００３は専用プリンタードライバーのプリントキューである。ここでは仮想プリンタードライバーを通じて出力を行うため、ユーザはアイコン８００１を選択し、印刷ボタン８００４を押して、印刷を指示する（ステップＳ７００）。
【００４９】
次に、アプリケーション１２３は、仮想プリンタードライバー１２６に対して、印刷初期化処理を行う（ステップＳ７０１）。仮想プリンタードライバー１２６は印刷初期化が行われると、プリントジョブマネージャー１２５の起動処理を行う（ステップＳ７０２）。
【００５０】
プリントジョブマネージャー１２５は、仮想プリンタードライバー１２６に対する印刷処理を行うときに起動され、出力デバイスの特定処理及びプリンタードライバーの管理処理を行う。プリントジョブマネージャー１２５は、内部的なコンポーネントとして、出力デバイス特定処理部１２５１と、プリンタードライバー管理処理部１２５２と、デスプール処理部１２５３とを含む。出力デバイス特定処理部１２５１は、出力デバイスを特定する。プリンタードライバー管理処理部１２５２は、仮想プリンタードライバー１２６に対する印刷処理を行うときの出力準備処理及びプリントキュー整理処理を行う。出力準備処理は、出力デバイスのハードウェア情報を取得する処理と、ハードウェア情報を元に適合するプリンタードライバーを検索する処理と、検索されたプリンタードライバーをインストールする処理である。プリントキュー整理処理は、出力デバイスの構成情報が必要かを判定する処理と、構成情報が取得済みかを判定する処理と、判定手段に基づいて、出力デバイスの構成情報を取得する処理である。デスプール処理部１２５３は、中間データ形式のデータを読み出し、解析して、印刷ドキュメントの出力を行う。これらの処理については、後に説明する。
【００５１】
ステップＳ７０１にて初期化処理が行われたら、次に、アプリケーション１２３は、プリントジョブマネージャー１２５が起動されると、仮想プリンタードライバー１２６に対して印刷を開始する。そして、アプリケーション１２３は、一連の印刷描画命令をＧＤＩ６００を通じて出力する（ステップＳ７０３）。
【００５２】
仮想プリンタードライバー１２６は、入力された一連の印刷命令を中間データ形式に変換して保存しておく。すなわち、仮想プリンタードライバー１２６は、入力された一連の印刷描画命令をＥＭＦ６０１形式に変換し、あとで印刷描画命令を再現できるように、外部メモリ１２１に保存する。これをスプール処理と呼ぶ（ステップＳ７０４）。
【００５３】
アプリケーション１２３は一連の印刷描画命令の最後に印刷終了の処理を行う（ステップＳ７０５）。仮想プリンタードライバー１２６はそれを受けて保存されたＥＭＦ６０１の外部メモリ１２１における保存位置情報をプリントジョブマネージャー１２５に通知する（ステップＳ７０６）。なお、ステップＳ７０４は、外部メモリ１２１に対してスプール処理を実施するが、外部メモリ１２１を介さずプリントジョブマネージャー１２５へ直接スプール処理してもかまわない。
【００５４】
次に、出力デバイス特定処理部１２５１は、出力デバイスの検索を行う（ステップＳ７０７）。ここで出力デバイス特定処理部１２５１は、ネットワーク１０４により接続されたデバイスと通信を行ってデバイスの情報を取得する。すなわち、出力デバイス特定処理部１２５１は、ネットワーク１０４を介して、デバイスの名称、設置場所、ＩＰアドレス、ハードウェアＩＤといった情報を取得する。通信手段としては公知の技術であるＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）などのプロトコルが使用される。通常、出力デバイス１０２ａや出力デバイス１０２ｂの状態、すなわち電源が入っているか、あるいは、ネットワーク１０４に接続されているかを事前に把握することは不可能である。このため、出力デバイス特定処理部１２５１は印刷指示の都度、すべての出力デバイスとの通信を試みる。ネットワーク内のすべての装置との通信には、これも公知の技術であるブロードキャストという手段を用いる。
【００５５】
出力デバイス特定処理部１２５１がこのブロードキャストの方法で、ネットワークＩ／Ｆ１１８を通じてＳＮＭＰの情報取得用データを送信すると、ネットワーク１０４で到達可能なすべての出力デバイス１０２が情報取得用データを受信する。そして、各出力デバイス１０２が、取得対象として指定された出力デバイスの名称や設置場所などの情報を応答のデータとしてネットワークＩ／Ｆ１３８を通じて送信すると、出力デバイス特定処理部１２５１は順次それらの応答を受信する。そして、受信した情報をＲＡＭ１１２に保存する。出力デバイス特定処理部１２５１は、順次受信した応答からデバイス名や設置場所などの情報を取り出し、リストとして出力デバイスを特定するダイアログ８１００（図１０）に表示する（ステップＳ７０７）。
【００５６】
図１０に示すように、ダイアログ８１００には情報を表示するためのリストボックス８１０１が配置され、その中から１つをカーソル８１０２によって選択することができる。ボタン８１０３を押すと、ネットワーク内で再検索が行われ、利用可能な出力デバイスのリストを最新の状態に更新できる。ボタン８１０４を押すと、カーソル８１０２で現在選択されているデバイスが出力先として決定される。
【００５７】
図８において、出力デバイス特定処理部１２５１は、その決定を受け（ステップＳ７０９）、次の処理に移る。チェックボックス８１０５とボタン８１０６はプリントキューを管理する際にユーザが操作する。これらの操作方法については後述する。
【００５８】
ステップＳ７０９で出力先のデバイスが決定されると、出力デバイス特定処理部１２５１はプリンタードライバー管理処理部１２５２に対して出力準備処理（ステップＳ７１１）を実行するよう依頼する（ステップＳ７１０）。この出力準備処理（ステップＳ７１１）の結果、ＯＳ１２２には選択された出力デバイス１０２に印刷可能な汎用プリンタードライバー２１７、又は不図示の専用プリンタードライバー２１８のプリントキューが登録される。出力準備処理（ステップＳ７１１）については、後に図１３及び図１４を用いて詳述する。次に出力デバイス特定処理部１２５１は、図１０に示す出力デバイス特定用のダイアログ８１００から、図１１に示すような、ダイアログ８２００に遷移する（ステップＳ７１２）。ダイアログ８２００では、デスプール処理部１２５３が機能する。
【００５９】
図８において、デスプール処理部１２５３は、プレビューエリア８２０１に印刷ドキュメントを実際に印刷したときのイメージを表示する（ステップＳ７１３）。このとき表示されるイメージは、ステップＳ７０４においてスプールされたＥＭＦ６０１をデスプール処理部１２５３が読み込み、解析して、プレビューエリア８２０１の大きさに合わせて描画したものである。
【００６０】
図１１に示したダイアログ８２００において、スピンコントロール８２０２やチェックボックス８２０３やリストボックス８２０４は、それぞれ、印刷部数、白黒印刷、ホチキス設定といった一般的な印刷設定を変更するための入力手段である。更に一般的でない印刷設定を変更するためには、ボタン８２０５を押下することにより、不図示のプリンタードライバー固有のユーザインターフェースを表示させ、印刷設定の変更指示を入力することができる。このとき、出力先に対応するプリントキューが専用プリンタードライバー２１８のものである場合、汎用プリンタードライバー２１７のものに比べて、高度な印刷設定が可能である。ボタン８２０７は、現在のダイアログ８２００の画面から、１つ前の画面である出力デバイス特定のダイアログ８１００に遷移して戻るための入力手段である。ボタン８２０６は、印刷を行うための入力手段である。
【００６１】
図８において、ボタン８２０６をユーザが押下すると（ステップＳ７１４）、デスプール処理部１２５３は汎用プリンタードライバー２１７に対してデスプール処理を行い、一連の印刷描画命令を発行する（ステップＳ７１５）。ここで、デスプール処理というのはスプール処理の逆で、ステップＳ７０６によって通知された保存位置情報からＥＭＦ６０１データを読み出し、解析して、印刷描画命令を再現することである。これにより、プリントジョブマネージャー１２５固有の処理のために中断していた印刷処理が再開され、印刷ドキュメントの出力が行われる。
【００６２】
汎用プリンタードライバー１２７は、入力された印刷描画命令をＰＤＬ６０２に変換し、ネットワークＩ／Ｆ１３８を通じて出力デバイス１０２に送信する（ステップＳ７１６）。印刷処理が終わると、出力デバイス特定処理部１２５１は、プリンタードライバー管理処理部１２５２へプリントキュー整理処理（ステップＳ７１８）を実行するよう依頼する（ステップＳ７１７）。プリントキュー整理処理（ステップＳ７１８）については、後に図１７及び図１８を用いて詳述する。最後に、プリントジョブマネージャー１２５はプログラムを終了する。
【００６３】
図１２にプリントジョブマネージャー１２５のユーザインターフェースの遷移の概要を示す。まず、プリントジョブマネージャー１２５は、図１０に示した「出力デバイス特定」ダイアログ８１００を表示する。出力デバイスの特定と「次へ」のボタン８１０４の押下を受けて、プリントジョブマネージャー１２５は、図１１に示す「編集プレビュー」ダイアログ８２００を表示する。「編集プレビュー」ダイアログ８２００では、プリントジョブのプレビュー確認と基本的な印刷設定が可能である。
【００６４】
図１１に示す「印刷」ボタン８２０６の押下を受けて、プリントジョブマネージャー１２５は出力デバイスへ印刷を実行し同ダイアログを閉じる。加えて、「編集プレビュー」ダイアログ８２００には、プリンタードライバーが持っている特有の機能を設定するために「詳細設定」ボタン８２０５が存在する。「詳細設定」ボタン８２０５の押下を受けて、プリントジョブマネージャー１２５は、図１２に示すように、プリンタードライバーの「印刷設定」ダイアログ９０００を表示する。
【００６５】
更に、図１１における「編集プレビュー」ダイアログ８２００には「戻る」ボタン８２０７が存在する。この「戻る」ボタン８２０７は現在の出力先デバイスでは所望の機能が実現できないことが分かった際の出力デバイスの再設定のために存在する。「戻る」ボタン８２０７の押下を受けて、プリントジョブマネージャー１２５は、図１０に示す「出力デバイス特定」ダイアログ８１００を表示し、再度出力デバイスの指定が可能になる。
【００６６】
図１３は、プリンタードライバー管理処理部１２５２における出力準備処理（図８のステップＳ７１１）の詳細な流れを表すフローチャートである。本処理によって、プリンタードライバー管理処理部１２５２は、出力デバイス１０２へ印刷するためのプリントキューがあればそれを選定し、なければ新しいプリントキューを作成、あるいは最適なプリンタードライバーをインストールする。
【００６７】
図１３において、まず、プリンタードライバー管理処理部１２５２は、出力準備処理を開始すると（ステップＳ１０００）、出力デバイス１０２のＩＰアドレス情報を取得する（ステップＳ１００１）。ここで、ＩＰアドレス情報は、出力デバイスの検索処理（ステップＳ７０７）において取得されＲＡＭ１１２に記憶されているものを取り出す。
【００６８】
次に、プリンタードライバー管理処理部１２５２は、ＯＳ１２２に登録されているすべてのプリントキューからプリントキューに関連付けられているポートのＩＰアドレスを取得する（ステップＳ１００２〜Ｓ１００４）。次に、プリンタードライバー管理処理部１２５２は、出力デバイス１０２のＩＰアドレスと、ポートのＩＰアドレスが合致するプリントキューが存在するかどうか判断する（ステップＳ１００５）。
【００６９】
後述するが、本システムにおいて、プリントキューは出力デバイスごとに作成される。しかし、同じ出力デバイスに印刷を行うたびに別のプリントキューを毎回作成すると大量のプリントキューが重複して登録されてしまう。このような事態を避けるため、出力デバイスとすべてのプリントキューのＩＰアドレス同士を比較することによって、既存のプリントキューの中に出力可能なものがないかを判断する。
【００７０】
ステップＳ１００５で、もし出力可能なプリントキューが存在すれば処理はステップＳ１００６に進み、出力可能なプリントキューが存在しなければ、処理はＳ１０１１に進む。次に、ステップＳ１００６では、プリンタードライバー管理処理部１２５２は、更に汎用プリンタードライバーを優先させるモードであるかどうか判断する。汎用プリンタードライバーを優先させるモードを設けているのは、以下の理由による。すなわち、所望の出力デバイス１０２に出力可能なプリントキューの中には専用プリンタードライバー２１８のものが含まれている可能性もある。しかしながら、高度な機能は必要とせず、シンプルで安定した汎用プリンタードライバー２１７を使用したいユーザもいる。このため、例えば不図示のユーザインターフェースによって汎用プリンタードライバーを優先させるかどうか切り替え可能なモードを設けることが考えられる。
【００７１】
ステップＳ１００６にて、このモードが真、すなわち汎用プリンタードライバーを優先させる場合は、処理はステップＳ１００７に進み、そうでなければ、処理はステップＳ１００９に進む。次に、ステップＳ１００７では、プリンタードライバー管理処理部１２５２は、プリントキューのデバイスモデル名を取得する。そして、プリンタードライバー管理処理部１２５２は、デバイスモデル名が汎用プリンタードライバーのものであるかどうか判断する（ステップＳ１００８）。プリントキューの名前がユーザによって変更可能であるのに対し、汎用プリンタードライバーのデバイスモデル名は「Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １」のように固有の名称である。したがって、汎用プリンタードライバーについては、プリントキューのデバイスモデル名を知ればどの種類のドライバーなのか判断できる。
【００７２】
ステップＳ１００８にて、汎用プリンタードライバーである場合には、プリンタードライバー管理処理部１２５２は、該当する汎用プリンタードライバーのプリントキューを出力先として決定する（ステップＳ１００９）。そして、出力準備処理を終了する（ステップＳ１０１４）。
【００７３】
ステップＳ１００８で汎用プリンタードライバーでない場合、プリンタードライバー管理処理部１２５２は、汎用プリンタードライバーを優先することを決定する（ステップＳ１０１０）。そして、汎用・専用プリンタードライバーインストール処理（ステップＳ１０１３）で汎用プリンタードライバーを優先してインストールする。
【００７４】
ステップＳ１０１１では、ステップＳ１００６と同様に汎用プリンタードライバーを優先させるモードかどうかを判断し、この判断が真なら処理はステップＳ１０１０に、偽なら処理はステップＳ１０１２へ進む。
【００７５】
ステップＳ１０１２では、既存のプリントキューに出力可能なものが存在せず、汎用プリンタードライバーを優先させるモードでもないので、適合する最適なドライバーを検索してインストールすることに決定し、処理はＳ１０１３に進む。汎用・専用プリンタードライバーインストール処理（ステップＳ１０１３）については図１４を用いて詳述する。
【００７６】
図１４は、プリンタードライバー管理処理部１２５２における汎用・専用プリンタードライバーインストール処理（図１３のステップＳ１０１３）の詳細な流れを表すフローチャートである。
【００７７】
まず、プリンタードライバー管理処理部１２５２は、処理を開始すると（ステップＳ１１００）、出力用のポートを作成する（ステップＳ１１０１）。次に、プリンタードライバー管理処理部１２５２は、専用プリンタードライバーを優先するモードであるかどうか判断し（ステップＳ１１０２）、真であればステップＳ１１０３に処理を進め、偽であればステップＳ１１０８に処理を進める。
【００７８】
ステップＳ１１０３〜ステップＳ１１０７は、ホストコンピューター１０１やプリンタードライバー配信サーバー１０３、あるいは出力デバイス１０２ａや１０２ｂの中から出力に最適な専用プリンタードライバー１４３を検索するステップである。
【００７９】
まず、ステップＳ１１０３では、プリンタードライバー管理処理部１２５２は、出力デバイスのハードウェア情報を取得する。本実施形態ではハードウェア情報として、プラグアンドプレイインストールに用いられるハードウェアＩＤを取得する。ハードウェアＩＤは、出力デバイスの検索処理（図８のステップＳ７０７）において取得されＲＡＭ１１２に記憶されているものを取り出す。
【００８０】
次に、ステップＳ１１０４では、プリンタードライバー管理処理部１２５２は、インストール済みプリンタードライバー内に適合するプリンタードライバーがあるかどうか判断する。具体的には、プリンタードライバー管理処理部１２５２は、ＯＳ１２２に登録されている各プリンタードライバーのハードウェア情報と、ステップＳ１１０３で取得した出力デバイス１０２のハードウェア情報とを比較する。そして、両者が一致するものがあればすべてピックアップする。１つ以上適合するものがあればステップＳ１１１６へ、なければステップＳ１１０５へ処理が進められる。
【００８１】
次に、ステップＳ１１０５では、プリンタードライバー管理処理部１２５２は、ドライバーストア内に適合するプリンタードライバーがあるかどうか判断する。ドライバーストアとはＷｉｎｄｏｗｓ  Ｖｉｓｔａ（登録商標）で導入されたデバイスドライバーのデータベースシステムであり、インストール前のデバイスドライバーのパッケージをＯＳ１２２に格納する仕組みである。プリンタードライバー管理処理部１２５２は、このドライバーストアに格納されているプリンタードライバーの中に、ステップＳ１１０３で取得した出力デバイス１０２のハードウェア情報に一致するものがないかＯＳ１２２に問い合わせることができる。問い合わせの結果、１つ以上適合するものがあればＳ１１１２へ、なければＳ１１０６へ進む。次に、Ｓ１１０６ではプリンタードライバー配信サーバー（１０３）内に適合するプリンタードライバーがあるかどうか判断する。
【００８２】
プリンタードライバー管理処理部１２５２は、プリンタードライバー配信サーバー１０３に、ネットワーク１０４を経由して、あるハードウェア情報に適合するプリンタードライバーがあるか問い合わせることができる。具体的には、ＲＰＣ（Ｒｅｍｏｔｅ  Ｐｒｏｃｅｄｕｒｅ  Ｃａｌｌ）やＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）などの手段で問い合わせを行う。問い合わせの結果、１つ以上適合するものがあればプリンタードライバー配信サーバー１０３からプリンタードライバーのパッケージをホストコンピューター１０１に転送する。そして、このプリンタードライバーのパッケージを外部メモリ１２１に記憶し、ステップＳ１１１２に処理が進められる。そうでなければ、ステップＳ１１０７へ処理が進められる。
【００８３】
次に、ステップＳ１１０７では、プリンタードライバー管理処理部１２５２は、出力デバイス１０２内を検索し、適合するドライバーがあるかどうか判断する。前述したとおり、出力デバイス１０２はその外部メモリ１３４に、出力デバイス自身を利用するために必要な専用プリンタードライバー１４３を記憶することができる。プリンタードライバー管理処理部１２５２は、この出力デバイス１０２に記憶されたプリンタードライバーも、ステップＳ１１０６と同様の手段で、ネットワーク１０４を経由して、問い合わせることが可能である。
【００８４】
問い合わせの結果、１つ以上適合するものがあれば、プリンタードライバー管理処理部１２５２は、出力デバイス１０２から専用プリンタードライバー１４３のデータをホストコンピューター１０１に転送する。そして、専用プリンタードライバー１４３のデータを外部メモリ１２１に記憶し、ステップＳ１１１２へ処理を進める。外部メモリ１３４の設定変更等により専用プリンタードライバー１４３が消去されているため、問い合わせの結果が１つも適合するものがないと判断された場合は、処理をステップＳ１１０８進める。
【００８５】
ステップＳ１１０８〜Ｓ１１１１は、前述のステップＳ１１０３〜Ｓ１１０６の一連の処理の結果、適合するプリンタードライバーがどこにも見つからない場合の代替手段の処理である。この場合、プリンタードライバー管理処理部１２５２は、あらかじめステップＳ５００〜ステップＳ５１６でインストールされた汎用プリンタードライバーのプリントキューを作成する。
【００８６】
まず、プリンタードライバー管理処理部１２５２は、ネットワーク１０４を経由して、出力デバイス１０２のコマンドタイプ情報を取得し（ステップＳ１１０８）、それが「１」であるかどうか判断する（ステップＳ１１０９）。ここで、コマンドタイプ情報とは、出力デバイス１０２が処理可能なＰＤＬ６０２の種類を表す情報である。汎用プリンタードライバー１２７は複数のデバイスモデルに出力可能なＰＤＬを発行するドライバーであるが、あくまで１種類のＰＤＬしか発行できない。したがって、異なるＰＤＬをサポートするデバイスモデルに対しては出力できないため、コマンドタイプ情報を取得して、互換性の確認を行う。
【００８７】
本実施形態においては２種類のＰＤＬ、「１」及び「２」のどちらかに対応した出力デバイスを利用することを前提としているので、コマンドタイプが「１」であるかどうか判断する。コマンドタイプが「１」の場合はステップＳ１１１０へ処理が進められ、それ以外すなわちコマンドタイプが「２」の場合は、ステップＳ１１１１に処理が進められる。
【００８８】
ステップＳ１１１０では、プリンタードライバー管理処理部１２５２は、コマンドタイプ「１」に対応した「Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １」のプリントキューを作成し、処理を終了する（ステップＳ１１１６）。一方、ステップＳ１１１１では、プリンタードライバー管理処理部１２５２は、コマンドタイプ「２」に対応した「Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  ２」のプリントキューを作成し、処理を終了する（ステップＳ１１１６）。なお、プリントキューを作成する際は、プリンタードライバー管理処理部１２５２は、ステップＳ１１０１で作成したポートを関連付ける。
【００８９】
一方のステップＳ１１１２〜ステップＳ１１１４では、プリンタードライバー管理処理部１２５２は、検索の結果として適合した専用プリンタードライバー１４３をインストールする。まず、ステップＳ１１１２では適合するプリンタードライバーが２つ以上見つかったかどうか判断し、真であればステップＳ１１１３へ処理を進め、偽であればステップＳ１１１４へ処理を進める。
【００９０】
ステップＳ１１１３では、プリンタードライバー管理処理部１２５２は、その中から最もプリンタードライバーのバージョンの新しいものをインストールすべき対象として選択する。各プリンタードライバーにはバージョンが付与されており、たとえ同じデバイスモデルのプリンタードライバーであっても作成された時期が違えば、通常は異なるバージョンを有する。バージョンの表現方法としては例えば「１０／１０／２００８．２．５．０．０」のように日付と数値の組み合わせで表現し、どちらの方が新しく作成されたものか容易に判断することができる。しかしながら、まれに古いバージョンのドライバーをあえて使用する必然性が生じる場合がある。
【００９１】
そのような場合は、図１５で示すようなダイアログ８３００を表示して、ユーザに選択させることが好ましい。リスト８３０１には適合すると判断された複数のプリンタードライバーの情報（名称、バージョン）が表示される。ユーザはリスト８３０１の中から所望のプリンタードライバーを選び、ボタン８３０２を押すことで、プリンタードライバー決定できる。
【００９２】
次に、ステップＳ１１１４では、プリンタードライバー管理処理部１２５２は、適合したプリンタードライバー、若しくは複数あった場合はＳ１１１３で選択されたプリンタードライバーをインストールする。ここで、ステップＳ１１１６〜Ｓ１１１７は、ステップＳ１１１２〜Ｓ１１１４の特殊なケースに関しての処理である。すなわち、ステップＳ１１１６〜Ｓ１１１７は、インストール済みプリンタードライバー内に適合するプリンタードライバーがあった場合に処理されるステップである。ステップＳ１１１６はステップＳ１１１２と、またステップＳ１１１７はステップＳ１１１７と同様の処理である。ステップＳ１１１４が不要なのは、もはやプリンタードライバーをインストールする必要がないからである。
【００９３】
最後にステップＳ１１１５では、プリンタードライバー管理処理部１２５２は、ステップＳ１１０１において作成したポートに関連付けてプリントキューを作成し、処理を終了する（ステップＳ１１１６）。
【００９４】
ここまで述べてきたように、プリンタードライバー管理処理部１２５２は、印刷時にプリントキューをＯＳ１２２に登録する。次回以降の印刷で出力デバイスがわかっている場合は、仮想プリンタードライバー１２６を介さずに直接プリントキューを指定し、出力先デバイスの指定ステップがない簡便な通常手順で印刷できる。しかしながら、オフィス内に多数の出力デバイスが設置されている場合や複数のオフィスを移動して印刷を行う場合、その都度プリントキューは作成されるので、プリントキューは増加傾向にある。
【００９５】
また、図１２のユーザインターフェースの遷移で示したように、プリンタードライバー管理処理部１２５２は、「出力デバイス特定」ダイアログ８１００と「編集プレビュー」ダイアログ８２００画面の遷移を何度でも繰り返すことが可能である。「出力デバイス」のリストボックス８１０１（図１０参照）で選択された出力デバイス用のプリントキューがホストコンピューター１０１に存在しない場合、プリンタードライバー管理処理部１２５２は推移のたびに新たにプリントキューを作成する。そのため、「戻る」ボタン８２０７（図１１参照）の押下を繰り返すと、ホストコンピューター１０１上のプリントキューは更に増加傾向になる。ホストコンピューター１０１上のプリントキューの総数が多くなると、「印刷」ダイアログ８０００で表示されるプリントキューが多くなりユーザによる選択が難しくなる。そのため自動生成されたプリントキューの管理手段が必要となる。
【００９６】
図１６に「削除方法指定」のダイアログ８４００を示す。図１０に示した「出力デバイス特定」のダイアログ８１００上の「詳細設定」ボタン８１０６の押下を受けて、ダイアログ８４００がディスプレイ１２０へ表示される。ダイアログ８４００上の「ＯＫ」ボタン８４０７の押下を受けて、「削除方法指定」のダイアログ８４００が閉じられる。その後、図１０に示した「出力デバイス特定」のダイアログ８１００が表示され、そのダイアログ８１００への処理に移行される。
【００９７】
図１６における「削除方法指定」のダイアログ８４００には、「削除方法を指定する」チェックボックス８４０１が存在する。このチェックボックス８４０１の初期状態はチェックなしである。このチェックボックス８４０１がチェックされるとラジオボタン８４０２からスピンボックス８４０５の間のアイテムが有効となり、プリントキューの削除方法の詳細指定が可能となる。
【００９８】
プリントキューの削除方法の詳細指定のために、「削除方法指定」のダイアログ８４００には、「選択したプリントキューを残す」ラジオボタン８４０２と、「最新のプリントキューを残す」ラジオボタン８４０４が存在する。この２つのラジオボタンへの指定は排他となっており、「選択したプリントキューを残す」ラジオボタン８４０２が選択された場合は、「最新のプリントキューを残す」ラジオボタン８４０４は非選択状態となる。またその逆に「最新のプリントキューを残す」ラジオボタン８４０４が選択された場合は、「選択したプリントキューを残す」ラジオボタン８４０２が非選択状態になる。デフォルト状態では「選択したプリントキューを残す」ラジオボタン８４０２が選択状態となる。
【００９９】
「選択したプリントキューを残す」ラジオボタン８４０２が選択状態の場合、リストボックス８４０３の選択が有効になる。プリントジョブマネージャー１２５は、ホストコンピューター１０１上に存在するプリントキューの内、プリンタードライバー管理処理部１２５２が作成したものをリストアップし、リストボックス８４０３へ表示する。但しプリンタードライバー管理処理部１２５２が作成したものではなく特殊なものであるので、このリストには仮想プリンタードライバー１２６のプリントキューである”Ｖｉｒｔｕａｌ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ”は含まれない。
【０１００】
「選択したプリントキューを残す」ラジオボタン８４０２が選択状態で「ＯＫ」ボタン８４０６が押下された場合、プリントジョブマネージャー１２５は、リストボックス８４０３で選択されていないものを削除対象と認識する。「最新のプリントキューを残す」ラジオボタン８４０４が選択状態の場合、個数のスピンボックス８４０５での指定が有効になる。
【０１０１】
「最新のプリントキューを残す」ラジオボタン８４０４が選択状態で「ＯＫ」ボタン８４０６が押下された場合、プリントジョブマネージャー１２５は、個数のスピンボックス８４０５での設定が有効であることを認識する。この設定で削除対象とするプリントキューは、「選択したプリントキューを残す」ラジオボタン８４０２で選択と同様に、ホストコンピューター１０１上にプリンタードライバー管理処理部１２５２が作成したものに限定される。また仮想プリンタードライバー１２６のプリントキューである”Ｖｉｒｔｕａｌ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ”も同様に含まれない。
【０１０２】
更に加えて、「削除方法指定」のダイアログ８４００には、「不要となったプリンタードライバーを削除する」チェックボックス８４０６が存在する。デフォルト状態では、このチェックボックス８４０６は、チェックなしである。このチェックボックス８４０１がチェックされた状態で、「ＯＫ」ボタン８４０６が押下された場合、プリントジョブマネージャー１２５は、プリントキューと関連付けのないものの削除要求を受けたと判断する。「削除方法指定」のダイアログ８４００で設定された情報を元にプリントジョブマネージャー１２５は、プリンタードライバー管理処理部１２５２へプリントキュー整理処理を依頼する。
【０１０３】
図１７〜図２３は、プリントキュー整理処理（図８のステップＳ７１８）を説明するものである。図１７に、出力デバイスの構成情報を取得する処理のフローチャートを示す。プリンタードライバー管理処理部１２５２が汎用・専用プリンタードライバーインストール処理の終了（ステップＳ１１１８）の後に（図１４参照）、印刷設定がステップＳ１２０１にて設定されている。ステップＳ１２０１の印刷設定では、出力デバイスの構成情報を必要とするか否かを判定する。なお、出力デバイスの構成情報が必要か否かの判定処理の詳細に関しては、図１８にて説明する。
【０１０４】
ステップＳ１２０１の判定の結果、出力デバイスの構成情報が必要無いと判定した場合は、プリンタードライバー管理処理部１２５２は、ステップＳ１２０４へ処理を進め、印刷準備を完了し、印刷を実行する。出力デバイスの構成情報が必要と判定した場合は、プリンタードライバー管理処理部１２５２は、ステップＳ１２０２へ処理が進め、出力デバイスの構成情報が既に取得済みであるか否かを判定する。なお、構成情報が既に取得済みか否かの判定処理の詳細に関しては、図２０にて説明する。
【０１０５】
ステップＳ１２０２にて、構成情報が既に取得済みであった場合には、プリンタードライバー管理処理部１２５２は、ステップＳ１２０４へ処理を進め、印刷準備を完了し、印刷を実行する。構成情報が未取得であった場合には、プリンタードライバー管理処理部１２５２は、ステップＳ１２０３へ処理を進め、構成情報の設定を行い、ステップＳ１２０４へ進み、印刷準備を完了し、印刷を実行する。なお、構成情報の設定における処理の詳細に関しては図２１にて説明する。
【０１０６】
図１８に、本システムが出力デバイスの構成情報を必要とするか否かを判定する処理（図１７のステップＳ１２０１）の一例のフローチャートを示す。プリンタードライバー管理処理部１２５２は、ステップＳ１３０１にて設定された印刷設定の情報を取得する。ここで出力デバイスの構成情報が必要か否かの判定を行うために印刷設定とは、ユーザがアプリケーションを通して、仮想プリンタードライバーに対して指示を行う設定となる。印刷設定は、本システムにおいて仮想プリンタードライバーにより、Ｗｉｎｄｏｗｓ（登録商標）
に定めているＤＥＶＭＯＤＥ構造体として保持されている。この印刷設定は、プリンタードライバーのダイアログ８１００の後の「編集プレビュー」ダイアログ８２００（図１１参照）で表示される設定項目と同等となる。
【０１０７】
ステップＳ１３０１にて、印刷設定の情報を取得すると、プリンタードライバー管理処理部１２５２は、ステップＳ１３０２へ処理を進める。ステップＳ１３０２にて、プリンタードライバー管理処理部１２５２は、印刷設定に、出力デバイスからの出力物に対してパンチ加工や表紙などの加工を設定する設定があり、それらの加工を行うフィニッシャーを使用する設定があるか否かを判定する。フィニッシャーを使用する設定の例としては、リストボックス８２０４（図１１参照）に示すホチキスの設定であり、パンチ加工の設定（不図示）などのことを指す。本システムでは仮想プリンタードライバーから渡されるＤＥＶＭＯＤＥを解析し、フィニッシャーの設定が１つでもあれば、ステップＳ１２０２へ進み、フィニッシャーの設定がなければ、印刷準備を完了として終了する。
【０１０８】
また、ステップＳ１３０２の処理は、印刷設定として保持しているＸＭＬ（マークアップ言語）の記述を読み込んで設定内容から判定して行うようにしても良い。すなわち、プリンタードライバー１２６へ、プリンターを機能させるオブジェクトを問い合わせた戻り値によって判定して行う。より具体的には、ＸＭＬ形式のＰｒｉｎｔＴｉｃｋｅｔを作成して処理を行う。すなわち、ステップＳ１３０１にて取得したＤＥＶＭＯＤＥから印刷用のスキーマとて用意されているＸＭＬ形式のＰｒｉｎｔＴｉｃｋｅｔを作成する。インストールしたプリンタードライバーに対して、アプリケーションが出力デバイスの機能を取得するために用意されているＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを問い合わせる。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは、プリント処理をドキュメントで機能させるためのオブジェクトである。
【０１０９】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを問い合わせる場合、戻り値を取得してｃｏｎｓｔｒａｉｎｅｄの値「ＤｅｖｉｃｅＳｅｔｔｉｎｇｓ」が返ってくる場合に、出力デバイスに対する設定に不整合があると判断される。このことから、印刷設定に出力デバイスに対する不適切な設定が含まれていると判定、つまり、フィニッシャーの構成が必要であるが構成情報が設定されていないと判定する。この判定結果をもって、プリンタードライバー管理処理部１２５２は、出力デバイスの構成情報を設定させるために、ステップＳ１３０４へ処理を進める。
【０１１０】
図１９に、ステップＳ１３０２にてＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの問い合わせるよって戻ってくるＣｏｎｓｔｒａｉｎｅｄの一例を示す。Ｃｏｎｓｔｒａｉｎｅｄの情報１６０００に”ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ”が設定されて情報が保持され、例えばパンチの設定１６００１のセクションにおいて、ＤｅｖｉｃｅＳｅｔｔｉｎｇｓを返すための情報１６００２が設けられる。
【０１１１】
図２０に、本システムがプリンタードライバーの出力デバイスの構成情報を設定済みか否かの判定する処理（図１７のステップＳ１２０２）の一例のフローチャートを示す。この例では、プリンタードライバー管理処理部１２５２は、プリンタードライバーの構成ファイルにＢｉ−Ｄｉファイル（双方向形式ファイル）が含まれているかを判定する。そして、ＯＳのＡｕｔｏＣｏｎｆｉｇ（自動デバイス構成設定）機能の有無によって出力デバイスの構成情報を設定済みか否かの判定を行う。
【０１１２】
つまり、プリンタードライバー管理処理部１２５２は、ステップＳ１４０１にてインストールしたプリンタードライバーのモデル名やファイル構成などの情報を取得する。ステップＳ１４０２にて、プリンタードライバー管理処理部１２５２は、プリンタードライバーにＢｉ−ｄｉファイルが含まれるか否かを判定する。Ｂｉ−ｄｉファイルはプリンタードライバーが出力デバイスとやり取りをするための情報が記載されたファイルである。Ｂｉ−ｄｉファイルが含まれている場合はＯＳ標準機能としてのＡｕｔｏＣｏｎｆｉｇ機能があると判断できる。この場合、プリンタードライバー管理処理部１２５２は、出力デバイスの構成情報は取得済みであると判定し、ステップＳ１４０４へ処理を進める。Ｂｉ−ｄｉファイルが含まれていない場合には、プリンタードライバー管理処理部１２５２は、ＯＳ標準機能としてのＡｕｔｏＣｏｎｆｉｇ機能がないと判断し、出力デバイスの構成情報は未取得であると判定し、ステップＳ１４０５へ処理を進める。ステップＳ１４０４では、印刷準備完了として、ステップＳ１２０４の処理へと処理が進められる。
【０１１３】
ステップＳ１４０３ではＡｕｔｏＣｏｎｆｉｇの機能がなかった場合に、プリンタードライバー管理処理部１２５２は、プリンタードライバーに独自の構成情報取得手段があるか否かを判定する。構成要素が取得済みかの判定はプリンタードライバーに対する構成情報取得手段のためのインターフェースを本システムが既知であるか否かによって判定を行う。若しくは、構成要素が取得済みかの判定は、プリンタードライバーにより構成情報が保持されているかにより行う。すなわち、プリンタードライバーの仕様が既知であれば、インストールした後の構成ファイルやレジストリなどへ、構成情報の書き込みがあるか否かを判定して行う。
【０１１４】
プリンタードライバーに対するインターフェースが既知であれば、プリンタードライバー管理処理部１２５２は、ステップＳ１４０４へ処理を進め、インターフェースが既知でなければステップＳ１４０５へ処理を進める。そして、ステップＳ１２０３の構成情報の設定処理へと進む。
【０１１５】
図２１に、本システムが出力デバイスの構成情報を設定する処理（図１７のステップＳ１２０３）の一例のフローチャートを示す。出力デバイスの構成情報を取得する処理は、インストールしたプリンタードライバーに出力デバイスの構成情報を取得する外部インターフェースが存在し、既知である場合には、外部インターフェースを通して、出力デバイスの構成情報を取得して行う。
【０１１６】
つまり、プリンタードライバー管理処理部１２５２は、ステップＳ１５０１にてインストールしたプリンタードライバーから、対象とする出力デバイスのモデル名などの情報を取得する。そして、ステップＳ１５０２にてモデル名から自社のプリンタードライバーに含まれる固有情報があるか否かを判定する。プリンタードライバーに含まれるモデル名に自社を特定できる固有情報が含まれていなければ、プリンタードライバー管理処理部１２５２は、ステップＳ１５０５へ処理を進め、固有情報が含まれている場合にはステップＳ１５０３へ処理を進める。
【０１１７】
ステップＳ１５０３では、プリンタードライバー管理処理部１２５２は、インストールしたプリンタードライバーが出力デバイスの情報を取得する機能を持ち、且つプリンタードライバー外部から使用可能なインターフェースを保持しているかを判定する。本システムが既知とするインターフェースにて、出力デバイスの構成情報が取得可能なプリンタードライバーであると判定した場合には、プリンタードライバー管理処理部１２５２は、ステップＳ１５０４へ処理を進める。そして、対象とする出力デバイスの構成情報を取得し、プリンタードライバーへ反映させる。出力デバイスの構成情報が取得可能なプリンタードライバーではないと判定した場合には、プリンタードライバー管理処理部１２５２は、ステップＳ１５０５へ処理を進める。
【０１１８】
ステップＳ１５０５においてはインストールしたプリンタードライバーが他社のものであった場合、若しくは、プリンタードライバーから出力デバイスの構成情報取得のためのインターフェースが取得できなかったとする。この場合に、プリンタードライバー管理処理部１２５２は、インストールしたプリンタードライバーのプロパティ（図２２のプリンタープロパティ１７０００）を開いて、ユーザに構成情報の入力画面を提供する。これにより、出力デバイスの構成情報が取得される。
【０１１９】
図２２に、本システムがステップＳ１５０５にて開くプリンタードライバーのプロパティダイアログの一例を示す。プリンタードライバーの構成情報取得のためのインターフェースが取得できないような場合には、インストールしたプリンターのプロパティ１７０００を表示させる。プロパティ１７０００は、例として「ＪＰＣＯＭ  ＰｒｉｎｔｅｒＥ１０００」のモデル名のプリンタープロパティを開いた時のダイアログの一例であり、「プリンターの構成」タブ１７００１に出力デバイスの構成情報を設定するための画面が用意されている。本画面にてユーザは、用紙を給紙する機器の設定やフィニッシャーの各項目表示１７００２に対して、出力デバイスの構成を設定する。プリンタードライバーによっては、自動的に「プリンター本体から情報を取得」のためのインターフェース（表示１７００３）を用意されていることもある。また、本システムとしては、プリンタープロパティ１７０００を表示する前に、ユーザに対して出力デバイスの構成情報を設定するように促すメッセージ表示１７００４を行うこともある。
【０１２０】
図２３に、図１７のステップＳ１２０１の判定にて、出力デバイスの構成情報を必要としない場合の処理についての一例のフローチャートを示す。プリンタードライバー管理処理部１２５２は、ステップＳ１８０１にてステップＳ１２０１のように印刷設定に出力デバイスの構成情報が必要か否かを判定し、構成情報が必要と判定した場合はステップＳ１８０２へ処理を進める。そしてステップＳ１２０２、ステップＳ１２０３と同様の処理を経て、ステップＳ１８０３の印刷準備完了へと進み、印刷完了（ステップＳ１８０４）の後に本システムを終了する。
【０１２１】
ステップＳ１８０１にて印刷設定に出力デバイスの構成情報が必要でないと判定された場合、プリンタードライバー管理処理部１２５２は、ステップＳ１８０５へ処理を進める。そして、ステップＳ１５０２と同様にインストールしたプリンタードライバーのモデル名を取得し、モデル名から自社ドライバーであるか否かの判定を行う。モデル名から自社ドライバーではないと判定した場合は、プリンタードライバー管理処理部１２５２は、ステップＳ１８０３の印刷準備完了へと処理を進め、自社ドライバーであると判定した場合は、ステップＳ１８０６へ処理を進める。そして、ステップＳ１８０６ではステップＳ１５０３と同様に、プリンタードライバー管理処理部１２５２は、出力デバイスの構成情報用のインターフェースが、インストールされたプリンタードライバーから取得できるかどうかを判定する。そして、インターフェースを取得できなかった場合には、ステップＳ１８０３の印刷準備完了へと処理を進める。インターフェースが取得できた場合には、ステップＳ１８０７にて本システムからの印刷完了を待つ。その後、出力デバイスへ印刷ジョブの送信が完了すると、プリンタードライバー管理処理部１２５２は、印刷が完了したものとみなしてステップＳ１８０８で出力デバイスの構成情報の取得処理を行い、処理を終了する。このように、構成情報を必要としない判定した場合には、印刷処理の完了後に構成情報の取得を行う。
【０１２２】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【符号の説明】
【０１２３】
１２３  アプリケーション
１２４  印刷処理関連プログラム
１２５  プリントジョブマネージャー
１２６  プリンタードライバー
１２６  仮想プリンタードライバー
１２７  汎用プリンタードライバー
１２８  専用プリンタードライバー
１２９  プリンタードライバーインストーラー
１２５１  出力デバイス特定処理部
１２５２  プリンタードライバー管理処理部
１２５３  デスプール処理部
【図１】
0005528196.tif 000002
【図２】
0005528196.tif 000003
【図３】
0005528196.tif 000004
【図４】
0005528196.tif 000005
【図５】
0005528196.tif 000006
【図６】
0005528196.tif 000007
【図７】
0005528196.tif 000008
【図８】
0005528196.tif 000009
【図９】
0005528196.tif 000010
【図１０】
0005528196.tif 000011
【図１１】
0005528196.tif 000012
【図１２】
0005528196.tif 000013
【図１３】
0005528196.tif 000014
【図１４】
0005528196.tif 000015
【図１５】
0005528196.tif 000016
【図１６】
0005528196.tif 000017
【図１７】
0005528196.tif 000018
【図１８】
0005528196.tif 000019
【図１９】
0005528196.tif 000020
【図２０】
0005528196.tif 000021
【図２１】
0005528196.tif 000022
【図２２】
0005528196.tif 000023
【図２３】
0005528196.tif 000024