(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1を含む既存の方法においては、仮想プリンタからアプリケーションに通知される印刷機能(仕様)の情報が、実際の印刷を行う物理プリンタの印刷機能と異なる独自の情報である。その結果、物理プリンタのハードウェアの仕様と異なる描画データがアプリケーションから出力され、期待とは異なる印刷結果となる可能性があった。例えば、仮想プリンタからアプリケーションに通知された印字領域を表す数値が、実際に印刷が行われる物理プリンタの印刷領域よりも大きい場合に、印刷結果の一部が正常に印刷されない可能性があった。
【0006】
本発明は、このような問題に鑑みてなされたものであり、仮想プリンタを通じて印刷する場合であっても、ユーザアプリケーションが期待する印刷結果を得ることを目的とする。
【課題を解決するための手段】
【0007】
上述した課題を解決し目的を達成するため、本発明の一実施形態における情報処理装置は、
対応するプリンタが認識可能な描画データを生成する印刷制御プログラムと、
アプリケーションから前記プリンタへの印刷要求を受け付ける要求受付手段と、
前記印刷制御プログラムから、前記プリンタの機能を表す機能情報を取得する情報取得手段と、
前記要求受付手段によって受け付けた前記印刷要求に応じ、前記情報取得手段によって取得した前記機能情報と
、用紙又は解像度の条件を設定するための情報が含まれる前記印刷制御プログラムが有していない拡張機能に関する拡張機能情報を前記アプリケーションに通知する機能通知手段と、
前記機能通知手段で通知した前記機能情報と前記拡張機能情報に基づ
く前記アプリケーションからの描画命令
から、前記印刷要求を行う印刷装置が対応する用紙サイズに応じた中間データ、又は該印刷装置が対応する解像度に応じた中間データを生成する中間データ生成手段と、を有し、
前記印刷制御プログラムは、
前記中間データに基づいて前記描画データを生成する。
【0008】
また、本発明の一実施形態におけるプログラムは、
アプリケーションから前記プリンタへの印刷要求を受け付ける要求受付段階と、
前記印刷制御プログラムから、前記プリンタの機能を表す機能情報を取得する情報取得段階と、
前記要求受付段階で受け付けた前記印刷要求に応じ、前記情報取得段階で取得した前記機能情報と
、用紙又は解像度の条件を設定するための情報が含まれる前記印刷制御プログラムが有していない拡張機能に関する拡張機能情報を前記アプリケーションに通知する機能通知段階と、
前記機能通知段階で通知した前記機能情報と前記拡張機能情報に基づ
く前記アプリケーションからの描画命令
から、前記印刷要求を行う印刷装置が対応する用紙サイズに応じた中間データ、又は該印刷装置が対応する解像度に応じた中間データを生成する中間データ生成段階と、を有し、
前記印刷制御プログラムに、
前記中間データに基づいて前記描画データを生成させる
をコンピュータに実行させる。
【0009】
また、本発明の一実施形態における記録媒体は、
対応するプリンタが認識可能な描画データを生成する印刷制御プログラムと通信するプログラムであって、
アプリケーションから前記プリンタへの印刷要求を受け付ける要求受付段階と、
前記印刷制御プログラムから、前記プリンタの機能を表す機能情報を取得する情報取得段階と、
前記要求受付段階で受け付けた前記印刷要求に応じ、前記情報取得段階で取得した前記機能情報と
、用紙又は解像度の条件を設定するための情報が含まれる前記印刷制御プログラムが有していない拡張機能に関する拡張機能情報を前記アプリケーションに通知する機能通知段階と、
前記機能通知段階で通知した前記機能情報と前記拡張機能情報に基づ
く前記アプリケーションからの描画命令
から、前記印刷要求を行う印刷装置が対応する用紙サイズに応じた中間データ、又は該印刷装置が対応する解像度に応じた中間データを生成する中間データ生成段階と、を有し、
前記印刷制御プログラムに、
前記中間データに基づいて前記描画データを生成させる
をコンピュータに実行させるためのプログラムを記憶したコンピュータ読み取り可能な記録媒体である。
【発明の効果】
【0010】
本発明によれば、仮想プリンタを通じて印刷する場合であっても、ユーザアプリケーションが期待する印刷結果を得ることができる。
【発明を実施するための形態】
【0012】
以下、本発明の実施形態を図面に基づいて説明する。
【0013】
1.概要
2.ハードウェア構成
3.機能ブロック
4.処理フロー
4.1 概要
4.2 物理プリンタの選択処理
4.3 機能通知処理
4.4 GUIの表示処理
4.5 印刷処理
【0014】
(1.概要)
最初に、
図1を用いて、本発明の一実施形態における情報処理装置の概要を説明する。
図1は、本発明の一実施形態における情報処理装置100のソフトウェア構成を表している。
【0015】
ユーザアプリケーションは、ユーザが、文書や画像のような印刷対象となるデータを作成するために用いられる。ユーザは、ユーザアプリケーションのGUI(Graphical User Interface)を通じて、印刷を行うプリンタ(又はプリンタドライバ)を選択する。そして、選択したプリンタのプリンタドライバが提供するGUIを通じて、用紙サイズのような各種設定を行い、印刷を指示する。ここで、ユーザは、印刷に使用するためのプリンタドライバとして、以下に述べる物理プリンタドライバ又は仮想プリンタドライバから選択することができる。また、ユーザアプリケーションは、OSを介して、プリンタドライバの機能情報(印字領域のようなハードウェア仕様に関する情報、及び、プリンタドライバがサポートする用紙サイズや解像度等の機能に関する情報を含む)を取得することができる。ユーザアプリケーションは、前記機能情報に基づいて印刷データを出力し、プリンタドライバを介して印刷を行う。
【0016】
OSは、情報処理装置100で実行される情報処理を制御する。OSは、ユーザアプリケーションが利用可能なプリンタのリストを保持する。また、ユーザアプリケーションから印刷の指示を受け、プリンタドライバを介して印刷処理を実行する。
【0017】
物理プリンタドライバは、ユーザアプリケーションから出力された印刷データを受け取り、対応する物理プリンタ110が認識可能な描画データを生成するための、印刷制御プログラムである。そして、物理プリンタ110に対して印刷処理を実行させることができる。物理プリンタドライバは、物理プリンタそのもののハードウェア仕様に関する情報に加えて、物理プリンタドライバがサポートする用紙サイズや解像度等の機能に関する情報を有する。
【0018】
仮想プリンタドライバは、物理プリンタドライバと異なり、特定の物理プリンタ110のみが読み取り可能な描画データを生成する代わりに、ハードウェアに依存しない汎用的な形式の中間データを生成する。例えば、中間データには、EMF、XPS、PDF(登録商標)のような形式がある。ユーザは、仮想プリンタドライバを用いて印刷処理を実行するのに先立って、実際に印刷を行うプリンタ110(又は対応する物理プリンタドライバ)を予め指定する。これにより、仮想プリンタドライバは、実際に印刷処理が行われるプリンタ110の機能を予め知ることができる。従って、仮想プリンタドライバは、ユーザアプリケーションに対して、物理プリンタ110の機能に基づいた情報を通知することができる。また、仮想プリンタドライバは、生成した中間データに対して所定の処理を施すことのできる再印刷アプリケーションについて、ユーザに選択させ、さらに設定させるGUIを表示することができる。また、仮想プリンタドライバは、使用する再印刷アプリケーションの選択及びその設定を行うためのGUIを提供する機能も有する。
【0019】
再印刷アプリケーションは、仮想プリンタドライバが生成した中間データを読み込み、データの加工や表示処理を行った後、物理プリンタドライバを通じて印刷する。再印刷アプリケーションの例として、中間データを画面上に表示してユーザに編集をさせた後に印刷を実行できるプレビューアプリケーションや、中間データに対して特定の描画オブジェクト(特定の文字列など)を追加又は削除して印刷するアプリケーションが含まれる。
【0020】
上記の通り、本発明の一実施形態における情報処理装置は、仮想プリンタドライバが、物理プリンタドライバの機能に基づく機能情報をユーザアプリケーションに通知することにより、ユーザアプリケーションが出力した通りの印刷結果を得ることができる。特に、ユーザアプリケーションは、物理プリンタドライバの印字領域に適合した印刷データを出力することができる。
【0021】
一方で、本発明の一実施形態における情報処理装置は、物理プリンタドライバが有していない機能を仮想プリンタドライバにより実現することもできる。特に、仮想プリンタドライバが、物理プリンタドライバのサポートする解像度より低い解像度にも対応し、その旨をユーザアプリケーションに通知することで、より多くの解像度での印刷が可能となる。
【0022】
(2.ハードウェア構成)
次に、
図2を用いて、本発明の一実施形態における情報処理装置100のハードウェア構成について説明する。
図2の情報処理装置100は、CPU200、RAM202、ROM204、HDD206、通信制御部208、通信装置210、表示制御部212、表示装置214、入力制御部216、入力装置218、出力制御部220、出力装置222及びバス224を有する。
【0023】
CPU200は、当該情報処理装置100の動作制御を行うプログラムを実行する。RAM202は、CPU200のワークエリアを構成する。ROM204は、CPU200が実行するプログラムやプログラムが使用するデータを記憶する。HDD(又はSSD)206は、当該情報処理装置100で用いられるユーザアプリケーション、再印刷アプリケーション、中間データ、物理プリンタドライバ、仮想プリンタドライバ及び設定ファイル等を記憶する。通信制御部208は、通信装置210を介して通信処理を実行する。通信装置210は、例えばイーサネット(登録商標)のネットワークインターフェースを有する装置である。表示制御部212は、当該情報処理装置100上で実行される、OS、ユーザアプリケーション、再印刷アプリケーション、物理プリンタドライバ又は仮想プリンタドライバの処理内容に合わせて、表示装置214に表示される内容を制御する。表示装置214は、例えば液晶ディスプレイやCRTディスプレイのようなディスプレイが含まれる。入力制御部216は、ユーザからの入力を受け付ける、例えばキーボード、マウスのような入力装置218からの信号を処理する。出力制御部218は、物理プリンタ110のような出力装置222への信号を処理する。バス224は、上記装置を電気的に接続する。
【0024】
上記構成により、本発明の一実施形態における情報処理装置は、仮想プリンタドライバを通じて、ユーザ又はユーザアプリケーションが期待する印刷結果を得ることができる。
【0025】
なお、HDD206は、テープドライブ又は光学ドライブを含むあらゆる記憶装置であってもよく、あるいは、ネットワークを介してアクセス可能なストレージ領域であってもよい。
【0026】
また、プリンタは、必ずしも出力装置222として当該情報処理100と接続されている必要はなく、通信制御部208又は通信装置210を介して、ネットワーク上でアクセス可能なように構成されてもよい。
【0027】
(3.機能ブロック)
次に、
図3を用いて、本発明の一実施形態における情報処理装置100の機能ブロックについて説明する。
図3の情報処理装置100は、要求受付手段300、物理プリンタ選択手段302、情報取得手段304、機能通知手段306、拡張機能設定手段308、拡張機能提供手段310、中間データ生成手段320、再印刷アプリケーション実行手段322、記憶手段324、再印刷アプリケーション334、通信手段342、表示手段344、入力手段346及び制御手段348を有する。ここで、
図3に示される点線は、仮想プリンタドライバ350として提供される機能の例を表す。
【0028】
要求受付手段300は、ユーザアプリケーションからの印刷要求を、OSを介して受け付ける。印刷要求が受け付けられると、中間データのためのメモリ領域が確保され、後述する中間データ生成手段320によって描画データが出力される。そして、再印刷アプリケーションによる処理が施された後、物理プリンタドライバを介して印刷処理がなされる。
【0029】
物理プリンタ選択手段302は、実際の印刷処理を行う物理プリンタ110を選択するためのGUIをユーザに提供する。このため、物理プリンタ選択手段302は、OSからプリンタ一覧を取得し、GUIを通じてユーザに提示する。ユーザは、例えば、
図6Aに示されるようなGUIを用いて、プリンタを選択することができる。このユーザによる物理プリンタの選択は、ユーザがユーザアプリケーションに対して印刷を指示する前に、予めなされている必要がある。
【0030】
情報取得手段304は、物理プリンタ選択手段302で選択されたプリンタに対応する物理プリンタドライバから、機能情報を取得する。取得される機能情報には、物理プリンタのハードウェア仕様(例えば、物理プリンタの印字領域等)と物理プリンタドライバが提供する機能(例えば、用紙サイズ又は解像度等)が含まれる。
【0031】
機能通知手段306は、OSを介してユーザアプリケーションから要求に応じて、情報取得手段304により物理プリンタドライバから取得した機能情報を通知する。あるいは、機能通知手段306は、物理プリンタドライバから取得した機能情報に、後述する拡張機能提供手段310によって提供される拡張機能の情報を加えた情報を通知する。ユーザアプリケーションからの要求に対して、何れの情報を通知するかは、機能情報の種類に依存して決定される。機能情報のうち、物理プリンタのハードウェア仕様に関する情報(以下、「ハードウェア仕様情報」とする。)については、物理プリンタドライバから取得した機能情報をそのまま通知する必要がある。この機能情報がユーザアプリケーションに正しく通知されなければ、ユーザアプリケーションが物理プリンタに適合した印刷データを出力できない可能性があるためである。一方、物理プリンタドライバが提供する機能情報(以下、「物理プリンタドライバの機能情報」とする。)は、拡張機能提供手段310によって提供される拡張機能と組み合わせて通知され得る。物理プリンタドライバが提供する機能が、物理プリンタのハードウェア仕様に依存せず、画像処理によるものであれば、拡張機能提供手段310の拡張機能によって拡張することができるためである。
【0032】
拡張機能設定手段308は、後述する拡張機能提供手段310によって提供される拡張機能を設定するためのGUIをユーザに提供する。当該GUIの例を
図6Bに示す。
図6Bは、
図6Aにおける物理プリンタを選択する画面内に、物理プリンタドライバの機能を拡張する拡張機能を表示した例である。
図6Bの例では、用紙サイズと解像度に関する拡張機能の設定項目が表示されている。用紙サイズの拡張機能とは、選択した物理プリンタドライバが対応していない用紙サイズを指定可能にするものであり、ユーザは、ドロップダウンリストから、所望の用紙サイズを選択できる。また、解像度の拡張機能とは、物理プリンタドライバが対応していない解像度を指定可能にするものであり、ユーザは、ドロップダウンリストから、所望の解像度を選択することができる。例えば、物理プリンタドライバがサポートする解像度が、「300x300」、「600x600」及び「1200x1200」であって、後述する解像度変更手段314がさらに「72x72」及び「150x150」の解像度をサポートする場合に、当該拡張機能設定手段308は、「72x72」、「150x150」、「300x300」、「600x600」、「1200x1200」の機能を設定可能とする。
【0033】
拡張機能提供手段310は、用紙サイズ変更手段312、解像度変更手段314及び色数変更手段316のような、物理プリンタドライバが提供する機能を拡張する拡張機能をユーザアプリケーションに提供する。
【0034】
用紙サイズ変更手段312は、物理プリンタドライバが対応しない用紙サイズの指定を可能にする。用紙サイズ変更手段312は、指定された用紙サイズに最も近い物理プリンタの用紙サイズに合わせて、印刷データの拡大又は縮小を行い、印刷処理を行う。
【0035】
解像度変更手段314は、物理プリンタドライバが対応していない解像度による印刷を可能にする。解像度変更手段314は、物理プリンタの対応する解像度に合わせて、印刷データの解像度の変倍処理を行う。変倍率は、例えば、物理プリンタドライバがサポートする解像度の中から、元画像の整数倍で、なおかつ最も近い値の解像度に変倍するように決定され得る。あるいは、そのような解像度が存在しない場合には、最も近い解像度に変倍するように変倍率を決定してもよい。
【0036】
色数変更手段316は、物理プリンタドライバが対応していない色数による印刷を可能にする。解像度変更手段314は、物理プリンタの対応する色数に合わせて、印刷データの解像度の増色又は減色処理を行う。
【0037】
中間データ生成手段320は、設定された拡張機能に基づいて、ユーザアプリケーションから出力された印刷データを中間データとして生成する。中間データには、EMF(Enhanced Metafile)、XPS(XML Paper Specification)、PDF(登録商標)のような形式がある。
【0038】
再印刷アプリケーション実行手段322は、ユーザによって指定され、設定された再印刷アプリケーションを実行する。ユーザによる再印刷アプリケーションの指定は、例えば
図11Aに示されるGUIを通じて、予め行われる。また、再印刷アプリケーションの設定は、例えば
図11Bに示されるGUIを通じて、予め行われる。ただし、再印刷アプリケーションの種類によっては、設定を有さないものもある。再印刷アプリケーション実行手段322は、処理すべき中間データと上記設定とを指定して、再印刷アプリケーションを起動する。
【0039】
記憶手段324は、物理プリンタ情報326、拡張機能情報328、再印刷アプリケーション情報330、中間データ332を記憶し、当該情報処理装置100で用いられる設定ファイルやデータを記憶する。なお、記憶手段324の大部分は、仮想プリンタドライバ350内に含まれるように図示されているが、必ずしも仮想プリンタドライバ350に関わるデータのみを記憶するものではなく、当該情報処理装置100に係るデータ全てを記憶し得る。
【0040】
物理プリンタ情報326は、機能取得手段304によって取得された、特定の物理プリンタの機能情報を含む。
【0041】
拡張機能情報328は、拡張機能提供手段310によって提供される拡張機能の情報を含む。
図12は、解像度変更手段314による拡張機能を定義した例であり、JSON形式で記述されている。この拡張機能情報においては、仮想プリンタドライバは、物理プリンタドライバの解像度に加えて、「72x72」と「150x150」の解像度(DPI)が利用可能であることを示す。
【0042】
再印刷アプリケーション情報330は、当該情報処理装置100で利用可能な再印刷アプリケーションのリストと各再印刷アプリケーションの設定情報を含む。
図13は、再印刷アプリケーション情報330の例を表す。
図13において、「ReplayApp」が一つの再印刷アプリケーションを表し、「AppName」が再印刷アプリケーションの名前を、「ExePath」が再印刷アプリケーションの実行可能ファイルのパスを、「ConfPath」が再印刷アプリケーションの設定ファイルのパスを示している。ここでは、再印刷アプリケーション情報330が、INIファイルとして提供される例を示したが、これに限定されない。例えば仮想ドライバのパッケージに含まれるテキストファイルによって提供されてもよいし、所定の位置のレジストリに登録されて提供されてもよい。再印刷アプリケーション情報330で指定された内容は、再印刷アプリケーション実行手段322によって読み込まれ、
図11Aのような再印刷アプリケーション選択画面を表示するために使用される。
【0043】
中間データ332は、要求受付手段300がユーザアプリケーションからの印刷要求を受付けることによって初期化され、中間データ生成手段320によって出力される、物理プリンタが読み取り可能な描画データを含む。中間データの描画データのフォーマットは、上述したように、例えばEMF、XPS、PDF(登録商標)のような形式であるが、これに限定されない。また、中間データ332は、再印刷アプリケーションによって施されるべき処理内容を記述した設定ファイルを含み得る。
図4Bは、中間データの構成例を表す。
【0044】
再印刷アプリケーション330は、プレビューアプリケーション336、不要データ削除アプリケーション338及びラベル付加アプリケーション340を含み、生成された中間データ332に対する処理を行い、物理プリンタドライバを介して印刷処理を実行する。再印刷アプリケーション330は、再印刷アプリケーション実行手段322によって、処理すべき中間データと、処理内容を記述した設定ファイルとを指定されて、起動される。
図4Aは、再印刷アプリケーション330の構成の例を表す。再印刷アプリケーション330は、実行可能ファイルと設定ファイルから構成される。実行可能ファイルと設定ファイルのパス情報は、上述した再印刷アプリケーション330に保管される。
【0045】
ここで、再印刷アプリケーション330の設定ファイルについて説明する。
図14は、再印刷アプリケーション330の設定ファイルの一例であり、JSONフォーマットで記述されたテキストファイルである。再印刷アプリケーション330の設定ファイルには、再印刷アプリケーション実行手段322が、再印刷アプリケーション330を実行するために必要な情報が記述される。この例では、再印刷アプリケーション330の起動モードを指定する「mode」と、GUIを通じたユーザによる設定を必要とする項目である「gui」が記述される。「mode」には、「sync」又は「async」を指定することができる。これによって、再印刷アプリケーション330が、同期モードで起動するか、非同期モードで起動するかを指定することができる。これらのモードの動作については後述する。「gui」には、GUIを通じて設定が必要な項目が記述される。「name」には、その設定の名前を示す文字列が記述される。「type」には、その設定の種類を示す文字列が記述され、例えば「text」(文字列型)、「pickone」(選択肢型)、「boolean」(論理値型)等が記述される。「caption」には、設定項目に関する説明文が記述される。ユーザによって設定された値は、中間データ332の設定ファイルとして記録される(
図4B)。そして、該設定ファイルは、再印刷アプリケーション330が起動する際に読み込まれる。
図14の例は、
図13における「不要データ削除」(再印刷)アプリケーションの設定ファイル(「config.json」)の内容を示している。「不要データ削除」アプリケーションは、同期モードで動作し、GUIによる設定画面上で、「trimmed_text」という名前の、文字列型の設定を受付ける設定項目を有している。前記設定ファイルに対応するGUIの例を
図11Bに示す。また、設定項目「trimmed_text」に対する「あいうえお」というユーザの設定がなされた場合に生成される、中間データ332の設定ファイルの例を
図15に示す。なお、「gui」の設定項目を持たない再印刷アプリケーション330については、設定画面に関する上記GUIを生成しない。
【0046】
プレビューアプリケーション336は、中間データを表示装置214に表示し、ユーザに所定の編集をさせた上で、物理プリンタからの印刷を実行する。所定の編集とは、文字列の追加や削除、画像又は図形に対する画像処理を含む。
【0047】
不要データ削除アプリケーション338は、ユーザによって指定された所定の文字列を、中間データから削除する。所定の文字列の指定方法の例を
図11Bに示す。
【0048】
ラベル付加アプリケーション340は、当該情報処理装置100の管理者によって予め指定された所定の文字列又は画像(ラベル)を、中間データの所定の位置に付加する。所定のラベルとは、例えば「機密情報」や「Confidential」のようなラベルを含む。一般的に、このようなラベルの付加は、一般のユーザの意図と関係なく付加されるため、GUIを通じた設定は不要である。
【0049】
通信手段342は、当該情報処理装置100が有線LAN又は無線LANのようなネットワークを通じて、外部の装置又は物理プリンタと通信するために用いられる。
【0050】
表示手段344は、上述したGUIに加えて、当該情報処理装置100で動作するユーザアプリケーション、再印刷アプリケーション又はOSのGUIを表示装置214上に表示するために用いられる。
【0051】
入力手段346は、上述したGUIを通じて入力されたユーザからの入力情報を処理するために用いられる。
【0052】
制御手段348は、当該情報処理装置100における処理を制御するために用いられる。
【0053】
上記構成により、本発明の一実施形態における情報処理装置は、物理プリンタドライバのハードウェア仕様情報をユーザアプリケーションに通知することで、ユーザアプリケーションが出力した通りの印刷結果を得ることができる。
【0054】
一方で、物理プリンタドライバによって提供されない機能に、仮想プリンタドライバの拡張機能を加えた機能を、ユーザアプリケーションに提供することができる。
【0055】
(4.処理フロー)
次に、本発明の一実施形態における情報処理装置100の処理フローについて説明する。
【0056】
(4.1 概要)
図5は、本発明の一実施形態における情報処理装置100の処理フローの概要を表す。
ユーザは、予め、物理プリンタ選択手段302を通じて、実際に印刷を行う物理プリンタを選択しておく(4.2節)。
ユーザアプリケーションは、OSを通じて、当該仮想プリンタドライバ350の機能情報を取得する。そこで、情報取得手段304は、予め選択された物理プリンタに対応する物理プリンタドライバから機能情報を取得する。そして、情報通知手段306は、取得した機能情報(ハードウェア仕様情報)又は物理プリンタドライバが提供する機能情報に拡張機能の情報を加えた情報をユーザアプリケーションに返す(4.3節)。
また、ユーザは、仮想プリンタドライバの拡張機能設定手段308及び再印刷アプリケーション実行手段322によって表示されたGUIを通じて、使用する機能及び再印刷アプリケーションの設定を行う(4.4節)。
ユーザアプリケーションは、通知された機能情報に基づいて、印刷データを出力する。仮想プリンタドライバの中間データ生成手段320は、ユーザにより設定された拡張機能の設定に基づいて、前記印刷データから中間データを生成する。そして、仮想プリンタドライバの再印刷アプリケーション実行手段322が、ユーザによって指定された再印刷アプリケーション334を起動する。再印刷アプリケーション334は、中間データ及び中間データの設定ファイルを読み込み、中間データに対して所定の処理を施した後、OSを通じて物理プリンタドライバに印刷を指示する(4.5節)。
【0057】
(4.2 物理プリンタの選択処理)
図6Aは、物理プリンタ選択手段302によって表示されるGUIの例である。この例では、情報処理装置100で利用可能な物理プリンタのリストが、ドロップダウンリストによって表示されている。ユーザは、リストの中から、印刷に使用する物理プリンタを選択することができる。
【0058】
図7は、
図6Aに表示される物理プリンタのリストの取得処理と、ユーザによる物理プリンタの選択がなされた場合の処理を説明する図である。
【0059】
物理プリンタ選択手段302は、ユーザアプリケーションからOSを通じてGUIの表示指示を受けると(ステップS700、S702)、OSから物理プリンタのリストを取得し(ステップS704)、物理プリンタのリストを「出力するプリンタ」として表示する(ステップS706)。また、ユーザが「出力するプリンタ」から物理プリンタ名を選択すると、OS経由でその情報が仮想プリンタドライバ350に送られる(ステップS750)。選択された物理プリンタ名は、記憶手段324に記憶される(ステップS752)。
【0060】
以上の処理により、本発明の一実施形態における情報処理装置の仮想プリンタドライバは、ユーザ又はユーザアプリケーションがどの物理プリンタで印刷を行うかを、予め知ることが可能になる。
【0061】
(4.3 機能通知処理)
図8は、ユーザアプリケーションから仮想プリンタドライバ350の機能情報要求がなされた場合の処理フローを表す。ユーザアプリケーションは、OSを介して、仮想プリンタドライバ350に機能情報を要求する(ステップS800〜S802)。これに対して、仮想プリンタドライバ350の情報取得手段304は、予め選択された物理プリンタに対応する物理プリンタドライバから、機能情報を取得する(ステップS804、S806)。ここで、既に述べたように、機能情報には、ハードウェア仕様情報と物理プリンタドライバの機能情報が含まれる点に留意する。情報取得手段304は、さらに、拡張機能提供手段310によって提供される拡張機能のリストである拡張機能情報328を読み込む(ステップS808)。そして、機能通知手段306は、ハードウェア仕様情報又は物理プリンタドライバの機能情報に拡張機能の情報を含めた情報を、ユーザアプリケーションに通知する(ステップS810−814)。
【0062】
ここで、ステップS800に対応する処理は、例えばWindows(登録商標)では、ユーザアプリケーションがGetDeviceCaps又はDeviceCapabilities APIを呼び出すことに対応する。前者は、印字領域の情報を含む、物理プリンタドライバから物理プリンタのハードウェア仕様情報を取得するためのAPIであり、後者は、物理プリンタドライバの機能情報を取得するためのAPIである。従って、情報通知手段306は、前者のAPIによる呼び出しに対しては、ハードウェア仕様情報をそのまま通知することが望ましい。一方、情報通知手段306は、後者のAPIによる呼び出しに対しては、物理プリンタドライバの機能情報と拡張機能提供手段310によって提供される拡張機能を組み合わせて通知し得る。
【0063】
以上の処理により、本発明の一実施形態における情報処理装置の仮想プリンタドライバは、物理プリンタのハードウェア仕様情報又は物理プリンタドライバの機能を拡張した機能の情報をユーザアプリケーションに通知することができる。
【0064】
(4.4 機能設定処理)
図9を用いて、
図11A、11Bに示される、再印刷アプリケーションの選択と設定を行うためのGUIを表示するための処理について説明する。ここで、
図6A、11A、11Bに示されるように、物理プリンタの選択画面、再印刷アプリケーションの選択画面及び設定画面は、同一のウィンドウ内の異なるタブとして実装され得る。
【0065】
まず、ユーザは、ユーザアプリケーションに対して、印刷設定のGUI表示を指示する(ステップS900)。次に、ユーザアプリケーションは、OSを経由して、印刷設定のGUI表示指示を仮想プリンタドライバ350に送る(ステップS902及び/又はステップS950)。これを受けて、再印刷アプリケーション実行手段322は、再印刷アプリケーション情報330を読み込み、利用可能な再印刷アプリケーションの一覧を作成し、再印刷アプリケーションの選択画面を生成する(ステップS904、S906)。また、再印刷アプリケーション実行手段322は、それぞれの再印刷アプリケーションの設定画面を生成するために、それぞれの再印刷アプリケーションの設定ファイルを読み込む(ステップS908、S910)。ここで、前述したように、それぞれの再印刷アプリケーションの設定ファイルに「gui」の設定項目が含まれる場合にのみ、設定画面が表示される点に留意する。再印刷アプリケーション情報330の一例は
図13に、再印刷アプリケーション設定ファイルの一例は
図14にそれぞれ示されている。
【0066】
また、ユーザアプリケーションから、印刷設定のGUI表示指示を受けて、情報取得手段304は、物理プリンタドライバから機能情報を取得する(ステップS950〜S954)。また、情報取得手段304は、拡張機能情報328を読み込み、拡張機能提供手段328が提供する拡張機能の情報を取得する(ステップS956)。そして、拡張機能設定手段308は、物理プリンタドライバから取得した機能情報に前記拡張機能の情報を追加し、設定画面であるGUIを表示する(ステップ958、960、
図6B)。ここで、当該設定画面には、物理プリンタドライバの機能情報に拡張機能の情報を加えたもののみを表示してもよい。これは、ユーザが設定可能な設定項目として、ハードウェア仕様情報に関する項目を含むことは適切でない可能性があるためである。
【0067】
以上の処理により、本発明の一実施形態における情報処理装置の仮想プリンタドライバは、再配布アプリケーション又は当該仮想プリンタドライバの拡張機能の設定を行うことができる。
【0068】
(4.5 印刷処理)
図10A、10Bは、ユーザによる拡張機能の設定並びに再配布アプリケーションの選択及び設定後に、ユーザアプリケーションが、仮想プリンタドライバ350を通じて印刷を実行する処理を表す。ここで、
図10Aは、同期モードで動作する再配布アプリケーション334についての実行処理を表し、
図10Bは、非同期モードで動作する再配布アプリケーション334についての実行処理を表す。上で述べたように、再印刷アプリケーション設定ファイルにおいて、「mode」の値が「sync」であれば同期モードを表し、「async」であれば非同期モードを表す。同期モードでは、中間データ生成手段320が、中間データの描画データを全ページ出力してから、再印刷アプリケーション334を起動する。一方、非同期モードでは、中間データ生成手段320が、中間データの描画データの出力を開始した時点で、再印刷アプリケーション334を起動する。非同期モードでは、再印刷アプリケーション334は、中間データの描画データをポーリングしながら、データを読み込むことになる。
【0069】
まず、
図10Aを用いて、同期モードでの動作について説明する。まず、ユーザが、ユーザアプリケーションに対して印刷の指示を行うと、ユーザアプリケーションは、OS経由で印刷開始通知を要求受付手段300に送る(ステップS1000、S1002)。次に、要求受付手段300は、中間データの描画データを格納するファイルを、一時ファイルとして生成する(ステップS1004)。次に、ユーザアプリケーションは、描画命令をOS経由で仮想プリンタドライバ350に送る(ステップS1010、S1012)。中間データ生成手段320は、ステップS1004で生成した一時ファイルに対して、描画データを変換して書き込む(ステップS1014、S1016)。ここで、ユーザにより設定された拡張機能の設定に基づいた、拡張機能提供手段310による処理も行われる。そして、ユーザアプリケーションによる描画が完了するまで、ステップS1010〜S1016に対応する処理を繰り返す(ステップS1020〜S1026)。ユーザアプリケーションによる描画が完了すると、ユーザアプリケーションは、OS経由で、印刷終了通知を仮想プリンタドライバ350に送る。印刷終了通知を受け取ると、再印刷アプリケーション実行手段1034は、中間データの描画データ及び設定ファイルをパラメータとして、再印刷アプリケーション334を起動する(ステップS1034〜1036)。再印刷アプリケーション334は、パラメータで指定された中間データの設定ファイルを読み込み、以後、その設定に従って動作する(ステップS1038、S1040)。例えば、
図11B、
図15で示した不要データ削除アプリケーション338の例では、中間データの描画データから、「あいうえお」の文字列を削除し、物理プリンタドライバに送信する。再印刷アプリケーション334による処理が完了すると、中間データ設定ファイルを削除する(ステップS1042)。そして、再印刷アプリケーション334に対するユーザの印刷指示により、処理された描画データをOS経由で物理プリンタドライバに送信し、その後物理プリンタより印刷が開始される(ステップS1044、1046)。物理プリンタドライバへ描画データが送信されると、再印刷アプリケーション334は、中間データの描画データを削除する(ステップS1048)。
【0070】
以上の処理により、ユーザアプリケーションは、物理プリンタドライバのハードウェア仕様情報と仮想プリンタドライバの拡張機能の情報に基づいて描画データを出力することができる。また、再印刷アプリケーションにより、描画データに対する追加の処理を施した後に、物理プリンタから印刷を実行することができる。
【0071】
次に、
図10Bを用いて、非同期モードでの動作について説明する。同期モードと同様に、ユーザは、ユーザアプリケーションに対して印刷の指示を行う。ステップS1050〜S1054は、
図10AにおけるステップS1000〜S1004と同様である。次に、再印刷アプリケーション実行手段322は、中間データの描画データと設定ファイルとをパラメータとして、再印刷アプリケーション334を起動する(ステップS1056、1058)。再印刷アプリケーション334は、パラメータで指定された中間データの設定ファイルを読み込み、以後、その設定に従った動作をする。次に、再印刷アプリケーション334は、中間データ設定ファイルを削除する(ステップS1060)。その後、再印刷アプリケーション334は、一定間隔毎に中間データの描画データをポーリングし、前回との差分を読み込み、処理を行う(ステップS1078、S1086)。一方、ユーザアプリケーションは、描画命令をOS経由で仮想プリンタドライバ350に送る(S1070)。中間データ生成手段320による描画処理であるステップS1072〜1076は、
図10AにおけるステップS1012〜S1016と同様である。そして、中間データ生成手段320は、
図10AにおけるステップS1020〜S1026と同様に、描画が完了するまで処理を繰り返す(ステップS1080〜S1084)。ユーザアプリケーションによる描画が完了すると、ユーザアプリケーションは、OS経由で、印刷終了通知を送る(ステップS1090、S1092)。その後、要求受付手段300は、中間データの出力が完了したことを再印刷アプリケーション334に通知する(ステップ1094)。該通知を受けた再印刷アプリケーション334は、残りの中間データを読み込み、所定の処理を行った後、OSを介して物理プリンタドライバに対して印刷を指示する(ステップS1096〜S1100)。最後に、中間データの描画データの一時ファイルを削除する(ステップS1102)。
【0072】
以上の処理により、ユーザアプリケーションは、物理プリンタドライバのハードウェア仕様情報と仮想プリンタドライバの拡張機能の情報に基づいて描画データを出力することができる。また、中間データの描画処理と非同期に動作する再印刷アプリケーションにより、描画データに対して追加の処理を逐次施した後に、物理プリンタから印刷を実行することができる。