(57)【要約】【課題】印刷設定が両面印刷に設定されており、ドキュメントを構成する画像の総ページ数が１ページである場合に片面印刷を実行する。【解決手段】プリンタドライバは、１ページ目の関数DrvStartPageが呼び出されたときに、１ページ目に対応するページ開始コマンドをプリンタに送信せず、２ページ目の関数DrvStartPageが呼び出されたときに、両面指定コマンドを含む１ページ目に対応するページ開始コマンドをプリンタに送信する。一方、プリンタドライバは、２ページ目の関数DrvStartPageが呼び出されることなく、関数DrvEndDocが呼び出された場合に、片面指定コマンドを含む１ページ目に対応するページ開始コマンドをプリンタに送信する。これにより、印刷設定が両面印刷に設定されており、ドキュメントを構成する画像の総ページ数が１ページである場合に片面印刷を実行することができる。【選択図】図３
2019066912.tif 000002
【特許請求の範囲】
【請求項１】
プリンタと通信可能な通信インタフェースを備える情報処理装置のコンピュータが読み取り可能な前記プリンタのプリンタドライバであって、
前記情報処理装置にインストールされているオペレーティングシステムは、１ページ以上の画像により構成されるドキュメントの印刷ジョブであり且つ１ページ毎に区切られた印刷ジョブを前記プリンタドライバに出力するように構成され、
前記オペレーティングシステムは、前記印刷ジョブの各ページの開始を示すページ開始情報を前記プリンタドライバに出力し且つ、前記印刷ジョブの終了を示すジョブ終了情報を前記プリンタドライバに出力するように構成され、
前記オペレーティングシステムは、前記印刷ジョブを、両面印刷であることを指定する両面指定情報と片面印刷であることを指定する片面指定情報との何れかに関連した態様で前記プリンタドライバに出力するように構成されており、
前記コンピュータを、
前記オペレーティングシステムにより出力された前記印刷ジョブが、前記両面指定情報と関連づいている場合に、
前記印刷ジョブの１ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときには、前記１ページ目に対応するページ開始コマンドを前記プリンタに送信せず、前記印刷ジョブの２ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときに、前記１ページ目に対応するページ開始コマンドを両面印刷であることを指定する両面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信し、前記印刷ジョブの２ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けることなく、前記ジョブ終了情報を前記オペレーティングシステムから受け付けたときに、前記１ページ目に対応するページ開始コマンドを片面印刷であることを指定する片面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信する、送信手段として機能させることを特徴とするプリンタドライバ。
【請求項２】
前記オペレーティングシステムは、１ページ毎に区切られた印刷ジョブに、当該ページの画像の画像データを含めて前記プリンタドライバに出力するように構成され、
前記コンピュータを、
１ページ毎に区切られた印刷ジョブに含まれる当該ページの画像の画像データを前記オペレーティングシステムから受け付けた場合に、当該画像データに基づいて印刷用画像データを作成する作成手段として機能させ、
前記送信手段が、前記１ページ目に対応するページ開始コマンドを前記両面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信している場合に、
前記作成手段は、
１ページ目の印刷ジョブに含まれる１ページ目の画像の画像データを前記オペレーティングシステムから受け付けた場合に、前記印刷ジョブの２ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたことを条件として、前記１ページ目の画像の画像データに基づいて印刷用画像データを作成することを特徴とする請求項１に記載のプリンタドライバ。
【請求項３】
前記コンピュータを、
１ページ目の印刷ジョブに含まれる１ページ目の画像の画像データを前記オペレーティングシステムから受け付けた場合に、前記１ページ目の画像の画像データを、前記情報処理装置のメモリに記憶させる記憶制御手段として機能させ、
前記作成手段は、
１ページ目の印刷ジョブに含まれる１ページ目の画像の画像データを前記オペレーティングシステムから受け付けた場合に、前記印刷ジョブの２ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたことを条件として、前記メモリに記憶されている１ページ目の画像の画像データに基づいて印刷用画像データを作成することを特徴とする請求項２に記載のプリンタドライバ。
【請求項４】
前記作成手段は、
２ページ目の印刷ジョブに含まれる２ページ目の画像の画像データを前記オペレーティングシステムから受け付けた場合に、前記印刷ジョブの３ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けなくても、前記２ページ目の画像の画像データに基づいて印刷用画像データを作成することを特徴とする請求項２または３に記載のプリンタドライバ。
【請求項５】
前記送信手段が、前記１ページ目に対応するページ開始コマンドを前記両面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信している場合に、
前記作成手段は、
１ページ目の印刷ジョブに含まれる１ページ目の画像の画像データを前記オペレーティングシステムから受け付けた場合に、前記印刷ジョブの２ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたことを条件として、前記１ページ目の画像の画像データに基づいて両面印刷に対応する態様の画像データである両面印刷用画像データを作成し、
前記送信手段が、前記１ページ目に対応するページ開始コマンドを前記片面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信している場合に、
前記作成手段は、
１ページ目の印刷ジョブに含まれる１ページ目の画像の画像データを前記オペレーティングシステムから受け付けた場合に、前記印刷ジョブの２ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けなくても、前記１ページ目の画像の画像データに基づいて片面印刷に対応する態様の画像データである片面印刷用画像データを作成することを特徴とする請求項２乃至４の何れか１項に記載のプリンタドライバ。
【請求項６】
前記送信手段が、前記１ページ目に対応するページ開始コマンドを前記両面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信している場合に、
前記作成手段は、
２ページ目以降の印刷ジョブに含まれる２ページ目以降の画像の画像データを前記オペレーティングシステムから受け付けた場合に、受付けた２ページ目以降の画像の画像データが、奇数ページの画像データか、偶数ページの画像データかに係らず、受付けた２ページ目以降の画像の画像データに基づいて前記両面印刷用画像データを作成することを特徴とする請求項５に記載のプリンタドライバ。
【請求項７】
前記オペレーティングシステムにより出力された前記印刷ジョブが、前記片面指定情報と関連づいている場合に、
前記送信手段は、
前記印刷ジョブの１ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときに、前記１ページ目に対応するページ開始コマンドを前記プリンタに送信し、
前記作成手段は、
１ページ目の印刷ジョブに含まれる１ページ目の画像の画像データを前記オペレーティングシステムから受け付けた場合に、前記印刷ジョブの２ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けなくても、前記１ページ目の画像の画像データに基づいて印刷用画像データを作成することを特徴とする請求項２乃至６の何れか１項に記載のプリンタドライバ。
【請求項８】
前記送信手段は、
前記オペレーティングシステムにより出力された前記印刷ジョブが、前記両面指定情報と関連づいている場合に、
前記印刷ジョブの１ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときには、前記１ページ目に対応するページ開始コマンドを前記プリンタに送信せず、前記印刷ジョブの２ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときに、前記両面指定コマンドを含む態様で前記１ページ目に対応するページ開始コマンドを前記通信インタフェースを介して前記プリンタに送信し、前記印刷ジョブの２ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けることなく、前記ジョブ終了情報を前記オペレーティングシステムから受け付けたときに、前記片面指定コマンドを含む態様で前記１ページ目に対応するページ開始コマンドを前記通信インタフェースを介して前記プリンタに送信することを特徴とする請求項１乃至７の何れか１項に記載のプリンタドライバ。
【請求項９】
前記オペレーティングシステムは、前記印刷ジョブの開始を示すジョブ開始情報を前記プリンタドライバに出力し、前記ジョブ開始情報を出力したのちに、前記ページ開始情報を前記プリンタドライバに出力するように構成され、
前記送信手段は、
前記オペレーティングシステムにより出力された前記印刷ジョブが、前記両面指定情報と関連づいている場合に、
前記ジョブ開始情報を前記オペレーティングシステムから受け付けた後に、前記印刷ジョブの１ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときには、前記印刷ジョブに対応するジョブ開始コマンドと、前記１ページ目に対応するページ開始コマンドとを前記プリンタに送信せず、前記印刷ジョブの２ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときに、前記両面指定コマンドを含む態様で前記ジョブ開始コマンドを前記通信インタフェースを介して前記プリンタに送信した後に、前記１ページ目に対応するページ開始コマンドを、前記通信インタフェースを介して前記プリンタに送信し、前記印刷ジョブの２ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けることなく、前記ジョブ終了情報を前記オペレーティングシステムから受け付けたときに、前記片面指定コマンドを含む態様で前記ジョブ開始コマンドを前記通信インタフェースを介して前記プリンタに送信した後に、前記１ページ目に対応するページ開始コマンドを前記通信インタフェースを介して前記プリンタに送信し、前記プリンタに送信することを特徴とする請求項１乃至７の何れか１項に記載のプリンタドライバ。
【請求項１０】
前記コンピュータを、
前記オペレーティングシステムにより出力された前記印刷ジョブに対してバンディングを実行するか否かを判断する判断手段と、
前記判断手段によりバンディングを実行すると判断された場合に、バンディングの実行を示す情報を、前記オペレーティングシステムに出力する出力手段と、
して機能させ、
前記判断処理は、
前記オペレーティングシステムにより出力された前記印刷ジョブが、前記片面指定情報と関連づいている場合に、前記印刷ジョブに対してバンディングを実行するか否かを判断し、
前記オペレーティングシステムにより出力された前記印刷ジョブが、前記両面指定情報と関連づいている場合に、前記印刷ジョブに対してバンディングを実行するか否かを判断しないことを特徴とする請求項１乃至９の何れか１項に記載のプリンタドライバ。
【請求項１１】
プリンタと通信可能な通信インタフェースと、コントローラとを備え、オペレーティングシステムと、前記プリンタのプリンタドライバとがインストールされた情報処理装置であって、
前記オペレーティングシステムは、１ページ以上の画像により構成されるドキュメントの印刷ジョブであり且つ１ページ毎に区切られた印刷ジョブを前記プリンタドライバに出力するように構成され、
前記オペレーティングシステムは、前記印刷ジョブの各ページの開始を示すページ開始情報を前記プリンタドライバに出力し且つ、前記印刷ジョブの終了を示すジョブ終了情報を前記プリンタドライバに出力するように構成され、
前記オペレーティングシステムは、前記印刷ジョブを、両面印刷であることを指定する両面指定情報と片面印刷であることを指定する片面指定情報との何れかに関連した態様で前記プリンタドライバに出力するように構成されており、
前記コントローラは、前記プリンタドライバを読み取り実行することによって、
前記オペレーティングシステムにより出力された前記印刷ジョブが、前記両面指定情報と関連づいている場合に、
前記印刷ジョブの１ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときには、前記１ページ目に対応するページ開始コマンドを前記プリンタに送信せず、前記印刷ジョブの２ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときに、前記１ページ目に対応するページ開始コマンドを両面印刷であることを指定する両面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信し、前記印刷ジョブの２ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けることなく、前記ジョブ終了情報を前記オペレーティングシステムから受け付けたときに、前記１ページ目に対応するページ開始コマンドを片面印刷であることを指定する片面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信する、送信手段として機能することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置のコンピュータが読み取り可能なプリンタドライバ等に関する。
【背景技術】
【０００２】
プリンタには、片面印刷と両面印刷とを選択的に実行可能なものがあり、そのようなプリンタのプリンタドライバは、片面印刷を指定する片面指定コマンドと、両面面印刷を指定する両面指定コマンドとの何れかをプリンタに送信する。下記特許文献には、そのようなプリンタドライバの一例が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−４４１５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
１ページ以上の画像により構成されるドキュメントが印刷される際に、印刷対象のドキュメントを構成する画像の総ページ数が１ページである場合には、印刷設定が両面印刷に設定されていても、片面印刷を実行することが好ましい。そこで、印刷設定が両面印刷に設定されており、印刷対象のドキュメントを構成する画像の総ページ数が１ページである場合に片面印刷を実行することを課題とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、実施例に開示するプリンタドライバは、プリンタと通信可能な通信インタフェースを備える情報処理装置のコンピュータが読み取り可能な前記プリンタのプリンタドライバであって、前記情報処理装置にインストールされているオペレーティングシステムは、１ページ以上の画像により構成されるドキュメントの印刷ジョブであり且つ１ページ毎に区切られた印刷ジョブを前記プリンタドライバに出力するように構成され、前記オペレーティングシステムは、前記印刷ジョブの各ページの開始を示すページ開始情報を前記プリンタドライバに出力し且つ、前記印刷ジョブの終了を示すジョブ終了情報を前記プリンタドライバに出力するように構成され、前記オペレーティングシステムは、前記印刷ジョブを、両面印刷であることを指定する両面指定情報と片面印刷であることを指定する片面指定情報との何れかに関連した態様で前記プリンタドライバに出力するように構成されており、前記コンピュータを、前記オペレーティングシステムにより出力された前記印刷ジョブが、前記両面指定情報と関連づいている場合に、前記印刷ジョブの１ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときには、前記１ページ目に対応するページ開始コマンドを前記プリンタに送信せず、前記印刷ジョブの２ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときに、前記１ページ目に対応するページ開始コマンドを両面印刷であることを指定する両面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信し、前記印刷ジョブの２ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けることなく、前記ジョブ終了情報を前記オペレーティングシステムから受け付けた場合に、前記１ページ目に対応するページ開始コマンドを片面印刷であることを指定する片面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信する、送信手段として機能させることを特徴とする。
【発明の効果】
【０００６】
実施例に開示するプリンタドライバは、１ページ目の開始を示すページ開始情報をオペレーティングシステムから受け付けたときに、１ページ目に対応するページ開始コマンドをプリンタに送信せず、２ページ目の開始を示すページ開始情報をオペレーティングシステムから受け付けたときに、１ページ目に対応するページ開始コマンドを両面指定コマンドに関連した態様でプリンタに送信する。一方、プリンタドライバは、２ページ目の開始を示すページ開始情報をオペレーティングシステムから受け付けることなく、印刷ジョブの終了を示すジョブ終了情報をオペレーティングシステムから受け付けた場合に、１ページ目に対応するページ開始コマンドを片面指定コマンドに関連した態様でプリンタに送信する。これにより、印刷設定が両面印刷に設定されており、印刷対象のドキュメントを構成する画像の総ページ数が１ページである場合に片面印刷を実行することができる。
【図面の簡単な説明】
【０００７】
【図１】プリンタシステム１のブロック図である。
【図２】従来プリンタドライバ１００とＯＳ２８Ａとの作動シーケンスを示す図である。
【図３】プリンタドライバ２６とＯＳ２８との作動シーケンスを示す図である。
【図４】DrvEnableSurfaceサブルーチンとDrvNextBandサブルーチンとを示す図である。
【図５】DrvStartPageサブルーチンを示す図である。
【図６】DrvSendPageサブルーチンを示す図である。
【図７】DrvEndPageサブルーチンを示す図である。
【図８】DrvEndDocサブルーチンを示す図である。
【発明を実施するための形態】
【０００８】
＜プリンタシステムの構成＞
図１は、本実施形態に係るプリンタシステム１のブロック図である。図１に示すプリンタシステム１は、ＰＣ（情報処理装置の一例）１０、プリンタ５０を備える。ＰＣ１０は、ＣＰＵ（コンピュータ及びコントローラの一例）１２、メモリ１４、ＬＣＤ１６、入力Ｉ／Ｆ１８、ネットワークＩ／Ｆ（通信インタフェースの一例）２０を主に備えている。これらの構成要素は、バス２２を介して互いに通信可能とされている。
【０００９】
ＰＣ１０及びプリンタ５０は、ネットワークＩ／Ｆ２０及びネットワーク５２を通じて通信可能となっている。通信の方式としては、例えば、有線ＬＡＮ、ＵＳＢ、Ｗｉ−Ｆｉ（登録商標）やＢｌｕｅｔｏｏｔｈ（登録商標）を採用できる。なお、プリンタ５０は、片面印刷と両面印刷とを選択的に実行可能なデバイスである。また、プリンタ５０は、印刷用紙の印刷面を上に向けて排出するフェイスアップ排出のプリンタである。
【００１０】
ＣＰＵ１２は、メモリ１４内のアプリケーション２４、プリンタドライバ２６、ＯＳ２８に従って処理を実行する。アプリケーション２４は、例えば、文章コンテンツを作成するワープロソフト、表計算コンテンツを作成する表計算ソフト、プレゼンテーションコンテンツを作成するプレゼンテーションソフトなどの、コンテンツを作成するプログラムである。アプリケーション２４が作成したコンテンツは、アプリケーションがＯＳ２８に印刷を指示することにより、ＰＣ１０に接続されたプリンタで印刷される。アプリケーション２４がＯＳ２８にコンテンツの印刷を指示するとき、アプリケーション２４はＯＳ２８に、コンテンツを示すコンテンツデータを、ＯＳ２８が解釈できる形式で出力する。アプリケーション２４がＯＳ２８に出力するコンテンツデータを、本実施例では、画像データの一種として記載する。プリンタドライバ２６は、プリンタ５０のデバイスドライバであり、プリンタ５０の作動を制御する。ＯＳ２８は、アプリケーション２４、プリンタドライバ２６に利用される基本的な機能を提供するプログラムである。ＯＳ２８は、例えば、Ｗｉｎｄｏｗｓ（登録商標）、ＭａｃＯＳ（登録商標）、Ｌｉｎｕｘ（登録商標）、Ａｎｄｒｏｉｄ（登録商標）、ｉＯＳ（登録商標）等のオペレーティングシステムである。なお、以下の説明では、プリンタドライバ２６等を実行するＣＰＵ１２のことを、単にプログラム名でも記載する場合がある。例えば、「プリンタドライバ２６が」という記載は、「プリンタドライバ２６を実行するＣＰＵ１２が」ということを意味する場合がある。
【００１１】
また、メモリ１４は、データ記憶領域３４を備える。データ記憶領域３４は、プリンタドライバ２６等の実行に必要なデータなどを記憶する領域である。なお、メモリ１４は、ＲＡＭ、ＲＯＭ、フラッシュメモリ、ＨＤＤ、ＣＰＵ１２が備えるバッファなどが組み合わされて構成されている。
【００１２】
メモリ１４は、コンピュータが読み取り可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体である。ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体には、上記の例の他に、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等の記録媒体も含まれる。また、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体は、ｔａｎｇｉｂｌｅな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙなコンピュータが読み取り可能なストレージ媒体には含まれない。
【００１３】
ＬＣＤ１６は、ＰＣ１０の各種機能を表示する。入力Ｉ／Ｆ１８は、キーボード，マウス等を含み、ユーザ操作を入力するためのインタフェースである。
【００１４】
＜プリンタシステム１による印刷処理＞
近年の省資源化の潮流に従って、印刷設定として両面印刷と片面印刷とを選択可能なプリンタにおいて、両面印刷がデフォルトで設定されることが望まれている。しかしながら、印刷設定として両面印刷がデフォルトで設定されていると、総ページ数が１ページの画像のドキュメントの印刷時、つまり、ユーザが印刷設定を変更していない場合は、１ページの画像のみの印刷時に、プリンタにおいて、両面印刷設定での印刷処理が実行される。
【００１５】
両面印刷設定での印刷処理では、プリンタの種類によっては、一方の面への印刷が完了した後に、他方の面への印刷処理の準備として、印刷用紙がスイッチバックされる。このため、総ページ数が１ページの画像のドキュメントの印刷処理時に、両面印刷設定での印刷処理が実行されると、無駄に印刷用紙のスイッチバックが実行される。このような無駄なスイッチバックの実行により、総ページ数が１ページの画像のドキュメントの印刷が完了していても、印刷用紙がプリンタから排出されず、ＦＰＯＴ（印刷ボタンが押されてから印刷用紙が排出されるまでの所要時間）が長くなる。また、無駄なスイッチバックの実行により、プリンタの種類によっては、無駄な振動，騒音等が発生する。また、無駄なスイッチバックの実行により、プリンタの種類によっては、印刷用紙の排出がページの途中で止まり、スイッチバックされたのち、その印刷用紙が排出するため、プリンタのユーザに不信を感じさせることになるかもしれない。
【００１６】
さらに言えば、両面印刷設定での印刷処理では、一方の面に印刷された画像が他方の面に透けることを防止するべく、印刷用紙へのインクの吐出量が制限される。このため、両面印刷設定で印刷された画像の画質は、片面印刷設定で印刷された画像の画質より低い傾向にある。このため、１ページの画像のみの印刷時に、両面印刷に設定されている場合であっても、片面印刷設定で印刷されることが好ましい。
【００１７】
しかしながら、１ページ以上の画像により構成されるドキュメントの印刷時には、１ページ毎に区切られた印刷ジョブが、ページ順に、ＯＳ２８からプリンタドライバに出力されている。そして、印刷設定が両面印刷に設定されている場合に、従来のプリンタドライバの処理では、プリンタドライバが、１ページ毎に区切られた印刷ジョブを受け付けるごとに、両面印刷に対応する態様の画像データを作成する。このため、従来のプリンタドライバでは、印刷設定が両面印刷に設定されている場合に、総ページ数が１ページの画像のドキュメントに対して、片面印刷設定での印刷処理を行うことはできない。以下に、従来のプリンタドライバ（以下、「従来プリンタドライバ」と記載する）１００の処理について、図２に示すシーケンス図を用いて説明する。なお、従来プリンタドライバ１００は、不図示のＰＣ１０Ａにインストールされており、ＰＣ１０Ａは、従来プリンタドライバ１００以外はＰＣ１０と同様の構成を持っている。このＰＣ１０Ａの構成は、ＰＣ１０の構成に「Ａ」をつけた参照符号で表す。
【００１８】
なお、本明細書では、基本的に、プログラムに記述された命令に従ったＣＰＵ１２の処理を示す。すなわち、以下の説明における「判断」「抽出」「選択」「算出」「決定」「特定」「取得」「受付」「制御」「設定」等の処理は、ＣＰＵ１２の処理を表している。ＣＰＵ１２による処理は、ＯＳ２８を介したハードウェア制御も含む。なお、「取得」は要求を必須とはしない概念で用いる。すなわち、ＣＰＵ１２が要求することなくデータを受信するという処理も、「ＣＰＵ１２がデータを取得する」という概念に含まれる。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。また、「命令」「応答」「要求」等の処理は、「命令」「応答」「要求」等を示す情報を通信することにより行われる。また、「命令」「応答」「要求」等の文言を、「命令」「応答」「要求」等を示す情報そのものという意味で記載してもよい。
【００１９】
まず、ＰＣ１０Ａの入力Ｉ／Ｆ１８を介した操作入力に従って、アプリケーション２４Ａがプリンタ５０による印刷処理を目的として、１ページ以上の画像により構成されるドキュメントの画像データを作成する。この際、ユーザは、入力Ｉ／Ｆ１８Ａへの操作により、印刷条件として、両面印刷と片面印刷との何れかを選択的に設定する。また、ユーザが両面印刷と片面印刷との何れかを選択的に設定しなければ、デフォルト設定に従って、両面印刷に設定される。そして、アプリケーション２４Ａは、画像データを作成すると、作成した画像データと、設定された印刷条件（以下、「設定情報」と記載する）とを、ＯＳ２８Ａに出力する。なお、設定情報には、両面印刷と片面印刷との何れに設定されているかを示す情報だけでなく、印刷用紙のサイズを示す情報，解像度を示す情報なども含まれている。
【００２０】
ＯＳ２８Ａは、画像データを受け付けると、従来プリンタドライバ１００の関数DrvStartDocを呼び出す（Ｓ１００）。この関数DrvStartDocは、印刷ジョブの開始を示す関数である。次に、ＯＳ２８Ａは、従来プリンタドライバ１００の関数DrvStartPageを呼び出す（Ｓ１０２）。この関数DrvStartPageは、印刷ジョブの各ページの開始を示す関数であり、関数DrvStartPageには、設定情報が関連付けられている。ＯＳ２８Ａは、設定情報を関連付けてプリンタドライバの各関数を呼び出す。例えば、ＯＳ２８Ａは、両面印刷に設定されていること示す情報（以下、「両面設定情報」と記載する）（両面指定情報の一例）と、片面印刷に設定されていること示す情報（以下、「片面設定情報」と記載する）（片面指定情報の一例）との何れかを、設定情報として、関数DrvStartPageの引数に含め、関数DrvStartPageを呼び出している。
【００２１】
また、関数DrvStartPageの引数には、送信される印刷ジョブが何ページ目であるかを示す情報（以下、「ページ情報」と記載する）も含まれる。印刷ジョブは、上述したように、１ページ以上の画像により構成されるドキュメントの印刷ジョブであり、１ページ毎に区切られて、ページ順に従来プリンタドライバ１００に出力される。このため、例えば、１ページ目の印刷ジョブが送信される際に、その印刷ジョブが１ページ目の印刷ジョブであることを示す情報が、ページ情報として、関数DrvStartPageの引数に含まれる。
【００２２】
そして、従来プリンタドライバ１００は、関数DrvStartPageが呼び出されると、ジョブ開始コマンドをプリンタ５０に送信する（Ｓ１０４）。ジョブ開始コマンドは、ドキュメントの印刷ジョブの開始を示すコマンドである。次に、従来プリンタドライバ１００は、ページ開始コマンドをプリンタ５０に送信する（Ｓ１０６）。ページ開始コマンドは、ドキュメントを構成する１ページ以上の画像の各ページの印刷ジョブの開始を示すコマンドである。このため、従来プリンタドライバ１００は、関数DrvStartPageに含まれるページ情報が示すページを指定して、ページ開始コマンドをプリンタ５０に送信する。つまり、例えば、１ページ目の印刷ジョブを示す情報が、ページ情報として関数DrvStartPageに含まれている場合に、従来プリンタドライバ１００は、１ページ目を指定して、ページ開始コマンドをプリンタ５０に送信する。
【００２３】
さらに、ページ開始コマンドは、関数DrvStartPageに含められている設定情報に応じたコマンドを含む態様で、プリンタ５０に送信される。つまり、関数DrvStartPageに含められている設定情報が両面設定情報である場合に、従来プリンタドライバ１００は、両面印刷を指定するコマンド（以下、「両面指定コマンド」）を含む態様でページ開始コマンドを、プリンタ５０に送信する。また、関数DrvStartPageに含められている設定情報が片面設定情報である場合に、従来プリンタドライバ１００は、片面印刷を指定するコマンド（以下、「片面指定コマンド」）を含む態様でページ開始コマンドを、プリンタ５０に送信する。
【００２４】
これにより、ページ開始コマンドを受信したプリンタ５０では、ページ開始コマンドに含まれる両面指定コマンド若しくは、片面指定コマンドに応じて、各ページの印刷条件が設定される。つまり、プリンタ５０が両面指定コマンドを含むページ開始コマンドを受信した場合に、各ページの印刷条件が両面印刷に設定され、プリンタ５０が片面指定コマンドを含むページ開始コマンドを受信した場合に、各ページの印刷条件が片面印刷に設定される。
【００２５】
次に、ＯＳ２８Ａは、従来プリンタドライバ１００の関数DrvSendPageを呼び出す（Ｓ１０８）。この関数DrvSendPageは、画像データの送信を示す関数であり、関数DrvSendPageの引数には、１ページ分の画像の画像データが含まれている。なお、ＯＳ２８Ａは、上述したように、１ページ毎に区切られた印刷ジョブを、ページ順にプリンタドライバに出力するため、ＯＳ２８Ａは、最初に、１ページ目の画像の画像データを含む関数DrvSendPageを呼び出す。そして、従来プリンタドライバ１００は、関数DrvSendPageに含まれる画像データに基づいて印刷用の画像データを作成する（Ｓ１１０）。この際、従来プリンタドライバ１００は、先に呼び出されている関数DrvStartPageに含められている設定情報が両面設定情報である場合に、両面印刷に対応する態様の画像データ（以下、「両面印刷用画像データ」と記載する）を作成する。一方、従来プリンタドライバ１００は、先に呼び出されている関数DrvStartPageに含められている設定情報が片面設定情報である場合に、片面印刷に対応する態様の画像データ（以下、「片面印刷用画像データ」と記載する）を作成する。
【００２６】
そして、従来プリンタドライバ１００は、印刷用画像データを作成すると、作成した印刷用画像データをプリンタ５０に送信する（Ｓ１１２）。これにより、プリンタ５０は、受信した印刷用画像データに基づく印刷処理を実行する。なお、プリンタ５０では、先に受信しているページ開始コマンドに含まれる両面指定コマンド若しくは、片面指定コマンドに応じて、印刷条件が設定されているため、その設定に従って、印刷処理が実行される。つまり、例えば、プリンタ５０が両面印刷用画像データを受信した場合には、印刷条件が両面印刷に設定されているため、両面印刷用画像データに基づく画像が、印刷用紙の一方の面に印刷され、その一方の面への画像の印刷が完了すると、印刷用紙のスイッチバックが実行される。
【００２７】
次に、ＯＳ２８Ａは、従来プリンタドライバ１００の関数DrvEndPageを呼び出す（Ｓ１１４）。関数DrvEndPageは、印刷ジョブの各ページの終了を示す関数である。そして、従来プリンタドライバは、関数DrvEndPageが呼び出されると、ページ終了コマンドをプリンタ５０に送信する（Ｓ１１６）。ページ終了コマンドは、ドキュメントを構成する１ページ以上の画像の各ページの印刷ジョブの終了を示すコマンドである。
【００２８】
次に、ＯＳ２８Ａは、アプリケーション２４Ａから受け付けたドキュメントの全ページの画像データを、従来プリンタドライバ１００に出力したか否かを判断する（Ｓ１１８）。つまり、ＯＳ２８Ａは、全ページの画像データを、関数DrvSendPageに含めて呼び出したか否かを判断する。そして、ドキュメントの全ページの画像データが出力されていない場合（Ｓ１１８：ＮＯ）に、Ｓ１０２〜Ｓ１１６の処理が実行される。これにより、ドキュメントを構成する画像が複数ページある場合に、２ページ目以降の印刷処理が実行される。
【００２９】
また、ドキュメントの全ページの画像データが出力されている場合（Ｓ１１８：ＹＥＳ）に、ＯＳ２８は、従来プリンタドライバ１００の関数DrvEndDocを呼び出す（Ｓ１２０）。この関数DrvEndDocは、印刷ジョブの終了を示す関数である。そして、従来プリンタドライバ１００は、ジョブ終了コマンドをプリンタ５０に送信する（Ｓ１２２）。ジョブ終了コマンドは、ドキュメントの印刷ジョブの終了を示すコマンドである。これにより、従来プリンタドライバ１００での処理が完了する。
【００３０】
このような従来プリンタドライバ１００の処理において、例えば、ドキュメントが１ページの画像のみにより構成されており、そのドキュメントの印刷条件が両面印刷に設定されている場合に、１ページ目の画像の両面印刷用画像データがプリンタ５０に送信され、プリンタ５０において、その両面印刷用画像データに基づいて、両面印刷が実行された後に、関数DrvEndDocが呼び出される。つまり、従来プリンタドライバ１００の処理では、１ページ目の画像が両面印刷で実行された後に、印刷ジョブの終了が認識される。このように、１ページ目の画像が両面印刷で実行された後に、ドキュメントを構成する画像の総ページ数が１ページであることが認識されるため、印刷設定が両面印刷に設定されている場合に、総ページ数が１ページの画像のドキュメントに対して、片面印刷設定での印刷処理を行うことはできない。また、１ページ目の画像が両面印刷で実行されるため、１ページ目の画像が印刷用紙の一方の面に印刷された後に、スイッチバックが実行されるため、画像が印刷された面が下を向いた状態で、印刷用紙がプリンタ５０から排出される。つまり、プリンタ５０は、フェイスアップ排出のプリンタであるにも関わらず、印刷面が下を向いた状態で印刷用紙が排出されるため、ユーザが違和感を抱く虞がある。
【００３１】
そこで、本実施例のプリンタドライバ２６による処理では、ドキュメントを構成する画像の総ページ数が、２ページ以上であると特定された後に、１ページ目のページ開始コマンドのプリンタ５０への送信，１ページ目の印刷用画像データの作成等が、実行される。以下に、プリンタドライバ２６の処理について、図３に示すシーケンス図を用いて説明する。
【００３２】
ＯＳ２８は、アプリケーション２４から画像データを受け付けると、プリンタドライバ２６の関数DrvEnableSurfaceを呼び出す（Ｓ２００）。プリンタドライバ２６の関数DrvEnableSurfaceに、設定情報が関連付けられている。なお、関数DrvEnableSurface以外の関数にも、設定情報が関連付けられている。そして、プリンタドライバ２６は、関数DrvEnableSurfaceが呼び出されると、DrvEnableSurfaceサブルーチンを実行する（Ｓ２０１）。
【００３３】
DrvEnableSurfaceサブルーチンでは、図４（Ａ）に示すように、プリンタドライバ２６が、印刷ジョブが両面印刷に設定されているか否かを判断する（Ｓ２５０）。つまり、プリンタドライバ２６は、関数DrvEnableSurfaceに含まれる設定情報が、両面設定情報を含んでいるか否かを判断する。この際、関数DrvEnableSurfaceに含まれる設定情報が、両面設定情報を含んでいない場合、つまり、片面設定情報を含んでいる場合に、プリンタドライバ２６は、印刷ジョブが片面印刷に設定されており、両面印刷に設定されていないと判断する（Ｓ２５０：ＮＯ）。そして、印刷ジョブが片面印刷に設定されていると判断された場合に、プリンタドライバ２６は、バンディングを実行するか否かを判断する（Ｓ２５２）。バンディングとは、１ページ分の画像を印刷する際に、１ページ分の画像を複数のバンド（ブロック）に分割し、１のバンド毎に印刷用画像データを作成し、１のバンド毎に印刷を行う手法である。
【００３４】
プリンタドライバ２６は、関数DrvEnableSurfaceに含まれる設定情報に基づいて、バンディングを実行するか否かを判断する。例えば、関数DrvEnableSurfaceに含まれる設定情報に、１ページ分の画像を複数のバンドに分割することに適さない設定に関する情報が含まれている場合に、プリンタドライバ２６はバンディングを実行しないと判断する。また、プリンタドライバ２６は、関数DrvEnableSurfaceに含まれる設定情報だけでなく、プリンタ５０のメモリの空き容量に基づいて、バンディングを実行するか否かを判断する。詳しくは、プリンタドライバ２６は、プリンタ５０と通信し、プリンタ５０の空き容量を取得する。そして、取得したプリンタ５０の空き容量が、１ページ分の画像の画像データに相当するデータ量より少ない場合に、バンディングを実行すると判断する。一方、取得したプリンタ５０の空き容量が、１ページ分の画像の画像データに相当するデータ量より多い場合に、バンディングを実行しないと判断する。
【００３５】
上記手法によりバンディングを実行するか否が判断され、バンディングを実行すると判断されると、プリンタドライバ２６は、１バンド分の画像データのサーフェスを生成する（Ｓ２５４）。つまり、１バンド分の画像データを記憶可能な領域を、データ記憶領域３４に確保し、その領域を指定可能な情報（以下、「メモリ情報」と記載する）を作成する。続いて、プリンタドライバ２６は、バンディング設定を行う（Ｓ２５６）。つまり、プリンタドライバ２６は、バンディングを実行することを示す情報（以下、「バンディング情報」と記載する）を生成する。そして、DrvEnableSurfaceサブルーチンが終了する。
【００３６】
また、Ｓ２５０で、関数DrvEnableSurfaceに含まれる設定情報が、両面設定情報を含んでいる場合に、プリンタドライバ２６は、印刷ジョブが両面印刷に設定されていると判断（Ｓ２５０：ＹＥＳ）し、Ｓ２５８の処理を実行する。また、Ｓ２５２で、プリンタドライバ２６がバンディングを実行しないと判断した場合（Ｓ２５２：ＮＯ）にも、Ｓ２５８の処理を実行する。Ｓ２５８では、プリンタドライバ２６は、１ページ分の画像データのサーフェスを生成する（Ｓ２５８）。つまり、１ページ分の画像データを記憶可能な領域を、データ記憶領域３４に確保し、その領域を指定可能なメモリ情報を作成する。そして、DrvEnableSurfaceサブルーチンが終了する。
【００３７】
このように、DrvEnableSurfaceサブルーチンでは、バンディングが設定されるが、印刷ジョブが片面印刷に設定されている場合にのみ、バンディングが設定され、印刷ジョブが両面印刷に設定されている場合に、バンディングは設定されない。そして、DrvEnableSurfaceサブルーチンが終了すると、プリンタドライバ２６は、図３に示すように、メモリ情報をＯＳ２８に出力する（Ｓ２０２）。この際、バンディング情報が作成されていれば、プリンタドライバ２６は、バンディング情報もＯＳ２８に出力する。なお、プリンタドライバ２６の各サブルーチンが終了したときに、プリンタドライバ２６は、ＯＳ２８が呼び出した関数が終了したことを示す情報を、ＯＳ２８に出力する。
【００３８】
次に、プリンタドライバ２６の関数DrvStartDoc（ジョブ開始情報の一例）を呼び出す（Ｓ２０４）。プリンタドライバ２６は、関数DrvStartDocが呼び出されると関数DrvStartDocが終了したことを示す情報を、ＯＳ２８に出力する。続いて、ＯＳ２８は、プリンタドライバ２６の関数DrvStartPage（ページ開始情報の一例）を呼び出す（Ｓ２０８）。なお、先に説明したように、従来プリンタドライバ１００の関数DrvStartPageには、設定情報とページ情報とが含まれていたが、プリンタドライバ２６の関数DrvStartPageには、設定情報は含まれておらず、ページ情報が含まれている。そして、プリンタドライバ２６は、関数DrvStartPageが呼び出されると、DrvStartPageサブルーチンを実行する（Ｓ２１０）。
【００３９】
DrvStartPageサブルーチンでは、図５に示すように、プリンタドライバ２６が、印刷ジョブが両面印刷に設定されているか否かを判断する（Ｓ２７０）。なお、Ｓ２７０の判断手法は、Ｓ２５０の判断手法と同じであるため、説明を省略する。そして、印刷ジョブが片面印刷に設定されている場合（Ｓ２７０：ＮＯ）に、プリンタドライバ２６は、ジョブ開始コマンドをプリンタ５０に送信する（Ｓ２７２）。そして、プリンタドライバ２６は、ページ開始コマンドをプリンタ５０に送信する（Ｓ２７４）。なお、プリンタドライバ２６は、関数DrvStartPageに含まれるページ情報が示すページを指定して、ページ開始コマンドをプリンタ５０に送信する。
【００４０】
さらに、ページ開始コマンドには、設定情報に応じたコマンドが含められるため、Ｓ２７４で送信されるページ開始コマンドには、片面指定コマンドが含められている。つまり、Ｓ２７０で判断されているように、印刷ジョブが片面印刷に設定されているため、ページ開始コマンドに、片面印刷を指定する片面指定コマンドが含められている。そして、DrvStartPageサブルーチンが終了する。なお、以降の説明では、印刷ジョブが片面印刷に設定されている場合について説明する。
【００４１】
また、ＯＳ２８は、図３に示すように、関数DrvStartPageを呼び出した後に、バンディングが設定されているか否かを判断する（Ｓ２１２）。つまり、ＯＳ２８は、Ｓ２０６でバンディング情報を受け付けているか否かを判断する。そして、ＯＳ２８は、バンディング情報を受け付けている場合に、バンディングが設定されていると判断し、バンディング情報を受け付けていない場合に、バンディングが設定されていないと判断する。
【００４２】
この際、ＯＳ２８は、バンディングが設定されていると判断すると（Ｓ２１２：ＹＥＳ）、プリンタドライバ２６の関数DrvNextBandを呼び出す（Ｓ２１４）。なお、関数DrvNextBandには、引数として、１バンド分の画像データが含まれている。そして、プリンタドライバ２６は、関数DrvNextBandが呼び出されると、DrvNextBandサブルーチンを実行する（Ｓ２１６）。
【００４３】
DrvNextBandサブルーチンでは、プリンタドライバ２６は、図４（Ｂ）に示すように、印刷用の画像データを作成する（Ｓ３００）。この際、プリンタドライバ２６は、関数DrvNextBandに含まれる１バンド分の画像データに基づいて印刷用の画像データを作成する。なお、印刷ジョブが片面印刷に設定されている場合にのみ、バンディングが設定されるため、Ｓ３００において、プリンタドライバ２６は、片面印刷用画像データを作成する。そして、プリンタドライバ２６は、作成した１バンド分の片面印刷用画像データをプリンタ５０に送信する（Ｓ３０２）。これにより、DrvNextBandサブルーチンが終了する。
【００４４】
なお、プリンタ５０は、受信した印刷用画像データに基づく印刷処理を実行する。つまり、プリンタ５０では、Ｓ２７４で送信されたページ開始コマンドに含まれる片面指定コマンドに応じて印刷条件が設定されているため、プリンタ５０は、受信した印刷用画像データに基づいて、片面印刷処理を実行し、１バンド分の画像を印刷する。
【００４５】
また、ＯＳ２８は、図３に示すように、関数DrvNextBandを呼び出すと、１ページ分の画像データをプリンタドライバ２６に出力したか否かを判断する（Ｓ２１８）。つまり、ＯＳ２８は、１ページ分の画像を複数のバンドに分割し、それら複数のバンドの画像の画像データを、全て、関数DrvNextBandに含めて呼び出したか否かを判断する。そして、１ページ分の画像データが出力されていない場合（Ｓ２１４：ＮＯ）に、Ｓ２１４，Ｓ２１６の処理が繰り返されることで、１ページ分の画像データがプリンタドライバ２６に出力される。これにより、Ｓ２１８で、１ページ分の画像データが出力されたと判断される（Ｓ２１８：ＹＥＳ）。そして、Ｓ２２０に進む。
【００４６】
また、Ｓ２１２で、バンディングが設定されていないと判断されると（Ｓ２１２：ＮＯ）、ＯＳ２８は、プリンタドライバ２６の関数DrvSendPageを呼び出す（Ｓ２３０）。なお、関数DrvSendPageには、引数として、１ページ分の画像データが含まれている。そして、プリンタドライバ２６は、関数DrvSendPageが呼び出されると、DrvSendPageサブルーチンを実行する（Ｓ２３２）。
【００４７】
DrvSendPageサブルーチンでは、プリンタドライバ２６は、図６に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する（Ｓ３５０）。なお、Ｓ３５０の判断手法は、Ｓ２５０の判断手法と同じであるため、説明を省略する。そして、この説明は、印刷ジョブが片面印刷に設定されている場合の説明であるため、印刷ジョブが片面印刷に設定されていると判断される（Ｓ３５０：ＮＯ）。次に、プリンタドライバ２６は、関数DrvSendPageに含まれる１ページ分の画像データに基づいて印刷用の画像データを作成する（Ｓ３５２）。なお、Ｓ３５０で判断されているように、印刷ジョブが片面印刷に設定されているため、プリンタドライバ２６は、片面印刷用画像データを作成する。そして、プリンタドライバ２６は、作成した１ページ分の片面印刷用画像データをプリンタ５０に送信する（Ｓ３５４）。これにより、DrvSendPageサブルーチンが終了し、図３に示すように、Ｓ２２０に進む。
【００４８】
なお、プリンタ５０は、受信した印刷用画像データに基づく印刷処理を実行する。つまり、プリンタ５０では、Ｓ２７４で送信されたページ開始コマンドに含まれる片面指定コマンドに応じて印刷条件が設定されているため、プリンタ５０は、受信した印刷用画像データに基づいて、片面印刷処理を実行し、１ページ分の画像を印刷する。
【００４９】
また、Ｓ２１８で１ページ分の画像データが出力されたと判断された場合（Ｓ２１８：ＹＥＳ）、若しくは、Ｓ２３２のDrvSendPageサブルーチンが終了した場合に、ＯＳ２８は、プリンタドライバ２６の関数DrvEndPageを呼び出す（Ｓ２２０）。プリンタドライバ２６は、関数DrvEndPageが呼び出されると、DrvEndPageサブルーチンを実行する（Ｓ２２２）。
【００５０】
DrvEndPageサブルーチンでは、プリンタドライバ２６は、図７に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する（Ｓ３１０）。なお、Ｓ３１０の判断手法は、Ｓ２５０の判断手法と同じであるため、説明を省略する。そして、この説明は、印刷ジョブが片面印刷に設定されている場合の説明であるため、印刷ジョブが片面印刷に設定されていると判断される（Ｓ３１０：ＮＯ）。そして、プリンタドライバ２６は、ページ終了コマンドをプリンタ５０に送信する（Ｓ３１２）。これにより、DrvEndPageサブルーチンが終了する。
【００５１】
また、ＯＳ２８は、図３に示すように、関数DrvEndPageを呼び出した後に、アプリケーション２４から受け付けたドキュメントの全ページの画像データを、プリンタドライバ２６に出力したか否かを判断する（Ｓ２２４）。つまり、ＯＳ２８は、全ページの画像データを、関数DrvNextBand若しくは、関数DrvSendPageに含めて呼び出したか否かを判断する。そして、ドキュメントの全ページの画像データが出力されていない場合（Ｓ２２４：ＮＯ）に、Ｓ２０８〜Ｓ２２２、若しくは、Ｓ２０８〜Ｓ２１２，Ｓ２３０，Ｓ２３２，Ｓ２２０，Ｓ２２２の処理が繰り返し実行される。これにより、ドキュメントを構成する画像が複数ページある場合に、２ページ目以降の印刷処理が繰り返し実行され、Ｓ２２４で、ドキュメントの全ページ分の画像データが出力されたと判断される（Ｓ２２４：ＹＥＳ）。
【００５２】
そして、ＯＳ２８は、ドキュメントの全ページ分の画像データが出力されたと判断すると、プリンタドライバ２６の関数DrvEndDoc（ジョブ終了情報の一例）を呼び出す（Ｓ２２６）。プリンタドライバ２６は、関数DrvEndDocが呼び出されると、DrvEndDocサブルーチンを実行する（Ｓ２２８）。
【００５３】
DrvEndDocサブルーチンでは、プリンタドライバ２６は、図８に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する（Ｓ３２０）。なお、Ｓ３２０の判断手法は、Ｓ２５０の判断手法と同じであるため、説明を省略する。そして、この説明は、印刷ジョブが片面印刷に設定されている場合の説明であるため、印刷ジョブが片面印刷に設定されていると判断される（Ｓ３２０：ＮＯ）。そして、プリンタドライバ２６は、ジョブ終了コマンドをプリンタ５０に送信し（Ｓ３２２）、DrvEndDocサブルーチンが終了する。これにより、印刷ジョブが片面印刷に設定されている場合のプリンタドライバ２６での処理が完了する。
【００５４】
次に、印刷ジョブが両面印刷に設定されている場合でのプリンタドライバ２６のＳ２１０以降の処理、つまり、DrvStartPageサブルーチン以降の処理について説明する。DrvStartPageサブルーチンでは、プリンタドライバ２６は、図５に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する（Ｓ２７０）。ここでの説明は、印刷ジョブが両面印刷に設定されている場合の説明であるため、印刷ジョブが両面印刷に設定されていると判断される（Ｓ２７０：ＹＥＳ）。
【００５５】
次に、プリンタドライバ２６は、関数DrvStartPageに含まれるページ情報が２ページ目を示しているか否かを判断する（Ｓ２７６）。この説明では、印刷ジョブが両面印刷に設定されている場合の説明において、初めてプリンタドライバ２６の関数DrvStartPageが呼び出されているため、関数DrvStartPageに含まれるページ情報は１ページ目を示している。このため、関数DrvStartPageに含まれるページ情報が２ページ目を示していないと判断される（Ｓ２７６：ＮＯ）。
【００５６】
次に、プリンタドライバ２６は、関数DrvStartPageに含まれるページ情報が３ページ目以降を示しているか否かを判断する（Ｓ２７８）。ここでも、関数DrvStartPageに含まれるページ情報は１ページ目を示しているため、関数DrvStartPageに含まれるページ情報は３ページ目以降を示していないと判断される（Ｓ２７８：ＮＯ）。これにより、DrvStartPageサブルーチンが終了する。つまり、１ページ目のページ情報を含む関数DrvStartPageが呼び出された場合に、従来プリンタドライバ１００は、ジョブ開始コマンドと、１ページ目を指定したページ開始コマンドをプリンタ５０に送信したが、プリンタドライバ２６は、ジョブ開始コマンドも、１ページ目を指定したページ開始コマンドも、プリンタ５０に送信しない。
【００５７】
次に、ＯＳ２８は、図３に示すように、関数DrvStartPageを呼び出した後に、バンディングが設定されているか否かを判断するが（Ｓ２１２）、上述したように、印刷ジョブが両面印刷に設定されている場合に、バンディングは設定されない。このため、バンディングが設定されていないと判断される（Ｓ２１２：ＮＯ）。そして、ＯＳ２８は、プリンタドライバ２６の関数DrvSendPageを呼び出す（Ｓ２３０）。プリンタドライバ２６は、関数DrvSendPageが呼び出されると、DrvSendPageサブルーチンを実行する（Ｓ２３２）。
【００５８】
DrvSendPageサブルーチンでは、プリンタドライバ２６は、図６に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する（Ｓ３５０）。この際、印刷ジョブが両面印刷に設定されているため、印刷ジョブが両面印刷に設定されていると判断される（Ｓ３５０：ＹＥＳ）。次に、プリンタドライバ２６は、関数DrvStartPageに含まれるページ情報が２ページ目を示しているか否かを判断する（Ｓ３５６）。ここでも、関数DrvStartPageに含まれるページ情報は１ページ目を示しているため、関数DrvStartPageに含まれるページ情報は２ページを示していないと判断される（Ｓ３５６：ＮＯ）。そして、プリンタドライバ２６は、１ページ目の画像データをデータ記憶領域３４に保存する（Ｓ３５８）。これにより、DrvSendPageサブルーチンが終了する。
【００５９】
つまり、関数DrvSendPageには、１ページ分の画像データが含まれており、この説明では、印刷ジョブが両面印刷に設定されている場合の説明において、初めてプリンタドライバ２６の関数DrvSendPageが呼び出されている。このため、関数DrvSendPageに１ページ目の画像データ含まれており、プリンタドライバ２６は、その１ページ目の画像データをデータ記憶領域３４に保存する。これにより、DrvStartPageサブルーチンが終了する。つまり、１ページ目の画像データを含む関数DrvSendPageが呼び出された場合に、従来プリンタドライバ１００は、１ページ目の印刷用画像データを作成し、その印刷用画像データをプリンタ５０に送信したが、プリンタドライバ２６は、１ページ目の画像データをデータ記憶領域３４に記憶し、印刷用画像データの作成及び、画像データのプリンタ５０への送信を実行しない。
【００６０】
また、ＯＳ２８は、図３に示すように、関数DrvSendPageを呼び出した後に、プリンタドライバ２６の関数DrvEndPageを呼び出す（Ｓ２２０）。プリンタドライバ２６は、関数DrvEndPageが呼び出されると、DrvEndPageサブルーチンを実行する（Ｓ２２２）。DrvEndPageサブルーチンでは、プリンタドライバ２６は、図７に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する（Ｓ３１０）。この際、印刷ジョブが両面印刷に設定されているため、印刷ジョブが両面印刷に設定されていると判断される（Ｓ３１０：ＹＥＳ）。
【００６１】
次に、プリンタドライバ２６は、関数DrvStartPageに含まれるページ情報が２ページ目を示しているか否かを判断する（Ｓ３１４）。ここでも、関数DrvStartPageに含まれるページ情報は１ページ目を示しているため、関数DrvStartPageに含まれるページ情報は２ページを示していないと判断される（Ｓ３１４：ＮＯ）。これにより、DrvStartPageサブルーチンが終了する。
【００６２】
また、ＯＳ２８は、図３に示すように、関数DrvEndPageを呼び出した後に、アプリケーション２４から受け付けたドキュメントの全ページの画像データを、プリンタドライバ２６に出力したか否かを判断する（Ｓ２２４）。つまり、ＯＳ２８は、全ページの画像データを、関数DrvSendPageに含めて呼び出したか否かを判断する。この際、例えば、ＯＳ２８がアプリケーション２４から受け付けたドキュメントが２ページ以上の画像を含んでいる場合に、上記説明で、ＯＳ２８は、１ページ目の画像データを含む関数DrvSendPageしか呼び出していない。このため、Ｓ２２４で、ＯＳ２８は、アプリケーション２４から受け付けたドキュメントの全ページの画像データを、プリンタドライバ２６に出力していないと判断する（Ｓ２２４：ＮＯ）。
【００６３】
そして、全ページの画像データが出力されていない場合（Ｓ２２４：ＮＯ）に、ＯＳ２８は、２ページ目を示すページ情報を含む関数DrvStartPageを呼び出す（Ｓ２０８）。そして、プリンタドライバ２６は、関数DrvStartPageが呼び出されると、DrvStartPageサブルーチンを実行する（Ｓ２１０）。DrvStartPageサブルーチンでは、プリンタドライバ２６は、図５に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する（Ｓ２７０）。この際、印刷ジョブが両面印刷に設定されているため、印刷ジョブが両面印刷に設定されていると判断される（Ｓ２７０：ＹＥＳ）。
【００６４】
次に、プリンタドライバ２６は、関数DrvStartPageに含まれるページ情報が２ページ目を示しているか否かを判断する（Ｓ２７６）。この際、上述したように、関数DrvStartPageに２ページ目を示すページ情報が含まれているため、関数DrvStartPageに含まれるページ情報が２ページ目を示していると判断される（Ｓ２７６：ＹＥＳ）。
【００６５】
次に、プリンタドライバ２６は、ジョブ開始コマンドをプリンタ５０に送信する（Ｓ２８０）。続いて、プリンタドライバ２６は、１ページ目に対応するページ開始コマンドをプリンタ５０に送信する（Ｓ２８２）。また、ページ開始コマンドには、関数DrvEnableSurfaceに含まれる設定情報に応じたコマンドが含められるため、Ｓ２８２で送信されるページ開始コマンドには、両面指定コマンドが含められている。つまり、従来プリンタドライバ１００は、１ページ目を示すページ情報を含む関数DrvStartPageが呼び出された場合に、ジョブ開始コマンド及び、１ページ目に対応するページ開始コマンドをプリンタ５０に送信するが、プリンタドライバは、２ページ目を示すページ情報を含む関数DrvStartPageが呼び出された場合に、ジョブ開始コマンド及び、１ページ目に対応するページ開始コマンドをプリンタ５０に送信する。
【００６６】
また、プリンタドライバ２６は、１ページ目に対応するページ開始コマンドをプリンタ５０に送信すると、１ページ目の画像の印刷用画像データを作成する（Ｓ２８４）。なお、１ページ目の画像の画像データは、データ記憶領域３４に保存されているため、プリンタドライバ２６は、データ記憶領域３４に保存されている１ページ目の画像データに基づいて、印刷用画像データを作成する。この際、印刷ジョブは両面印刷に設定されているため、プリンタドライバ２６は、両面印刷用画像データを作成する。そして、プリンタドライバ２６は、作成した１ページ分の両面印刷用画像データをプリンタ５０に送信する（Ｓ２８６）。つまり、従来プリンタドライバ１００は、１ページ目の関数DrvSendPageが呼び出された場合に、１ページ目の印刷用画像データを作成し、プリンタ５０に送信するが、プリンタドライバは、２ページ目の関数DrvStartPageが呼び出された場合に、１ページ目の印刷用画像データを作成し、プリンタ５０に送信する。
【００６７】
また、プリンタドライバ２６は、１ページ目の印刷用画像データをプリンタ５０に送信すると、１ページ目に対応するページ終了コマンドをプリンタ５０に送信する（Ｓ２８８）。そして、プリンタドライバ２６は、２ページ目に対応するページ開始コマンドをプリンタ５０に送信する（Ｓ２９０）。これにより、DrvStartPageサブルーチンが終了する。
【００６８】
また、ＯＳ２８は、図３に示すように、関数DrvStartPageを呼び出した後に、バンディングが設定されているか否かを判断するが（Ｓ２１２）、上述したように、印刷ジョブが両面印刷に設定されている場合に、バンディングは設定されない。このため、バンディングが設定されていないと判断される（Ｓ２１２：ＮＯ）。そして、ＯＳ２８は、プリンタドライバ２６の関数DrvSendPageを呼び出す（Ｓ２３０）。プリンタドライバ２６は、関数DrvSendPageが呼び出されると、DrvSendPageサブルーチンを実行する（Ｓ２３２）。
【００６９】
DrvSendPageサブルーチンでは、プリンタドライバ２６は、図６に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する（Ｓ３５０）。そして、印刷ジョブが両面印刷に設定されているため、印刷ジョブが両面印刷に設定されていると判断される（Ｓ３５０：ＹＥＳ）。次に、プリンタドライバ２６は、関数DrvStartPageに含まれるページ情報が２ページ目以降を示しているか否かを判断する（Ｓ３５６）。そして、２ページ目を示すページ情報を含む関数DrvStartPageが、既に呼び出されているため、関数DrvStartPageに含まれるページ情報は２ページ目以降を示していると判断される（Ｓ３５６：ＹＥＳ）。
【００７０】
そして、プリンタドライバ２６は、印刷用画像データを作成する（Ｓ３６０）。この際、プリンタドライバ２６は、関数DrvSendPageに含まれる画像データ、つまり、２ページ目の画像の画像データに基づいて印刷用の画像データを作成する。なお、印刷ジョブは両面印刷に設定されているため、プリンタドライバ２６は、両面印刷用画像データを作成する。そして、プリンタドライバ２６は、作成した２ページ目の両面印刷用画像データをプリンタ５０に送信する（Ｓ３６２）。これにより、DrvSendPageサブルーチンが終了する。
【００７１】
また、ＯＳ２８は、図３に示すように、関数DrvSendPageを呼び出した後に、プリンタドライバ２６の関数DrvEndPageを呼び出す（Ｓ２２０）。プリンタドライバ２６は、関数DrvEndPageが呼び出されると、DrvEndPageサブルーチンを実行する（Ｓ２２２）。DrvEndPageサブルーチンでは、プリンタドライバ２６は、図７に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する（Ｓ３１０）。この際、印刷ジョブが両面印刷に設定されているため、印刷ジョブが両面印刷に設定されていると判断される（Ｓ３１０：ＹＥＳ）。
【００７２】
次に、プリンタドライバ２６は、関数DrvStartPageに含まれるページ情報が２ページ目以降を示しているか否かを判断する（Ｓ３１４）。この際、２ページ目を示すページ情報を含む関数DrvStartPageが、既に呼び出されているため、関数DrvStartPageに含まれるページ情報は２ページ以降を示していると判断される（Ｓ３１４：ＹＥＳ）。そして、プリンタドライバ２６は、関数DrvStartPageに含まれるページ情報が示すページつまり、２ページ目に対応するページ終了コマンドをプリンタ５０に送信する（Ｓ３１２）。これにより、DrvEndPageサブルーチンが終了する。
【００７３】
また、ＯＳ２８は、図３に示すように、関数DrvEndPageを呼び出した後に、アプリケーション２４から受け付けたドキュメントの全ページの画像データを、プリンタドライバ２６に出力したか否かを判断する（Ｓ２２４）。この際、例えば、ＯＳ２８がアプリケーション２４から受け付けたドキュメントが３ページ以上の画像を含んでいる場合に、上記説明で、ＯＳ２８は、１ページ目の画像データを含む関数DrvSendPageおよび、２ページ目の画像データを含む関数DrvSendPageしか呼び出していない。このため、Ｓ２２４で、ＯＳ２８は、アプリケーション２４から受け付けたドキュメントの全ページの画像データを、プリンタドライバ２６に出力していないと判断する（Ｓ２２４：ＮＯ）。
【００７４】
そして、ＯＳ２８は、３ページ目を示すページ情報を含む関数DrvStartPageを呼び出す（Ｓ２０８）。この際、プリンタドライバ２６は、DrvStartPageサブルーチンを実行する（Ｓ２１０）。DrvStartPageサブルーチンでは、プリンタドライバ２６は、図５に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する（Ｓ２７０）。この際、印刷ジョブが両面印刷に設定されているため、印刷ジョブが両面印刷に設定されていると判断される（Ｓ２７０：ＹＥＳ）。
【００７５】
次に、プリンタドライバ２６は、関数DrvStartPageに含まれるページ情報が２ページ目を示しているか否かを判断する（Ｓ２７６）。この際、上述したように、関数DrvStartPageに３ページ目を示すページ情報が含まれているため、関数DrvStartPageに含まれるページ情報が２ページ目を示していると判断されない（Ｓ２７６：ＮＯ）。続いて、プリンタドライバ２６は、関数DrvStartPageに含まれるページ情報が３ページ目以降を示しているか否かを判断する（Ｓ２７８）。この際、上述したように、関数DrvStartPageに３ページ目を示すページ情報が含まれているため、関数DrvStartPageに含まれるページ情報が３ページ目以降を示していると判断される（Ｓ２７８：ＹＥＳ）。そして、プリンタドライバ２６は、関数DrvStartPageに含まれるページ情報が示すページ、つまり、３ページ目に対応するページ開始コマンドをプリンタ５０に送信する（Ｓ２９２）。これにより、DrvStartPageサブルーチンが終了する。
【００７６】
なお、DrvStartPageサブルーチンが終了した後に、プリンタドライバ２６及び、ＯＳ２８は、図３に示すように、Ｓ２１２，Ｓ２３０，Ｓ２３２，Ｓ２２０，Ｓ２２２の処理を実行するが、これらの処理は、先に説明した処理と同様の処理であるため、説明を省略する。
【００７７】
そして、ＯＳ２８は、Ｓ２２２の処理、つまり、関数DrvEndPageを呼び出した後に、アプリケーション２４から受け付けたドキュメントの全ページの画像データを、プリンタドライバ２６に出力したか否かを判断する（Ｓ２２４）。この際、例えば、ＯＳ２８がアプリケーション２４から受け付けたドキュメントが４ページ以上の画像を含んでいる場合に、ＯＳ２８は、全ページの画像データを、プリンタドライバ２６に出力していないと判断し（Ｓ２２４：ＮＯ）、ＯＳ２８は、ドキュメントの全ページの画像データをプリンタドライバ２６に出力するまで、Ｓ２０８〜Ｓ２１２，Ｓ２３０，Ｓ２３２，Ｓ２２０，Ｓ２２２の処理を繰り返し実行する。そして、ＯＳ２８が、ドキュメントの全ページの画像データをプリンタドライバ２６に出力すると、Ｓ２２４で、全ページの画像データを、プリンタドライバ２６に出力したと判断する（Ｓ２２４：ＹＥＳ）。
【００７８】
続いて、ＯＳ２８は、プリンタドライバ２６の関数DrvEndDocを呼び出す（Ｓ２２６）。プリンタドライバ２６は、関数DrvEndDocが呼び出されると、DrvEndDocサブルーチンを実行する（Ｓ２２８）。DrvEndDocサブルーチンでは、プリンタドライバ２６は、図８に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する（Ｓ３２０）。この際、印刷ジョブが両面印刷に設定されているため、印刷ジョブが両面印刷に設定されていると判断される（Ｓ３２０：ＹＥＳ）。次に、ＯＳ２８は、ドキュメントを構成する画像の総ページ数が１ページであるか否かを判断する（Ｓ３２４）。
【００７９】
上記説明において、２ページ目以降のページ情報を含む関数DrvStartPageが呼び出されているため、プリンタドライバ２６は、ドキュメントを構成する画像の総ページ数が１ページ以上であると判断する（Ｓ３２４：ＮＯ）。そして、プリンタドライバ２６は、ジョブ終了コマンドをプリンタ５０に送信し（Ｓ３２２）、DrvEndDocサブルーチンが終了する。これにより、印刷ジョブが両面印刷に設定されており、印刷対象のドキュメントを構成する画像の総ページ数が２ページ以上である場合のプリンタドライバ２６での処理が完了する。
【００８０】
次に、印刷ジョブが両面印刷に設定されており、印刷対象のドキュメントを構成する画像の総ページ数が１ページである場合の処理について説明する。ちなみに、印刷ジョブが両面印刷に設定されており、印刷対象のドキュメントを構成する画像の総ページ数が１ページである場合には、１ページ目の関数DrvStartPageが呼び出された際に、プリンタドライバ２６は、DrvStartPageサブルーチンにおいて、ジョブ開始コマンドおよび、１ページ目に対応するページ開始コマンドをプリンタ５０に送信していない。また、１ページ目の関数DrvSendPageが呼び出された際に、プリンタドライバ２６は、DrvSendPageサブルーチンにおいて、１ページ目の画像データをデータ記憶領域３４に記憶させており、１ページ目の印刷用画像データの作成及び、印刷用画像データのプリンタ５０への送信を行っていない。
【００８１】
このような前提において、ＯＳ２８は、図３に示すように、１ページ目の関数DrvSendPageを呼び出した後に、プリンタドライバ２６の関数DrvEndPageを呼び出す（Ｓ２２０）。プリンタドライバ２６は、関数DrvEndPageが呼び出されると、DrvEndPageサブルーチンを実行する（Ｓ２２２）。DrvEndPageサブルーチンでは、プリンタドライバ２６は、図７に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する（Ｓ３１０）。この際、印刷ジョブが両面印刷に設定されているため、印刷ジョブが両面印刷に設定されていると判断される（Ｓ３１０：ＹＥＳ）。
【００８２】
次に、プリンタドライバ２６は、関数DrvStartPageに含まれるページ情報が２ページ目以降を示しているか否かを判断する（Ｓ３１４）。この説明では、１ページ目の関数DrvStartPageが呼び出されているが、２ページ目の関数DrvStartPageは呼び出されていないため、関数DrvStartPageに含まれるページ情報は、１ページ目を示しており、２ページ目以降を示していないと判断される（Ｓ３１４：ＮＯ）。そして、プリンタドライバ２６は、ページ終了コマンドをプリンタ５０に送信することなく、DrvEndPageサブルーチンが終了する。
【００８３】
また、ＯＳ２８は、図３に示すように、関数DrvEndPageを呼び出した後に、アプリケーション２４から受け付けたドキュメントの全ページの画像データを、プリンタドライバ２６に出力したか否かを判断する（Ｓ２２４）。この説明では、ドキュメントを構成する画像の総ページ数が１ページであり、１ページ目の画像データを含む関数DrvSendPageが既に呼び出されているため、ＯＳ２８は、アプリケーション２４から受け付けたドキュメントの全ページの画像データを、プリンタドライバ２６に出力していると判断する（Ｓ２２４：ＹＥＳ）。
【００８４】
そして、ＯＳ２８は、プリンタドライバ２６の関数DrvEndDocを呼び出す（Ｓ２２６）。プリンタドライバ２６は、関数DrvEndDocが呼び出されると、DrvEndDocサブルーチンを実行する（Ｓ２２８）。DrvEndDocサブルーチンでは、プリンタドライバ２６は、図８に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する（Ｓ３２０）。この際、印刷ジョブが両面印刷に設定されているため、印刷ジョブが両面印刷に設定されていると判断される（Ｓ３２０：ＹＥＳ）。次に、ＯＳ２８は、ドキュメントを構成する画像の総ページ数が１ページであるか否かを判断する（Ｓ３２４）。この説明では、ドキュメントを構成する画像の総ページ数が１ページであり、１ページ目の画像データを含む関数DrvSendPageは呼び出されているが、２ページ目の画像データを含む関数DrvSendPageが呼び出されていない状態で、関数DrvEndDocが呼び出されているため、ＯＳ２８は、ドキュメントを構成する画像の総ページ数が１ページであると判断する（Ｓ３２４：ＹＥＳ）。
【００８５】
そして、プリンタドライバ２６は、ジョブ開始コマンドをプリンタ５０に送信する（Ｓ３２６）。続いて、プリンタドライバ２６は、１ページ目に対応するページ開始コマンドをプリンタ５０に送信する（Ｓ３２８）。なお、設定情報が両面印刷に設定されているが、ドキュメントを構成する画像の総ページ数が１ページであるため、プリンタドライバ２６は、片面指定コマンドを含めたページ開始コマンドをプリンタ５０に送信する。次に、プリンタドライバ２６は、１ページ目の画像の印刷用画像データを作成する（Ｓ３３０）。なお、１ページ目の画像の画像データは、DrvSendPageサブルーチンでデータ記憶領域３４に保存されているため、プリンタドライバ２６は、データ記憶領域３４に保存されている１ページ目の画像データに基づいて、印刷用画像データを作成する。この際、印刷ジョブが両面印刷に設定されているが、ドキュメントを構成する画像の総ページ数が１ページであるため、プリンタドライバ２６は、片面印刷用画像データを作成する。そして、プリンタドライバ２６は、作成した１ページ目の片面印刷用画像データをプリンタ５０に送信する（Ｓ３３２）。続いて、プリンタドライバ２６は、１ページ目に対応するページ終了コマンドをプリンタ５０に送信する（Ｓ３３４）。そして、プリンタドライバ２６は、ジョブ終了コマンドをプリンタ５０に送信する（Ｓ３２２）。これにより、DrvEndDocサブルーチンが終了する。
【００８６】
このように、プリンタドライバ２６での処理では、設定情報が両面印刷に設定されている際に、１ページ目の関数DrvStartPage及び、１ページ目の関数DrvSendPageが呼び出された場合に、プリンタドライバ２６は、ジョブ開始コマンド、及び１ページ目に対応するページ開始コマンドのプリンタ５０への送信と、１ページ目の印刷用画像データの作成と、１ページ目の印刷用画像データのプリンタ５０への送信を行っていない。そして、１ページ目の関数DrvSendPageが呼び出された後に、２ページ目の関数DrvSendPageが呼び出されず、関数DrvEndDocが呼び出された場合に、プリンタドライバ２６は、ジョブ開始コマンド、及び１ページ目に対応するページ開始コマンドのプリンタ５０への送信と、１ページ目の印刷用画像データの作成と、１ページ目の印刷用画像データのプリンタ５０への送信とを行う。
【００８７】
この際、プリンタドライバ２６は、片面指定コマンドを含めたページ開始コマンドのプリンタ５０への送信と、片面印刷用画像データの作成と、片面印刷用画像データのプリンタ５０への送信とを行う。つまり、プリンタドライバ２６は、ドキュメントを構成する画像の総ページ数が１ページである場合に、片面指定コマンドを含めたページ開始コマンドのプリンタ５０への送信と、片面印刷用画像データの作成と、片面印刷用画像データのプリンタ５０への送信とを行う。これにより、設定情報が両面印刷に設定されている場合であっても、総ページ数が１ページの画像のドキュメントに対して、片面印刷設定での印刷処理を行うことができる。また、総ページ数が１ページの画像が片面印刷で実行されるため、１ページ目の画像が印刷用紙の一方の面に印刷された後に、スイッチバックは実行されず、画像が印刷された面が上を向いた状態で、印刷用紙がプリンタ５０から排出される。これにより、従来プリンタドライバ１００が用いられた場合のように、印刷面が下を向いた状態で印刷用紙が排出されることを防止できる。
【００８８】
一方、１ページ目の関数DrvSendPageが呼び出された後に、２ページ目の関数DrvStartPageが呼び出された場合に、プリンタドライバ２６は、ジョブ開始コマンド、及び１ページ目に対応するページ開始コマンドのプリンタ５０への送信と、１ページ目の印刷用画像データの作成と、１ページ目の印刷用画像データのプリンタ５０への送信とを行う。この際、プリンタドライバ２６は、両面指定コマンドを含めたページ開始コマンドのプリンタ５０への送信と、両面印刷用画像データの作成と、両面印刷用画像データのプリンタ５０への送信とを行う。つまり、プリンタドライバ２６は、２ページ目の印刷ジョブがあると認識した後に、両面指定コマンドを含めたページ開始コマンドのプリンタ５０への送信と、両面印刷用画像データの作成と、両面印刷用画像データのプリンタ５０への送信とを行う。これにより、総ページ数が２ページ以上の画像のドキュメントに対して、設定条件に従って、両面印刷設定での印刷処理を行うことができる。
【００８９】
また、設定情報が両面印刷に設定されており、ドキュメントを構成する画像の総ページ数が２ページ以上ある場合において、２ページ目以降の関数DrvStartPageが呼び出されると、プリンタドライバ２６は、当該ページに対応するページ開始コマンドをプリンタ５０に送信し、２ページ目以降の関数DrvSendPageが呼び出されると、プリンタドライバ２６は、当該ページに対応する印刷用画像データを作成し、印刷用画像データをプリンタ５０に送信する。これにより、プリンタドライバ２６は、２ページ目以降の両面印刷処理時において、呼び出された関数に応じた処理をレスポンス良く実行することができる。
【００９０】
また、設定情報が片面印刷に設定されている場合において、ページ毎に関数DrvStartPageが呼び出されると、プリンタドライバ２６は、当該ページに対応するページ開始コマンドをプリンタ５０に送信し、ページ毎に関数DrvSendPageが呼び出されると、プリンタドライバ２６は、当該ページに対応する印刷用画像データを作成し、印刷用画像データをプリンタ５０に送信する。これにより、片面印刷処理時において、プリンタドライバ２６は、呼び出された関数に応じた処理をレスポンス良く実行することができる。
【００９１】
また、設定情報が片面印刷に設定されている場合には、設定条件，プリンタ５０のメモリなどの条件が満たされた場合に、バンディングが実行される。バンディングでは、プリンタドライバ２６が、１ページ分の画像データの受け付けを待つことなく、１ページのうちの１バンド分の画像データを受け付けることで、その１バンド分の画像データに基づいて印刷用画像データを作成し、その１バンド分の印刷用画像データをプリンタ５０に送信する。これにより、プリンタ５０での印刷処理の開始が速くなり、ＦＰＯＴを短くすることが可能となる。
【００９２】
一方、設定情報が両面印刷に設定されている場合には、バンディングは実行されない。これは、プリンタドライバ２６での両面印刷処理時には、バンディングを実行することで、ＦＰＯＴが長くなる虞があるためである。詳しくは、バンディングが実行される場合に、関数DrvNextBandが複数回、呼び出され、バンディングが実行されない場合に、関数DrvSendPageが１回、呼び出される。また、プリンタドライバ２６での両面印刷処理時において、１ページ目の関数DrvSendPageが呼び出されても、１ページ目の印刷用画像データは、プリンタ５０に送信されず、２ページ目の関数DrvSendPageが呼び出された場合、若しくは、２ページ目の関数DrvSendPageが呼び出されず、関数DrvEndDocが呼び出された場合に、１ページ目の印刷用画像データが、プリンタ５０に送信される。このため、バンディングが実行されない場合に、１ページ目の関数DrvSendPageが１回呼び出された後に、２ページ目の関数DrvSendPageの呼び出し、若しくは、関数DrvEndDocの呼び出しに伴って、１ページ目の印刷用画像データが、プリンタ５０に送信される。一方、バンディングが実行される場合に、１ページ目の関数DrvNextBandが複数回呼び出された後に、２ページ目の関数DrvSendPageの呼び出し、若しくは、関数DrvEndDocの呼び出しに伴って、１ページ目の印刷用画像データが、プリンタ５０に送信される。つまり、１ページ目の印刷用画像データが、プリンタ５０に送信されるためには、バンディングが実行される場合に、関数DrvNextBandが複数回呼び出される必要があり、バンディングが実行されない場合に、関数DrvSendPageの呼び出しは１回でよい。このため、プリンタドライバ２６での両面印刷処理時には、バンディングを実行することで、ＦＰＯＴが長くなる虞がある。そこで、プリンタドライバ２６では、設定情報が両面印刷に設定されている場合に、バンディングは実行されず、ＦＰＯＴの短縮が図られている。
【００９３】
また、上述したように、プリンタドライバ２６での処理では、印刷設定が両面印刷に設定されているが、ＯＳ２８から１ページ分の画像データしかプリンタドライバ２６に出力されなかったら、その１ページ分の画像に対して、片面印刷処理が実行される。ただし、ドキュメントを構成する画像の総ページ数が奇数である場合に、最終ページの画像は、印刷用紙の一方の面に印刷され、その印刷用紙の他方の面に、画像は印刷されないが、この最終ページの画像に対して、両面印刷処理が実行される。つまり、最終ページの画像に対して、片面印刷処理は実行されない。これは、最終ページの画像に対して、片面印刷処理が実行されると、最終ページの１つ前のページの画像までは両面印刷用の画質なのに、最終ページの画像だけ片面印刷用の画質になり、違和感が発生するためである。このように、ドキュメントを構成する画像の総ページ数が奇数である場合において、全てのページの画像に対して両面印刷処理を実行することで、上記違和感の発生を防止できる。
【００９４】
さらに言えば、例えば３ページ目が最終ページの場合に、本実施形態では、３ページ目の画像が両面印刷設定で印刷されるため、３ページ目の画像が印刷された後に、スイッチバックされ、３ページ目の画像の印刷面が下を向いた状態で、印刷用紙が排出される。また、３ページ目の画像が印刷された印刷用紙は、１ページ目の画像と２ページ目の画像とが両面に印刷された印刷用紙の上に排出される。なお、１ページ目の画像と２ページ目の画像とが両面に印刷された印刷用紙は、１ページ目の印刷画像を下に向け、２ページ目の印刷画像を上に向けた状態で排出される。つまり、１枚目に排出された印刷用紙の下面に、１ページ目の画像が印刷され、その印刷用紙の上面に、２ページ目の画像が印刷され、２枚目に排出された印刷用紙の下面に、３ページ目の画像が印刷されている。そして、２枚目に排出された上面は白紙となる。これにより、３ページ分の画像が冊子のように連続し、自然である。
【００９５】
一方、３ページ目の画像が片面印刷設定で印刷されると、３ページ目の画像が印刷された後に、スイッチバックされず、３ページ目の画像の印刷面が上を向いた状態で、印刷用紙が排出される。このため、１枚目に排出された印刷用紙の下面に、１ページ目の画像が印刷され、その印刷用紙の上面に、２ページ目の画像が印刷され、２枚目に排出された印刷用紙の上面に、３ページ目の画像が印刷されている。そして、２枚目に排出された印刷用紙の下面は白紙となる。これにより、２枚の印刷用紙を冊子のように見た場合、２ページ目と３ページ目との間に白紙が存在するように感じるため、不自然である。このことからも、最終ページの画像に対して、両面印刷処理を実行することが好ましい。
【００９６】
なお、Ｓ２８２、Ｓ３２８を実行するＣＰＵ１２は、送信手段の一例である。Ｓ２８４，Ｓ３００，Ｓ３３０，Ｓ３５２，Ｓ３６０を実行するＣＰＵ１２は、作成手段の一例である。Ｓ３５８を実行するＣＰＵ１２は、記憶制御手段の一例である。
【００９７】
＜実施例の効果＞
上記した実施形態によれば、以下の効果を奏する。
【００９８】
プリンタドライバ２６は、設定情報が両面印刷に設定されている場合に、１ページ目の画像データを含む関数DrvSendPageが呼び出された後に、２ページ目の関数DrvStartPageが呼び出されることを条件として、１ページ目の画像の印刷用画像データを作成する。これにより、ドキュメントを構成する画像の総ページ数が２ページ以上であることが解ってから、印刷用画像データを作成することができる。
【００９９】
プリンタドライバ２６は、設定情報が両面印刷に設定されている場合に、１ページ目の画像データを含む関数DrvSendPageが呼び出されると、その１ページ目の画像データをデータ記憶領域３４に保存する。そして、２ページ目の関数DrvStartPageが呼び出されることを条件として、１ページ目の画像の印刷用画像データを作成する。これにより、１ページ目の画像データを消去することなく、１ページ目の画像データに基づく画像を印刷できる。
【０１００】
プリンタドライバ２６は、設定情報が両面印刷に設定されている場合に、２ページ目の画像データを含む関数DrvSendPageが呼び出された後に、３ページ目の関数DrvStartPageが呼び出される前に、２ページ目の画像の印刷用画像データを作成する。これにより、２ページ目の印刷用画像データを早期に作成し、２ページ目の画像の印刷処理を早期に実行できる。
【０１０１】
プリンタドライバ２６は、設定情報が両面印刷に設定されており、両面指定コマンドを含むページ開始コマンドをプリンタ５０に送信している場合に、１ページ目の画像データを含む関数DrvSendPageが呼び出された後に、２ページ目の関数DrvStartPageが呼び出されることを条件として、１ページ目の画像の両面印刷用画像データを作成する。一方、プリンタドライバ２６は、設定情報が両面印刷に設定されているが、片面指定コマンドを含むページ開始コマンドをプリンタ５０に送信している場合に、１ページ目の画像データを含む関数DrvSendPageが呼び出された後に、２ページ目の関数DrvStartPageが呼び出されなくても、１ページ目の画像の片面印刷用画像データを作成する。これにより、プリンタドライバ２６は、指定コマンドに応じた印刷用画像データを作成できる。
【０１０２】
プリンタドライバ２６は、設定情報が両面印刷に設定されている場合に、２ページ目以降の画像の画像データを含む関数DrvSendPageが呼び出された際に、その関数DrvSendPageに含まれる画像データが、奇数ページの画像データか、偶数ページの画像データかに係らず、その画像データに基づいて両面印刷用画像データを作成する。これにより、最終ページの１つ前のページの画像までは両面印刷用の画質なのに、最終ページの画像だけ片面印刷用の画質になることを防止できる。
【０１０３】
プリンタドライバ２６は、設定情報が片面印刷に設定されている場合に、１ページ目の関数DrvStartPageが呼び出された際に、１ページ目に対応するページ開始コマンドをプリンタ５０に送信し、１ページ目の関数DrvSendPageが呼び出された際に、２ページ目の関数DrvStartPageが呼び出されなくても、１ページ目の印刷用画像データを作成する。これにより、片面印刷処理を早期に実行できる。
【０１０４】
プリンタドライバ２６は、両面指定コマンド、若しくは、片面指定コマンドをページ開始コマンドに含めて、プリンタ５０に送信する。これにより、設定情報が両面印刷と片面印刷との何れに設定されているかを、プリンタ５０に適切に通知できる。
【０１０５】
プリンタドライバ２６は、設定情報が片面印刷に設定されている場合に、バンディング情報をＯＳ２８に出力するが、設定情報が両面印刷に設定されている場合に、バンディング情報をＯＳ２８に出力しない。つまり、設定情報が片面印刷に設定されている場合にのみ、バンディングが実行され、設定情報が両面印刷に設定されている場合には、バンディングが実行されない。これにより、両面印刷処理時におけるＦＰＯＴの短縮を図ることができる。
【０１０６】
なお、本発明は、上記実施形態に限定されるものではなく、当業者の知識に基づいて種々の変更、改良を施した種々の態様で実施することが可能である。具体的には、例えば、上記実施形態では、プリンタドライバ２６は、両面指定コマンド、若しくは、片面指定コマンドをページ開始コマンドに含めて、プリンタ５０に送信しているが、両面指定コマンド、若しくは、片面指定コマンドをジョブ開始コマンドに含めて、プリンタ５０に送信してもよい。
【０１０７】
また、上記実施形態では、プリンタドライバ２６は、１ページ目の関数DrvStartPageが呼び出された以降に、ジョブ開始コマンドをプリンタ５０に送信しているが、関数DrvStartDocが呼び出された際に、ジョブ開始コマンドをプリンタ５０に送信してもよい。つまり、DrvStartDocサブルーチン実行時に、プリンタドライバ２６は、ジョブ開始コマンドをプリンタ５０に送信してもよい。ただし、この場合には、ジョブ開始コマンドに、両面指定コマンド、若しくは、片面指定コマンドを含めてはいけない。
【０１０８】
また、上記実施形態では、ＣＰＵ１２によって図３乃至図８に示す処理が実行される例を説明したが、これら処理は、ＣＰＵ１２に限らず、ＡＳＩＣや他の論理集積回路により実行されてもよいし、これら処理が、ＣＰＵ等やＡＳＩＣ、他の論理集積回路が協働することにより実行されてもよい。
【符号の説明】
【０１０９】
１０：ＰＣ、１２：ＣＰＵ、２０：ネットワークＩ／Ｆ、２６：プリンタドライバ、２８：ＯＳ、５０：プリンタ
【図１】
2019066912.tif 000003
【図２】
2019066912.tif 000004
【図３】
2019066912.tif 000005
【図４】
2019066912.tif 000006
【図５】
2019066912.tif 000007
【図６】
2019066912.tif 000008
【図７】
2019066912.tif 000009
【図８】
2019066912.tif 000010