(57)【要約】【課題】  両面印刷時に白紙節約を行う場合に、表裏ともに白紙の場合に限り出力を行わないようにすることで、表裏がずれることがなく、ユーザの意図した通りの出力結果を得ることが可能になる。【解決手段】  印刷データを入力し、各ページのシート管理テーブルを作成していく。そして、１つの記録シートの表（おもて）、裏とも印刷データが存在しないシート管理テーブルが生成された場合（Ｓ１０８）、そのシート管理テーブルを削除する（Ｓ１０９）。【選択図】  図１０
2006018748.tif 000002
【特許請求の範囲】
【請求項１】
両面印刷可能なプリンタと通信可能であって、当該プリンタに両面印刷のための印刷データを出力する情報処理装置であって、
上位処理から渡された印刷対象のデータに基づき、各ページの印刷データを生成する印刷データ生成手段と、
生成された印刷データを前記プリンタに出力するための順序を管理する送信管理データを作成する管理データ作成手段と、
作成された管理データに基づき、１つの記録媒体の表、裏の両面が白紙になるか否かを判定する判定手段と、
該判定手段で両面とも白紙になると判定した場合、前記送信管理データから該当する印刷データを削除し、前記プリンタへの印刷データの出力処理を行う出力制御手段と
を備えることを特徴とする情報処理装置。
【請求項２】
更に、同一記録媒体の表裏印刷が成功したことを印刷装置から通知されるまで、印刷データを保持する手段と備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
更に、前記プリンタよりエラーが通知された場合、当該エラーが発生したページの印刷データを再送信する際に、同一記録媒体の表裏両面のうちちょうど一面だけ印刷が成功していた場合には、成功していた一面を含む表裏両面の印刷データを再送信することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記プリンタがフェースダウン排紙トレイに排紙する装置である場合、表面のページのデータよりも裏面のページのデータを先行して出力することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記プリンタの記録媒体反転のための経路上に少なくとも２以上の記録媒体が滞留可能な場合、当該滞留枚数分に応じて複数の表面の印刷と、複数の裏面の印刷のために印刷順序を並び替えることを特徴とする請求項１に記載の情報処理装置。
【請求項６】
両面印刷可能なプリンタと通信可能であって、当該プリンタに両面印刷のための印刷データを出力する情報処理装置の制御方法であって、
上位処理から渡された印刷対象のデータに基づき、各ページの印刷データを生成する印刷データ生成工程と、
生成された印刷データを前記プリンタに出力するための順序を管理する送信管理データを作成する管理データ作成工程と、
作成された管理データに基づき、１つの記録媒体の表、裏の両面が白紙になるか否かを判定する判定工程と、
該判定工程で両面とも白紙になると判定した場合、前記送信管理データから該当する印刷データを削除し、前記プリンタへの印刷データの出力処理を行う出力制御工程と
を備えることを特徴とする情報処理装置の制御方法。
【請求項７】
両面印刷可能なプリンタと通信可能であって、当該プリンタに両面印刷のための印刷データを出力する情報処理装置用のコンピュータプログラムであって、
上位処理から渡された印刷対象のデータに基づき、各ページの印刷データを生成する印刷データ生成手段と、
生成された印刷データを前記プリンタに出力するための順序を管理する送信管理データを作成する管理データ作成手段と、
作成された管理データに基づき、１つの記録媒体の表、裏の両面が白紙になるか否かを判定する判定手段と、
該判定手段で両面とも白紙になると判定した場合、前記送信管理データから該当する印刷データを削除し、前記プリンタへの印刷データの出力処理を行う出力制御手段
として機能することを特徴とするコンピュータプログラム。
【請求項８】
請求項７に記載のコンピュータプログラムを格納することを特徴とするコンピュータ可読記憶媒体。
【請求項９】
プリンタに出力される両面印刷のための印刷データを生成する情報処理装置であって、
１つの記録媒体の表、裏の両面が白紙になるか否かを判定する判定手段と、
前記判定手段により両面とも白紙にならないと判定された場合、前記プリンタが白紙節約を行わない印刷データを生成し、前記判定手段で両面とも白紙になると判定された場合、前記プリンタが白紙節約機能を行う印刷データを生成する生成手段とを備えることを特徴とする情報処理装置。
【請求項１０】
プリンタに出力される両面印刷のための印刷データを生成する情報処理装置であって、
見開きの両ページが白紙になるか否かを判定する判定手段と、
前記判定手段により見開きの両ページが白紙になると判定されなかった場合、前記プリンタが白紙節約を行わない印刷データを生成し、前記判定手段で見開きの両ページが白紙になると判定された場合、前記プリンタが白紙節約を行う印刷データを生成する生成手段とを備えることを特徴とする情報処理装置。
【請求項１１】
プリンタに出力される両面印刷のための印刷データを生成する情報処理装置であって、
シート単位で白紙節約するか、見開き単位で白紙節約するか判別する判別手段と、
前記判別手段によりシート単位で白紙節約すると判別された際、シートの両面とも白紙にならないと判定された場合、前記プリンタが白紙節約を行わない印刷データを生成し、シートの両面とも白紙になると判定された場合、前記プリンタが白紙節約機能を行う印刷データを生成し、前記判別手段により見開き単位で白紙節約すると判別された際、見開きの両ページが白紙になると判定されなかった場合、前記プリンタが白紙節約を行わない印刷データを生成し、見開きの両ページが白紙になると判定された場合、前記プリンタが白紙節約を行う印刷データを生成する生成手段とを備えることを特徴とする情報処理装置。
【請求項１２】
プリンタに出力される両面印刷のための印刷データを生成する情報処理装置の制御方法であって、
１つの記録媒体の表、裏の両面が白紙になるか否かを判定する判定ステップと、
前記判定ステップにより両面とも白紙にならないと判定された場合、前記プリンタが白紙節約を行わない印刷データを生成し、前記判定ステップで両面とも白紙になると判定された場合、前記プリンタが白紙節約機能を行う印刷データを生成する生成ステップとを備えることを特徴とする制御方法。
【請求項１３】
プリンタに出力される両面印刷のための印刷データを生成する情報処理装置の制御方法であって、
見開きの両ページが白紙になるか否かを判定する判定ステップと、
前記判定ステップにより見開きの両ページが白紙になると判定されなかった場合、前記プリンタが白紙節約を行わない印刷データを生成し、前記判定ステップで見開きの両ページが白紙になると判定された場合、前記プリンタが白紙節約を行う印刷データを生成する生成ステップとを備えることを特徴とする制御方法。
【請求項１４】
プリンタに出力される両面印刷のための印刷データを生成する情報処理装置の制御方法であって、
シート単位で白紙節約するか、見開き単位で白紙節約するか判別する判別ステップと、
前記判別ステップによりシート単位で白紙節約すると判別された際、シートの両面とも白紙にならないと判定された場合、前記プリンタが白紙節約を行わない印刷データを生成し、シートの両面とも白紙になると判定された場合、前記プリンタが白紙節約機能を行う印刷データを生成し、前記判別ステップにより見開き単位で白紙節約すると判別された際、見開きの両ページが白紙になると判定されなかった場合、前記プリンタが白紙節約を行わない印刷データを生成し、見開きの両ページが白紙になると判定された場合、前記プリンタが白紙節約を行う印刷データを生成する生成ステップとを備えることを特徴とする制御方法。
【請求項１５】
プリンタに出力される両面印刷のための印刷データを生成する情報処理装置で実行されるコンピュータプログラムであって、
１つの記録媒体の表、裏の両面が白紙になるか否かを判定する判定ステップと、
前記判定ステップにより両面とも白紙にならないと判定された場合、前記プリンタが白紙節約を行わない印刷データを生成し、前記判定ステップで両面とも白紙になると判定された場合、前記プリンタが白紙節約機能を行う印刷データを生成する生成ステップとを備えることを特徴とするコンピュータプログラム。
【請求項１６】
プリンタに出力される両面印刷のための印刷データを生成する情報処理装置で実行されるプログラムであって、
見開きの両ページが白紙になるか否かを判定する判定ステップと、
前記判定ステップにより見開きの両ページが白紙になると判定されなかった場合、前記プリンタが白紙節約を行わない印刷データを生成し、前記判定ステップで見開きの両ページが白紙になると判定された場合、前記プリンタが白紙節約を行う印刷データを生成する生成ステップとを備えることを特徴とするコンピュータプログラム。
【請求項１７】
プリンタに出力される両面印刷のための印刷データを生成する情報処理装置で実行されるコンピュータプログラムであって、
シート単位で白紙節約するか、見開き単位で白紙節約するか判別する判別ステップと、
前記判別ステップによりシート単位で白紙節約すると判別された際、シートの両面とも白紙にならないと判定された場合、前記プリンタが白紙節約を行わない印刷データを生成し、シートの両面とも白紙になると判定された場合、前記プリンタが白紙節約機能を行う印刷データを生成し、前記判別ステップにより見開き単位で白紙節約すると判別された際、見開きの両ページが白紙になると判定されなかった場合、前記プリンタが白紙節約を行わない印刷データを生成し、見開きの両ページが白紙になると判定された場合、前記プリンタが白紙節約を行う印刷データを生成する生成ステップとを備えることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は記録媒体の両面に印刷する技術に関するものである。
【背景技術】
【０００２】
従来、プリンタにおいて、印刷するべき画像が存在しないページがあった場合に、白紙が出力されるという無駄を省くために、印刷するべき画像が存在しないページを出力しない、いわゆる白紙節約機能がある（特許文献１）。
【特許文献１】特公平５−１９４７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記の方法によれば、ページ単位で白紙判定を行うため、両面印刷時にあるページが白紙であった場合に出力が行われないためにページがずれてしまい、その結果裏面に印刷が行われるべき偶数ページ目が表面に、表面に印刷が行われるべき奇数ページ目が裏面に印刷され、ユーザの意図しない出力結果になる。例えば、図１５（ａ）に示すように、４ページ目と５ページ目を見開きにしたい場合に、２ページ目（あるいは３ページ目）が白紙であるために出力されない場合には、図１５（ｂ）に示すように、ページがずれて５ページ目と６ページ目が見開きになってしまう。
【０００４】
本発明は係る問題点に鑑みなされたものであり、ページ単位ではなく、１記録媒体単位に白紙になるか否かを判定することで、利用者が設定した見開きページ等の順序を維持しつつ、且つ、不要な白紙出力を抑制する技術を提供しようとするものである。
【課題を解決するための手段】
【０００５】
かかる課題を解決するため、例えば本発明の情報処理装置は以下の構成を備える。すなわち、
両面印刷可能なプリンタと通信可能であって、当該プリンタに両面印刷のための印刷データを出力する情報処理装置であって、
上位処理から渡された印刷対象のデータに基づき、各ページの印刷データを生成する印刷データ生成手段と、
生成された印刷データを前記プリンタに出力するための順序を管理する送信管理データを作成する管理データ作成手段と、
作成された管理データに基づき、１つの記録媒体の表、裏の両面が白紙になるか否かを判定する判定手段と、
該判定手段で両面とも白紙になると判定した場合、前記送信管理データから該当する印刷データを削除し、前記プリンタへの印刷データの出力処理を行う出力制御手段とを備える。
【発明の効果】
【０００６】
本発明によれば、両面印刷時に白紙節約を行う場合に、表裏ともに白紙の場合に限り出力が行われないため、表裏がずれることがなく、ユーザの意図した通りの印刷結果を得ることが可能になる。
【発明を実施するための最良の形態】
【０００７】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【０００８】
［第１実施形態］
図１は本発明装置の構成を示すブロック図である。図中、１はパーソナルコンピュータ等の汎用コンピュータ（以下、ＰＣ）であり、ＣＰＵ、メモリ、ハードディスク、フロッピー（登録商標）ディスクドライブ、キーボード、マウス（登録商標）のポインティングデバイス、モニタ、ネットワークインタフェース等のハードウェア（不図示）を備える。２はオペレーティングシステム（ＯＳ）であり、ＰＣ１が備えるハードウェア、およびアプリケーション３、プリンタドライバ４、ランゲージモニタ５、ポートドライバ６などのソフトウェアを管理する。アプリケーション３は、例えばワードプロセッサのようなアプリケーションソフトウェアであり、操作者の指示に従って文書の作成・印刷などを行う。４はプリンタドライバであり、アプリケーション３が発行した印刷指令をオペレーティングシステム２を経て受け取り、該印刷指令をランゲージモニタ５、およびプリンタ７が解釈可能なプリンタコマンドに変換する。５はランゲージモニタであり、プリンタドライバ４が出力したプリンタコマンドを受け取り、ポートドライバ６を経由してプリンタ７に送信する。６およびはポートドライバであり、ランゲージモニタ５が出力したプリンタコマンドを、たとえばＵＳＢインタフェースを経てプリンタ７に送信するとともに、プリンタ７からステータスを受信した場合にはランゲージモニタ５に出力する。７はプリンタであり、ポートドライバ６から受信したプリンタコマンドに従って印刷を行うもので、内部に記録紙を反転する搬送路が設けられ、片面は勿論、両面についても印刷することが可能である。
【０００９】
図２はプリンタ７の構成を示すブロック図である。図中、２１はたとえばＵＳＢインタフェースのごときホストインタフェースであり、ＰＣ１からプリンタコマンドを受信する。２２はＦＩＦＯ（ファーストインファーストアウト）メモリであり、ホストインタフェース２１から受信した画像データを格納する。復号回路２３は、ＦＩＦＯメモリ２２に記憶された画像データを復号し、プリンタエンジン２４に出力する。プリンタエンジン２４は、レーザビームプリンタエンジンであり、制御回路２５の指示により、復号回路２３が出力した画像データに従って印刷を行う。２５は制御回路であり、例えば１チップＣＰＵで構成され、ネットワークインタフェース２１、ＦＩＦＯメモリ２２、復号回路２３およびプリンタエンジン２４の制御を行う。
【００１０】
以下、実施形態におけるＰＣ１の印刷処理について説明する。
【００１１】
操作者がＰＣ１側でアプリケーション３を操作して印刷を指示すると、印刷指示するためのウインドウ（不図示）が表示される。このウインドウ上に詳細設定ボタン（不図示）を操作すると、図１６に示す設定ウインドウ１６０が表示される。図示の設定ウインドウはプリンタドライバ４の一部の処理である。
【００１２】
図示に示すように、設定ウインドウ１６０には、印刷するプリンタ名を表示する領域１６１（「プロパティ」ボタンをクリックすると更に詳細情報及び設定ウインドウが表示される）、印刷用紙の向きを指定する領域１６２、片面か両面かを選択するための領域１６３、及び、白紙節約するか否かを設定する領域１６４が含まれる。
【００１３】
領域１６３における片面／両面の選択は、ラジオボタン形式となっている（デフォルトでは片面が選択状態）。また、両面を選択した場合には記録紙の長辺側を綴じにするか、短辺側をとじるかのいずれかを選択する。この選択もラジオボタン形式となっている（デフォルトは長辺綴じ）。
【００１４】
領域１６４における白紙節約を行うか否かは、チェックボックス形式で指定するものとした（デフォルトでチェック）。
【００１５】
白紙節約が行い、尚且つ、両面印刷が選択された場合、実施形態で説明する両面印刷時の白紙節約モードが機能することになる。
【００１６】
最後に「ＯＫ」ボタンがクリックされると、設定内容が有効になり、本ウインドウ１６０は画面から消え、印刷開始指示を行うウインドウに戻る。尚、「キャンセル」ボタンがクリックされた場合には、設定内容が全て破棄され、ウインドウ１６０を表示する以前の設定が有効になる。
【００１７】
さて、印刷開始指示を行うウインドウにて、印刷開始を指示すると、実施形態におけるプリンタドライバ４、及び、ランゲージモニタ５がそれぞれ起動し、一連の印刷ジョブが完了した場合に、その処理を終了する。以下、実施形態におけるより詳細を説明する。
【００１８】
印刷開始指示すると、アプリケーション３からオペレーティングシステム２を経由してプリンタドライバ４に印刷指令が渡される。プリンタドライバ４はアプリケーション３から発行された印刷指令に基づき、画像データに変換して圧縮し、圧縮した画像データを、両面印刷の有無、白紙節約指定の有無、印刷部数の指定などを指定するジョブ情報コマンド、用紙サイズ、用紙タイプ、給紙元、排紙先、画像データのラインの長さとライン数などを指定するページ情報コマンド、ページの終了を示すとともに該ページが白紙であるか否かを示すページ終了コマンド、およびジョブの終了を通知するジョブ終了コマンドとともに出力する。なお、長辺から給紙するいわゆる横送りを行う用紙の場合には、画像を２７０度回転する必要がある。また、両面印刷においては、綴じる辺が長辺か短辺かによって長辺綴じ、短辺綴じの２種類があり、長辺綴じで短辺から給紙するいわゆる縦送りである場合、および短辺綴じで長辺から給紙するいわゆる横送りである場合には、裏面のページの画像をさらに１８０度回転する必要があるので、プリンタドライバ４はあらかじめ、綴じ方向と給紙方向に応じて、必要な場合には画像を回転する。
【００１９】
また、本実施形態においては、排紙先は常にフェースダウントレイが指定されるものとする。また、プリンタドライバ４は、ジョブ情報コマンドを出力する際に、ユーザの指示に基づいて白紙節約の指定を行う。また、プリンタドライバ４は、ページ終了コマンドを出力する際に、該ページが白紙であったか否か判定し、白紙であった場合には、該ページが白紙であることを示す情報をページ出力コマンドに設定する。
【００２０】
プリンタコマンドが出力されると、オペレーティングシステム２はランゲージモニタ５に出力されたプリンタコマンドを順次ランゲージモニタに引き渡す。ランゲージモニタ５は、受け取ったプリンタコマンドを順次プリンタ７に送信する。なおランゲージモニタ５は画像データコマンドをプリンタ７に送信する前に、ステータス要求コマンドを送信し、プリンタ７のステータスを取得して、画像データコマンドが送信可能であることを確認する。
【００２１】
制御回路２５は、ページ終了コマンドを受信すると、画像データをＦＩＦＯメモリ２２に格納する。制御回路２５はまた、印字開始コマンドを受信すると、プリンタエンジン２４に対して印刷開始を指示する。プリンタエンジン２４は印刷開始を指示されると、給紙を行い、用紙が所定の位置に達したときに画像データの出力を要求する。画像データの出力が要求されると、復号回路２３はＦＩＦＯメモリ２２から圧縮された画像を読み出し、復号した元の画像データをプリンタエンジン２４に出力する。このときＦＩＦＯメモリ２２から読み出された画像データは、ＦＩＦＯメモリ２２から取り除かれる。
【００２２】
ランゲージモニタ５はまた、取得したプリンタステータスがページの印刷が正常終了したことを示した場合には、該当するページメモリを解放する。ランゲージモニタ５はまた、取得したプリンタステータスがエラーを示した場合には、印刷が正常終了していないページを含むシートから再送信を試みる。ここでシートとは、一枚の紙に相当し、片面印刷においては１ページによって、両面印刷においては２ページによって構成される。
【００２３】
このようにしてジョブの全ページのプリンタコマンドを転送し終えると、ランゲージモニタ５はジョブの全シートの印刷完了を待ち、ジョブの全シートの印刷が完了した場合には、ジョブを終了する。
【００２４】
次に、図３および図４を参照し、ランゲージモニタ５が使用するシート管理テーブル１０１のデータ構造を説明する。図３は片面３ページのジョブの例を示す。図４は両面６ページのジョブの例を示す。シート管理テーブル１０１には、次のシート管理テーブル１０１のアドレス（ポインタ）を示す「次のシート」アドレス１０２、表（おもて）面ページのデータバッファのアドレスを示す「表面ページ」アドレス１０３、裏面ページのデータバッファのアドレスを示す「裏面ページ」アドレス１０４、未送信の部数を示す「未送信カウンタ」１０５、印刷未完了の部数を示す「未完了カウンタ」１０６を含み、オペレーティングシステム２から受信した順に、先頭シート管理テーブルアドレス１０７、および次のシートアドレス１０２によって線形リストを構成する。「次のシート」アドレス１０２がＮＵＬＬである場合には、次のシート管理テーブル１０１が存在しないことを示す。また、表面ページアドレス１０３がＮＵＬＬである場合には、そのシートはジョブの終了を示す空シートであることを示す。また、裏面ページアドレス１０４がＮＵＬＬである場合には、そのシートには裏面ページが存在せず、片面印刷を行うシートであることを示す。
【００２５】
次に図１０のフローチャートに従って、ランゲージモニタ５のデータ受信処理の詳細を説明する。なお。以下の説明において、ユーザはアプリケーション上で印刷する際に、白紙節約を行うか否かを指示するものとして説明する（デフォルトは白紙節約とする）。
【００２６】
まず、ステップＳ１にて、オペレーティングシステム２から渡されたプリンタコマンドをバッファにコピーする。次にステップＳ２にて、一つのコマンドの受信が完了しているか判定する。コマンドが途中で切れており、一つのコマンドの受信が完了していない場合には直ちに処理を終了し、次のコマンド受信に備える。一つのコマンドの受信が完了している場合には、ステップＳ３にて、受信したコマンドがジョブ情報コマンドであるか判定する。受信したコマンドがジョブ情報コマンドであった場合には、ステップＳ４にて受信したジョブ情報コマンドをワーク領域にコピーし、ジョブ情報コマンドをバッファから削除し、処理を終了する。
【００２７】
また、ステップＳ３にて受信したコマンドがジョブ情報コマンドではないと判定した場合には、ステップＳ５に進み、受信したコマンドがページ終了コマンドであるか判定する。受信したコマンドがページ終了コマンドであった場合には、ステップＳ６にて、ジョブ情報コマンドにより両面印刷が指定されているか判定する。ジョブ情報コマンドにより両面印刷が指定されていない場合には、ステップＳ１０１にて白紙節約が指定されているか判定する。白紙節約が指定されていない場合にはステップＳ７に進む。白紙節約が指定されている場合には、ステップＳ１０２にて、現在のページが白紙であるか判定する。現在のページが白紙でない場合にはステップＳ７に進む。現在のページが白紙である場合には、白紙節約を行うべき場合なので、ステップＳ１０３にて現在のページを格納しているメモリ領域を解放し、処理を終了する。ステップＳ７では、バッファ内の１ページ分のコマンドをコピーし、コピーしたコマンドをバッファから削除し、表面ページアドレス１０３をコピーしたコマンドに、裏面ページアドレス１０４をＮＵＬＬに、未完了カウンタ１０６をジョブ情報コマンドにより指定された印刷部数に設定したシート管理テーブル１０１を、シート管理テーブル１０１の線形リストの末尾に追加し、処理を終了する。
【００２８】
ステップＳ６にて、ジョブ情報コマンドにより両面印刷が指定されている場合には、ステップＳ８にて、保留ページの有無を判定する。ここで、保留ページは、両面印刷の表面のページを一時的に保持したものである。保留ページがない場合には、ステップＳ１１にて、バッファ内の１ページ分のコマンドをコピーし、コピーしたコマンドをバッファから削除し、コピーしたコマンドのアドレスを保留ページとして記憶し、処理を終了する。
【００２９】
ステップＳ８にて、保留ページがある場合には、ステップＳ９にて、表面になるべき保留ページと、裏面になるべき現在のページの組み合わせで両面印刷が可能であるか判定する。
【００３０】
この判定の条件としては、例えば、次のようなものである。
・表面のページ情報コマンドで指定される用紙サイズが両面印刷可能なサイズ、例えばＡ３、Ｂ４、Ａ４、Ｂ５のいずれかでない場合には両面印刷が可能でない。
・表面のページ情報コマンドで指定される用紙タイプが両面印刷可能なタイプ、例えば普通紙でない場合には両面印刷が可能でない。
・裏面のページ情報コマンドで指定される用紙サイズが、表面のページ情報コマンドで指定される用紙サイズと一致しない場合には両面印刷が可能でない。
・裏面のページ情報コマンドで指定される用紙タイプが、表面のページ情報コマンドで指定される用紙タイプと一致しない場合には両面印刷が可能でない。
・裏面のページ情報コマンドで指定される給紙元指定が、表面のページ情報コマンドで指定される給紙元指定と一致しない場合には両面印刷が可能でない。
・上記のいずれにも該当しない場合には両面印刷が可能である。
【００３１】
ステップＳ９にて、両面印刷が可能であると判定された場合には、ステップＳ１０７にて白紙節約が指定されているか判定する。白紙節約が指定されていない場合にはステップＳ１２に進む。白紙節約が指定されている場合には、ステップＳ１０８にて、保留ページおよび現在のページがともに白紙であるか判定する。保留ページまたは現在のページのいずれかが白紙でない場合にはステップＳ１２に進む。保留ページおよび現在のページがともに白紙である場合には、白紙節約を行うべき場合なので、ステップＳ１０９にて保留ページおよび現在のページを格納しているメモリ領域を解放し、次にステップＳ１３にて、保留ページアドレスに保留ページがないことを示すＮＵＬＬを格納し、処理を終了する。
【００３２】
ステップＳ１２では、バッファ内の１ページ分のコマンドをコピーし、コピーしたコマンドをバッファから削除し、表面ページアドレス１０３を保留ページアドレスに、裏面ページアドレス１０４をコピーしたコマンドに、未完了カウンタ１０６をジョブ情報コマンドにより指定された印刷部数に設定したシート管理テーブル１０１を、シート管理テーブル１０１の線形リストの末尾に追加する。この際に、両面印刷を行うことを指示するために、裏面ページアドレス１０４が指す裏面ページのページ情報コマンドの排紙先指定を両面ユニットに、また表面ページアドレス１０３が指す裏面ページのページ情報コマンドの給紙元指定を両面ユニットに、それぞれ変更する。次にステップＳ１３にて、保留ページアドレスに保留ページがないことを示すＮＵＬＬを格納し、処理を終了する。
【００３３】
ステップＳＳ９にて、両面印刷が可能でないと判定された場合には、ステップＳ１０４にて白紙節約が指定されているか判定する。白紙節約が指定されていない場合にはステップＳ１０に進む。白紙節約が指定されている場合には、ステップＳ１０５にて、保留ページが白紙であるか判定する。保留ページが白紙でない場合にはステップＳ１０に進む。また、保留ページが白紙である場合には、表裏とも白紙を意味し、且つ、白紙節約を行うべき場合であるので、ステップＳ１０６にて保留ページを格納しているメモリ領域を解放し、次にステップＳ１１にて、バッファ内の１ページぶんのコマンドをコピーし、コピーしたコマンドをバッファから削除し、コピーしたコマンドのアドレスを保留ページとして記憶し、処理を終了する。
【００３４】
ステップＳ１０では、保留ページを片面印刷するとともに現在のページを保留ページとするために、バッファ内の１ページ分のコマンドをコピーし、コピーしたコマンドをバッファから削除し、表面ページアドレス１０３を保留ページアドレスに、裏面ページアドレス１０４をＮＵＬＬに、未完了カウンタ１０６をジョブ情報コマンドにより指定された印刷部数に設定したシート管理テーブル１０１を、シート管理テーブル１０１の線形リストの末尾に追加する。次にステップＳ１１にて、バッファ内の１ページ分のコマンドをコピーし、コピーしたコマンドをバッファから削除し、コピーしたコマンドのアドレスを保留ページとして記憶し、処理を終了する。
【００３５】
ステップＳ５にて、受信したコマンドがページ終了コマンドでなかった場合には、ステップＳ１４にて、受信したコマンドがジョブ終了コマンドであるか判定する。受信したコマンドがジョブ終了コマンドでなかった場合は、受信したコマンドがページ情報コマンドまたは画像データである場合であり、１ページ分のコマンドをまだ受信し終えてない場合なので、受信したコマンドをそのままバッファに残し、処理を終了する。
【００３６】
ステップＳ１４にて、受信したコマンドがジョブ終了コマンドであった場合は、ステップＳ１５にて保留ページの有無を判定する。保留ページがない場合には、直接ステップＳ１８に進む。保留ページがある場合には、ステップＳ１１０にて白紙節約が指定されているか判定する。白紙節約が指定されていない場合にはステップＳ１６に進む。白紙節約が指定されている場合には、ステップＳ１１１にて、保留ページが白紙であるか判定する。保留ページが白紙でない場合にはステップＳ１６に進む。保留ページが白紙である場合には、白紙節約を行うべき場合なので、ステップＳ１１２にて保留ページを格納しているメモリ領域を解放し、ステップＳ１７に進む。
【００３７】
ステップＳ１６では、両面印刷が指定されているが、対応する裏面のページがない場合なので、片面印刷を行うために、表面ページアドレス１０３を保留ページアドレスに、裏面ページアドレス１０４をＮＵＬＬに、未完了カウンタ１０６をジョブ情報コマンドにより指定された印刷部数に設定したシート管理テーブル１０１を、シート管理テーブル１０１の線形リストの末尾に追加する。次にステップＳ１７にて、保留ページアドレスに保留ページがないことを示すＮＵＬＬを格納し、ステップＳ１８に進む。
【００３８】
ステップＳ１８では、ジョブの終了を示すために、表面ページアドレス１０３および裏面ページアドレス１０４をＮＵＬＬに設定したシート管理テーブル１０１を、シート管理テーブル１０１の線形リストの末尾に追加し、処理を終了する。
【００３９】
次に、図５および図６を参照し、ランゲージモニタ５が使用する送信データ管理テーブル１１１のデータ構造を説明する。
【００４０】
図５は片面３ページのジョブの例を、図６は両面６ページ（一枚滞留）のジョブの例をそれぞれ示している。送信データ管理テーブル１１１には、次の送信データ管理テーブル１１１のアドレスを示す次の送信データアドレス１１２、その送信データ管理テーブル１１１に対応するシート管理テーブル１０１のアドレスを示すシート管理テーブルアドレス１１３、その送信データ管理テーブル１１１の種類が片面印刷または両面印刷の表面ページ、両面印刷の裏面ページ、あるいは二枚滞留の両面印刷の場合に裏面ページが入るべき空きテーブルのいずれであるかを示す送信データ種別１１４、印刷順序を示すページ番号（不図示）を含み、後述する処理手順に従って決定される、印刷が行われる順に、先頭送信データ管理テーブルアドレス１１７、および次の送信データアドレス１１２によって線形リストを構成する。次の送信データアドレス１１２がＮＵＬＬである場合には、次の送信データ管理テーブル１１１が存在しないことを示す。実施形態では、フェースダウン排紙（片面印刷時に印刷面が下側になる排紙）を行う場合であるので、表面よりも裏面を先に印刷するため、図６において同一シートの裏面が表面に先行している。
【００４１】
次に図１４を参照し、二枚滞留交互給紙の両面印刷における、印刷順序を説明する。図１４は、二枚滞留交互給紙の両面印刷における、印刷順序とページの関係を示したテーブルである。両面印刷を行う際には、裏面を印刷後、表面の印刷を開始するまでに、用紙の前端と後端を反転させた後に、用紙を感光ドラムまで搬送する、いわゆる再給紙を行う必要があり、一枚滞留の両面印刷ではこの間印刷が行えないため、印刷速度が遅くなる。二枚滞留交互給紙の両面印刷においては、この問題を解決するために、上述の反転および再給紙を行っている時間を利用して、別のシートを印刷することにより印刷速度が遅くならないようにする。具体的には、以下のような規則に従って印刷を行う。
・同一シートの裏面印刷と表面印刷の間に、別のシートを２ページ印刷する。
・裏面印刷と表面印刷を交互に行う。
・ただし、送信順序２に対応するページはシート１に先行するシートの表面であるが、そのようなページは存在しないため印刷を行うことができず、この間時間が空く。
・また、送信順序７に対応するページはシート４の裏面であるが、そのようなページが存在しない場合には印刷を行うことができず、この間時間が空く。
・二枚滞留交互給紙の両面印刷を行う場合、シートの長さの上限は、用紙搬送路の長さなどにより制約を受けるため、例えばＡ４横送りよりも長い用紙では二枚滞留交互給紙の両面印刷を行うことができない。そのような場合には一枚滞留にて両面印刷を行う。
・二枚滞留交互給紙の両面印刷を行う場合、用紙サイズまたは用紙タイプが異なるシートを混在して印刷することはできない。
【００４２】
次に、図７、図８および図９を参照し、二枚滞留交互給紙の両面印刷における、送信データ管理テーブル１１１の構成方法を説明する。
【００４３】
図７は２ページの送信データが登録されている状態を示す。図８は４ページの送信データが登録されている状態を示す。図９は６ページの送信データが登録されている状態を示す。最初の２ページを登録したときには、図７に示すように、シート１裏面、空き、シート１表面の順に送信データ管理テーブル１１１を構成する。これらは図１４の送信順序１、３、４にそれぞれ相当する。
【００４４】
次の２ページを登録する際には、送信データ管理テーブル１１１を検索し、図８に示すように、検索された空きの送信データ管理テーブル１１１をシート２裏面ページに変更するとともに、末尾に空きの送信データ管理テーブル１１１、およびシート２表面ページの送信データ管理テーブル１１１を順に追加する。
【００４５】
その次の２ページを登録する際には、同様に送信データ管理テーブル１１１を検索し、図９に示すように、検索された空きの送信データ管理テーブル１１１をシート３裏面ページに変更するとともに、末尾に空きの送信データ管理テーブル１１１、およびシート３表面ページの送信データ管理テーブル１１１を順に追加する。このようにして、必要なだけのページを追加していくことができる。
【００４６】
次に図１１を参照し、ランゲージモニタ５の送信データ登録処理の詳細を説明する。なお、送信データ登録処理は、データ受信処理と並行に動作する。
【００４７】
送信データ登録処理が起動されるとまず、ステップＳ３１にて、シート管理テーブル１０１が存在するか判定する。具体的には先頭シート管理テーブルアドレス１０７がＮＵＬＬである場合には、シート管理テーブル１０１が存在しないので、ステップＳ３１に戻る。
【００４８】
先頭シート管理テーブルアドレス１０７がＮＵＬＬでない場合には、シート管理テーブル１０１が存在するので、ステップＳ３２にて現在のシートアドレスに先頭シート管理テーブルアドレス１０７を格納する。次にステップＳ３３にて、現在のシートアドレスが示すシート管理テーブル１０１が、ジョブの終了を示す空シートであるか判定する。具体的には表面ページアドレス１０３がＮＵＬＬでない場合には、現在のシートは空シートではないため、ステップＳ３４にて、現在のシート管理テーブル１０１の未完了カウンタ１０６を未送信カウンタ１０５にコピーする。次にステップＳ３５にて、エラー（記録紙のジャム等）が発生しているか判定する。なお、エラーが発生しているか否かを示す情報は、後述する処理手順により取得される。エラーが発生している場合には、データの送信をやり直さなければならないため、ステップＳ３１に戻る。エラーが発生していない場合には、ステップＳ３６にて、現在のシートが片面印刷するシートであるか判定する。具体的には、現在のシート管理テーブル１０１の裏面ページアドレス１０４がＮＵＬＬである場合には、現在のシートは片面印刷するシートであるため、ステップＳ３７にて送信データ管理テーブル１１１を検索する。空きの送信データ管理テーブル１１１があれば、二枚滞留の両面印刷から片面印刷に移行した場合であり、その空きを使用することはできないので、それを削除する。そして、次にステップＳ４７に進む。
【００４９】
ステップＳ３６にて、現在のシート管理テーブル１０１の裏面ページアドレス１０４がＮＵＬＬでない場合には、現在のシートは両面印刷するシートであるため、ステップＳ３８にて、二枚滞留で両面印刷が可能であるか判定する。具体的には、現在のシートの用紙サイズが、例えばＡ４またはＢ５でなかった場合には、二枚滞留で両面印刷が可能でないので、ステップＳ３９にて送信データ管理テーブル１１１を検索する。空きの送信データ管理テーブル１１１があれば、二枚滞留の両面印刷から一枚滞留の両面印刷に移行した場合であり、その空きを使用することはできないので、それを削除する。次にステップＳ４０にて、シート管理テーブルアドレス１１３を現在のシートアドレスに、送信データ種別１１４を裏面ページに設定した送信データ管理テーブル１１１を、送信データ管理テーブル１１１の線形リストの末尾に追加し、ステップＳ４７に進む。
【００５０】
ステップＳ３８にて、現在のシートの用紙サイズが、例えばＡ４またはＢ５であった場合には、二枚滞留で両面印刷が可能なので、ステップＳ４１にて送信データ管理テーブル１１１を検索する。空きの送信データ管理テーブル１１１がなければ、ステップＳ４５に進む。空きの送信データ管理テーブル１１１があった場合には、ステップＳ４２にて、空きテーブルが使用可能であるか、すなわち前のシートのページと混在して二枚滞留の両面印刷を続けることができるかを判定する。具体的には、末尾の送信データ管理テーブル１１１のページの用紙サイズおよび用紙タイプが、現在のシートの用紙サイズおよび用紙タイプとそれぞれ一致する場合には、混在して印刷を続けることが可能であり、空きテーブルが使用できるため、ステップＳ４３にて、検索された送信データ管理テーブル１１１の、シート管理テーブルアドレス１１３を現在のシートアドレスに、送信データ種別１１４を裏面ページにそれぞれ設定し、ステップＳ４６に進む。
【００５１】
ステップＳ４２にて、末尾の送信データ管理テーブル１１１のページの用紙サイズまたは用紙タイプが、現在のシートの用紙サイズまたは用紙タイプと一致しない場合には、混在して印刷を続けることが可能でなく、空きテーブルが使用できないため、ステップＳ４４にて、送信データ管理テーブル１１１を検索し、空きの送信データ管理テーブル１１１があれば、それを削除し、ステップＳ４５に進む。
【００５２】
ステップＳ４５では、シート管理テーブルアドレス１１３を現在のシートアドレスに、送信データ種別１１４を裏面ページに設定した送信データ管理テーブル１１１を、送信データ管理テーブル１１１の線形リストの末尾に追加し、ステップＳ４６に進む。
【００５３】
ステップＳ４６では、シート管理テーブルアドレス１１３をＮＵＬＬに、送信データ種別１１４を空きテーブルに設定した送信データ管理テーブル１１１を、送信データ管理テーブル１１１の線形リストの末尾に追加し、ステップＳ４７に進む。
【００５４】
ステップＳ４７では、シート管理テーブルアドレス１１３を現在のシートアドレスに、送信データ種別１１４を表面ページに設定した送信データ管理テーブル１１１を、送信データ管理テーブル１１１の線形リストの末尾に追加する。そして、ステップＳ４８にて、現在のシート管理テーブル１０１の未送信カウンタ１０５から１を減算し、次にステップＳ４９にて、現在のシート管理テーブル１０１の未送信カウンタ１０５が０であるか判定する。現在のシート管理テーブル１０１の未送信カウンタ１０５が０でない場合には、ステップＳ３５に戻り、現在のシートの送信データ登録を継続する。現在のシート管理テーブル１０１の未送信カウンタ１０５が０である場合には、そのシートの、送信データ登録が、指定された印刷部数に応じた回数行われた場合なので、ステップＳ５０にて、次のシート管理テーブル１０１が存在するか判定する。具体的には、現在のシート管理テーブル１０１の、次のシートアドレス１０２がＮＵＬＬでない場合には、次のシート管理テーブル１０１が存在するため、ステップＳ５１にて、現在のシートアドレスに現在のシート管理テーブル１０１の、次のシートアドレス１０２を格納し、次にステップＳ３３に戻り、次のシートの送信データ登録を開始する。
【００５５】
ステップＳ５０にて、現在のシート管理テーブル１０１の、次のシートアドレス１０２がＮＵＬＬである場合には、次のシート管理テーブル１０１が存在しないため、ステップＳ５２にて、エラーが発生しているか判定する。エラーが発生している場合は、ステップＳ３１に戻る。エラーが発生していない場合は、ステップＳ５０に戻り、次のシート管理テーブル１０１が追加されるか、あるいはエラーが発生するまでステップＳ５０からステップＳ５２の処理を繰り返す。
【００５６】
ステップＳ３３にて、表面ページアドレス１０３がＮＵＬＬである場合には、現在のシートはジョブの終了を示す空シートであるため、ステップＳ５２にて、エラーが発生しているか判定する。エラーが発生している場合は、ステップＳ３１に戻る。エラーが発生していない場合は、ステップＳ５４にて、印刷が完了したか判定する。具体的には、先頭シート管理テーブル１０７が、現在のシートアドレス、すなわちジョブの終了を示す空シートのアドレスと等しい場合には、印刷の完了により、後述する処理手順に従って、空シート以外のシート管理テーブル１０１が全て削除された場合なので、ステップＳ５５にてジョブ終了処理を行う。ここでは、空シートの削除など、ワーク領域を印刷前に戻す処理を行い、ステップＳ３１に戻る。
【００５７】
ステップＳ５４にて、先頭シート管理テーブル１０７が、現在のシートアドレスと等しくない場合には、印刷が完了していない場合なので、ステップＳ５３に戻り、印刷が完了するか、あるいはエラーが発生するまでステップＳ５３からステップＳ５４の処理を繰り返す。
【００５８】
次に図１２を参照し、ランゲージモニタ５のデータ送信処理の詳細を説明する。なお、データ送信処理は、データ受信処理および送信データ登録処理と並行に動作する。
【００５９】
データ送信処理が起動されるとまず、ステップＳ７１にて、送信データの有無を判定する。具体的には先頭送信データ管理テーブルアドレス１１７がＮＵＬＬである場合には、送信データ管理テーブル１１１が存在しないので、ステップＳ７１に戻る。
【００６０】
先頭送信データ管理テーブルアドレス１１７がＮＵＬＬでない場合には、送信データ管理テーブル１１１が存在するので、ステップＳ７２にて現在の送信データ管理テーブルアドレスに先頭送信データ管理テーブルアドレス１１７を格納する。次にステップＳ８６にて、データクリアコマンドをプリンタ７に送信する。プリンタ７は、データクリアコマンドを受信すると、受信済みの印刷データを破棄するとともに、内部に保持するページ番号を０に初期化する。次にステップＳ８７では、送信ページ番号に０を格納する。
【００６１】
次にステップＳ７３にて、現在の送信データ管理テーブルの送信データ種別１１４が空きテーブルであるか判定する。現在の送信データ管理テーブルの送信データ種別１１４が空きテーブルでない場合には、ステップＳ７４にて、送信ページ番号に１を加算し、現在の送信データ管理テーブルの送信ページ番号（不図示）に格納する。次に、ステップＳ７５にて、エラーが発生しているか判定する。エラーが発生していない場合は、ステップＳ７６にて、コマンドが送信可能であるか判定する。なお、コマンドが送信可能であるか否かを示す情報は、後述する処理手順により取得される。コマンドが送信可能でない場合には、ステップＳ７５に戻り、コマンドが送信可能になるか、あるいはエラーが発生するまで、ステップＳ７５、Ｓ７６の処理を繰り返す。
【００６２】
ステップＳ７６にて、コマンドが送信可能である場合には、ステップＳ７７にて、送信データ種別１１４が表面ページであるか裏面ページであるかに従って、シート管理テーブルアドレス１１３が指すシート管理テーブルの、表面ページアドレス１０３あるいは裏面ページアドレス１０４が指すデータバッファに格納されたコマンドのうち、未送信の先頭コマンドをプリンタ７に送信する。次にステップＳ７８にて、データバッファに格納された１ページ分のコマンドを全て送信し終えたか判定する。データバッファに格納された１ページ分のコマンドを全て送信し終えていない場合は、ステップＳ７５に戻り、コマンドの送信を継続する。データバッファに格納された１ページ分のコマンドを全て送信し終えている場合は、ステップＳ７９にて、次の送信データ管理テーブル１１１が存在するか判定する。具体的には、次の送信データアドレス１１３がＮＵＬＬでない場合には、次の送信データ管理テーブル１１１が存在するので、ステップＳ８０にて現在の送信データ管理テーブルアドレスに次の送信データアドレス１１３を格納し、ステップＳ７３に戻る。ステップＳ７９にて、次の送信データアドレス１１３がＮＵＬＬである場合には、次の送信データ管理テーブル１１１が存在しないので、ステップＳ８１にて、エラーが発生しているか判定する。エラーが発生している場合は、データ送信をやり直さなければならないため、ステップＳ８３に戻り、全ての送信データ管理テーブル１１１を削除し、ステップＳ７１に戻る。エラーが発生していない場合は、ステップＳ８２に進み、印刷が完了しているか判定する。印刷が完了している場合には、ステップＳ７１に戻る。印刷が完了していない場合には、ステップＳ７９に戻り、次の送信データ管理テーブル１１１が追加されるか、印刷が完了するか、あるいはエラーが発生するまでステップＳ７９〜Ｓ８２の処理を繰り返す。
【００６３】
ステップＳ７３にて、現在の送信データ管理テーブルの送信データ種別１１４が空きテーブルである場合は、現在の送信データ管理テーブルの次の送信データ管理テーブルの送信データを送信するべき場合であり、空きテーブルが使用できなくなるため、ステップＳ８４にて現在の送信データ管理テーブルアドレスに次の送信データアドレス１１３を格納し、ステップＳ８５にて現在の送信データ管理テーブル１１１すなわち空きのテーブルを削除してステップＳ７３に戻る。
【００６４】
次に図１３を参照し、ランゲージモニタ５のステータス監視処理の詳細を説明する。なお、ステータス監視処理は、データ受信処理、送信データ登録処理およびデータ送信処理と並行に動作する。
【００６５】
ステータス監視処理が起動されるとまず、ステップＳ９１にて、プリンタステータスを取得する。具体的には、プリンタ７にステータス要求コマンドを送信し、プリンタステータスを受信する。プリンタステータスには少なくとも以下の情報が含まれる。
・プリンタ７がエラー状態であるか否か
・ページ情報コマンドを受信可能であるか否か
・画像データコマンドを受信可能であるか否か
・印刷が完了したページのページ番号
次にステップＳ９２にて、エラーが発生しているか判定する。エラーが発生している場合には、ステップＳ９１に戻る。エラーが発生していない場合には、ステップＳ９３にて、印刷完了ページ番号が前回取得した値から変化したか判定する。印刷完了ページ番号が前回取得した値から変化していない場合はステップＳ９１に戻る。印刷完了ページ番号が前回取得した値から変化した場合は、ステップＳ９４にて、印刷が完了したページが表面であるか判定する。具体的には、印刷が完了した送信データ管理テーブル１１１の送信データ種別１１４が表面ページでない場合には、印刷が完了したページは表面ではないため、ステップＳ９８に進む。印刷が完了した送信データ管理テーブル１１１の送信データ種別１１４が表面ページである場合は、ステップＳ９５にて印刷が完了した送信データ管理テーブル１１１のシート管理テーブル１１３が指すシート管理テーブル１０１の未完了カウンタ１０６から１を減算する。次にステップＳ９６にて、未完了カウンタ１０６が０であるか判定する。未完了カウンタ１０６が０でない場合はステップＳ９８に進む。未完了カウンタ１０６が０である場合には、指定された部数の印刷が完了した場合なので、ステップＳ９７にて、印刷が完了した送信データ管理テーブル１１１のシート管理テーブル１１３が指すシート管理テーブル１０１を削除する。この際に、表面ページアドレス１０３が指すデータバッファ、および裏面ページアドレス１０４がＮＵＬＬでない場合には裏面ページアドレス１０４が指すデータバッファを解放する。次にステップＳ９８に進む。
【００６６】
ステップＳＳ９８では、印刷が完了した送信データ管理テーブル１１１を削除し、ステップＳ９１に戻り、上記監視処理を繰り返す。
【００６７】
以上に説明したように、本実施形態によれば、両面印刷時に白紙節約を行う場合に、表裏ともに白紙の場合に限り出力が行われないため、表裏がずれることがなく、ユーザの意図しない出力結果となることを避けることができる。 
なお、上述の実施形態では、常にシート単位で白紙判定を行っていたが、これに代えて図１７で示すようにユーザに白紙節約をページ単位（１７４３）で行うかシート単位（１７４１）で行うか見開き単位（１７４２）で行うかの選択手段を提供し、ページ単位で行うことを選択されたときにはページ単位で、シート単位で行うことを選択されたときにはシート単位で、 見開き単位で行うことを選択されたときには見開き単位で、白紙判定を行うようにしてもよい。
【００６８】
ページ単位（１７４３）で行うことを指定された際は、たとえば印刷データが図１５（ａ）の場合、同図（ｂ）のように印刷され、印刷データが図１５（ｃ）の場合、同図（ｄ）のように印刷され印刷データが図１５（ｅ）の場合、同図（ｆ）のように印刷される。
【００６９】
シート単位（１７４１）で行うことを指定された際は、たとえば印刷データが図１５（ｃ）の場合、同図（ｄ）のように印刷される。しかしながら、印刷データが図１５（ａ）の場合、同図（ａ）のように印刷され、印刷データが図１５（ｅ）の場合、同図（ｅ）のように印刷される。
【００７０】
見開き単位（１７４２）で行うことを指定された際は、たとえば印刷データが図１５（ｅ）の場合、同図（ｆ）のように印刷される。しかしながら、印刷データが図１５（ａ）の場合、同図（ａ）のように印刷され、印刷データが図１５（ｃ）の場合、同図（ｃ）のように印刷される。
【００７１】
また、上述の実施形態では、白紙節約の判定をホスト側で行っているが、これに代えてプリンタ側で行うようにしてもよい。プリンタ側で対処するためには、ＰＣ側では白紙ページの有無にかかわらず、ページ順に印刷データをプリンタに送信する。そして、プリンタ側には、ある程度のバッファメモリを用意し、そこに一旦格納し、両面プリント、片面プリントを判定し、両面プリントの場合には、上記のようにな印刷順で印刷処理を行い、表、裏とも白紙ページにある場合には、そのページの印刷データをバッファから削除すれば良いであろう。
【００７２】
また、実施形態では、片面プリントする際に記録面を下にして出力するプリンタを例にして説明したが、表、裏ページの出力順を入れ換えることで、フェースアッププリンタに適用できる。この切り換えは、選択されたプリンタの機種に応じて代えれば良いである。
【００７３】
また、上記実施形態で説明したように、ＰＣ側で対処する場合の処理の大部分は、プリンタドライバ及びランゲージモニタの処理にある。ランゲージモニタ５は、通常、プリンタドライバと共にシステムにインストールされるので、上記ランゲージモニタ５は、プリンタドライバを構成する１つのプログラムでもあり、広義にはプリンタドライバを意味する。
【００７４】
また、通常コンピュータプログラムはＣＤＲＯＭ等のコンピュータ可読記憶媒体をＰＣにセットし、システムにコピーもしくはインストールすることで実行可能になるわけであるから、当然、このようなコンピュータ可読記憶媒体も本発明の範疇に含まれる。
【図面の簡単な説明】
【００７５】
【図１】実施形態におけるシステムのブロック構成図である。
【図２】実施形態におけるプリンタ７のブロック構成図である。
【図３】実施形態における片面印刷時のシート管理テーブルのデータ構造を示す図である。
【図４】実施形態における両面印刷時のシート管理テーブルのデータ構造を示す図である。
【図５】実施形態における片面３ページの送信データ管理テーブルのデータ構造を示す図である。
【図６】実施形態における両面６ページの送信データ管理テーブルのデータ構造を示す図である。
【図７】二枚滞留交互給紙の両面印刷における２ページまでの送信データ管理テーブルを示す図である。
【図８】二枚滞留交互給紙の両面印刷における４ページまでの送信データ管理テーブルを示す図である。
【図９】二枚滞留交互給紙の両面印刷における６ページまでの送信データ管理テーブルを示す図である。
【図１０】実施形態におけるランゲージモニタの処理内容を示すフローチャートである。
【図１１】二枚滞留交互給紙の両面印刷におけるランゲージモニタの処理内容を示すフローチャートである。
【図１２】実施形態におけるランゲージモニタのデータ送信処理内容を示すフローチャートである。
【図１３】実施形態におけるランゲージモニタのステータス監視処理内容を示すフローチャートである。
【図１４】二枚滞留交互給紙の両面印刷における、送信ページの順序を示すテーブルである。
【図１５】白紙ページ節約処理の問題点を示す図である。
【図１６】実施形態における印刷処理する際に表示される設定ウインドウの一例を示す図である。
【図１７】実施形態における印刷処理する際に表示される他の設定ウインドウの一例を示す図である。
【図１】
2006018748.tif 000003
【図２】
2006018748.tif 000004
【図３】
2006018748.tif 000005
【図４】
2006018748.tif 000006
【図５】
2006018748.tif 000007
【図６】
2006018748.tif 000008
【図７】
2006018748.tif 000009
【図８】
2006018748.tif 000010
【図９】
2006018748.tif 000011
【図１０】
2006018748.tif 000012
【図１１】
2006018748.tif 000013
【図１２】
2006018748.tif 000014
【図１３】
2006018748.tif 000015
【図１４】
2006018748.tif 000016
【図１５】
2006018748.tif 000017
【図１６】
2006018748.tif 000018
【図１７】
2006018748.tif 000019