(57)【要約】【課題】異なる形式の印刷データが共存する環境において、ユーザの意図通りの出力結果が得られなくなるケースを軽減すること。【解決手段】情報処理装置は、第１形式描画データをサポートするプリンタドライバと、該プリンタドライバが未サポートの第２形式描画データを、該プリンタドライバが解釈可能なデータに変換する仮想プリンタドライバと、第２形式描画データを生成するアプリケーションと、を有する。アプリケーションは、出力先に指定されたプリンタに対応するプリンタドライバが第２形式描画データをサポートしない場合、該指定されたプリンタドライバの能力情報のうちサイズ情報をＰＴに書き込む。仮想プリンタドライバは、ＰＴ内のサイズ情報に基づき、第２形式描画データを、プリンタドライバが解釈可能なデータに変換する。指定されたプリンタドライバは、変換されたデータに基づいてページ記述言語データを生成する。【選択図】図４
2019207461.tif 000002
【特許請求の範囲】
【請求項１】
第１の形式の描画データをサポートするプリンタドライバと、該プリンタドライバがサポートしない第２の形式の描画データを、該プリンタドライバが解釈可能なデータに変換する仮想プリンタドライバと、前記第２の形式の描画データを生成するアプリケーションと、を有する情報処理装置であって、
前記アプリケーションは、出力先に指定されたプリンタに対応するプリンタドライバが前記第２の形式の描画データをサポートしない場合、該指定されたプリンタドライバの能力情報のうちサイズ情報を、プリントチケットに書き込む手段を有し、
前記仮想プリンタドライバは、前記アプリケーションから受け取った前記プリントチケットに書き込まれている前記サイズ情報に基づき、前記第２の形式の描画データを、前記プリンタドライバが解釈可能なデータに変換する変換手段を有し、
前記指定されたプリンタドライバは、前記変換手段によって変換されたデータに基づいて、ページ記述言語データを生成する生成手段を有することを特徴とする情報処理装置。
【請求項２】
前記アプリケーションは、前記指定されたプリンタに対応するプリンタドライバが前記第１の形式の描画データをサポートするか判定する判定手段と、該判定手段による判定結果が真の場合、該プリンタドライバの能力情報を取得する取得手段と、を更に有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記アプリケーションは、前記判定手段による判定結果が偽の場合、前記指定されたプリンタドライバに対し、前記第２の形式の描画データを出力する出力手段を更に有することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記第１の形式の描画データをサポートするプリンタドライバは、ＥＭＦファイルをサポートするＧＤＩプリンタドライバであり、
前記仮想プリンタドライバは、ＸＰＳファイルをサポートするＸＰＳプリンタドライバであることを特徴とする請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
前記仮想プリンタドライバは、受け取ったＸＰＳファイルを出力する出力手段を更に有し、
アプリケーションから受け取ったプリントチケットに書き込まれている情報に基づき、前記変換手段による変換と、前記出力手段による出力との何れかを実行することを特徴とする請求項１乃至４の何れか１項に記載の情報処理装置。
【請求項６】
前記仮想プリンタドライバは、
印刷データの妥当性の検証処理を実行する前に、前記プリントチケットに書き込まれているサイズ情報を退避させる手段と、
前記検証処理を実行した後、前記検証処理により生成されたプリントチケットに前記退避させたサイズ情報を書き戻す手段と、
を更に有することを特徴とする請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項７】
前記サイズ情報は、用紙サイズと、描画領域サイズと、解像度と、オフセットとの各情報を含み、
前記描画領域サイズの情報は、描画領域の縦幅と横幅との各値から成ることを特徴とする請求項１乃至６の何れか１項に記載の情報処理装置。
【請求項８】
第１の形式の描画データをサポートするプリンタドライバと、該プリンタドライバがサポートしない第２の形式の描画データを、該プリンタドライバが解釈可能なデータに変換する仮想プリンタドライバと、前記第２の形式の描画データを生成するアプリケーションと、を有する情報処理装置の制御方法であって、
前記アプリケーションによる、出力先に指定されたプリンタに対応するプリンタドライバが前記第２の形式の描画データをサポートしない場合、該指定されたプリンタドライバの能力情報のうちサイズ情報を、プリントチケットに書き込むステップと、
前記仮想プリンタドライバによる、前記アプリケーションから受け取った前記プリントチケットに書き込まれている前記サイズ情報に基づき、前記第２の形式の描画データを、前記プリンタドライバが解釈可能なデータに変換するステップと、
前記指定されたプリンタドライバによる、前記変換するステップにおいて変換されたデータに基づいて、ページ記述言語データを生成するステップと、
を有することを特徴とする制御方法。
【請求項９】
コンピュータに、請求項８に記載の方法を実行させるための、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、その制御方法、及びプログラムに関する。
【背景技術】
【０００２】
Ｍｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（登録商標）をＯＳとするホストコンピュータ上のアプリケーションから画像や文書をプリンタで印刷する場合、図１に示すような印刷フローが一般的である。アプリケーション１０２は描画データをスプールファイルへ変換した上でスプーラ１０４に渡し、スプーラ１０４は格納されたスプールファイルをプリンタドライバ１０６に渡す。プリンタドライバ１０６はスプールファイルをプリンタ言語に基づいたページ記述言語（ＰＤＬ）で記述されたデータ（ページ記述言語データ、ＰＤＬデータ等と呼ぶ）に変換し、プリンタ１１０へと送る。プリンタ１１０は、送られたＰＤＬデータに基づき印刷を実行する。
【０００３】
上述の印刷フローにおいて、スプーラ１０４により格納されるスプールファイルの形式は複数種類存在し、ホストコンピュータ１００上のアプリケーションが扱う印刷データ形式の種類がアプリケーション毎に異なる構成が存在する。例えば、図２に示すように、Ｗｉｎ３２アプリケーション２１０では、ＥＭＦ（Ｅｎｈａｎｃｅｄ  Ｍｅｔａｆｉｌｅ）と呼ばれるデータ形式で記述されたスプールファイル（ＥＭＦファイル）２１１を用いて、ＧＤＩプリンタドライバ２１２を介する印刷が行われる。また、ＷＰＦアプリケーション２２０では、ＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）と呼ばれるデータ形式で記述されたスプールファイル（ＸＰＳファイル）２２１を用いて、ＸＰＳプリンタドライバ２２２を介する印刷が行われる。
【０００４】
また、ＥＭＦファイルをＸＰＳファイルに変換したり、ＸＰＳファイルをＥＭＦファイルに変換したりするといったように、ＥＭＦファイル及びＸＰＳファイルはＯＳの変換処理により双方向に変換することができる。従って、Ｗｉｎ３２アプリケーション２１０からＧＤＩ⇒ＸＰＳ変換部２３０を経由してＸＰＳプリンタドライバ２２２にデータを渡すことが可能である。また、ＷＰＦアプリケーション２２０からＸＰＳ⇒ＧＤＩ変換部２４０を経由してＧＤＩプリンタドライバ２１２にデータを渡すことが可能である。
【０００５】
しかし、ＥＭＦ形式とＸＰＳ形式とでは、サポートしている描画命令が異なるため、どちらか一方でしかサポートされていない描画命令を変換した場合、画質の低下や一部情報が欠落する可能性があり、ユーザの意図通りの出力結果を得られないという問題がある。特許文献１は、状況に応じてＸＰＳドライバのインストールまたはＧＤＩドライバのインストールを推奨する技術を開示している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−１０４８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、特許文献１では、推奨に従ってユーザがプリンタドライバをインストールしない場合、上述したユーザの意図通りの出力結果を得られないという問題を解決することが困難となるおそれがあった。
【０００８】
本発明は、上記の課題に鑑み、異なる形式の印刷データが共存する環境において、ユーザの意図通りの出力結果が得られなくなるケースを軽減することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、第１の形式の描画データをサポートするプリンタドライバと、該プリンタドライバがサポートしない第２の形式の描画データを、該プリンタドライバが解釈可能なデータに変換する仮想プリンタドライバと、前記第２の形式の描画データを生成するアプリケーションと、を有する情報処理装置であって、前記アプリケーションは、出力先に指定されたプリンタに対応するプリンタドライバが前記第２の形式の描画データをサポートしない場合、該指定されたプリンタドライバの能力情報のうちサイズ情報を、プリントチケットに書き込む手段を有し、前記仮想プリンタドライバは、前記アプリケーションから受け取った前記プリントチケットに書き込まれている前記サイズ情報に基づき、前記第２の形式の描画データを、前記プリンタドライバが解釈可能なデータに変換する変換手段を有し、前記指定されたプリンタドライバは、前記変換手段によって変換されたデータに基づいて、ページ記述言語データを生成する生成手段を有することを特徴とする情報処理装置である。
【発明の効果】
【００１０】
本発明により、異なる形式の印刷データが共存する環境において、ユーザの意図通りの出力結果が得られなくなるケースを軽減することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】一般的な印刷フローの説明図。
【図２】形式の異なる印刷データが共存する場合の印刷フローの説明図。
【図３】第１の実施形態における印刷システムのブロック図。
【図４】第１の実施形態における情報処理装置の機能構成（ソフトウェア構成）を示すブロック図。
【図５】第１の実施形態におけるアプリケーションの動作を表すフローチャート。
【図６】用紙サイズと描画領域との関係を示す図。
【図７】第１の実施形態におけるプリントチケットを示す図。
【図８】第１の実施形態における仮想プリンタドライバの動作を表すフローチャート。
【図９】第１の実施形態における仮想プリンタドライバ動作後のアプリケーションの動作を表すフローチャート。
【図１０】第２の実施形態における情報処理装置の機能構成（ソフトウェア構成）を示すブロック図。
【図１１】第２の実施形態におけるプリントチケットを示す図。
【図１２】第２の実施形態における仮想プリンタドライバの動作を表すフローチャート。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明における実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものではなく、以下の実施形態で説明されている特徴の組み合わせのすべてが本発明の課題解決に必須のものとは限らない。
【００１３】
［第１の実施形態］
＜情報処理装置のハードウェア構成について＞
以下、本実施形態における印刷システムについて、図３を用いて説明する。図示するように、印刷システムは、情報処理装置３００と、情報処理装置３００に接続された印刷装置（プリンタ）３２０とで構成される。情報処理装置として例えば、コンピュータが挙げられるので、以下、情報処理装置をＰＣと略記する。
【００１４】
ＰＣ３００は、ＣＰＵ３０１、ＲＯＭ３０２、ＲＡＭ３０３、外部記憶装置３０４、入力インターフェース（以下、インターフェースをＩＦと略記する）３０５、出力ＩＦ３０６、及び入出力ＩＦ３０７を有する。これらのコンポーネントはバス３０８を介して接続されており、互いにデータを送信又は受信することができる。
【００１５】
ＲＯＭ３０２には、初期化のためのプログラムやデータが保存されている。外部記憶装置３０４には、アプリケーションプログラム群、ＯＳ（Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍの略）、プリンタドライバ、仮想プリンタドライバ、及びその他各種のデータが保存されている。ＲＡＭ３０３は、データを一時的に保存するための媒体であり、ＣＰＵ３０１のメインメモリ、ワークエリアとして機能する。具体的には、ＣＰＵ３０１は、ＲＯＭ３０２や外部記憶装置３０４に保存されたプログラムをＲＡＭ３０３に展開し、該展開したプログラムを実行する。これにより、後述するソフトウェアのモジュール（図４参照）を実現したり、後述するフローチャートの処理（図５、図８、図９参照）を実行したりする。
【００１６】
印刷装置３２０は、ＣＰＵ３２１、ＲＯＭ３２２、ＲＡＭ３２３、プリントエンジン３２４、及び入出力ＩＦ３２５を有する。入出力ＩＦ３２５は、ＰＣ３００の入出力ＩＦ３０７と接続され、ＰＣ３００と印刷装置３２０との間におけるデータの送受信を可能としている。ＲＡＭ３２３は、ＣＰＵ３２１のメインメモリ、ワークメモリとして機能する。例えば、ＲＡＭ３２３は、受信した印刷ジョブを一旦保存するための受信バッファや各種データの一時保存先として用いられる。プリントエンジン３２４は、ＲＡＭ３２３に保存されたデータに基づき印刷を行う。ＲＯＭ３２２には、制御プログラムや各種データが保存されており、ＣＰＵ３２１は、この制御プログラムに従って、印刷装置３２０の各コンポーネントを統括的に制御する。
【００１７】
＜情報処理装置のソフトウェア構成について＞
以下、本実施形態における情報処理装置（ＰＣ）のソフトウェア構成について、図４を用いて説明する。尚、以下では、プリンタと直接通信を行わない（データをプリンタに直接送信したりプリンタから直接受信したりしない）プリンタドライバを「仮想プリンタドライバ」と呼ぶ。また、以下では、アプリケーション４２０をＷＰＦアプリケーション、印刷設定情報をプリントチケット（ＰＴと略記する）と呼ぶ。また、本実施形態では、仮想プリンタドライバ４６０をＸＰＳ形式の描画データをサポートするＸＰＳプリンタドライバとして説明する。さらに、本実施形態では、プリンタドライバ４８０をＥＭＦ形式の描画データをサポートするＧＤＩプリンタドライバとして説明する。しかし、本実施形態を適用可能な構成は、これに限られない。アプリケーションが扱う印刷データ形式と仮想プリンタドライバが扱う印刷データ形式とが一致する任意の印刷システムに、本実施形態を適用可能である。
【００１８】
図示するように、ＰＣ４００は、アプリケーション４２０と、ＯＳ４４０と、仮想プリンタドライバ４６０と、プリンタドライバ４８０とを有する。プリンタドライバ４８０及び仮想プリンタドライバ４６０は、ＰＣ４００にインストールされているデバイスドライバである。
【００１９】
以下、仮想プリンタドライバ４６０について説明する。仮想プリンタドライバ４６０は、印刷データを変換する（具体的には、ＸＰＳ形式描画データを、プリンタドライバ４８０が解釈可能なビットマップ画像データに変換する）ためのビットマップ変換フィルタ４６１を有する。ビットマップ変換フィルタ４６１は、情報取得部４６２と、データ変換部４６３とを有する。情報取得部４６２は、アプリケーション４２０から受け取った印刷設定情報（具体的にはＰＴ）を解析し、データ変換部４６３で必要なサイズ情報を取得する。データ変換部４６３は、情報取得部４６２が取得したサイズ情報に基づいて、印刷データをビットマップ画像データに変換する機能を有する。
【００２０】
以下、アプリケーション４２０について説明する。アプリケーション４２０は、印刷情報設定部４２１と、印刷設定情報生成部４２２と、描画データ生成部４２３と、ドライバ種類判定部４２４と、印刷制御部４２５とを有する。
【００２１】
印刷情報設定部４２１は、印刷情報を設定するためのＵＩを表示部３１２に表示させること等により該ＵＩをユーザに提示する機能を有し、ユーザは、該ＵＩを介して、用紙サイズ、用紙の向き、両面印刷、等の印刷情報を設定する。印刷情報設定部４２１は、ユーザによって設定された印刷情報を受け付ける。
【００２２】
印刷設定情報生成部４２２は、印刷情報設定部４２１で設定された印刷情報を、印刷設定情報（具体的にはＰＴ）に書き込む機能を有する。また、印刷設定情報生成部４２２は、印刷情報設定部４２１で設定された印刷情報に基づきプリンタドライバの能力情報を取得し、該取得したプリンタドライバの能力情報を印刷設定情報（具体的にはＰＴ）に書き込む機能を有する。例えば、印刷設定情報生成部４２２は、用紙サイズとしてＡ４が指定された場合、Ａ４サイズに関わるプリンタドライバの能力情報を取得する。また、例えば、印刷設定情報生成部４２２は、用紙サイズとしてＡ４が指定され、かつ、フチなし印刷が指定された場合、Ａ４サイズおよびフチなしに関わるプリンタドライバの能力情報を取得する。
【００２３】
描画データ生成部４２３は、印刷対象の描画データを生成する機能を有する。
【００２４】
ドライバ種類判定部４２４は、プリンタドライバの種類を判定する機能を有し、対象プリンタドライバの種類判定の指示を印刷制御部４２５から受け付け、判定結果を印刷制御部４２５に返す。
【００２５】
印刷制御部４２５は、ドライバ種類判定部４２４の判定結果に基づいて、プリンタドライバを制御する機能を有する。また、印刷制御部４２５は、所定のディレクトリを監視する機能も有する。印刷制御部４２５は、所定のディレクトリにビットマップ画像データがあるとき、このビットマップ画像データをプリンタドライバ４８０に渡す（詳細は後述する）。
【００２６】
尚、ここでは、アプリケーション４２０と仮想プリンタドライバ４６０とを別個の構成としたが、仮想プリンタドライバはアプリケーションの一部であっても良い。また、仮想プリンタドライバは１つあれば良い。つまり、アプリケーション４２０に加え、アプリケーション４２０と同様の構成を有する他のアプリケーションを有するシステムにおいて、アプリケーション毎に仮想プリンタドライバを設ける必要はない。複数のアプリケーションで１つの仮想プリンタドライバを共用できる。
【００２７】
＜アプリケーションの動作について＞
以下、ユーザがアプリケーション４２０から印刷を行った際のアプリケーション４２０の動作について、図５を用いて説明する。尚、図５の処理は、ユーザがアプリケーション４２０を使ってプリンタドライバを選択し、印刷の実行を指示することで実行される。
【００２８】
ステップＳ５１０において、ドライバ種類判定部４２４は、ユーザにより出力先に指定されたプリンタに対応するプリンタドライバ４８０に関する、プリンタドライバの種類を示す情報を取得する。以下、「ステップＳ〜」を単純に「Ｓ〜」と略記する。例えば、ＷＰＦのような．ＮＥＴ Ｆｒａｍｅｗｏｒｋを使ったアプリケーションの場合、ＰｒｉｎｔＱｕｅｕｅクラスのＩｓＸｐｓＤｅｖｉｃｅプロパティを用いることで、対象プリンタドライバがＸＰＳプリンタドライバであるか否かを示す情報を取得できる。
【００２９】
Ｓ５２０において、ドライバ種類判定部４２４は、Ｓ５１０で取得したプリンタドライバの種類を示す情報を用いて、プリンタドライバ４８０がＧＤＩプリンタドライバか判定する。本ステップの判定結果が真の場合、Ｓ５３０に進む。一方、本ステップの判定結果が偽の場合（つまり、プリンタドライバがＸＰＳプリンタドライバの場合）、Ｓ５７０に進む。
【００３０】
まず、Ｓ５２０の判定結果が真の場合を説明する。この場合、Ｓ５３０において、印刷設定情報生成部４２２は、印刷情報設定部４２１で設定された、プリンタドライバ４８０で最終的に印刷するための印刷情報に基づき、プリンタドライバ４８０の能力情報を取得する。具体的には、印刷設定情報生成部４２２は、ＧｅｔＤｅｖｉｃｅＣａｐｓ関数を用いて、プリンタドライバ４８０の能力情報を取得する。
【００３１】
Ｓ５４０において、印刷設定情報生成部４２２は、Ｓ５３０で取得したプリンタドライバ４８０の能力情報からサイズ情報（用紙サイズ、描画領域サイズ、解像度、オフセット、等の情報）を抽出する。そして、印刷設定情報生成部４２２は、抽出したサイズ情報を、仮想プリンタドライバ４６０から受け取ったデフォルトＰＴに書き込む。
【００３２】
尚、ＰＴには、印刷ジョブ全体に印刷設定が可能なＰＴと、ページ毎に印刷設定が可能なＰＴとがある。例えば、１つの印刷ジョブの中で異なる用紙サイズが混在している場合、ページ毎に印刷設定が可能なＰＴにページ毎のサイズ情報を記述することにより、このような印刷ジョブに基づく印刷にも対応することが可能である。
【００３３】
デフォルトＰＴに書き込まれたサイズ情報は、後述するように、仮想プリンタドライバ４６０がＸＰＳ形式の印刷データをビットマップ画像データに変換する際に用いられる。つまり、印刷を行うプリンタドライバ４８０から取得した描画領域サイズの情報に基づき、この描画領域サイズと一致するサイズとなるように、仮想プリンタドライバ４６０によるビットマップ画像化が行われる。こうすることで、後でプリンタドライバ４８０がビットマップ画像データに基づき印刷を印刷装置３２０に指示する場合、印刷装置３２０は、正確な原寸サイズで印刷を行うことが可能になる。
【００３４】
ここで、Ｓ５３０で取得するプリンタドライバの能力情報に含まれる、サイズ情報（具体的には、用紙サイズ、描画領域サイズ、解像度、オフセット、等の情報）について、図６を用いて説明する。図６は、用紙サイズと描画領域との関係を示す図である。
【００３５】
矩形領域６００は、印刷する用紙のサイズ（即ち用紙サイズ）を示しており、用紙サイズは、縦幅６１０と横幅６２０とのサイズを持つ。矩形領域６３０は、プリンタが印刷可能な領域（即ち描画領域）を示しており、描画領域のサイズは、縦幅６４０と横幅６５０とのサイズを持つ。オフセットは、用紙の左上部６８０を基準とした場合の、描画領域の開始地点６９０の位置を示し、オフセットのサイズは、縦幅６６０と横幅６７０とのサイズを持つ。
【００３６】
次に、プリンタドライバ４８０から取得したサイズ情報をＰＴに書き込むことについて、図７を用いて説明する。
【００３７】
ＰＴ上部の矩形領域７００で囲まれた部分は、ＰＴのヘッダー部分である。このヘッダー部分には、このＰＴを識別するための情報が格納されている。また、矩形領域７１０で囲まれた部分には、仮想プリンタドライバ４６０が予め持っているデフォルトの印刷設定情報が格納されており、例えば用紙サイズや用紙の向き等の情報が格納される。ＰＴ下部の矩形領域７２０で囲まれた部分には、プリンタドライバ４８０の能力情報から前述のＳ５４０で抽出されたサイズ情報が書き込まれている。
【００３８】
図７中の下線７２１は用紙の横幅（単位：ｐｘ）を表しており、図６中の用紙の横幅６２０と対応する。同様に下線７２２は用紙の縦幅（単位：ｐｘ）を表しており、図６中の用紙の縦幅６１０と対応する。
【００３９】
図７中の下線７２３は描画領域の横幅（単位：ｐｘ）を表しており、図６中の描画領域の横幅６５０と対応する。同様に下線７２４は、描画領域の縦幅（単位：ｐｘ）を表しており、図６中の描画領域の縦幅６４０と対応する。
【００４０】
図７中の下線７２５はオフセットの横幅（単位：ｐｘ）を表しており、図６中のオフセットの横幅６７０と対応する。同様に、下線７２６はオフセットの縦幅（単位：ｐｘ）を表しており、図６中のオフセットの縦幅６６０と対応する。
【００４１】
下線７２７は横方向の解像度（単位：ｄｐｉ）を表しており、下線７２８は縦方向の解像度（単位：ｄｐｉ）を表している。
【００４２】
尚、本実施形態では、矩形領域７２０のようにＰｒｏｐｅｒｔｙを用いてプリンタドライバの情報を書き込んでいるが、Ｐｒｏｐｅｒｔｙ名や要素はこれに限られない。また、ＰＴに書き込む情報は、本実施形態で説明した用紙サイズ、描画領域のサイズ、オフセットのサイズ、解像度に限られず、サイズ情報を含めた他のプリンタドライバの能力情報をＰＴに書き込んでも良い。
【００４３】
図５のフローの説明に戻る。Ｓ５５０において、印刷制御部４２５は、印刷処理を行うよう仮想プリンタドライバ４６０に指示する。この指示に伴い、Ｓ５４０でサイズ情報が書き込まれたＰＴと、印刷情報設定部４２１で設定された印刷情報に基づき描画データ生成部４２３が生成した描画データとが、仮想プリンタドライバ４６０に渡される。
【００４４】
Ｓ５６０において、仮想プリンタドライバ４６０動作後の処理を行う。尚、Ｓ５６０における処理の詳細は、図９を用いて後述する。
【００４５】
続けて、Ｓ５２０の判定結果が偽の場合を説明する。この場合、プリンタドライバはＸＰＳプリンタドライバであるため、ＷＰＦアプリケーションを用いて生成された印刷データ（ＸＰＳファイル）の形式を変換する必要はない。従って、Ｓ５７０において、印刷制御部４２５は、プリンタドライバに対し、印刷データに含まれる描画データに基づき印刷処理を行うよう指示する。以上が、本実施形態におけるアプリケーションの動作の内容である。
【００４６】
＜仮想プリンタドライバの動作について＞
以下、仮想プリンタドライバ４６０の動作について、図８を用いて説明する。図８に示すフローは、前述のＳ５５０で印刷処理を行うよう指示されると開始し、Ｓ８１０に進む。
【００４７】
Ｓ８１０において、仮想プリンタドライバ４６０は、アプリケーション４２０によって生成されたＸＰＳ形式の印刷データ（ＸＰＳファイル）を受け取る。情報取得部４６２は、受け取った印刷データからＰＴを取り出し、該取り出したＰＴ上にサイズ情報があるか判定する。このサイズ情報は、Ｓ５４０でＰＴに書き込まれたものである。本ステップの判定結果が真の場合、Ｓ８２０に進む。一方、本ステップの判定結果が偽の場合、一連の処理は終了する。これにより、仮想プリンタドライバ４６０をユーザが意図せず利用した場合は何も起こらない。
【００４８】
Ｓ８２０において、情報取得部４６２は、ＰＴに書き込まれているサイズ情報を取得する。
【００４９】
ここで、留意しておかなければいけないことがある。アプリケーション４２０から印刷処理の実行を指示された仮想プリンタドライバ４６０のモジュールは、印刷データが適切に記述・構築されているかの検証処理（印刷データの妥当性を検証する、所謂Ｖａｌｉｄａｔｅ処理）を行う。ＰＴに追加されたサイズ情報が、このＶａｌｉｄａｔｅ処理で削除されないように、仮想プリンタドライバ４６０を構成する必要がある。
【００５０】
このような仮想プリンタドライバの一例として、サイズ情報を退避させるためのモジュール（退避モジュールとする）を予め設けた仮想プリンタドライバが挙げられる。退避モジュールは、Ｖａｌｉｄａｔｅ処理前に、ＰＴに書き込まれているサイズ情報を、所定の記憶領域に退避させる。その後で、ＰＴに対するＶａｌｉｄａｔｅ処理が行われ、Ｖａｌｉｄａｔｅ処理の結果がシステムに返される。そして、退避モジュールは、退避させておいたサイズ情報をＰＴへ再度書き込む。仮想プリンタドライバをこのような構成にすることで、サイズ情報を保持したままＶａｌｉｄａｔｅ処理を行うことが可能となる。尚、退避処理とＶａｌｉｄａｔｅ処理は、図８が始まる前に仮想プリンタドライバ４６０により実行される。具体的には、アプリケーション４２０が、印刷指示を受けることで仮想プリンタドライバ４６０から取得したＰＴに図５の処理を実行することでサイズ情報を追加する。そしてアプリケーション４２０は、サイズ情報が追加されたＶａｌｉｄａｔｅ処理の実行を仮想プリンタドライバ４６０に依頼する。この依頼を受けて、仮想プリンタドライバ４６０は、受信したＰＴに記述されているサイズ情報をコピーして退避する。そして、仮想プリンタドライバ４６０は、アプリケーションから受信したＰＴに基づいてＶａｌｉｄａｔｅ処理を実行する。このＶａｌｉｄａｔｅ処理の結果としてＰＴが生成される。なお、このＶａｌｉｄａｔｅ処理の結果として生成されたＰＴにはサイズ情報が抜けているので、仮想プリンタドライバ４６０は、退避しておいたサイズ情報をＶａｌｉｄａｔｅ処理の結果であるＰＴに書き込み、アプリケーション４２０にＰＴを返却する。
【００５１】
Ｓ８３０において、データ変換部４６３は、Ｓ８２０で取得されたサイズ情報に基づいて、ＸＰＳ形式描画データをページ毎のビットマップ画像データに変換する。本ステップの変換には、ＯＳのレンダラを用いることが可能であるが、仮想プリンタドライバ８００が独自にレンダラを搭載しても構わない。尚、本ステップの変換では、一度に１ページ全体を変換するのではなく、バンド単位で変換を行う。バンド単位で変換を行うことで、ビットマップ画像データへの変換時に必要なＨＤＤ容量やメモリを低減できる効果がある。また、バンド単位で変換を行なうことで、後でビットマップ画像データに基づく印刷処理の実行をプリンタドライバ４８０に指示するとき、プリンタドライバ４８０がバンド毎の処理が可能であれば、スループットが向上する。尚、ここでは変換後のデータ形式がビットマップとして説明したが、変換後のデータ形式はビットマップに限られず、ＰＮＧやＪＰＥＧ等、他の形式でも構わない。
【００５２】
Ｓ８４０において、仮想プリンタドライバ４６０は、Ｓ８３０にてバンド単位で取得されるビットマップ画像データを、所定のローカルフォルダに逐次出力する。以上が、本実施形態における仮想プリンタドライバ４６０の動作の内容である。
【００５３】
＜仮想プリンタドライバ動作後のアプリケーションの動作について＞
以下、仮想プリンタドライバ４６０動作後のアプリケーション４２０の動作について、図９を用いて説明する。図９は、図５のＳ５６０の処理の詳細なフローチャートである。
【００５４】
Ｓ５６１において、印刷制御部４２５は、仮想プリンタドライバ４６０によってビットマップ画像データが出力されるローカルフォルダを監視する。
【００５５】
Ｓ５６２において、印刷制御部４２５は、監視対象のローカルフォルダに未処理のビットマップ画像データがあるか判定する。本ステップの判定結果が真の場合、Ｓ５６３に進む一方、該判定結果が偽の場合、Ｓ５６１に戻り、ローカルフォルダの監視を継続する。
【００５６】
Ｓ５６３において、印刷制御部４２５は、バンド単位のビットマップ画像データを取得する。
【００５７】
Ｓ５６４において、印刷制御部４２５は、直近のＳ５６３で取得したビットマップ画像データで表される画像の縦方向のピクセル数（縦ピクセル数と呼ぶ）を取得する。各ページの縦ピクセル数は、Ｓ５６４で取得する度に積算され、該積算された値が保持される。
【００５８】
Ｓ５６５において、印刷制御部５４５は、ＯＳ固有の描画用ＡＰＩであるＧＤＩＡＰＩを用いて、プリンタドライバ４８０に対してバンド単位のビットマップ画像データに基づく印刷処理を実行するよう指示する。本ステップの指示により、印刷情報設定部４２１で設定された印刷設定で等倍印刷が行われる。これは、仮想プリンタドライバが、ＰＴに記述されているサイズ情報に基づいてビットマップ画像データを生成しているためである。尚、印刷処理が完了したビットマップ画像データは、ＨＤＤ空き容量を増やすため削除して良い。
【００５９】
Ｓ５６６において、印刷制御部５４５は、１ページ分のビットマップ画像データをプリンタドライバ４８０に渡したか判定する。具体的には、Ｓ５６４で積算された縦ピクセル数と、Ｓ５４０でＰＴに書き込まれた描画領域の縦幅（図６中の描画領域の縦幅６４０に対応）とを比較する。そして、これらの値が一致したとき、１ページ分のビットマップ画像データをプリンタドライバ４８０に渡したとみなす。本ステップの判定結果が真の場合、Ｓ５６７に進む一方、該判定結果が偽の場合、Ｓ５６１に戻る。
【００６０】
Ｓ５６７において、印刷制御部５４５は、何ページ分のビットマップ画像データがプリンタドライバ４８０に渡されたか示すパラメータを、カウントアップする（ページのカウント値をインクリメントする）。
【００６１】
このようなフローにする理由は、Ｓ８３０のデータ変換におけるバンド単位が変更された場合であっても、アプリケーション４２０側で１ページ分のビットマップ画像データをプリンタドライバ４８０に渡したか判定することを可能にするためである。
【００６２】
Ｓ５６８において、印刷制御部５４５は、全ページのビットマップ画像データをプリンタドライバ４８０に渡したか判定する。具体的には、Ｓ５６７でカウントアップした数と、仮想プリンタドライバ４６０に印刷実行を指示する際に渡した印刷データのページ数とを比較する。そして、これらの数が一致したとき、全ページのビットマップ画像データをプリンタドライバ４８０に渡したとみなす。本ステップの判定結果が真の場合、一連の処理は終了する一方、該判定結果が偽の場合、Ｓ５６１に戻る。以上が、本実施形態における仮想プリンタドライバ動作後のアプリケーションの動作の内容である。
【００６３】
ここでＰＴに含まれるサイズ情報に基づいて仮想プリンタドライバ４６０が、ビットマップ画像データを生成する理由について説明する。例えば、プリンタドライバ４８０は、ユーザによりＡ４サイズが設定された場合に図６に示す描画領域に対応するサイズに基づいてＰＤＬデータを生成する。ここで図６に示す描画領域のアスペクト比を第１アスペクト比と呼ぶ。一方、本実施形態のようにアプリケーション４２０がＰＴにサイズ情報を書き込まない場合、仮想プリンタドライバ４６０が、ＰＴからサイズ情報を取得することができない。そのため、仮想プリンタドライバ４６０は、第１アスペクト比とは異なる第２アスペクト比のビットマップ画像データを生成する虞がある。その結果、仮想プリンタドライバ４６０により生成された第２アスペクト比のビットマップ画像データが、アプリケーション４２０を介してプリンタドライバ４８０に渡されることになる。そして、プリンタドライバ４８０は、Ａ４サイズの指定に基づいて、第２アスペクト比のビットマップ画像データを第１アスペクト比に変換してからページ記述言語（ＰＤＬ）データを生成する。そのため、アプリケーション４２０が生成した描画データが劣化する虞があった。一方、本実施形態では、仮想プリンタドライバ４６０は、ＰＴに含まれるサイズ情報に基づいてビットマップ画像データを生成するため第１アスペクト比のビットマップ画像データを生成できる。また、ビットマップ画像データのサイズは、等倍印刷が可能なサイズである。そして、プリンタドライバ４８０は、このようなビットマップ画像データに基づいてページ記述言語データ（ＰＤＬデータ）を生成するため、上述したような劣化を軽減することが可能となる。
【００６４】
＜本実施形態の変形例、効果について＞
尚、前述の形態では、アプリケーション４２０の印刷制御部４２５が、バンド単位のビットマップ画像データに基づく印刷処理を実行するようプリンタドライバ４８０に指示している。しかし、アプリケーション４２０のモジュールではなく仮想プリンタドライバ４６０のモジュールが、ビットマップ画像データに基づく印刷処理の実行を、プリンタドライバ４８０に指示しても良い。この形態は、アプリケーション４２０から仮想プリンタドライバ４６０に印刷処理の実行を指示する際に渡すＰＴに、プリンタドライバ４８０の識別名と、プリンタドライバ４８０が印刷処理を実行するときに用いる印刷設定の情報とを記述することで実現できる。
【００６５】
また、前述の形態では、ＸＰＳ形式描画データからビットマップ画像データへの変換を、仮想プリンタドライバ４６０を用いて行ったが、本実施形態はこのような形態に限定されない。他の形態として例えば、アプリケーション４２０にデータ変換部を設け、このデータ変換部でＸＰＳ形式描画データをビットマップ画像データに変換しても良い。
【００６６】
また、アプリケーション４２０は、ＰＣ４００が有する他のアプリケーションのプラグインとして動作しても良い。
【００６７】
以上説明したように、本実施形態では、アプリケーションで生成されたＸＰＳ形式描画データについて、仮想プリンタドライバでラスタライズを行った上で、プリンタドライバによる印刷処理を行う。この際、仮想プリンタドライバは、ユーザにより設定された印刷情報に基づいてプリンタドライバ４８０から取得したサイズ情報に基づいてビットマップ画像データを生成する。その結果、アプリケーション４２０は、プリンタドライバ４８０においてサイズの変更が不要なビットマップ画像データを、プリンタドライバ４８０に渡すことができる。これにより、異なる形式の印刷データが共存する環境において、プリンタ毎に複数の印刷データ形式の夫々に対応するプリンタドライバをインストールすることなく、また画質の劣化を軽減した印刷が可能となる。
【００６８】
＜第２の実施形態＞
第１の実施形態では、仮想ドライバを、ＸＰＳ形式描画データをビットマップ画像データに変換し出力するモジュールとして扱った。しかし、仮想プリンタドライバに他の機能を持たせることも可能である。また、１つの仮想プリンタドライバが複数の機能を有する場合に、ＰＴを利用することで、使う機能を切り替えることも可能である。
【００６９】
本実施形態では、印刷データの編集と編集結果の印刷とが可能なアプリケーションを有するシステムにおいて、１つの仮想プリンタドライバを用いて、該アプリケーションに入力する印刷データ（ＸＰＳファイル）の出力と、仮想ドライバ経由の印刷とを行う。
【００７０】
尚、以下では既述の実施形態との差分について主に説明し、既述の実施形態と同様の内容については説明を適宜省略する。
【００７１】
＜情報処理装置のソフトウェア構成について＞
以下、本実施形態における情報処理装置（ＰＣ）のソフトウェア構成について、図１０を用いて説明する。尚、本実施形態も第１の実施形態と同様、第１アプリケーション１０２０をＷＰＦアプリケーション、印刷設定情報をＰＴ、仮想プリンタドライバ１０６０をＸＰＳプリンタドライバとして説明する。
【００７２】
図示するように、第１アプリケーション１０２０は、第１の実施形態と同様の機能を持つモジュール（図４参照）として、印刷情報設定部１０２１と、描画データ生成部１０２３と、ドライバ種類判定部１０２４と、印刷制御部１０２５とを有する。また、第１アプリケーション１０２０は、これらのモジュールの他、第１の実施形態におけるアプリケーション４２０の印刷設定情報生成部４２２とは機能が一部異なる印刷設定情報生成部１０２２を有する。さらに、第１アプリケーション１０２０は、アプリケーション４２０が有さないＸＰＳ取得部１０２６も有する。
【００７３】
第２アプリケーション１０３０は、印刷データを生成する生成機能と、出力先のプリンタドライバ（プリンタドライバ１０８０や仮想プリンタドライバ１０６０等）を指定して該生成した印刷データを印刷する機能とを有する。
【００７４】
以下、仮想プリンタドライバ１０６０について説明する。仮想プリンタドライバ１０６０は、受け取った印刷データをビットマップ画像データに変換するためのビットマップ変換フィルタ１０６１と、ＸＰＳファイルを出力するためのＸＰＳ出力フィルタ１０６５とを有する。
【００７５】
ビットマップ変換フィルタ１０６１は、処理切り替え情報判定部１０６２と、情報取得部１０６３と、データ変換部１０６４とを有する。
【００７６】
処理切り替え情報判定部１０６２は、受け取った印刷データ内のＰＴに書き込まれている処理切り替え情報を取得する。ここで取得する処理切り替え情報の値に依って、後に仮想プリンタドライバ１０６０で実行する処理内容が変わってくる。
【００７７】
情報取得部１０６３は、第１の実施形態における情報取得部４６２と同様の機能を有し、印刷データに含まれるＰＴに書き込まれているサイズ情報を取得する。
【００７８】
データ変換部１０６４は、第１の実施形態におけるデータ変換部４６３と同様の機能を有する。つまり、データ変換部１０６４は、情報取得部１０６３で取得したサイズ情報に基づく印刷データの変換、具体的には、ＸＰＳ形式描画データからビットマップ画像データへの変換を行う。
【００７９】
ＸＰＳ出力フィルタ１０６５は、仮想プリンタドライバ１０６０が受け取った印刷データをＸＰＳファイルとして出力する機能を有する。
【００８０】
＜仮想プリンタドライバの動作について＞
ここでは、第１アプリケーション１０２０、又は、第２アプリケーション１０３０から、仮想プリンタドライバ１０６０に印刷処理の実行が指示されたときの、仮想プリンタドライバ１０６０の動作について説明する。
【００８１】
本実施形態では、第２アプリケーション１０３０から仮想プリンタドライバ１０６０に対して印刷処理の実行が指示された場合、第１の実施形態で説明したような特殊なＰＴの作成を伴わない印刷処理が実行される。
【００８２】
これに対し、第１アプリケーション１０２０から仮想プリンタドライバ１０６０に対して印刷処理の実行が指示された場合、第１の実施形態で説明したようなサイズ情報のＰＴへの書き込みを伴う印刷処理が実行される。但し、本実施形態でＰＴに書き込む内容は、第１の実施形態で説明したサイズ情報だけでなく、図１１に示すような処理切り替え情報１１１０を含む。「処理切り替え情報」とは、実行する処理内容を指定するための情報である。図１１に示す例では、処理切り替え情報として“Ｍｏｄｅ１”という値がＰＴに書き込まれている。尚、処理切り替え情報１１１０の値は、仮想プリンタドライバの処理切り替え情報判定部１０６２が認識可能な値であればこれに限られない。つまり、第１アプリケーションは、第１の実施形態において説明したサイズ情報と、処理切り替え情報をＰＴに書き込むことが可能である。
【００８３】
第１アプリケーション１０２０、又は、第２アプリケーション１０３０において、仮想プリンタドライバ１０６０に対して印刷処理が実行された場合、ＯＳ１０４０を経由して仮想プリンタドライバ１０６０のフィルターパイプラインへ印刷データが渡される。この印刷データは初めに、ビットマップ変換フィルタ１０６１へ渡され、印刷データをビットマップ画像データへ変更する処理が行われる。そして、ビットマップ変換フィルタ１０６１における処理が完了すると、処理後の印刷データが、ＸＰＳ出力フィルタ１０６５へ渡される。
【００８４】
以下、仮想プリンタドライバ１０６０の動作について、図１２を用いて説明する。
【００８５】
Ｓ１２１０において、処理切り替え情報判定部１０６２は、仮想プリンタドライバ１０６０が受け取ったＸＰＳファイルからＰＴを取り出し、該取り出したＰTに書き込まれている処理切り替え情報（図１１参照）を取得する。
【００８６】
Ｓ１２２０において、処理切り替え情報判定部１０６２は、Ｓ１２１０で取得した処理切り替え情報の値が“Ｍｏｄｅ１”であるか判定する。本ステップの判定結果が真の場合、Ｓ１２３０に進む一方、該判定結果が偽の場合、Ｓ１２６０に進む。
【００８７】
Ｓ１２２０でＹＥＳの場合に実行されるＳ１２３０〜Ｓ１２５０の各処理については、第１の実施形態におけるＳ８２０〜Ｓ８４０の各処理と同様である（図８参照）。つまり、情報取得部１０６３が、ＰＴに書き込まれているサイズ情報（図１１参照）を取得し（Ｓ１２３０）、データ変換部１０６４が、該取得したサイズ情報を用いて、ＸＰＳ形式描画データをビットマップ画像データに変換する（Ｓ１２４０）。これによって得られたビットマップ画像データは、第１の実施形態と同様、所定のローカルフォルダに出力される（Ｓ１２５０）。
【００８８】
一方、Ｓ１２２０でＮＯの場合、Ｓ１２６０において、ＸＰＳ出力フィルタ１０６５は、ＸＰＳファイルを所定のディレクトリに出力する。第１アプリケーション１０２０のＸＰＳ取得部１０２６は、ＸＰＳ出力フィルタ１０６５によって出力されたＸＰＳファイルを所定のディレクトリから取得する。
【００８９】
ここで、第２アプリケーション１０３０から仮想プリンタドライバ１０６０に対して印刷処理の実行が指示された場合の、仮想プリンタドライバ１０６０について説明する。この場合、前述したようにＰＴに処理切り替え情報が書き込まれていない。従って、ビットマップ画像への変換処理は行われず、ＸＰＳ出力フィルタ１０６５によるＸＰＳファイル出力が行われることになる（Ｓ１２２０でＮＯ→Ｓ１２６０）。
【００９０】
これに対し、第１アプリケーション１０２０から仮想プリンタドライバ１０６０に対して印刷処理の実行が指示された場合、ＰＴに処理切り替え情報が書き込まれており、サイズ情報も取得できる。従って、ＸＰＳ出力フィルタ１０６５によるＸＰＳファイル出力処理は行われず、サイズ情報を用いるラスタライズにより生成されたビットマップ画像データが出力されることになる（Ｓ１２２０でＹＥＳ→・・・→Ｓ１２５０）。以上が、本実施形態における仮想プリンタドライバ１０６０の動作の内容である。
【００９１】
＜仮想プリンタドライバ動作後のアプリケーションの動作について＞
以下、仮想プリンタドライバ１０６０動作後の第１アプリケーション１０２０の動作について説明する。ビットマップ変換フィルタ１０６１によって生成されたビットマップ画像データが出力されたときの第１アプリケーション１０２０の動作は、第１の実施形態におけるアプリケーション４２０の動作と同様である。
【００９２】
また、ＸＰＳ出力フィルタ１０６５がＸＰＳファイルを出力する場合、第１アプリケーション１０２０のＸＰＳ取得部１０２６が、該出力されたＸＰＳファイルを取得する。以上が、本実施形態における仮想プリンタドライバ動作後のアプリケーションの動作の内容である。
【００９３】
＜本実施形態の効果について＞
本実施形態により、１つの仮想プリンタドライバを用いて、第１アプリケーションに入力する印刷データ（ＸＰＳファイル）の出力と、仮想プリンタドライバ経由の印刷とを切り替えながら行うことが可能になる。
【００９４】
［その他の実施形態］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００９５】
４２０・・・アプリケーション
４２２・・・印刷設定情報生成部
４２４・・・ドライバ種類判定部
４６０・・・仮想プリンタドライバ
４６３・・・データ変換部
４８０・・・プリンタドライバ
【図１】
2019207461.tif 000003
【図２】
2019207461.tif 000004
【図３】
2019207461.tif 000005
【図４】
2019207461.tif 000006
【図５】
2019207461.tif 000007
【図６】
2019207461.tif 000008
【図７】
2019207461.tif 000009
【図８】
2019207461.tif 000010
【図９】
2019207461.tif 000011
【図１０】
2019207461.tif 000012
【図１１】
2019207461.tif 000013
【図１２】
2019207461.tif 000014