(57)【要約】    【課題】  ユーザが期待する印刷体裁を保ちつつ、且つ、両面印刷時に用紙の裏面にあたる白紙ページに対する無駄な出力処理を防止することができる印刷制御装置を提供する。    【解決手段】  プリンタ１５００に接続され、外部メモリ１１１を備えるコンピュータ３０００（印刷制御装置）において、ＣＰＵ１０１は、印刷要求ページが用紙の表面又は裏面のどちらに印刷されるページであるのかを判断し（Ｓ９０５）、印刷要求ページが用紙の表面に印刷されるページであると判断した場合には、そのページに関するＰＤＬデータを外部メモリ１１１に記憶し（Ｓ９１５）、印刷要求ページが用紙の裏面に印刷されるページであると判断した場合には、そのページが白紙であるか否かを判断し（Ｓ９０６）、用紙の裏面に白紙が印刷されると判断した場合には、外部メモリ１１１に記憶されたＰＤＬデータの設定を両面印刷から片面印刷に変更し（Ｓ９１１）、該設定が変更されたＰＤＬデータをプリンタ１５００へ出力する（Ｓ９１２）。【選択図】      図９
2006178740.tif 000002
【特許請求の範囲】
【請求項１】
出力装置に接続され、記憶媒体を備える印刷制御装置において、
印刷要求ページが用紙の表面又は裏面のどちらに印刷されるページであるのかを判断する表裏判断手段と、
前記表裏判断手段により印刷要求ページが用紙の表面に印刷されるページであると判断された場合には、そのページに関する印刷データを前記記憶媒体に記憶する記憶手段と、
前記表裏判断手段により印刷要求ページが用紙の裏面に印刷されるページであると判断された場合には、そのページが白紙であるか否かを判断する白紙判断手段と、
前記白紙判断手段により用紙の裏面に白紙が印刷されると判断された場合には、前記記憶手段で記憶された印刷データの設定を両面印刷から片面印刷に変更する変更手段と、
前記変更手段で設定が変更された印刷データを前記出力装置へ出力する出力手段と
を備えることを特徴とする印刷制御装置。
【請求項２】
前記印刷要求ページの印刷設定が片面印刷であるか又は両面印刷であるかを判断する印刷設定判断手段と、
前記印刷設定判断手段による前記印刷要求ページの印刷設定が片面印刷である場合、前記記憶媒体に印刷データが記憶されているか否かを判断する印刷データ有無判断手段とを備え、
前記印刷データ有無判断手段により前記記憶媒体に印刷データが記憶されていると判断された場合には、前記出力手段は、該印刷データを前記出力装置に出力することを特徴とする請求項１記載の印刷制御装置。
【請求項３】
前記変更手段は、前記記憶手段で記憶された印刷データの両面印刷の設定を削除し、片面印刷の設定を付加する、又は前記記憶手段で記憶された印刷データの両面印刷の設定に新たな片面印刷の設定を付加することを特徴とする請求項１又は２記載の印刷制御装置。
【請求項４】
前記白紙判断手段により用紙の裏面に印刷されるページが白紙でないと判断された場合、前記出力手段は、前記変更手段で設定が変更されていない、前記記憶媒体に記憶された印刷データを前記出力装置に出力することを特徴とする請求項１乃至３のいずれか１項記載の印刷制御装置。
【請求項５】
前記出力手段により印刷データを前記出力装置へ出力した後、当該印刷データを前記記憶媒体から削除する削除手段を備えることを特徴とする請求項１乃至４のいずれか１項記載の印刷制御装置。
【請求項６】
前記出力手段により印刷データを前記出力装置へ出力した後、前記変更手段は、以後の印刷データの設定を片面印刷から両面印刷に変更することを特徴とする請求項１乃至５のいずれか１項記載の印刷制御装置。
【請求項７】
出力装置に接続され、記憶媒体を備える印刷制御装置の印刷制御方法において、
印刷要求ページが用紙の表面又は裏面のどちらに印刷されるページであるのかを判断する表裏判断工程と、
前記表裏判断工程により印刷要求ページが用紙の表面に印刷されるページであると判断された場合には、そのページに関する印刷データを前記記憶媒体に記憶する記憶工程と、
前記表裏判断工程により印刷要求ページが用紙の裏面に印刷されるページであると判断された場合には、そのページが白紙であるか否かを判断する白紙判断工程と、
前記白紙判断工程により用紙の裏面に白紙が印刷されると判断された場合には、前記記憶工程で記憶された印刷データの設定を両面印刷から片面印刷に変更する変更工程と、
前記変更工程で設定が変更された印刷データを前記出力装置へ出力する出力工程と
を備えることを特徴とする印刷制御方法。
【請求項８】
出力装置に接続され、記憶媒体を備えるコンピュータで実行されるプログラムにおいて、
印刷要求ページが用紙の表面又は裏面のどちらに印刷されるページであるのかを判断する表裏判断モジュールと、
前記表裏判断モジュールにより印刷要求ページが用紙の表面に印刷されるページであると判断された場合には、そのページに関する印刷データを前記記憶媒体に記憶する記憶モジュールと、
前記表裏判断モジュールにより印刷要求ページが用紙の裏面に印刷されるページであると判断された場合には、そのページが白紙であるか否かを判断する白紙判断モジュールと、
前記白紙判断モジュールにより用紙の裏面に白紙が印刷されると判断された場合には、前記記憶モジュールで記憶された印刷データの設定を両面印刷から片面印刷に変更する変更モジュールと、
前記変更モジュールで設定が変更された印刷データを前記出力装置へ出力する出力モジュールと
を備えることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
両面印刷データを制御する印刷制御装置、印刷制御方法及びプログラムに関し、特に、無駄な出力処理を出力装置に実行させない印刷制御装置、印刷制御方法及びプログラムに関する。
【背景技術】
【０００２】
原稿を複数部数印刷する場合、出力機能として「ページ単位出力機能」と「部数単位出力機能」の２通りがある。例えば、ユーザが３ページのデータを３部印刷する場合には、前者の「ページ単位出力機能」では、１ページ目を３枚出力した後、２ページ目を３枚出力し、最後に、３ページ目を３枚出力するという印刷順序でデータが出力され、後者の「部数単位出力機能」では、１ページ目→２ページ目→３ページ目のようにページ順の出力を３回繰り返すという印刷順序でデータが出力される。
【０００３】
ここで、後者に挙げた「部数単位出力機能」は、印刷制御装置で実現される場合とアプリケーションで実現される場合とが存在する。印刷制御装置で部数単位の出力が可能な場合には、通常、図１５で示すようなプリンタドライバのユーザインターフェースにおいて、部数単位出力機能を有効にするためのチェックボックス５０１が用意されている。一方、図１６で示すアプリケーションのユーザインターフェースでも、部数単位出力を指定するためのチェックボックス６０３が用意されている場合がある。
【０００４】
この部数単位出力機能を以下のような方法で実現しているアプリケーションが存在する。
【０００５】
ユーザが図１７のような全３ページのデータを３部印刷する場合に、図１８のような１ページ目から３ページ目までのデータを３組備える合計９ページからなる１部のデータに変換した上で印刷を行うといった方法である。この結果、全３ページのデータを３部印刷した場合と同等の印刷結果が得られることになる。この方法では、片面印刷の際には、全３ページのデータを３部印刷した場合と同様の印刷体裁が得られる。
【０００６】
しかし、全ページ数が奇数のデータを複数部数両面印刷した際には、まず、出力用紙の表面に１ページ目のデータ、及びその出力用紙の裏面に２ページ目のデータが印刷される場合を｛１、２｝と表す場合、ユーザが期待する印刷体裁は、図１９のように｛１、２｝−｛３、印刷なし｝という印刷物が３部作成されるというものである。しかし、実際の印刷物の印刷体裁では、図２０に示すように｛１、２｝−｛３、１｝−｛２、３｝−｛１、２｝−｛３、印刷なし｝という印刷物となる。
【０００７】
そこで、この両面印刷時における印刷結果の問題を解決するため、全ページ数が奇数のデータを両面印刷する際には、最終ページの後に白紙のページを付加した上で１部のデータに変換するといった機能をさらに有する第１のアプリケーションが存在する。この場合、上述の例を用いると、印刷物の印刷体裁は、図２１のように｛１、２｝−｛３、白紙｝−｛１、２｝−｛３、白紙｝−｛１、２｝−｛３、白紙｝となり、ユーザが期待する印刷体裁と同等の印刷結果が取得できる。さらに、最後のページは白紙を付加せず、印刷物の印刷体裁を｛１、２｝−｛３、白紙｝−｛１、２｝−｛３、白紙｝−｛１、２｝−｛３、印刷なし｝とすることで、ユーザが期待する印刷体裁と同等の印刷結果が得られる第２のアプリケーションも存在する。
【０００８】
また、両面複写モードが選択されているときに、原稿の読み込み枚数が奇数であるか否かをチェックし、奇数枚であるときに白紙ページを付与してデータの読み込みを行い、画像出力時には、白紙相当の画像を出力する画像記録装置が知られている（例えば、特許文献１参照）。
【特許文献１】特開平８−９７９９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記第１のアプリケーションでは、全ページ数が奇数のデータを両面印刷する際に、必ず印刷部数分だけ白紙ページが付加されることになる。同様に、上記第２のアプリケーションでは、全ページ数が奇数のデータを両面印刷する際に、必ず印刷部数から１を減じた分の白紙ページが付加されることになる。即ち、上述の例では、ユーザは全３ページのデータを３部、つまり、合計９ページ分のデータを印刷しようとしているにも関わらず、第１のアプリケーションでは３ページ分の白紙ページが付加されるため、全１２ページ分の印刷が行われることになる。同様に、第２のアプリケーションでは２ページ分の白紙ページが付加されるため、全１１ページ分の印刷が行われることになる。
【００１０】
このように、第１のアプリケーションでも第２のアプリケーションでも、付加された白紙ページの分だけ、無駄な印刷処理が行われ、出力結果を取得するまでに必要以上の時間がかかり、ユーザに不都合を及ぼす場合がある。
【００１１】
また、上記画像記録装置を使用した場合にも、付加された白紙ページの分だけ、無駄な印刷処理が行われ、出力結果を取得するまでに必要以上の時間がかかり、ユーザに不都合を及ぼす場合がある。
【００１２】
本発明は、上記の課題を解決するためになされたものであり、ユーザが期待する印刷体裁を保ちつつ、且つ、両面印刷時に用紙の裏面にあたる白紙ページに対する無駄な出力処理を防止することができる印刷制御装置及びその制御方法、印刷システム、プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、請求項１の印刷制御装置は、出力装置に接続され、記憶媒体を備える印刷制御装置において、印刷要求ページが用紙の表面又は裏面のどちらに印刷されるページであるのかを判断する表裏判断手段と、前記表裏判断手段により印刷要求ページが用紙の表面に印刷されるページであると判断された場合には、そのページに関する印刷データを前記記憶媒体に記憶する記憶手段と、前記表裏判断手段により印刷要求ページが用紙の裏面に印刷されるページであると判断された場合には、そのページが白紙であるか否かを判断する白紙判断手段と、前記白紙判断手段により用紙の裏面に白紙が印刷されると判断された場合には、前記記憶手段で記憶された印刷データの設定を両面印刷から片面印刷に変更する変更手段と、前記変更手段で設定が変更された印刷データを前記出力装置へ出力する出力手段とを備えることを特徴とする。
【００１４】
請求項７の印刷制御方法は、出力装置に接続され、記憶媒体を備える印刷制御装置の印刷制御方法において、印刷要求ページが用紙の表面又は裏面のどちらに印刷されるページであるのかを判断する表裏判断工程と、前記表裏判断工程により印刷要求ページが用紙の表面に印刷されるページであると判断された場合には、そのページに関する印刷データを前記記憶媒体に記憶する記憶工程と、前記表裏判断工程により印刷要求ページが用紙の裏面に印刷されるページであると判断された場合には、そのページが白紙であるか否かを判断する白紙判断工程と、前記白紙判断工程により用紙の裏面に白紙が印刷されると判断された場合には、前記記憶工程で記憶された印刷データの設定を両面印刷から片面印刷に変更する変更工程と、前記変更工程で設定が変更された印刷データを前記出力装置へ出力する出力工程とを備えることを特徴とする。
【００１５】
請求項８のプログラムは、出力装置に接続され、記憶媒体を備えるコンピュータで実行されるプログラムにおいて、印刷要求ページが用紙の表面又は裏面のどちらに印刷されるページであるのかを判断する表裏判断モジュールと、前記表裏判断モジュールにより印刷要求ページが用紙の表面に印刷されるページであると判断された場合には、そのページに関する印刷データを前記記憶媒体に記憶する記憶モジュールと、前記表裏判断モジュールにより印刷要求ページが用紙の裏面に印刷されるページであると判断された場合には、そのページが白紙であるか否かを判断する白紙判断モジュールと、前記白紙判断モジュールにより用紙の裏面に白紙が印刷されると判断された場合には、前記記憶モジュールで記憶された印刷データの設定を両面印刷から片面印刷に変更する変更モジュールと、前記変更モジュールで設定が変更された印刷データを前記出力装置へ出力する出力モジュールとを備えることを特徴とする。
【発明の効果】
【００１６】
請求項１の印刷制御装置、請求項７の印刷制御方法及び請求項８のプログラムによれば、用紙の裏面に白紙が印刷されると判断された場合には、印刷データの設定が両面印刷から片面印刷に変更され、その設定が変更された印刷データが出力装置へ出力される。従って、両面印刷時、用紙の裏面が白紙の場合には、その用紙の表面に相当するページを片面印刷で出力すると共に、裏面に相当する白紙ページの印刷を行わないようになり、用紙の裏面が白紙であるページが存在するジョブに対しても、ユーザが期待すると思われる印刷体裁を保ちつつ、且つ、用紙の裏面にあたる白紙ページに対する無駄な出力処理を防止することができる。
【００１７】
これにより、前述したトラフィックの問題、及び印刷体裁の問題双方を解消することが可能となる。
【００１８】
また、印刷された用紙の面数をカウントし、そのカウント数に応じて課金処理を行う機能を有する出力装置が存在するが、請求項１の印刷制御装置、請求項７の印刷制御方法及び請求項８のプログラムによれば、白紙ページに対して無駄な出力処理をさせないので、白紙ページに対応する不要な料金が課されることを回避することができる。
【００１９】
さらに、請求項１の印刷制御装置、請求項７の印刷制御方法及び請求項８のプログラムによれば、印刷ジョブデータ全体ではなく、印刷要求ページ毎に処理が行われるので、記憶媒体の使用記憶領域の削減、及び処理時間の低減を図ることができる。
【００２０】
請求項６の印刷制御装置によれば、印刷データを前記出力装置へ出力した後、以後の印刷データの設定が片面印刷から両面印刷に変更されるので、出力された印刷データの設定が他の印刷データの設定に反映されずに、適切な印刷が行われ、ユーザが期待する印刷体裁を保つことができる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【００２２】
図１は、本発明の実施の形態に係る印刷制御装置を備える印刷システムの構成を示すブロック図である。
【００２３】
図１の印刷システムは、主として印刷制御装置としてのコンピュータ３０００とプリンタ１５００とを備えている。
【００２４】
図１において、コンピュータ３０００に含まれるＲＯＭ１０３又は外部メモリ１１１には、ＣＰＵ１０１の制御プログラムであるＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）やオペレーティングシステムプログラム（以下「ＯＳ」という）や、コンピュータ３０００の実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。本実施の形態で使用するＯＳは、例えば、マイクロソフト社製のウィンドウズ（登録商標）ＸＰを想定するが、これに限るものではない。ＲＡＭ１０２は、ＣＰＵ１０１の主メモリ又はワークエリアとして機能する。ＣＰＵ１０１は、各種処理の実行に際して必要なプログラムや必要なデータ等をＲＡＭ１０２にロードして、プログラムを実行することで各種処理を実現する。
【００２５】
また、入力コントローラ（入力Ｃ）１０５は、キーボード（ＫＢ）１０９や不図示のマウス等のポインティングデバイスからの入力を制御する。ビデオコントローラ（ＶＣ）１０６は、ＣＲＴディスプレイ（ＣＲＴ）１１０等の表示器への表示を制御する。表示器はＣＲＴだけでなく、液晶ディスプレイ等でもよい。これらは必要に応じて管理者が使用するものである。
【００２６】
メモリコントローラ（ＭＣ）１０７は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、又は各種データ等を記憶するハードディスク（ＨＤ）やフロッピー（登録商標）ディスク（ＦＤ）、或いはＰＣＭＣＩＡカードスロットにアダプタを介して接続されるコンパクトフラッシュ（登録商標）メモリ等の外部メモリ１１１へのアクセスを制御する。
【００２７】
尚、外部メモリ１１１，メモリコントローラ（MC）１０７は１個に限らず、少なくとも１個以上備えていればよい。
【００２８】
通信Ｉ／Ｆコントローラ（通信Ｉ／ＦＣ）１０８は、ネットワーク１２１を介して、外部機器と接続及び通信するものであり、コンピュータ３０００の通信制御処理を実行する。例えば、ＴＣＰ／ＩＰを用いたインターネット通信やプリンタ１５００との間でデータの送受信等を実行する。
【００２９】
ＣＰＵ１０１は、例えば、ＲＡＭ１０２内の表示情報用領域（不図示）でアウトラインフォントの展開（ラスタライズ）処理を実行することにより、ＣＲＴ１１０の表示を可能としている。また、ＣＰＵ１０１は、ＣＲＴ１１０上の不図示のマウスカーソル等でのユーザ指示を可能とする。
【００３０】
プリンタ１５００に含まれるＣＰＵ１１２は、ＲＯＭ１１３ｂのプログラム用ＲＯＭに記憶された制御プログラム又は外部メモリ１１４に記憶された制御プログラム等に基づいてシステムバス１１５に接続される印刷部（プリンタエンジン）１１７に出力情報としての画像信号を出力する。また、ＲＯＭ１１３ｂのプログラムＲＯＭには、ＣＰＵ１１２の制御プログラム等が記憶される。ＲＯＭ１１３ａのフォント用ＲＯＭには上記出力情報を生成する際に使用するフォントデータ等を記憶し、ＲＯＭ１１３ｃのデータ用ＲＯＭにはハードディスク等の外部メモリ１１４がないプリンタの場合には、コンピュータ上で利用される情報等も記憶される。
【００３１】
ＣＰＵ１１２は入力部１１８を介してコンピュータ３０００との通信処理が可能となっており、プリンタ内の情報等をコンピュータ３０００に通知可能に構成されている。ＲＡＭ１１９はＣＰＵ１１２の主メモリであり、ワークエリア等として機能する。ＲＡＭ１１９は、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。
【００３２】
なお、ＲＡＭ１１９は、出力情報展開領域、環境データ格納領域、ＮＶＲＡＭ等としても使用される。ハードディスク（ＨＤ）又はＩＣカード等の外部メモリ１１４は、メモリコントローラ（ＭＣ）１２０によりアクセスを制御される。外部メモリ１１４は、オプション機器としてコントローラ（ＭＣ）１２０と通信し、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。また、入力部１１８には、操作パネルが設けられており、該操作パネルには操作のためのスイッチ又はＬＥＤ表示器等が配されている。
【００３３】
また外部メモリ１１４は１個に限らず、少なくとも１個以上備えていればよく、メモリコントローラ（ＭＣ）１２０は、内蔵フォントにオプションフォントを加えるためのオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリと通信できるように構成されていてもよい。さらに、プリンタ１５００が図示しないＮＶＲＡＭを有し、操作パネルからのプリンタモード設定情報を記憶するようにしてもよい。
【００３４】
また、本実施の形態では、プリンタ１５００がサポートするページ記述言語（以下、「ＰＤＬ」という）として、例えば、ＬＩＰＳというキヤノン社製の比較的高度なＰＤＬであると想定しているが、これに限るものではない。
【００３５】
本発明を実現するための印刷制御プログラム（以下、「プリンタドライバ」という）は外部メモリ１１１に記録されており、必要に応じてＲＡＭ１０２にロードされることにより、ＣＰＵ１０１によって実行される。さらに、本発明に係るプリンタドライバが用いる定義ファイル及び各種情報テーブルは外部メモリ１１１に格納されており、これらについての詳細な説明は後述する。
【００３６】
図２は、図１に示したコンピュータ３０００からプリンタ１５００に印刷ジョブデータを送信する際の流れを概略的に示した機能ブロック図である。
【００３７】
コンピュータ３０００におけるアプリケーションプログラム（以下、「アプリケーション」という）２０１、グラフィックエンジン２０２、プリンタドライバ２０３及びプリントサブシステム２０４は、それぞれ図１に示した外部メモリ１１１に保存されたファイル（プログラムモジュール）として存在し、各ファイルが実行される際には、ＯＳやそのモジュールを利用するモジュールによってＲＡＭ１０２にロードされ実行される。
【００３８】
なお、アプリケーション２０１及びプリンタドライバ２０３は、外部メモリ１１１のＦＤや不図示のＣＤ−ＲＯＭ又は後述するネットワーク３０１を経由して外部メモリ１１１のハードディスク（ＨＤ）に追加可能になっている。
【００３９】
外部メモリ１１１に保存されているアプリケーション２０１は、ＣＰＵ１０１によってＲＡＭ１０２にロードされて実行される。このアプリケーション２０１からプリンタ１５００に対して印刷を実行させるときには、同様にＣＰＵ１０１によってＲＡＭ１０２にロードされて実行されるグラフィックエンジン２０２を利用して出力（描画）を行う。
【００４０】
グラフィックエンジン２０２は、印刷装置毎に用意されたプリンタドライバ２０３を起動する。これにより、プリンタドライバ２０３は、ＣＰＵ１０１によって外部メモリ１１１からＲＡＭ１０２にロードされて実行される。グラフィックエンジン２０２は、このプリンタドライバ２０３を用いて、アプリケーション２０１の出力をＰＤＬによるプリンタ制御コマンドに変換する。プリンタドライバ２０３により変換されたプリンタ制御コマンドは、プリントサブシステム２０４及び通信Ｉ／ＦＣ１０８を介してプリンタ１５００に出力される。
【００４１】
このプリントサブシステム２０４は、ＯＳによって起動されて、ＣＰＵ１０１によって外部メモリ１１１からＲＡＭ１０２にロードされて実行されるものであり、印刷ジョブのスケジューリング、プリンタ１５００との接続制御やプリンタ１５００のステータスの管理を行っている。
【００４２】
プリンタドライバ２０３は、アプリケーション２０１から指示された印字や描画命令の出力に対してプリンタ制御コマンドを生成し、プリント出力に反映されるようプリンタ１５００に指示するだけでなく、プリンタドライバ２０３やプリンタ１５００本体が持つ機能を制御するための設定を行う機能（以下、「ユーザインタフェース」という）と、その設定を記憶する機能、プリンタドライバ２０３やプリンタ１５００本体が持つ能力をアプリケーションやＯＳに情報提供する機能、上記ユーザインタフェースで設定された機能がプリンタの有する機能である場合にプリンタ制御命令を生成する機能、および該ユーザインタフェースで設定された機能がプリンタドライバ独自で行う機能の場合にその機能を実現する機能等を有する。
【００４３】
図３は、図１に示した印刷システムの変形例を示す構成図である。
【００４４】
図３において、３０１はネットワークであり、３０２はローカルインターフェイスであり、複数のコンピュータ３０００、１つのプリンタ１５００及び１つのプリントサーバ４０００がネットワーク３０１を介して接続されている。プリントサーバ４０００には、他のプリンタ１５００がローカルインターフェイス３０２を介して接続されている。
【００４５】
プリンタ１５００は、同図に示すように、セントロニクスやＵＳＢ等のローカルインタフェース３０２を介してプリントサーバ４０００と接続され、さらに該プリントサーバ４０００を介してネットワーク３０００に接続される形態であっても、ネットワーク３０１に直接接続される形態であってもよい。なお、ネットワーク３０１に直接接続されているプリンタ１５００の入力部１１８は、ネットワークインタフェースカード（ＮＩＣ）の機能を有するものとする。
【００４６】
プリントサーバ４０００を介してネットワーク３０１に接続されるプリンタ１５００に各クライアントコンピュータ３０００から印刷ジョブを送信する場合、まず各クライアントコンピュータ３０００は、図２のプリントサブシステム２０４を介して、プリントサーバコンピュータ４０００へ印刷ジョブを送信する。そして、プリントサーバ４０００は、各クライアントコンピュータ３０００から送信されてきた印刷ジョブを、不図示のプリントサーバ４０００上のプリントサブシステムを介して、プリンタ１５００へ送信する。これにより、各クライアントコンピュータ３０００は、プリントサーバコンピュータ４０００を介して印刷ジョブをプリンタ１５００へ送信することができる。
【００４７】
また、ネットワーク３０１に直接接続されるプリンタ１５００に各クライアントコンピュータ３０００から印刷ジョブを送信する場合、各クライアントコンピュータ３０００は、プリントサブシステム２０４を介して、ネットワーク３０１に直接接続されるプリンタ１５００へ印刷ジョブを送信する。
【００４８】
次に、図４のタイミングチャートを用いて、本発明を適用するのに好適なプリンタドライバの基本的な処理の流れについて説明する。
【００４９】
図４は、本発明の印刷制御装置における印刷を行う場合の基本的な処理の流れを示すステータス図であり、特に、図２に示したアプリケーション２０１、グラフィックエンジン２０２、プリンタドライバ２０３の処理に対応する。なお、図２と同一のものには同一の符号を付してある。
【００５０】
図２に示したように、アプリケーション２０１は、プリンタドライバ２０３と直接やり取りを行うのではなく、ＯＳの持つグラフィックスエンジン２０２を介して行うため、アプリケーション２０１自体は、実際にはグラフィックスエンジン２０２とやり取りを行う。グラフィックエンジン２０２はアプリケーション２０１から指示を受け、プリンタドライバ２０３に対して指示を行う。
【００５１】
まず、アプリケーション２０１は、片面／両面設定、ページ単位出力／部数単位出力設定や部数設定などの印刷のための設定をＲＡＭ１０２に確保されたメモリを介してグラフィックエンジン２０２に通知し、プリンタドライバ２０３は、グラフィックエンジン２０２より、その印刷設定とその印刷設定を元にプリンタドライバ２０３が印刷処理を行う上で必要な情報を格納する、新たにＲＡＭ１０２上に確保されたメモリ領域の初期化要求を受信する（ステップＳ４０１）。これにより、プリンタドライバ２０３は、そのプリンタドライバ２０３が印刷処理を行うために必要な情報（プリンタドライバ情報）を保持するメモリ領域を確保し、印刷設定に従ってそのメモリ領域を初期化する。
【００５２】
次いで、プリンタドライバ２０３は、プリンタドライバ２０３が上記メモリ領域を参照し、受信した初期化処理要求に応じて必要な処理を完了すると、ステップＳ４０１で受信した印刷設定に応じたプリンタドライバ２０３の印刷能力をグラフィックエンジン２０２に通知する。アプリケーション２０１は、グラフィックエンジン２０２より、最終的にプリンタ１５００に送信される印刷ジョブとその印刷ジョブに反映する印刷設定とを関連付けるために必要なハンドル値を取得する（ステップＳ４０２）。
【００５３】
次に、アプリケーション２０１が、印刷の開始要求をグラフィックエンジン２０２に通知すると、プリンタドライバ２０３は、グラフィックエンジン２０２より印刷開始要求を受信する（ステップＳ４０３）。これにより、プリンタドライバ２０３は、ＰＤＬの生成処理を開始し、まず、プリンタ１５００が印刷開始に必要なプリンタ命令を生成する。ただし、プリンタ１５００が印刷開始に必要なプリンタ命令を生成する処理は、最初のページ（１ページ目）の印刷処理が開始された時点（アプリケーションからの最初のページの描画指示を受信した時点）でもあっても良い。
【００５４】
さらに、アプリケーション２０１は、文字やイメージ等の描画オブジェクトの描画を実現するための描画指示をグラフィックエンジン２０２に対して通知する。プリンタドライバ２０３は、その描画指示をグラフィックエンジン２０２より受信する（ステップＳ４０４）。これにより、プリンタドライバ２０３は、指定された描画オブジェクトや改ページ、更には不図示の印刷設定を途中で変更するための要求などを反映したプリンタ制御命令を適宜生成し、プリンタ１５００へ出力する。なお、印刷するページ数はアプリケーション２０１からの指定に因る。
【００５５】
次に、アプリケーション２０１が、印刷の終了要求をグラフィックエンジン２０２に通知すると、プリンタドライバ２０３は、グラフィックエンジン２０２より印刷終了要求を受信する（ステップＳ４０５）。これにより、プリンタドライバ２０３は、プリンタ１５００が印刷終了に必要なプリンタ命令を生成し、ＰＤＬの生成処理を終了する。
【００５６】
最後に、アプリケーション２０１は、ステップＳ４０２で取得したハンドル値の破棄要求をグラフィックエンジン２０２に通知し、プリンタドライバ２０３は、グラフィックエンジン２０２より、プリンタドライバ２０３が印刷処理を行う上で必要な情報を格納するメモリ領域にある情報（プリンタドライバ情報）の破棄要求を受信する。これにより、プリンタドライバ２０３は、上記プリンタドライバ情報の破棄処理を行う（ステップＳ４０６）。
【００５７】
以上に示した、ステップＳ４０３〜Ｓ４０５の処理により、プリンタ１５００へ送信するための１つのジョブが生成されることになる。
【００５８】
図５は、全ページ数が奇数のデータを両面印刷で且つ部数単位出力で複数部数印刷する際に、複数部数分の白紙ページを付加した上で印刷要求を行うアプリケーション２０１の基本的な処理を示すフローチャートである。
【００５９】
まず、通常、図１６のアプリケーション２０１の設定画面にあるような両面印刷を設定するためのチェックボックス６０１の設定をＫＢ１０９や不図示のマウス等で入力されたユーザ指示により有効にする。さらに、部数単位出力を設定するためのチェックボックス６０３の設定をＫＢ１０９や不図示のマウス等で入力されたユーザ指示により有効にし、また、部数の設定欄６０２において、印刷する部数の設定もＫＢ１０９や不図示のマウス等で入力されたユーザ指示により行う（ステップＳ５０１）。
【００６０】
次に、アプリケーション２０１は、印刷を行う上で必要な設定をグラフィックエンジン２０２に通知し、ハンドル値を取得する。その際、通知する部数情報を１部にする（ＳステップＳ５０２）。
【００６１】
次に、アプリケーション２０１は、印刷処理を開始するための印刷開始要求をグラフィックエンジン２０２に対して通知し（ステップＳ５０３）、アプリケーション２０１上で作成・編集された図形、イメージ、文字、表等の描画オブジェクトやページ構成を印刷結果に反映するための描画要求を「１部」分、グラフィックエンジン２０２に対して通知する（ステップＳ５０４）。
【００６２】
その後、アプリケーション２０１は、ステップＳ５０１で設定された両面印刷の設定が有効であるか否かを判別し（ステップＳ５０５）、両面印刷の設定が有効と判別された場合には、アプリケーション２０１は、全ページ数が奇数であるか否かを判別する（ステップＳ５０６）。ステップＳ５０６において、全ページ数が奇数であると判別された場合には、アプリケーション２０１は、１ページの白紙を付加する（ステップＳ５０７）。この白紙の付加は、印刷ページ処理を開始するための印刷ページ開始要求をグラフィックエンジン２０２に対して行い、さらに、その直後に、印刷ページ処理を終了するための印刷ページ終了要求をグラフィックエンジン２０２に対して行う方法により行われる。
【００６３】
アプリケーション２０１は、ステップＳ５０４〜Ｓ５０７の処理がステップＳ５０１で設定された部数に対応する回数行われたか否かを判別し（ステップＳ５０８）、ステップＳ５０１で設定された部数に対応する回数の処理が実行されていない場合には、ステップＳ５０４に戻り、ステップＳ５０４〜Ｓ５０７において同一の処理を繰り返す。
【００６４】
ステップＳ５０８において、ステップＳ５０１で設定された部数に対応する回数の処理が完了した場合に、アプリケーション２０１は、印刷処理を終了するための印刷終了要求をグラフィックエンジン２０２に対して送信する（ステップＳ５０９）。このステップＳ５０３〜Ｓ５０９の処理により、１つのジョブが生成されることになる。
【００６５】
最後に、アプリケーション２０１は、ステップＳ５０２で取得したハンドルの破棄要求をグラフィックエンジン２０２に対して送信し（ステップＳ５１０）、本処理を終了する。
【００６６】
このように、アプリケーション２０１は、最終ページの直後に白紙ページを付加した上で、図４で説明したステップＳ４０４の処理をステップＳ５０１で設定された部数に対応する回数繰り返すことにより、全ページ数が奇数のデータの両面印刷における部数単位出力を実現する。従って、例えば、用紙の表面に１ページ目のデータ、用紙の裏面に２ページ目のデータが印刷される場合を｛１、２｝と表すことにして、全３ページの文書を３部印刷した場合には、｛１、２｝−｛３、白紙｝−｛１、２｝−｛３、白紙｝−｛１、２｝−｛３、白紙｝という印刷ジョブが生成されることになる。ただし、アプリケーションによっては、ステップＳ５０５〜Ｓ５０７による白紙を付加する処理を最後の部数に対応する処理で実行しないことにより、｛１、２｝−｛３、白紙｝−｛１、２｝−｛３、白紙｝−｛１、２｝−｛３、（印刷なし）｝という印刷ジョブが生成される場合もある。
【００６７】
上述したようなアプリケーション２０１の処理に対し、プリンタドライバ２０３が実行する処理を、図６〜図１１で示すフローチャートを用いて以下に詳細に説明する。
【００６８】
図６は、プリンタドライバ２０３が実行する処理を概略的に示すフローチャートである。
【００６９】
まず、印刷設定の初期化処理を行う（ステップＳ６０１）。この処理の詳細は図７のフローチャートを用いて説明する。
【００７０】
図７では、まず、図１６のようなアプリケーション２０１上の印刷実行指示ボタン６０４がユーザによって押下される（つまり、印刷実行の指示がある）と、前述したように、アプリケーション２０１は、グラフィックエンジン２０２に対して、印刷設定の通知を行い、プリンタドライバ２０３は、印刷設定を受信する（ステップＳ７０１）。この印刷設定はＲＡＭ１０２に確保されたメモリ領域に受け渡され、例えば、両面印刷か片面印刷かといった情報を含んでいる。
【００７１】
次に、プリンタドライバ２０３は、図４のステップＳ４０１で説明した通り、ステップＳ７０１で受信した印刷設定を元に、プリンタドライバ２０３が印刷処理を行う上で必要な情報（プリンタドライバ情報）を格納するメモリ領域を初期化する（ステップＳ７０２）。このプリンタドライバ情報とは、例えば、用紙サイズ、用紙方向、部数の情報などである。さらに、このプリンタドライバ情報には両面印刷であるか否かを判断するためのフラグ（以下、「両面フラグ」という）が存在し、受信した印刷設定を元に、両面印刷か片面印刷かを判別し（ステップＳ７０３）、両面印刷であればこの両面フラグをＯＮにして初期化し（ステップＳ７０４）、片面印刷であれば両面フラグをＯＦＦにして初期化する（ステップＳ７０５）。
【００７２】
ステップＳ７０２で実行するその他のプリンタドライバ情報の初期化については、前述したプリンタドライバの基本的な処理の流れと同様の処理を行う。なお、初期化後のプリンタドライバ情報格納用メモリ領域の構造を、図１２に示す。
【００７３】
図６に戻り、次に、アプリケーション２０１が、ステップＳ７０１で受信された印刷設定を元に、実際に印刷処理を開始するよう印刷開始要求をグラフィックエンジン２０２に対して通知すると、プリンタドライバ２０３は、グラフィックエンジン２０２より印刷開始要求を受信する（ステップＳ６０２）。
【００７４】
次に、印刷設定の変更処理を行う（ステップＳ６０３）。ステップＳ６０３の印刷設定の変更処理の詳細を図８のフローチャートを用いて説明する。
【００７５】
アプリケーション２０１が、グラフィックエンジン２０２に対して、印刷設定の変更を通知した場合には、プリンタドライバ２０３は、印刷設定の変更要求を受信するため、この要求を受信したか否かを判別し（ステップＳ８０１）、この要求を受信した場合には、変更後の印刷設定を受信する（ステップＳ８０２）。
【００７６】
一方、ステップＳ８０１で変更要求を受信しなかった場合には、印刷設定の変更処理を終了する。なお、この印刷設定の変更は、図７のステップＳ７０１で受け渡された印刷設定がアプリケーション２０１により変更される形で行われる。
【００７７】
次に、この受信された変更後の印刷設定の情報を元に、プリンタドライバ２０３は、前述したプリンタドライバ情報の変更処理を行う（ステップＳ８０３）。プリンタドライバ２０３は、変更された印刷設定の情報を元に、改めて両面印刷か片面印刷かを判別し（ステップＳ８０４）、前述した両面フラグを、両面印刷であればＯＮに変更し（ステップＳ８０５）、片面印刷であればＯＦＦに変更して（ステップＳ８０６）、本処理を終了する。
【００７８】
図６に戻り、上記ステップＳ６０３の印刷設定の変更処理の終了後、プリンタ１５００が出力を行うために必要なページデータを生成・出力する処理を行う（ステップＳ６０４）。この処理の詳細は図９のフローチャートを用いて説明する。
【００７９】
図４のステップＳ４０４で説明した通り、アプリケーション２０１が、文字やイメージ等の描画オブジェクトの描画を実現するための描画指示をグラフィックエンジン２０２に対して通知すると、プリンタドライバ２０３は、その描画指示をグラフィックエンジン２０２より受信する（ステップＳ９０１）。プリンタドライバ２０３は、受信情報をページ単位で処理する。
【００８０】
次いで、プリンタドライバ２０３は、この処理を行う上で、両面フラグがＯＮかＯＦＦかを判別し（ステップＳ９０２）、それぞれ別途の処理を行う。
【００８１】
まず、両面フラグがＯＮである場合に、プリンタドライバ２０３が行う処理について説明する。
【００８２】
ステップＳ９０２において、両面フラグがＯＮである場合に、現ページが裏面に印刷されるページであるか否かを判別する（ステップＳ９０５）。この判別は、現ページが奇数ページなら表面、偶数ページなら裏面という基本的な判定に加え、プリンタ１５００の性能に合わせ、以下のような詳細な判定も行うようにしても良い。例えば、両面印刷時、用紙サイズがＡ４ページの印刷要求があった直後に、用紙サイズがＡ３ページの印刷要求があった場合に、Ａ４用紙の表面にＡ４サイズのページデータを印刷し、裏面にＡ３サイズのページデータを印刷する（つまり、裏面に当たるＡ３サイズのページデータの一部分が切れて印刷される）のではなく、Ａ４用紙の表面にＡ４サイズのページデータを印刷した後に、Ａ４用紙を排紙し、次に、Ａ３用紙の表面にＡ３サイズのページデータを印刷するといった機能をプリンタ１５００が有している場合には、その機能も考慮した上で、裏面に印刷されるページであるか否かを判別するといったことである。
【００８３】
上記ステップＳ９０５の判別において、現ページが用紙の表面に印刷されるページと判別された場合には、プリンタドライバ２０３は、受信した描画指示をＰＤＬによるプリンタ制御命令に変換し、１ページ分のＰＤＬデータを生成し、外部メモリ１１１に保存し（ステップＳ９１５）、本処理を終了する。そのＰＤＬデータの保存処理について、図１１で示すフローチャートを用いて説明する。
【００８４】
プリンタドライバ２０３は、アプリケーション２０１からグラフィックエンジン２０２を介してプリンタドライバ２０３にくる印刷要求をプリンタ１５００による出力結果に反映させるためのＰＤＬデータを通常の印刷処理と同様に生成する（ステップＳ１１０１）。次に、プリンタドライバ２０３は、最初に生成したＰＤＬデータを外部メモリ１１１に保存し、２回目以降、印刷要求（印刷コマンド）ごとに生成したＰＤＬデータをその保存データに追加保存していく（ステップＳ１１０２）。このステップＳ１１０１〜Ｓ１１０２の処理をページ終了要求が受信されるまで繰り返すことにより、図１３のような１ページ分のＰＤＬデータが形成されることになる。
【００８５】
図９に戻り、上記ステップＳ９０５の判別において、現ページが用紙の裏面に印刷されるページと判別された場合には、プリンタドライバ２０３は、現ページが白紙であるか否かを判別する（ステップＳ９０６）。この白紙か否かの判別は、プリンタドライバ２０３に対してアプリケーション２０１からグラフィックエンジン２０２を介して行われる印刷要求の内容を見て行われ、例えば、「ページ開始要求」と「ページ終了要求」の間に、描画オブジェクトの描画指示があるか否かで判別する。ただし、この白紙か否かの判別は、その他の一般的な白紙判断方法を用いても良い。
【００８６】
ステップＳ９０６において、現ページが白紙ではないと判別された場合には、まず、ステップＳ９１５で外部メモリ１１１に保存された前ページに関するＰＤＬデータをプリンタドライバ２０３が管理するメモリ領域にコピーする（ステップＳ９０７）。次に、メモリ領域にコピーされた前ページに関するＰＤＬデータをプリンタ１５００へ出力し（ステップＳ９０８）、プリンタ１５００による出力結果に、現ページに関する印刷要求を反映させるためのＰＤＬデータを通常の印刷処理と同様に生成し、プリンタ１５００へ出力する（ステップＳ９０９）。このステップＳ９０７〜Ｓ９０９の処理に行うことより、裏面が白紙ではない場合には、通常の印刷処理と同様に、プリンタ１５００において両面印刷で出力が行われることになる。
【００８７】
一方、上記ステップＳ９０６において、現ページが白紙ではあると判別された場合には、プリンタドライバ２０３は、ステップＳ９１５で外部メモリ１１１に保存された前ページに関するＰＤＬデータをプリンタドライバ２０３が管理するメモリ領域にコピーする（ステップＳ９１０）。
【００８８】
次に、前ページの印刷がプリンタ１５００において片面印刷で行われるよう、ステップＳ９１０でメモリ領域にコピーされた前ページに関するＰＤＬデータに「片面印刷制御命令」を付加する（ステップＳ９１１）。この「片面印刷制御命令」の付加は、プリンタ１５００の性能に合わせて行い、例えば、ステップＳ９１０でメモリ領域にコピーされた図１３のような前ページに関するＰＤＬデータに元々存在している「両面印刷制御命令」を削除した上で「片面印刷制御命令」を付加したＰＤＬデータに変換しても良いし（図１４（Ａ））、例えば、１ページ分のデータ中に「両面印刷制御命令」と「片面印刷制御命令」が両方存在する場合に、当該データの後段にある命令に従って動作するようなプリンタ１５００であれば、元々存在している「両面印刷制御命令」の直後など、プリンタ１５００が両面印刷ではなく片面印刷として動作できるような位置に「片面印刷制御命令」を単純に付加したＰＤＬデータに変換しても良い（図１４（Ｂ））。
【００８９】
次に、ステップＳ９１１で「片面印刷制御命令」を付加したメモリ領域内の前ページに関するＰＤＬデータをプリンタ１５００へ出力する（ステップＳ９１２）。これにより、前ページは両面印刷ではなく片面印刷で出力が行われることになる。
【００９０】
次いで、以降のページがプリンタ１５００において両面印刷で出力されるように、「両面印刷制御命令」を有するＰＤＬデータを生成し、プリンタ１５００へ出力する（ステップＳ９１３）。これにより、以後のＰＤＬデータの設定が片面印刷から両面印刷に変更される（元に戻る）。
【００９１】
なお、印刷設定の変更要求を受信していた場合には（図８のステップＳ８０２）、受信した設定変更も出力結果に反映されるように、このＰＤＬデータは、上記の「両面印刷制御命令」と共に、変更要求を出力結果に反映させるようなＰＤＬも同時に有する形で構成する。
【００９２】
これにより、１ページ分のＰＤＬデータは、印刷設定の変更要求を受信していない場合には、図１４（Ｃ）又は図１４（Ｄ）のような構造で構成されることになり、例えば、モノクロ印刷からカラー印刷への設定変更要求を受信していた場合には、図１４（Ｅ）又は図１４（Ｆ）のような構造で構成される。
【００９３】
このステップＳ９１０〜Ｓ９１３の処理を行うことにより、裏面が白紙ではある場合には、アプリケーション２０１からグラフィックエンジン２０２を介してプリンタドライバ２０３に通知される裏面の白紙ページに関する印刷要求は無視し（ＰＤＬデータを生成せず、ＰＤＬデータをプリンタ１５００に出力しない）、表面に印刷されるページデータを片面印刷として出力することになり、印刷体裁を変えることなく、プリンタ１５００にて裏面の印刷処理が行われることを抑制することが可能となる。
【００９４】
なお、本実施の形態では、ステップＳ９１０〜Ｓ９１３の処理を行うことで、アプリケーション２０１からグラフィックエンジン２０２を介してプリンタドライバ２０３に通知される裏面の白紙ページに関する印刷要求を無視する（ＰＤＬデータを生成せず、ＰＤＬデータをプリンタ１５００に出力しない）ように構成したが、白紙ページを印刷させないよう処理すれば良く、プリンタドライバ２０３が、裏面が白紙ページの印刷要求を受けた場合に、当該印刷要求を破棄又は削除するよう構成しても良い。
尚、破棄または削除するデータはプリンタドライバ２０３に通知される印刷要求ではなく、生成したＰＤＬデータを削除するように構成しても良い。
【００９５】
最後に、ステップＳ９０６の判別結果に関わらず、ステップＳ９１５で外部メモリ１１１に保存された前ページに関するＰＤＬデータ、及びステップＳ９０７又はステップＳ９１０でプリンタドライバ２０３が管理するメモリ領域にコピーされた前ページに関するＰＤＬデータを破棄し（ステップＳ９１４）、本処理を終了する。
【００９６】
以上が、現ページが裏面に印刷されるページと判断された場合にプリンタドライバ２０３が行う処理である。
【００９７】
次に、上記ステップＳ９０２において、両面フラグがＯＦＦである場合に、プリンタドライバ２０３が行う処理について説明する。
【００９８】
上記ステップＳ９０２において、両面フラグがＯＦＦである場合には、外部メモリの確認処理を行う（ステップＳ９０３）。
【００９９】
この処理を実行するのは、アプリケーション２０１が、グラフィックエンジン２０２に対して印刷設定の変更を通知した場合に、プリンタドライバ２０３は、一回の印刷の最中に両面印刷から片面印刷に印刷設定を変更する要求を受信する場合があるためである。つまり、この両面印刷から片面印刷への印刷設定が表面の印刷処理が成された直後に行われた場合には、ステップＳ９１５の処理により、前ページに関するＰＤＬデータが外部メモリ１１１に保存された状態となっており、所望のＰＤＬデータの生成及び出力ができなくなるからである。
【０１００】
ステップＳ９０３の外部メモリの確認処理の詳細は図１０のフローチャートを用いて説明する。
【０１０１】
まず、外部メモリ１１１内に前ページに関するＰＤＬデータが保存されているか否かを確認し（ステップＳ１００１）、保存されている場合には、外部メモリ１１１に保存されている前ページに関するＰＤＬデータをプリンタドライバ２０３が管理するメモリ領域にコピーし（ステップＳ１００２）、メモリ領域にコピーされた前ページに関するＰＤＬデータをプリンタ１５００へ出力する（ステップＳ１００３）。次に、図９のステップＳ９１５で外部メモリ１１１に保存された前ページに関するＰＤＬデータ、及び上記ステップＳ１００２でプリンタドライバ２０３が管理するメモリ領域にコピーされた前ページに関するＰＤＬデータを破棄し（ステップＳ１００４）、本処理を終了する。
【０１０２】
図９に戻り、ステップＳ９０３の処理後、プリンタドライバ２０３は、通常の印刷処理と同様に、アプリケーション２０１からグラフィックエンジン２０２を介してプリンタドライバ２０３に通知される印刷要求をプリンタ１５００による出力結果に反映させるためのＰＤＬデータを生成し、プリンタ１５００へ出力し（ステップＳ９０４）、本処理を終了する。
【０１０３】
以上が、図６のステップＳ６０４（詳細な説明は図９で示した）でプリンタ１５００が出力を行うために必要なページデータを生成・出力する処理である。
【０１０４】
図６のステップＳ６０４の処理後、プリンタドライバ２０３は、上述したステップＳ６０３，Ｓ６０４の処理を全ページ分繰り返す。つまり、アプリケーション２０１が、印刷の終了要求をグラフィックエンジン２０２に対して通知し、プリンタドライバ２０３が、グラフィックエンジン２０２より印刷終了要求を受信するまで繰り返す（ステップＳ６０５）。なお、ステップＳ６０５で、次のページのページ印刷開始要求が受信される場合には、ステップＳ６０３へ処理が移る。
【０１０５】
ステップＳ６０５の処理の終了後、外部メモリデータの確認処理を行う（ステップＳ６０６）。この外部メモリデータの確認処理は、図１０の外部メモリの確認処理と同様である。この確認処理は、最終ページが両面印刷の表面に印刷されるような印刷要求、例えば、両面印刷設定で且つ全ページ数が奇数である印刷要求が受信された場合に、ステップＳ９１５の処理により、最終ページに関するＰＤＬデータが外部メモリ１１１に保存された状態となるため、これを防止するために実行される。
【０１０６】
次に、プリンタドライバ２０３が、グラフィックエンジン２０２より印刷終了要求を受信した場合には、プリンタドライバ２０３は、プリンタ１５００にて印刷の終了処理が行われるように、「印刷終了命令」を有するＰＤＬデータを生成し、プリンタ１５００へ出力する（ステップＳ６０７）。
【０１０７】
最後に、図４のステップＳ４０６でも説明した通り、プリンタドライバ２０３は、グラフィックエンジン２０２より、プリンタドライバ２０３が印刷処理を行う上で必要な情報を格納するメモリ領域にある情報（即ち、プリンタドライバ情報）の破棄要求を受信した場合、ステップＳ６０１で初期化したプリンタドライバ情報の破棄処理を行い（ステップＳ６０８）、本処理を終了する。
【０１０８】
以上詳細に説明したように、本実施の形態によれば、用紙の裏面に白紙が印刷されると判断された場合には、ＰＤＬデータの設定が両面印刷から片面印刷に変更され、その設定が変更されたＰＤＬデータがプリンタ１５００へ出力される。従って、両面印刷時、用紙の裏面が白紙の場合には、その用紙の表面に相当するページを片面印刷で出力すると共に、裏面に相当する白紙ページの印刷を行わないようになり、用紙の裏面が白紙であるページが存在するジョブに対しても、ユーザが期待すると思われる印刷体裁を保ちつつ、且つ、用紙の裏面にあたる白紙ページに対する無駄な出力処理を防止することができる。
【０１０９】
また、印刷された用紙の面数をカウントし、そのカウント数に応じて課金処理を行う機能を有する出力装置が存在するが、コンピュータ３０００によれば、白紙ページに対して無駄な出力処理をさせないので、白紙ページに対応する不要な料金が課されることを回避することができる。
【０１１０】
さらに、印刷ジョブデータ全体ではなく、印刷要求ページ毎に処理が行われるので、記憶媒体の使用記憶領域の削減、及び処理時間の低減を図ることができる。
【０１１１】
また、ＰＤＬデータをプリンタ１５００へ出力した後、他のＰＤＬデータの設定が片面印刷から両面印刷に変更されるので、出力されたＰＤＬデータの設定が他のＰＤＬデータの設定に反映されずに、適切な印刷が行われ、ユーザが期待する印刷体裁を保つことができる。
【０１１２】
本発明の機能が実行されるものであれば、単体の機器であっても、複数の機器からなるシステムであっても、ＬＡＮ、ＷＡＮ等のネットワークを介して接続がなされ処理が行われるシステムであっても、本発明を適用できることは言うまでもない。
【０１１３】
また、本実施の形態では、全ページ数が奇数のデータを両面印刷した際に、アプリケーションが白紙を付加してくる場合を例として述べてきたが、元々のデータに白紙ページが存在し、両面印刷時にそのページが裏面に印刷される位置に該当する場合においても、本発明が適用できることは言うまでもない。
【０１１４】
また、本発明の目的は、実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出して実行することによっても達成される。
【０１１５】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１１６】
又、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【０１１７】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１１８】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【図面の簡単な説明】
【０１１９】
【図１】本発明の実施の形態に係る印刷制御装置を備える印刷システムの構成を示すブロック図である。
【図２】図１に示したコンピュータ３０００からプリンタ１５００に印刷ジョブデータを送信する際の流れを概略的に示した機能ブロック図である。
【図３】図１に示した印刷システムの変形例を示す構成図である。
【図４】本発明の印刷制御装置における印刷を行う場合の基本的な処理の流れを示すステータス図である。
【図５】全ページ数が奇数のデータを両面印刷で且つ部数単位出力で複数部数印刷する際に、複数部数分の白紙ページを付加した上で印刷要求を行うアプリケーション２０１の基本的な処理を示すフローチャートである。
【図６】プリンタドライバ２０３が実行する処理を概略的に示すフローチャートである。
【図７】図６のステップＳ６０１の印刷設定の初期化処理を示すフローチャートである。
【図８】図６のステップＳ６０３の印刷設定の変更処理を示すフローチャートである。
【図９】図６のステップＳ６０４のページデータを生成・出力する処理を示すフローチャートである。
【図１０】図９のステップＳ９０３の外部メモリの確認処理を示すフローチャートである。
【図１１】図９のステップＳ９１５のＰＤＬデータの保存処理を示すフローチャートである。
【図１２】初期化後のプリンタドライバ情報格納用メモリ領域の構造を示す図である。
【図１３】プリンタドライバが生成するＰＤＬデータの一例を示す図である。
【図１４】図１４（Ａ）は、「両面印刷制御命令」を削除した上で「片面印刷制御命令」を付加したＰＤＬデータの一例を示す図であり、図１４（Ｂ）はプリンタ１５００が両面印刷ではなく片面印刷として動作できるような位置に「片面印刷制御命令」を単純に付加したＰＤＬデータの一例を示す図である。図１４（Ｃ）は印刷設定の変更要求を受信していない場合のＰＤＬデータの一例を示す図であり、図１４（Ｄ）は印刷設定の変更要求を受信していない場合のＰＤＬデータの他の一例を示す図である。図１４（Ｅ）は印刷設定の変更要求を受信している場合のＰＤＬデータの一例を示す図であり、図１４（Ｆ）は印刷設定の変更要求を受信している場合のＰＤＬデータの他の一例を示す図である。
【図１５】プリンタドライバの設定画面の一例を示す図である。
【図１６】アプリケーションの設定画面の一例を示す図である。
【図１７】全ページ数が３ページの文書データの一例を示す図である。
【図１８】図１７に示した文書データを片面印刷で３部印刷した際の出力結果の一例を示す図である。
【図１９】図１７に示した文書データを両面印刷で１部印刷した際の出力結果の一例を示す図である。
【図２０】図１７に示した文書データを両面印刷で３部印刷した際の出力結果の一例を示す図である。
【図２１】図１７に示した文書データを両面印刷で３部印刷した際の出力結果の一例を示す図である。
【符号の説明】
【０１２０】
１０１  ＣＰＵ
１０２  ＲＡＭ
１０３  ＲＯＭ
１０４  システムバス
１０５  入力コントローラ
１０６  ビデオコントローラ
１０７  メモリコントローラ
１０８  通信Ｉ／Ｆコントローラ
１０９  キーボード
１１０  ＣＲＴ（モニタ）
１１１  外部メモリ（ＨＤ、ＦＤ）
１５００  プリンタ
３０００  コンピュータ
４０００  プリントサーバ
【図１】
2006178740.tif 000003
【図２】
2006178740.tif 000004
【図３】
2006178740.tif 000005
【図４】
2006178740.tif 000006
【図５】
2006178740.tif 000007
【図６】
2006178740.tif 000008
【図７】
2006178740.tif 000009
【図８】
2006178740.tif 000010
【図９】
2006178740.tif 000011
【図１０】
2006178740.tif 000012
【図１１】
2006178740.tif 000013
【図１２】
2006178740.tif 000014
【図１３】
2006178740.tif 000015
【図１４】
2006178740.tif 000016
【図１５】
2006178740.tif 000017
【図１６】
2006178740.tif 000018
【図１７】
2006178740.tif 000019
【図１８】
2006178740.tif 000020
【図１９】
2006178740.tif 000021
【図２０】
2006178740.tif 000022
【図２１】
2006178740.tif 000023