印刷制御装置及びその表示方法
【課題】 インストール可能なプリンタドライバに対応する出力デバイスを選択できる印刷制御装置及びその表示方法を提供する。
【解決手段】 特定された出力デバイスに対応するプリンタドライバを検索してインストールする印刷制御装置において、出力デバイスを探索して出力デバイスのハードウェア情報を取得する。取得されたハードウェア情報から出力デバイスに適合するプリンタドライバを検索し、検索された結果に基づいて、出力デバイスの表示を切り替える。
【解決手段】 特定された出力デバイスに対応するプリンタドライバを検索してインストールする印刷制御装置において、出力デバイスを探索して出力デバイスのハードウェア情報を取得する。取得されたハードウェア情報から出力デバイスに適合するプリンタドライバを検索し、検索された結果に基づいて、出力デバイスの表示を切り替える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、、特定された出力デバイスに対応するプリンタドライバを検索してインストールする印刷制御装置及びその表示方法に関するものである。
【背景技術】
【0002】
従来、パーソナルコンピュータなどの情報処理装置からプリンタなどの出力デバイスを利用するには、一般的にその出力デバイスに対応した特定のプリンタドライバを組み込む必要があった。そのため、利用する出力デバイスが複数台ある場合は利用する台数分だけプリンタドライバを組み込まなければならなかった。
【0003】
その上、ユーザは利用する度にIPアドレスを調べたり、対応するプリンタドライバをインターネットから探してきたり、といった面倒なインストール作業を強いられてきた。しかも、近年ではパーソナルコンピュータが爆発的に増加したため、プリンタドライバのメンテナンスコストも無視できないほど増加してきた。
【0004】
そこで、出力デバイスの種類に依存することなく複数の出力デバイスを利用可能な汎用のプリンタドライバが研究及び開発されている。例えば、非特許文献1には、アプリケーションから汎用プリンタドライバに対して印刷指示を出した後に出力可能なネットワークプリンタを選んで印刷する方法が開示されている。この方法によれば、汎用プリンタドライバを情報処理装置に組み込んでおくだけで、汎用プリンタドライバが対応するすべてのプリンタを利用することが可能である。
【0005】
しかしながら、非特許文献1に示される汎用プリンタドライバは、対応する全プリンタが共通で処理可能な形式のコマンドを生成して送信するため、各プリンタに特化した専用プリンタドライバを用いて印刷する場合に比べて機能が制限される。また、汎用プリンタドライバが送信するコマンドを処理できない種類のプリンタには印刷できない。
【0006】
上記汎用プリンタドライバを用いた場合の2つの課題、即ち、専用プリンタドライバに比べて機能が制限されることと、汎用プリンタドライバが送信することができない種類のプリンタに印刷できない課題がある。それらを解決するために、仮想プリンタドライバを用いた印刷制御装置が考えられる。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】HP Universal Print Driver Series for Windows(登録商標) - overview and featureshttp://h20338.www2.hp.com/hpsub/cache/342988-0-0-225-121.html
【発明の概要】
【発明が解決しようとする課題】
【0008】
上述した仮想プリンタドライバを用いる場合、アプリケーションからの印刷実行後に、出力デバイスに適合するプリンタドライバをインストールして印刷が行われる。例えば、仮想プリンタドライバがネットワーク上で共有されている出力デバイスを探索した結果を出力先デバイスリストとして表示し、その中から印刷したい出力デバイスをユーザに選択させる。このとき、選択された出力デバイスに対応するプリンタドライバを時間をかけて検索しても、その出力デバイスに対応したプリンタドライバが見つからず、結果的に印刷できないことがあった。
【0009】
本発明は、インストール可能なプリンタドライバに対応する出力デバイスを選択できる印刷制御装置及びその表示方法を提供する。
【課題を解決するための手段】
【0010】
本発明は、ユーザにより特定された出力デバイスに対応するプリンタドライバをインストールする印刷制御装置であって、
ネットワーク内の出力デバイスを探索して出力デバイスのハードウェア情報を取得する取得手段と、
前記取得手段により取得された前記ハードウェア情報から前記出力デバイスに適合するプリンタドライバを検索する検索手段と、
前記検索手段により前記出力デバイスに適合するプリンタドライバが検索された場合、当該出力デバイスを特定するための画面を表示する表示手段と、
を有することを特徴とする。
【発明の効果】
【0011】
本発明によれば、インストール可能なプリンタドライバに対応する出力デバイスを選択できるので、出力先デバイスに適合するプリンタドライバが見つからずに印刷できないということを回避できる。
【図面の簡単な説明】
【0012】
【図1】実施形態におけるネットワークシステムの概略構成を示すブロック図。
【図2】ホストコンピュータと出力デバイスのハードウェア構成例を示すブロック図。
【図3】プリンタドライバインストーラーのユーザインターフェース画面を示す図。
【図4】プリンタドライバ、プリントキュー、ポートの各情報及びそれらの関係を説明するための図。
【図5】一般的なプリンタドライバのインストール処理を示すフローチャート。
【図6】実施形態のプリンタドライバのインストール処理を示すフローチャート。
【図7】実施形態における印刷処理のデータフローを示す図。
【図8】実施形態における印刷処理のシーケンスを示す図
【図9】(A)、(B)、(C)はユーザインターフェース画面の一例を示す図。
【図10】出力先デバイス探索と出力先デバイスリスト表示の詳細な処理を示すフローチャート。
【図11】出力準備処理の詳細な処理を示すフローチャート。
【図12】汎用・専用プリンタドライバインストール処理の詳細な処理を表すフローチャート。
【図13】変形例の出力デバイス特定処理を示すフローチャート。
【図14】変形例のユーザインターフェース画面の一例を示す図。
【図15】変形例のプリンタドライバを設置する処理を示すフローチャート。
【発明を実施するための形態】
【0013】
以下、図面を参照しながら発明を実施するための形態について詳細に説明する。
【0014】
図1は、実施形態におけるネットワークシステムの概略構成を示すブロック図である。ネットワークシステムには、ホストコンピュータ101、複数の出力デバイス102a、102b、プリンタドライバ配信サーバ103などが含まれる。これらはLAN(Local Area Network)104やインターネット105を介して相互に接続されている。尚、出力デバイスの数は2台に限らず、またデジタル複合機、複写機、プリンタなどで良い。
【0015】
図2は、ホストコンピュータと出力デバイスのハードウェア構成例を示すブロック図である。ホストコンピュータ101において、CPU111は、RAM112に記憶されているプログラムに従ってシステムバス114に接続される各デバイスを総括的に制御する。RAM112は、CPU111の主メモリ、ワークエリアなどとして機能する。ROM113は、各種プログラムや制御データを格納している。また、各種フォントを記憶するフォントROM113a、ブートプログラムやBIOSなどを記憶するプログラムROM113b、各種データを記憶するデータROM113cに区分けされ構成されている。
【0016】
キーボードコントローラI/F115は、キーボード119や不図示のポインティングデバイス(マウス)からのキー入力を制御する。ディスプレイI/F116は、ディスプレイ120への表示を制御する。外部メモリI/F117は、後述する外部メモリ121へのアクセスを制御する。外部メモリ121は、例えばHD(ハードディスク)、SSD(Solid State Disk)である。そして、オペレーティングシステム(以下、OS)122をはじめ各種アプリケーション123、印刷処理関連プログラム124を記憶するコンピュータ読み取り可能な記憶媒体として機能する。更に、この外部メモリ121は、不図示のユーザファイル、編集ファイルなどを記憶するコンピュータが読み取り可能な記憶媒体としても機能する。尚、ここでは、OS122としてMicrosoft Windows(登録商標)を使用するものとする。
【0017】
印刷処理関連プログラム124は、実施形態に係るプリントジョブマネージャー125、仮想プリンタドライバ126、汎用プリンタドライバ127、専用プリンタドライバ128を含む。更に、印刷処理関連プログラム124は、プリンタドライバインストーラー129も含む。仮想プリンタドライバ126とは、実施形態特有のドキュメントを物理的な出力デバイスに対して直接ではなく、間接的に印刷するために利用されるプログラムである。間接的なプログラムであるため「仮想」と呼称しているが、仮想プリンタドライバ126はOS122上では、印刷制御を行う一般的なプリンタドライバとして登録されるため、ユーザは通常の印刷作業手順に近い感覚で作業を行うことができる。
【0018】
一方、汎用プリンタドライバ127と専用プリンタドライバ128は、印刷制御を行う一般的なプリンタドライバとして分類される。具体的には、汎用プリンタドライバ127とは、複数のデバイスモデルの印刷制御が可能なプリンタドライバであり、その対応するデバイスモデルが共通に持つ機能を利用することができる。一方、専用プリンタドライバ128とは、単一のデバイスモデルにのみ対応した印刷制御が可能なプリンタドライバであり、その対応するデバイスモデルの機能を最大限に引き出すことが可能である。
【0019】
ネットワークI/F118は、LAN104を介して出力デバイス102に接続され、出力デバイス102との間で通信制御処理を行う。ここで、プリンタドライバ配信サーバ103もホストコンピュータ101と同様のハードウェア構成を備える。また、プリンタドライバ配信サーバ103は、データ転送速度の遅いインターネット105に配置されているため、ホストコンピュータ101や出力デバイス102に比べて、通信の応答速度が遅くなる。
【0020】
次に、出力デバイス102のハードウェア構成を説明する。CPU132は、出力デバイス102の全体の動作を制御する。RAM139は、CPU132の主メモリ、ワークエリアなどとして機能すると共に、出力情報展開領域、環境データ格納領域としても用いられる。また、RAM139は、NVRAM(Non-volatile RAM:不揮発性RAM)領域も備え、不図示の増設ポートに接続されるオプションRAMによりメモリ容量を拡張することができるように構成されている。ROM133は、各種フォントを記憶するフォントROM133a、CPU132により実行される制御プログラム等を記憶するプログラムROM133b、各種データを記憶するデータROM133cを備える。
【0021】
ネットワークI/F138は、ホストコンピュータ101との間でデータの送受信を行う。印刷部I/F136は、プリンタエンジンである印刷部137とのインターフェースを制御する。外部メモリ134は、外部メモリI/F140によりアクセスが制御されている。更に、外部メモリ134には、オプションとして接続されるハードディスク(HD)、ソリッドステートディスク(SSD)等を含み、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。更に、実施形態に係る専用プリンタドライバ143を記憶することも可能である。
【0022】
尚、ハードディスク等の外部メモリ134が接続されていない場合には、ROM133のデータROM133cにホストコンピュータ101で利用される情報を記憶することになる。また、この外部メモリ134は1個に限らず複数備えていても良い。例えば、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラム等を格納した外部メモリを複数接続できるように構成されていても良い。
【0023】
操作部142には、ユーザによる操作を受け付ける操作パネルが設けられ、操作パネルには操作のためのスイッチ及びLED表示器等が配されている(不図示)。また、不図示のNVRAMを有し、操作パネルからのプリンタモード設定情報を記憶するようにしても良い。
【0024】
CPU132は、ROM133のプログラムROM133bに記憶された制御プログラム等に基づき、印刷部I/F136を介して印刷部137に出力情報としての画像信号を出力する。また、CPU132はネットワークI/F138を介してホストコンピュータ101と通信処理が可能である。そして、ホストコンピュータ101から送信される印刷データを受信すると共に、出力デバイス102内の情報等をホストコンピュータ101に通知可能に構成されている。
【0025】
図3は、プリンタドライバインストーラー129のユーザインターフェース画面200を示す図である。プリンタドライバインストーラー129が実行されると、ディスプレイ120上に表示される。プリンタ一覧201にはインストール可能なプリンタドライバの一覧が表示される。一覧表示において、Device Model Aは、デバイスモデルAの出力デバイスに対応した専用プリンタドライバである。Device Model Bは、デバイスモデルBの出力デバイスに対応した専用プリンタドライバである。Device Model Cは、デバイスモデルCの出力デバイスに対応した専用プリンタドライバである。Device Model Dは、デバイスモデルDの出力デバイスに対応した専用プリンタドライバである。Generic Device Model 1は、デバイスモデルA、Bに対応した汎用プリンタドライバである。Generic Device Model 2は、デバイスモデルC、Dに対応した汎用プリンタドライバである。Virtual Device Modelは、デバイスモデルA、B、C、Dだけではなく、あらゆる出力デバイスに対応可能な仮想プリンタドライバである。
【0026】
このユーザインターフェース画面200でユーザが任意のモデルを選択し、追加ボタン202を押下し、インストールするプリンタ一覧203に選択したモデルを加える。その後、ユーザがインストールボタン204を押下すると、プリンタドライバインストーラー129が指定されたモデルのプリンタドライバをインストールする。
【0027】
図4は、プリンタドライバ、プリントキュー、ポートの各情報及びそれらの関係を説明するための図である。図4では、UML(Unified Modeling Language)のオブジェクト図を使って表現している。
【0028】
図示するように、プリンタドライバ301は、プリンタドライバ構成情報304を保持している。プリンタドライバ構成情報304は、ドライババージョン、デバイスモデル名、ハードウェア情報、ドライバモジュール名、等から構成される。尚、プリンタドライバ構成情報304は、OS122によって管理される。
【0029】
プリントキュー302は、アプリケーションから印刷する際の印刷対象オブジェクトである。同一のデバイスモデルのプリンタドライバ301から複数作成することができる。例えば、オフィスにDevice Model Aが3台導入された場合、この出力デバイスに対応したプリンタドライバを1つインストールし、そのプリンタドライバを使ったプリントキューが3つ作成される。
【0030】
プリントキュー302は、プリントキュー構成情報305を保持している。プリントキュー構成情報305は、プリントキュー名、ポート名、印刷設定情報、ジョブ投入時刻、ジョブステータス、等から構成される。尚、プリントキュー構成情報305は、OS122によって管理される。更に、プリントキュー302は、実施形態に特有の自動生成識別子306と更新日時307とを保持する。これらの情報は、プリントジョブマネージャー125によって管理される。詳細は後述する。
【0031】
ポート303は、ネットワークの出力先を特定するオブジェクトである。ポート303とプリントキュー302との関係は通常は一対一であるが、同じポートを複数のプリントキューが使用してもかまわない。ポート303は、ポート構成情報308を保持している。ポート構成情報308は、ポート名、モジュール名、IPアドレス、等から構成される。尚、ポート構成情報308は、OS122によって管理される。
【0032】
図5は、プリンタドライバインストーラー129による一般的なプリンタドライバのインストール処理を示すフローチャートである。一般的なプリンタドライバとは、専用プリンタドライバ及び汎用プリンタドライバを指す。プリンタドライバのインストールを開始すると、S401において、まずユーザがデバイスモデルを選択し、選択されたデバイスモデルを受け付ける。ここでは、図2に示すプリンタ一覧201でVirtual Device Model以外のデバイスモデルが選択された場合を想定している。尚、実施形態に特有のVirtual Device Modelの選択も含むインストール処理は、図6を用いて後述する。
【0033】
次に、S402において、S401で選択されたデバイスモデルのプリンタドライバをインストールする。次に、S403において、ユーザがIPアドレス等のポート構成情報308を入力し、S404において、入力されたポート構成情報308からポート303を作成する。次に、S405において、ユーザがプリントキュー名を入力し、S406では、S402でインストールしたプリンタドライバとS404で作成したポート303とを関連付けてプリントキュー302を作成する。以上で、専用プリンタドライバ及び汎用プリンタドライバのインストール処理が終了する。
【0034】
図6は、プリンタドライバインストーラー129による実施形態に特有のプリンタドライバのインストール処理を示すフローチャートである。プリンタドライバのインストールを開始すると、S501において、まずユーザによるデバイスモデルの選択を受け付ける。そして、S502において、選択されたデバイスモデルが仮想プリンタドライバか否かを判定する。ここで、選択されたデバイスモデルが仮想プリンタドライバではない場合、S503へ進み、専用・汎用プリンタドライバのインストール処理を行う。S503は、図5に示すS402以降の処理と等価である。そして、インストール処理を終了する。
【0035】
一方、選択されたデバイスモデルが仮想プリンタドライバの場合は、S504へ進み、仮想プリンタドライバをインストールする。この仮想プリンタドライバ自体は、ポートに対する印刷データの出力を行わないので、S505でユーザによる入力を伴わずにダミーのポートを作成する。また、仮想プリンタドライバに対して複数のプリントキューを作る必要性が無いので、S506でユーザによる入力を伴わずにデバイスモデル名と同じ名前でプリントキューを作成する。
【0036】
図4を用いて一般的なプリンタドライバのインストール処理を説明した際に、ユーザによる入力は、S401とS403とS405の3回あった。一方、実施形態に特有のプリンタドライバのインストール処理は、ユーザによる入力は、S501の1回だけである。もし、プリンタドライバインストーラー129が仮想プリンタドライバだけを対象としたプログラムであれば、S501も不要となる。
【0037】
つまり、仮想プリンタドライバのインストール処理方法は、ユーザの負担と運用コストを低減させる効果がある。仮想プリンタドライバは、ポートに対する印刷データの出力を行わない。そこで、印刷を最低限保証するために汎用プリンタドライバを設置する。引き続き、汎用プリンタドライバのインストール処理を説明する。
【0038】
S507〜S510において、インストールセットに含まれる全ての汎用プリンタドライバを列挙する。図2に示すプリンタ一覧201では、汎用プリンタは、Generic Device Model 1とGeneric Device Model 2の2つが存在する。よって、1回目のループ処理では、Generic Device Model 1を取り出し、2回目のループ処理では、Generic Device Model 2を取り出す。次に、S508において、取り出した汎用プリンタドライバがホストコンピュータ101にインストール済みか否かを判断する。ここで、インストールしていない場合は、S509へ進み、取り出した汎用プリンタドライバをインストールする。ここでは、汎用プリンタドライバを使ったプリントキューを作成しないので、ユーザが汎用プリンタドライバのインストールを意識することはない。そして、S510において、ループ処理が終了したら、当インストール処理を終了する。
【0039】
また、S508において、取り出した汎用プリンタドライバがホストコンピュータ101にインストール済みの場合は、S511へ進み、インストール済みの汎用プリンタドライバのバージョンを取得する。そして、S512において、バージョンの数から継続使用可能か否かを判断する。ここで、継続使用可能と判断した場合は、S510へ進み、このループ処理が終了すると、インストール処理を終了する。
【0040】
一方、S512において、インストール済みの汎用プリンタドライバが継続使用不可能と判断した場合、S513へ進み、インストール済みの汎用プリンタドライバをアンインストールする。そして、S514において、取り出した汎用プリンタドライバをインストールする。更に、S515において、S513の処理前にインストール済み汎用プリンタドライバを使って構成されていたプリントキューをS514でインストールした汎用プリンタドライバを使って復元する。そして、S510へ進み、ループ処理が終了したら、当インストール処理を終了する。
【0041】
以上、プリンタドライバインストーラー129が仮想プリンタドライバをインストールし、そのプリントキューを作成すると、自動的に汎用プリンタドライバをインストールすることを説明した。尚、S507以降の汎用プリンタドライバのインストール処理はプリンタドライバインストーラー129が実施することで説明したが、仮想プリンタドライバ126の初期化処理において実施してもかまわない。また、一般にVendorSetupと呼ばれるOS122から呼び出される不図示のプリンタドライバのセットアップモジュールで実施してもかまわない。
【0042】
次に、印刷処理関連プログラムの各コンポーネント間で行われるデータの入出力を説明する。図7は、印刷処理のデータフローを示す図である。アプリケーション123はOS122の提供する描画インターフェースであるGDI(Graphic Device Interface)600を通じて印刷指示命令を仮想プリンタドライバ126に出力する。次に、仮想プリンタドライバ126は入力された印刷指示命令をEMF(Enhanced Meta File)601の形式に変換してプリントジョブマネージャー125に出力する。
【0043】
ここでEMF601とは、GDI600の印刷指示命令と互換性のある中間データ形式であり、アプリケーション123から出力された一連の印刷指示命令を再現可能なデータとして記録したものである。ここでは、中間データ形式としてEMF601を用いて説明するが、印刷指示命令を再現可能なデータであれば、他の形式であっても良い。例えば、XPS(XML Paper Specification)、PDF(Portable Document Format)、或いは独自に定義した任意の形式であっても良い。
【0044】
次に、プリントジョブマネージャー125は、後述する出力デバイスの特定、汎用・専用プリンタドライバの管理など固有の処理を行い、GDI600を通じて印刷指示命令を出力する。出力された印刷指示命令は、汎用プリンタドライバ127或いは専用プリンタドライバ128に対して入力される。次に、汎用プリンタドライバ127或いは専用プリンタドライバ128は、出力デバイス102が処理可能なPDL602の形式に変換し、出力デバイス102に出力する。最後に出力デバイス102は、入力されたPDL602を処理して印刷出力を行う。
【0045】
次に、一連の印刷処理中に関連プログラムの各コンポーネントの内部及びそれらの間でどのような処理が行われているかを説明する。図8は、印刷処理のシーケンスを示す図である。まず、ユーザがアプリケーション123に対して印刷したいドキュメントの印刷指示(S700)を図9に示す(A)のユーザインターフェース画面8000を介して入力する。尚、プリンタを表すアイコン8001〜8003のうち、仮想プリンタドライバを通じて出力を行うため、ユーザは仮想デバイスモデルのアイコン8001を選択し、印刷ボタン8004を押して印刷を指示する。
【0046】
次に、アプリケーション123は、仮想プリンタドライバ126に対して、印刷初期化(S701)を指示する。そして、仮想プリンタドライバ126が印刷初期化処理を行い、プリントジョブマネージャー125の起動(S702)を行う。ここでプリントジョブマネージャー125は、仮想プリンタドライバ126に対するドキュメントの印刷開始後に起動されるプログラムであり、後述する出力デバイスの特定、汎用・専用プリンタドライバの管理など固有の処理を担う。また、プリントジョブマネージャー125は内部的なコンポーネントとして、出力デバイス特定処理部1251、プリンタドライバ管理処理部1252、デスプール処理部1253を含む。
【0047】
次に、アプリケーション123は、プリントジョブマネージャー125が起動されると、仮想プリンタドライバ126に対して印刷(S703)を開始し、一連の印刷描画命令をGDI219を通じて出力する。仮想プリンタドライバ126では、入力された一連の印刷描画命令をEMF601形式に変換し、その後、印刷描画命令を再現できるように外部メモリ121に保存する。この処理をスプール(S704)と呼ぶ。アプリケーション123は一連の印刷描画命令の最後に印刷終了(S705)の処理を行う。仮想プリンタドライバ126では、これを受けて保存されたEMF601の外部メモリ121における保存位置情報をプリントジョブマネージャー125に通知(S706)する。
【0048】
尚、スプール(S704)では、外部メモリ121に保存するように処理を実施するが、外部メモリ121を介さずにプリントジョブマネージャー125へ直接出力するように処理してもかまわない。
【0049】
また、出力先デバイス探索(S707)及び出力先デバイスリスト表示(S708)については図10を用いて後述する。
【0050】
図9に示す(B)のユーザインターフェース画面8100には、出力デバイスの情報を表示するリストコントロール(出力先デバイスリスト)8101が配置され、その中から一つをカーソル8102で選択可能である。また、デバイスリスト更新ボタン8103を押下すると、ネットワーク内で再検索が行われ、OS122にインストールされている、若しくはインストール可能なプリンタドライバが見つかった出力デバイスのリストを最新の状態に更新できる。次へボタン8104を押すと、カーソル8102で現在選択されているデバイスが出力先として決定される。つまり、出力デバイス特定処理部1251は、デバイス選択+次へボタンの押下(S709)を受けて、次の処理に移る。
【0051】
このように、出力先のデバイスが決定されると、出力デバイス特定処理部1251は、プリンタドライバ管理処理部1252に対して出力準備処理(S711)を実行するよう依頼(S710)する。この出力準備処理(S711)の詳細については更に後述する。出力準備処理(S711)の結果、OS122には選択された出力デバイス102に印刷可能な汎用プリンタドライバ217か不図示の専用プリンタドライバ218のプリントキューが登録される。
【0052】
次に、出力デバイス特定処理部1251は、図9に示す(B)の出力デバイス特定用の画面から、デスプール処理部1253が有する図9に示す(C)の画面8200)に遷移(S712)する。デスプール処理部1253は、プレビューエリア8201に印刷ドキュメントを実際に印刷させたときのイメージをプレビュー表示(S713)する。このときに表示されるイメージは、スプール(S704)されたEMF601をデスプール処理部1253が読み込み、解析して、プレビューエリア8201の大きさに合わせて描画したものである。スピンコントロール8202やチェックボックス8203は、それぞれ印刷部数、白黒印刷といった一般的な印刷設定を変更するために用いられる。更に、一般的でない印刷設定を変更する場合、詳細設定ボタン8204を押下することにより、不図示のプリンタドライバ固有のユーザインターフェースを表示させ、印刷設定の変更指示を入力することができる。このとき、出力先に対応するプリントキューが専用プリンタドライバ218のものである場合、汎用プリンタドライバ217のものに比べて、高度な印刷設定が可能である。戻るボタン8206は、現在の画面8200から一つ前の画面である出力デバイス特定画面8100に遷移して戻るために用いられる。
【0053】
印刷ボタン8205をユーザが押下(S714)すると、デスプール処理部1253は汎用プリンタドライバ217に対してデスプール(S715)を指示し、一連の印刷描画命令を発行する。ここで、デスプールというのはスプールの逆で、通知された保存位置情報からEMF601データを読み出し、解析して、印刷描画命令を再現することである。これにより、プリントジョブマネージャー125で固有の処理のために中断していた印刷処理を再開し、印刷ドキュメントを出力する。そして、汎用プリンタドライバ127は、入力された印刷描画命令をPDL602に変換し、ネットワークI/F138を通じて出力デバイス102に送信(S716)する。印刷処理が終わると、出力デバイス特定処理部1251は、プリンタドライバ管理処理部1252へプリントキュー整理処理(S718)を実行するよう依頼(S717)する。最後に、プリントジョブマネージャー125はプログラムを終了する。
【0054】
次に、出力デバイス特定処理部1251での出力先デバイス探索(S707)と出力先デバイスリスト表示(S708)の詳細な処理を、図10を用いて説明する。この処理は、探索した出力デバイスのプリンタドライバがOS122にインストールされているか、インストール可能な場合、探索した出力デバイスを出力先デバイスリスト8101に表示する。一方、プリンタドライバがOS122にインストールされておらず、インストール可能でない場合は、探索した出力デバイスを出力先デバイスリスト8101に表示せず、処理を終了する。
【0055】
まず、S901において、出力デバイス特定処理部1251が出力デバイスを探索する。ここで、探索とは、LAN104に接続された出力デバイス102a、102bと通信し、それらの名称、設置場所、IPアドレス、ハードウェアIDといった情報を取得することである。通信方法としては、公知技術であるSNMP(Simple Network Management Protocol)などのプロトコルが使用される。
【0056】
通常、電源が入っているか、LAN104に接続されているか、といった出力デバイス102a、102bの状態を事前に把握することは不可能である。そのため、出力デバイス特定処理部1251は印刷指示の都度、全ての出力デバイスとの通信を試みる。ネットワーク内の全ての装置との通信には、これも公知技術であるブロードキャストという方法を用いる。
【0057】
出力デバイス特定処理部1251がこのブロードキャストの方法でネットワークI/F118を通じてSNMPの情報取得用データを送信すると、LAN104で到達可能な全ての出力デバイス102が情報取得用データを受信する。そして、各出力デバイス102が、取得対象として指定された出力デバイスの名称や設置場所などの情報を応答データとしてネットワークI/F138を通じて送信すると、出力デバイス特定処理部1251は順次応答データを受信する。そして、受信した情報をRAM112に保存する。
【0058】
次に、ホストコンピュータ101やプリンタドライバ配信サーバ103、出力デバイス102a、102bの中から出力に最適な専用プリンタドライバ143を検索する。まずS902では、出力デバイスのハードウェア情報を取得する。ここでは、ハードウェア情報として、プラグアンドプレイインストールに用いられるハードウェアIDを取得する。このハードウェアIDは、S901の出力デバイスの探索処理において取得され、RAM112に記憶されているものを取り出す。
【0059】
次に、S903において、ドライバストア内に適合するプリンタドライバがあるか否かを判定する。ドライバストアとは、Windows(登録商標)Vistaで導入されたデバイスドライバのデータベースシステムであり、インストール前のデバイスドライバのパッケージをOS122に格納する仕組みである。出力デバイス特定処理部1251は、このドライバストア内に格納されているプリンタドライバの中に、S902で取得した出力デバイス102のハードウェア情報に一致するものがあるか否かをOS122に問い合わせて判定する。
【0060】
問い合わせの結果、適合するものがあれば、S911へ進み、出力デバイス特定処理部1251はデバイス名や設置場所などの情報をRAM112から取り出し、出力デバイスを特定する出力先デバイスリスト8101に表示する。一方、問い合わせの結果、適合するものがなければ、S904へ進み、出力デバイス特定処理部1251は出力デバイス102内を検索し、適合するプリンタドライバがあるか否かを判定する。
【0061】
上述したように、出力デバイス102は、その外部メモリ134に出力デバイス自身を利用するために必要な専用プリンタドライバ143を記憶することができる。また、出力デバイス特定処理部1251は、ハードウェア情報に適合するプリンタドライバがあるか否かを、LAN104を経由して出力デバイス102に問い合わせることができる。ここでは、RPC(Remote Procedure Call)やHTTP(Hyper Text Transfer Protocol)などを用いて問い合わせる。
【0062】
出力デバイス特定処理部1251は、問い合わせの結果、適合するものがあれば、S911へ進み、デバイス名や設置場所などの情報をRAM112から取り出し、出力デバイスを特定する出力先デバイスリスト8101に表示する。一方、問い合わせの結果、適合するものがなければ、S905へ進み、出力デバイス特定処理部1251はプリンタドライバ配信サーバ103内に適合するプリンタドライバがあるか否かを判定する。出力デバイス特定処理部1251は、ドライバ配信サーバ103も出力デバイス102と同様に、LAN104とインターネット105を経由して、問い合わせることが可能である。
【0063】
問い合わせの結果、適合するものがあれば、S911へ進み、出力デバイス特定処理部1251はデバイス名や設置場所などの情報をRAM112から取り出し、出力デバイスを特定する出力先デバイスリスト8101に表示する。一方、問い合わせの結果、適合するものがなければ、S910へ進み、出力デバイス特定処理部1251は出力デバイスを特定する出力先デバイスリスト8101に表示しない。
【0064】
図10に示す処理によれば、出力デバイスを特定する出力先デバイスリスト8101に表示されるデバイスはOS122にインストールされている、若しくはインストール可能なプリンタドライバが見つかった出力デバイスになる。
従って、ユーザはプリンタドライバが利用できる出力先デバイスを選択することになるので、出力先デバイスに適合するプリンタドライバが見つからずに、印刷できないということを避けるという効果を得ることができる。
【0065】
次に、プリンタドライバ管理処理部1252における出力準備処理(S711)の詳細な処理を、図11及び図12を用いて説明する。この処理は、出力デバイス102へ印刷するためのプリントキューがあればそれを選定し、なければ新しいプリントキューを作成、或いは最適なプリンタドライバをインストールする。
【0066】
まず、プリンタドライバ管理処理部1252は、出力準備処理を開始すると、S1201において、出力デバイス102のIPアドレス情報を取得する。IPアドレス情報は、出力デバイスの検索処理(S707)において取得され、RAM112に記憶されているものを取り出す。次に、S1202〜S1204において、OS122に登録されている全てのプリントキューからプリントキューに関連付けられているポートのIPアドレスを取得する。
【0067】
次に、S1205において、出力デバイス102のIPアドレスと、ポートのIPアドレスが合致するプリントキューが存在するか否かを判定する。詳細は後述するが、プリントキューは出力デバイス毎に作成される。しかし、同じ出力デバイスに印刷を行うたびに別のプリントキューを毎回作成すると大量のプリントキューが重複して登録されてしまう。このような事態を避けるため、出力デバイスと全てのプリントキューのIPアドレス同士を比較し、既存のプリントキューの中に出力可能なものがないかを判定する。もし出力可能なプリントキューが存在すれば、S1206へ進み、存在しなければ、S1211へ進む。
【0068】
このS1206では、更に汎用プリンタドライバを優先させるモードが設定されているか否かを判定する。所望の出力デバイス102に出力可能なプリントキューの中には専用プリンタドライバ218のものが含まれている可能性もある。しかしながら、高度な機能は必要とせずに、シンプルで安定した汎用プリンタドライバ217を使用したいユーザもいる。そのため、例えば不図示のユーザインターフェースによって汎用プリンタドライバを優先させるモードへ切り替え可能な機能を設けることが考えられる。このモードが真、即ち、汎用プリンタドライバを優先させる場合は、S1207へ進み、そうでなければ、S1209へ進む。
【0069】
このS1207では、プリントキューのデバイスモデル名を取得し、S1208では、デバイスもモデル名が汎用プリンタドライバのものか否かを判定する。プリントキューの名前がユーザによって変更可能であるのに対し、汎用プリンタドライバのデバイスモデル名は「Generic Device Model 1」のように固有の名称である。よって、プリントキューのデバイスモデル名を知ればどの種類のドライバなのか判定できる。
【0070】
ここで、汎用プリンタドライバであればS1209へ進み、そうでなければS1210へ進む。S1209へ進んだ場合は、該当する汎用プリンタドライバのプリントキューを出力先として決定し、出力準備処理を終了する。また、S1210へ進んだ場合、即ち、専用プリンタドライバの既存のプリントキューが存在していると判定した場合は、後述する汎用・専用プリンタドライバインストール処理(S1213)において、汎用プリンタドライバを優先してインストールする。そして、この処理を終了する。
【0071】
また、S1205において、合致するプリントキューが存在しない場合のS1211では、S1206と同様に、汎用プリンタドライバを優先させるモードか否かを判定し、真ならS1210へ進み、偽ならS1212へ進む。このS1212では、既存のプリントキューに出力可能なものが存在せず、汎用プリンタドライバを優先させるモードでもないので、適合する最適なドライバをインストールすることに決定する。そして、汎用・専用プリンタドライバインストール処理(S1213)を実行し、この処理を終了する。
【0072】
図12は、プリンタドライバ管理処理部1252における汎用・専用プリンタドライバインストール処理(S1213)の詳細な処理を表すフローチャートである。まず、プリンタドライバ管理処理部1252が処理を開始すると、S1301で、出力用のポートを作成する。次に、S1302で、専用プリンタドライバを優先するモードであるか否かを判定し、真であれば、S1303へ進み、偽であれば、S1309へ進む。
【0073】
S1303では、プリンタドライバ管理処理部1252は、指定された出力先デバイスのプリンタドライバが見つかったことを示す出力先デバイスリスト8101から選ばれたのかを判断する。出力先デバイスリスト8101から出力先デバイスが選ばれたと判断した場合は、S1306へ進み、プリンタドライバ管理処理部1252は適合するプリンタドライバをインストールする。そして、S1307で、S1301で作成したポートに関連付けてプリントキューを作成し、この処理を終了する。
【0074】
一方、S1303において、出力先デバイスリスト8101から出力先デバイスが選ばれなかった場合、S1304へ進む。このS1304〜S1305はホストコンピュータ101やプリンタドライバ配信サーバ103、或いは出力デバイス102a、102bの中から出力に最適な専用プリンタドライバ143を検索する処理である。
【0075】
まず、S1304において、出力デバイスのハードウェア情報を取得する。ここでは、ハードウェア情報としてプラグアンドプレイインストールに用いられるハードウェアIDを取得する。ハードウェアIDは出力デバイスの検索処理(S707)において取得され、RAM112に記憶されているものを取り出す。
【0076】
次に、S1305において、プリンタドライバ配信サーバ103にプリンタドライバがあるか否かを検索する。まず、RPCやHTTPなどで、LAN104とインターネット105を経由して、プリンタドライバ配信サーバ103内に適合するプリンタドライバがあるか否かを問い合わせる。問い合わせの結果、適合するものがあれば、S1306へ進み、プリンタドライバ配信サーバ103からプリンタドライバのパッケージをホストコンピュータ101に転送して外部メモリ121に記憶する。そして、プリンタドライバ管理処理部1252は適合するプリンタドライバをインストールする。最後に、S1307において、S1301で作成したポートに関連付けてプリントキューを作成し、この処理を終了する。
【0077】
一方、S1305において、プリンタドライバ配信サーバ103に適合するプリンタドライバがなければ、S1308へ進み、プリンタドライバ管理処理部1252は出力デバイス102が汎用プリンタドライバを使用できるかを判断する。ここでプリンタドライバ管理処理部1252が汎用プリンタドライバを使用できると判断した場合、S1310へ進む。
【0078】
S1310〜S1313では、適合するプリンタドライバがどこにも見つからない場合の代替案として、予めS500〜S516でインストールされた汎用プリンタドライバのプリントキューを作成する。まず、S1310で、プリンタドライバ管理処理部1252はLAN104を経由して出力デバイス102のコマンドタイプ情報を取得し、それが「1」であるか否かを判断する。ここで、コマンドタイプ情報とは、出力デバイス102が処理可能なPDL602の種類を表す情報である。汎用プリンタドライバ127は複数のデバイスモデルに出力可能なPDLを発行するドライバであるが、あくまで1種類のPDLしか発行できない。
【0079】
従って、異なるPDLをサポートするデバイスモデルに対しては出力できないため、コマンドタイプ情報を取得し、互換性の確認を行う。ここでは、2種類のPDL、「1」及び「2」のどちらかに対応した出力デバイスを利用することを前提としているので、コマンドタイプ情報が「1」であるか否かを判断する。「1」の場合は、S1312へ進み、それ以外、即ち、「2」の場合は、S1313へ進む。
【0080】
このS1312では、コマンドタイプ「1」に対応した「Generic Device Model 1」のプリントキューを作成し、処理を終了する。一方、S1313では、コマンドタイプ「2」に対応した「Generic Device Model 2」のプリントキューを作成し、処理を終了する。尚、プリントキューを作成する際は、S1301で作成したポートを関連付ける。
【0081】
一方、プリンタドライバ管理処理部1252が出力デバイス102に対して、汎用プリンタドライバを使用できないと判断した場合は、S1308からS1309へ進む。このS1309では、プリンタドライバ管理処理部1252は出力デバイス102に対して、使用できる汎用・専用プリンタドライバがなかったことを警告画面などで通じてユーザに通知する。最後に、汎用・専用プリンタドライバのインストール処理を中止し、この処理を終了する。
【0082】
[変形例]
上述した実施形態では、出力デバイス特定処理部1251がドライバストアやプリンタドライバ配信サーバ103等に対して出力デバイス102に適合するプリンタドライバを検索していた。しかしながら、プリンタドライバ配信サーバ103は、データ転送速度の遅いインターネット105に配置されているため、出力デバイス102などに比べてプリンタドライバ検索にも時間がかかってしまう。そこで、変形例では、プリンタドライバの検索時間を考慮して、検索場所を優先順位に従ってドライバストア、デバイスのHDDの順に検索し、出力デバイス特定処理を行うものである。
【0083】
図13は、変形例における出力デバイス特定処理を示すフローチャートである。図13に示すS1001〜S1004までは、図10に示すS901〜S904までのステップと同様であるので、説明を省略する。尚、S1003では、優先検索順位が一番目の検索場所であるドライバストア内を、またS1004では、優先検索順位が二番目の検索処理であるデバイスのHDD内を、検索するものとする。
【0084】
上述した実施形態と同様に、S1003又はS1004の判定において、適合する出力デバイスがあった場合、S1011へ進む。S1011では、出力デバイスを特定する図14に示すリストコントロール(出力先デバイスリスト)1101に表示する。ここでの表示は、図9に示す(B)の表示と同様である。
【0085】
一方、S1003及びS1004の判定において、問い合わせの結果、適合するものがなければ、S1010へ進み、図14に示す出力先デバイスリスト1105に表示する。図14示す出力先デバイスリスト1101は、出力デバイスに適合するプリンタドライバが見つかった出力デバイスを表示する領域である。一方、出力先デバイスリスト1105は出力デバイスに適合するプリンタドライバが見つからなかった出力デバイスを表示する領域である。
【0086】
尚、変形例では、優先検索順位の二番目までをドライバ検索場所として検索している。この優先検索順位の何番目までをドライバ検索場所として検索するかを予め出力デバイス特定処理部1251に登録しておいても良いし、プリンタドライバ検索前にユーザに選択させても良い。
【0087】
以上の手順により、出力デバイスに適合するプリンタドライバの検索場所に優先順位を持たせ、応答の速い検索場所に高い優先順位を割り当てることで、全ての場所を検索した場合に比べ、デバイスの検索結果が早く表示される。
【0088】
また、図14に示すように表示することにより、出力デバイス102に適合するプリンタドライバが直ぐに利用可能であるか、更に検索しないと利用可能かわからないかが一目で分かる。
【0089】
図13に示す処理では、出力デバイス102に適合するプリンタドライバが見つかった場合は、図14に示す出力先デバイスリスト1101の領域に出力デバイス102を表示した。一方、出力デバイス102に適合するプリンタドライバが見つからなかった場合は、出力先デバイスリスト1105の領域に出力デバイス102を表示した。
【0090】
しかしながら、オフィスに設置されているデバイスの種類によっては、殆ど又は全ての出力デバイス102に適合するプリンタドライバが見つからずに、出力先デバイスリスト1105の領域に表示される場合がある。
【0091】
そのような場合、オフィスにいる各ユーザは、プリンタドライバの検索に時間がかかるプリンタドライバ配信サーバ103に各人がそれぞれアクセスし(S1305)、インストールを行わなければならないため、依然として効率が悪い。
【0092】
そこで、変形例では、オフィス内の複数のユーザが本発明のシステムを利用する可能性があることに着目し、あるユーザが他のユーザでもアクセスでき、ドライバの検索に時間がかからない場所にドライバを設置する処理を、図15を用いて説明する。尚、図15に示すS1401〜S1413までの処理は、図12に示すS1301〜S1313までの処理と同様であるので、説明を省略する。
【0093】
S1415では、プリンタドライバ管理処理部1252は、自分以外の他のユーザでもアクセスでき、且つ、ドライバの検索に時間がかからないドライバ検索場所にドライバを設置できるか否かを判断する。例えば、プリンタドライバ配信サーバ103に適合するドライバが見つかった場合、デバイスのHDD134内にドライバを設置できるかを判断する。尚、デバイスのHDD134とした理由は、自分以外の他のユーザでもアクセスでき、且つ、プリンタドライバ配信サーバ103よりも、ドライバの検索に時間がかからない場所である可能性が高いからである。
【0094】
ここで、プリンタドライバ管理処理部1252がデバイスのHDD134内に出力デバイス102に適合するプリンタドライバを設置できると判断した場合、S1416へ進む。S1416では、プリンタドライバ管理処理部1252は、デバイスのHDD134内に出力デバイス102に適合するプリンタドライバを設置する。一方、プリンタドライバ管理処理部1252は、デバイスのHDD134内に出力デバイス102に適合するプリンタドライバを設置できないと判断した場合は、この処理を終了する。
【0095】
このように、自分以外の他のユーザでもアクセスでき、且つ、ドライバの検索に時間がかからないドライバ検索場所にドライバを設置することができる。
【0096】
変形例によれば、他のユーザでもアクセスでき、且つ、ドライバの検索に時間がかからないドライバ検索場所にドライバを設置することで、他の人は時間のかかるドライバ検索場所を検索する必要がなくなるので、検索時間の短縮につながる。
【0097】
また、ある優先検索順位の検索場所まで検索するのではなく、ドライバの検索でタイムアウト時間を設定しておき、タイムアウトするまでドライバ検索を行い、その結果を表示しても良い。
【0098】
[他の実施形態]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【技術分野】
【0001】
本発明は、、特定された出力デバイスに対応するプリンタドライバを検索してインストールする印刷制御装置及びその表示方法に関するものである。
【背景技術】
【0002】
従来、パーソナルコンピュータなどの情報処理装置からプリンタなどの出力デバイスを利用するには、一般的にその出力デバイスに対応した特定のプリンタドライバを組み込む必要があった。そのため、利用する出力デバイスが複数台ある場合は利用する台数分だけプリンタドライバを組み込まなければならなかった。
【0003】
その上、ユーザは利用する度にIPアドレスを調べたり、対応するプリンタドライバをインターネットから探してきたり、といった面倒なインストール作業を強いられてきた。しかも、近年ではパーソナルコンピュータが爆発的に増加したため、プリンタドライバのメンテナンスコストも無視できないほど増加してきた。
【0004】
そこで、出力デバイスの種類に依存することなく複数の出力デバイスを利用可能な汎用のプリンタドライバが研究及び開発されている。例えば、非特許文献1には、アプリケーションから汎用プリンタドライバに対して印刷指示を出した後に出力可能なネットワークプリンタを選んで印刷する方法が開示されている。この方法によれば、汎用プリンタドライバを情報処理装置に組み込んでおくだけで、汎用プリンタドライバが対応するすべてのプリンタを利用することが可能である。
【0005】
しかしながら、非特許文献1に示される汎用プリンタドライバは、対応する全プリンタが共通で処理可能な形式のコマンドを生成して送信するため、各プリンタに特化した専用プリンタドライバを用いて印刷する場合に比べて機能が制限される。また、汎用プリンタドライバが送信するコマンドを処理できない種類のプリンタには印刷できない。
【0006】
上記汎用プリンタドライバを用いた場合の2つの課題、即ち、専用プリンタドライバに比べて機能が制限されることと、汎用プリンタドライバが送信することができない種類のプリンタに印刷できない課題がある。それらを解決するために、仮想プリンタドライバを用いた印刷制御装置が考えられる。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】HP Universal Print Driver Series for Windows(登録商標) - overview and featureshttp://h20338.www2.hp.com/hpsub/cache/342988-0-0-225-121.html
【発明の概要】
【発明が解決しようとする課題】
【0008】
上述した仮想プリンタドライバを用いる場合、アプリケーションからの印刷実行後に、出力デバイスに適合するプリンタドライバをインストールして印刷が行われる。例えば、仮想プリンタドライバがネットワーク上で共有されている出力デバイスを探索した結果を出力先デバイスリストとして表示し、その中から印刷したい出力デバイスをユーザに選択させる。このとき、選択された出力デバイスに対応するプリンタドライバを時間をかけて検索しても、その出力デバイスに対応したプリンタドライバが見つからず、結果的に印刷できないことがあった。
【0009】
本発明は、インストール可能なプリンタドライバに対応する出力デバイスを選択できる印刷制御装置及びその表示方法を提供する。
【課題を解決するための手段】
【0010】
本発明は、ユーザにより特定された出力デバイスに対応するプリンタドライバをインストールする印刷制御装置であって、
ネットワーク内の出力デバイスを探索して出力デバイスのハードウェア情報を取得する取得手段と、
前記取得手段により取得された前記ハードウェア情報から前記出力デバイスに適合するプリンタドライバを検索する検索手段と、
前記検索手段により前記出力デバイスに適合するプリンタドライバが検索された場合、当該出力デバイスを特定するための画面を表示する表示手段と、
を有することを特徴とする。
【発明の効果】
【0011】
本発明によれば、インストール可能なプリンタドライバに対応する出力デバイスを選択できるので、出力先デバイスに適合するプリンタドライバが見つからずに印刷できないということを回避できる。
【図面の簡単な説明】
【0012】
【図1】実施形態におけるネットワークシステムの概略構成を示すブロック図。
【図2】ホストコンピュータと出力デバイスのハードウェア構成例を示すブロック図。
【図3】プリンタドライバインストーラーのユーザインターフェース画面を示す図。
【図4】プリンタドライバ、プリントキュー、ポートの各情報及びそれらの関係を説明するための図。
【図5】一般的なプリンタドライバのインストール処理を示すフローチャート。
【図6】実施形態のプリンタドライバのインストール処理を示すフローチャート。
【図7】実施形態における印刷処理のデータフローを示す図。
【図8】実施形態における印刷処理のシーケンスを示す図
【図9】(A)、(B)、(C)はユーザインターフェース画面の一例を示す図。
【図10】出力先デバイス探索と出力先デバイスリスト表示の詳細な処理を示すフローチャート。
【図11】出力準備処理の詳細な処理を示すフローチャート。
【図12】汎用・専用プリンタドライバインストール処理の詳細な処理を表すフローチャート。
【図13】変形例の出力デバイス特定処理を示すフローチャート。
【図14】変形例のユーザインターフェース画面の一例を示す図。
【図15】変形例のプリンタドライバを設置する処理を示すフローチャート。
【発明を実施するための形態】
【0013】
以下、図面を参照しながら発明を実施するための形態について詳細に説明する。
【0014】
図1は、実施形態におけるネットワークシステムの概略構成を示すブロック図である。ネットワークシステムには、ホストコンピュータ101、複数の出力デバイス102a、102b、プリンタドライバ配信サーバ103などが含まれる。これらはLAN(Local Area Network)104やインターネット105を介して相互に接続されている。尚、出力デバイスの数は2台に限らず、またデジタル複合機、複写機、プリンタなどで良い。
【0015】
図2は、ホストコンピュータと出力デバイスのハードウェア構成例を示すブロック図である。ホストコンピュータ101において、CPU111は、RAM112に記憶されているプログラムに従ってシステムバス114に接続される各デバイスを総括的に制御する。RAM112は、CPU111の主メモリ、ワークエリアなどとして機能する。ROM113は、各種プログラムや制御データを格納している。また、各種フォントを記憶するフォントROM113a、ブートプログラムやBIOSなどを記憶するプログラムROM113b、各種データを記憶するデータROM113cに区分けされ構成されている。
【0016】
キーボードコントローラI/F115は、キーボード119や不図示のポインティングデバイス(マウス)からのキー入力を制御する。ディスプレイI/F116は、ディスプレイ120への表示を制御する。外部メモリI/F117は、後述する外部メモリ121へのアクセスを制御する。外部メモリ121は、例えばHD(ハードディスク)、SSD(Solid State Disk)である。そして、オペレーティングシステム(以下、OS)122をはじめ各種アプリケーション123、印刷処理関連プログラム124を記憶するコンピュータ読み取り可能な記憶媒体として機能する。更に、この外部メモリ121は、不図示のユーザファイル、編集ファイルなどを記憶するコンピュータが読み取り可能な記憶媒体としても機能する。尚、ここでは、OS122としてMicrosoft Windows(登録商標)を使用するものとする。
【0017】
印刷処理関連プログラム124は、実施形態に係るプリントジョブマネージャー125、仮想プリンタドライバ126、汎用プリンタドライバ127、専用プリンタドライバ128を含む。更に、印刷処理関連プログラム124は、プリンタドライバインストーラー129も含む。仮想プリンタドライバ126とは、実施形態特有のドキュメントを物理的な出力デバイスに対して直接ではなく、間接的に印刷するために利用されるプログラムである。間接的なプログラムであるため「仮想」と呼称しているが、仮想プリンタドライバ126はOS122上では、印刷制御を行う一般的なプリンタドライバとして登録されるため、ユーザは通常の印刷作業手順に近い感覚で作業を行うことができる。
【0018】
一方、汎用プリンタドライバ127と専用プリンタドライバ128は、印刷制御を行う一般的なプリンタドライバとして分類される。具体的には、汎用プリンタドライバ127とは、複数のデバイスモデルの印刷制御が可能なプリンタドライバであり、その対応するデバイスモデルが共通に持つ機能を利用することができる。一方、専用プリンタドライバ128とは、単一のデバイスモデルにのみ対応した印刷制御が可能なプリンタドライバであり、その対応するデバイスモデルの機能を最大限に引き出すことが可能である。
【0019】
ネットワークI/F118は、LAN104を介して出力デバイス102に接続され、出力デバイス102との間で通信制御処理を行う。ここで、プリンタドライバ配信サーバ103もホストコンピュータ101と同様のハードウェア構成を備える。また、プリンタドライバ配信サーバ103は、データ転送速度の遅いインターネット105に配置されているため、ホストコンピュータ101や出力デバイス102に比べて、通信の応答速度が遅くなる。
【0020】
次に、出力デバイス102のハードウェア構成を説明する。CPU132は、出力デバイス102の全体の動作を制御する。RAM139は、CPU132の主メモリ、ワークエリアなどとして機能すると共に、出力情報展開領域、環境データ格納領域としても用いられる。また、RAM139は、NVRAM(Non-volatile RAM:不揮発性RAM)領域も備え、不図示の増設ポートに接続されるオプションRAMによりメモリ容量を拡張することができるように構成されている。ROM133は、各種フォントを記憶するフォントROM133a、CPU132により実行される制御プログラム等を記憶するプログラムROM133b、各種データを記憶するデータROM133cを備える。
【0021】
ネットワークI/F138は、ホストコンピュータ101との間でデータの送受信を行う。印刷部I/F136は、プリンタエンジンである印刷部137とのインターフェースを制御する。外部メモリ134は、外部メモリI/F140によりアクセスが制御されている。更に、外部メモリ134には、オプションとして接続されるハードディスク(HD)、ソリッドステートディスク(SSD)等を含み、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。更に、実施形態に係る専用プリンタドライバ143を記憶することも可能である。
【0022】
尚、ハードディスク等の外部メモリ134が接続されていない場合には、ROM133のデータROM133cにホストコンピュータ101で利用される情報を記憶することになる。また、この外部メモリ134は1個に限らず複数備えていても良い。例えば、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラム等を格納した外部メモリを複数接続できるように構成されていても良い。
【0023】
操作部142には、ユーザによる操作を受け付ける操作パネルが設けられ、操作パネルには操作のためのスイッチ及びLED表示器等が配されている(不図示)。また、不図示のNVRAMを有し、操作パネルからのプリンタモード設定情報を記憶するようにしても良い。
【0024】
CPU132は、ROM133のプログラムROM133bに記憶された制御プログラム等に基づき、印刷部I/F136を介して印刷部137に出力情報としての画像信号を出力する。また、CPU132はネットワークI/F138を介してホストコンピュータ101と通信処理が可能である。そして、ホストコンピュータ101から送信される印刷データを受信すると共に、出力デバイス102内の情報等をホストコンピュータ101に通知可能に構成されている。
【0025】
図3は、プリンタドライバインストーラー129のユーザインターフェース画面200を示す図である。プリンタドライバインストーラー129が実行されると、ディスプレイ120上に表示される。プリンタ一覧201にはインストール可能なプリンタドライバの一覧が表示される。一覧表示において、Device Model Aは、デバイスモデルAの出力デバイスに対応した専用プリンタドライバである。Device Model Bは、デバイスモデルBの出力デバイスに対応した専用プリンタドライバである。Device Model Cは、デバイスモデルCの出力デバイスに対応した専用プリンタドライバである。Device Model Dは、デバイスモデルDの出力デバイスに対応した専用プリンタドライバである。Generic Device Model 1は、デバイスモデルA、Bに対応した汎用プリンタドライバである。Generic Device Model 2は、デバイスモデルC、Dに対応した汎用プリンタドライバである。Virtual Device Modelは、デバイスモデルA、B、C、Dだけではなく、あらゆる出力デバイスに対応可能な仮想プリンタドライバである。
【0026】
このユーザインターフェース画面200でユーザが任意のモデルを選択し、追加ボタン202を押下し、インストールするプリンタ一覧203に選択したモデルを加える。その後、ユーザがインストールボタン204を押下すると、プリンタドライバインストーラー129が指定されたモデルのプリンタドライバをインストールする。
【0027】
図4は、プリンタドライバ、プリントキュー、ポートの各情報及びそれらの関係を説明するための図である。図4では、UML(Unified Modeling Language)のオブジェクト図を使って表現している。
【0028】
図示するように、プリンタドライバ301は、プリンタドライバ構成情報304を保持している。プリンタドライバ構成情報304は、ドライババージョン、デバイスモデル名、ハードウェア情報、ドライバモジュール名、等から構成される。尚、プリンタドライバ構成情報304は、OS122によって管理される。
【0029】
プリントキュー302は、アプリケーションから印刷する際の印刷対象オブジェクトである。同一のデバイスモデルのプリンタドライバ301から複数作成することができる。例えば、オフィスにDevice Model Aが3台導入された場合、この出力デバイスに対応したプリンタドライバを1つインストールし、そのプリンタドライバを使ったプリントキューが3つ作成される。
【0030】
プリントキュー302は、プリントキュー構成情報305を保持している。プリントキュー構成情報305は、プリントキュー名、ポート名、印刷設定情報、ジョブ投入時刻、ジョブステータス、等から構成される。尚、プリントキュー構成情報305は、OS122によって管理される。更に、プリントキュー302は、実施形態に特有の自動生成識別子306と更新日時307とを保持する。これらの情報は、プリントジョブマネージャー125によって管理される。詳細は後述する。
【0031】
ポート303は、ネットワークの出力先を特定するオブジェクトである。ポート303とプリントキュー302との関係は通常は一対一であるが、同じポートを複数のプリントキューが使用してもかまわない。ポート303は、ポート構成情報308を保持している。ポート構成情報308は、ポート名、モジュール名、IPアドレス、等から構成される。尚、ポート構成情報308は、OS122によって管理される。
【0032】
図5は、プリンタドライバインストーラー129による一般的なプリンタドライバのインストール処理を示すフローチャートである。一般的なプリンタドライバとは、専用プリンタドライバ及び汎用プリンタドライバを指す。プリンタドライバのインストールを開始すると、S401において、まずユーザがデバイスモデルを選択し、選択されたデバイスモデルを受け付ける。ここでは、図2に示すプリンタ一覧201でVirtual Device Model以外のデバイスモデルが選択された場合を想定している。尚、実施形態に特有のVirtual Device Modelの選択も含むインストール処理は、図6を用いて後述する。
【0033】
次に、S402において、S401で選択されたデバイスモデルのプリンタドライバをインストールする。次に、S403において、ユーザがIPアドレス等のポート構成情報308を入力し、S404において、入力されたポート構成情報308からポート303を作成する。次に、S405において、ユーザがプリントキュー名を入力し、S406では、S402でインストールしたプリンタドライバとS404で作成したポート303とを関連付けてプリントキュー302を作成する。以上で、専用プリンタドライバ及び汎用プリンタドライバのインストール処理が終了する。
【0034】
図6は、プリンタドライバインストーラー129による実施形態に特有のプリンタドライバのインストール処理を示すフローチャートである。プリンタドライバのインストールを開始すると、S501において、まずユーザによるデバイスモデルの選択を受け付ける。そして、S502において、選択されたデバイスモデルが仮想プリンタドライバか否かを判定する。ここで、選択されたデバイスモデルが仮想プリンタドライバではない場合、S503へ進み、専用・汎用プリンタドライバのインストール処理を行う。S503は、図5に示すS402以降の処理と等価である。そして、インストール処理を終了する。
【0035】
一方、選択されたデバイスモデルが仮想プリンタドライバの場合は、S504へ進み、仮想プリンタドライバをインストールする。この仮想プリンタドライバ自体は、ポートに対する印刷データの出力を行わないので、S505でユーザによる入力を伴わずにダミーのポートを作成する。また、仮想プリンタドライバに対して複数のプリントキューを作る必要性が無いので、S506でユーザによる入力を伴わずにデバイスモデル名と同じ名前でプリントキューを作成する。
【0036】
図4を用いて一般的なプリンタドライバのインストール処理を説明した際に、ユーザによる入力は、S401とS403とS405の3回あった。一方、実施形態に特有のプリンタドライバのインストール処理は、ユーザによる入力は、S501の1回だけである。もし、プリンタドライバインストーラー129が仮想プリンタドライバだけを対象としたプログラムであれば、S501も不要となる。
【0037】
つまり、仮想プリンタドライバのインストール処理方法は、ユーザの負担と運用コストを低減させる効果がある。仮想プリンタドライバは、ポートに対する印刷データの出力を行わない。そこで、印刷を最低限保証するために汎用プリンタドライバを設置する。引き続き、汎用プリンタドライバのインストール処理を説明する。
【0038】
S507〜S510において、インストールセットに含まれる全ての汎用プリンタドライバを列挙する。図2に示すプリンタ一覧201では、汎用プリンタは、Generic Device Model 1とGeneric Device Model 2の2つが存在する。よって、1回目のループ処理では、Generic Device Model 1を取り出し、2回目のループ処理では、Generic Device Model 2を取り出す。次に、S508において、取り出した汎用プリンタドライバがホストコンピュータ101にインストール済みか否かを判断する。ここで、インストールしていない場合は、S509へ進み、取り出した汎用プリンタドライバをインストールする。ここでは、汎用プリンタドライバを使ったプリントキューを作成しないので、ユーザが汎用プリンタドライバのインストールを意識することはない。そして、S510において、ループ処理が終了したら、当インストール処理を終了する。
【0039】
また、S508において、取り出した汎用プリンタドライバがホストコンピュータ101にインストール済みの場合は、S511へ進み、インストール済みの汎用プリンタドライバのバージョンを取得する。そして、S512において、バージョンの数から継続使用可能か否かを判断する。ここで、継続使用可能と判断した場合は、S510へ進み、このループ処理が終了すると、インストール処理を終了する。
【0040】
一方、S512において、インストール済みの汎用プリンタドライバが継続使用不可能と判断した場合、S513へ進み、インストール済みの汎用プリンタドライバをアンインストールする。そして、S514において、取り出した汎用プリンタドライバをインストールする。更に、S515において、S513の処理前にインストール済み汎用プリンタドライバを使って構成されていたプリントキューをS514でインストールした汎用プリンタドライバを使って復元する。そして、S510へ進み、ループ処理が終了したら、当インストール処理を終了する。
【0041】
以上、プリンタドライバインストーラー129が仮想プリンタドライバをインストールし、そのプリントキューを作成すると、自動的に汎用プリンタドライバをインストールすることを説明した。尚、S507以降の汎用プリンタドライバのインストール処理はプリンタドライバインストーラー129が実施することで説明したが、仮想プリンタドライバ126の初期化処理において実施してもかまわない。また、一般にVendorSetupと呼ばれるOS122から呼び出される不図示のプリンタドライバのセットアップモジュールで実施してもかまわない。
【0042】
次に、印刷処理関連プログラムの各コンポーネント間で行われるデータの入出力を説明する。図7は、印刷処理のデータフローを示す図である。アプリケーション123はOS122の提供する描画インターフェースであるGDI(Graphic Device Interface)600を通じて印刷指示命令を仮想プリンタドライバ126に出力する。次に、仮想プリンタドライバ126は入力された印刷指示命令をEMF(Enhanced Meta File)601の形式に変換してプリントジョブマネージャー125に出力する。
【0043】
ここでEMF601とは、GDI600の印刷指示命令と互換性のある中間データ形式であり、アプリケーション123から出力された一連の印刷指示命令を再現可能なデータとして記録したものである。ここでは、中間データ形式としてEMF601を用いて説明するが、印刷指示命令を再現可能なデータであれば、他の形式であっても良い。例えば、XPS(XML Paper Specification)、PDF(Portable Document Format)、或いは独自に定義した任意の形式であっても良い。
【0044】
次に、プリントジョブマネージャー125は、後述する出力デバイスの特定、汎用・専用プリンタドライバの管理など固有の処理を行い、GDI600を通じて印刷指示命令を出力する。出力された印刷指示命令は、汎用プリンタドライバ127或いは専用プリンタドライバ128に対して入力される。次に、汎用プリンタドライバ127或いは専用プリンタドライバ128は、出力デバイス102が処理可能なPDL602の形式に変換し、出力デバイス102に出力する。最後に出力デバイス102は、入力されたPDL602を処理して印刷出力を行う。
【0045】
次に、一連の印刷処理中に関連プログラムの各コンポーネントの内部及びそれらの間でどのような処理が行われているかを説明する。図8は、印刷処理のシーケンスを示す図である。まず、ユーザがアプリケーション123に対して印刷したいドキュメントの印刷指示(S700)を図9に示す(A)のユーザインターフェース画面8000を介して入力する。尚、プリンタを表すアイコン8001〜8003のうち、仮想プリンタドライバを通じて出力を行うため、ユーザは仮想デバイスモデルのアイコン8001を選択し、印刷ボタン8004を押して印刷を指示する。
【0046】
次に、アプリケーション123は、仮想プリンタドライバ126に対して、印刷初期化(S701)を指示する。そして、仮想プリンタドライバ126が印刷初期化処理を行い、プリントジョブマネージャー125の起動(S702)を行う。ここでプリントジョブマネージャー125は、仮想プリンタドライバ126に対するドキュメントの印刷開始後に起動されるプログラムであり、後述する出力デバイスの特定、汎用・専用プリンタドライバの管理など固有の処理を担う。また、プリントジョブマネージャー125は内部的なコンポーネントとして、出力デバイス特定処理部1251、プリンタドライバ管理処理部1252、デスプール処理部1253を含む。
【0047】
次に、アプリケーション123は、プリントジョブマネージャー125が起動されると、仮想プリンタドライバ126に対して印刷(S703)を開始し、一連の印刷描画命令をGDI219を通じて出力する。仮想プリンタドライバ126では、入力された一連の印刷描画命令をEMF601形式に変換し、その後、印刷描画命令を再現できるように外部メモリ121に保存する。この処理をスプール(S704)と呼ぶ。アプリケーション123は一連の印刷描画命令の最後に印刷終了(S705)の処理を行う。仮想プリンタドライバ126では、これを受けて保存されたEMF601の外部メモリ121における保存位置情報をプリントジョブマネージャー125に通知(S706)する。
【0048】
尚、スプール(S704)では、外部メモリ121に保存するように処理を実施するが、外部メモリ121を介さずにプリントジョブマネージャー125へ直接出力するように処理してもかまわない。
【0049】
また、出力先デバイス探索(S707)及び出力先デバイスリスト表示(S708)については図10を用いて後述する。
【0050】
図9に示す(B)のユーザインターフェース画面8100には、出力デバイスの情報を表示するリストコントロール(出力先デバイスリスト)8101が配置され、その中から一つをカーソル8102で選択可能である。また、デバイスリスト更新ボタン8103を押下すると、ネットワーク内で再検索が行われ、OS122にインストールされている、若しくはインストール可能なプリンタドライバが見つかった出力デバイスのリストを最新の状態に更新できる。次へボタン8104を押すと、カーソル8102で現在選択されているデバイスが出力先として決定される。つまり、出力デバイス特定処理部1251は、デバイス選択+次へボタンの押下(S709)を受けて、次の処理に移る。
【0051】
このように、出力先のデバイスが決定されると、出力デバイス特定処理部1251は、プリンタドライバ管理処理部1252に対して出力準備処理(S711)を実行するよう依頼(S710)する。この出力準備処理(S711)の詳細については更に後述する。出力準備処理(S711)の結果、OS122には選択された出力デバイス102に印刷可能な汎用プリンタドライバ217か不図示の専用プリンタドライバ218のプリントキューが登録される。
【0052】
次に、出力デバイス特定処理部1251は、図9に示す(B)の出力デバイス特定用の画面から、デスプール処理部1253が有する図9に示す(C)の画面8200)に遷移(S712)する。デスプール処理部1253は、プレビューエリア8201に印刷ドキュメントを実際に印刷させたときのイメージをプレビュー表示(S713)する。このときに表示されるイメージは、スプール(S704)されたEMF601をデスプール処理部1253が読み込み、解析して、プレビューエリア8201の大きさに合わせて描画したものである。スピンコントロール8202やチェックボックス8203は、それぞれ印刷部数、白黒印刷といった一般的な印刷設定を変更するために用いられる。更に、一般的でない印刷設定を変更する場合、詳細設定ボタン8204を押下することにより、不図示のプリンタドライバ固有のユーザインターフェースを表示させ、印刷設定の変更指示を入力することができる。このとき、出力先に対応するプリントキューが専用プリンタドライバ218のものである場合、汎用プリンタドライバ217のものに比べて、高度な印刷設定が可能である。戻るボタン8206は、現在の画面8200から一つ前の画面である出力デバイス特定画面8100に遷移して戻るために用いられる。
【0053】
印刷ボタン8205をユーザが押下(S714)すると、デスプール処理部1253は汎用プリンタドライバ217に対してデスプール(S715)を指示し、一連の印刷描画命令を発行する。ここで、デスプールというのはスプールの逆で、通知された保存位置情報からEMF601データを読み出し、解析して、印刷描画命令を再現することである。これにより、プリントジョブマネージャー125で固有の処理のために中断していた印刷処理を再開し、印刷ドキュメントを出力する。そして、汎用プリンタドライバ127は、入力された印刷描画命令をPDL602に変換し、ネットワークI/F138を通じて出力デバイス102に送信(S716)する。印刷処理が終わると、出力デバイス特定処理部1251は、プリンタドライバ管理処理部1252へプリントキュー整理処理(S718)を実行するよう依頼(S717)する。最後に、プリントジョブマネージャー125はプログラムを終了する。
【0054】
次に、出力デバイス特定処理部1251での出力先デバイス探索(S707)と出力先デバイスリスト表示(S708)の詳細な処理を、図10を用いて説明する。この処理は、探索した出力デバイスのプリンタドライバがOS122にインストールされているか、インストール可能な場合、探索した出力デバイスを出力先デバイスリスト8101に表示する。一方、プリンタドライバがOS122にインストールされておらず、インストール可能でない場合は、探索した出力デバイスを出力先デバイスリスト8101に表示せず、処理を終了する。
【0055】
まず、S901において、出力デバイス特定処理部1251が出力デバイスを探索する。ここで、探索とは、LAN104に接続された出力デバイス102a、102bと通信し、それらの名称、設置場所、IPアドレス、ハードウェアIDといった情報を取得することである。通信方法としては、公知技術であるSNMP(Simple Network Management Protocol)などのプロトコルが使用される。
【0056】
通常、電源が入っているか、LAN104に接続されているか、といった出力デバイス102a、102bの状態を事前に把握することは不可能である。そのため、出力デバイス特定処理部1251は印刷指示の都度、全ての出力デバイスとの通信を試みる。ネットワーク内の全ての装置との通信には、これも公知技術であるブロードキャストという方法を用いる。
【0057】
出力デバイス特定処理部1251がこのブロードキャストの方法でネットワークI/F118を通じてSNMPの情報取得用データを送信すると、LAN104で到達可能な全ての出力デバイス102が情報取得用データを受信する。そして、各出力デバイス102が、取得対象として指定された出力デバイスの名称や設置場所などの情報を応答データとしてネットワークI/F138を通じて送信すると、出力デバイス特定処理部1251は順次応答データを受信する。そして、受信した情報をRAM112に保存する。
【0058】
次に、ホストコンピュータ101やプリンタドライバ配信サーバ103、出力デバイス102a、102bの中から出力に最適な専用プリンタドライバ143を検索する。まずS902では、出力デバイスのハードウェア情報を取得する。ここでは、ハードウェア情報として、プラグアンドプレイインストールに用いられるハードウェアIDを取得する。このハードウェアIDは、S901の出力デバイスの探索処理において取得され、RAM112に記憶されているものを取り出す。
【0059】
次に、S903において、ドライバストア内に適合するプリンタドライバがあるか否かを判定する。ドライバストアとは、Windows(登録商標)Vistaで導入されたデバイスドライバのデータベースシステムであり、インストール前のデバイスドライバのパッケージをOS122に格納する仕組みである。出力デバイス特定処理部1251は、このドライバストア内に格納されているプリンタドライバの中に、S902で取得した出力デバイス102のハードウェア情報に一致するものがあるか否かをOS122に問い合わせて判定する。
【0060】
問い合わせの結果、適合するものがあれば、S911へ進み、出力デバイス特定処理部1251はデバイス名や設置場所などの情報をRAM112から取り出し、出力デバイスを特定する出力先デバイスリスト8101に表示する。一方、問い合わせの結果、適合するものがなければ、S904へ進み、出力デバイス特定処理部1251は出力デバイス102内を検索し、適合するプリンタドライバがあるか否かを判定する。
【0061】
上述したように、出力デバイス102は、その外部メモリ134に出力デバイス自身を利用するために必要な専用プリンタドライバ143を記憶することができる。また、出力デバイス特定処理部1251は、ハードウェア情報に適合するプリンタドライバがあるか否かを、LAN104を経由して出力デバイス102に問い合わせることができる。ここでは、RPC(Remote Procedure Call)やHTTP(Hyper Text Transfer Protocol)などを用いて問い合わせる。
【0062】
出力デバイス特定処理部1251は、問い合わせの結果、適合するものがあれば、S911へ進み、デバイス名や設置場所などの情報をRAM112から取り出し、出力デバイスを特定する出力先デバイスリスト8101に表示する。一方、問い合わせの結果、適合するものがなければ、S905へ進み、出力デバイス特定処理部1251はプリンタドライバ配信サーバ103内に適合するプリンタドライバがあるか否かを判定する。出力デバイス特定処理部1251は、ドライバ配信サーバ103も出力デバイス102と同様に、LAN104とインターネット105を経由して、問い合わせることが可能である。
【0063】
問い合わせの結果、適合するものがあれば、S911へ進み、出力デバイス特定処理部1251はデバイス名や設置場所などの情報をRAM112から取り出し、出力デバイスを特定する出力先デバイスリスト8101に表示する。一方、問い合わせの結果、適合するものがなければ、S910へ進み、出力デバイス特定処理部1251は出力デバイスを特定する出力先デバイスリスト8101に表示しない。
【0064】
図10に示す処理によれば、出力デバイスを特定する出力先デバイスリスト8101に表示されるデバイスはOS122にインストールされている、若しくはインストール可能なプリンタドライバが見つかった出力デバイスになる。
従って、ユーザはプリンタドライバが利用できる出力先デバイスを選択することになるので、出力先デバイスに適合するプリンタドライバが見つからずに、印刷できないということを避けるという効果を得ることができる。
【0065】
次に、プリンタドライバ管理処理部1252における出力準備処理(S711)の詳細な処理を、図11及び図12を用いて説明する。この処理は、出力デバイス102へ印刷するためのプリントキューがあればそれを選定し、なければ新しいプリントキューを作成、或いは最適なプリンタドライバをインストールする。
【0066】
まず、プリンタドライバ管理処理部1252は、出力準備処理を開始すると、S1201において、出力デバイス102のIPアドレス情報を取得する。IPアドレス情報は、出力デバイスの検索処理(S707)において取得され、RAM112に記憶されているものを取り出す。次に、S1202〜S1204において、OS122に登録されている全てのプリントキューからプリントキューに関連付けられているポートのIPアドレスを取得する。
【0067】
次に、S1205において、出力デバイス102のIPアドレスと、ポートのIPアドレスが合致するプリントキューが存在するか否かを判定する。詳細は後述するが、プリントキューは出力デバイス毎に作成される。しかし、同じ出力デバイスに印刷を行うたびに別のプリントキューを毎回作成すると大量のプリントキューが重複して登録されてしまう。このような事態を避けるため、出力デバイスと全てのプリントキューのIPアドレス同士を比較し、既存のプリントキューの中に出力可能なものがないかを判定する。もし出力可能なプリントキューが存在すれば、S1206へ進み、存在しなければ、S1211へ進む。
【0068】
このS1206では、更に汎用プリンタドライバを優先させるモードが設定されているか否かを判定する。所望の出力デバイス102に出力可能なプリントキューの中には専用プリンタドライバ218のものが含まれている可能性もある。しかしながら、高度な機能は必要とせずに、シンプルで安定した汎用プリンタドライバ217を使用したいユーザもいる。そのため、例えば不図示のユーザインターフェースによって汎用プリンタドライバを優先させるモードへ切り替え可能な機能を設けることが考えられる。このモードが真、即ち、汎用プリンタドライバを優先させる場合は、S1207へ進み、そうでなければ、S1209へ進む。
【0069】
このS1207では、プリントキューのデバイスモデル名を取得し、S1208では、デバイスもモデル名が汎用プリンタドライバのものか否かを判定する。プリントキューの名前がユーザによって変更可能であるのに対し、汎用プリンタドライバのデバイスモデル名は「Generic Device Model 1」のように固有の名称である。よって、プリントキューのデバイスモデル名を知ればどの種類のドライバなのか判定できる。
【0070】
ここで、汎用プリンタドライバであればS1209へ進み、そうでなければS1210へ進む。S1209へ進んだ場合は、該当する汎用プリンタドライバのプリントキューを出力先として決定し、出力準備処理を終了する。また、S1210へ進んだ場合、即ち、専用プリンタドライバの既存のプリントキューが存在していると判定した場合は、後述する汎用・専用プリンタドライバインストール処理(S1213)において、汎用プリンタドライバを優先してインストールする。そして、この処理を終了する。
【0071】
また、S1205において、合致するプリントキューが存在しない場合のS1211では、S1206と同様に、汎用プリンタドライバを優先させるモードか否かを判定し、真ならS1210へ進み、偽ならS1212へ進む。このS1212では、既存のプリントキューに出力可能なものが存在せず、汎用プリンタドライバを優先させるモードでもないので、適合する最適なドライバをインストールすることに決定する。そして、汎用・専用プリンタドライバインストール処理(S1213)を実行し、この処理を終了する。
【0072】
図12は、プリンタドライバ管理処理部1252における汎用・専用プリンタドライバインストール処理(S1213)の詳細な処理を表すフローチャートである。まず、プリンタドライバ管理処理部1252が処理を開始すると、S1301で、出力用のポートを作成する。次に、S1302で、専用プリンタドライバを優先するモードであるか否かを判定し、真であれば、S1303へ進み、偽であれば、S1309へ進む。
【0073】
S1303では、プリンタドライバ管理処理部1252は、指定された出力先デバイスのプリンタドライバが見つかったことを示す出力先デバイスリスト8101から選ばれたのかを判断する。出力先デバイスリスト8101から出力先デバイスが選ばれたと判断した場合は、S1306へ進み、プリンタドライバ管理処理部1252は適合するプリンタドライバをインストールする。そして、S1307で、S1301で作成したポートに関連付けてプリントキューを作成し、この処理を終了する。
【0074】
一方、S1303において、出力先デバイスリスト8101から出力先デバイスが選ばれなかった場合、S1304へ進む。このS1304〜S1305はホストコンピュータ101やプリンタドライバ配信サーバ103、或いは出力デバイス102a、102bの中から出力に最適な専用プリンタドライバ143を検索する処理である。
【0075】
まず、S1304において、出力デバイスのハードウェア情報を取得する。ここでは、ハードウェア情報としてプラグアンドプレイインストールに用いられるハードウェアIDを取得する。ハードウェアIDは出力デバイスの検索処理(S707)において取得され、RAM112に記憶されているものを取り出す。
【0076】
次に、S1305において、プリンタドライバ配信サーバ103にプリンタドライバがあるか否かを検索する。まず、RPCやHTTPなどで、LAN104とインターネット105を経由して、プリンタドライバ配信サーバ103内に適合するプリンタドライバがあるか否かを問い合わせる。問い合わせの結果、適合するものがあれば、S1306へ進み、プリンタドライバ配信サーバ103からプリンタドライバのパッケージをホストコンピュータ101に転送して外部メモリ121に記憶する。そして、プリンタドライバ管理処理部1252は適合するプリンタドライバをインストールする。最後に、S1307において、S1301で作成したポートに関連付けてプリントキューを作成し、この処理を終了する。
【0077】
一方、S1305において、プリンタドライバ配信サーバ103に適合するプリンタドライバがなければ、S1308へ進み、プリンタドライバ管理処理部1252は出力デバイス102が汎用プリンタドライバを使用できるかを判断する。ここでプリンタドライバ管理処理部1252が汎用プリンタドライバを使用できると判断した場合、S1310へ進む。
【0078】
S1310〜S1313では、適合するプリンタドライバがどこにも見つからない場合の代替案として、予めS500〜S516でインストールされた汎用プリンタドライバのプリントキューを作成する。まず、S1310で、プリンタドライバ管理処理部1252はLAN104を経由して出力デバイス102のコマンドタイプ情報を取得し、それが「1」であるか否かを判断する。ここで、コマンドタイプ情報とは、出力デバイス102が処理可能なPDL602の種類を表す情報である。汎用プリンタドライバ127は複数のデバイスモデルに出力可能なPDLを発行するドライバであるが、あくまで1種類のPDLしか発行できない。
【0079】
従って、異なるPDLをサポートするデバイスモデルに対しては出力できないため、コマンドタイプ情報を取得し、互換性の確認を行う。ここでは、2種類のPDL、「1」及び「2」のどちらかに対応した出力デバイスを利用することを前提としているので、コマンドタイプ情報が「1」であるか否かを判断する。「1」の場合は、S1312へ進み、それ以外、即ち、「2」の場合は、S1313へ進む。
【0080】
このS1312では、コマンドタイプ「1」に対応した「Generic Device Model 1」のプリントキューを作成し、処理を終了する。一方、S1313では、コマンドタイプ「2」に対応した「Generic Device Model 2」のプリントキューを作成し、処理を終了する。尚、プリントキューを作成する際は、S1301で作成したポートを関連付ける。
【0081】
一方、プリンタドライバ管理処理部1252が出力デバイス102に対して、汎用プリンタドライバを使用できないと判断した場合は、S1308からS1309へ進む。このS1309では、プリンタドライバ管理処理部1252は出力デバイス102に対して、使用できる汎用・専用プリンタドライバがなかったことを警告画面などで通じてユーザに通知する。最後に、汎用・専用プリンタドライバのインストール処理を中止し、この処理を終了する。
【0082】
[変形例]
上述した実施形態では、出力デバイス特定処理部1251がドライバストアやプリンタドライバ配信サーバ103等に対して出力デバイス102に適合するプリンタドライバを検索していた。しかしながら、プリンタドライバ配信サーバ103は、データ転送速度の遅いインターネット105に配置されているため、出力デバイス102などに比べてプリンタドライバ検索にも時間がかかってしまう。そこで、変形例では、プリンタドライバの検索時間を考慮して、検索場所を優先順位に従ってドライバストア、デバイスのHDDの順に検索し、出力デバイス特定処理を行うものである。
【0083】
図13は、変形例における出力デバイス特定処理を示すフローチャートである。図13に示すS1001〜S1004までは、図10に示すS901〜S904までのステップと同様であるので、説明を省略する。尚、S1003では、優先検索順位が一番目の検索場所であるドライバストア内を、またS1004では、優先検索順位が二番目の検索処理であるデバイスのHDD内を、検索するものとする。
【0084】
上述した実施形態と同様に、S1003又はS1004の判定において、適合する出力デバイスがあった場合、S1011へ進む。S1011では、出力デバイスを特定する図14に示すリストコントロール(出力先デバイスリスト)1101に表示する。ここでの表示は、図9に示す(B)の表示と同様である。
【0085】
一方、S1003及びS1004の判定において、問い合わせの結果、適合するものがなければ、S1010へ進み、図14に示す出力先デバイスリスト1105に表示する。図14示す出力先デバイスリスト1101は、出力デバイスに適合するプリンタドライバが見つかった出力デバイスを表示する領域である。一方、出力先デバイスリスト1105は出力デバイスに適合するプリンタドライバが見つからなかった出力デバイスを表示する領域である。
【0086】
尚、変形例では、優先検索順位の二番目までをドライバ検索場所として検索している。この優先検索順位の何番目までをドライバ検索場所として検索するかを予め出力デバイス特定処理部1251に登録しておいても良いし、プリンタドライバ検索前にユーザに選択させても良い。
【0087】
以上の手順により、出力デバイスに適合するプリンタドライバの検索場所に優先順位を持たせ、応答の速い検索場所に高い優先順位を割り当てることで、全ての場所を検索した場合に比べ、デバイスの検索結果が早く表示される。
【0088】
また、図14に示すように表示することにより、出力デバイス102に適合するプリンタドライバが直ぐに利用可能であるか、更に検索しないと利用可能かわからないかが一目で分かる。
【0089】
図13に示す処理では、出力デバイス102に適合するプリンタドライバが見つかった場合は、図14に示す出力先デバイスリスト1101の領域に出力デバイス102を表示した。一方、出力デバイス102に適合するプリンタドライバが見つからなかった場合は、出力先デバイスリスト1105の領域に出力デバイス102を表示した。
【0090】
しかしながら、オフィスに設置されているデバイスの種類によっては、殆ど又は全ての出力デバイス102に適合するプリンタドライバが見つからずに、出力先デバイスリスト1105の領域に表示される場合がある。
【0091】
そのような場合、オフィスにいる各ユーザは、プリンタドライバの検索に時間がかかるプリンタドライバ配信サーバ103に各人がそれぞれアクセスし(S1305)、インストールを行わなければならないため、依然として効率が悪い。
【0092】
そこで、変形例では、オフィス内の複数のユーザが本発明のシステムを利用する可能性があることに着目し、あるユーザが他のユーザでもアクセスでき、ドライバの検索に時間がかからない場所にドライバを設置する処理を、図15を用いて説明する。尚、図15に示すS1401〜S1413までの処理は、図12に示すS1301〜S1313までの処理と同様であるので、説明を省略する。
【0093】
S1415では、プリンタドライバ管理処理部1252は、自分以外の他のユーザでもアクセスでき、且つ、ドライバの検索に時間がかからないドライバ検索場所にドライバを設置できるか否かを判断する。例えば、プリンタドライバ配信サーバ103に適合するドライバが見つかった場合、デバイスのHDD134内にドライバを設置できるかを判断する。尚、デバイスのHDD134とした理由は、自分以外の他のユーザでもアクセスでき、且つ、プリンタドライバ配信サーバ103よりも、ドライバの検索に時間がかからない場所である可能性が高いからである。
【0094】
ここで、プリンタドライバ管理処理部1252がデバイスのHDD134内に出力デバイス102に適合するプリンタドライバを設置できると判断した場合、S1416へ進む。S1416では、プリンタドライバ管理処理部1252は、デバイスのHDD134内に出力デバイス102に適合するプリンタドライバを設置する。一方、プリンタドライバ管理処理部1252は、デバイスのHDD134内に出力デバイス102に適合するプリンタドライバを設置できないと判断した場合は、この処理を終了する。
【0095】
このように、自分以外の他のユーザでもアクセスでき、且つ、ドライバの検索に時間がかからないドライバ検索場所にドライバを設置することができる。
【0096】
変形例によれば、他のユーザでもアクセスでき、且つ、ドライバの検索に時間がかからないドライバ検索場所にドライバを設置することで、他の人は時間のかかるドライバ検索場所を検索する必要がなくなるので、検索時間の短縮につながる。
【0097】
また、ある優先検索順位の検索場所まで検索するのではなく、ドライバの検索でタイムアウト時間を設定しておき、タイムアウトするまでドライバ検索を行い、その結果を表示しても良い。
【0098】
[他の実施形態]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【特許請求の範囲】
【請求項1】
ユーザにより特定された出力デバイスに対応するプリンタドライバをインストールする印刷制御装置であって、
ネットワーク内の出力デバイスを探索して出力デバイスのハードウェア情報を取得する取得手段と、
前記取得手段により取得された前記ハードウェア情報から前記出力デバイスに適合するプリンタドライバを検索する検索手段と、
前記検索手段により前記出力デバイスに適合するプリンタドライバが検索された場合、当該出力デバイスを特定するための画面を表示する表示手段と、
を有することを特徴とする印刷制御装置。
【請求項2】
前記検索手段により前記出力デバイスに適合するプリンタドライバが検索されなかった場合、前記表示手段は当該出力デバイスに適合するプリンタドライバが見つからなかったことを更に表示することを特徴とする請求項1に記載の印刷制御装置。
【請求項3】
前記検索すべきプリンタドライバの検索場所には優先順位が付けられており、前記検索手段は当該優先順位に従って前記プリンタドライバを検索することを特徴とする請求項1に記載の印刷制御装置。
【請求項4】
前記プリンタドライバを検索する時間が予め設定されており、前記検索手段は当該設定された時間が終了するまで前記プリンタドライバを検索することを特徴とする請求項1に記載の印刷制御装置。
【請求項5】
前記表示手段により表示された画面でユーザにより特定された出力デバイスに対応するプリンタドライバをインストールするインストール手段と、
前記インストールされたプリンタドライバを他のユーザでもアクセスでき、且つ、前記プリンタドライバの検索に時間がかからない検索場所に設置できるか否かを判断する判断手段と、
前記判断手段により設置できる検索場所であると判断された場合、当該設置できる検索場所に前記プリンタドライバを格納する手段と、
を更に有することを特徴とする請求項1に記載の印刷制御装置。
【請求項6】
ユーザにより特定された出力デバイスに対応するプリンタドライバをインストールする印刷制御装置の表示方法であって、
取得手段が、ネットワーク内の出力デバイスを探索して出力デバイスのハードウェア情報を取得する取得工程と、
検索手段が、前記取得工程において取得された前記ハードウェア情報から前記出力デバイスに適合するプリンタドライバを検索する検索工程と、
表示手段が、前記検索工程において前記出力デバイスに適合するプリンタドライバが検索された場合、当該出力デバイスを特定するための画面を表示する表示工程と、
を有することを特徴とする印刷制御装置の表示方法。
【請求項7】
コンピュータを請求項1乃至5の何れか1項に記載の印刷制御装置の各手段として機能させるためのプログラム。
【請求項1】
ユーザにより特定された出力デバイスに対応するプリンタドライバをインストールする印刷制御装置であって、
ネットワーク内の出力デバイスを探索して出力デバイスのハードウェア情報を取得する取得手段と、
前記取得手段により取得された前記ハードウェア情報から前記出力デバイスに適合するプリンタドライバを検索する検索手段と、
前記検索手段により前記出力デバイスに適合するプリンタドライバが検索された場合、当該出力デバイスを特定するための画面を表示する表示手段と、
を有することを特徴とする印刷制御装置。
【請求項2】
前記検索手段により前記出力デバイスに適合するプリンタドライバが検索されなかった場合、前記表示手段は当該出力デバイスに適合するプリンタドライバが見つからなかったことを更に表示することを特徴とする請求項1に記載の印刷制御装置。
【請求項3】
前記検索すべきプリンタドライバの検索場所には優先順位が付けられており、前記検索手段は当該優先順位に従って前記プリンタドライバを検索することを特徴とする請求項1に記載の印刷制御装置。
【請求項4】
前記プリンタドライバを検索する時間が予め設定されており、前記検索手段は当該設定された時間が終了するまで前記プリンタドライバを検索することを特徴とする請求項1に記載の印刷制御装置。
【請求項5】
前記表示手段により表示された画面でユーザにより特定された出力デバイスに対応するプリンタドライバをインストールするインストール手段と、
前記インストールされたプリンタドライバを他のユーザでもアクセスでき、且つ、前記プリンタドライバの検索に時間がかからない検索場所に設置できるか否かを判断する判断手段と、
前記判断手段により設置できる検索場所であると判断された場合、当該設置できる検索場所に前記プリンタドライバを格納する手段と、
を更に有することを特徴とする請求項1に記載の印刷制御装置。
【請求項6】
ユーザにより特定された出力デバイスに対応するプリンタドライバをインストールする印刷制御装置の表示方法であって、
取得手段が、ネットワーク内の出力デバイスを探索して出力デバイスのハードウェア情報を取得する取得工程と、
検索手段が、前記取得工程において取得された前記ハードウェア情報から前記出力デバイスに適合するプリンタドライバを検索する検索工程と、
表示手段が、前記検索工程において前記出力デバイスに適合するプリンタドライバが検索された場合、当該出力デバイスを特定するための画面を表示する表示工程と、
を有することを特徴とする印刷制御装置の表示方法。
【請求項7】
コンピュータを請求項1乃至5の何れか1項に記載の印刷制御装置の各手段として機能させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2011−257881(P2011−257881A)
【公開日】平成23年12月22日(2011.12.22)
【国際特許分類】
【出願番号】特願2010−130449(P2010−130449)
【出願日】平成22年6月7日(2010.6.7)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成23年12月22日(2011.12.22)
【国際特許分類】
【出願日】平成22年6月7日(2010.6.7)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]