(57)【要約】【課題】  レンダリング解像度が益々高解像度になっているためスプールデータのサイズがより大きくなり、アプリケーションやスプーラ内部でエラーが発生する。【解決手段】  アプリケーションプログラムにより作成された描画データをスプールする際、描画データの解像度を低下させるか否かを決定し（Ｓ２０２）、その描画データの解像度を低下させると決定されると、スプールする描画データの解像度を低下させたプリンタ情報をＧＤＩに返し（Ｓ２０３）、ＧＤＩはその低下させた解像度でスプールする（Ｓ１０７）。印刷が指示されると、スプールされた描画データを画像形成デバイスの解像度に合せた解像度でラスタイメージに展開し、レンダリングPlug-inにより展開されたラスタイメージをプリンタに出力して画像形成する。【選択図】  図５
2005148954.tif 000002
【特許請求の範囲】
【請求項１】
画像形成に使用する画像形成用デバイスに対応する画像形成条件を記述するＧＤＰファイルと、
描画データをイメージデータに展開する展開手段と、
アプリケーションプログラムにより作成された描画データの解像度を低下させるかどうかを判定する判定手段と、
前記判定手段により解像度を低下させると判定した場合に、前記描画データの解像度を低下させてスプールするように制御するスプール手段と、
画像形成時、前記スプール手段にスプールされた前記描画データを前記ＧＤＰファイルに基づいて前記画像形成用デバイスの解像度に合せた解像度で前記展開手段によりイメージデータに展開させ、当該イメージデータを前記画像形成用デバイスに出力して画像形成させるように制御する画像形成制御手段と、
を有することを特徴とする画像形成制御装置。
【請求項２】
前記画像形成制御手段は、汎用のＯＳで提供されるユニバーサルプリンタドライバと、前記画像形成デバイスのメーカが作成したプリントプロセッサ、レンダリングプロセッサを含むことを特徴とする請求項１に記載の画像形成制御装置。
【請求項３】
前記画像形成用デバイスはプリンタを含むことを特徴とする請求項１又は２に記載の画像形成制御装置。
【請求項４】
前記判定手段は、前記アプリケーションプログラムからの描画データのスプール指示の場合に、当該描画データの解像度を低下させるように判定することを特徴とする請求項１乃至３のいずれか１項に記載の画像形成制御装置。
【請求項５】
前記判定手段は、前記アプリケーションプログラムからのスプール指示で、かつ前記描画データのデータ量が所定量以上の場合に前記解像度を低下させると判定することを特徴とする請求項１乃至３のいずれか１項に記載の画像形成制御装置。
【請求項６】
前記判定手段は、ユーザの指示により判定することを特徴とする請求項１乃至３のいずれか１項に記載の画像形成制御装置。
【請求項７】
印刷指示に応じてプリンタドライバを初期化し、前記プリンタドライバからプリンタ情報を取得するプリンタ情報取得手段と、
前記プリンタドライバの初期化に際して、アプリケーションプログラムから渡される描画データの解像度を低下させるか否かを判定して前記プリンタ情報を発行する判定手段と、
前記判定手段により発行された前記プリンタ情報に基づいて前記描画データの解像度を決定して当該描画データをスプールするスプール手段と、
前記スプール手段にスプールされた前記描画データを前記プリンタドライバから供給されるプリンタの解像度に応じた解像度でラスタイメージに展開する展開手段と、
前記展開手段により展開された前記ラスタイメージデータを前記プリンタドライバにより前記プリンタに送信させるように制御する制御手段と、
を有することを特徴とする印刷制御装置。
【請求項８】
アプリケーションプログラムからの初期化指示に応答するプリンタ情報に含まれる解像度を、印刷対象のプリンタの第１解像度よりも低い第２解像度に設定する解像度設定手段と、
アプリケーションプログラム以外からの初期化指示に応答して、前記プリンタの前記第１解像度を含むプリンタ情報を返送する返送手段と、
前記第２解像度でスプールされている描画データを受取り、前記第１解像度のラスタイメージデータに変換する変換手段と、
前記変換手段により変換したイメージデータを前記プリンタに送信して印刷させる印刷制御手段と、
を有することを特徴とするプリンタドライバ。
【請求項９】
描画データをイメージデータに展開する展開工程と、
アプリケーションプログラムにより作成された描画データの解像度を低下させるかどうかを判定する判定工程と、
前記判定工程で解像度を低下させると判定した場合に、解像度を低下させてイメージデータに展開してスプールするように制御するスプール工程と、
画像形成時、前記スプール工程でスプールされた前記描画データを、画像形成に使用する画像形成用デバイスに対応する画像形成条件を記述するＧＤＰファイルに基づいて前記画像形成用デバイスの解像度に合せた解像度でイメージデータに展開し、当該イメージデータを前記画像形成用デバイスに出力して画像形成させるように制御する画像形成制御工程と、
を有することを特徴とする画像形成制御方法。
【請求項１０】
前記画像形成制御工程は、汎用のＯＳで提供されるユニバーサルプリンタドライバと、前記画像形成デバイスのメーカが作成したプリントプロセッサ、レンダリングプロセッサにより実行されることを特徴とする請求項９に記載の画像形成制御方法。
【請求項１１】
前記画像形成用デバイスは、プリンタを含むことを特徴とする請求項９又は１０に記載の画像形成制御方法。
【請求項１２】
前記判定工程では、前記アプリケーションプログラムからの描画データのスプール指示の場合に、当該描画データの解像度を低下させるように判定することを特徴とする請求項９乃至１１のいずれか１項に記載の画像形成制御方法。
【請求項１３】
前記判定工程では、前記アプリケーションプログラムからのスプール指示で、かつ前記描画データのデータ量が所定量以上の場合に前記解像度を低下させると判定することを特徴とする請求項９乃至１１のいずれか１項に記載の画像形成制御方法。
【請求項１４】
前記判定工程では、ユーザの指示により判定することを特徴とする請求項９乃至１１のいずれか１項に記載の画像形成制御方法。
【請求項１５】
スプールデータの軽減が指示されている場合に、印刷対象のプリンタ装置の第１解像度よりも低い解像度の第２解像度を設定する解像度設定手段と、
アプリケーションから描画データを受け取って前記第２解像度で前記描画データをスプールするスプール手段と、
前記スプール手段によりスプールされている描画データの印刷が指示されると、前記スプール手段によりスプールされている描画データを前記第１解像度でイメージデータに展開する展開手段と、
前記展開手段により展開されたイメージデータを前記プリンタ装置に送信して印刷させる手段と、
を有することを特徴とする印刷制御装置。
【請求項１６】
請求項９乃至１４のいずれか１項に記載の画像形成制御方法を実行するプログラムを記憶したことを特徴とする記憶媒体。
【請求項１７】
請求項９乃至１４のいずれか１項に記載の画像形成制御方法を実行することを特徴とするプログラム。
【請求項１８】
印刷装置で印刷すべき印刷データを生成する情報処理装置における印刷制御方法であって、
ユニバーサルプリンタドライバからレンダリングプラグインが呼び出された場合に、この呼び出しがスプールファイルのスプール時の呼び出しであるか、スプールファイルのデスプール時の呼び出しであるかを判定する判定工程と、
スプール軽減モードが設定されているかを判断する判断工程と、
前記判断工程でスプール軽減モードが設定されていると判断され、前記判定工程でスプールファイルのスプール時の呼び出しであると判定された場合に、レンダリングプラグインからユニバーサルプリンタドライバに対して、スプールファイルのスプール解像度として、印刷時の第１解像度よりも低い第２解像度を通知する第１通知工程と、
前記判定工程でスプールファイルのデスプール時の呼び出しであると判定された場合に、レンダリングプラグインからユニバーサルプリンタドライバに対して、スプールファイルのデスプール解像度として、印刷時の第１解像度を通知する第２通知工程と、
を有することを特徴とする印刷制御方法。
【請求項１９】
印刷装置で印刷すべき印刷データを生成する情報処理装置で動作する印刷制御プログラムであって、
ユニバーサルプリンタドライバからレンダリングプラグインが呼び出された場合に、この呼び出しがスプールファイルのスプール時の呼び出しであるか、スプールファイルのデスプール時の呼び出しであるかを判定する判定工程と、
スプール軽減モードが設定されているかを判断する判断工程と、
前記判断工程でスプール軽減モードが設定されていると判断され、前記判定工程でスプールファイルのスプール時の呼び出しであると判定された場合に、レンダリングプラグインからユニバーサルプリンタドライバに対して、スプールファイルのスプール解像度として、印刷時の第１解像度よりも低い第２解像度を通知する第１通知工程と、
前記判定工程でスプールファイルのデスプール時の呼び出しであると判定された場合に、レンダリングプラグインからユニバーサルプリンタドライバに対して、スプールファイルのデスプール解像度として、印刷時の第１解像度を通知する第２通知工程と、
を前記情報処理装置に実行させることを特徴とするコンピュータ読み取り可能な印刷制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文字、図形等を含む描画データをラスタイメージデータに展開して画像形成する画像形成制御装置及びその制御方法、プリンタドライバと印刷制御装置に関するものである。
【背景技術】
【０００２】
ホストコンピュータから送られてくるラスタイメージに基づいて、プリンタ装置によりプリントを行うプリントシステムが知られている。このホストコンピュータにおけるラスタイメージの展開に際しては、ホストコンピュータのアプリケーションソフトウェア（以下、単にアプリケーション）により作成された文字、グラフィックス、写真などのデータは、一旦、ホストコンピュータの仮想的なページメモリに展開される。
【０００３】
また、このようなラスタイメージデータへの展開時には、アプリケーションは、テキストデータについては文字種、キャラクタコードなどに加えて、その出力位置を示す座標情報を出力する。またグラフィックデータについては、形状などの種別、色、座標情報を出力し、また写真などのイメージ画像についてはオリジナル画像と出力先のサイズを出力する。
【０００４】
また、プリンタドライバは、ユーザインタフェースドライバを有しており、アプリケーションからオペレーションシステム（以下、ＯＳ）の描画エンジンを介して描画データをスプールする際に、ユーザインタフェースドライバがスタンプ等の付加描画データを追加することが可能になっている（例えば、特許文献１）。
【特許文献１】特開２００２−３３３９５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、近年のアプリケーションの高機能化などに伴って、アプリケーションにより生成されるデータが複雑になってきている。従って、プリンタ装置やプリンタドライバの機能によっては、アプリケーションより受け取ったデータを正しく解釈してイメージデータに展開できない場合が発生する。このため一部のアプリケーションには、その作成したテキストデータ、グラフィックデータ等をプリンタ装置に出力する際、そのアプリケーションによりプリンタ装置のレンダリング解像度に応じたイメージデータに展開してから印刷を行うものがある。このようなアプリケーションでは、そのイメージ展開したデータをスプールする場合、そのスプールデータのサイズが非常に大きくなり、ハードディスクやメモリを圧迫するという問題が発生している。
【０００６】
特に近年、プリンタの高画質化に伴うレンダリング解像度が益々高解像度になっているため、スプールデータのサイズがより大きくなり、アプリケーションやＯＳの描画エンジンのスプーラ内部でエラーが発生してしまい、正常にイメージに展開できなくなるという問題が発生している。その結果、レンダリング解像度を上げることもできずプリンタ装置の高画質化にとって障害となっている。
【０００７】
この問題を解決すべく、本出願人によりＯＳの描画エンジンによりスプーラ内部に描画データをスプールする場合と、スプールされている描画データをプリントプロセッサによりデスプール（読み出す）場合とで、プリンタドライバが指定する解像度を変更することで、スプーラ内部にスプールされる描画データのサイズを減らす仕組みが考えられている。この仕組みは、ＯＳの描画エンジンが描画データをスプールする際にプリンタドライバに解像度をＡＰＩを用いて問い合わせる際に、本来の印刷解像度よりも小さい解像度を返値として渡すことにより実現することが可能である。しかし、このようなプリンタドライバは、プリンタ開発会社にプリンタドライバ全体の開発が許されているモノレシックプリンタドライバと呼ばれるプリンタドライバに限り実現可能である。これに対して、ＯＳを開発しているＯＳ開発会社、例えば、米国マイクロソフト社が、各プリンタ開発会社に共通のユニバーサルプリンタドライバを開発し、各プリンタ開発会社が独自の印刷設定を行うためのグラフィックプラグイン（ミニドライバとも呼ばれる）を開発してなるシステムでは、上述した仕組みを適用することができない。
【０００８】
本発明は上記従来例に鑑みてなされたもので、ユニバーサルプリンタドライバを用いた印刷システムにおいて、画像形成デバイスにラスタイメージデータを出力するためのスプールファイルのサイズを小さくし、かつ高品位の画像を形成できる画像形成制御装置及びその制御方法、プリンタドライバと印刷制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の画像形成制御装置は以下のような構成を備える。即ち、
画像形成に使用する画像形成用デバイスに対応する画像形成条件を記述するＧＤＰファイルと、
描画データをイメージデータに展開する展開手段と、
アプリケーションプログラムにより作成された描画データの解像度を低下させるかどうかを判定する判定手段と、
前記判定手段により解像度を低下させると判定した場合に、前記描画データの解像度を低下させてスプールするように制御するスプール手段と、
画像形成時、前記スプール手段にスプールされた前記描画データを前記ＧＤＰファイルに基づいて前記画像形成用デバイスの解像度に合せた解像度で前記展開手段によりイメージデータに展開させ、当該イメージデータを前記画像形成用デバイスに出力して画像形成させるように制御する画像形成制御手段とを有することを特徴とする。
【００１０】
また本発明の印刷制御装置は以下のような構成を備える。即ち、
印刷指示に応じてプリンタドライバを初期化し、前記プリンタドライバからプリンタ情報を取得するプリンタ情報取得手段と、
前記プリンタドライバの初期化に際して、アプリケーションプログラムから渡される描画データの解像度を低下させるか否かを判定して前記プリンタ情報を発行する判定手段と、
前記判定手段により発行された前記プリンタ情報に基づいて前記描画データの解像度を決定して当該描画データをスプールするスプール手段と、
前記スプール手段にスプールされた前記描画データを前記プリンタドライバから供給されるプリンタの解像度に応じた解像度でラスタイメージに展開する展開手段と、
前記展開手段により展開された前記ラスタイメージデータを前記プリンタドライバにより前記プリンタに送信させるように制御する制御手段とを有することを特徴とする。
【００１１】
また本発明の印刷制御方法は以下のような工程を備える。即ち、
印刷装置で印刷すべき印刷データを生成する情報処理装置における印刷制御方法であって、
ユニバーサルプリンタドライバからレンダリングプラグインが呼び出された場合に、この呼び出しがスプールファイルのスプール時の呼び出しであるか、スプールファイルのデスプール時の呼び出しであるかを判定する判定工程と、
スプール軽減モードが設定されているかを判断する判断工程と、
前記判断工程でスプール軽減モードが設定されていると判断され、前記判定工程でスプールファイルのスプール時の呼び出しであると判定された場合に、レンダリングプラグインからユニバーサルプリンタドライバに対して、スプールファイルのスプール解像度として、印刷時の第１解像度よりも低い第２解像度を通知する第１通知工程と、
前記判定工程でスプールファイルのデスプール時の呼び出しであると判定された場合に、レンダリングプラグインからユニバーサルプリンタドライバに対して、スプールファイルのデスプール解像度として、印刷時の第１解像度を通知する第２通知工程とを有することを特徴とする。
【００１２】
また本発明のプリンタドライバは以下のような構成を備える。即ち、
アプリケーションプログラムからの初期化指示に応答するプリンタ情報に含まれる解像度を、印刷対象のプリンタの第１解像度よりも低い第２解像度に設定する解像度設定手段と、
アプリケーションプログラム以外からの初期化指示に応答して、前記プリンタの前記第１解像度を含むプリンタ情報を返送する返送手段と、
前記第２解像度でスプールされている描画データを受取り、前記第１解像度のラスタイメージデータに変換する変換手段と、
前記変換手段により変換したイメージデータを前記プリンタに送信して印刷させる印刷制御手段とを有することを特徴とする。
【００１３】
更に、本発明の画像形成制御方法は以下のような工程を備える。即ち、
描画データをイメージデータに展開する展開工程と、
アプリケーションプログラムにより作成された描画データの解像度を低下させるかどうかを判定する判定工程と、
前記判定工程で解像度を低下させると判定した場合に、解像度を低下させてイメージデータに展開してスプールするように制御するスプール工程と、
画像形成時、前記スプール工程でスプールされた前記描画データを、画像形成に使用する画像形成用デバイスに対応する画像形成条件を記述するＧＤＰファイルに基づいて前記画像形成用デバイスの解像度に合せた解像度でイメージデータに展開し、当該イメージデータを前記画像形成用デバイスに出力して画像形成させるように制御する画像形成制御工程とを有することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、ユニバーサルプリンタドライバを用いた印刷システムにおいても、画像形成デバイスにラスタイメージデータを出力するためのスプールファイルのサイズを小さくし、かつ高品位の画像を形成できるという効果がある。
【発明を実施するための最良の形態】
【００１５】
以下、添付図面を参照して本発明の好適な実施の形態を詳細に説明する。
【００１６】
図１は、本発明の実施の形態に係る印刷システムの概略構成例を示す図である。尚、この図１で示される実施の形態として、例えば一般的に普及しているパーソナルコンピュータにMicrosoft社のWindows（登録商標、以下略）をオペレーティングシステム（OS）として使用し、印刷処理機能を有する任意のアプリケーション１０１をインストールし、更に、このコンピュータにプリンタ１０８を接続した形態が考えられる。
【００１７】
ここで、このコンピュータがプリンタ１０８にデータを出力する際には、コンピュータのプリンタドライバ１０３がプリンタ１０８に応じたデータを作成する。このプリンタドライバ１０３には幾つかの形態が考えられるが、ここでは、Windowsで提供されるユニバーサルプリンタドライバ１０９を用いる場合で説明する。このプリンタドライバ１０３は、各プリンタ１０８に対応する用紙種類や解像度などの設定可能な各設定値を含む機種情報が記述されたＧＰＤファイル１１１と、ユニバーサルプリンタドライバ１０９に情報を提供したり、ユニバーサルプリンタドライバ１０９の一部の機能を代替するプログラムであるレンダリングplug-in１１０とを具備している。ＧＰＤファイル１１１およびレンダリングplug-in１１０は、プリンタ開発会社が作成し、ＯＳ開発会社に提供することで、Windowsと共に各ユーザに提供される。また、レンダリングplug-in１１０は、各プリンタ固有の印刷属性を設定するためのモジュールである。
【００１８】
アプリケーション１０１が印刷要求した描画データ（文書データ、画像データ等の印刷データ）は、グラフィックデバイス・インターフェース（Graphics Device Interface：以下、「ＧＤＩ」）１０２経由でプリンタドライバ１０３へ印刷要求として出力される。ＧＤＩ１０２は、通常、一旦、そのデータをＥＭＦ（Enhanced Meta File）データとしてスプールファイル１０４にスプールし、そのスプールが終了すると、プリントプロセッサ１０５に印刷要求を発行する。これによりプリントプロセッサ１０５は、スプールファイル１０４から印刷出力情報と描画データをページ単位で読み込み、１ページずつＧＤＩ１０２を介してプリンタドライバ１０３に出力して印刷するように要求する。
【００１９】
このプリントプロセッサ１０５は、スプールファイル１０４にスプールされている描画データをプリンタドライバ１０３に出力する際、プリンタドライバ１０３から出力されるラスタイメージデータの解像度に合わせて座標情報を変換する機能がある。尚、このプリントプロセッサ１０５は、ＯＳのモジュールとして用意されているが、プリンタ１０８のメーカ等がカスタマイズしたプリントプロセッサ１０５をレンダリングplug-in１１０、ＧＰＤファイル１１１とともに供給し、それらをハードディスクにインストールするようにしてもよい。こうしてプリントプロセッサ１０５から印刷が要求されたプリンタドライバ１０３は、ＧＤＩレンダリングエンジン１０７を用いて、その描画データをラスタイメージデータにレンダリングした後、色処理やプリンタコマンドの付加などを行い、ポートモニタ１０６経由でプリンタ１０８に送信する。
【００２０】
このスプールファイル１０４は、アプリケーション１０１が印刷を要求しているコマンド或いはビットマップイメージ等をファイルとして保存している。この際、通常、文字については、文字種、文字列のキャラクタコードと座標情報などが保存され、写真などのイメージでは、オリジナル画像情報と座標情報とが保存されている。これらキャラクタ、グラフィック及びイメージデータは、プリンタドライバ１０３でレンダリングされてプリンタ１０８の解像度に応じたラスタイメージデータに変換される。そのため、最近のプリンタ１０８における高画質化に伴う高解像度化においても、スプールファイル１０４のファイルサイズは大きくならず問題とならなかった。
【００２１】
しかし、その描画データが複雑なデータ等の場合には、プリンタ１０８やプリンタドライバ１０３の機能によっては正常に印刷できないことがある。このため、アプリケーション１０１によっては、レンダリングをアプリケーション１０１で行い、その結果であるラスタイメージをプリンタドライバ１０３に出力するものがある。このような場合、通常、アプリケーション１０１からはプリンタドライバ１０３におけるレンダリング処理を行う場合と同じ解像度で、ページの画像全体をラスタイメージに変換して出力するため、ラスタイメージデータの解像度（プリンタ１０８の解像度）の増加とともにスプールファイル１０４自体も巨大化してしまう。
【００２２】
図２は、印刷対象の各用紙サイズ及びプリンタ１０８の各レンダリング解像度に対する、１ページ分のスプールファイル１０４のサイズの一例を示した図である。
【００２３】
図２は、用紙サイズ及び解像度に対応して、１ページ分のスプールファイル１０４の容量を示しており、ここではＡ４，Ｂ４，Ａ３判のそれぞれに対する各解像度（６００，７２０，１２００ｄｐｉ）でのスプールデータのデータ容量が、それぞれメガバイトの単位で表わされている。当然、複数ページがスプールされた場合には、スプールファイル１０４の必要な容量は更に大きくなる。このようにしてスプールファイル１０４のサイズが大きくなると、印刷に要する時間が長くなるだけでなく、ハードディスクの容量不足でスプールエラーが発生したり、扱うラスタイメージデータが巨大化することから、アプリケーション１０１やスプーラ内部でメモリエラー等が発生したりして、正常に印刷されないという問題が発生する。
【００２４】
このような事態に対する対処法としては、レンダリングの印刷解像度を下げる、即ち、ラスタイメージの解像度を下げることも考えられるが、これでは通常のキャラクタコードで出力されている文字列まで低い解像度でレンダリングされることになり、プリンタ１０８本来の印刷品位での印刷が不可能になる。
【００２５】
そこで本実施の形態では、アプリケーション１０１から出力される、レンダリング解像度（印刷解像度よりも低い解像度）でレンダリングしたラスタイメージデータをスプールするスプールファイル１０４のサイズを小さくしながら、キャラクタコードで出力される文字列などのように、解像度に依存せずに出力される描画データについては高品位でレンダリングすることを目的とする。
【００２６】
次に本実施の形態１に係る処理について図３乃至図１１を参照して詳しく説明する。
【００２７】
図５及び図６は、本実施の形態１に係る印刷システムにおける処理の流れを説明するフローチャートである。ここではアプリケーション１０１が作成した描画データをスプールする処理について説明する。
【００２８】
まずアプリケーション１０１は、印刷するための描画データ（文書データや画像データ等の印刷データ）を、対象とするプリンタ１０８の解像度や印刷領域（解像度に応じたピクセル数）に合わせて作成する。そしてステップＳ１０１で、アプリケーション１０１は、ＧＤＩ１０２に対してプリンタドライバ１０３の初期化を要求し、プリンタ１０８の印刷領域や解像度などのプリンタ情報を要求する。次にステップＳ１０２に進み、ＧＤＩ１０２は、この要求に応じてプリンタドライバ１０３のユニバーサルプリンタドライバ１０９を初期化し、「ＧＤＩＩＮＦＯ」と呼ばれるプリンタ情報を要求する。
【００２９】
この「ＧＤＩＩＮＦＯ」は、図３に示すようなデータ構造をしている。
【００３０】
またユニバーサルプリンタドライバ１０９は、「ＤＥＶＭＯＤＥ」と呼ばれるユーザ設定値を基に、用紙サイズや用紙内の印刷領域などを設定する。例えば、「ulLogPixelsX」３０１，「ulLogPixelsY」３０２はレンダリング解像度であり（画像の水平及び垂直方向の論理インチ当りの画素数）、このレンダリング解像度に応じて、「ulHorzRes」（画素単位での印刷幅）３０３／「ulVertRes」（画素単位での印刷高さ）３０４、「ptlPhysOffset.x」（印刷領域の左側オフセット）３０５／「ptlPhysOffset.y」（印刷領域の上側オフセット）３０６（用紙サイズに相当）などの値を設定する。
【００３１】
図４は、ユーザ設定値「ＤＥＶＭＯＤＥ」の一例を示す図である。
【００３２】
この「ＤＥＶＭＯＤＥ」のデータ構造において、「dmDriverData」（デバイス固有の情報）４０１以外は、ＯＳで共通の仕様となっている。この「dmDriverData」４０１は、各プリンタドライバ毎に自由に使用することが可能である。
【００３３】
前述したレンダリング解像度でレンダリングしたラスタイメージデータを、アプリケーション１０１から出力するスプールファイル１０４のサイズを小さくするには、このレンダリング解像度の値を小さくすれば良い。しかし、このレンダリング解像度を小さくすると、キャラクタコードで表わされている文字列等のように、解像度に依存しない描画データについても、その印刷品位が下がってしまう。
【００３４】
ここでプリンタドライバ１０３が初期化されるケースは２種類あり、一つは、前述したアプリケーション１０１がＧＤＩ１０２に描画データを出力する際に行う初期化である。もう一つは、プリントプロセッサ１０５がスプールファイル１０４のデータをプリンタ１０８に出力する際の初期化である。
【００３５】
ＯＳの仕様に基づけば、「ulLogPixelsX」３０１，「ulLogPixelsY」３０２はレンダリング解像度を設定することになっているため、プリンタドライバ１０３は両方の初期化に対して同じ解像度を返している。しかし、アプリケーション１０１からの初期化の場合だけスプール軽減用の低解像度の値を返し、プリントプロセッサ１０５からの初期化の時には高解像度のレンダリング解像度（プリンタ１０８の解像度に対応）を返している。これにより、アプリケーション１０１において、レンダリング解像度でレンダリングしたラスタイメージデータを出力するスプールファイル１０４のサイズを小さくしながら、キャラクタコードで出力されている文字列など、解像度に依存せずに出力される描画データについては高品位のままで印刷することができる。
【００３６】
ユニバーサルプリンタドライバ１０９は、ＧＰＤファイル１１１に記述されたレンダリング解像度、用紙情報を基に印刷条件を設定するため、印刷用の高解像度のレンダリング解像度のみを指定する。そこでレンダリングplug-in１１０で解像度の変更を行う必要がある。
【００３７】
まずステップＳ１０３では、ユニバーサルプリンタドライバ１０９は、ＧＰＤファイル１１１に記述されたレンダリング解像度、用紙情報を基にプリンタ情報「ＧＤＩＩＮＦＯ」を設定する。このＧＰＤファイル１１１には、印刷用の高解像度のレンダリング解像度が記述されている。ユニバーサルプリンタドライバ１０９は、印刷用の高解像度のレンダリング解像度用の「ＧＤＩＩＮＦＯ」を作成し、レンダリングplug-in１１０を初期化する。ユニバーサルプリンタドライバ１０９は、レンダリングplug-in１１０を初期化する際に、スプール処理時の初期化呼び出しであることを通知する。この通知の仕組みは、初期化指示情報に、スプール時呼び出しであることを指示するフラグやコマンドの情報を付加することで実現可能である。
【００３８】
次にステップＳ１０４では、レンダリングplug-in１１０が、ユニバーサルプリンタドライバ１０９からのスプール時の呼び出しであると指示された場合に、スプールサイズ軽減用の解像度で上書きするか、即ち、スプールする描画データの解像度を低下させる必要があるかを判定する。
【００３９】
このステップＳ１０４の判定処理を図７のフローチャートを参照して説明する。
【００４０】
図７は、図５のステップＳ１０４における、レンダリングplug-in１１０がスプールサイズの軽減機能をオンするかどうかを判定し、それに応じて解像度を上書きする処理を示すフローチャートである。
【００４１】
まずステップＳ２０１で、レンダリングplug-in１１０は、ユニバーサルプリンタドライバ１０９から初期化の指示がなされた場合に、その初期化がスプール目的のＧＤＩ１０２を経由したアプリケーション１０１からの初期化か、実際に印刷するためのＧＤＩ１０２を経由したプリントプロセッサ１０５からの初期化かであるかを判定する。これを判定する一つの方法として、ユニバーサルプリンタドライバ１０９からの指示に基づいて呼び元のモジュールを調べることが可能なので、呼び元のモジュールの中にプリントプロセッサ１０５を示すコードが含まれるかどうかで判定することができる。また別の方法として、ユニバーサルプリンタドライバ１０９からの指示に、スプール時呼び出しであることを指示するフラグやコマンドの情報を付加することで判定することができる。
【００４２】
また他の方法としては、前述したようにプリントプロセッサ１０５としてＯＳ標準のものを使う以外に、カスタマイズしたプリントプロセッサ１０５をプリンタドライバ１０３とともに供給することもあり得る。その場合、プリントプロセッサ１０５が、プリンタドライバ１０３を初期化する際に、「ＤＥＶＭＯＤＥ」にプリントプロセッサ１０５からの初期化であるというフラグを設定しておき、プリンタドライバ１０３がその値を参照して、その初期化がどこから指示されたかを判定することができる。
【００４３】
また他の方法としては、システムの機能としてアプリケーション１０１からの初期化か、実際に印刷するためのＧＤＩ１０２を経由したプリントプロセッサ１０５からの初期化かを判定する関数を用いることも可能である。
【００４４】
また他の方法としては、ユニバーサルプリンタドライバ１０９がアプリケーション１０１からの初期化か、実際に印刷するためのＧＤＩ１０２を経由したプリントプロセッサ１０５からの初期化かを判定し、レンダリングplug-in１１０に対し初期化の際にフラグとして通知するので、そのフラグを見て判定することも可能である。
【００４５】
更にまた他の方法としては、同じくユニバーサルプリンタドライバ１０９に用意された、アプリケーション１０１からの初期化か、実際に印刷するためのＧＤＩ１０２を経由したプリントプロセッサ１０５からの初期化かを判定するコールバック関数をレンダリングplug-in１１０が利用して判定することも可能である。
【００４６】
このステップＳ２０１で、レンダリングplug-in１１０がアプリケーション１０１からの初期化であると判断した場合はステップＳ２０２に進み、レンダリングplug-in１１０は、スプールサイズの軽減機能が必要かどうかを判定する。これを判定する一つの方法としては、ユーザが選択する方法がある。これは印刷中にエラーが発生して印刷されなかったり、印刷に要する時間が異常に長かったり、印刷してもページの一部又は全体の描画データが抜けて印刷された場合には、ユーザの判定により、プリンタドライバ１０３のユーザ設定機能を用いて、このスプールサイズの軽減機能をオンにする。
【００４７】
図８は、スプールサイズの軽減機能を設定するためのプリンタドライバ１０３のユーザ設定画面例を示す図である。具体的には、図８は、プリンタドライバ１０３の中のユーザインタフェースplug-inモジュール（図示省略）が提供するユーザインタフェースである。ユーザインタフェースplug-inモジュールもまた、レンダリングplug-in１１０と同様にプリンタメーカーにより提供されるモジュールである。８００は「印刷データのサイズを小さくする」かどうかを指示するためのチェックボックスで、このボックス８００がチェックされることにより、スプールサイズの軽減機能が設定される。
【００４８】
ユーザは印刷開始する命令する際に、アプリケーション１０１の印刷設定画面から、プリンタドライバ１０３の設定を行うことができる。プリンタドライバ１０３は、「ＤＥＶＭＯＤＥ」の「dmDriverData」４０１に、このスプールサイズの軽減機能を実行するか否かの情報を記憶し、その情報を印刷時に参照することで判定することができる。
【００４９】
また他の方法としては、プリンタドライバ１０３で、ページ全体をイメージで出力した場合を想定した１ページ当りのスプールファイル１０４のサイズが所定のサイズ以上かどうかに基づいて判定することも可能である。この方法では、「ＤＥＶＭＯＤＥ」の用紙のサイズを示す「dmSize」４０２や、印刷品位を示す「dmPrintQuality」（プリンタの解像度）４０３から決定される。またその他には、プリンタドライバ１０３で、ユーザがスプールサイズから判定するか、常にオン又はオフにするのかなどの機能を設け、その設定値とスプールサイズから判定することも可能である。
【００５０】
図９は、スプールサイズから判定する機能を追加したスプールサイズの軽減機能を設定するためのプリンタドライバ１０３のユーザ設定画面例を示す図である。
【００５１】
この例では、「印刷データのサイズを小さくする」のチェックボックス８００がチェックされている時に、「自動的に判定する」のチェックボックス８０１にチェックできるようになる。この「自動的に判定する」のチェックボックス８０１がチェックされている場合には、スプールサイズに基づいて、自動的にスプールサイズを軽減するために解像度が低下される。
【００５２】
これら図７のステップＳ２０１及びＳ２０２でともに「ＹＥＳ」と判定した場合（スプールサイズの軽減を行う）はステップＳ２０３に進み、レンダリングplug-in１１０は、スプールサイズ軽減用の低解像度でプリンタ情報「ＧＤＩＩＮＦＯ」を上書きする。尚、この場合には、解像度を変更したことをユニバーサルプリンタドライバ１０９にも通知する必要があるので、ユニバーサルプリンタドライバ１０９が用意しているコールバック関数などを用いて、ユニバーサルプリンタドライバ１０９に解像度を変更したことを通知する。
【００５３】
この結果、ユニバーサルプリンタドライバ１０９がスプールサイズの軽減用の低解像度のプリンタ情報をアプリケーション１０１に返すので、前述したレンダリング解像度でレンダリングしたイメージを出力するアプリケーション１０１からのスプールファイル１０４のサイズを小さくできる。しかし、レンダリング解像度でレンダリングしたイメージを出力するアプリケーション１０１の場合には、この低下させた解像度でレンダリングした結果を出力するため、解像度が低下するほどスプールサイズが小さくなるが、それに応じて、その印刷結果も劣化してしまう。そこで、用紙サイズや印刷品位などから、この解像度を決定する必要がある。
【００５４】
こうしてステップＳ２０３を実行した後ステップＳ１０５（図５）に進み、ユニバーサルプリンタドライバ１０９は、プリンタ情報「ＧＤＩＩＮＦＯ」をＧＤＩ１０２に返す。次にステップＳ１０６に進み、ＧＤＩ１０２に返されたプリンタ情報は、そのＧＤＩ１０２を経由してアプリケーション１０１に返される。これによりアプリケーション１０１は、この返されたプリンタ情報に基づいて、その得られた解像度や印刷領域などに基づいて描画データを作成し、ＧＤＩ１０２に出力する。
【００５５】
次にステップＳ１０７に進み、ＧＤＩ１０２は、アプリケーション１０１から受け取った描画データを、Windowsの標準スプールファイル１０４のフォーマットであるＥＭＦフォーマットで、スプールファイル１０４としてスプールする。このスプールが終了するとステップＳ１０８に進み、ＧＤＩ１０２は、プリントプロセッサ１０５に印刷の開始を要求する。
【００５６】
次に図６のステップＳ１０９に進み、ステップＳ１０８で印刷開始が指示されたプリントプロセッサ１０５は、プリンタドライバ１０３を初期化するため、ＧＤＩ１０２に初期化を要求する。ここで前述の図７のステップＳ２０１の判定で、「ＤＥＶＭＯＤＥ」にプリントプロセッサ１０５からの初期化であることを設定して判定する場合には、プリントプロセッサ１０５は、初期化する際に、この「ＤＥＶＭＯＤＥ」にプリントプロセッサ１０５からの初期化であることを示す情報を設定し、ＧＤＩ１０２に対し、プリンタドライバ１０３の初期化を要求するとともに、プリンタ１０８の印刷領域や解像度などのプリンタ情報を要求する。次にステップＳ１１０に進み、プリントプロセッサ１０５からプリンタドライバ１０３の初期化を要求されたＧＤＩ１０２は、プリンタドライバ１０３のユニバーサルプリンタドライバ１０９を初期化し、ユニバーサルプリンタドライバ１０９に対してプリンタ情報である「ＧＤＩＩＮＦＯ」を要求する。
【００５７】
次にステップＳ１１１に進み、これに応じてユニバーサルプリンタドライバ１０９は、「ＧＤＩＩＮＦＯ」を設定してレンダリングplug-in１１０を初期化する。レンダリングplug-in１１０は、前述のステップＳ１０３と同じ初期化関数が呼ばれるため、ステップＳ１０３と同様に、ステップＳ２０１の判定を行う。ここでは、アプリケーション１０１からの初期化でないと判定されるので、プリンタ情報「ＧＤＩＩＮＦＯ」を変更せずにユニバーサルプリンタドライバ１０９に返すので、ユニバーサルプリンタドライバ１０９はプリンタ１０８の解像度である印刷用の高解像度用のプリンタ情報をＧＤＩ１０２に返すことになる。
【００５８】
次にステップＳ１１２に進み、プリントプロセッサ１０５は、このプリンタ情報を基に描画データをＧＤＩ１０２に出力する。この際、まずＧＤＩ１０２に対し、ＧＤＩ１０２経由で得たプリンタ情報に従った解像度への変換（座標空間の変更）を要求する。次にステップＳ１１３に進み、ＧＤＩ１０２は、プリントプロセッサ１０５が要求した解像度の変換指示に従って、スプールファイル１０４の描画データを１ページ毎に読み出してユニバーサルプリンタドライバ１０９に出力する。その結果、スプールされた時と異なる解像度になっても、ＧＤＩ１０２内で解像度変換されてユニバーサルプリンタドライバ１０９に対して印刷が要求されるので、同じレイアウトで印刷することができる。
【００５９】
アプリケーション１０１からＧＤＩ１０２への出力コマンドと、ＧＤＩ１０２からプリンタドライバ１０３への出力コマンドの簡易的に記述した例を図１０と図１１に示す。
【００６０】
図１０は、通常の印刷による出力コマンドの一例を示す図で、図１１は本実施の形態に係る印刷コマンドの一例を示す図である。
【００６１】
図１０において、グラフィックイメージ７０１においては、アプリケーション１０１からの出力が、プリンタドライバ１０３のレンダリング解像度に合わせて印刷されている。７０２はキャラクタコードで出力されている文字列の出力領域を示している。７０３はプリンタドライバ１０３のレンダリング解像度に依存しないオリジナルイメージの拡大出力領域である。実際には、レンダリング用の低い解像度のイメージデータを出力するアプリケーションの場合、このページ全体をレンダリング用の解像度のラスタイメージデータに変換して印刷するが、この図１０では、ラスタイメージデータではなく描画データによって、この印刷イメージを設定している。従って、図１０に示す通常の印刷例では、アプリケーション１０１からの出力が、そのままＧＤＩ１０２からの出力になっている。
【００６２】
図１１は図１０と同じ描画データによる印刷結果を示す図であるが、この例では、アプリケーション１０１からの出力時にはスプール軽減用の低解像度として、印刷用のレンダリング解像度に対して縦横それぞれ「１／２」の値を返しており、これは図１１の「アプリケーションから出力コマンド」に示すようなコマンドで指定される。
【００６３】
図１１と図１０とを比較すると明らかなように、図１０の７０１では、「６００×６００ピクセルの画像」がスプールされているのに対し、図１１の８０１では、「３００×３００ピクセルの画像」がスプールされているので、スプールデータのサイズが減少している。しかし、レンダリング解像度に依存しない文字列及びイメージ８０２，８０３については、その座標情報やサイズが異なるだけで、同じデータサイズでスプールされる。即ち、文字列のサイズは、図１０の７０２で示すサイズ「２００」の半分「１００」となり、座標情報も（１０００，４００），（１０００，６００）のそれぞれの半分である（５００，２００）、（５００，３００）となっている。また８０３で示すイメージに関しても、始点は図１０の（２００，１０００）半分の（１００，５００）、サイズも図１０の（１６００×１６００）の半分である（８００×８００）となっているが、文字列８０２及びイメージ８０３のデータサイズはそのままである。
【００６４】
また「ＧＤＩ１０２からの出力コマンド」においては、グラフィック８０１に関しては、図１０のグラフィック７０１と比べて、印刷されるイメージのサイズ（解像度）が「１／２×１／２」に対応する（３００×３００）となっていて小さくなっているため、印刷された画像品位が低下している。しかし、プリントプロセッサ１０５の要請によるＧＤＩ１０２の解像度変換の結果、６００×６００のサイズで描画され、かつ文字列８０２、イメージ８０３に関しては、図１０の７０２，７０３と全く同じコマンドで出力される。このため、これら文字列８０２及びイメージ８０３は高い解像度でレンダリングされ、図１０の文字列７０２，イメージ７０３と同じ画像品位で印刷できることになる（ステップＳ１１３）。
【００６５】
次いでステップＳ１１４に進み、ユニバーサルプリンタドライバ１０９は、スプールファイル１０４を、ＧＤＩレンダリングエンジン１０７を用いてラスタイメージデータに展開する。そしてステップＳ１１５に進み、ユニバーサルプリンタドライバ１０９は、そのレンダリングしたラスタイメージデータを、プリンタ１０８へ出力するようにレンダリングplug-in１１０に要請する。次いでステップＳ１１６に進み、レンダリングplug-in１１０は、ラスターイメージに対して色処理などを行ってプリンタコマンドに変換などを行った後、プリンタ１０８に出力する。そして、この処理を終了する。
【００６６】
以上説明したように本実施の形態１によれば、印刷した画像の劣化を抑えて、アプリケーションにより印刷が指示されたデータをスプールするデータ量を削減できるという効果がある。
【００６７】
［実施の形態２］
上記実施の形態１では、低解像度のレンダリング解像度でスプールされたＥＭＦフォーマットのスプールファイル１０４を、プリンタドライバ１０３で高解像度にレンダリングする方法について述べた。しかしアプリケーション１０１の判断で、ＥＭＦフォーマットでのスプール自体を止めるように指示して印刷することがある。例えば、ＲＡＷフォーマットと呼ばれる、プリンタドライバ１０３がプリンタ１０８に送信する印刷コマンドデータそのものをスプールするＲＡＷスプールなどに変更する場合である。その場合、前述の実施の形態１では、図１１の「アプリケーションからの出力コマンド」がそのまま、ＧＤＩ１０２経由でプリンタドライバ１０３に出力されるために、縮小されて印刷されてしまう。そこで、以下ではこれを防止する方法について説明する。
【００６８】
図１２は、本発明の実施の形態２に係る印刷システムのＲＡＷスプールの構成を示すブロック図で、前述の図１と共通する部分は同じ記号で示し、その説明を省略する。
【００６９】
前述の実施の形態１では、アプリケーション１０１が印刷要求したデータはＧＤＩ１０２で一旦ＥＭＦデータとしてスプールファイル１０４にスプールされていた。これに対して本実施の形態２に係るＲＡＷスプールの場合には、ＧＤＩ１０２は、直接プリンタドライバ１０３内のユニバーサルプリンタドライバ１０９に印刷を要求する。こうして印刷が要求されたユニバーサルプリンタドライバ１０９は、ＧＤＩレンダリングエンジン１０７を用いて、その描画データをラスタイメージデータにレンダリングした後、プリンタドライバ１０３内のレンダリングplug-in１１０で色処理やプリンタコマンドの付加などを行って出力する。そして、そのプリンタコマンドがスプールファイル１０４としてスプールされる。このスプールされたプリンタコマンドは、プリントプロセッサ１０５及びポートモニタ１０６を経由してプリンタ１０８に送信される。
【００７０】
本実施の形態２における処理について、前述の実施の形態１との違いを中心に図１３及び図１４のフローチャートを参照して説明する。尚、図１３及び図１４において、前述の図５及び図６のフローチャートと共通する部分は同じ記号で示しており、それらの説明を省略する。
【００７１】
ステップＳ１０６で、アプリケーション１０１が描画データを作成してＧＤＩ１０２に出力する際に、アプリケーション１０１はＥＭＦスプールを禁止することができる。
【００７２】
図１５は、アプリケーション１０１が初期化するときに指定する「ＤＯＣＩＮＦＯ」のデータ構造の一部を示した図である。
【００７３】
この「ＤＯＣＩＮＦＯ」の「lpszDatatype」１１０１で、スプールファイル１０４のデータタイプを指定することができる。通常は「０」（ＮＵＬＬと呼ばれる）を指定し、この場合には、システムの設定をそのままで印刷する。このデータタイプの文字列が「ｅｍｆ」であればＥＭＦスプールを示し、「ｒａｗ」であればＲＡＷスプールへの切り替えを要求している。
【００７４】
こうしてステップＳ３０１で、ＧＤＩ１０２は、「ＤＯＣＩＮＦＯ」の「lpszDatatype」１１０１の設定値に基づいて、アプリケーション１０１からＥＭＦスプール以外が指定されたかを判定する。ここで「ＮＯ」、即ち、ＥＭＦスプールが指定されると前述の図５及び図６のステップＳ１０７乃至ステップＳ１１３と同じ処理を行う。
【００７５】
一方、ステップＳ３０１で「ＹＥＳ」、即ち、ＥＭＦスプール以外（ＥＭＦスプールを禁止）が指定されるとステップＳ３０２（図１４）に進み、ＧＤＩ１０２はアプリケーション１０１からの描画データをユニバーサルプリンタドライバ１０９に直接出力する。
【００７６】
こうして前述したステップＳ１０７乃至Ｓ１１３を実行するか、或いはステップＳ３０２の処理を実行するとステップＳ１１４に進み、ユニバーサルプリンタドライバ１０９はＧＤＩレンダリングエンジン１０７を用いてラスタイメージデータにレンダリングする。そしてステップＳ１１５に進み、ユニバーサルプリンタドライバ１０９は、そのレンダリングしたラスタイメージデータをレンダリングplug-in１１０に対してプリンタコマンドに変換してプリンタ１０８に出力するように要請する。しかし、ステップＳ３０１で「ＹＥＳ」と判定した場合には、スプール軽減用の低解像度でレンダリングされている。
【００７７】
そこでステップＳ３０３以降の処理では、低解像度でレンダリングされた場合だけ、プリンタ１０８に出力する前にレンダリングplug-in１１０がスプール軽減用の低解像度から印刷用の高解像度に拡大する必要がある。そのためステップＳ３０３で、レンダリングされたイメージのサイズなどからスプールサイズ軽減用の低解像度でレンダリングしたかどうかを判定する。このステップＳ３０３で「ＮＯ」と判定された場合にはステップＳ１１６に進み、元々印刷用の高解像度でレンダリングされているので、レンダリングplug-in１１０はラスターイメージに対して色処理などを行ってプリンタコマンドに変換した後、プリンタ１０８に出力する。
【００７８】
一方、ステップＳ３０３で「ＹＥＳ」と判定した場合はステップＳ３０４に進み、この場合には、スプールサイズ軽減用の低解像度でレンダリングされているので、レンダリングplug-in１１０は、低解像度でラスタライズされているラスタイメージデータを印刷用の高解像度のイメージデータに拡大変換する。尚この際、ＧＤＩレンダリングエンジン１０７が備える拡大機能を用いて印刷用の解像度に拡大することも可能である。そして最後に、レンダリングplug-in１１０は、ステップＳ３０５で、その拡大したラスタイメージデータをプリンタコマンドに変換してプリンタ１０８に出力する。そして、この処理を終了する。
【００７９】
以上説明したように本実施の形態２によれば、アプリケーションからレンダリング解像度でレンダリングしたラスタイメージデータを出力してスプールファイルのサイズを小さくし、キャラクタコードで記述されている文字列などのように、解像度に依存せずに出力される描画データについては高品位でレンダリングできる。
【００８０】
［実施の形態３］
プリンタ１０８の高解像度化に伴い、画像を縮小して印刷しても、その視認性が損なわれにくいため、複数のページを縮小して一枚の用紙に印刷するというＮ−ｕｐ印刷がよく使われるようになってきた。ここで、Ｎ−ｕｐのＮは１ページ当たりに印刷されるページ数で、１枚の用紙に４ページ分のデータを印刷する場合は４−ｕｐと呼ばれている。
【００８１】
図１６は、４ページ分のデータを１枚の用紙に縦横２ページずつ印刷した４−ｕｐの例を示す図である。
【００８２】
このＮ−ｕｐ印刷では、各ページを縮小して印刷するため、図表などのアプリケーション１０１でよく使われる細い細線などは、縮小されて線幅が「０」となってしまい印刷されない場合がある。
【００８３】
図１７は、１ページ目の一部の細線が印刷されなかった例を示す図である。
【００８４】
ここでは１ページ（Page1）目の罫線である細線の一部が印刷されていない。そこで本実施の形態３では、このようなＮ−ｕｐ印刷時における細線の欠落を防止するものである。尚、この実施の形態３に係るシステム構成は、前述の実施の形態１（図１）と実質的に同様であるため、その説明を省略する。
【００８５】
前述の実施の形態１で説明したように、アプリケーション１０１が印刷要求した描画データ（文書データ、画像データ等の印刷データ）は、通常、ＧＤＩ１０２が一旦ＥＭＦデータとしてスプールファイル１０４にスプールし、プリントプロセッサ１０５が、スプールファイル１０４から印刷出力情報と描画データをページ単位で読み込み、１ページずつＧＤＩ１０２を介してプリンタドライバ１０３に出力して印刷している。ＧＤＩ１０２には、このスプールされたページ毎に用紙の一部の領域を指定し、その領域に１ページ分のデータを縮小して出力する機能があり、この機能を使用すれば、ＧＤＩ１０２に対し用紙への出力終了命令を指定するまでは同じ用紙内に何ページでも出力できる。プリントプロセッサ１０５は、この機能を用いてＮ−ｕｐ印刷を行っている。つまり、プリントプロセッサ１０５は、プリンタドライバ１０３に出力する際に、プリンタドライバ１０３が返した印刷領域をＮ等分し、スプールファイル１０４から印刷出力情報と描画データをページ単位で読み込み、１ページずつＧＤＩ１０２を介してＮ等分した領域に順番に出力を行っている。
【００８６】
本実施の形態３では、プリンタドライバ１０３は、アプリケーション１０１に対して、縮小されることを考慮して解像度に縮小率をかけた解像度を基にプリンタ情報を返す。そして実際の印刷時には、プリンタドライバ１０３が印刷用の高解像のプリンタ情報をアプリケーション１０１に返すようにすることにより、印刷時に縮小されて線幅が「１」のままで印刷できる。
【００８７】
以下、本実施の形態３に係る処理について、前述の実施の形態１との違いについて図１８、図１９及び図２０を参照して詳しく説明する。
【００８８】
図１８及び図１９は、本発明の実施の形態３に係る印刷システムにおける処理の流れを説明するフローチャートである。ここではアプリケーション１０１が作成した描画データをスプールする処理について説明する。ここでも前述の図５及び図６と共通する処理ステップには同じ記号を付して、その説明を省略している。
【００８９】
図１８のステップＳ３０３のステップＳ４０２で細線欠け対策モードかどうかを判定し、そうであればステップＳ４０３に進み、ＧＤＩ１０２からのプリンタドライバ１０３の初期化と「ＧＤＩＩＮＦＯ」と呼ばれるプリンタ情報の要求に対し、アプリケーション１０１からの初期化の場合だけＮ−ｕｐ用の細線欠け対策用の低解像度の値を返し、プリントプロセッサ１０５からの初期化の時には高解像度のレンダリング解像度（プリンタ１０８の解像度に対応）を返す。
【００９０】
図２０は、図１８のステップＳ３０３における、プリンタドライバ１０３内のレンダリングplug-in１１０がＮ−ｕｐ用の細線欠け対策するかどうかを判定し、必要であれば解像度を上書きする処理を説明するフローチャートで、前述の図７と共通する部分は同じ記号で示している。
【００９１】
ステップＳ２０１で、アプリケーション１０１からの初期化であると判断した場合はステップＳ４０２に進み、Ｎ−ｕｐ用の細線欠け対策機能が「ＯＮ」かどうかを判定する。これはユーザが、この機能を「ＯＮ」にしたかどうかで判定する。Ｎ−ｕｐで印刷した結果、細線の一部が抜けて印刷された場合には、ユーザの判定により、プリンタドライバ１０３のユーザ設定機能を用いて、このＮ−ｕｐ用の細線欠け対策機能がオンにされる。
【００９２】
図２１は、このＮ−ｕｐ用の細線欠け対策機能を設定するためのプリンタドライバ１０３のユーザ設定画面例を示す図である。
【００９３】
図において、２１００は「Ｎ−ｕｐ時の細線欠けを防ぐ」機能を設定するためのチェックボックスで、このボックス２１００がチェックされると、Ｎ−ｕｐ用の細線欠け対策機能が設定される。ユーザは印刷開始を命令する際に、このアプリケーション１０１の印刷設定画面から、プリンタドライバ１０３の設定を行うことができる。プリンタドライバ１０３は、「ＤＥＶＭＯＤＥ」の「dmDriverData」４０１（図４）に、このＮ−ｕｐ用の細線欠け対策機能を実行するか否かの情報を記憶し、その情報を印刷時に参照することで判定することができる。
【００９４】
上記ステップＳ２０１及びＳ４０２でともに「ＹＥＳ」（Ｎ−ｕｐ用の細線欠け対策を行う）と判定した場合はステップＳ４０３に進み、レンダリングplug-in１１０は、ユニバーサルプリンタドライバ１０９のＮ−ｕｐ用の細線欠け対策機能用の低解像度のプリンタ情報に上書きし、ユニバーサルプリンタドライバ１０９が、Ｎ−ｕｐ用の細線欠け対策機能用の低解像度のプリンタ情報で上書きされたプリンタ情報をアプリケーション１０１に返す。
【００９５】
ここで解像度の決定は、Ｎ−ｕｐの縮小率から決定できる。いま縦方向にページ数Ｎｖ、横方向にページ数Ｎｈを、一枚の用紙に印刷する場合、その縮小率の逆数Ｓは、
｜Ｎｈ  （Ｎｈ≧Ｎｖ）
Ｓ＝    ｜
｜Ｎｖ  （Ｎｈ＜Ｎｖ）
で求めることができる。
【００９６】
しかし、通常、Ｎ−ｕｐでは見やすさを向上するため、ページ間やページの周りに空白を入れることが多い。
【００９７】
図２２は、Ｎ−ｕｐでページ間に空白部分を挿入して印刷する例を説明する図である。図の斜線分が空白部分である。空白部をどのようにとるかは色々な方法があるが、水平方向、垂直方向に等間隔であることが望ましいので、等間隔である場合を例にして説明する。
【００９８】
いま用紙の幅をＷ、用紙高さをＨとする。水平垂及び直方向の各空白部Ｉｈ，Ｉｖは、拡大縮小率が決定した後でないと決まらないので、まず、空白部の幅の最低値Ｉを定め、縮小率を求める。
【００９９】
縮小後の各ページの幅は｛Ｗ−Ｉ×（Ｎ＋１）｝で求めることができるので、水平方向の縮小率の逆数をＳｈは、
Ｓｈ＝Ｗ÷（（Ｗ−Ｉ×（Ｎｈ＋１））÷Ｎｈ）
で求めることができる。同様に、垂直方向の縮小率の逆数Ｓｖは、
Ｓｖ＝Ｈ÷（（Ｈ−Ｉ×（Ｎｖ＋１））÷Ｎｖ）
で求まり、Ｓは以下で決定される。
【０１００】
｜Ｓｈ  （Ｓｈ≧Ｓｖ）
Ｓ＝      ｜
｜Ｓｖ  （Ｓｈ＜Ｓｖ）
尚、この計算の結果、Ｓは整数にならない場合がある。本実施の形態３でも前述の実施の形態２と同様の処理を行うことが可能で、その場合にはレンダリング後に拡大することになるが、拡大時に非整数倍で拡大すると処理時間がかかる等の問題があるため、少数以下を切り上げて整数にすることも可能である。
【０１０１】
印刷用のレンダリング解像度をＲとすると、Ｎ−ｕｐ用の細線欠け対策用の解像度は、Ｒ／Ｓで決定される。これにより、１画素幅等で出力用に要求された細線は、縮小後でも線幅が「０」にならない線としてスプールされる。
【０１０２】
次に図１９のステップＳ１１０以降について説明する。ステップＳ１１０でプリントプロセッサ１０５からプリンタドライバ１０３の初期化を要求されたＧＤＩ１０２は、プリンタドライバ１０３内のユニバーサルプリンタドライバ１０９を初期化し、プリンタドライバ１０３に対してプリンタ情報である「ＧＤＩＩＮＦＯ」を要求する。
【０１０３】
これに応じてユニバーサルプリンタドライバ１０９は、「ＧＤＩＩＮＦＯ」を設定してレンダリングplug-in１１０を初期化する。この際、レンダリングplug-in１１０は前述のステップＳ３０３と同じ初期化関数を呼ぶため、ステップＳ３０３と同様に、ステップＳ２０１（図２０）の判定を行う。ここでは、アプリケーション１０１からの初期化でないと判定されるので、解像度情報を変更せずに処理をユニバーサルプリンタドライバ１０９に戻し、ユニバーサルプリンタドライバ１０９は、このプリンタ情報をＧＤＩ１０２に返す。
【０１０４】
次にステップＳ３１２に進み、プリントプロセッサ１０５は、このプリンタ情報を基に描画データをＧＤＩ１０２に出力する。Ｎ−ｕｐの際には、スプールファイル１０４の描画データから１ページ毎に読み出してプリンタドライバ１０３に出力するという処理をＮ回行う。この際、プリントプロセッサ１０５は、ページ毎にＧＤＩ１０２経由で得たプリンタ情報に従い、ＧＤＩ１０２に対し、印刷位置の指定及び解像度変換（座標空間の変更）を要求する。こうしてＮページ分の出力が終了したら、用紙への書き込みが終了したことをＧＤＩ１０２に通知する。
【０１０５】
次にステップＳ１１３に進み、ＧＤＩ１０２は、プリントプロセッサ１０５が要求した各ページの印刷位置、解像度の変換指示に従って、Ｎページ分のスプールファイル１０４の描画データを１枚のページとしてユニバーサルプリンタドライバ１０９に出力する。次にステップＳ１１４に進み、ユニバーサルプリンタドライバ１０９は、スプールファイル１０４を、ＧＤＩレンダリングエンジン１０７を用いてラスタイメージデータにレンダリングする。
【０１０６】
このとき、Ｎ−ｕｐ用の細線欠け対策が「ＯＦＦ」の場合には、アプリケーション１０１がレンダリング解像度６００ｄｐｉのプリンタに対し、１画素幅の細線を１インチ描画しようとした場合、ステップＳ１０３で、印刷用の解像度６００ｄｐｉがセットされているため６００ｄｐｉのプリンタ情報が返される。このため（０，０）〜（１，６００）の領域を塗りつぶすという描画命令を行う。
【０１０７】
これに対して例えば、４−ｕｐの場合には、ステップＳ３１２の座標変換で縦横１／２の領域に縮小して印刷されるが、通常は１未満の値は切り捨てるため、（０，０）〜（０，３００）、つまり幅「０」の領域を塗りつぶすというように変換されてしまう。これによりＧＤＩ１０２は、プリンタドライバ１０３に描画命令出力することなく、次の描画命令の処理を行い、細線が印刷されなくなってしまう。但し、（１，０）〜（２，６００）の領域を塗りつぶすという描画命令は、１／２の領域に縮小しても（０，０）〜（１，３００）の領域を描画すると変換されるため１画素の幅で描画されることになる。つまり、位置によって印刷されたりされなかったりする。
【０１０８】
一方、Ｎ−ｕｐ用の細線欠け対策が「ＯＮ」に設定されている場合には、１画素幅の細線を１インチ描画しようとした場合、ステップＳ４０３で、４−ｕｐではレンダリングplug-in１１０プリンタ情報の解像度を３００ｄｐｉと上書きする。これによりユニバーサルプリンタドライバ１０９は、その上書きされた３００ｄｐｉのプリンタ情報を返すので、アプリケーション１０１は（０，０）〜（１，３００）の領域を塗りつぶすという描画命令を行う。しかし実際に印刷するときにはレンダリングplug-in１１０が上書きしないので、ユニバーサルプリンタドライバ１０９が６００ｄｐｉの解像度のプリンタ情報を返す。このため前述の実施の形態１で説明したプリントプロセッサ１０５がスプールされている描画データをプリンタドライバ１０３の解像度に合わせて座標情報を変換して出力する機能が働き、（０，０）〜（２，６００）を塗りつぶすという描画命令に変換される。その結果、４−ｕｐで「１／２」に縮小して印刷しても（０，０）〜（１，３００）の描画命令として１画素幅の細線が０．５インチ幅で描画される。
【０１０９】
そしてステップＳ１１５に進み、ユニバーサルプリンタドライバ１０９は、そのレンダリングしたラスタイメージデータをレンダリングplug-in１１０に出力するように要求する。そしてステップＳ１１６で、レンダリングplug-in１１０がプリンタコマンドに変換してプリンタ１０８に出力する。そしてこの処理を終了する。
【０１１０】
以上説明したように本発明の実施の形態３によれば、Ｎ−ｕｐ印刷で各ページを縮小して印刷しても、図表などのアプリケーション１０１でよく使われる細線などが幅「０」になって印刷されなくなるという問題を回避できるという効果がある。
【０１１１】
（その他の実施の形態）
本発明の目的は前述したように、実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体をシステムあるいは装置に提供し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フロッピィディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ，ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【０１１２】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれている。
【０１１３】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含む。
【図面の簡単な説明】
【０１１４】
【図１】本発明の実施の形態１に係る印刷システムの構成を示すブロック図である。
【図２】各用紙サイズ及び各レンダリング解像度に対する１ページ当りのスプールファイルのサイズの一例を示す図である。
【図３】ＧＤＩＩＮＦＯのデータ構造の一部を示す図である。
【図４】ＤＥＶＭＯＤＥのデータ構造の一部を示す図である。
【図５】本発明の実施の形態１に係る印刷システムにおける処理の流れの一例を示すフローチャートである。
【図６】本発明の実施の形態１に係る印刷システムにおける処理の流れの一例を示すフローチャートである。
【図７】図５のステップＳ１０４における判定及びその判定に基づく処理を説明するフローチャートである。
【図８】スプールサイズの軽減機能を設定するためのプリンタドライバのユーザ設定画面例を示す図である。
【図９】スプールサイズから判定する機能を追加したスプールサイズの軽減機能を設定するためのプリンタドライバのユーザ設定画面例を示す図である。
【図１０】通常の印刷におけるアプリケーションからの出力コマンドとＧＤＩからの出力コマンドの例を簡易的に記述した図である。
【図１１】本実施の形態に係る印刷におけるアプリケーションからの出力コマンドとＧＤＩからの出力コマンドの例を簡易的に記述した図である。
【図１２】本発明の実施の形態２に係る印刷システムの構成を示すブロック図である。
【図１３】本発明の実施の形態２に係る印刷システムにおける処理の流れの一例を示すフローチャートである。
【図１４】本発明の実施の形態２に係る印刷システムにおける処理の流れの一例を示すフローチャートである。
【図１５】ＤＯＣＩＮＦＯデータ構造の一部を示す図である。
【図１６】４ページのデータを１枚の用紙に縦横２ページずつ印刷した４−ｕｐ印刷例を示す図である。
【図１７】Ｎ−ｕｐ印刷で一部の細線が印刷されなかった例を示す図である。
【図１８】本発明の実施の形態３に係る印刷システムにおける処理の流れを説明するフローチャートである。
【図１９】本発明の実施の形態３に係る印刷システムにおける処理の流れを説明するフローチャートである。
【図２０】図１８のステップＳ３０３における判定及びその判定に基づく処理を説明するフローチャートである。
【図２１】Ｎ−ｕｐ用の細線欠け対策機能を設定するためのプリンタドライバのユーザ設定画面例を示す図である。
【図２２】Ｎ−ｕｐ印刷で、ページ間に空白部分を挿入して印刷する例を説明する図である。
【図１】
2005148954.tif 000003
【図２】
2005148954.tif 000004
【図３】
2005148954.tif 000005
【図４】
2005148954.tif 000006
【図５】
2005148954.tif 000007
【図６】
2005148954.tif 000008
【図７】
2005148954.tif 000009
【図８】
2005148954.tif 000010
【図９】
2005148954.tif 000011
【図１０】
2005148954.tif 000012
【図１１】
2005148954.tif 000013
【図１２】
2005148954.tif 000014
【図１３】
2005148954.tif 000015
【図１４】
2005148954.tif 000016
【図１５】
2005148954.tif 000017
【図１６】
2005148954.tif 000018
【図１７】
2005148954.tif 000019
【図１８】
2005148954.tif 000020
【図１９】
2005148954.tif 000021
【図２０】
2005148954.tif 000022
【図２１】
2005148954.tif 000023
【図２２】
2005148954.tif 000024