(57)【要約】【課題】  両面印刷を行う場合に、印刷ジョブ毎に好適な印刷制御を行うための技術を提供すること。【解決手段】  自動両面印刷が設定された場合に、印刷ジョブの解析結果に基づいて自動両面印刷を行うのか片面印刷を行うのかを決定する印刷モード、常に自動両面印刷を行う印刷モード、印刷ページ数に基づいて自動両面印刷を行うのか片面印刷を行うのかを決定する印刷モード、のうち何れかの印刷モードに従って制御コマンドを生成して出力する（Ｓ１７０８，Ｓ１７１０，Ｓ１７１１）。【選択図】  図１７
2006293990.tif 000002
【特許請求の範囲】
【請求項１】
両面印刷指示を受付ける受付け手段と、
前記受付け手段により受付けた両面印刷指示に応じて両面印刷する際、１ページのジョブを、条件に応じて、片面印刷するか、両面印刷するか決定する決定手段と
を有することを特徴とする印刷制御装置。
【請求項２】
前記決定手段は、設定されているモードに応じて、片面印刷するか、両面印刷するか決定する決定することを特徴とする請求項１記載の印刷制御装置。
【請求項３】
前記決定手段は、以前のジョブからの経過時間に応じて、片面印刷するか、両面印刷するか決定することを特徴とする請求項１記載の印刷制御装置。
【請求項４】
前記決定手段は、以前のジョブと同じアプリケーションのジョブであるか否かに応じて、片面印刷するか、両面印刷するか決定することを特徴とする請求項１記載の印刷制御装置。
【請求項５】
前記決定手段は、以前のジョブと同じユーザのジョブであるか否かに応じて、片面印刷するか、両面印刷するか決定することを特徴とする請求項１記載の印刷制御装置。
【請求項６】
前記決定手段は、以前のジョブと同じ設定のジョブであるか否かに応じて、片面印刷するか、両面印刷するか決定することを特徴とする請求項１記載の印刷制御装置。
【請求項７】
現在処理中のジョブと以前のジョブとを比較する比較手段と、
前記比較手段による比較結果に応じて、現在処理中のジョブを常に両面印刷を行う両面印刷にするか、条件により片面印刷を行う両面印刷にするか決定する決定手段と
を有することを特徴とする印刷制御装置。
【請求項８】
前記決定手段は、現在処理中のジョブのユーザ名が以前のジョブのユーザ名と同じであるか否かに応じて、現在処理中のジョブを常に両面印刷を行う両面印刷にするか、条件により片面印刷を行う両面印刷にするか決定することを特徴とする請求項７記載の印刷制御装置。
【請求項９】
前記決定手段は、現在処理中のジョブのアプリケーション名が以前のジョブのアプリケーション名と同じであるか否かに応じて、現在処理中のジョブを常に両面印刷を行う両面印刷にするか、条件により片面印刷を行う両面印刷にするか決定することを特徴とする請求項７記載の印刷制御装置。
【請求項１０】
前記決定手段は、以前のジョブからの経過時間に応じて、現在処理中のジョブを常に両面印刷を行う両面印刷にするか、条件により片面印刷を行う両面印刷にするか決定することを特徴とする請求項７記載の印刷制御装置。
【請求項１１】
前記決定手段は、現在処理中のジョブの設定が以前のジョブの設定と同じであるか否かに応じて、現在処理中のジョブを常に両面印刷を行う両面印刷にするか、条件により片面印刷を行う両面印刷にするか決定することを特徴とする請求項７記載の印刷制御装置。
【請求項１２】
両面印刷指示を判別する判別ステップと、
前記判別ステップにより判別した両面印刷指示に応じて両面印刷する際、１ページのジョブを、条件に応じて、片面印刷するか、両面印刷するか決定する決定ステップと
を有することを特徴とする印刷制御方法。
【請求項１３】
前記決定ステップは、設定されているモードに応じて、片面印刷するか、両面印刷するか決定する決定することを特徴とする請求項１２記載の印刷制御方法。
【請求項１４】
前記決定ステップは、以前のジョブからの経過時間に応じて、片面印刷するか、両面印刷するか決定することを特徴とする請求項１２記載の印刷制御方法。
【請求項１５】
前記決定ステップは、以前のジョブと同じアプリケーションのジョブであるか否かに応じて、片面印刷するか、両面印刷するか決定することを特徴とする請求項１２記載の印刷制御方法。
【請求項１６】
前記決定ステップは、以前のジョブと同じユーザのジョブであるか否かに応じて、片面印刷するか、両面印刷するか決定することを特徴とする請求項１２記載の印刷制御方法。
【請求項１７】
前記決定ステップは、以前のジョブと同じ設定のジョブであるか否かに応じて、片面印刷するか、両面印刷するか決定することを特徴とする請求項１２記載の印刷制御方法。
【請求項１８】
現在処理中のジョブと以前のジョブとを比較する比較ステップと、
前記比較ステップによる比較結果に応じて、現在処理中のジョブを常に両面印刷を行う両面印刷にするか、条件により片面印刷を行う両面印刷にするか決定する決定ステップと
を有することを特徴とする印刷制御方法。
【請求項１９】
前記決定ステップは、現在処理中のジョブのユーザ名が以前のジョブのユーザ名と同じであるか否かに応じて、現在処理中のジョブを常に両面印刷を行う両面印刷にするか、条件により片面印刷を行う両面印刷にするか決定することを特徴とする請求項１８記載の印刷制御方法。
【請求項２０】
前記決定ステップは、現在処理中のジョブのアプリケーション名が以前のジョブのアプリケーション名と同じであるか否かに応じて、現在処理中のジョブを常に両面印刷を行う両面印刷にするか、条件により片面印刷を行う両面印刷にするか決定することを特徴とする請求項１８記載の印刷制御方法。
【請求項２１】
前記決定ステップは、以前のジョブからの経過時間に応じて、現在処理中のジョブを常に両面印刷を行う両面印刷にするか、条件により片面印刷を行う両面印刷にするか決定することを特徴とする請求項１８記載の印刷制御方法。
【請求項２２】
前記決定ステップは、現在処理中のジョブの設定が以前のジョブの設定と同じであるか否かに応じて、現在処理中のジョブを常に両面印刷を行う両面印刷にするか、条件により片面印刷を行う両面印刷にするか決定することを特徴とする請求項１８記載の印刷制御方法。
【請求項２３】
両面印刷指示を判別する判別ステップと、
前記判別ステップにより判別した両面印刷指示に応じて両面印刷する際、１ページのジョブを、条件に応じて、片面印刷するか、両面印刷するか決定する決定ステップと
をコンピュータに実行させるプログラム。
【請求項２４】
前記決定ステップは、設定されているモードに応じて、片面印刷するか、両面印刷するか決定する決定することを特徴とする請求項２３記載のプログラム。
【請求項２５】
前記決定ステップは、以前のジョブからの経過時間に応じて、片面印刷するか、両面印刷するか決定することを特徴とする請求項２３記載のプログラム。
【請求項２６】
前記決定ステップは、以前のジョブと同じアプリケーションのジョブであるか否かに応じて、片面印刷するか、両面印刷するか決定することを特徴とする請求項２３記載のプログラム。
【請求項２７】
前記決定ステップは、以前のジョブと同じユーザのジョブであるか否かに応じて、片面印刷するか、両面印刷するか決定することを特徴とする請求項２３記載のプログラム。
【請求項２８】
前記決定ステップは、以前のジョブと同じ設定のジョブであるか否かに応じて、片面印刷するか、両面印刷するか決定することを特徴とする請求項２３記載のプログラム。
【請求項２９】
現在処理中のジョブと以前のジョブとを比較する比較ステップと、
前記比較ステップによる比較結果に応じて、現在処理中のジョブを常に両面印刷を行う両面印刷にするか、条件により片面印刷を行う両面印刷にするか決定する決定ステップとをコンピュータに実行させることを特徴とするプログラム。
【請求項３０】
前記決定ステップは、現在処理中のジョブのユーザ名が以前のジョブのユーザ名と同じであるか否かに応じて、現在処理中のジョブを常に両面印刷を行う両面印刷にするか、条件により片面印刷を行う両面印刷にするか決定することを特徴とする請求項２９記載のプログラム。
【請求項３１】
前記決定ステップは、現在処理中のジョブのアプリケーション名が以前のジョブのアプリケーション名と同じであるか否かに応じて、現在処理中のジョブを常に両面印刷を行う両面印刷にするか、条件により片面印刷を行う両面印刷にするか決定することを特徴とする請求項２９記載のプログラム。
【請求項３２】
前記決定ステップは、以前のジョブからの経過時間に応じて、現在処理中のジョブを常に両面印刷を行う両面印刷にするか、条件により片面印刷を行う両面印刷にするか決定することを特徴とする請求項２９記載のプログラム。
【請求項３３】
前記決定ステップは、現在処理中のジョブの設定が以前のジョブの設定と同じであるか否かに応じて、現在処理中のジョブを常に両面印刷を行う両面印刷にするか、条件により片面印刷を行う両面印刷にするか決定することを特徴とする請求項２９記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷技術に関するものである。
【背景技術】
【０００２】
一般に自動両面印刷を行う場合、印刷結果において次のような点が重要となる。
【０００３】
（１）  排紙された用紙の表面、裏面のどちらが上に向くか？
（２）  ユーザの期待通りの印刷結果が得られるか？
従来の自動両面印刷では、例えば誤ったユーザ操作により１ページのドキュメントを自動両面印刷設定で印刷してしまった場合、プリンタドライバに依存して、両面印刷の印刷モードで印刷するか、あるいは、通常の片面印刷の印刷モードで印刷するかのどちらか固定の印刷モードで印刷が行われていた。具体的には次のような例が挙げられる。
【０００４】
［プリンタドライバＡの例］
１ページのドキュメントを自動両面印刷設定で印刷した場合、１ページの印刷が完了した時点では用紙が排紙されず、その後自動両面ユニットを通してその用紙が反転されて排紙される。従って、通常の片面印刷と比べると、排紙された用紙の表面、裏面が反対になって、排紙トレイに排紙される。また、この１ページ印刷の時に施される印刷用の画像処理は、両面印刷用の画像処理（裏写りしないように少し薄め（低品位））となる。
【０００５】
＜長所＞
自動両面印刷設定で複数の印刷ジョブが印刷された場合、もしこれらの印刷ジョブ中に１ページの印刷ジョブが含まれていても、全ての印刷物（排紙された用紙）の向き（表面、裏面のどちらが上に向くか）が統一されて排紙トレイに排紙される。
【０００６】
＜短所＞
１ページ印刷の印刷品位が両面印刷の品位（低品位）になってしまう。
【０００７】
［プリンタドライバＢの例］
１ページのドキュメントを自動両面印刷設定で印刷した場合、自動両面ユニットを通さずに、通常の片面印刷と同じパスで排紙するように制御する。また、この１ページ印刷の時に施される画像処理は、通常の片面印刷用の画像処理（高品位）となる。
【０００８】
＜長所＞
１ページ印刷の印刷品位が片面印刷の品位（高品位）になる。
【０００９】
＜短所＞
自動両面印刷設定で複数の印刷ジョブが印刷された場合、もしこれらの印刷ジョブ中に１ページの印刷ジョブが含まれていた場合、その１ページの印刷ジョブだけ印刷物の向き（表面、裏面のどちらが上に向くか）がそれ以外の印刷ジョブと比べて表面、裏面が反対になってしまい、印刷物の向きが統一されずに排紙トレイに排紙される。
【００１０】
また、アプリケーションによっては、１ページのドキュメントを自動両面印刷設定で印刷した場合、２ページ目として白紙（印刷画像データ無し）ページをプリンタドライバに出力してくるケースがある。
【００１１】
従来例としては、例えば特許文献１に示すような技術が存在する。
【特許文献１】特登録０３３８０５９８
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、上述の従来例の前者において、例えばプリンタドライバＡの例とプリンタドライバＢの例を比較した場合、それぞれ相反する一長一短があるので、全ての自動両面印刷のケースで常に最適な印刷結果が得られるわけではなく、上記短所で示すようなユーザの期待を裏切るような印刷結果となってしまうケースが存在するという問題があった。
【００１３】
また、上述の従来例の後者において、本来１ページであるはずの印刷ジョブが２ページ目が白紙（印刷画像データ無し）の２ページの印刷として処理されてしまうので、プリンタドライバＡの例の短所で示すようなケースに陥り、ユーザの期待を裏切るような印刷結果となってしまうという問題もあった。
【００１４】
本発明は以上の問題に鑑みてなされたものであり、両面印刷を行う場合に、印刷ジョブ毎に好適な印刷制御を行うための技術を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の目的を達成するために、例えば本発明の印刷制御装置は以下の構成を備える。
【００１６】
即ち、両面印刷指示を受付ける受付け手段と、
前記受付け手段により受付けた両面印刷指示に応じて両面印刷する際、１ページのジョブを、条件に応じて、片面印刷するか、両面印刷するか決定する決定手段と
を有することを特徴とする。
【００１７】
本発明の目的を達成するために、例えば本発明の印刷制御装置は以下の構成を備える。
【００１８】
即ち、現在処理中のジョブと以前のジョブとを比較する比較手段と、
前記比較手段による比較結果に応じて、現在処理中のジョブを常に両面印刷を行う両面印刷にするか、条件により片面印刷を行う両面印刷にするか決定する決定手段と
を有することを特徴とする。
【００１９】
本発明の目的を達成するために、例えば本発明の印刷制御方法は以下の構成を備える。
【００２０】
即ち、両面印刷指示を判別する判別ステップと、
前記判別ステップにより判別した両面印刷指示に応じて両面印刷する際、１ページのジョブを、条件に応じて、片面印刷するか、両面印刷するか決定する決定ステップと
を有することを特徴とする。
【００２１】
本発明の目的を達成するために、例えば本発明の印刷制御方法は以下の構成を備える。
【００２２】
即ち、現在処理中のジョブと以前のジョブとを比較する比較ステップと、
前記比較ステップによる比較結果に応じて、現在処理中のジョブを常に両面印刷を行う両面印刷にするか、条件により片面印刷を行う両面印刷にするか決定する決定ステップと
を有することを特徴とする。
【００２３】
本発明の目的を達成するために、例えば本発明のプログラムは以下の構成を備える。
【００２４】
即ち、両面印刷指示を判別する判別ステップと、
前記判別ステップにより判別した両面印刷指示に応じて両面印刷する際、１ページのジョブを、条件に応じて、片面印刷するか、両面印刷するか決定する決定ステップと
をコンピュータに実行させる。
【００２５】
本発明の目的を達成するために、例えば本発明のプログラムは以下の構成を備える。
【００２６】
即ち、現在処理中のジョブと以前のジョブとを比較する比較ステップと、
前記比較ステップによる比較結果に応じて、現在処理中のジョブを常に両面印刷を行う両面印刷にするか、条件により片面印刷を行う両面印刷にするか決定する決定ステップとをコンピュータに実行させることを特徴とする。
【発明の効果】
【００２７】
本発明の構成により、両面印刷を行う場合に、印刷ジョブ毎に好適な印刷制御を行うことができる。
【発明を実施するための最良の形態】
【００２８】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００２９】
＜システムの構成＞
図１は、本実施形態に係る印刷システムの機能構成を示すブロック図である。本実施形態に係るシステムは同図に示す如く、ＰＣ（パーソナルコンピュータ）１と印刷装置（Ｐｒｉｎｔｅｒ）３とで構成されている。
【００３０】
ＰＣ１は図２で後述するようなハードウェアで構成され、OS（Operating System）として米国マイクロソフト社（登録商標）のWindows（登録商標） XPがインストールされている。
【００３１】
印刷装置３はＡＢＣ社製のｘｙｚというモデル名のカラーインクジェットプリンタであるとする。印刷装置３は図３で後述するようなハードウェアで構成され、ＰＣ１とＵＳＢ（Universal Serial Bus）ケーブル９を介して接続されており、互いに双方向通信が可能である。
【００３２】
５０はＰＣ１にインストールされているプリンタドライバであり、ＰＣ１のＯＳ上から印刷装置３を制御する。プリンタドライバ５０の詳細に関しては図４で後述する。１０は印刷装置３に装着されている着脱可能な自動両面ユニットであり、印刷装置３にこれを装着することにより、ＰＣ１のＯＳ上にインストールされているアプリケーションから印刷装置３にて自動的に両面印刷を行うことができる。尚、このような自動的に両面印刷を行う機能を自動両面印刷と呼ぶ。本実施形態では、自動両面ユニット１０が印刷装置３に装着されているものとする。１１はオートシートフィーダー（ＡＳＦ）であり、ここに記録紙（用紙）をセットする。１２は排紙トレイであり、印刷された記録紙（用紙）がここに排紙される。
【００３３】
＜ＰＣ１の構成＞
図２は、ＰＣ１のハードウェア構成を示すブロック図である。なお、同様の構成を有するのであれば、ＰＣ１の代わりにＷＳ（ワークステーション）等のコンピュータを用いても良い。
【００３４】
１２０１はＲＡＭで、ＨＤＤ（ハードディスクドライブ）１２０２からロードされたプログラムやデータを一時的に記憶するためのエリア、ＣＰＵ１２０４が各種の処理を実行するために用いるワークエリア等、各種のエリアを提供することができる。
【００３５】
１２０２はＨＤＤで、ここにＯＳや印刷装置３のプリンタドライバ５０、各種のアプリケーションプログラム、このアプリケーションプログラムでもって作成した各種のデータなどが保存されており、これらはＣＰＵ１２０４による制御に従ってＲＡＭ１２０１にロードされ、ＣＰＵ１２０４による処理対象となる。
【００３６】
１２０３は操作部で、キーボードやマウスなどにより構成されており、操作者が操作することで、各種の指示をＣＰＵ１２０４に対して入力することができる。
【００３７】
１２０４はＣＰＵで、ＰＣ１全体の制御を行うと共に、ＰＣ１が行う後述の各処理を実行する。
【００３８】
１２０５は表示装置で、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ１２０４による処理結果を画像や文字などでもって表示する。
【００３９】
１２０７はＮＢ（ネットワークボード）で、ＵＳＢケーブル９を介して印刷装置３とのデータ通信を制御する。
【００４０】
なお、上述の各部は共通のバスに接続されており、互いにデータのやり取りが可能となっている。また、ＰＣ１の構成はこれに限定するものではなく、このほかにも、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの記録媒体に記録されたプログラムやデータを読み出すドライブ装置を備えるようにしても良い。
【００４１】
＜印刷装置３の構成＞
図３は、印刷装置３のハードウェア構成を示すブロック図である。１５はマイクロプロセッサ等から構成されるＣＰＵであり、ＲＯＭ１６に格納されているプログラムやデータを用いて印刷装置３を構成する各部を制御すると共に、印刷装置３が行う後述の各処理を実行する。
【００４２】
ＲＯＭ１６には図４を用いて後述するプリンタドライバ５０の制御に従って印刷装置３が記録（印刷）処理を行う為にＣＰＵ１５に実行させるプログラムが格納されている。ＲＡＭ１７は主にＰＣ１から送信されたデータを一時的に記憶する。通信部１８にはＵＳＢケーブル９用の接続ポートが含まれており、ＵＳＢケーブル９を介した通信の制御を行う。記録部１９は、インクジェット方式の記録ヘッド、各カラーインク、キャリッジ、記録紙搬送機構等から構成される記録ユニットと、ＰＣ１から送信された印字データをもとに記録ヘッドにて印字用パルスを発生させる為のＡＳＩＣ等から構成される電気回路とから構成される。
【００４３】
アプリケーション上での印刷操作によって、アプリケーションで開かれているファイルの表示内容（画像データ）が、ＥＭＦ形式のスプールファイルとしてＰＣ１のＨＤＤ１２０２に一時的に格納され、プリンタドライバ５０を介して印刷装置３制御用コマンドを含む印字データ（図１１で後述する印字パルス制御コマンド）に変換された後、ＵＳＢケーブル９を介して印刷装置３に送られる。印刷装置３にて受信された印字データ（印字パルス制御コマンド）は、記録部１９によって印字用パルスに変換されて、記録紙上に印刷される。
【００４４】
＜プリンタドライバ５０の構成＞
図４は、ＨＤＤ１２０２にインストールされているプリンタドライバ５０の機能構成を示すブロック図である。同図に示す如く、プリンタドライバ５０はＰＣ１にインストールされているドライバであり、３３〜３６で示す複数のモジュールを備えている。
【００４５】
アプリケーション３０は印刷指令やプリンタの状態表示が可能なアプリケーションソフトウェアであり、例えば、Windows（登録商標） XP OSに標準で同梱されているテキストエディタであるＮｏｔｅｐａｄ（Ｎｏｔｅｐａｄ．ｅｘｅ）等に相当する。尚、本実施形態では、アプリケーション３０の例として図５で後述するようなＮｏｔｅｐａｄ（Ｎｏｔｅｐａｄ．ｅｘｅ）を用いる。３１はＧＤＩ（Graphics Device Interface）であり、Windows（登録商標） XP OSの一部である。３２はプリンタキューで、Windows（登録商標） XP OSのSpoolerの一部であり、印刷ジョブをキューイングする。
【００４６】
次にプリンタドライバ５０の構成を説明する。３３はプリントプロセッサであり、印刷レイアウトの変更や印刷画像の特殊処理を行う。３４はグラフィックスドライバで、プリンタドライバ５０の画像処理のコアとして動作し、ＧＤＩ３１から送られて来る描画命令に基づき印刷用の画像処理を行い、印刷制御コマンドを作成する。３５はＵＩ（ユーザインターフェース）モジュールで、プリンタドライバ５０のＵＩの提供及び制御を行う。３６はランゲージモニタ（以降、ＬＭと略す場合がある）で、データの通信Ｉ／Ｆとしてデータの送受信を制御する。３７はポートモニタであり、ＬＭ３６から送られてくるデータを適切なポートに対して送信したり、印刷装置３から送られてくるデータを、クラスドライバ３８を介して受信したりする。クラスドライバ３８は、最もポートに近いローレベルのモジュールであり、本実施形態ではＵＳＢケーブル９のプリンタクラスのドライバに相当し、ポート（本実施形態ではＵＳＢポート）を制御する。
【００４７】
＜印刷に係るダイアログ＞
図５はＷｉｎｄｏｗｓ（登録商標） ＸＰ ＯＳに標準のアプリケーションとして組み込まれているテキストエディタＮｏｔｅｐａｄ（Ｎｏｔｅｐａｄ．ｅｘｅ）から印刷を行う際の表示例を示す図である。同図の表示は表示装置１２０５の表示画面上になされる。
【００４８】
以降の説明で、ダイアログは全て、表示装置１２０５の表示画面上に表示されるものとして説明する。また、以下のダイアログに対する操作はキーボードやマウスを用いて行い、その操作を反映した処理は全てＣＰＵ１２０４が行う。
【００４９】
操作者はキーボードやマウスを用いて、同図のＦｉｌｅメニューから印刷メニュー（Ｐｒｉｎｔ．．．）２１７を選択すると、ＣＰＵ１２０４はこれを検知して、テキスト表示領域２１８に表示されているテキストの表示内容の印刷処理を開始するのであるが、先ず、図６に示すダイアログを表示装置１２０５の表示画面上に表示する。
【００５０】
図６はＰｒｉｎｔダイアログの表示例を示す図である。上述の通り、図５において印刷メニュー２１７を選択すると、このダイアログが表示される。
【００５１】
２１９はプリンタ選択領域であり、この領域２１９内には、印刷を実行させることのできるプリンタを示すアイコンが表示されている。これらのアイコンのうち１つを指示すると、印刷を実行するプリンタを１つ指示することができる。同図では、印刷装置３（プリンタドライバ５０）が選択されている状態を表している。
【００５２】
２２０はＰｒｅｆｅｒｅｎｃｅｓボタンであり、これをキーボードやマウスでもって指示すると、ＣＰＵ１２０４はこれを検知し、プリンタ選択領域２１９で選択されているプリンタまたはこのプリンタ用ドライバの詳細設定を行う為のダイアログを表示装置１２０５の表示画面上に表示する。
【００５３】
２２２はＰｒｉｎｔボタンであり、これをキーボードやマウスでもって指示すると、ＣＰＵ１２０４はこれを検知し、選択されている各設定で印刷を開始し、Ｐｒｉｎｔダイアログを閉じる。
【００５４】
２２３はＣａｎｃｅｌボタンであり、これをキーボードやマウスでもって指示すると、ＣＰＵ１２０４はこれを検知し、印刷を開始せずにＰｒｉｎｔダイアログを閉じる。
【００５５】
図７はプリンタドライバ５０のＵＩモジュール３５により提供されるＰｒｅｆｅｒｅｎｃｅｓダイアログのＭａｉｎシートの表示例を示す図である。同図において、２０はプリンタドライバ５０のＰｒｅｆｅｒｅｎｃｅｓダイアログであり、図６において、プリンタ選択領域２１９でプリンタＡＢＣ  ｘｙｚが選択されている状態で、Ｐｒｅｆｅｒｅｎｃｅｓボタン２２０が指示されると、ＣＰＵ１２０４はこれを検知し、プリンタドライバ５０のＵＩモジュールを起動することにより、図７に示すダイアログをこのシートが選択された状態で表示する。
【００５６】
８１は用紙の種類（Media Type）を選択するためのメニューで、用紙の種類を普通紙（Plain Paper）、はがき（Hagaki）、インクジェット官製葉書（Ink Jet Hagaki）から選択することができる。
【００５７】
８２は印刷品位（Print Quality）を選択するためのラジオボタン群であり、対応するラジオボタンを指示することで、印刷品位をきれい（High）、標準（Standard）、速い（Fast）から選択することができる。
【００５８】
８３は色調整（Color Adjustment）を選択する為のラジオボタン群であり、対応するラジオボタンを指示することで、印刷時の色を自動（Auto）、マニュアル（Manual）の何れかで調整することができる。マニュアル（Manual）を選択した場合、設定（Set...）ボタン８４が有効となり、このボタン８４を指示すると、ＣＰＵ１２０４はこれを検知し、不図示のマニュアル色調整ダイアログを表示し、このマニュアル色調整ダイアログにより、シアン、マゼンタ、イエロー、ブラックのカラーバランスの調整、濃度の調整、ICMのオン／オフ、マッチング方法の選択（自動、写真用、グラフィックス用、しない）、明るさの調整（明るく、通常、暗く）をマニュアル操作で行うことができる。
【００５９】
８５は設定を標準に戻す為の（Defaults）ボタンであり、このボタンを指示すると、ＣＰＵ１２０４はこれを検知し、Ｍａｉｎシートの設定を初期化して印刷設定情報に初期値をセットし、設定を更新して保存する。
【００６０】
８８は適用（Apply）ボタンであり、このボタンを指示すると、ＣＰＵ１２０４はこれを検知し、その時の印刷設定情報をセットして設定を更新してＨＤＤ１２０２内のレジストリに保存する。
【００６１】
８９はヘルプ（Help）ボタンであり、このボタンを指示すると、ＣＰＵ１２０４はこれを検知し、プリンタドライバ５０のヘルプを表示する。
【００６２】
８６はＯＫボタンであり、このボタンを指示すると、ＣＰＵ１２０４はこれを検知し、その時の印刷設定情報をＤＥＶＭＯＤＥ構造体（図２７で後述する）とＨＤＤ１２０２内のレジストリにセットして設定を更新して保存した後、Ｐｒｅｆｅｒｅｎｃｅｓダイアログを閉じる。
【００６３】
８７はＣａｎｃｅｌボタンであり、このボタンを指示すると、ＣＰＵ１２０４はこれを検知し、印刷設定情報を更新せずにＰｒｅｆｅｒｅｎｃｅｓダイアログを閉じる。
【００６４】
ここで、ＤＥＶＭＯＤＥ構造体はＷｉｎｄｏｗｓ（登録商標）  ＸＰ  ＯＳ用のアプリケーションとプリンタドライバとの間の印刷処理に使用される構造体（印刷設定登録情報）で、ＯＳで定義されているパブリック領域と、必要に応じて各プリンタドライバの製造元で任意に定義可能なプライベート領域とに分かれている。このＤＥＶＭＯＤＥ構造体に関しては公知であり、その使用方法も一般的であるので、本実施形態と関わりのある部分に関して図２７で後述するとして、ここではその詳細説明を省略する。レジストリはＷｉｎｄｏｗｓ（登録商標）  ＸＰ  ＯＳ用のプリンタドライバが各印刷設定情報を保存することができる公知の領域であり、その使用方法も一般的であるので、ここではその詳細説明を省略する。
【００６５】
図８はＰｒｅｆｅｒｅｎｃｅｓダイアログ２０のＰａｇｅ  Ｓｅｔｕｐシートを表す図である。図７のＰｒｅｆｅｒｅｎｃｅｓダイアログ２０のＭａｉｎシートが表示されている時に、Ｐａｇｅ  Ｓｅｔｕｐタブが選択されると、このシートが表示される。
【００６６】
同図において、２３は用紙サイズ（Page Size）を選択するためのメニューであり、用紙のサイズをA4、Letter、Hagaki 100x148mm等の中から選択することができる。
【００６７】
２４は印刷の向き（Orientation）を選択するためのラジオボタン群で、対応するラジオボタンを指示することで、印刷の向きを縦（Portrait）、横（Landscape）から選択することができる。
【００６８】
２２は印刷の種類（Printing Type）を選択するための領域であり、印刷の種類を等倍印刷（Normal-size Printing）、フィットページ印刷（Fit-to-Page Printing）、拡大／縮小印刷（Scaled Printing）、割り付け印刷（Page Layout Printing）から選択することができる。
【００６９】
２１は部数（Copies）指定部であり、印刷部数を１〜９９９部の範囲で指定できる。
【００７０】
２５は両面印刷選択部であり、両面印刷（Duplex Printing）チェックボックス２７、自動（Automatic）チェックボックス２８、とじ方向（Staple Side）選択メニュー２９、自動両面印刷の設定ボタン２６から構成され、手動両面印刷、自動両面印刷を選択したり、両面印刷に関する詳細設定を選択したりすることができる。
【００７１】
両面印刷チェックボックス２７は両面印刷のオン／オフを選択するチェックボックスであり、このチェックボックスがチェックされている時は両面印刷を行い、チェックされていない時は片面印刷を行う。
【００７２】
自動チェックボックス２８は両面印刷チェックボックス２７がチェックされている時に有効となり、チェックされていない時は無効（グレーアウト）となるチェックボックスであり、両面印刷チェックボックス２７がチェックされていて、かつ、自動チェックボックス２８もチェックされている時は自動両面印刷モードで動作して自動両面印刷を行い、両面印刷チェックボックス２７がチェックされていて、かつ、自動チェックボックス２８がチェックされていない時は手動両面印刷モードで動作して手動両面印刷を行う。
【００７３】
自動両面印刷とは、自動両面ユニット１０が印刷装置３に装着されている時に自動両面印刷が行われた場合に、プリンタドライバ５０から送信される１ページ目から順に１、２、３、・・・というように各ページの印刷を印刷装置が順に行う。そして、印刷装置は、ＡＳＦ１１にセットされている用紙の表面に対する奇数ページの印刷が完了した時点でその用紙を排紙トレイ１２上に排紙せずに自動両面ユニット１０内でその用紙を反転して、その用紙の裏面に対する、その奇数ページの次の偶数ページの印刷を行い、その偶数ページの印刷が完了した時点でその用紙を排紙トレイ１２上に排紙する、という動作を行って両面印刷を実行する。尚、自動両面ユニット１０内での反転や用紙の排紙に関するメカニカルな機構に関しては、公知の一般的な機構を用いて実現することができ、本実施形態の特徴を表す部分ではないので、詳細な説明は省略する。
【００７４】
手動両面印刷とは、手動両面が行われた場合に、プリンタドライバ５０から送信される１ページ目から順に１、３、５、・・・というように奇数ページをＡＳＦ１１にセットされている用紙の表面にまず先に印刷装置が印刷する。そして、各奇数ページの印刷が完了した時点でその用紙が一度排紙トレイ１２上に排紙され、全奇数ページの印刷が完了した時点で排紙トレイ１２上に排紙されている全奇数ページの印刷が完了している用紙を、ユーザが手動でＡＳＦ１１に再セットした後、プリンタドライバ５０から送信される２ページ目から順に２，４，６、・・・というように偶数ページをＡＳＦ１１に再セットされている用紙の裏面に印刷し、各偶数ページの印刷が完了した時点でその用紙が排紙トレイ１２上に排紙される、というような両面印刷である。
【００７５】
とじ方向選択メニュー２９はとじ方向を選択する為のメニューであり、とじ方向を長辺とじ（Long-side stapling）、短辺とじ（Short-side stapling）の何れかの中から選択することができる。
【００７６】
自動両面印刷の設定ボタン２６は、自動両面印刷の詳細設定を行う為の自動両面印刷の設定ダイアログを表示する為のボタンであり、このボタンを指示すると、ＣＰＵ１２０４はこれを検知して、プリンタドライバ５０のＵＩモジュール３５を用いて、図９で後述する自動両面印刷の設定ダイアログを表示する。
【００７７】
図９は自動両面印刷の設定ダイアログの表示例を示す図である。同図において、７１は自動両面印刷の設定ダイアログであり、このダイアログを操作することにより自動両面印刷時の各詳細設定をセットすることができる。
【００７８】
７２は自動両面印刷の設定操作部であり、自動判別ラジオボタン７３、常に両面ラジオボタン７４、両面（１ページ印刷は片面）ラジオボタン７５から構成される。これら３つのラジオボタンはどれか一つだけが選択できるようになっている。
【００７９】
ラジオボタン７３の「自動判別」モードが選択されている場合、プリンタドライバ５０は、印刷ジョブ内の印刷画像データや印刷設定情報（用紙サイズ、用紙の種類、印刷品位、ｅｔｃ．）等を解析して、その印刷ジョブが一連の自動両面印刷の印刷ジョブの内の１つとして取り扱われるものであるのか、あるいは、複数の自動両面印刷の印刷ジョブの中に紛れ込んだ通常の片面印刷の印刷ジョブであるのかを判別し、その判別結果に基づいて印刷モードを自動両面印刷あるいは片面印刷の何れかに決定し、排紙方法や画像処理等の印刷制御を切り換える。
【００８０】
ラジオボタン７４の「常に両面」モードが選択されている場合、プリンタドライバ５０は、印刷ジョブを常に両面印刷のものであるとして印刷モードを自動両面印刷に決定し、排紙方法や画像処理等の印刷制御を自動両面印刷用のもので行う。
【００８１】
ラジオボタン７５の「両面（１ページ印刷は片面）」モードが選択されている場合、プリンタドライバ５０は、印刷ジョブが１ページの印刷である場合は片面印刷であるとして印刷モードを片面印刷に決定し、排紙方法や画像処理等の印刷制御を片面印刷用のもので行う。また、印刷ジョブが２ページ以上の印刷である場合は両面印刷であるとして印刷モードを両面印刷に決定し、排紙方法や画像処理等の印刷制御を自動両面印刷用のもので行う。
【００８２】
＜ＤＥＶＭＯＤＥ構造体について＞
図２７はＤＥＶＭＯＤＥ構造体の構成を示す図である。同図において、２１０はＤＥＶＭＯＤＥ構造体であり、ＯＳで定義されているパブリック領域２１１とプリンタドライバ５０で定義されているプライベート領域２１２から構成される。
【００８３】
プライベート領域２１２には両面印刷フラグ２００、自動フラグ２０１、自動判別フラグ２０２、常に両面フラグ２０３、両面（１ページ印刷は片面）フラグ２０４、印刷総ページ数２０５のメンバーが含まれている。
【００８４】
両面印刷フラグ２００には両面印刷チェックボックス２７の状態が反映され、このチェックボックス２７がチェックされている時にはこの両面印刷フラグ２００はセットされ、チェックされていない時は両面印刷フラグ２００はクリアされる。
【００８５】
自動フラグ２０１には自動チェックボックス２８の状態が反映され、このチェックボックス２８がチェックされている時にはこの自動フラグ２０１はセットされ、チェックされていない時はこの自動フラグ２０１はクリアされる。
【００８６】
自動判別フラグ２０２にはラジオボタン７３の状態が反映され、このラジオボタン７３が選択されている時にはこの自動判別フラグ２０２はセットされ、選択されていない時はこの自動判別フラグ２０２はクリアされる。
【００８７】
常に両面フラグ２０３にはラジオボタン７４の状態が反映され、このラジオボタン７４が選択されている時にはこの両面フラグ２０３はセットされ、選択されていない時はこの両面フラグ２０３はクリアされる。
【００８８】
両面（１ページ印刷は片面）フラグ２０４にはラジオボタン７５の状態が反映され、このラジオボタン７５が選択されている時にはこの両面（１ページ印刷は片面）フラグ２０４はセットされ、選択されていない時はこの両面（１ページ印刷は片面）フラグ２０４はクリアされる。
【００８９】
印刷総ページ数２０５には印刷ジョブの印刷総ページ数がセットされる。
【００９０】
＜片面／両面印刷制御コマンドについて＞
図１０は片面／両面印刷制御コマンドを表す図である。片面／両面印刷制御コマンドはプリンタドライバ５０によって生成され、ＰＣ１から印刷装置３へ送られる制御コマンドのうちの１つであり、片面印刷または両面印刷を制御するコマンドである。
【００９１】
このコマンドはコマンドＩＤ、印刷モード、ページ設定、回転制御、排紙制御から構成される。
【００９２】
コマンドＩＤは０００８［ＨＥＸ］であり、このコマンドが片面／両面印刷制御コマンドであることを表す。
【００９３】
印刷モードには片面印刷（両面印刷オフ）を表す００１０［ＨＥＸ］、手動両面印刷を表す００２０［ＨＥＸ］、自動両面印刷を表す００３０［ＨＥＸ］の内の何れか一つがセットされる。
【００９４】
ページ設定には印刷モードが手動両面印刷を表す００２０［ＨＥＸ］の時は設定されたページ後に表裏反転を行うページ数が０００１〜ＦＦＦＥ［ＨＥＸ］の範囲内でセットされ、印刷モードがそれ以外の時は印刷総ページ数が０００１〜ＦＦＦＥ［ＨＥＸ］の範囲内でセットされるか、あるいは、印刷総ページ数不明を表すＦＦＦＦ［ＨＥＸ］がセットされる。
【００９５】
回転制御には印刷モードが片面印刷（両面印刷オフ）を表す００１０［ＨＥＸ］の時は初期値（用紙回転軸：回転無し、用紙タイプ：指定無し、印刷の向き：指定無し）を表す００００［ＨＥＸ］がセットされ、印刷モードがそれ以外の時は用紙回転軸に回転無しを表す００００［ＨＥＸ］、紙送り方向に対して垂直軸で回転を表す１０００［ＨＥＸ］、紙送り方向に対して平行軸で回転を表す２０００［ＨＥＸ］、用紙面に対して垂直軸で回転を表す３０００［ＨＥＸ］の内の何れか一つと、用紙タイプに指定無しを表す００００［ＨＥＸ］、縦長を表す０１００［ＨＥＸ］、横長を表す０２００［ＨＥＸ］、縦横比１：１を表す０３００［ＨＥＸ］の内の何れか一つと、印刷の向きに指定無しを表す００００［ＨＥＸ］、縦を表す００１０［ＨＥＸ］、横を表す００２０［ＨＥＸ］の内の何れか一つとがそれぞれ加算されてセットされる。
【００９６】
排紙制御には印刷モードが自動両面印刷を表す００３０［ＨＥＸ］の時はプリンタ内で何もしない制御を行わせる００００［ＨＥＸ］、奇数ページ印刷の場合、最終ページをプリンタ内で自動両面ユニットを通して自動的に排紙する制御を行わせる１０００［ＨＥＸ］、３ページ以上の奇数ページ印刷の場合、最終ページをプリンタ内で自動両面ユニットを通して自動的に排紙する制御を行わせる２０００［ＨＥＸ］の内の何れか一つがセットされ、印刷モードがそれ以外の時はプリンタ内で何もしない制御を行わせる初期値００００［ＨＥＸ］がセットされる。
【００９７】
印刷装置３がこのような片面／両面印刷制御コマンドを受信すると、上記内容に従って印刷制御を行う。
【００９８】
＜印字パルス制御コマンドについて＞
図１１は印字パルス制御コマンドを表す図である。印字パルス制御コマンドはプリンタドライバ５０によって生成され、ＰＣ１から印刷装置３へ送られる制御コマンドのうちの１つであり、記録部１９で発生される印字用パルスを制御するコマンドである。このコマンドはコマンドＩＤ、色、データ長、印字パルスデータから構成される。
【００９９】
コマンドＩＤは０００Ａ［ＨＥＸ］であり、このコマンドが印字パルス制御コマンドであることを表す。色にはシアンを表す００１０［ＨＥＸ］、マゼンタを表す００２０［ＨＥＸ］、黄を表す００３０［ＨＥＸ］、黒を表す００４０［ＨＥＸ］の内の何れか一つがセットされる。データ長には印字パルスデータの長さ（バイト数）が００００〜ＦＦＦＦ［ＨＥＸ］の範囲内で指定（セット）される。印字パルスデータにはデータ長で指定されたバイト数で構成される印字パルスデータがセットされる。印字パルスデータはバイナリデータであり、印字パルスを発生させる部分（画素）のビットをセット（値＝１）し、印字パルスを発生させない部分（画素）のビットをクリア（値＝０）する。
【０１００】
印刷装置３がこの印字パルス制御コマンドを受信すると、印字パルスデータがセット（値＝１）されている場合は記録部１９で印字パルスを発生させて記録紙上に印字し、印字パルスデータがクリア（値＝０）されている場合は記録部１９で印字パルスを発生させず記録紙上に印字しない。
【０１０１】
＜ページ制御コマンドについて＞
図１２はページ制御コマンドを表す図である。ページ制御コマンドはプリンタドライバ５０によって生成され、ＰＣ１から印刷装置３へ送られる制御コマンドの内の１つであり、印刷しているページに関する情報を印刷装置３に伝えるコマンドである。このコマンドはコマンドＩＤ、ページ番号、総ページ数、開始／終了から構成される。
【０１０２】
コマンドＩＤは０００Ｃ［ＨＥＸ］であり、このコマンドがページ制御コマンドであることを表す。ページ番号には印刷中のページ番号が０００１〜ＦＦＦＥ［ＨＥＸ］の範囲内でセットされる。総ページ数には総ページ数が０００１〜ＦＦＦＥ［ＨＥＸ］の範囲内でセットされるか、あるいは、印刷総ページ数不明を表すＦＦＦＦ［ＨＥＸ］がセットされる。このコマンドはページの開始時と終了時にＰＣ１から印刷装置３へ送られるので、開始／終了にはその時の状況に応じてページの開始を表す００００［ＨＥＸ］、ページの終了を表す０００１［ＨＥＸ］のどちらか一方がセットされる。印刷装置３がこのページ制御コマンドを受信すると、その内容が表す情報、すなわち、印刷しているページに関する情報に従って印刷制御を行う。
【０１０３】
＜それぞれのコマンドの作成例＞
図１３は片面印刷の制御コマンドの例を表す図である。同図に示すような印刷設定で印刷総ページ数が５ページの片面印刷を行った場合、制御コマンドに示す片面／両面印刷制御コマンドがＰＣ１から印刷装置３へ送られる。具体的には、制御コマンドとして、コマンドＩＤの片面/両面印刷制御コマンド「０００８」、印刷モードの片面印刷「００１０」、ページ設定の印刷総ページ数「０００５」が指定されている。
【０１０４】
図１４は手動両面印刷の制御コマンドの例を表す図である。同図に示すような印刷設定で印刷総ページ数が５ページの手動両面印刷を行った場合、制御コマンドに示す片面／両面印刷制御コマンドがＰＣ１から印刷装置３へ送られる。具体的には、制御コマンドとして、コマンドＩＤの片面/両面印刷制御コマンド「０００８」、印刷モードの手動両面印刷「００２０」、ページ設定の表裏反転をユーザが行うページ番号「０００３」、更に、用紙回転軸と用紙タイプと印刷の向きを示す「２１１０（用紙送りに対して並行軸で回転、縦長用紙、印刷の向きが縦）」が指定されている。
【０１０５】
図１５は自動両面印刷の制御コマンドの例を表す図である。同図に示すような印刷設定で印刷総ページ数が５ページの自動両面印刷を行った場合、制御コマンドに示す片面／両面印刷制御コマンドがＰＣ１から印刷装置３へ送られる。具体的には、制御コマンドとして、コマンドＩＤの片面/両面印刷制御コマンド「０００８」、印刷モードの両面印刷「００３０」、ページ設定の印刷総ページ数「０００５」、用紙回転軸と用紙タイプと印刷の向きを示す「２１１０（用紙送りに対して並行軸で回転、縦長用紙、印刷の向きが縦）」、更に、排紙制御の印刷モードで「３ページ以上の奇数ページ印刷の場合、最終ページをプリンタ内で自動両面ユニットを通して自動的に排紙する」ために「２０００」が指定されている。
【０１０６】
＜印刷モード制御テーブルについて＞
図１６は自動両面印刷かつ自動判別７３が選択されている場合に、プリンタドライバ５０において、印刷ジョブ内の印刷画像データまたは印刷設定を用いて印刷モードを決定する為に参照される印刷モード制御テーブルの構成例を示す図である。同図のテーブルのデータはプリンタドライバ５０内に含められており、同図に示すようなテーブルを参照することで、印刷画像データとしてカラー画像（Color Image）、モノクロテキスト（Monochrome Text）、印刷設定として用紙サイズ（Page Size）選択部２３で選択される用紙サイズ、用紙の種類（Media Type）選択部８１で選択される用紙の種類、印刷品位（Print Quality）選択部８２で選択される印刷品位の組み合わせから、印刷モードを片面印刷、自動両面印刷のどちらか一方に決定することができる。
【０１０７】
例えば、No.1の行に着目した場合、印刷画像データがカラー画像（Color Image）、用紙サイズがLetter、用紙の種類（Media Type）が普通紙（Plain Paper）、印刷品位（Print Quality）がきれい（High）の時の印刷モードが片面印刷であることがわかる。これは、自動両面印刷が選択されている場合であっても、印刷画像データがカラー画像の場合は、用紙サイズ：Letterの普通紙に印刷品位：きれいで印刷するケースは片面印刷であるケースが大多数であるというリサーチのもとに、この印刷モードに決定している。つまり、この印刷ジョブが複数の自動両面印刷の印刷ジョブの中に紛れ込んだ通常の片面印刷の印刷ジョブである、という判断を自動的に行っていることになる。
【０１０８】
次に、No.3の行に着目した場合、印刷画像データがカラー画像（Color Image）、用紙サイズがLetter、用紙の種類が普通紙（Plain Paper）、印刷品位が速い（Fast）の時の印刷モードが自動両面印刷であることがわかる。これは自動両面印刷が選択されている場合において、印刷画像データがカラー画像の場合は、用紙サイズ：Letterの普通紙に印刷品位：速いで印刷するケースは自動両面印刷であるケースが大多数であるというリサーチのもとに、この印刷モードに決定している。つまり、この印刷ジョブが一連の自動両面印刷の印刷ジョブの内の１つである、という判断を自動的に行っていることになる。
【０１０９】
次に、No.10の行に着目した場合、印刷画像データがモノクロテキスト（Monochrome Text）、用紙サイズがA4、用紙の種類が普通紙（Plain Paper）、印刷品位がきれい（High）の時の印刷モードが片面印刷であることがわかる。これは自動両面印刷が選択されている場合であっても、印刷画像データがモノクロテキストの場合は、用紙サイズ：A4の普通紙に印刷品位：きれいで印刷するケースは片面印刷であるケースが大多数であるというリサーチのもとに、この印刷モードに決定している。つまり、この印刷ジョブが複数の自動両面印刷の印刷ジョブの中に紛れ込んだ通常の片面印刷の印刷ジョブである、という判断を自動的に行っていることになる。
【０１１０】
次に、No.11の行に着目した場合、印刷画像データがモノクロテキスト（Monochrome Text）、用紙サイズがA4、用紙の種類が普通紙（Plain Paper）、印刷品位が標準（Standard）の時の印刷モードが自動両面印刷であることがわかる。これは自動両面印刷が選択されている場合において、印刷画像データがモノクロテキストの場合は、用紙サイズ：A4の普通紙に印刷品位：標準で印刷するケースは自動両面印刷であるケースが大多数であるというリサーチのもとに、この印刷モードに決定している。つまり、この印刷ジョブが一連の自動両面印刷の印刷ジョブの内の１つである、という判断を自動的に行っていることになる。
【０１１１】
次に、No.13の行に着目した場合、印刷画像データがカラー画像（Color Image）、用紙サイズがHagaki 100x148mm、用紙の種類がはがき（Hagaki）、印刷品位がきれい（High）の時の印刷モードが自動両面印刷であることがわかる。これは自動両面印刷が選択されている場合において、印刷画像データがカラー画像の場合は、用紙サイズ：Hagaki 100x148mmのはがきに印刷品位：きれいで印刷するケースは自動両面印刷であるケースが大多数であるというリサーチのもとに、この印刷モードに決定している。つまり、この印刷ジョブが一連の自動両面印刷の印刷ジョブの内の１つである、という判断を自動的に行っていることになる。
【０１１２】
次に、No.17の行に着目した場合、印刷画像データがモノクロテキスト（Monochrome Text）、用紙サイズがHagaki 100x148mm、用紙の種類がはがき（Hagaki）、印刷品位が標準（Standard）の時の印刷モードが自動両面印刷であることがわかる。これは自動両面印刷が選択されている場合において、モノクロテキストの場合は、用紙サイズ：Hagaki 100x148mmのはがきに印刷品位：標準で印刷するケースは自動両面印刷であるケースが大多数であるというリサーチのもとに、この印刷モードに決定している。つまり、この印刷ジョブが一連の自動両面印刷の印刷ジョブの内の１つである、という判断を自動的に行っていることになる。
【０１１３】
次に、No.21の行に着目した場合、印刷画像データがカラー画像（Color Image）、用紙サイズがHagaki 100x148mm、用紙の種類がインクジェット官製葉書（Ink Jet Hagaki）、印刷品位が速い（Fast）の時の印刷モードが自動両面印刷であることがわかる。これは自動両面印刷が選択されている場合において、印刷画像データがカラー画像の場合は、用紙サイズ：Hagaki 100x148mmのインクジェット官製葉書に印刷品位：速いで印刷するケースは自動両面印刷であるケースが大多数であるというリサーチのもとに、この印刷モードに決定している。つまり、この印刷ジョブが一連の自動両面印刷の印刷ジョブの内の１つである、という判断を自動的に行っていることになる。
【０１１４】
次に、No.22の行に着目した場合、印刷画像データがモノクロテキスト（Monochrome Text）、用紙サイズがHagaki 100x148mm、用紙の種類がインクジェット官製葉書（Ink Jet Hagaki）、印刷品位がきれい（High）の時の印刷モードが自動両面印刷であることがわかる。これは自動両面印刷が選択されている場合において、印刷画像データがモノクロテキストの場合は、用紙サイズ：Hagaki 100x148mmのインクジェット官製葉書に印刷品位：きれいで印刷するケースは自動両面印刷であるケースが大多数であるというリサーチのもとに、この印刷モードに決定している。つまり、この印刷ジョブが一連の自動両面印刷の印刷ジョブの内の１つである、という判断を自動的に行っていることになる。
【０１１５】
このようなリサーチ結果の他に、次のようなカラーインクジェットプリンタを利用した印刷システムの特徴をもとに、このテーブルを作成している。
【０１１６】
・  一般にカラーインクジェットプリンタで印刷する場合、印刷品位が高品位な程、表面に印刷したインクが裏写りする。
【０１１７】
・  用紙の種類が比較的薄い普通紙（Plain Paper）の場合で、印刷画像データがカラー画像（Color Image）で印刷品位がきれい（High）または標準（Standard）の場合は裏写りする可能性が高いので、両面印刷にはあまり適さない。
【０１１８】
・  用紙の種類が比較的薄い普通紙（Plain Paper）の場合で、印刷画像データがモノクロテキスト（Monochrome Text）で印刷品位がきれい（High）の場合は裏写りする可能性が高いので、両面印刷にはあまり適さない。
【０１１９】
・  用紙の種類が比較的厚いはがき（Hagaki）やインクジェット官製葉書（Ink Jet Hagaki）の場合、印刷画像データに依存することなく裏写りがほとんど無いので、ほとんどのケースで両面印刷に適している。
【０１２０】
なお、印刷画像データの解析はグラフィックスドライバ３４で行われる。具体的には印刷ジョブ内の印刷画像データを解析して、カラー画像、モノクロテキスト、白紙（印刷画像データ無し）等の識別を行う。
【０１２１】
本実施形態ではこのような範囲で識別しているが、印刷画像データをもっと詳細に解析して、例えば、画像の色や形、文字（テキスト）が含まれているか等から、写真であるのか、グラフであるのか、表であるのか、モノクロテキストであるのか、カラーテキストであるのか、モノクロ線画であるのか、グレースケール画像であるのか、あるいはこれらが合成されたものであるのか等の広い範囲で識別して、印刷モードを決定してもよい。以上は一例であるので、印刷画像データや印刷設定はこの例に限られることなく、印刷モードに影響を与える任意の情報の組み合わせから印刷モードを決定することが可能である。尚、実際の自動両面印刷時におけるこのテーブルの使われ方の詳細に関しては、図３１で後述する。
【０１２２】
＜プリンタドライバ５０の動作＞
次に、ＣＰＵ１２０４がプリンタドライバ５０を実行することで行われる処理について、同処理のフローチャートを示す図１７を用いて以下説明する。
【０１２３】
操作者がキーボードやマウスを用いて、図６のＰｒｉｎｔダイアログ上のＰｒｉｎｔボタン２２２を指示すると、ＣＰＵ１２０４はこれを検知して、プリンタドライバ５０を動作させる。先ず、図３０で後述する印刷ジョブ情報の保存処理を行い（ステップＳ１７１２）、プリンタドライバ５０は、印刷ジョブ内のＤＥＶＭＯＤＥ構造体２１０（印刷設定情報）を参照し（ステップＳ１７０２）、両面印刷フラグ２００がクリアされているか否か（両面印刷チェックボックス２７がチェックされているか否か）をチェックし（ステップＳ１７０３）、両面印刷フラグ２００がクリアされている（両面印刷チェックボックス２７がチェックされていない）場合には処理をステップＳ１７０８に進め、印刷装置３に片面印刷処理をさせるべく処理を行う（ステップＳ１７０８）。ステップＳ１７０８における処理の詳細については図１８を用いて後述する。そして印刷処理を終了する。
【０１２４】
一方、ステップＳ１７０３において、両面印刷フラグ２００がセットされている（両面印刷チェックボックス２７がチェックされている）場合には処理をステップＳ１７０４に進め、プリンタドライバ５０は、自動フラグ２０１がクリアされているか否か（自動チェックボックス２８がチェックされているか否か）をチェックし（ステップＳ１７０４）、自動フラグ２０１がクリアされている（自動チェックボックス２８がチェックされていない）場合には処理をステップＳ１７０９に進め、印刷装置３に手動両面印刷処理をさせるべく処理を行う（ステップＳ１７０９）。ステップＳ１７０９における処理の詳細については図１９を用いて後述する。そして印刷処理を終了する。
【０１２５】
一方、ステップＳ１７０４において、自動フラグ２０１がセットされている（自動チェックボックス２８がチェックされている）場合には処理をステップＳ１７０５に進め、プリンタドライバ５０は、自動判別フラグ２０２がセットされているか否か（自動判別ラジオボタン７３が選択されているか否か）をチェックし（ステップＳ１７０５）、自動判別フラグ２０２がセットされている（自動判別ラジオボタン７３が選択されている）場合には処理をステップＳ１７１０に進め、印刷装置３に自動判別自動両面印刷処理をさせるべく処理を行う（ステップＳ１７１０）。ステップＳ１７１０における処理の詳細については図３１を用いて後述する。そして印刷処理を終了する。
【０１２６】
一方、ステップＳ１７０５において、自動判別フラグ２０２がクリアされている（自動判別ラジオボタン７３が選択されていない）場合には処理をステップＳ１７０６に進め、プリンタドライバ５０は、常に両面フラグ２０３がセットされているか否か（常に両面ラジオボタン７４が選択されているか否か）をチェックし（ステップＳ１７０６）、常に両面フラグ２０３がセットされている（常に両面ラジオボタン７４が選択されている）場合には処理をステップＳ１７１１に進め、印刷装置３に常に両面印刷処理をさせるべく処理を行う（ステップＳ１７１１）。ステップＳ１７１１における処理の詳細については図２０を用いて後述する。そして印刷処理を終了する。
【０１２７】
一方、ステップＳ１７０６において、常に両面フラグ２０３がクリアされている場合（常に両面ラジオボタン７４が選択されていない場合）場合には両面（１ページ印刷は片面）フラグ２０４がセットされている（ラジオボタン７５が選択されている）ということになるので、処理をステップＳ１７０７に進め、プリンタドライバ５０は、アプリケーション３０からＧＤＩ３１を介してプリンタキュー３２に格納されている印刷データを解析し、印刷総ページ数２０５が１ページであるか否かをチェックし（ステップＳ１７０７）、１ページの場合には処理をステップＳ１７０８に進める。一方、印刷総ページ数２０５が複数ページである場合には処理をステップＳ１７１１に進める。
【０１２８】
図３０は上記ステップＳ１７１２における処理の詳細を示すフローチャートである。プリンタドライバ５０は、ＧＤＩ３１から渡された印刷ジョブからその印刷ジョブのユーザ名を取得して、ＨＤＤ１２０２内のレジストリの所定のキーに保存し（ステップＳ３００１）、その印刷ジョブからアプリケーション名を取得して、ＨＤＤ１２０２内のレジストリの所定のキーに保存し（ステップＳ３００２）、ＯＳからその時点における年月日を含む時刻を取得して、ＨＤＤ１２０２内のレジストリの所定のキーに保存し（ステップＳ３００３）、その印刷ジョブから印刷設定を取得して、ＨＤＤ１２０２内のレジストリの所定のキーに保存し（ステップＳ３００４）、その印刷ジョブから印刷画像データの種類を取得して、ＨＤＤ１２０２内のレジストリの所定のキーに保存し（ステップＳ３００５）、図１７のフローチャートにリターンする。尚、ＨＤＤ１２０２内のレジストリの所定のキーに保存された情報は、ＯＳが再起動またはシャットダウン等をされたり、ＰＣ１の電源が落とされてもＨＤＤ１２０２内に保存された状態が保たれる。
【０１２９】
なお、本実施形態では、ステップＳ１７０５で、図９の７３の自動判別のラジオボタンが選択されていると判別された場合、ステップＳ１７１０の自動判別自動両面印刷を実行した。
【０１３０】
しかしながら、図８の２８のＡｕｔｏｍａｔｉｃ（自動）の設定をできなくし、ステップＳ１７０４、ステップＳ１７０５の処理をなくし、ステップＳ１７０３でＹＥＳと判別された場合にステップＳ１７１０に進み、自動判別自動両面印刷を実行することもできる。
【０１３１】
また、図８の２６の自動両面印刷の設定をできなくし、ステップＳ１７０５の処理をなくし、ステップＳ１７０４でＹＥＳと判別された場合にステップＳ１７１０に進み、自動判別自動両面印刷を実行することもできる。
【０１３２】
図１８は、上記ステップＳ１７０８における処理の詳細を示すフローチャートである。先ず、プリンタドライバ５０は、図１０で示す片面／両面印刷制御コマンドを用いて図１３で示すような片面印刷制御コマンドを生成し（ステップＳ１８０２）、図１１で示す印字パルス制御コマンドと図１２で示すページ制御コマンドを用いて片面印刷用印字制御コマンドを生成し（Ｓ１８０３）、片面印刷制御コマンドと片面印刷用印字制御コマンドとをＮＢ１２０７によって印刷装置３へ送信し（ステップＳ１８０４）、図１７のフローチャートにリターンする。
【０１３３】
図１９は、上記ステップＳ１７０９における処理の詳細を示すフローチャートである。先ず、プリンタドライバ５０は、図１０で示す片面／両面印刷制御コマンドを用いて図１４で示すような手動両面印刷制御コマンドを生成し（ステップＳ１９０２）、図１１で示す印字パルス制御コマンドと図１２で示すページ制御コマンドを用いて手動両面印刷用印字制御コマンドを生成し（ステップＳ１９０３）、手動両面印刷制御コマンドと手動両面印刷用印字制御コマンドとをＮＢ１２０７によって印刷装置３へ送信し（ステップＳ１９０４）、図１７のフローチャートにリターンする。
【０１３４】
図２０は、上記ステップＳ１７１１における処理の詳細を示すフローチャートである。先ず、プリンタドライバ５０は、図１０で示す片面／両面印刷制御コマンドを用いて図１５で示すような自動両面印刷制御コマンドを生成し（ステップＳ２００２）、図１１で示す印字パルス制御コマンドと図１２で示すページ制御コマンドを用いて自動両面印刷用印字制御コマンドを生成し（ステップＳ２００３）、自動両面印刷制御コマンドと自動両面印刷用印字制御コマンドとをＮＢ１２０７によって印刷装置３へ送信し（ステップＳ２００４）、図１７のフローチャートにリターンする。
【０１３５】
図３１は、上記ステップＳ１７１０における処理の詳細を示すフローチャートである。先ず、プリンタドライバ５０は、図３２で後述するユーザ名の確認処理を行い（ステップＳ３１０１）、自動判別継続の場合（ステップＳ３１０２）、図３３で後述するアプリケーション名の確認処理を行い（ステップＳ３１０３）、自動判別継続の場合（ステップＳ３１０４）、図３４で後述する時刻の確認処理を行い（ステップＳ３１０５）、自動判別継続の場合（ステップＳ３１０６）、図３５で後述する印刷設定と印刷画像データの種類の確認処理を行い（ステップＳ３１０７）、自動判別継続の場合（ステップＳ３１０８）、図２１で後述する自動判別自動両面印刷実行処理を行い（ステップＳ３１０９）、図１７のフローチャートにリターンする。ステップＳ３１０８において、自動判別継続以外の場合、図２０に示す常に自動両面印刷の処理を行い（ステップＳ３１１０）、図１７のフローチャートにリターンする。ステップＳ３１０６において、自動判別継続以外の場合、ステップＳ３１１０に進む。ステップＳ３１０４において、自動判別継続以外の場合、ステップＳ３１１０に進む。ステップＳ３１０２において、自動判別継続以外の場合、ステップＳ３１１０に進む。
【０１３６】
図３２は上記ステップＳ３１０１における処理の詳細を示すフローチャートである。先ず、プリンタドライバ５０は、現在処理中の印刷ジョブのユーザ名と、図３０のステップＳ３００１で保存された前の印刷ジョブのユーザ名を比較し（ステップＳ３２０１）、同一でない場合（ステップＳ３２０２）、戻り値に「自動判別継続」をセットして（ステップＳ３２０３）、図３１のフローチャートにリターンする。ステップＳ３２０２において、同一の場合、戻り値に「常に自動両面印刷」をセットして（ステップＳ３２０４）、図３１のフローチャートにリターンする。
【０１３７】
図３３は上記ステップＳ３１０３における処理の詳細を示すフローチャートである。先ず、プリンタドライバ５０は、現在処理中の印刷ジョブのアプリケーション名と、図３０のステップＳ３００２で保存された前の印刷ジョブのアプリケーション名を比較し（ステップＳ３３０１）、同一の場合（ステップＳ３３０２）、戻り値に「常に自動両面印刷」をセットして（ステップＳ３３０３）、図３１のフローチャートにリターンする。ステップＳ３３０２において、異なる場合、図３６で後述するアプリケーションのグループ対応テーブルを参照して、現在処理中の印刷ジョブのアプリケーションが属するグループと前の印刷ジョブのアプリケーションが属するグループを比較し（ステップＳ３３０４）、同一グループの場合（ステップＳ３３０５）、ステップＳ３３０３に進む。ステップＳ３３０５において、グループが異なる場合、戻り値に「自動判別継続」をセットして（ステップＳ３３０６）、図３１のフローチャートにリターンする。このように、現在処理中の印刷ジョブと前の印刷ジョブのアプリケーション名が異なる場合でも、それぞれのアプリケーションが属するグループが同じ、つまり、同種のアプリケーションの場合は、これらの印刷ジョブが一連の印刷ジョブであると考え、このような場合は自動判別処理を継続する。
【０１３８】
図３４は上記ステップＳ３１０５における処理の詳細を示すフローチャートである。先ず、プリンタドライバ５０は、現在処理中の印刷ジョブの年月日を含む時刻と、図３０のステップＳ３００３で保存された前の印刷ジョブの年月日を含む時刻を比較し（ステップＳ３４０１）、一定時間を経過している場合（ステップＳ３４０２）、戻り値に「自動判別継続」をセットして（ステップＳ３４０３）、図３１のフローチャートにリターンする。ステップＳ３４０２において、一定時間以内の場合、戻り値に「常に自動両面印刷」をセットして（ステップＳ３２０４）、図３１のフローチャートにリターンする。尚、一定時間として、ここでは１分と定義している。
【０１３９】
図３５は上記ステップＳ３１０７における処理の詳細を示すフローチャートである。先ず、プリンタドライバ５０は、現在処理中の印刷ジョブの印刷設定と、図３０のステップＳ３００４で保存された前の印刷ジョブの印刷設定を比較し（ステップＳ３５０１）、同一の場合（ステップＳ３５０２）、戻り値に「常に自動両面印刷」をセットして（ステップＳ３５０３）、図３１のフローチャートにリターンする。ステップＳ３５０２において、異なる場合、現在処理中の印刷ジョブの印刷画像データの種類と、図３０のステップＳ３００５で保存された前の印刷ジョブの印刷画像データの種類を比較し（ステップＳ３５０４）、同一の場合（ステップＳ３５０５）、戻り値に「自動判別継続」をセットして（ステップＳ３５０６）、図３１のフローチャートにリターンする。ステップＳ３５０５において、異なる場合、ステップＳ３５０３に進む。尚、印刷設定、及び、印刷画像データの種類は、それぞれ、図１６の印刷モード制御テーブルの印刷設定欄に記載されている印刷設定、及び、印刷画像データ欄に記載されている印刷画像データの種類を表す。このように、現在処理中の印刷ジョブと前の印刷ジョブの印刷設定が異なる場合でも、印刷画像データの種類が異なる場合はその印刷画像データに合わせて印刷設定が異なることが一般的であるので、これらの印刷ジョブが一連の印刷ジョブであると考え、このような場合は自動判別処理を継続する。
【０１４０】
図３６はアプリケーションのグループ対応テーブルである。アプリケーション名欄にアプリケーション名が、グループ名欄にそのアプリケーションが属するグループ名が記載されている。例えば、Application1、Application2はどちらもGroup1に属し、同種のアプリケーションとして取り扱われる。例えば、Application4はGroup2に属するので、Application1とApplication2とは異種のアプリケーションとして取り扱われる。
【０１４１】
図２１は、上記ステップＳ３１０９における処理の詳細を示すフローチャートである。先ず、プリンタドライバ５０は、プリンタキュー３２に格納されている印刷データを解析し、印刷データの印刷総ページ数２０５が１ページであるのかをチェックし（ステップＳ２１０２）、１ページである場合には処理をステップＳ２１０３に進め、ＤＥＶＭＯＤＥ構造体に設定されている印刷設定を取得し、取得された印刷設定と図１６に示した印刷モード制御テーブルを用いて印刷ジョブ内の印刷画像データ、印刷設定のセットに該当する印刷モードを特定（決定）する（ステップＳ２１０３）。そしてプリンタドライバ５０は、決定した印刷モードが片面印刷であるのかをチェックし（ステップＳ２１０４）、片面印刷である場合には処理をステップＳ２１０８に進め、上記ステップＳ１７０８と同じ処理（即ち図１８に示したフローチャートに従った処理）を行い、図１７のフローチャートにリターンする。
【０１４２】
一方、ステップＳ２１０４において、印刷モードが自動両面印刷である場合には処理をステップＳ２１０５に進め、上記ステップＳ１７１１と同じ処理（即ち図２０に示したフローチャートに従った処理）を行い、図１７のフローチャートにリターンする。
【０１４３】
一方、ステップＳ２１０２において、総ページ数２０５が複数ページである場合には処理をステップＳ２１０６に進め、プリンタドライバ５０は、総ページ数２０５が２ページであるのか否かをチェックし（ステップＳ２１０６）、２ページよりも多い場合には処理をステップＳ２１０５に進めるのであるが、２ページである場合には処理をステップＳ２１０７に進め、グラフィックスドライバ３４が印刷ジョブ内の印刷画像データを解析し、２ページ目が白紙（印刷画像データ無し）であるのか否かをチェックする（ステップＳ２１０７）。
【０１４４】
その結果、２ページ目が白紙である場合には処理をステップＳ２１０８に進めるのであるが、２ページ目が白紙ではない（印刷画像データ有り）場合には処理をステップＳ２１０６に進める。
【０１４５】
以上の処理により、ＣＰＵ１２０４はプリンタドライバ５０を動作させることで、自動両面印刷を設定した印刷ジョブを印刷する場合、この印刷ジョブに基づく印刷画像や印刷設定などに従って印刷制御を行うためのモード、常に両面印刷を行うように印刷制御を行うためのモード、印刷ページ数に応じて両面印刷、片面印刷の何れかを行うよう印刷制御を行うためのモードの何れかを操作者に選択させることができると共に、選択したモードに応じた印刷制御を印刷装置３に行わせるためのコマンドを生成して印刷装置３に送信することができる
＜印刷装置３の動作＞
次に、印刷装置３の動作について説明する。
【０１４６】
図２２は、印刷装置３が行う印刷処理のフローチャートである。なお、同図のフローチャートに従った処理をＣＰＵ１５に実行させるためのプログラムやデータはＲＯＭ１６に格納されており、ＣＰＵ１５がこれを用いて処理を実行することで、印刷装置３は以下説明する各処理を実行する。
【０１４７】
プリンタドライバ５０を動作させることで生成され、ＵＳＢケーブル９を介してＰＣ１から送られてくるコマンドのデータは一端ＲＡＭ１７に格納されるのであるが、先ず、このコマンド内のコマンドＩＤをＲＡＭ１７に格納する（ステップＳ２２０２）。
【０１４８】
そして格納したコマンドＩＤが０００８［ＨＥＸ］であるのか否か（ＰＣ１から受信したコマンドが図１０で示す片面／両面印刷制御コマンドであるか否か）をチェックし（ステップＳ２２０３）、０００８［ＨＥＸ］の場合には処理をステップＳ２２０４に進め、このコマンド内の印刷モードを示すデータをＲＡＭ１７に格納する（ステップＳ２２０４）。
【０１４９】
そしてこのコマンド内の印刷モードが００１０［ＨＥＸ］であるのか否か（片面印刷を行うのか否か）をチェックし（ステップＳ２２０５）、００１０［ＨＥＸ］の場合には処理をステップＳ２２０８に進め、このコマンド内のページ設定を示すデータをＲＡＭ１７に格納し（ステップＳ２２０８）、次のコマンドの受信を待機する。
【０１５０】
一方、ステップＳ２２０５において、印刷モードが００１０［ＨＥＸ］ではない場合（手動両面印刷または自動両面印刷である場合）には処理をステップＳ２２０６に進め、図２３で後述する回転制御の処理を行い（ステップＳ２２０６）、図２４で後述する排紙制御の処理を行い（ステップＳ２２０７）、次のコマンドの受信を待機する。
【０１５１】
一方、ステップＳ２２０３において、コマンドＩＤが０００８［ＨＥＸ］ではない場合には処理をステップＳ２２０９に進め、コマンドＩＤが０００Ａ［ＨＥＸ］であるのか否かをチェックし、０００Ａ［ＨＥＸ］である場合には処理をステップＳ２２１０に進め、図２５で後述する印字パルス制御の処理を行い（ステップＳ２２１０）、次のコマンドの受信を待機する。
【０１５２】
一方、ステップＳ２２０９において、コマンドＩＤが０００Ａ［ＨＥＸ］ではない場合には処理をステップＳ２２１１に進め、コマンドＩＤが０００Ｃ［ＨＥＸ］であるのか否かをチェックし、０００Ｃ［ＨＥＸ］である場合には処理をステップＳ２２１２に進め、図２６で後述するページ制御の処理を行い、次のコマンドの受信を待機する。
【０１５３】
一方、ステップＳ２２１１で、コマンドＩＤが０００Ｃ［ＨＥＸ］ではない場合には処理をステップＳ２２１３に進め、それぞれのコマンドＩＤに対応する制御を行い（ステップＳ２２１３）、次のコマンドの受信を待機する。
【０１５４】
図２３は、上記ステップＳ２２０６における回転制御処理の詳細を示すフローチャートである。先ず、上記ステップＳ２２０４でＲＡＭ１７に格納された印刷モードを参照し（ステップＳ２３０２）、印刷モードが００２０［ＨＥＸ］であるのか否かをチェックする（ステップＳ２３０２）。
【０１５５】
そして印刷モードが００２０［ＨＥＸ］である場合には手動両面印刷であるので、処理をステップＳ２３０４に進め、受信した図１０で示す片面／両面印刷制御コマンドのページ設定を示すデータを参照し、表面の印刷ページ数をＲＡＭ１７に格納する（ステップＳ２３０４）。
【０１５６】
そして、受信したコマンド内の回転制御の用紙回転軸を参照し、指定されている用紙回転軸を示すデータをＲＡＭ１７に格納する（ステップＳ２３０５）。次に、受信したコマンド内の回転制御の用紙タイプを参照し、指定されている用紙タイプを示すデータをＲＡＭ１７に格納する（ステップＳ２３０６）。次に、受信したコマンド内の回転制御の印刷の向きを参照し、指定されている印刷の向きを示すデータをＲＡＭ１７に格納する（ステップＳ２３０７）。そして図２２のフローチャートにリターンする。
【０１５７】
一方、ステップＳ２２０３において、印刷モードが００２０［ＨＥＸ］ではない場合には片面印刷または自動両面印刷であるので、処理をステップＳ２２０８に進め、受信したコマンド内のページ設定を参照し、印刷総ページ数を示すデータをＲＡＭ１７に格納する（ステップＳ２３０８）。そしてステップＳ２３０５以降の処理を行う。
【０１５８】
図２４は、上記ステップＳ２２０７における処理の詳細を示すフローチャートである。先ず、ステップＳ２２０４でＲＡＭ１７に格納された印刷モードのデータを参照し（ステップＳ２４０２）、印刷モードが００３０［ＨＥＸ］であるのか否かをチェックし（ステップＳ２４０３）、００３０［ＨＥＸ］である場合には自動両面印刷であるので、処理をステップＳ２４０４に進め、受信したコマンド内の排紙制御を参照し、指定されている排紙制御を示すデータをＲＡＭ１７に格納する（ステップＳ２４０４）。そして図２２のフローチャートにリターンする。
【０１５９】
一方、ステップＳ２４０３において、印刷モードが００３０［ＨＥＸ］ではない場合には片面印刷または手動両面印刷であるので、ステップＳ２４０４における処理は行わずに、図２２のフローチャートにリターンする。
【０１６０】
図２５は、上記ステップＳ２２１０における処理の詳細を示すフローチャートである。先ず、上記ステップＳ２２０４でＲＡＭ１７に格納された印刷モードを参照し（ステップＳ２５０２）、印刷モードが００１０［ＨＥＸ］であるのか否かをチェックし（ステップＳ２５０３）、００１０［ＨＥＸ］ではない場合には手動両面印刷または自動両面印刷であるので、処理をステップＳ２５０４に進め、上記ステップＳ２３０５でＲＡＭ１７に格納された回転制御の用紙回転軸を参照し（ステップＳ２５０４）、上記ステップＳ２３０６でＲＡＭ１７に格納された回転制御の用紙タイプを参照し（ステップＳ２５０５）、上記ステップＳ２３０７でＲＡＭ１７に格納された回転制御の印刷の向きを参照する（ステップＳ２５０６）。
【０１６１】
そして、用紙回転軸、用紙タイプ、印刷の向きの設定に基づいて図１１で示す印字パルス制御コマンドの印字パルスデータを変更し（ステップＳ２５０７）、この変更された印字パルスデータに基づいてＡＳＦ１１にセットされている記録紙（用紙）に印字する（ステップＳ２５０８）。
【０１６２】
一方、ステップＳ２５０３において、印刷モードが００１０［ＨＥＸ］である場合には片面印刷であるので、処理をステップＳ２５０８へ進め、印字パルスデータに基づいてＡＳＦ１１にセットされている記録紙（用紙）に印字する。
【０１６３】
本実施形態では、ステップＳ２５０７において用紙回転軸、用紙タイプ、印刷の向きの設定に基づいて印字パルスデータを変更する例を説明したが、この例に限られることなく、両面印刷の制御に関連する任意の情報に基づいて印字パルスデータを変更することも可能であり、有効である。
【０１６４】
図２６は、印刷装置３によるページ制御処理のフローチャートである。なお、同図のフローチャートに従った処理をＣＰＵ１５に実行させるためのプログラムやデータはＲＯＭ１６に格納されており、ＣＰＵ１５がこれを用いて処理を実行することで、印刷装置３は以下説明する各処理を実行する。
【０１６５】
先ず、上記ステップＳ２２０４でＲＡＭ１７に格納された印刷モードを参照し（Ｓ２６０２）、印刷モードが００３０［ＨＥＸ］であるのか否かをチェックし（ステップＳ２６０３）、００３０［ＨＥＸ］である場合には自動両面印刷であるので、処理をステップＳ２６０４に進め、図１２で示すページ制御コマンドのページ番号を参照し、印刷中のページ番号を示すデータをＲＡＭ１７に格納する（ステップＳ２６０４）。また、図１２で示すページ制御コマンドの総ページ数を確認して、その値（印刷総ページ数または印刷総ページ数不明）を示すデータをＲＡＭ１７に格納する（ステップＳ２６０５）。
【０１６６】
そして、ステップＳ２６０４でＲＡＭ１７に格納した印刷中のページ番号とステップＳ２６０５でＲＡＭ１７に格納した印刷総ページ数とが同じ値であるか否かをチェックし（ステップＳ２６０６）、同じである場合には処理をステップＳ２６０７に進め、印刷総ページ数が奇数であるか否かをチェックし（ステップＳ２６０７）、奇数である場合には処理をステップＳ２６０８に進め、図１２で示すページ制御コマンドの開始／終了を参照し、その値（開始または終了を示す値）をＲＡＭ１７に格納する（ステップＳ２６０８）。
【０１６７】
そして、ステップＳ２６０８でＲＡＭ１７に格納した値が０００１［ＨＥＸ］であるのか否かをチェックし（ステップＳ２６０９）、０００１［ＨＥＸ］である場合には処理をステップＳ２６１０に進め、上記ステップＳ２４０４でＲＡＭ１７に格納された排紙制御を参照し（ステップＳ２６１０）、排紙制御が１０００［ＨＥＸ］であるのか否かをチェックし（ステップＳ２６１１）、１０００［ＨＥＸ］の場合には、奇数ページ印刷の場合、最終ページを印刷装置３内で自動両面ユニット１０を通して自動的に排紙する処理を行うので、処理をステップＳ２６１２に進め、自動両面ユニット１０を通して記録紙（用紙）を自動的に排紙し（ステップＳ２６１２）、図２２のフローチャートにリターンする。
【０１６８】
一方、ステップＳ２６１１において、排紙制御が１０００［ＨＥＸ］ではない場合には処理をステップＳ２６１３に進め、排紙制御が２０００［ＨＥＸ］であるのか否かをチェックし（ステップＳ２６１３）、２０００［ＨＥＸ］である場合には、３ページ以上の奇数ページの印刷の場合、最終ページを印刷装置３内で自動両面ユニット１０を通して自動的に排紙する処理を行うので、処理をステップＳ２６１４に進め、上記ステップＳ２６０５でＲＡＭ１７に格納した印刷総ページ数が３ページ以上であるのか否かをチェックし、３ページ以上である場合には処理をステップＳ２６１２に進め、自動両面ユニット１０を通して記録し（用紙）を自動的に排紙する。
【０１６９】
一方、ステップＳ２６０３において印刷モードが００３０［ＨＥＸ］ではない場合、ステップＳ２６０６においてステップＳ２６０４でＲＡＭ１７に格納した印刷中のページ番号とステップＳ２６０５でＲＡＭ１７に格納した印刷総ページ数とが同じ値ではない場合、ステップＳ２６０７において印刷総ページ数が奇数ではない場合、ステップＳ２６０９においてステップＳ２６０８でＲＡＭ１７に格納した値が０００１［ＨＥＸ］ではない場合、ステップＳ２６１３において排紙制御が２０００［ＨＥＸ］ではない場合、ステップＳ２６１４において上記ステップＳ２６０５でＲＡＭ１７に格納した印刷総ページ数が３ページよりも少ない場合には何れも、図２２のフローチャートにリターンする。
【０１７０】
ここで、図２５のステップＳ２５０７における用紙回転軸、用紙タイプ、印刷の向きの設定に基づいて図１１で示す印字パルス制御コマンドの印字パルスデータを変更する処理に関して具体的な例を挙げて説明する。
【０１７１】
図２９はＲＡＭ１７のメモリマップの一部を表す図である。同図において、印字パルス制御コマンド先頭アドレスは印刷装置３のＲＡＭ１７のアドレス０ｘ８０００００００であり、ＰＣ１から印刷装置３に送られてくる印字パルス制御コマンドに含まれているシアン、マゼンタ、黄、黒の印字パルス制御コマンドを表す。同図では左上から右方向に５ドットの黒データが続き、それ以降全てが白（データ無し）である印刷画像データの印字パルス制御コマンドを表している。印字パルスデータにおいて、印字パルスを発生させるビットがセットされ、印字パルスを発生させないビットがクリアされている。印字パルス制御コマンド最後尾アドレスは０ｘ８０００８２１５である。
【０１７２】
今、図２９に示すメモリマップに格納されている印刷画像データがＰＣ１から印刷装置３に送られてくるようなケースにおいて、事前に片面／両面印刷制御コマンドにより、用紙回転軸が用紙面に対して垂直軸で回転を表す３０００［ＨＥＸ］、用紙タイプが縦長を表す０１００［ＨＥＸ］、印刷の向きが縦を表す００１０［ＨＥＸ］と指定されている時、左上から右方向に５ドット続いていた黒データが用紙面に対して垂直軸で１８０度回転され、５ドットの黒データが右下から左方向に続くような印刷結果となるように、印字パルス制御コマンドの印字パルスデータを変更する処理を行う。すなわち、アドレス０ｘ８０００６１６８のデータをＦ８から００に変更し、アドレス０ｘ８０００８２１５のデータを００から１Ｆに変更する。そして、この変更された印字パルスデータに従って記録紙（用紙）に印字する。
【０１７３】
＜メモリマップについて＞
次に、図２８に示すメモリマップを参照して、ＰＣ１、印刷装置３から成るシステムで読み出し可能なデータ処理プログラムの構成について説明する。
【０１７４】
図２８は、このようなシステムで読み出し可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを示す図である。なお、特に図示しないが、記憶媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報、作成者等もこの記憶媒体に記憶され、かつ、プログラム読み出し側のＯＳ等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【０１７５】
同図において、６４は記憶媒体であり、ここではＰＣ１のハードディスクドライブ部（ＨＤＤ）１２０２または印刷装置３のＲＯＭ１６で構成されているものとする。６５はディレクトリ情報管理部であり、各種プログラムに従属するデータがこのディレクトリ情報管理部６５で管理されている。６６はプログラム格納部であり、各種プログラムを情報処理装置（ＰＣ１）にインストールするためのプログラムや、インストールするプログラムが圧縮されている場合に解凍するためのプログラム、あるいは、印刷装置３を制御するプログラム等が格納されている。
【０１７６】
なお、図１７〜図２１、図３０〜３５にそれぞれ示すプリンタドライバ５０における処理の各フローチャート、あるいは、図２２〜図２６にそれぞれ示す印刷装置３における処理の各フローチャートの実行によって実現できる各機能が、外部からインストールされるプログラムによって、情報処理装置（ＰＣ１）あるいは印刷装置３によって実現されるようにしてもよい。
【０１７７】
そして、その場合、ＣＤ−ＲＯＭやフラッシュメモリやフレキシブルディスク等の記憶媒体により、あるいはネットワークを介して外部の記憶媒体から、プログラムを含む情報群がＰＣ１や印刷装置３に供給される場合でも、本発明は適用されるものである。
【０１７８】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【０１７９】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１８０】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１８１】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【０１８２】
なお、本実施形態では、プリンタドライバ５０で生成された片面／両面印刷制御コマンドの回転制御で指定された値により、印刷装置３内の印字パルス制御で印字パルスデータを変更して回転制御を行ったが、この例に限られることなく、例えば、プリンタドライバ５０のグラフィックスドライバ３４で回転制御を行うことで、同様な印刷結果が得られるシステムを実現することができる。
【０１８３】
また、本実施形態では、印刷装置３としてカラーインクジェットプリンタを用いたが、これに限定するものではなく、例えば、モノクロＬＢＰ等の任意のプリンタを使用することができる。また、印刷装置３は単独の装置に限定するものではなく、複合機が有する印刷機構部分として印刷装置３を適用するようにしても良い。
【０１８４】
また、上記ＰＣ１の代わりに、ＤＶＤビデオプレーヤ、ゲーム機、セットトップボックス、インターネット家電等、同様な使用方法が可能な任意の端末を用いても良い。
【０１８５】
また、ＯＳはWindows（登録商標） XPに限定するものではない。よって他のＯＳを用いる場合にはアプリケーションソフトウェアやダイアログ、及びその操作方法などは適宜そのＯＳに依存したものとなる。
【０１８６】
また、本実施形態ではＰＣ１と印刷装置３とはＵＳＢケーブルを用いて接続しているが、これに限定するものではなく、例えば、Ethernet（登録商標）、無線ＬＡＮ、IEEE1394、Bluetooth、IrDA、パラレル、シリアル等の任意の通信手段を用いるようにしても良い。
【０１８７】
また、本実施形態では、図３１に示す自動判別自動両面印刷の処理において、「ユーザ名の確認」→「アプリケーション名の確認」→「時刻の確認」→「印刷設定と印刷画像データの種類の確認」の結果が自動判別継続の場合に、図２１に示す自動判別自動両面印刷実行の処理を行う例を挙げたが、この例に限られることなく、使用環境に応じて、例えば、ユーザ名の確認が不要な場合は、図３１のステップＳ３１０１とＳ３１０２の処理を実行せず、ステップＳ３１０３の処理から実行することで、その使用環境に合わせて効率良く最適な自動判別自動両面印刷を行うことができる。
【０１８８】
また、同じユーザの連続するジョブの裏表が揃うようにしたい場合は、図３１でステップＳ３１０１とステップＳ３１０２とステップＳ３１０９とステップＳ３１１０のみを実行するようにすればよい。
【０１８９】
また、所定時間内の連続するジョブの裏表が揃うようにしたい場合は、図３１でステップＳ３１０５とステップＳ３１０６とステップＳ３１０９とステップＳ３１１０のみを実行するようにすればよい。
【０１９０】
また、同じユーザの所定時間内の連続するジョブの裏表が揃うようにしたい場合は、まず図３１でステップＳ３１０１とステップＳ３１０２を実行する。ステップＳ３１０２でＮＯの場合はステップＳ３１０５とステップＳ３１０６を実行し、ステップＳ３１０２でＹＥＳの場合はステップＳ３１０９に進む。次にステップＳ３１０６でＮＯの場合はステップＳ３１１０に進み、ステップＳ３１０６でＹＥＳの場合はステップＳ３１０９に進むようにすればよい。
【０１９１】
さらに、使用環境に応じて、例えば、ステップＳ３１０５の処理とステップＳ３１０１の処理を入れ替える等することで、自動判別処理の各確認処理の優先順位を変えることも可能であり、このような制御により、その使用環境に合わせて効率良く最適な確認処理を行うことができる。さらに、前記各確認処理以外として、同様な目的を達成する任意の確認作業を利用して、自動判別自動両面印刷の処理を行うこともできる。
【０１９２】
以上の説明により、本実施形態によって、以下のような効果を奏することができる。
【０１９３】
（１）
誤ったユーザ操作により１ページのドキュメントを自動両面印刷設定で印刷してしまっても、印刷ジョブ内の印刷画像データを解析し、その解析結果と印刷ジョブ内の印刷設定からその画像データに最適な印刷モード（片面印刷または自動両面印刷）を自動的に決定して印刷することができるので、操作性に優れ、ユーザが期待する最高の印刷結果を得ることができる。
【０１９４】
（２）
アプリケーションによっては１ページの自動両面印刷時に２ページ目を白紙（印刷画像データ無し）ページとして描画してくるケースがあるが、印刷ジョブ内の印刷画像データと印刷総ページ数からこのようなケースを自動的に判別して、１ページの片面印刷として印刷処理を行うので、操作性に優れ、高品位で高速な印刷結果を得ることができる。
【０１９５】
（３）
（１）、（２）において、その印刷ジョブが一連の自動両面印刷の印刷ジョブの内の１つとして取り扱われるものであるのか、あるいは、複数の自動両面印刷の印刷ジョブの中に紛れ込んだ通常の片面印刷の印刷ジョブであるのかを自動的に判別して、最適な排紙制御を行うので、印刷目的を満足する最適な印刷結果を得ることができ、印刷物のハンドリングに優れる。
【０１９６】
（４）
（１）、（２）において、その印刷ジョブが一連の自動両面印刷の印刷ジョブの内の１つとして取り扱われるものであるのか、あるいは、複数の自動両面印刷の印刷ジョブの中に紛れ込んだ通常の片面印刷の印刷ジョブであるのかを自動的に判別して、最適な画像処理を行うので、印刷目的を満足する最適な印刷結果を得ることができる。
【０１９７】
なお、本発明の実施形態では、パーソナルコンピュータ側のプリンタドライバで実現する例を説明したが、プリンタ側にコントローラを設け、プリンタドライバの処理をプリンタ側のコントローラで実現しても良い。
【図面の簡単な説明】
【０１９８】
【図１】本発明の実施形態に係る印刷システムの機能構成を示すブロック図である。
【図２】ＰＣ１のハードウェア構成を示すブロック図である。
【図３】印刷装置３のハードウェア構成を示すブロック図である。
【図４】ＨＤＤ１２０２にインストールされているプリンタドライバ５０の機能構成を示すブロック図である。
【図５】Ｗｉｎｄｏｗｓ（登録商標） ＸＰ ＯＳに標準のアプリケーションとして組み込まれているテキストエディタＮｏｔｅｐａｄ（Ｎｏｔｅｐａｄ．ｅｘｅ）から印刷を行う際の表示例を示す図である。
【図６】Ｐｒｉｎｔダイアログの表示例を示す図である。
【図７】プリンタドライバ５０のＵＩモジュール３５により提供されるＰｒｅｆｅｒｅｎｃｅｓダイアログのＭａｉｎシートの表示例を示す図である。
【図８】Ｐｒｅｆｅｒｅｎｃｅｓダイアログ２０のＰａｇｅ  Ｓｅｔｕｐシートを表す図である。
【図９】自動両面印刷の設定ダイアログの表示例を示す図である。
【図１０】片面／両面印刷制御コマンドを表す図である。
【図１１】印字パルス制御コマンドを表す図である。
【図１２】ページ制御コマンドを表す図である。
【図１３】片面印刷の制御コマンドの例を表す図である。
【図１４】手動両面印刷の制御コマンドの例を表す図である。
【図１５】自動両面印刷の制御コマンドの例を表す図である。
【図１６】自動両面印刷が選択されている場合に、印刷ジョブ内の印刷画像データまたは印刷設定を用いて印刷モードを決定する為に参照される印刷モード制御テーブルの構成例を示す図である。
【図１７】ＣＰＵ１２０４がプリンタドライバ５０を実行することで行われる処理のフローチャートである。
【図１８】ステップＳ１７０８における処理の詳細を示すフローチャートである。
【図１９】ステップＳ１７０９における処理の詳細を示すフローチャートである。
【図２０】ステップＳ１７１１における処理の詳細を示すフローチャートである。
【図２１】ステップＳ３１０９における処理の詳細を示すフローチャートである。
【図２２】印刷装置３が行う印刷処理のフローチャートである。
【図２３】ステップＳ２２０６における回転制御処理の詳細を示すフローチャートである。
【図２４】ステップＳ２２０７における処理の詳細を示すフローチャートである。
【図２５】ステップＳ２２１０における処理の詳細を示すフローチャートである。
【図２６】印刷装置３によるページ制御処理のフローチャートである。
【図２７】ＤＥＶＭＯＤＥ構造体の構成を示す図である。
【図２８】システムで読み出し可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを示す図である。
【図２９】ＲＡＭ１７のメモリマップの一部を表す図である。
【図３０】ステップＳ１７１２における処理の詳細を示すフローチャートである。
【図３１】ステップＳ１７１０における処理の詳細を示すフローチャートである。
【図３２】ステップＳ３１０１における処理の詳細を示すフローチャートである。
【図３３】ステップＳ３１０３における処理の詳細を示すフローチャートである。
【図３４】ステップＳ３１０５における処理の詳細を示すフローチャートである。
【図３５】ステップＳ３１０７における処理の詳細を示すフローチャートである。
【図３６】アプリケーションのグループ対応テーブルを示す図である。
【図１】
2006293990.tif 000003
【図２】
2006293990.tif 000004
【図３】
2006293990.tif 000005
【図４】
2006293990.tif 000006
【図５】
2006293990.tif 000007
【図６】
2006293990.tif 000008
【図７】
2006293990.tif 000009
【図８】
2006293990.tif 000010
【図９】
2006293990.tif 000011
【図１０】
2006293990.tif 000012
【図１１】
2006293990.tif 000013
【図１２】
2006293990.tif 000014
【図１３】
2006293990.tif 000015
【図１４】
2006293990.tif 000016
【図１５】
2006293990.tif 000017
【図１６】
2006293990.tif 000018
【図１７】
2006293990.tif 000019
【図１８】
2006293990.tif 000020
【図１９】
2006293990.tif 000021
【図２０】
2006293990.tif 000022
【図２１】
2006293990.tif 000023
【図２２】
2006293990.tif 000024
【図２３】
2006293990.tif 000025
【図２４】
2006293990.tif 000026
【図２５】
2006293990.tif 000027
【図２６】
2006293990.tif 000028
【図２７】
2006293990.tif 000029
【図２８】
2006293990.tif 000030
【図２９】
2006293990.tif 000031
【図３０】
2006293990.tif 000032
【図３１】
2006293990.tif 000033
【図３２】
2006293990.tif 000034
【図３３】
2006293990.tif 000035
【図３４】
2006293990.tif 000036
【図３５】
2006293990.tif 000037
【図３６】
2006293990.tif 000038