(57)【要約】【課題】アプリケーションソフトウェアがプリンタへの出力データを作成するのに時間がかかる場合には、プリント処理を並行して行うことでプリント終了までを高速に行う。【解決手段】並行処理モードは所定のアプリケーション１０２からのみ指定できるようにしておき、並行処理モードでは、アプリケーション１０２は常にプリンタ１０５の用紙搬送方向（用紙の上から下）、すなわち１ページ分の上から下にデータを順に出力するとともに、プリンタドライバ１０４はＯＳ１０３に対しアンバンディングであると宣言し、バンディング処理はプリンタドライバ１０４で行う。かかる並行処理時は、スキャンしたデータを次の領域のスキャン中にプリントするので、コピー開始から印刷終了までの時間は短くなる。【選択図】      図１
2004157982.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションソフトウェア及びプリンタドライバがインストールされた情報処理装置における印刷制御方法であって、
前記アプリケーションソフトウェアが１ページ分のデータを記録用紙の印刷方向に合わせて順に出力する処理を実行する出力工程と、
前記プリンタドライバが入力されたデータを１ページ分スプールすることなく、印刷データに変換して前記画像出力装置に出力する処理を実行する変換工程と、
並行処理モード時に前記出力工程と前記変換工程とを並行処理する並行処理工程とを含むことを特徴とする印刷制御方法。
【請求項２】
前記アプリケーションソフトウェアから並行処理モードが指定された場合に、前記プリンタドライバが前記並行処理モードをサポートするか否かを判定する判定工程を更に含むことを特徴とする請求項１に記載の印刷制御方法。
【請求項３】
前記アプリケーションソフトウェアが並行処理モードを指定する際に、前記アプリケーションソフトウェアと前記プリンタドライバとで、拡張ＡＰＩを介して前記判定工程を実現することを特徴とする請求項２に記載の印刷制御方法。
【請求項４】
前記並行処理工程を行う際に、前記プリンタドライバが、前記情報処理装置にインストールされている基本ソフトウェアのスプール設定をオフにする設定工程を更に含むことを特徴とする請求項１〜３のいずれか１項に記載の印刷制御方法。
【請求項５】
前記並行処理工程を行う際に、前記プリンタドライバが、前記情報処理装置にインストールされている基本ソフトウェアのバンディング処理を停止するよう前記基本ソフトウェアに対して通知する通知工程を更に含むことを特徴とする請求項１〜４のいずれか１項に記載の印刷制御方法。
【請求項６】
前記プリンタドライバが、前記アプリケーションソフトウェアから出力されたデータと、画像出力装置の出力するバンドの位置との関係を判定する位置関係判定工程を更に含み、
前記位置関係判定工程の判定結果に応じて、バンド状に分割したデータが前記画像出力装置に出力されることを特徴とする請求項１〜５のいずれか１項に記載の印刷制御方法。
【請求項７】
前記アプリケーションソフトウェアは、１ページ分のデータを記録用紙の印刷方向に合わせて順に出力する際にバンド状に分割して出力することを特徴とする請求項６に記載の印刷制御方法。
【請求項８】
アプリケーションソフトウェア及びプリンタドライバがインストールされた情報処理装置であって、
前記アプリケーションソフトウェアが１ページ分のデータを記録用紙の印刷方向に合わせて順に出力する処理を実行し、前記プリンタドライバが入力されたデータを１ページ分スプールすることなく、印刷データに変換して前記画像出力装置に出力する処理を実行する並行処理モードを可能にしたことを特徴とする情報処理装置。
【請求項９】
前記アプリケーションソフトウェアから並行処理モードが指定された場合に、前記プリンタドライバが前記並行処理モードをサポートするか否かを判定することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記アプリケーションソフトウェアが並行処理モードを指定する際に、前記アプリケーションソフトウェアと前記プリンタドライバとで、拡張ＡＰＩを介して前記判定を実現することを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記並行処理モードの際に、前記プリンタドライバが、該情報処理装置にインストールされている基本ソフトウェアのスプール設定をオフにすることを特徴とする請求項８〜１０のいずれか１項に記載の情報処理装置。
【請求項１２】
前記並行処理モードの際に、前記プリンタドライバが、該情報処理装置にインストールされている基本ソフトウェアのバンディング処理を停止するよう前記基本ソフトウェアに対して通知することを特徴とする請求項８〜１１のいずれか１項に記載の情報処理装置。
【請求項１３】
前記プリンタドライバが、前記アプリケーションソフトウェアから出力されたデータと、画像出力装置の出力するバンドの位置との関係を判定し、前記位置関係判定の結果に応じて、バンド状に分割したデータが前記画像出力装置に出力されることを特徴とする請求項８〜１２のいずれか１項に記載の情報処理装置。
【請求項１４】
前記アプリケーションソフトウェアは、１ページ分のデータを記録用紙の印刷方向に合わせて順に出力する際にバンド状に分割して出力することを特徴とする請求項１３に記載の情報処理装置。
【請求項１５】
アプリケーションソフトウェア及びプリンタドライバがインストールされた情報処理装置と、画像出力装置とが接続されたプリントシステムであって、
前記アプリケーションソフトウェアが１ページ分のデータを記録用紙の印刷方向に合わせて順に出力する処理を実行し、前記プリンタドライバが入力されたデータを１ページ分スプールすることなく、印刷データに変換して前記画像出力装置に出力する処理を実行する並行処理モードを可能にしたことを特徴とするプリントシステム。
【請求項１６】
アプリケーションソフトウェア及びプリンタドライバがインストールされたコンピュータを制御するためのコンピュータプログラムであって、
前記アプリケーションソフトウェアが１ページ分のデータを記録用紙の印刷方向に合わせて順に出力する処理を実行し、前記プリンタドライバが入力されたデータを１ページ分スプールすることなく、印刷データに変換して前記画像出力装置に出力する処理を実行する並行処理をコンピュータに実行させることを特徴とするコンピュータプログラム。
【請求項１７】
請求項１６に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、アプリケーションソフトウェア等で作成した文字、図形等の描画データをラスタイメージの画像に展開して画像出力装置に送信するプリントシステム、情報処理装置、印刷制御方法、コンピュータプログラム、及びコンピュータ読み取り可能な記憶媒体に関するものである。
【０００２】
【従来の技術】
近年のカラープリンタやスキャナの低価格化から、コンピュータにカラープリンタ、スキャナを接続して、安価で手軽にカラー原稿をコピーすること等が可能になった。
【０００３】
通常、コンピュータにカラープリンタ、スキャナを接続してコピーする場合、コンピュータ上のアプリケーションソフトウェアが、一旦スキャナから画像をスキャナドライバを介して読み取り、コンピュータ上にファイルとして保存し、その後ユーザがスキャナアプリケーション上でファイルを指定して印刷を指示することにより、読み取った画像をプリンタドライバを介してカラープリンタに出力する方法が取られる。
【０００４】
一般的に普及しているコンピュータにＭｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（Ｒ）をＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）として使用する場合、ＯＳの仕様上、アプリケーションソフトウェアから出力されたデータは、１ページ分のデータのスプールが終了するまでは、プリンタドライバに対して描画出力に伴う印刷が開始されない。また、ページ記述言語を処理できるプリンタでは、プリンタ内部で印刷データを１ページ分記憶し、その後印刷処理を開始するため、ページ記述言語が送信される順序がばらばらであっても構わないが、ラスターデータ（ビットマップデータ）を処理するプリンタでは、一般にプリンタ内部で印刷データを１ページ分記憶する前に印刷処理を開始するため、コンピュータから送信される印刷データは、記録用紙の印刷方向に合わせて上部から送信される必要がある。よって、描画出力をラスター展開するプリンタドライバでは、記録用紙の印刷方向に合わせて印刷データを出力すべく、１ページ分のデータをスプールし、描画内容の順序を入れ替えて、印刷データを生成している。
【０００５】
このように、従来は、スキャナドライバを介した画像の読み取り処理と、プリンタドライバを介する出力処理とは別々に動作する仕組みが一般的である（特許文献１）。
【０００６】
【特許文献１】
特開２００１−１４４９４０号公報
【０００７】
【発明が解決しようとする課題】
しかし、スキャナからの画像の取り込み、及び、画像データのプリンタへの印字はそれぞれ時間がかかるため、ユーザからのコピー開始要請から印刷終了までに多くの時間がかかってしまうという問題があった。
【０００８】
本発明は上記の点に鑑みてなされたものであり、アプリケーションソフトウェアがプリンタドライバに対して印刷を指示する場合に、アプリケーションソフトウェアが行う描画出力とプリンタドライバが行う印刷データ生成処理とを１ページ内で並行して行うことでプリント終了までを高速に行うことを目的とする。
【０００９】
【課題を解決するための手段】
本発明の印刷制御方法は、アプリケーションソフトウェア及びプリンタドライバがインストールされた情報処理装置における印刷制御方法であって、前記アプリケーションソフトウェアが１ページ分のデータを記録用紙の印刷方向に合わせて順に出力する処理を実行する出力工程と、前記プリンタドライバが入力されたデータを１ページ分スプールすることなく、印刷データに変換して前記画像出力装置に出力する処理を実行する変換工程と、並行処理モード時に前記出力工程と前記変換工程とを並行処理する並行処理工程とを含む点に特徴を有する。
【００１０】
本発明の情報処置装置は、アプリケーションソフトウェア及びプリンタドライバがインストールされた情報処理装置であって、前記アプリケーションソフトウェアが１ページ分のデータを記録用紙の印刷方向に合わせて順に出力する処理を実行し、前記プリンタドライバが入力されたデータを１ページ分スプールすることなく、印刷データに変換して前記画像出力装置に出力する処理を実行する並行処理モードを可能にした点に特徴を有する。
【００１１】
本発明のプリントシステムは、アプリケーションソフトウェア及びプリンタドライバがインストールされた情報処理装置と、画像出力装置とが接続されたプリントシステムであって、前記アプリケーションソフトウェアが１ページ分のデータを記録用紙の印刷方向に合わせて順に出力する処理を実行し、前記プリンタドライバが入力されたデータを１ページ分スプールすることなく、印刷データに変換して前記画像出力装置に出力する処理を実行する並行処理モードを可能にした点に特徴を有する。
【００１２】
本発明のコンピュータプログラムは、アプリケーションソフトウェア及びプリンタドライバがインストールされたコンピュータを制御するためのコンピュータプログラムであって、前記アプリケーションソフトウェアが１ページ分のデータを記録用紙の印刷方向に合わせて順に出力する処理を実行し、前記プリンタドライバが入力されたデータを１ページ分スプールすることなく、印刷データに変換して前記画像出力装置に出力する処理を実行する並行処理をコンピュータに実行させる点に特徴を有する。
【００１３】
本発明のコンピュータ読み取り可能な記憶媒体は、上記本発明のコンピュータプログラムを格納した点に特徴を有する。
【００１４】
【発明の実施の形態】
以下、図面を参照して、本発明のプリントシステム、情報処理装置、印刷制御方法、コンピュータプログラム、及びコンピュータ読み取り可能な記憶媒体の実施の形態について説明する。
【００１５】
図１には、本実施の形態におけるプリントシステムの機能構成の概略を示す。例えば一般的に普及しているパーソナルコンピュータ１０１にＭｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（Ｒ）をＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ：基本ソフトウェア）として使用し、任意の印刷可能なアプリケーションソフトウェア１０２（以下、アプリケーション１０２）をインストールし、プリンタ１０５及びスキャナ１０７を接続した形態が考えられる。
【００１６】
アプリケーション１０２は、ＯＳ１０３を経由し、スキャナドライバ１０６を使ってスキャナ１０７から画像データを入力し、プリンタドライバ１０４を使ってプリンタ１０５に画像を出力する。
【００１７】
従来の技術で説明したように、通常、スキャナ１０７からのスキャナドライバ１０６の入力処理、及び、プリンタ１０５での出力のためのプリンタドライバ１０４の印刷データ生成処理には時間がかかる。そこで、スキャナ１０７からデータを入力しながらプリンタ１０５で印刷するという並行処理を行うことにより高速にコピーすることを実現させるものである。
【００１８】
ところで、アプリケーション１０２がプリンタ１０５に画像データを出力しても、
１−１）ＯＳのスプーリング処理
１−２）Ｗｉｎｄｏｗｓ（Ｒ）アプリケーション・プログラミング・インタフェース
（ＡＰＩ）の影響
により、１ページ分のデータが作成されるまでＯＳ１０３からプリンタドライバ１０４にデータが出力されず、１ページ分のスキャン後にプリントしてしまうという問題があった。したがって、並行処理を可能にするには、これらの点についてなんらかの対策をたてる必要がある。
【００１９】
１−１）ＯＳのスプーリング処理
アプリケーション１０２からの印刷時、印刷が終了する前にアプリケーション１０２が次の処理を開始できるように、ＯＳ１０３にはバックグラウンド印刷機能がある。この機能は、ＯＳ１０３がアプリケーション１０２からの出力コマンドを一旦ＥＭＦ（Ｅｎｈａｎｃｅｄ  Ｍｅｔａ  Ｆｉｌｅ）データとしてスプールし、アプリケーション１０２が次の処理を開始できるようにするものである。アプリケーション１０２が次の作業を行っているときに、ＯＳ１０３がスプールされたＥＭＦデータをプリンタドライバ１０４に出力し印刷を行う。
【００２０】
ＥＭＦスプール設定はプリンタドライバ１０４毎に設定可能で、ユーザが切り替えたり、プリンタドライバ１０４で禁止したりすることも可能であるが、通常、プリンタドライバ１０４がインストールされた時点でＥＭＦスプールはＯＮの設定になっており、そのまま使用されている。
【００２１】
特に、ＯＳ１０３がこのＥＭＦデータによるスプールファイルを利用して、最後のページから印刷する逆順印刷や、１枚の用紙に複数ページを印刷するというＮ−ｕｐ印刷等多くの機能を実現していることから、バックグラウンド印刷機能が不要だからと、ユーザやプリンタドライバ１０４がこのＥＭＦスプール設定をＯＦＦにすると、逆順印刷やＮ−ｕｐ印刷ができなくなるという問題もある。
【００２２】
そこで、スキャナ１０７からのコピー並行処理等の並行処理を行う場合には、スキャナアプリケーションの指示に応じて、プリンタドライバ１０４でＥＭＦスプール設定をＯＦＦにすることで、ユーザが意識することなく並行処理できるようにする。また、逆順印刷やＮ−ｕｐ印刷等のＥＭＦスプール機能を利用する機能をユーザがＯＮにしている場合には、並行処理を行わないという処理も可能となる。
【００２３】
１−２）Ｗｉｎｄｏｗｓ（Ｒ）アプリケーション・プログラミング・インタフェース  （ＡＰＩ）の影響
Ｗｉｎｄｏｗｓ（Ｒ）  ＡＰＩの仕様ではアプリケーション１０２はページ内に任意の順で出力できるため、ページ終了命令まで印刷処理を開始できない。例えば、図２に示すデータを印刷する場合、アプリケーション１０２は以下の順番で処理を行う。
１．ページ開始命令
２．背景のビットマップ２０１を出力（図２では現れていないが、色の薄い模様が描かれている）
３．下方のイラスト２０４を出力
４．文字列『あけましておめでとうございます』２０２を出力
５．文字列『昨年は…元旦』２０３を出力
６．ページ終了命令
【００２４】
このように、一旦描画した背景の上に文字等を再度描画することが可能であるため、ページ終了命令までページすべての位置の印字データが決まらず印刷を開始できない。
【００２５】
Ｗｉｎｄｏｗｓ（Ｒ）のプリントシステムにおいては、このため以下の方法で印刷を行っている。
【００２６】
２−１）バンディングドライバの場合
アプリケーション１０２等で作成した文字、図形等の画像データをラスタイメージで画像出力装置に出力するタイプのプリンタ１０５の場合、一旦ホストコンピュータであるパーソナルコンピュータ１０１上の仮想的なページメモリに展開後、画像出力装置に出力している。
【００２７】
この際、ホストコンピュータのメモリ効率化等の関係で、この仮想ページメモリを幾つかのバンドに分割処理し、バンド毎にＯＳ１０３からの画像データ等の出力要求に従いバンドメモリにイメージで描画し、そのバンド領域すべての描画が終了したというＯＳ１０３からのコントロールに従いバンドメモリに展開されたデータを画像出力装置に出力している。
【００２８】
図３はバンド分割の概要を示す図であるが、ＯＳ１０３は各バンドに属す出力コマンドを抽出し、プリンタドライバ１０４に出力する。そのため、ＯＳ１０３は、一旦ページ分の描画コマンドを保持し、バンド毎にプリンタドライバ１０４に出力要求する、例えば、バンド１であればバンド１に属す、
１．背景ビットマップ２０１（図３では現れていないが、色の薄い模様が描かれている）
２．文字列『あけましておめでとうございます』２０２
３．文字列『昨年は…元旦』２０３
をプリンタドライバ１０４に出力要求する。
【００２９】
要求を受けたプリンタドライバ１０４は、上記出力コマンドのうちバンド１に属す領域だけをプリンタ１０５に出力し、ＯＳ１０３に処理終了と次のバンド位置を通知する。終了通知を受けたＯＳ１０３は、以降のバンド２、３、・・・を順にバンド１同様に対象とするバンドに属すデータだけをプリンタドライバ１０４に出力する。
【００３０】
以上述べたようにバンディングドライバの場合には、ＯＳ１０３内でページ分のデータを一旦スプール（保持）しプリンタドライバ１０４に出力している。
【００３１】
２−２）アンバンディングドライバの場合
プリンタ１０５がページメモリや１ページ分の描画データ記憶手段を持ちページ分の描画データをプリンタ１０５内部で保持できる場合や、プリンタドライバ１０４内にスプール機能を持ちプリンタドライバ１０４内部でページ分の描画データを保持できる場合には、プリンタドライバ１０４はＯＳ１０３に対しアンバンディングタイプで処理できることを通知する。
【００３２】
アンバンディングのプリンタドライバ１０４の場合、ＯＳ１０３はＥＭＦスプール設定がされていなければ、アプリケーション１０２からの出力を即座にプリンタドライバ１０４及びプリンタ１０５に出力する。出力コマンドを受けたプリンタドライバ１０４及びプリンタ１０５は、Ｗｉｎｄｏｗｓ（Ｒ）  ＡＰＩの関係でページ終了命令があるまでデータが確定しないため、内部に出力データを保持し、ページ終了命令があった時点で印刷処理を開始する。
【００３３】
このように、Ｗｉｎｄｏｗｓ（Ｒ）  ＡＰＩを満たす、すべてのアプリケーションからの印刷を満たそうとすると、ページ終了までは印刷できないことになる。よって、バンディングドライバもアンバンディングドライバも、ＯＳ若しくはプリンタドライバ側で１ページ分のスプール処理を行う必要があり、印刷処理に時間を要してしまう。
【００３４】
そこで、プリンタドライバ１０４に並行処理のモードを作成し、
・アプリケーション１０２は常にプリンタ１０５の用紙搬送方向（用紙の上から下）、すなわち１ページ分の上から下にデータを順に出力する。
・並行処理モードは上記のルールを知るアプリケーション１０２から指定できるようにする。
・プリンタドライバ１０４はＯＳ１０３に対しアンバンディングであると宣言し、バンディング処理はプリンタドライバ１０４で行う
ことで、並行処理できるようにする。
【００３５】
図４は、スキャナ１０７でのスキャン（Ｓｃａｎで表示）時間とプリンタ１０５でのプリント（Ｐｒｉｎｔ及びＰで表示）時間を示したものである。通常は、スキャナ１０７でのスキャン後、ＯＳ１０３がスプールされたＥＭＦスプールファイルの印刷をプリンタ１０５に要求し、プリントが行われるのに対して、並行処理時は、スキャンしたデータを次の領域のスキャン中にプリントするので、コピー開始から印刷終了までの時間は短くなる。
【００３６】
以下、図６〜１０を参照して本実施の形態における処理の流れを詳細に説明する。図６はアプリケーション１０２の処理の流れ、図７はプリンタドライバ１０４の初期化処理の流れ、図８はプリンタドライバ１０４の印刷処理の流れ、図９はプリンタドライバ１０４のページ終了処理の流れ、図１０は並行処理が可能かどうか判断する処理の流れを示すフローチャートである。
【００３７】
図１１は、アプリケーション１０２を起動した時のユーザインタフェースである。図１１のユーザインタフェースにおいて、コピーキーが特徴的なものであり、このコピーキーをユーザが押下することにより、スキャナからの読取と、プリンタへの出力が並行処理される並行処理モードが開始されることになる。アプリケーション１０２はスキャンしたデータをプリンタ１０５に印刷するコピー機能の他、メールでスキャンした画像をインターネット経由で送信するメール機能、ファイルに保存する保存機能等を持つ。
【００３８】
ユーザが図１１のコピーキーを押下したら、まず、アプリケーション１０２は、並行処理が可能かどうかを判断する（図６のステップＳ１０９）。
【００３９】
図１０は、並行処理が可能かどうか判断する処理を詳細に示したものである。まず、アプリケーション１０２は拡張ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を用いてプリンタドライバ１０６に機能を問い合わせ、並行処理がサポートされているかどうか判断する。ＯＳにこのようなアプリケーション１０２がプリンタドライバ１０６の能力を問い合わせる機能がある場合には、ＯＳを経由して問い合わせを行うが、ＯＳにこのような機能がない場合、アプリケーション１０２はＯＳを経由せずに直接プリンタドライバ１０６に問い合わせることで可能になる（図１０のステップＳ５０１）。プリンタドライバには並行処理をサポートしているものといないものがあり、サポートしている場合は、拡張ＡＰＩを介してアプリケーション１０２にサポートしていることを通知する。
【００４０】
ステップＳ５０１で並行処理がサポートされていると判定された場合、次に通信方式が高速かどうか判断する。並行処理を行う場合、スキャナ１０７からの画像入力とプリンタ１０５への画像出力が同時に処理する必要があるためＣＰＵに高負荷が発生する、また、スキャナ１０７とプリンタ１０５は通常それぞれＵＳＢという通信方式で接続されているが、パーソナルコンピュータ１０１の異なるＵＳＢポートでも一つのハードウェアチップが制御を行っていることがあるため、送受信にも処理が間に合わないほどの非常に大きな負荷が発生することがある。その結果、スキャナ１０７のデータ受信が間に合わず、スキャナ１０７のデータを読み込みキャリッジが一時的に止まり、再読み込みが発生し返って遅くなってしまうことがある。
【００４１】
しかし、スキャナ１０７又はプリンタ１０５が、最新のパーソナルコンピュータ１０１の多くので採用されているＵＳＢ２．０等の高速な通信方式で接続されていれば、上記の問題が発生しなくなる。
【００４２】
そこで、アプリケーション１０２は、例えばＵＳＢ２．０のインタフェース接続されているかを認識することにより、スキャナ１０７又はプリンタ１０５との通信方式が高速かどうか判定を行う。このとき、スキャナ１０７又はプリンタ１０５両方の接続方式で判定することも可能であるが、どちらか一方、できればよりデータサイズが大きいスキャナ１０７との接続方式だけで判断することも可能である。また、それほど高速でない通信方式であっても、スキャナ１０７とプリンタ１０５が異なるチップで送受信していることで判定を代用することも可能である（ステップＳ５０２）。
【００４３】
次にステップＳ５０３で、アプリケーション１０２は、パーソナルコンピュータ１０１とスキャナ１０７が高速な通信方式で接続されている判定された場合、プリンタドライバ１０４に対して問い合わせることにより、プリンタ１０５が印刷するメディア（用紙）が普通紙かどうか判定する。
【００４４】
近年のプリンタ１０５の高画質化に伴いデジタル画像等を印刷するニーズが増え、印刷するメディアも銀塩写真と同様の印刷結果が得られる高価なメディアが発売されている。このようなメディアへの印刷は非常に複雑な画像処理が必要なため、ＣＰＵへの負荷は更に大きくなり、前述したスキャナ１０７の受信が間に合わなくなるという問題が発生しやすくなる。また、プリンタ１０５への印刷も一時的に止まることが発生するが、その間にインクが乾くことで非連続部分ができてしまい、高画質なメディアではそれが出力画質に影響してしまうという問題がある。そこでメディアが普通紙かどうか判断し、普通紙の場合だけ並行処理を行うことでこの問題を解決することができる（ステップＳ５０３）。
【００４５】
ステップＳ５０３で普通紙であると判定された場合には、並行処理でのコピーを開始するが、ユーザの意思で並行処理を行うかどうかの切り替えることも可能である。もし、ユーザが判断できるようにするには、プリンタドライバ１０４等の設定を促すユーザインタフェース（図１２）内で並行処理する／しないを指定する項目を設け、ステップＳ１０９（Ｓ５０１、Ｓ５０２、Ｓ５０３）で並行処理が可能と判定された場合にこの項目の設定を可能にし、ユーザの設定に応じて並行処理するかどうかを判断する（ステップＳ１１０）。
【００４６】
次に、実際のコピー処理を開始するが、ステップＳ１０９（Ｓ５０１、Ｓ５０２、Ｓ５０３）で並行処理が行わないと判定された場合、及び、ステップＳ１１０でユーザが並行処理を行わないと判断した場合には、次のプリンタドライバ１０４への並行処理指示を行わずにステップＳ１０２から処理を行う。
【００４７】
一方、並行処理を行うとユーザは判断した場合には、アプリケーション１０２はプリンタドライバ１０４に対し並行処理モードとするように指示する（ステップＳ１０１）。
【００４８】
上述したように並行処理モードでは特定のデータ出力順序のみでしか使えないため、アプリケーション１０２はこの出力順序で印刷する場合のみプリンタドライバ１０４に並行処理モードでの印刷を指定する。ユーザやこの出力順序等を知らないアプリケーションが並行処理モードでの印刷を指定し、アプリケーション１０２が既に印刷済みの領域に対し印刷を要求すると正常に印刷できなくなるためである。例えば、図２に示すデータの場合には、背景ビットマップ２０１をアプリケーション１０２が出力した時点でページ全体の印刷を行ってしまい、その後の文字等が印刷されなくなってしまう。そのため、Ｗｉｎｄｏｗｓ（Ｒ）の仕様にはない独自の設定方法が好ましい。例えば、プリンタドライバ１０４に独自の関数を設け、並行処理に対応したアプリケーション１０２がその関数を使って設定する。
【００４９】
初期化要求されたプリンタドライバ１０４の処理を図７を参照して説明する。まず、プリンタドライバ１０４はアプリケーション１０２から並行処理モードが指定されたかどうかを判定する（ステップＳ２０１）。
【００５０】
ステップＳ２０１でＹｅｓと判定された場合には、ドライバ設定が並行処理に適するかどうかを判定する。並行処理モードでは、ＥＭＦスプールを禁止し、バンディング処理をプリンタドライバ１０４内部で行う。しかし、ＯＳ１０３はＥＭＦスプールファイルを使って多くの機能を実現している。例えば、アプリケーション１０２からの複数ページが印刷される際、全てのページをＥＭＦスプールファイルとしてスプールし、最後のページから順番に出力するという逆順印刷等の機能は使えなくなる。同じくバンディング処理を利用することで実現できる機能も使えなくなる。
【００５１】
そこで、これらの機能を使って印刷するようにユーザが指示した場合には、並行処理モードを行わずユーザが設定した機能をつけて印刷を行うため、ここでは現在の設定がＥＭＦスプール又はバンディングが必要かを判定する（ステップＳ２０２）。ただし、機能によっては並行処理を優先して、その機能を使わずに印刷することも可能である。
【００５２】
ステップＳ２０２でＮｏと判定された場合には、並行処理を行うために、まず対象とするジョブのＥＭＦ処理を禁止する（ステップＳ２０３）。禁止は、ＯＳ１０３からジョブ（アプリケーションの印刷単位）単位に初期化される際に設定しＯＳ１０３に返すＤＥＶＩＮＦＯというデータに、ＧＣＡＰＳ＿ＤＯＮＴＪＯＵＲＮＡＬというフラグをセットすることで実現できる。このフラグは初期化するジョブに対してのみ有効であり、それ以降の印刷には影響しない。
【００５３】
続いて、ＯＳ１０３に対しアンバンディングでの処理であると宣言する（ステップＳ２０４）。プリンタドライバ１０４はＳｕｒｆａｃｅと呼ばれる仮想デバイスであるデータを作成し、初期化の際にＯＳ１０３に返すが、ＯＳ１０３内のＥｎｇＭａｒｋＢａｎｄｉｎｇＳｕｒｆａｃｅ．という関数をコールすることで、作成したＳｕｒｆａｃｅをバンディングドライバ用に設定することができる。ＯＳ１０３は、バンディング用のＳｕｒｆａｃｅを返されるとバンディングドライバとして処理する。一方、ＥｎｇＭａｒｋＢａｎｄｉｎｇＳｕｒｆａｃｅ．をコールせずに返すとアンバンディングとして処理する。ここではＯＳ１０３がアンバンディングとして処理する必要があるので、ＥｎｇＭａｒｋＢａｎｄｉｎｇＳｕｒｆａｃｅ．をコールせずに返す。この設定も対象とするジョブに対してのみ有効であり、それ以降の印刷には有効とならない。
【００５４】
一方、ステップＳ２０１でＮｏ又はステップＳ２０２でＹｅｓだった場合、つまりアプリケーション１０２から並行処理モードの指示がされなかったか、並行処理を指定されたがＥＭＦスプール又はバンディングが必要な設定であるとプリンタドライバ１０４が判断し並行処理を止めた場合には、ステップＳ２０３、Ｓ２０４とは逆に、まずＯＳ１０３からジョブ単位の初期化時にＧＣＡＰＳ＿ＤＯＮＴＪＯＵＲＮＡＬフラグをセットせずにＤＥＶＩＮＦＯを設定し（ステップＳ２０５）、ＳｕｒｆａｃｅをＥｎｇＭａｒｋＢａｎｄｉｎｇＳｕｒｆａｃｅ．にコールしてからＯＳ１０３に返す（ステップＳ２０６）。
【００５５】
図６に説明を戻して、プリンタドライバ１０４の初期化が終わったら、アプリケーション１０２はスキャナ１０７から入力した画像をプリンタ１０５に出力するが、スキャナ１０７から入力は原稿の１ページをバンド状に分割し、そのバンド単位で入出力を繰り返す。すなわち、アプリケーション１０２はスキャナドライバ１０６経由でスキャナ１０７から１バンド分の画像を入力し（ステップＳ１０２）、入力した１バンド分の画像をプリンタドライバ１０４経由でプリンタ１０５に出力する（ステップＳ１０３）。その結果、スキャナ１０７から次のバンドの画像を入力しているときに、プリンタ１０５が前のバンドの印刷処理を行い並行で処理できるようになる。このバンドのサイズはプリンタドライバ１０４のバンドサイズと同じでもよいが、異なってもよい。
【００５６】
出力を要求されたプリンタドライバ１０４の処理を図８を参照して説明する。まず、出力要求されたイメージが対象としているプリンタドライバ１０４のバンド内に含まれるかを判定する。プリンタドライバ１０４のバンド位置は、例えば、最初は図３のバンド１のようにページの一番上に位置する。その後、バンド内のデータを全て印刷するに従い、バンド２、バンド３というようにバンド位置を下方向に変えていく。ここでの判定は、出力要求された出力位置の一部でもバンドメモリ内に含まれるかどうかで判定する（ステップＳ３０１）。
【００５７】
バンド内に含まれると判定した場合、出力イメージのうち含まれている部分をバンドメモリに描画、つまり、出力イメージを印字領域に合わせて拡大縮小しバンドメモリにコピーする（ステップＳ３０２）。
【００５８】
ステップＳ３０１でＮｏだった場合又はステップＳ３０２の処理が終了したら、次に出力イメージとプリンタドライバ１０４のバンド位置との関係を判定する。図５は出力用紙上のプリンタドライバ１０４のプリンタバンド位置と出力イメ［ジの関係を示す図であるが、同図（ａ）は出力イメージがプリンタバンド位置内に納まっているケース、（ｂ）は出力イメージが次のバンドにもまたがっているケース、（ｃ）は出力イメージがバンド位置より下のケースである。バンドは上から下に順次処理されているとする。
【００５９】
まず、出力イメージがバンドの最後まで描画したかを判定する。図５の例では、（ｂ）のようにバンドの下端にも出力イメージが描画される場合にはＹｅｓと判定され、（ａ）及び（ｃ）の場合にはＮｏと判定される（ステップＳ３０３）。
【００６０】
ステップＳ３０３でＮｏだった場合、次に出力イメージが以降のバンドにも含まれるかを判定する。ここでは、（ｃ）の場合にはバンドの下端よりも出力イメージの方が下にあるのでＹｅｓと判定され、（ａ）の場合にはバンドの下端より下には出力イメージがないのでＮｏと判定される（ステップＳ３０４）。
【００６１】
（ａ）のようにステップＳ３０４で以降のバンドには含まれないと判定された場合、出力要請されたイメージはバンドメモリへの描画は終了したが、現在のバンドメモリについては以降の描画命令で出力される可能性があるのでプリンタ１０５への出力は行わない、これで、ステップＳ１０３に対するプリンタドライバ１０４の処理は終了する。
【００６２】
一方、（ｂ）のようにステップＳ３０３でバンドの最後まで描画したと判定した場合、及び、（ｃ）のようにステップＳ３０４で以降のバンドにも含まれると判定した場合、並行処理モードではアプリケーション１０２からのイメージ描画命令は上から下にしか来ないため、バンドの下端まで描画、又は、以降のバンドへの描画命令があったということは、その後このバンドへのイメージの出力要請はないと判定できる。そこで、バンドメモリに描画したイメージをプリンタコマンドに変換してプリンタ１０５に出力する（ステップＳ３０５）。
【００６３】
次に、ステップＳ３０５で出力したバンドがページの最後のバンドであるかを判定する（ステップＳ３０６）。もし、ページの最後のバンドであると判定した場合には、ページ内のすべてのデータの出力が終了したことになるので、ここでもステップＳ１０３に対するプリンタドライバ１０４の処理は終了する。
【００６４】
一方、ステップＳ３０６でＮｏ、つまりすべてのバンドがまだ終了していないと判定されると、バンドの位置を次の位置に更新し（ステップＳ３０７）、ステップＳ３０１からの処理を繰り返す。
【００６５】
図６に説明を戻して、プリンタドライバ１０４に出力後のアプリケーション１０２の処理について説明する。スキャナドライバ１０６からの画像を入力し、プリンタドライバ１０４にイメージを出力するという処理を繰り返し１ページ分行う必要があるため、プリンタドライバ１０４の出力処理が終わったら、アプリケーション１０２はページ分のイメージをスキャンしたかを判定する（ステップＳ１０４）。
【００６６】
ステップＳ１０４でＮｏ、つまりページ分のスキャンが終了していないと判定した場合にはステップＳ１０２からの処理を繰り返す。一方、ステップＳ１０４でＹｅｓ、つまりページ分のスキャンが終了したとすると、アプリケーション１０２は、プリンタドライバ１０４に対し、ページ終了命令を発行しアプリケーション１０２は処理を終了する。
【００６７】
ページ終了命令を受けたプリンタドライバ１０４の処理を図９を参照して説明する。バンドメモリに描画され、まだプリンタ１０５に出力していないイメージをプリンタドライバ１０４はプリンタ１０５に出力する必要がある。まず、現在のバンドメモリに描画されているイメージがプリンタ１０５に出力されたものであるかを判定する。これはアプリケーション１０２から最後に出力されたイメージが、図５（ｂ）、（ｃ）のようにバンドの最後の位置まで描画し、ステップＳ３０５で既にプリンタ１０５に出力済みの場合があるからである（ステップＳ４０１）。
【００６８】
ステップＳ４０１でＹｅｓと判定した場合には、ここでプリンタドライバ１０４の処理を終了する。一方、Ｎｏと判定した場合には、ステップＳ３０５同様バンドメモリに描画したイメージプリンタコマンドに変換してプリンタ１０５に出力する。これで、本処理を終了する。
【００６９】
以上述べた実施の形態では、スキャナ１０７とプリンタ１０５を用いたコピーを例として説明したが、他のデバイスやネットワーク等から入力したデータのプリントや、アプリケーションが複雑な処理を行うため印字データ（イメージ以外の文字等も含む）を作成するのに時間がかかる場合にも同様の効果が得られることは言うまでもない。
【００７０】
（その他の実施の形態）
上述した実施の形態の機能を実現するべく各種のデバイスを動作させるように、該各種デバイスと接続された装置或いはシステム内のコンピュータに対し、上記実施の形態の機能を実現するためのソフトウェアのプログラムコードを供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ或いはＭＰＵ）に格納されたプログラムに従って上記各種デバイスを動作させることによって実施したものも、本発明の範疇に含まれる。
【００７１】
また、この場合、上記ソフトウェアのプログラムコード自体が上述した実施の形態の機能を実現することになり、そのプログラムコード自体は本発明を構成する。そのプログラムコードの伝送媒体としては、プログラム情報を搬送波として伝搬させて供給するためのコンピュータネットワーク（ＬＡＮ、インターネット等のＷＡＮ、無線通信ネットワーク等）システムにおける通信媒体（光ファイバ等の有線回線や無線回線等）を用いることができる。
【００７２】
さらに、上記プログラムコードをコンピュータに供給するための手段、例えばかかるプログラムコードを格納した記録媒体は本発明を構成する。かかるプログラムコードを記憶する記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００７３】
また、コンピュータが供給されたプログラムコードを実行することにより、上述の実施の形態の機能が実現されるだけでなく、そのプログラムコードがコンピュータにおいて稼働しているＯＳ（オペレーティングシステム）或いは他のアプリケーションソフト等と共同して上述の実施の形態の機能が実現される場合にもかかるプログラムコードは本発明の実施の形態に含まれることはいうまでもない。
【００７４】
さらに、供給されたプログラムコードがコンピュータの機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに格納された後、そのプログラムコードの指示に基づいてその機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって上述した実施の形態の機能が実現される場合にも本発明に含まれることはいうまでもない。
【００７５】
なお、上記実施の形態において示した各部の形状及び構造は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその精神、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【００７６】
以上述べたように本実施例によれば、アプリケーションソフトウェアがスキャナから読み込んだ画像をプリンタで印刷する等、アプリケーションソフトウェアがプリンタへの出力データを作成するのに時間がかかる場合に、プリント処理を並行して行うことでプリント終了までを高速に行うことができる。
【００７７】
【発明の効果】
以上述べたように本発明によれば、アプリケーションソフトウェアがプリンタドライバに対して印刷を指示する場合に、アプリケーションソフトウェアが行う描画出力とプリンタドライバが行う印刷データ生成処理とを１ページ内で並行して行うことでプリント終了までを高速に行うことができる。
【図面の簡単な説明】
【図１】実施の形態のプリントシステムの機能構成を示すブロック図である。
【図２】アプリケーション１０２からの印刷データの一例を説明するための図である。
【図３】印刷データのバンド分割の一例を説明するための図である。
【図４】スキャナ１０７でのスキャン時間とプリンタ１０５でのプリント時間の関係を示す図である。
【図５】出力用紙上のプリンタドライバ１０４のプリンタバンド位置と出力イメージの関係を示す図である。
【図６】アプリケーション１０２の処理の流れを示すフローチャートである。
【図７】プリンタドライバ１０４の初期化処理の流れを示すフローチャートである。
【図８】プリンタドライバ１０４の印刷処理の流れを示すフローチャートである。
【図９】プリンタドライバ１０４のページ終了処理の流れを示すフローチャートである。
【図１０】並行処理が可能かどうか判断する処理の流れを示すフローチャートである。
【図１１】アプリケーション１０２に対しコピーを要求するためのユーザインタフェースを示す図である。
【図１２】アプリケーション１０２に対し並行処理する／しない設定するためのユーザインタフェースを示す図である。
【符号の説明】
１０１    （情報処理装置である）パーソナルコンピュータ
１０２    アプリケーションソフトウェア
１０３    ＯＳ
１０４    プリンタドライバ
１０５    （画像出力装置である）プリンタ
１０６    スキャナドライバ
１０７    スキャナ
【図１】
2004157982.tif 000003
【図２】
2004157982.tif 000004
【図３】
2004157982.tif 000005
【図４】
2004157982.tif 000006
【図５】
2004157982.tif 000007
【図６】
2004157982.tif 000008
【図７】
2004157982.tif 000009
【図８】
2004157982.tif 000010
【図９】
2004157982.tif 000011
【図１０】
2004157982.tif 000012
【図１１】
2004157982.tif 000013
【図１２】
2004157982.tif 000014