(57)【要約】【課題】複数部数の丁合い印刷が指定された場合に、部数分のジョブに分割して丁合い印刷を実現しようとするアプリケーションの仕様に関わらずプリンタの有する丁合い印刷機能により丁合い印刷を実行し、上記印刷ジョブが複数に分割されてプリンタに送信されてしまうことに起因する従来の各種問題点を解決すること。【解決手段】ホストコンピュータ３０００のプリンタドライバ２０３が、アプリケーションプログラム２０１により丁合い印刷のために連続して生成される１部の印刷を行うための印刷要求データをカウントし、前記いずれかの印刷要求データから複数部数の丁合い印刷処理を実行可能な印刷装置に送信するための印刷ジョブデータを生成し、該生成された印刷ジョブデータに部数設定情報として前記カウント値を設定変更し、さらに前記印刷ジョブデータに丁合い印刷指示情報として丁合い印刷指示を有効とする情報を設定変更し、プリンタ１５００に送信する構成を特徴とする。【選択図】図２
2006011830.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムにより生成される印刷要求データに基づいて複数部数の丁合い印刷処理を実行可能な印刷装置に送信するための印刷ジョブデータを生成する生成手段を有する印刷制御装置であって、
アプリケーションプログラムにより丁合い印刷のために連続して生成される１部の印刷を行うための印刷要求データをカウントするカウント手段と、
前記生成手段により前記いずれかの印刷要求データから生成された印刷ジョブデータに部数設定情報として前記カウント手段のカウント値を設定するとともに、前記印刷ジョブデータに丁合い印刷指示情報として丁合い印刷指示を有効とする情報を設定するように前記印刷ジョブデータを変更する変更手段と、
を有することを特徴とする印刷制御装置。
【請求項２】
指定部数の丁合い印刷を行うために１部の印刷を行うための印刷要求を前記指定部数分生成するアプリケーションプログラムを登録する登録手段を備え、
前記カウント手段は、前記登録手段に登録されるアプリケーションプログラムにより連続して生成される前記印刷要求データをカウントすることを特徴とする請求項１記載の印刷制御装置。
【請求項３】
前記カウント手段は、前記アプリケーションプログラムにより前記印刷要求データ発行前に発行される印刷設定情報を受信してから、前記アプリケーションプログラムにより前記印刷要求データ発行後に発行されるハンドル破棄要求によるプリンタドライバ情報破棄要求を受信するまでの間、前記アプリケーションプログラムにより連続して生成される前記印刷要求データをカウントすることを特徴とする請求項１又は２記載の印刷制御装置。
【請求項４】
前記カウント手段は、前記いずれかの印刷要求データの終了前にプリンタドライバ情報破棄要求を受信した場合には、前記いずれかの印刷要求データの終了後にプリンタドライバ情報破棄要求を受信するまで、前記印刷要求データのカウントを続行することを特徴とする請求項３記載の印刷制御装置。
【請求項５】
前記カウント手段は、前記アプリケーションプログラムにより連続して生成される前記印刷要求データを受信する毎にカウントアップする部数カウンタを備えることを特徴とする請求項１〜４のいずれかに記載の印刷制御装置。
【請求項６】
前記生成手段は、前記いずれか１つの印刷要求データに対応する印刷ジョブデータのみを生成することを特徴とする請求項１〜５のいずれかに記載の印刷制御装置。
【請求項７】
前記生成手段は、前記アプリケーションプログラムにより連続して発行される各印刷要求データからそれぞれ印刷ジョブデータを生成するものであり、
前記カウント手段は、前記生成手段により生成された印刷ジョブデータをカウントすることにより、前記アプリケーションプログラムにより連続して生成される前記印刷要求データをカウントすることを特徴とする請求項１〜４のいずれかに記載の印刷制御装置。
【請求項８】
前記変更手段は、前記生成手段により生成された印刷ジョブデータ内の部数設定情報を検索し、該検索された部数設定情報に対して前記カウント手段のカウント値を設定するとともに、前記印刷ジョブデータ内の丁合い指示情報を検索し、該検索された部数設定情報に対して丁合い印刷指示を有効にする情報を設定するように前記印刷ジョブデータを変更することを特徴とする請求項１〜７のいずれかに記載の印刷制御装置。
【請求項９】
前記生成手段は、前記印刷ジョブデータの生成時に、前記印刷ジョブデータ内の部数設定情報位置，丁合い印刷指示情報位置とを記憶手段に記憶しておき、
前記変更手段は、前記記憶手段に記憶される前記印刷ジョブデータ内の部数設定情報位置，丁合い印刷指示情報位置に、前記カウント手段のカウント値，丁合い印刷指示を有効にする情報を設定するように前記印刷ジョブデータを変更することを特徴とする請求項１〜７のいずれかに記載の印刷制御装置。
【請求項１０】
アプリケーションプログラムにより生成される印刷要求データに基づいて複数部数の丁合い印刷処理を実行可能な印刷装置に送信するための印刷ジョブデータを生成する印刷制御装置における印刷ジョブデータ変更方法であって、
アプリケーションプログラムにより丁合い印刷のために連続して生成される１部の印刷を行うための印刷要求データをカウントするカウントステップと、
前記いずれかの印刷要求データから生成された印刷ジョブデータに部数設定情報として前記カウントステップでのカウント値を設定するとともに、前記印刷ジョブデータに丁合い印刷指示情報として丁合い印刷指示を有効とする情報を設定するように前記印刷ジョブデータを変更する変更ステップと、
を有することを特徴とする印刷ジョブデータ変更方法。
【請求項１１】
請求項１０に記載された印刷ジョブデータ変更方法を実行するためのプログラム。
【請求項１２】
請求項１０に記載された印刷ジョブデータ変更方法を実行するためのプログラムをコンピュータが読み取り可能に記憶した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションプログラムにより生成される印刷要求データに基づいて複数部数の丁合い印刷処理を実行可能な印刷装置に送信するための印刷ジョブデータを生成可能な印刷制御装置および印刷ジョブデータ変更方法およびプログラムおよび記録媒体に関する。
【背景技術】
【０００２】
近年、プリンタはハードディスクドライブ（ＨＤＤ）など、容量の大きい外部メモリを搭載し、膨大なデータ量をプリンタ内部で処理したり、印刷文書を部毎に仕分けたり、ステープルするなどの様々の排紙機能を持つプリンタが多くなっている。
【０００３】
複数部数の印刷文書の仕分けには、ページ単位で複数部数出力するケースと、文書単位で複数部数出力するケース（丁合い印刷）とがある。例えば、３ページの文書をページ単位で３部印刷する場合には、１−１−１−２−２−２−３−３−３と印刷結果が出力され、３ページの文書を文書単位で（丁合い印刷で）３部印刷する場合には、１−２−３−１−２−３−１−２−３と印刷結果が出力される（数字はページ数を表す）。
【０００４】
丁合い印刷は、ページ単位の部数印刷に比べ、印刷後にページを手作業により仕分けする必要がないため利便性が高い。
【０００５】
この丁合い印刷をプリンタ側で実現する場合、プリンタドライバは、プリンタに、上記例の場合、１−２−３のページ描画データ，３部という情報，丁合い印刷を指示する情報を含む印刷ジョブデータを送るだけで良い。なお、プリンタ側では、一旦、全ページ分のデータを１部分保存し、指定部数分繰り返し出力処理する必要があるため、全ページ分のデータを１部分保存するだけの領域がプリンタに必要となるが、容量の大きい外部メモリをプリンタが搭載することで該機能が実現可能となっている。もしくは、プリンタが排紙機能として、複数トレイ（ビン）を保有し、１ページ毎にトレイ（ビン）を機械的に切り替えながら部数分巡回することで、上記丁合い印刷が実現可能となっている。
【０００６】
プリンタ側で丁合い印刷可能な場合には、通常、図２１に示すプリンタドライバの詳細設定用のユーザインタフェース（ＵＩ）のように該丁合い印刷機能を有効にするためのコントロール４０１が用意されている。
【０００７】
図２１は、プリンタドライバの詳細設定用のユーザインタフェース（ＵＩ）の一例を示す模式図である。
【０００８】
一方、図２２に示すアプリケーションプログラムの印刷指示ユーザインタフェース（ＵＩ）のように、アプリケーションプログラムでも、丁合い印刷を指定するコントロール５０２が用意されているものがある。
【０００９】
図２２は、アプリケーションの印刷指示ユーザインタフェース（ＵＩ）の一例を示す模式図である。
【００１０】
なお、図２２に示すアプリケーションが有する部数の設定のコントロール５０１については、アプリケーションが印刷データを作成する上で参照される。
【００１１】
なお、実際に印刷処理を実行した場合に、プリンタドライバへの部数指定がここで設定したものであるとは限らない。上述した、プリンタドライバとアプリケーションの丁合い印刷を指定するための各コントロール４０１，５０２は、それぞれ丁合い印刷を実現するためのものであるが、プリンタドライバ側での設定とアプリケーション側での設定とが連動せず、それぞれ独立に機能していることがある。
【００１２】
そのため、アプリケーションが独自に丁合い印刷の処理を行った場合には、プリンタドライバ側で用意されている丁合い印刷のための機能は有効とならず、アプリケーション側の仕様に依存した丁合い印刷が行われる。
【００１３】
特許文献１には、アプリケーションの丁合い印刷仕様に関わらず、プリンタの丁合い印刷機能を有効にする手段の１つとして、プリントデータの変換と判別を行うプリントデータ変換システムが開示されている。
【００１４】
このシステムにおいては、特許文献１の段落番号＜０００４＞等に記載されているように、例えば、３ページの文書を３部印刷する場合、印刷の際には１部に設定した上で、１−２−３−１−２−３−１−２−３の９ページ分のデータが１ジョブとして印刷されるようなプリンタ側で各部毎の分類ができない印刷要求データを生成するアプリケーション仕様に対しての発明である。
【００１５】
また、同様に特許文献１の段落番号＜００２４＞乃至＜００５０＞にもアプリケーションから要求される複数部数の丁合いデータに対しての１部分の判断方法とプリントデータの変換方法について詳細に記載されている。
【特許文献１】特開平１１−３５３１４３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
しかしながら、特許文献１に記載のプリントデータ変換システムにおいては、上述したように１ジョブで丁合い印刷を行ってくるアプリケーション仕様には対応は可能であるが、アプリケーションの丁合い印刷仕様は、上述したようなものだけではない。具体的には、アプリケーション仕様による丁合い印刷には、例えば、３ページの文書を３部印刷する場合、印刷の際には、１部に設定した上で、［１−２−３］，［１−２−３］，［１−２−３］（数字はページ数を表し、［  ］は１つのジョブを表す）と部毎に同じ内容の印刷要求データを生成する（即ち、部毎にジョブ分割し、部数分の印刷要求データを生成する）ものがある。
【００１７】
特許文献１に記載のプリントデータ変換システムにおいては、このようなアプリケーションの印刷要求に対しては対応できないという問題点があった。
【００１８】
このように部毎にジョブが分かれてしまう場合、ホストコンピュータからプリンタへの送信データ量がプリンタの丁合い印刷機能を活用するのであれば本来、１ジョブ分で済むところが、指定部数分の倍数の印刷ジョブデータが発行されてしまい、ネットワークのトラフィックに影響を与えてしまう。
【００１９】
また、ホストコンピュータからプリンタの処理中の印刷ジョブデータを確認可能な機能を有する場合、アプリケーション上からは一度の印刷操作であっても、指定部数分の印刷ジョブデータに分割されているため、１部の同じ印刷ジョブデータが指定部数分確認されてしまう。
【００２０】
さらに、ジョブが分割されて指定部数分の印刷ジョブデータが発行されてしまうため、プリンタにジョブの保存機能がある場合には、指定部数分の同じジョブが保存されてしまい、メモリ資源を圧迫してしまう。
【００２１】
また、プリンタにジョブの保存機能がある場合や、処理中のジョブに対し、プリンタ側で印刷属性を変更する機能を有していても、分割されたジョブ全てを纏めて変更することはできない。
【００２２】
さらに、ジョブが分割されて複数の印刷ジョブデータが、ホストコンピュータからプリンタに送信されるため、プリンタは印刷処理の起動処理、終了処理を指定部数分繰り返さなければならず、起動、終了処理にかかる時間がオーバヘッドとなってしまう。また、印刷ジョブデータの展開処理も部数分行わなければならず、プリンタの混雑の原因となってしまう可能性がある。
【００２３】
また、ネットワーク環境における複数のクライアントコンピュータが１つのプリンタに印刷を行うような場合、印刷ジョブが分割されることにより、その分割の分かれ目で、他のクライアントコンピュータからの印刷ジョブに割り込まれる可能性があり、他の印刷ジョブと混在して出力されてしまう恐れがある。
【００２４】
さらに、プリンタ側で複数の排紙トレイを使用して仕分け印刷を行う場合、印刷ジョブが分割されることで、プリンタ側では別々のジョブとして扱われてしまうため仕分け機能が働かず、全てのジョブが１つの排紙トレイに出力されてしまう等の問題点があった。
【００２５】
本発明は、上記の問題点を解決するためになされたもので、本発明の目的は、アプリケーションプログラムにより丁合い印刷のために連続して生成される１部の印刷を行うための印刷要求データをカウントし、前記いずれかの印刷要求データから複数部数の丁合い印刷処理を実行可能な印刷装置に送信するための印刷ジョブデータを生成し、該生成された印刷ジョブデータに部数設定情報としてカウント値を設定するとともに、前記印刷ジョブデータに丁合い印刷指示情報として丁合い印刷指示を有効とする情報を設定するように前記印刷ジョブデータを変更することにより、複数部数の丁合い印刷が指定された場合に、部数分のジョブに分割して丁合い印刷を実現しようとするアプリケーションの仕様に関わらずプリンタの有する丁合い印刷機能により丁合い印刷を実行することを可能にし、複数部数の丁合い印刷を実現するために１部に設定された同じ内容の印刷ジョブが複数に分割されてプリンタに送信されてしまうことに起因する従来の各種問題点を解決することができる印刷制御装置および印刷ジョブデータ変更方法およびプログラムおよび記録媒体を提供することである。
【課題を解決するための手段】
【００２６】
本発明は、アプリケーションプログラムにより生成される印刷要求データに基づいて複数部数の丁合い印刷処理を実行可能な印刷装置に送信するための印刷ジョブデータを生成する生成手段を有する印刷制御装置であって、アプリケーションプログラムにより丁合い印刷のために連続して生成される１部の印刷を行うための印刷要求データをカウントするカウント手段と、前記生成手段により前記いずれかの印刷要求データから生成された印刷ジョブデータに部数設定情報として前記カウント手段のカウント値を設定するとともに、前記印刷ジョブデータに丁合い印刷指示情報として丁合い印刷指示を有効とする情報を設定するように前記印刷ジョブデータを変更する変更手段とを有することを特徴とする。
【発明の効果】
【００２７】
本発明によれば、アプリケーションプログラムにより丁合い印刷のために連続して生成される１部の印刷を行うための印刷要求データをカウントし、前記いずれかの印刷要求データから複数部数の丁合い印刷処理を実行可能な印刷装置に送信するための印刷ジョブデータを生成し、該生成された印刷ジョブデータに部数設定情報としてカウント値を設定するとともに、前記印刷ジョブデータに丁合い印刷指示情報として丁合い印刷指示を有効とする情報を設定するように前記印刷ジョブデータを変更するので、複数部数の丁合い印刷が指定された場合に、部数分のジョブに分割して丁合い印刷を実現しようとするアプリケーションの仕様に関わらずプリンタの有する丁合い印刷機能により丁合い印刷を実行することを可能とする。
【００２８】
従って、複数部数の丁合い印刷を実現するために１部に設定された同じ内容の印刷ジョブが複数に分割されてプリンタに送信されてしまうことに起因する従来の各種問題点を解決することができ、プリンタの丁合い印刷機能や仕分け印刷機能を有効利用するスマートな丁合い印刷環境を構築することができる等の効果を奏する。
【発明を実施するための最良の形態】
【００２９】
以下、図面を参照して、本発明の実施形態を詳細に説明する。
【００３０】
本発明は、特に、印刷制御装置に関するものである。
【００３１】
図１は、本発明の一実施形態を示す印刷制御装置を適用可能な印刷システムの構成例を説明するブロック図である。
【００３２】
図１において、３０００はホストコンピュータである。このホストコンピュータ３０００において、１はＣＰＵで、ＲＯＭ３のプログラム用ＲＯＭあるいは外部メモリ１１に記憶されたＣＰＵ１の制御プログラムであるオペレーティングシステムプログラム（以下ＯＳ），印刷関連モジュール（ＯＳ内に含まれるものもある）等をＲＡＭ２上で実行して、システムバス４に接続される各デバイスを総括的に制御する。
【００３３】
また、ＣＰＵ１は、ＲＯＭ３のプログラム用ＲＯＭあるいは外部メモリ１１に記憶された文書処理プログラム等のアプリケーションプログラムに基づいて図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理を実行する。
【００３４】
また、ＣＰＵ１は、ＲＯＭ３のプログラム用ＲＯＭあるいは外部メモリ１１に記憶された印刷関連モジュール（グラフィックエンジン，プリンタドライバ，プリントサブシステム）等をＲＡＭ２上で実行して、文書処理プログラムから出力された印刷要求に基づく印刷ジョブをプリンタ１５００に出力することができる。
【００３５】
これらの処理の場合、制御の主体は、ハードウェア上はＣＰＵ１である。一方、ソフトウェア上の制御の主体は、アプリケーションプログラム及びプリンタへの印刷指示機能を備えた印刷関連モジュール（グラフィックエンジン，プリンタドライバ，プリントサブシステム）等である。よって、以下、実施形態の説明において、処理の主体として、アプリケーションプログラム，グラフィックエンジン，プリンタドライバ，プリントサブシステムを用いるが、ハードウェア的には、アプリケーションプログラム，グラフィックエンジン，プリンタドライバ，プリントサブシステムを実行するＣＰＵ１が実際の処理を実行していることとなる。
【００３６】
ＲＯＭ３のフォント用ＲＯＭあるいは外部メモリ１１には上記文書処理の際に使用するフォントデータ等を記憶し、ＲＯＭ３のデータ用ＲＯＭあるいは外部メモリ１１には上記文書処理等を行う際に使用する各種データ（例えば、ディレクトリ情報、プリンタドライバテーブル等）を記憶する。
【００３７】
ＲＡＭ２は、ＣＰＵ１の主メモリ、ワークエリア等として機能する。５はキーボードコントローラ（ＫＢＣ）で、キーボード（ＫＢ）９や不図示のポインティングデバイスからのキー入力を制御する。６はＣＲＴコントローラ（ＣＲＴＣ）で、ＣＲＴディスプレイ（ＣＲＴ）１０の表示を制御する。７はディスクコントローラ（ＤＫＣ）で、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、プリンタへの印刷指示を行うプログラム等を記憶するハードディスク（ＨＤ）、フロッピー（登録商標）ディスク（ＦＤ）等の外部メモリ１１とのアクセスを制御する。
【００３８】
８はプリンタコントローラ（ＰＲＴＣ）で、所定の双方向性インタフェース（インタフェース）２１を介してプリンタ１５００に接続されて、プリンタ１５００との通信制御処理を実行する。なお、ＣＰＵ１は、例えばＲＡＭ２上に設定された表示情報ＲＡＭへのアウトラインフォントの展開（ラスタライズ）処理を実行し、ＣＲＴ１０上でのＷＹＳＩＷＹＧを可能としている。また、ＣＰＵ１は、ＣＲＴ１０上の不図示のマウスカーソル等で指示されたコマンドに基づいて登録された種々のウインドウを開き、種々のデータ処理を実行する。
【００３９】
プリンタ１５００において、１２はプリンタＣＰＵで、ＲＯＭ１３のプログラム用ＲＯＭに記憶された制御プログラム等あるいは外部メモリ１４に記憶された制御プログラム等に基づいてシステムバス１５に接続される印刷部（プリンタエンジン）１７に出力情報としての画像信号を出力する。また、このＲＯＭ１３のプログラム用ＲＯＭには、ＣＰＵ１２の制御プログラム等を記憶する。ＲＯＭ１３のフォント用ＲＯＭには上記出力情報を生成する際に使用するフォントデータ等を記憶し、ＲＯＭ１３のデータ用ＲＯＭにはハードディスク等の外部メモリ１４がないプリンタの場合には、ホストコンピュータ上で利用される情報等を記憶している。
【００４０】
ＣＰＵ１２は入力部１８を介してホストコンピュータとの通信処理が可能となっており、プリンタ内の情報等をホストコンピュータ３０００に通知可能に構成されている。１９は前記ＣＰＵ１２の主メモリ、ワークエリア等として機能するＲＡＭ（プリンタ内蔵ＲＡＭ）で、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。なお、ＲＡＭ１９は、出力情報展開領域、環境データ格納領域、ＮＶＲＡＭ等に用いられる。
【００４１】
前述したハードディスク（ＨＤ）、ＩＣカード等の外部メモリ１４は、ディスクコントローラ（ＤＫＣ）２０によりアクセスを制御される。外部メモリ１４は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。また、１５０１は操作パネルで、操作のためのスイッチおよびＬＥＤ表示器等が配されている。
【００４２】
また、前述した外部メモリ１４は１個に限らず、少なくとも１個以上備え、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを複数接続できるように構成されていてもよい。さらに、図示しないＮＶＲＡＭを有し、操作パネル１５０１からのプリンタモード設定情報を記憶するようにしてもよい。
【００４３】
なお、本実施形態のプリンタ１５００は、印刷部数と丁合い印刷を指定した印刷ジョブデータを受信した場合に、プリンタ１５００側で、前記印刷ジョブデータに設定された印刷部数の丁合い印刷処理もしくは複数の排紙トレイを使って文書単位の仕分け印刷処理を実行可能なプリンタである。
【００４４】
図２は、図１に示したホストコンピュータ３０００からプリンタ１５００に印刷ジョブデータを送信する際の流れを示した主要な機能ブロック図である。
【００４５】
ホストコンピュータ３０００におけるアプリケーションプログラム（以下、アプリケーション）２０１、グラフィックエンジン２０２、プリンタドライバ２０３及びプリントサブシステム２０４は、それぞれ図１に示した外部メモリ１１に保存されたファイルとして存在し、実行される際に、ＯＳやそのモジュールを利用するモジュールによってＲＡＭ２にロードされ実行されるプログラムモジュールである。
【００４６】
なお、アプリケーション２０１及びプリンタドライバ２０３は、外部メモリ１１のＦＤや不図示のＣＤ−ＲＯＭあるいは後述するネットワークを経由して外部メモリ１１のハードディスク（ＨＤ）に追加可能になっている。
【００４７】
外部メモリ１１に保存されているアプリケーション２０１は、ＣＰＵ１によってＲＡＭ２にロードされて実行される。このアプリケーション２０１からプリンタ１５００に対して印刷を行わせる際には、同様にＣＰＵ１によってＲＡＭ２にロードされて実行されるグラフィックエンジン２０２を利用して出力（描画）を行う。
【００４８】
グラフィックエンジン２０２は、印刷装置毎に用意されたプリンタドライバ２０３を起動する（これにより、プリンタドライバ２０３は、ＣＰＵ１によって外部メモリ１１からＲＡＭ２にロードさせて実行される）。グラフィックエンジン２０２は、このプリンタドライバ２０３を用いて、アプリケーション２０１の出力をプリンタ記述言語（ＰＤＬ）によるプリンタ制御命令に変換する。
【００４９】
プリンタドライバ２０３により変換されたプリンタ制御コマンドは、プリントサブシステム２０４を経てインタフェース２１経由でプリンタ１５００に出力される仕組みとなっている。
【００５０】
なお、このプリントサブシステム２０４は、ＯＳによって起動されて、ＣＰＵ１によって外部メモリ１１からＲＡＭ２にロードされて実行されるものであり、印刷ジョブのスケジューリング、プリンタとのホストコンピュータと接続制御やプリンタのステータスの管理を行っている。
【００５１】
なお、プリンタドライバ２０３は、前述した、アプリケーションから指示された印字や描画命令の出力に対しプリンタ制御コマンドを生成しプリント出力に反映されるようプリンタに指示するだけでなく、プリンタドライバ２０３やプリンタ１５００本体が持つ機能を制御するための設定を行う機能（ユーザインタフェース（〔背景技術〕の欄で示した図２１のＵＩ））と、その設定を記憶する機能、プリンタドライバ２０３やプリンタ１５００本体が持つ能力をアプリケーションやＯＳに情報提供する機能、上記ユーザインタフェースで設定された機能がプリンタの有する機能の場合にプリンタ制御命令を生成する機能、また、ユーザインタフェースで設定された機能がプリンタドライバ独自で行う機能の場合にその機能を実現する機能等を有する。
【００５２】
なお、図１では、ホストコンピュータ３０００とプリンタ１５００がインタフェース２１を介して直接接続される構成について説明したが、図３に示すようにネットワークを介して接続されるように構成してもよい。
【００５３】
図３は、図１に示したホストコンピュータ３０００，プリンタ１５００を適用可能な印刷システムの一例を示すシステム構成図である。
【００５４】
図３において、３０１はネットワークであり、複数のクライアントコンピュータとしてのホストコンピュータ３０００，プリンタ１５００，プリントサーバコンピュータ４０００が接続されている。
【００５５】
この場合、ホストコンピュータ３０００のＰＲＴＣ８はネットワークインタフェースカード（ＮＩＣ）の機能を有するものとする。
【００５６】
プリンタ１５００は、セントロニクスやＵＳＢ等のローカルインタフェース３０２を介してプリントサーバコンピュータ４０００と接続されて該プリントサーバコンピュータ４０００を介してネットワーク３０００に接続される形態であっても、ネットワーク３０００に直接接続される形態であってもよい。なお、ネットワーク３０１に直接接続されているプリンタ１５００の入力部１８は、ネットワークインタフェースカード（ＮＩＣ）の機能を有するものとする。
【００５７】
上記プリントサーバコンピュータ４０００を介してネットワーク３０１に接続されるプリンタ１５００に各クライアントとしてのホストコンピュータ３０００から印刷ジョブを送信する場合、まず各ホストコンピュータ３０００は、プリントサブシステム２０４を介して、プリントサーバコンピュータ４０００へ印刷ジョブを送信する。そして、プリントサーバコンピュータ４０００は、各ホストコンピュータ３０００から送信されてきた印刷ジョブを、不図示のプリントサーバコンピュータ４０００上のプリントサブシステムを介して、プリンタ１５００へ送信する。これにより、各ホストコンピュータ３０００は、プリントサーバコンピュータ４０００を介して印刷ジョブをプリンタ１５００へ送信することができる。
【００５８】
また、ネットワーク３０１に直接接続されるプリンタ１５００に各ホストコンピュータ３０００から印刷ジョブを送信する場合、各ホストコンピュータ３０００は、プリントサブシステム２０４を介して、ネットワーク３０１に直接接続されるプリンタ１５００へ印刷ジョブを送信する。
【００５９】
なお、本実施形態のプリンタドライバ２０３は、アプリケーションプログラムにより生成される印刷要求データに基づいて複数部数の丁合い印刷処理もしくは複数の排紙トレイを使って文書単位の仕分け印刷処理を実行可能なプリンタ１５００に送信するための印刷ジョブデータを生成可能なプリンタドライバである。
【００６０】
次に、図４のタイミングチャートを用いて、本発明の印刷制御装置における基本的な処理の流れについて説明する。
【００６１】
図４は、本発明の印刷制御装置における印刷を行う場合の基本的な処理の流れを示すステータス図であり、特に、図２に示したアプリケーション２０１，グラフィックエンジン２０２，プリンタドライバ２０３の処理に対応する。なお、図２と同一のものには同一の符号を付してある。
【００６２】
図２に示したように、アプリケーション２０１は、プリンタドライバ２０３と直接やり取りを行うのではなく、ＯＳの持つグラフィックエンジン２０２を介して行うため、アプリケーション２０１自体は、実際にはグラフィックエンジン２０２とやり取りを行う。グラフィックエンジン２０２はアプリケーション２０１から指示を受け、プリンタドライバ２０３に対して指示を行う。
【００６３】
まず、アプリケーション２０１は、丁合い印刷のＯＮ／ＯＦＦや部数設定などの印刷のための設定をＲＡＭ２に確保されたメモリを介してグラフィックエンジン２０２に通知し、プリンタドライバ２０３は、グラフィックエンジン２０２より、その印刷設定とその印刷設定を元にプリンタドライバ２０３が印刷処理を行う上で必要な情報を格納する新たにＲＡＭ２上に確保されたメモリ領域の初期化要求を受信する（Ｓ６０１）。これにより、プリンタドライバ２０３は、そのプリンタドライバ２０３が印刷処理を行うために必要な情報（プリンタドライバ情報）を保持するメモリ領域を確保し、印刷設定に従ってそのメモリ領域を初期化する。
【００６４】
プリンタドライバ２０３は、プリンタドライバ２０３が参照する情報メモリの初期化処理要求の受信により必要な処理を完了すると、ステップＳ６０１で受信した印刷設定に応じたプリンタドライバ２０３の印刷能力をグラフィックエンジン２０２に通知する。アプリケーション２０１は、グラフィックエンジン２０２より、最終的にプリンタ１５００に送信される印刷ジョブとその印刷ジョブに反映する印刷設定とを関連付けるために必要なハンドル値を取得する（Ｓ６０２）。
【００６５】
次に、アプリケーション２０１が、印刷の開始要求をグラフィックエンジン２０２に行うと、プリンタドライバ２０３は、グラフィックエンジン２０２より印刷開始要求を受信する（Ｓ６０３）。これにより、プリンタドライバ２０３は、プリンタ記述言語の生成処理を開始し、まず、プリンタ１５００が印刷開始に必要なプリンタ命令を生成する。ただし、プリンタ１５００が印刷開始に必要なプリンタ命令を生成処理は、最初のページ（１ページ目）の印刷処理が開始された時点（アプリケーションからの最初のページの描画指示を受信した時点）であっても良い。
【００６６】
アプリケーション２０１は、文字やイメージ等描画オブジェクトの描画を実現するための描画指示をグラフィックエンジン２０２に対して行う。プリンタドライバ２０３は、その描画指示をグラフィックエンジン２０２より受信する（Ｓ６０４）。これにより、プリンタドライバ２０３は、指定された描画オブジェクトや改ページをプリンタ１５００からの出力結果に反映させるためのプリンタ命令を生成する。なお、印刷するページ数はアプリケーション２０１からの指定に因る。
【００６７】
次に、アプリケーション２０１が、印刷の終了要求をグラフィックエンジン２０２に行うと、プリンタドライバ２０３は、グラフィックエンジン２０２より印刷終了要求を受信する（Ｓ６０５）。これにより、プリンタドライバ２０３は、プリンタ１５００が印刷終了に必要なプリンタ命令を生成し、プリンタ記述言語の生成処理を終了する。
【００６８】
次に、アプリケーション２０１は、ステップＳ６０２で取得したハンドル値の破棄要求をグラフィックエンジン２０２に通知し、プリンタドライバ２０３は、グラフィックエンジン２０２より、プリンタドライバ２０３が印刷処理を行う上で必要な情報を格納するメモリ領域にある情報（プリンタドライバ情報）の破棄要求を受信する（Ｓ６０６）。これにより、プリンタドライバ２０３は、上記プリンタドライバ情報の破棄処理を行う。
【００６９】
以上示した、ステップＳ６０３〜Ｓ６０５の処理により、プリンタ１５００へ送信するための１つのジョブが生成されることになる。
【００７０】
次に、図５，図６のフローチャートを参照して、丁合い印刷のために印刷ジョブを部数分分割するような印刷要求を行うアプリケーション２０１の基本的な処理について説明する。
【００７１】
図５は、図１に示したホストコンピュータ３０００上で実行される丁合い印刷のために印刷ジョブを部数分分割するような印刷要求を行うアプリケーション２０１の丁合い印刷処理手順の一例を示すフローチャートである。なお、このフローチャートの処理は、図１に示したホストコンピュータ３０００のＣＰＵ１が外部メモリ１１に記憶されるアプリケーション２０１をＲＡＭ２上で実行することにより実現される。以下、処理の主体を、ＣＰＵ１により実行されるアプリケーション２０１として説明する。また、図中Ｓ７０１〜Ｓ７０７は各ステップを示す。
【００７２】
まず、通常、図２２に示したアプリケーションの設定画面にあるような丁合い印刷の設定のためのコントロール５０２をマウス等によるユーザ指示により有効にし、また、部数の設定のためのコントロール５０１において、印刷する部数の設定もユーザ指示により行う。
【００７３】
このようなアプリケーションの設定が行われ、印刷指示がアプリケーション２０１に入力されると（Ｓ７０１）、アプリケーション２０１は、印刷を行う上で必要な設定をグラフィックエンジン２０２に通知しハンドル値を取得する。その際、グラフィックエンジン２０２に通知する部数情報を１部にする（Ｓ７０２）。
【００７４】
次に、アプリケーション２０１は、印刷処理を開始するための印刷開始要求をグラフィックエンジン２０２に対して行う（Ｓ７０３）。
【００７５】
続いて、アプリケーション２０１上で作成・編集された図形，イメージ，文字，表等の描画オブジェクトやページ構成を印刷結果に反映するための指示をグラフィックエンジン２０２に対して行う（Ｓ７０４）。
【００７６】
次に、アプリケーション２０１は、印刷処理を終了するための印刷終了要求をグラフィックエンジン２０２に対して行う（Ｓ７０５）。この処理後、プリンタドラバ２０３では、通常、１つのジョブが生成されることになる。
【００７７】
そして、アプリケーション２０１は、ステップＳ７０３〜Ｓ７０５の処理回数がステップＳ７０１で設定された部数回行われたか（指定部数分印刷を行ったか）判断し（Ｓ７０６）、未だステップＳ７０１で設定された部数回に満たないと判断した場合には、ステップＳ７０３に戻り、ステップＳ７０３〜Ｓ７０６にて同じ処理を繰り返す。
【００７８】
一方、ステップＳ７０６で、アプリケーション２０１は、ステップＳ７０３〜Ｓ７０５の処理回数がステップＳ７０１で設定された部数回行われたと判断した場合には、ステップＳ７０２で取得したハンドルの破棄要求をグラフィックエンジン２０２に対して行い（Ｓ７０７）、本フローチャートの処理を終了する。
【００７９】
つまり、アプリケーション２０１は、図４で示したステップＳ６０３〜Ｓ６０５の処理を、ステップＳ７０１で設定された部数回繰り返すことで、例えば、３ページの文書を３部丁合い印刷したい場合には、［１−２−３］，［１−２−３］，［１−２−３］（数字はページ数を表し、［  ］は１つのジョブを表す）といった３つの印刷ジョブがプリンタドライバ２０３で生成されることになるので、プリンタ１５００にて、丁合い印刷が実現されることになる。
【００８０】
以上示したように、アプリケーション２０１は、指定部数の丁合い印刷を行うために１部の印刷を行うための印刷要求データ（本実施形態では、アプリケーション２０１で発行される、「印刷開始要求」で始まり「印刷終了要求」で終了する（「印刷開始要求」と「印刷終了要求」の間に、描画要求，改ページ要求等を含む）１ジョブのデータを印刷要求データと称する）を前記指定部数分生成するアプリケーションプログラムである。
【００８１】
上述したようなアプリケーション２０１の処理に対し、プリンタドライバ２０３が行う本実施形態の印刷ジョブデータ変換処理の一例を以下に詳細に説明する。
【００８２】
まず、アプリケーション２０１がグラフィックエンジン２０２を介してプリンタドライバ２０３に行う印刷要求に対して、プリンタドライバ２０３が生成する印刷ジョブを保存する処理と、アプリケーション２０１が実現しようとしている部数をカウントする処理とを図６のフローチャートを用いて説明する。
【００８３】
図６は、本発明の印刷制御装置における第１の制御処理手順の一例を示すフローチャートであり、図１に示したホストコンピュータ３０００上で実行されるプリンタドライバ２０３による部数をカウントする処理と印刷ジョブを保存する処理に対応する。なお、このフローチャートの処理は、図１に示したホストコンピュータ３０００のＣＰＵ１が外部メモリ１１に記憶されるプリンタドライバ２０３をＲＡＭ２上で実行することにより実現される。また、図中Ｓ８０１〜Ｓ８１０は各ステップを示す。
【００８４】
前述したように、まずアプリケーション２０１がグラフィックエンジン２０２に対して、印刷設定の通知を行うと、プリンタドライバ２０３は、グラフィックエンジン２０２から送信される印刷設定を受信する（Ｓ８０１）。この印刷設定は、ＲＡＭ２に確保されたメモリ領域に設定されて受け渡され、例えば、印刷部数、印刷サイズ、用紙の向きといった情報を含んでいる。
【００８５】
次に、アプリケーション２０１が丁合い印刷実現のために印刷ジョブを分割するような印刷要求を行う場合には、印刷設定の部数情報を１部に設定してくるので、プリンタドライバ２０３は、ステップＳ８０１で受信した印刷設定の印刷部数の情報が１部かどうかを判断し（Ｓ８０２）、１部であると判断した場合には、本実施形態の印刷ジョブデータ変換処理（ステップＳ８０４〜Ｓ８１０の処理）を実行する。なお、本実施形態の印刷ジョブデータ変換処理を実行するかどうかの判断は、ステップＳ８０２の１部であるか否かの判断のみに限られるものではなく、指定部数の丁合い印刷を行うために１部の印刷を行うための印刷要求を前記指定部数分生成するアプリケーションを外部メモリ１１に登録しておき、アプリケーション２０１が登録しているアプリケーションかどうかの判断や、プリンタドライバ２０３が用意するＵＩの設定に本実施形態の印刷ジョブデータ変換処理を有効にする設定を設け、その設定が有効にされているかどうかの判断の何れか、もしくは、各判断を組み合わせた判断をステップＳ８０２の判断条件に加えて、より厳密に判断するように構成してもよい。
【００８６】
一方、ステップＳ８０２で、ステップＳ８０１で受信した印刷設定の印刷部数の情報が１部でないと判断した場合には、本実施形態の印刷ジョブデータ変換処理を実行しないと判断して、通常プリンタドライバが行っている通りの印刷処理を行う（Ｓ８０３）。
【００８７】
次に、ステップＳ８０４において、プリンタドライバ２０３は、ステップＳ８０１で受信した印刷設定を元に、プリンタドライバ２０３が印刷処理を行う上で必要な情報を格納するメモリ領域を初期化する。このメモリ領域には、印刷部数をカウントしておく部数カウンタ（ＣＰ）が存在し、この部数カウンタは「０」で初期化しておく。
【００８８】
次に、アプリケーション２０１が、ステップＳ８０１で設定された印刷設定を元に、実際に印刷処理を開始する印刷開始要求をグラフィックエンジン２０２に対して行うと、プリンタドライバ２０３は、グラフィックエンジン２０２より印刷開始要求を受信する（Ｓ８０５）。なお、図６内には示していないが、プリンタドライバ２０３は、印刷開始要求の受信に続いて描画要求（改ページ要求）等をグラフィックエンジン２０２より受信するものである。
【００８９】
次に、プリンタドライバ２０３は、部数カウンタ（ＣＰ）が「０」か否かを判断して印刷ジョブの保存処理を行うかどうかを判断する。なお、部数カウンタ（ＣＰ）が「０」である場合には、未だ１部分の印刷ジョブの保存が完了していないことを表し、また、部数カウンタ（ＣＰ）が「０」でない場合には、既に１部分の印刷ジョブの保存は完了していることを表す。
【００９０】
ステップＳ８０６で、プリンタドライバ２０３が、部数カウンタ（ＣＰ）が「０」であると判断した場合には、未だ1部分の印刷ジョブの保存を行っていないため、１部分の印刷ジョブの保存が完了するまで、後述の図７に示す印刷ジョブの保存処理を実行し（Ｓ８０７）、ステップＳ８０８に進む。
【００９１】
一方、ステップＳ８０６で、プリンタドライバ２０３が、部数カウンタ（ＣＰ）が「０」でないと判断した場合には、1部分の印刷ジョブの保存は完了しているため、印刷ジョブの保存処理は実行せず、そのまま、ステップＳ８０８に進む。
【００９２】
次に、アプリケーション２０１が１ジョブ分の印刷処理を終えてグラフィックエンジン２０２に対して印刷終了要求を行うと、プリンタドライバ２０３は、グラフィックエンジン２０２より、印刷終了要求を受信する（Ｓ８０８）。
【００９３】
プリンタドライバ２０３は、ステップＳ８０８で印刷終了要求を受信すると、部数カウンタ（ＣＰ）に「１」を加算する（Ｓ８０９）。なお、アプリケーション２０１は、印刷部数分、印刷開始要求から印刷終了要求までの印刷要求を繰り返すため、繰り返された回数、つまり、アプリケーション２０１が実現しようとしている部数が最終的に部数カウンタ（ＣＰ）に設定されることになる。
【００９４】
なお、図６内には示していないが、プリンタドライバ２０３は、ステップＳ８０８で印刷終了要求を受信した際にも、印刷ジョブを終了させるために必要となるプリンタ記述言語の生成処理を行い、部数カウンタ（ＣＰ）を加算する前の値が「０」であれば、該プリンタ記述言語を保存中の印刷ジョブに追加し、印刷ジョブの保存を完了することになる。
【００９５】
次に、ステップＳ８１０において、プリンタドライバ２０３は、グラフィックスエンジン２０２から印刷開始要求を受信したか判断し、印刷開始要求を受信したと判断した場合には、ステップＳ８０６の処理に戻り、ステップＳ８０６〜Ｓ８１０の処理を繰り返す。
【００９６】
一方、ステップＳ８１０で、プリンタドライバ２０３が、グラフィックエンジン２０２から印刷開始要求を受信しない場合には、印刷処理は終了となるため、本フローチャートの処理を終了する。
【００９７】
以上説明したように、本実施形態のプリンタドライバ２０３は、アプリケーション２０１により印刷要求データ発行前に発行される印刷設定情報を受信（Ｓ８０１に相当）してから、前記アプリケーション２０１により前記印刷要求データ発行後に発行される前記印刷設定情報の破棄要求を受信（Ｓ８１０のＹｅｓに相当）するまでの間、前記アプリケーション２０１により連続して生成される１部の印刷を行うための前記印刷要求データ（Ｓ８０５（Ｓ８１０）〜Ｓ８０８に相当）をＲＡＭ２内に保持される部数カウンタ（ＣＰ）をカウントアップすることによりカウントし（Ｓ８０９に相当）、前記いずれか１つの印刷要求データに対応する印刷ジョブデータのみを生成保存する（Ｓ８０７に相当）ものである。
【００９８】
以下、プリンタドライバ２０３が、まだ１部分の印刷ジョブが保存されていない場合、ステップＳ８０７において、プリンタドライバ２０３は、印刷開始要求を受信した時点から印刷終了要求を受信して印刷終了処理を完了するまでの間、生成したプリンタ記述言語を保存していくことになる。そのステップＳ８０７の印刷ジョブの保存処理を図７のフローチャートを用いて説明する。
【００９９】
図７は、本発明の印刷制御装置における第２の制御処理手順の一例を示すフローチャートであり、図６のステップＳ８０７に示した印刷ジョブの保存処理に対応する。なお、このフローチャートの処理は、図１に示したホストコンピュータ３０００のＣＰＵ１が外部メモリ１１に記憶されるプリンタドライバ２０３をＲＡＭ２上で実行することにより実現される。また、図中Ｓ９０１〜Ｓ９０２は各ステップを示す。
【０１００】
まず、プリンタドライバ２０３は、アプリケーション２０１からグラフィックエンジン２０２を介してプリンタドライバ２０３に順次送られる印刷要求に基づいて、該各印刷要求をプリンタ１５００による印刷出力結果に反映させるためのプリンタ記述言語を通常の印刷処理時と同様に生成する（Ｓ９０１）。
【０１０１】
プリンタドライバ２０３は、最初に生成したプリンタ記述言語を外部メモリに保存し、２回目以降、生成したプリンタ記述言語をその保存データに追加保存していくことで（Ｓ９０２）、最終的には、図８に示すようなプリンタ記述言語群によって１つの印刷ジョブとして形成されることになる。
【０１０２】
なお、図７には示していないが、ステップＳ９０１，Ｓ９０２の処理は、ステップＳ８０８で、印刷終了要求を受信するまで繰り返し実行されるものとする。
【０１０３】
より具体的に示すと、プリンタドライバ２０３は、ジョブの開始命令をプリンタ記述言語で生成し、外部メモリに保存し、次に、ＲＡＭ２のメモリ領域に格納される印刷設定情報等に基づいて、丁合い印刷指定命令（この時点では不定），部数設定命令（この時点では「１部」），用紙サイズ（及び用紙向き）の指定命令等をプリンタ記述言語で生成し、外部メモリに保存し、次に、図形、イメージ、文字、表等の描画命令、改ページ命令をプリンタ記述言語で生成して外部メモリに保存する処理をページ数だけ繰り返し行い、グラフィックエンジン２０２から印刷終了要求を受信すると、最後に、ジョブの終了命令をプリンタ記述言語で生成し、外部メモリに保存する。
【０１０４】
図８は、図１に示したプリンタドライバ２０３が生成する印刷ジョブデータのデータ構造の一例を示す模式図である。
【０１０５】
図８に示すように、印刷ジョブデータは、丁合い印刷指定命令，部数設定命令，用紙サイズの指定命令，図形、イメージ、文字、表等の描画命令、改ページ命令、ジョブの終了命令等を含んでいる。
【０１０６】
続いて、アプリケーション２０１は、指定部数分の印刷要求を完了すると、前述した取得しておいた印刷のために必要なハンドルの破棄要求をグラフィックエンジン２０２に対して行う（図５のステップＳ７０７に相当）。つまり、この時点で、アプリケーションは印刷要求が全て終了していることになり、プリンタドライバ２０３側では、部数のカウントと印刷ジョブの保存は完了しているので、プリンタドライバ２０３は、プリンタ１５００へ印刷ジョブを送信する処理を実行することができる。以下、図９を用いて、プリンタドライバ２０３が保存した印刷ジョブをプリンタ１５００に送信するための処理を説明する。
【０１０７】
図９は、本発明の印刷制御装置における第３の制御処理手順の一例を示すフローチャートであり、プリンタドライバ２０３による印刷ジョブの送信処理に対応する。なお、このフローチャートの処理は、図１に示したホストコンピュータ３０００のＣＰＵ１が外部メモリ１１に記憶されるプリンタドライバ２０３をＲＡＭ２上で実行することにより実現される。また、図中Ｓ１１０１〜Ｓ１１０６は各ステップを示す。
【０１０８】
まず、プリンタドライバ２０３は、アプリケーション２０１がグラフィックエンジン２０２に対してハンドルの破棄要求を行うと、プリンタドライバ２０３は、プリンタドライバ２０３が印刷処理を行う上で必要な情報を格納するメモリ領域のプリンタドライバ情報を破棄するための要求をグラフィックエンジン２０２より受信する（Ｓ１１０１）。
【０１０９】
次に、プリンタドライバ２０３は、ステップＳ１１０１でプリンタドライバ情報破棄要求を受信した際、図７に示した印刷ジョブ保存処理により１部分の保存が完了した印刷ジョブデータをプリンタドライバ２０３がＲＡＭ２に確保したメモリ領域に読み込む（Ｓ１１０２）。
【０１１０】
次に、プリンタドライバ２０３は、読み込んだ印刷ジョブデータの変換処理（詳細は後述する図１０に示す）を行う（Ｓ１１０３）。
【０１１１】
次に、プリンタドライバ２０３は、変更した印刷ジョブデータをプリントサブシステム２０４を介してプリンタ１５００へ送信する処理を実行する。（Ｓ１１０４）
次に、印刷ジョブのプリンタ１５００への送信が完了すれば、図９で示した印刷ジョブ保存処理において保存しておいた印刷ジョブデータは不要になるため、プリンタドライバ２０３は、保存しておいた印刷ジョブデータを破棄する。（Ｓ１１０５）
次に、プリンタドライバ２０３は、プリンタドライバ２０３が印刷処理を行う上で必要な情報を格納するメモリ領域のプリンタドライバ情報の破棄処理を行い（Ｓ１１０６）、本フローチャートの処理を終了する。
【０１１２】
また、丁合い印刷を、１つの印刷ジョブで実現するためには、プリンタの制御コマンドにて、丁合い印刷を指定するための命令（丁合い印刷指定命令）を「ＯＮ」にすることと、部数を設定する命令（部数設定命令）にて出力する部数情報の設定を行う必要がある。そこで、以下に図１０を参照して、図７のステップＳ８０７で説明した１部分の保存が完了した印刷ジョブを丁合い印刷を実現するための印刷ジョブに変換する処理について説明する。
【０１１３】
図１０は、本発明の印刷制御装置における第４の制御処理手順の一例を示すフローチャートであり、図９のステップＳ１１０３に示した印刷ジョブデータ変換処理に対応する。なお、このフローチャートの処理は、図１に示したホストコンピュータ３０００のＣＰＵ１が外部メモリ１１に記憶されるプリンタドライバ２０３をＲＡＭ２上で実行することにより実現される。また、図中Ｓ１２０１〜Ｓ１２０７は各ステップを示す。
【０１１４】
図８で示した印刷ジョブデータは、プリンタ記述言語と呼ばれる印刷対象となるプリンタが解釈できるような決められた文法の命令群の集合である。そこでまず、プリンタドライバ２０３は、印刷ジョブデータの命令群の中から、部数を設定する命令（部数設定命令）を見つけ出すための検索を行う（Ｓ１２０１）。次に、検索した命令が部数を設定する命令（部数設定命令）かどうか確認する（Ｓ１２０２）。
【０１１５】
ステップＳ１２０２で、プリンタドライバ２０３は、検索した命令が部数を設定する命令（部数設定命令）であると判断した場合には、その命令で指定する部数情報を、図６のステップＳ８０９の処理によりカウントしていた部数カウンタ（ＣＰ）の値に変更する（Ｓ１２０３）。
【０１１６】
次に、プリンタドライバ２０３は、検索完了した（丁合い印刷を指定するための命令（丁合い印刷指定命令）の検索が既に終わっている）か否かを判断し（Ｓ１２０４）、検索完了したと判断した場合には、そのまま本フローチャートの処理を終了する。
【０１１７】
一方、ステップＳ１２０４で、プリンタドライバ２０３が、検索完了していないと判断した場合には、ステップＳ１２０１の処理に戻る。
【０１１８】
一方、ステップＳ１２０２で、プリンタドライバ２０３が、検索した命令が部数を設定する命令（部数設定命令）でないと判断した場合には、プリンタドライバ２０３は、検索した命令が丁合い印刷を指定するための命令（丁合い印刷指定命令）かどうか確認する（Ｓ１２０５）。
【０１１９】
ステップＳ１２０５で、プリンタドライバ２０３は、検索した命令が丁合い印刷を指定するための命令（丁合い印刷指定命令）であると判断した場合には、丁合い印刷をプリンタで行うためのモードが有効になるように、丁合い印刷を指定するための命令（丁合い印刷指定命令）を「ＯＮ」に変更する（Ｓ１２０６）。
【０１２０】
次に、プリンタドライバ２０３は、検索完了した（部数を設定する命令（部数設定命令）の検索が既に終わっている）か否かを判断し（Ｓ１２０７）、検索完了したと判断した場合には、そのまま本フローチャートの処理を終了する。
【０１２１】
一方、プリンタドライバ２０３が、検索完了していないと判断した場合には、ステップＳ１２０１の処理に戻る。
【０１２２】
一方、ステップＳ１２０５で、プリンタドライバ２０３が、検索した命令が丁合い印刷を指定するための命令（丁合い印刷指定命令）でないと判断した場合には、ステップＳ１２０１の処理に戻る。
【０１２３】
なお、部数設定命令と丁合い印刷指定命令の検索順序はどちらが先でも良いことはいうまでもない。
【０１２４】
以上説明したように、本実施形態のプリタンドライバ２０３は、受信したいずれかの印刷要求データから生成された印刷ジョブデータ内の部数設定命令を検索し、該検索されたにカウント値（ＣＰの値）を設定するとともに、前記印刷ジョブデータ内の丁合い指示情報を検索し、該検索された丁合い印刷指示命令に丁合い印刷指示を有効とする情報（ＯＮ）を設定するように前記印刷ジョブデータを変更するものである。
【０１２５】
従って、例えば、３ページのデータを３部印刷する場合に、アプリケーション２０１の処理によって［（１部）１−２−３］，［（１部）１−２−３］，［（１部）１−２−３］（数字は、ページ数を表し、［  ］は１つのジョブを表し、また、（  ）は印刷ジョブ中に指定される部数を表す）のように、３つのジョブに分割されるような印刷要求データが発行されたとしても、プリンタドライバ２０３が該３つのジョブに分割されようとしている印刷要求から、［（丁合い印刷ＯＮ，３部）１−２−３］のような１つの印刷ジョブデータを生成するので、従来、アプリケーションから３つのジョブに分割して発行される印刷要求から生成される３つの印刷ジョブデータ（［（１部）１−２−３］，［（１部）１−２−３］，［（１部）１−２−３］）と、同じ部数の出力結果をプリンタ１５００から得ることができる。
【０１２６】
ところで、図４のステップＳ６０１で示したアプリケーション２０１が通知する印刷設定は、常に印刷処理中同じものが使われるわけではなく、アプリケーション２０１は印刷開始要求後に、例えば、１ページ目はＡ４用紙で、２ページ目の時点では、Ａ３用紙に変更したい場合など印刷設定を変更したい場合、印刷しようとしている任意のページが変わるタイミングで変更することが可能となっている。
【０１２７】
例えば、１ページ目の用紙サイズがＡ４、２ページ目の用紙サイズがＡ３、３ページ目の用紙サイズがＢ４の場合、１（Ａ４）−２（Ａ３）−３（Ｂ４）といった印刷ジョブが発行される（数字はページ数を表し、（  ）は用紙サイズを表す）。
【０１２８】
このように、アプリケーション２０１が印刷設定を変更した場合、プリンタドライバ２０３が印刷処理を行うために必要なプリンタドライバ情報を保持するメモリ領域も更新されることになる。
【０１２９】
以下、図１１のフローチャートを用いて、アプリケーション２０１が印刷設定の変更要求をグラフィックエンジン２０２に対して行った場合のプリンタドライバ２０３の基本的な処理（印刷処理を行うために必要なプリンタドライバ情報を保持するメモリ領域を更新する処理）について説明する。
【０１３０】
図１１は、本発明の印刷制御装置における第５の制御処理手順の一例を示すフローチャートであり、アプリケーション２０１が印刷設定の変更要求をグラフィックエンジン２０２に対して行った場合のプリンタドライバ２０３の基本的な処理（印刷処理を行うために必要なプリンタドライバ情報を保持するメモリ領域を更新する処理）に対応する。なお、このフローチャートの処理は、図１に示したホストコンピュータ３０００のＣＰＵ１が外部メモリ１１に記憶されるプリンタドライバ２０３をＲＡＭ２上で実行することにより実現される。また、図中Ｓ１３０１〜Ｓ１３０６は各ステップを示す。
【０１３１】
図１２は、アプリケーション２０１が印刷設定を変更する場合の処理の流れを示すステータス図である。
【０１３２】
以下、図１１のフローチャートの処理に沿って説明する。
【０１３３】
アプリケーション２０１がページの変わるタイミングで印刷設定を変更しようとした場合には、アプリケーション２０１は、変更する印刷設定の通知と印刷設定変更要求をグラフィックエンジン２０２に対して行う。これにより、プリンタドライバ２０３は、グラフィックエンジン２０２から送信される、変更する印刷設定の通知とプリンタドライバ初期化要求を受信する（図１１のＳ１３０１，図１２のステップＳ１４０５）。
【０１３４】
次に、プリンタドライバ２０３は、設定変更後の印刷処理を行うために必要なＲＡＭ２上の確保されたメモリ領域（メモリ１）のプリンタドライバ情報の初期化を行い（図１１のＳ１３０２）、設定変更後の印刷設定に応じたプリンタドライバ２０３の印刷能力をグラフィックエンジン２０２に通知する。（図１２のＳ１４０６）
次に、グラフィックエンジン２０２が、それまで印刷に使用していた印刷のために必要なプリンタドライバ情報を保持しているメモリ領域（メモリ２）中の必要なプリンタドライバ情報をメモリ１に引き継ぐことができるタイミング（メモリ引継ぎ要求）を発行すると、プリンタドライバ２０３は、該メモリ引継ぎ要求をグラフィックエンジン２０２より受信する（図１１のＳ１３０３，図１２のステップＳ１４０７）。なお、上記メモリ１とメモリ２は同じフォーマットの情報領域を持つ。
【０１３５】
以後の印刷処理では、メモリ２のプリンタドライバ情報は参照されなくなるため、グラフィックエンジン２０２から、プリンタドライバ２０３がそれまで印刷に使用していた印刷のために必要なプリンタドライバ情報を保持しているメモリ２のプリンタドライバ情報破棄要求が発行されると、プリンタドライバ２０３は、該プリンタドライバ情報破棄要求をグラフィックエンジン２０２より受信する（図１１のＳ１３０５，図１２のステップＳ１４０８）。
【０１３６】
次に、プリンタドライバ２０３は、メモリ２のプリンタドライバ情報の破棄処理を実行し（Ｓ１３０６）、本フローチャートの処理を終了する。
【０１３７】
つまり、アプリケーション２０１が印刷設定を変更する場合、図４で示したアプリケーション２０１，グラフィックエンジン２０２，プリンタドライバ２０３のステート図は、図１２に示すようになる。その説明は、前述の図４と図１２の説明と同様であるため詳細な説明は割愛する。
【０１３８】
図９で示したように、プリンタドライバ２０３としては、プリンタドライバ２０３が印刷処理を行う上で必要なプリンタドライバ情報を格納するメモリ領域のプリンタドライバ情報を破棄するための要求をグラフィックエンジン２０３より受信した時点で保存しておいたジョブのプリンタ１５００への送信処理を行うことになるが、上述した通り、アプリケーション２０１が印刷途中で印刷設定を変更しようとした場合にも、プリンタドライバ２０３は、メモリ領域のプリンタドライバ情報の破棄要求を受信してしまう。そのため、図９に示した処理のままでは、印刷ジョブの保存が完了していなくても印刷ジョブのプリンタ１５００への送信処理を行おうとしてしまうため、印刷ジョブの送信処理を行わないように制御する必要がある。
【０１３９】
つまり、プリンタドライバ２０３は、プリンタドライバ情報の破棄要求を受信したとき、それが、アプリケーション２０１の印刷設定変更要求によるものだった場合には、印刷ジョブのプリンタ１５００への送信処理に実行しないように制御する必要がある。
【０１４０】
以下、図１３のフローチャートを用いて、アプリケーション２０１が印刷開始要求後、ページが変わるタイミングで、印刷設定の変更要求を行った場合のプリンタドライバ２０３による処理について説明する。
【０１４１】
図１３は、本発明の印刷制御装置における第６の制御処理手順の一例を示すフローチャートであり、アプリケーション２０１が印刷開始要求後、ページが変わるタイミングで印刷設定の変更要求を行った場合のプリンタドライバ２０３による処理に対応する。なお、このフローチャートの処理は、図１に示したホストコンピュータ３０００のＣＰＵ１が外部メモリ１１に記憶されるプリンタドライバ２０３をＲＡＭ２上で実行することにより実現される。また、図中Ｓ１５０１〜Ｓ１５１１は各ステップを示す。なお、図９のＳ１１０２〜Ｓ１１０５と、図１３のＳ１５０８〜Ｓ１５１１とは同様のため、その説明は省略する。
【０１４２】
アプリケーション２０１がグラフィックエンジン２０２に対して、印刷設定の変更要求を行った場合、プリンタドライバ２０３は、グラフィックエンジン２０２より変更対象の印刷設定を受信する（Ｓ１５０１）。
【０１４３】
次に、プリンタドライバ２０３は、印刷設定を受信した際にプリンタドライバ２０３が印刷処理を行う上で必要なプリンタドライバ情報を格納するＲＡＭ２上に確保されたメモリ領域（メモリ１）を初期化する。メモリ１は、１部分の印刷ジョブを保存しているかどうかを判断するフラグ（ＳＲ１）を持ち、プリンタドライバ２０３は、ＳＲ１を「ＯＦＦ」で初期化しておく（Ｓ１５０２）。
【０１４４】
次に、プリンタドライバ２０３は、グラフィックエンジン２０２より、新たに印刷処理に使われるのに必要なプリンタドライバ情報を格納するメモリ領域（メモリ１）と、これまで印刷処理に使われていたプリンタドライバ情報を格納していたＲＡＭ２上に確保されているメモリ領域（メモリ２）を渡され、メモリ２からメモリ１へ必要なプリンタドライバ情報を引き継ぐための引継ぎ要求を受信する（Ｓ１５０３）。
【０１４５】
次に、プリンタドライバ２０３は、メモリ２が持つ保存フラグ（ＳＲ２）をメモリ１が持つ保存フラグ（ＳＲ１）にコピーする。つまり、それまでの印刷処理において、１部分に印刷ジョブが保存されていれば、ＳＲ２には「ＯＮ」が設定されており、そのプリンタドライバ情報が以後の印刷処理に使われるＳＲ１に引き継がれる。次に、ＳＲ２の設定は「ＯＦＦ」にしておくように制御する。更に、メモリ２が持っていた部数カウンタＣＰ２の値もメモリ１が持つ部数カウンタＣＰ１にコピーしておく（Ｓ１５０４）。
【０１４６】
次に、プリンタドライバ２０３は、グラフィックエンジン２０２より、それまでの印刷処理に使われていたメモリ２のプリンタドライバ情報の破棄要求を受信する（Ｓ１５０５）。
【０１４７】
次に、プリンタドライバ２０３は、メモリ２が持つＳＲ２の値を確認し（Ｓ１５０６）、メモリ２が持つＳＲ２に「ＯＮ」が設定されている（ＳＲ２に「ＯＦＦ」が設定されていない）と判断した場合には、保存した印刷ジョブをプリンタ１５００への送信する処理（Ｓ１５０８〜Ｓ１５１１）を行うが、ここでの説明では、ステップＳ１５０４にて、ＳＲ２は「ＯＦＦ」に設定されているため送信処理は行われず（ステップＳ１５０７に移行するため）、１部分の保存ジョブは維持されたままにできる。
【０１４８】
次に、プリンタドライバ２０３は、メモリ２のプリンタドライバ情報破棄処理を行う（Ｓ１５０７）。
【０１４９】
以下、図１４のフローチャートを用いて、図６の処理に図１３での処理を考慮した場合の処理について説明する。
【０１５０】
図１４は、本発明の印刷制御装置における第７の制御処理手順の一例を示すフローチャートであり、アプリケーション２０１が印刷開始要求後に、ページが変わるタイミングで印刷設定の変更要求を行うことを考慮したプリンタドライバ２０３による処理に対応する。なお、このフローチャートの処理は、図１に示したホストコンピュータ３０００のＣＰＵ１が外部メモリ１１に記憶されるプリンタドライバ２０３をＲＡＭ２上で実行することにより実現される。また、図中Ｓ１６０１〜Ｓ１６１５は各ステップを示す。なお、図６のステップＳ８０１〜Ｓ８０３と図１４のステップＳ１６０１〜Ｓ１６０３とは同様のため、その説明は省略する。
【０１５１】
プリンタドライバ２０３は、グラフィックエンジン２０２から印刷設定を受信した際、プリンタドライバが印刷処理を行う上で必要なプリンタドライバ情報を格納するＲＡＭ２上に確保されたメモリ領域を初期化する。このメモリ領域には、印刷部数をカウントしておく部数カウンタ（ＣＰ）が存在し、プリンタドライバ２０３は、この部数カウンタ（ＣＰ）を「０」で初期化しておく。また、同メモリ領域には１部分のジョブを保存したかどうかを判断する保存フラグ（ＳＲ）が存在し、プリンタドライバ２０３は、この保存フラグ（ＳＲ）を「ＯＦＦ」で初期化しておく（Ｓ１６０４）。
【０１５２】
次のステップＳ１６０５については、図６のステップＳ８０５と同様のため、その説明は省略する。
【０１５３】
次に、プリンタドライバ２０３は、グラフィックエンジン２０２より、印刷開始要求を受信した場合、これから１部分のジョブの保存を開始するか、もしくは既に１部分のジョブは保存されているかを示すため、保存フラグ（ＳＲ）にＯＮを設定し（Ｓ１６０６）、プリンタドライバ２０３は、１ページ分の印刷処理を開始する（Ｓ１６０７）。
【０１５４】
続いてのステップＳ１６０８，Ｓ１６０９については、図６のステップＳ８０６，Ｓ８０７と同様のため、その説明は省略するが、ステップＳ１６０９では、１ページ分の印刷ジョブの保存処理のみを行うものとする。
【０１５５】
ステップＳ１６１０において、プリンタドライバ２０３は、１ページ分の印刷処理を終了する。
【０１５６】
アプリケーション２０１が印刷設定の変更要求をグラフィックエンジン２０２に対して行った場合、プリンタドライバ２０３は、グラフィックエンジン２０２より、変更対象の印刷設定を受信することになるため、ステップＳ１６１１において、プリンタドライバ２０３は、変更対象の印刷設定を受信したか否かを判断する。
【０１５７】
ステップＳ１６１１で、プリンタドライバ２０３が、変更対象の印刷設定を受信したと判断した場合には、プリンタドライバ２０３は、印刷設定変更後の印刷処理を行う上で必要なプリンタドライバ情報を格納するＲＡＭ２上に確保されたメモリ領域（メモリ１）を初期化する。この時、ステップＳ１６０４と同様に、プリンタドライバ２０３は、このメモリ１に存在する部数カウンタ（ＣＰ＜ＮＥＷ＞）は「０」で初期化するる。また、プリンタドライバ２０３は、同メモリ１に存在する保存フラグ（（ＳＲ＜ＮＥＷ＞）も「ＯＦＦ」で初期化する（Ｓ１６１２）。
【０１５８】
次に、プリンタドライバ２０３は、グラフィックエンジン２０２より、新たに印刷処理に使われるのに必要なプリンタドライバ情報を格納するメモリ領域（メモリ１）と、これまで印刷処理に使われていたプリンタドライバ情報を格納していたメモリ領域（メモリ２）を渡され、メモリ２からメモリ１へ必要なプリンタドライバ情報を引き継ぐための要求をグラフィックエンジン２０２より受信する（Ｓ１６１３）。
【０１５９】
そして、プリンタドライバ２０３は、これまで印刷処理に使われていたプリンタドライバ情報を格納していたメモリ領域（メモリ２）が持つ保存フラグ（ＳＲ）をプリンタドライバが印刷設定変更後の印刷処理を行う上で必要なプリンタドライバ情報を格納するメモリ領域（メモリ１）が持つ保存フラグ（ＳＲ＜ＮＥＷ＞）にコピーする。また、プリンタドライバ２０３は、保存フラグＳＲの設定を「ＯＦＦ」にしておく。更に、後にメモリ２のプリンタドライバ情報は参照できなくなるため、プリンタドライバ２０３は、メモリ２が持っていた部数カウンタ（ＣＰ）の値もメモリ１が持つ部数カウンタ（ＣＰ＜ＮＥＷ＞）にコピーしておく（Ｓ１６１４）。
【０１６０】
次に、プリンタドライバ２０３は、グラフィックエンジン２０２より、これまで印刷処理に使われていたプリンタドライバ情報を格納していたメモリ領域（メモリ２）のプリンタドライバ情報を破棄するための要求（現在のプリンタドライバ情報破棄要求）を受信すると（Ｓ１６１５）、続いて、プリンタドライバ２０３は、これまで印刷処理に使われていたプリンタドライバ情報を格納していたメモリ領域（メモリ２）のプリンタドライバ情報を破棄するための処理（後述する図１６に示すプリンタドライバ情報破棄処理）を実行し（Ｓ１６１６）、ステップＳ１６１７に移行する。なお、メモリ２のプリンタドライバ情報破棄後は、メモリ１が印刷処理を行う際に参照されることになるため、新たに印刷処理に使われるのに必要なプリンタドライバ情報を格納するメモリ領域（メモリ１）の部数カウンタ（ＣＰ＜ＮＥＷ＞）や保存フラグ（ＳＲ＜ＮＥＷ＞）は、印刷処理中に参照される部数カウンタ（ＣＰ）や保存カウンタ（ＳＲ）として扱われることになる。
【０１６１】
次に、プリンタドライバ２０３は、印刷終了要求を受信したか否かを判断し（Ｓ１６１７）、受信していないと判断した場合（即ち、アプリケーション２０１が次のページの印刷処理を実施する場合）には、プリンタドライバ２０３は、次のページの印刷処理を行うため、ステップＳ１６０７に戻り、次のページを印刷するための処理を繰り返す。
【０１６２】
一方、ステップＳ１６１７で、プリンタドライバ２０３が、印刷終了要求を受信したと判断した場合には、印刷終了するための処理（ステップＳ１６１８，Ｓ１６１９）を実行する。なお、図１４内には示していないが、プリンタドライバ２０３は、ステップＳ１６１７において印刷終了要求を受信した際にも、印刷ジョブを終了させるために必要となるプリンタ記述言語の生成処理を行い、部数カウンタ（ＣＰ）が「０」であれば、該プリンタ記述言語を保存中の印刷ジョブに追加し、印刷ジョブの保存を完了することになる。ここで、ステップＳ１６１８，Ｓ１６１９については、図６のステップＳ８０９，Ｓ８１０と同様のため、その説明は省略する。
【０１６３】
次に、図９の処理に図１３での処理を考慮した場合の処理を図１５で示すフローチャートを用いて説明する。
【０１６４】
図１５は、本発明の印刷制御装置における第８の制御処理手順の一例を示すフローチャートであり、アプリケーションによりハンドルの破棄要求が発生され、プリンタドライバ２０３がプリンタドライバ情報破棄要求を受信した場合の、アプリケーション２０１が印刷設定の変更要求を行うことを考慮した、プリンタドライバの処理に対応する。なお、このフローチャートの処理は、図１に示したホストコンピュータ３０００のＣＰＵ１が外部メモリ１１に記憶されるプリンタドライバ２０３をＲＡＭ２上で実行することにより実現される。また、図中Ｓ１７０１〜Ｓ１７０２は各ステップを示す。
【０１６５】
まず、アプリケーション２０１がグラフィックエンジン２０２に対してハンドルの破棄要求を行うと、プリンタドライバ２０３は、プリンタドライバ２０３が印刷処理を行う上で必要なプリンタドライバ情報を格納するメモリ領域のプリンタドライバ情報を破棄するための要求をグラフィックエンジン２０２より受信する（Ｓ１７０１）。
【０１６６】
次に、プリンタドライバ２０３は、これまで印刷処理に使われていたプリンタドライバ情報を格納していたメモリ領域のプリンタドライバ情報を破棄するための処理（後述する図１６で示すプリンタドライバ情報破棄処理）を実施し（Ｓ１７０２）、本フローチャートの処理を終了する。
【０１６７】
図１６は、本発明の印刷制御装置における第９の制御処理手順の一例を示すフローチャートであり、図１４のステップＳ１６１６，図１５のステップＳ１７０２に示したプリンタドライバ情報破棄処理に対応する。なお、このフローチャートの処理は、図１に示したホストコンピュータ３０００のＣＰＵ１が外部メモリ１１に記憶されるプリンタドライバ２０３をＲＡＭ２上で実行することにより実現される。また、図中Ｓ１８０１〜Ｓ１８０６は各ステップを示す。
【０１６８】
まず、プリンタドライバ２０３は、プリンタドライバ２０３が印刷処理を行う上で必要なプリンタドライバ情報を格納するメモリ領域に保持する保存フラグ（ＳＲ）に「ＯＮ」が設定されているか否かを判断し（Ｓ１８０１）、「ＯＮ」に設定されていない（「ＯＦＦ」に設定されていると判断した場合には、アプリケーション２０１から印刷処理が継続中であることを表すため、ステップＳ１８０６に処理を移行し、プリンタドライバ２０３は、印刷処理を行う上で必要なプリンタドライバ情報を格納するメモリ領域のプリンタドライバ情報の破棄処理のみを行い、本フローチャートの処理を終了する。
【０１６９】
一方、ステップＳ１８０１で、プリンタドライバ２０３が、プリンタドライバ２０３が印刷処理を行う上で必要なプリンタドライバ情報を格納するメモリ領域に保持する保存フラグ（ＳＲ）に「ＯＮ」が設定されていると判断した場合には、アプリケーション２０１の印刷要求が全て終わっていることになるので、プリンタドライバ２０３は、１部分の印刷ジョブをプリンタに送信するための処理を実行することになり、図１４のステップＳ１６０９で示した１部分の保存が完了した印刷ジョブを、プリンタドライバ２０３が確保したメモリ領域に読み込む（Ｓ１８０２）。
【０１７０】
続く、ステップＳ１８０３〜Ｓ１８０６の処理は、図９のステップＳ１１０３〜Ｓ１１０６と同様であるので、その説明は省略する。
【０１７１】
従って、アプリケーション２０１が印刷開始要求後に印刷設定を変更する場合にも、保存フラグ（ＳＲ）の判断により、プリンタドライバ２０３は、印刷ジョブの保存中にはプリンタ１５００への印刷ジョブの送信処理を行わずに、アプリケーション２０１からの印刷処理が全て完了し、印刷ジョブが完成した段階で適切にプリンタ１５００への印刷ジョブの送信処理を行うことができる。
【０１７２】
以上説明したように、本実施形態のプリントドライバ２０３は、印刷要求データの終了（図１４のＳ１６１７でＹｅｓ相当）前にプリンタドライバ破棄要求を受信した場合（図１４のＳ１６１５に相当）には、印刷ジョブデータの送信（図１６）は行わず、前記印刷要求データの終了後に前記破棄要求を受信するまで（図１４のＳ１６１９がＮｏになるまで）、前記印刷要求データのカウントを続行する（図１４のステップＳ１６０６〜Ｓ１６１９を繰り返す）ものである。
【０１７３】
以上、実施形態例を詳述したが、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、ＬＡＮ，ＷＡＮ等のネットワークを介して接続がなされ処理が行われるシステムであっても本発明を適用できることはいうまでもない。
【０１７４】
また、本発明は、丁合い印刷に関するものであるが、例え、印刷しようとしているアプリケーションの文書データが１ページだけで構成されるものであっても適用できることはいうまでもない。
【０１７５】
〔他の実施形態〕
上述の図１０で示した印刷ジョブの変換処理において、図７で示した印刷ジョブを保存する時点では、図６又は図１４に示した処理が実行されているため、プリンタドライバ２０３は、プリンタに丁合い印刷を指示することは分かっている。
【０１７６】
そのため、この印刷ジョブを保存する時点で、丁合い印刷を指示する命令を「ＯＮ」にして印刷ジョブデータを生成しておいてもよい。より具体的に示すと、プリンタドライバ２０３は、ＲＡＭ２のメモリ領域に格納される印刷設定情報等に基づいて、丁合い印刷指定命令，部数設定命令，用紙サイズ（及び用紙向き）の指定命令等をプリンタ記述言語で生成する際に、丁合い印刷指定命令を「ＯＮ」として生成するようにする。この場合、図１０に示したフローチャートは、図１７のフローで示すように、印刷ジョブに変換するために必要なプリンタ記述言語による印刷ジョブの変更処理は、部数を設定する命令を変更する処理だけとなる。その場合の処理を図１７のフローチャートを用いて説明する。
【０１７７】
図１７は、本発明の印刷制御装置における第１０の制御処理手順の一例を示すフローチャートであり、図１４のステップＳ１６１６，図１５のステップＳ１７０２に示したプリンタドライバ情報破棄処理に対応する。なお、このフローチャートの処理は、図１に示したホストコンピュータ３０００のＣＰＵ１が外部メモリ１１に記憶されるプリンタドライバ２０３をＲＡＭ２上で実行することにより実現される。また、図中Ｓ１９０１〜Ｓ１９０３は各ステップを示す。
【０１７８】
まず、プリンタドライバ２０３は、印刷ジョブデータの命令群の中から、部数を設定する命令（部数設定命令）を見つけ出すための検索を行う（Ｓ１９０１）。次に、検索した命令が部数を設定する命令（部数設定命令）かどうか確認する（Ｓ１９０２）。
【０１７９】
ステップＳ１９０２で、プリンタドライバ２０３は、検索した命令が部数を設定する命令（部数設定命令）であると判断した場合には、その命令で指定する部数情報を、図６のステップＳ８０９又は図１４のステップＳ１６０８の処理によりカウントしていた部数カウンタ（ＣＰ）の値に変更し（Ｓ１９０３）、本フローチャートの処理を終了する。
【０１８０】
一方、ステップＳ１９０２で、プリンタドライバ２０３が、検索した命令が部数を設定する命令（部数設定命令）でないと判断した場合には、ステップＳ１９０１の処理に戻り、検索処理を繰り返す。
【０１８１】
さらに、図１０や図１７で示した印刷ジョブデータ変換処理において、検索処理を行わず、図７で示した印刷ジョブを保存していく過程で、部数を設定する命令（部数設定命令）や丁合い印刷を指示する命令（丁合い印刷指定命令）を保存する際に、保存ジョブの先頭からのオフセット等、その命令を保存した位置を、プリンタドライバ２０３が印刷処理を行う上で必要なプリンタドライバ情報を格納するメモリ領域に記憶しておき、図９のステップＳ１１０３又は、図１３のステップＳ１５０９、図１６のステップＳ１８０３の印刷ジョブデータ変換処理時に、上記記憶した位置（部数設定命令保存位置，丁合い印刷指示命令保存位置）にあるプリンタ記述言語（部数設定命令，丁合い印刷指示命令）を直接変更するように構成してもよい。その場合、図７で示す印刷ジョブの保存処理のフローは、以下、図１８に示すフローチャートの処理となる。
【０１８２】
図１８は、本発明の印刷制御装置における第１１の制御処理手順の一例を示すフローチャートであり、図６のステップＳ８０７，図１４のステップＳ１６０９に示した印刷ジョブの保存処理に対応する。なお、このフローチャートの処理は、図１に示したホストコンピュータ３０００のＣＰＵ１が外部メモリ１１に記憶されるプリンタドライバ２０３をＲＡＭ２上で実行することにより実現される。また、図中Ｓ２００１〜Ｓ２００６は各ステップを示す。
【０１８３】
ステップＳ２００１，Ｓ２００２は、図７で示したステップＳ９０１，Ｓ９０２と同様であるため、その説明は省略する。
【０１８４】
次に、プリンタドライバ２０３は、ステップＳ２００２で保存したプリンタ記述言語が、部数を設定する命令（部数設定命令）だったか否かを確認し（Ｓ２００３）、部数を設定する命令（部数設定命令）だったと判断した場合には、プリンタドライバ２０３は、その命令を保存しているジョブのどの位置に保存したかの情報を、部数設定命令位置として、プリンタドライバ２０３が印刷処理を行う上で必要な情報を格納するメモリ領域に設定する（Ｓ２００４）。
【０１８５】
一方、ステップＳ２００３で、プリンタドライバ２０３は、ステップＳ２００２で保存したプリンタ記述言語が、部数を設定する命令（部数設定命令）でなかったと判断した場合には、プリンタドライバ２０３は、ステップＳ２００２で保存したプリンタ記述言語が、丁合い印刷を指示する命令（丁合い印刷指示命令）だったか否かを確認する（Ｓ２００５）。
【０１８６】
ステップＳ２００５で、プリンタドライバ２０３が、ステップＳ２００２で保存したプリンタ記述言語が、丁合い印刷を指示する命令（丁合い印刷指示命令）だったと判断した場合には、プリンタドライバ２０３は、その命令を保存しているジョブのどの位置に保存したかの情報を丁合い印刷指示命令位置として、格納するメモリ領域に設定する（Ｓ２００６）。
【０１８７】
一方、ステップＳ２００５で、プリンタドライバ２０３が、ステップＳ２００２で保存したプリンタ記述言語が、丁合い印刷を指示する命令（丁合い印刷指示命令）でなかったと判断した場合には、丁合い印刷指示命令位置の記憶は行わない。
【０１８８】
従って、プリンタドライバ２０３は、印刷ジョブデータの変換処理時には、プリンタドライバ２０３が印刷処理を行う上で必要な情報を格納するメモリ領域を参照し、そこに設定された位置情報を元に、部数設定命令と丁合い印刷指示命令に対応するプリンタ記述言語を置き換えればよいだけとなる。
【０１８９】
以上説明したように、本実施形態のプリンタドライバ２０３は、印刷ジョブデータの生成時に、前記印刷ジョブデータ内の部数設定命令位置，丁合い印刷指示命令位置とをＲＡＭ２内の印刷処理を行う上で必要な情報を格納するメモリ領域に記憶しておき、該記憶される前記印刷ジョブデータ内の部数設定命令位置，丁合い印刷指示命令位置に、部数カウンタ（ＣＰ）のカウント値，丁合い印刷指示を有効にする情報を設定するように前記印刷ジョブデータを変更するものである。
【０１９０】
また、図１７で示したように、印刷ジョブを保存する時点で、丁合い印刷を指示する命令を「ＯＮ」として発行しておく場合においては、部数設定命令の位置情報のみを記憶しておき、印刷ジョブデータの変換処理時には、プリンタドライバ２０３が印刷処理を行う上で必要な情報を格納するメモリ領域を参照し、そこに設定された位置情報を元に、部数設定命令に対応するプリンタ記述言語を置き換えればよいことはいうまでもない。
【０１９１】
また、プリンタドライバ２０３は、図７に示した印刷ジョブを保存していく過程で、部数設定命令や丁合い印刷指定命令を保存せず、図１０で示した印刷ジョブデータ変換処理、プリンタ１５００が丁合い印刷を実現するために必要な箇所に該プリンタ記述言語を追加するように構成してもよい。
【０１９２】
また、図７で示した処理により保存される印刷ジョブは、１部分のみとしたが、プリンタドライバ２０３は、図６のステップＳ８０６や図１４のステップＳ１６０８の判断を行わず、常に、図６のステップＳ８０７や図１４のステップＳ１６０９の処理を行うようにし、全部数のジョブを個々に保存し、その中から１つだけを選択して印刷ジョブデータの変換処理を施した上で、プリンタ１５００への送信処理を行うように構成してもよい。つまり、プリンタドライバ２０３は、印刷開始要求を受信した場合、常に、新たに保存ジョブを作成していくことで、最終的には部数分の保存ジョブが作成されることになる。その場合、図６で示したフローチャートの処理は、図１９に示すフローチャートの処理となる。
【０１９３】
図１９は、本発明の印刷制御装置における第１２の制御処理手順の一例を示すフローチャートであり、図１に示したホストコンピュータ３０００上で実行されるプリンタドライバ２０３による部数をカウントする処理と印刷ジョブを保存する処理に対応する。なお、このフローチャートの処理は、図１に示したホストコンピュータ３０００のＣＰＵ１が外部メモリ１１に記憶されるプリンタドライバ２０３をＲＡＭ２上で実行することにより実現される。また、図中Ｓ８０１〜Ｓ８０５，Ｓ８０７，Ｓ８０８，Ｓ８１０は各ステップを示す。
【０１９４】
各ステップＳ８０１〜Ｓ８０５，Ｓ８０７，Ｓ８０８，Ｓ８１０は、図６と同様のため、その説明は割愛する。
【０１９５】
図１９のフローチャートの処理により、保存ジョブの量が増えることにより、スループットの低下が予想されるが、丁合い印刷実現のために、それぞれのジョブは同一のはずであり、それぞれのジョブが同一に作成できたかどうかの確認を厳密に行うことが可能である。
【０１９６】
また、その場合、図６のステップＳ８０９で示すように印刷終了要求の受信回数を部数カウンタ（ＣＰ）によりカウントアップすることにより保存したジョブ数をカウントするステップを設けてもよいが、部数カウンタ（ＣＰ）の参照は行わず、図１０のステップＳ１２０３や図１７のステップＳ１９０３において、部数を設定する命令の部数情報を変換する時点で、保存された印刷ジョブの保存数を確認（カウント）し、その確認した印刷ジョブの保存数で印刷ジョブデータ変換を行ってもよい。
【０１９７】
また、図１９のフローチャートは、図６のフローの変形として説明したが、図１４のフローについても同様に変形して実行することが可能である。
【０１９８】
即ち、プリンタドライバ２０３は、図１４のステップＳ１６０８の判断を行わず、常に、図１４のステップＳ１６０９の処理を行うようにし、全部数のジョブを個々に保存し、その中から１つだけを選択して印刷ジョブデータの変換処理を施した上で、プリンタ１５００への送信処理を行うように構成する。
【０１９９】
なお、上記実施形態では、プリンタ１５００が、印刷部数と丁合い印刷を指定した印刷ジョブデータを受信した場合に、プリンタ１５００側で、前記印刷ジョブデータに設定された印刷部数の丁合い印刷処理もしくは印刷部数分の排紙トレイを使って文書単位の仕分け印刷処理を実行可能なプリンタである場合について説明したが、本実施形態のプリンタドライバ２０３は、プリンタの機能情報をプリンタから取得し（又は、予めプリンタドライバの詳細情報に設定しておき、該詳細情報から取得し）、該プリンタがプリンタ側で前記丁合い印刷処理，前記仕分け印刷処理のいずれも実行できないプリンタであると判断した場合には、指定部数の丁合い印刷を行うために１部の印刷を行うための印刷要求を前記指定部数分生成するアプリケーションプログラムにより連続して生成される前記印刷要求データを受信した場合でも、印刷ジョブデータのカウント，変換は行わず、各印刷要求データ毎に印刷ジョブデータを生成し、指定印刷部数分の印刷ジョブデータをプリンタに送信するように構成してもよい。
【０２００】
これにより、前記丁合い印刷機能や前記仕分け印刷機能がオプション機能となっているプリンタにおいて、該オプション機能が搭載されていないプリンタにも適用可能とすることができ、後付けで前記丁合い印刷機能や前記仕分け印刷機能のオプションを搭載した後も、同一のプリンタドライバにより、該プリンタ側の丁合い印刷機能や仕分け印刷機能を用いた丁合い印刷を行うことができる。
【０２０１】
なお、図３に示したプリントサーバコンピュータ４０００に上述したプリンタドライバ２０３と同等の機能を備えるように構成してもよい。
【０２０２】
詳細には、従来のプリンタドライバにより、指定部数の丁合い印刷を行うために１部の印刷を行うための印刷要求を前記指定部数分生成するアプリケーションプログラムにより連続して生成される前記印刷要求データから各印刷要求データ毎に生成され送信される前記指定部数分の印刷ジョブデータを、プリントサーバコンピュータ４０００が受信した場合に、該プリントサーバコンピュータ４０００は、該受信した前記指定部数分の印刷ジョブデータをカウントし、いずれか１つの印刷ジョブデータを選択し、該選択した印刷ジョブデータの部数設定命令に前記カウント値を変更設定するとともに、前記印刷ジョブデータの丁合い印刷指示命令として丁合い印刷指示を有効とする情報（ＯＮ）を変更設定するように前記いずれかの印刷ジョブデータを変更し、該変更した印刷ジョブデータのみを、プリントサーバコンピュータ４０００のプリントサブシステムを介してプリントサーバコンピュータ４０００にローカル接続されるプリンタ１５００に送信するように構成してもよい。
【０２０３】
なお、上記各実施形態及び各変形例のいずれか又は全てを合わせた構成も全て本発明に含まれるものである。
【０２０４】
以上、各実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０２０５】
以上説明したように、丁合い印刷機能もしくは、複数の排紙トレイを使って文書単位の仕分け印刷を機能として有するプリンタと、そのプリンタに接続されたパーソナルコンピュータ等の情報処理装置からなるシステムにおいて、アプリケーションが丁合い印刷を実現するために、同じ内容の印刷ジョブが複数分割されるような印刷要求を行ってくる場合に、アプリケーションが丁合い印刷のために、部数分生成しようとしている印刷ジョブ数を判断し、生成しようとしている部数分の印刷ジョブの中から１部分の印刷ジョブを取り出して保存し、１ジョブで丁合い印刷を実現するために、前記保存した印刷ジョブの部数設定情報を、アプリケーションが部数分生成しようといていた印刷ジョブ数に変更設定し、プリンタで丁合い印刷を実行するために、前記保存した印刷ジョブの丁合い印刷指示情報を、プリンタに丁合い印刷を指示する情報に変更設定して、指定部数を丁合い印刷する１つの印刷ジョブデータとしてプリンタに送信することを可能にすることにより、指定部数の丁合い印刷指示を、部数分のジョブに分割して丁合い印刷を実現しようとするアプリケーションの仕様に関わらず、プリンタの有する丁合い印刷機能を用いて前記指定部数の丁合い印刷を実行することができ、指定部数の丁合い印刷を実現するために１部に設定された同じ内容の印刷ジョブが複数に分割されてプリンタに送信されてしまうことに起因する従来の各種問題点を解決することができる。
【０２０６】
従って、丁合い印刷のために部数分の印刷ジョブが分けられるようなアプリケーションプログラムからの印刷要求に対し、１ジョブでその部数の丁合い印刷を実現することができる等の効果を奏する。
【０２０７】
以下、図２０に示すメモリマップを参照して本発明に係る印刷制御装置であるホストコンピュータ３０００等の情報処理装置で読み取り可能なデータ処理プログラムの構成について説明する。
【０２０８】
図２０は、本発明に係る印刷制御装置であるホストコンピュータ３０００等の情報処理装置で読み取り（読み出し）可能な各種データ処理プログラムを格納する記録媒体（記憶媒体）のメモリマップを説明する図である。
【０２０９】
なお、特に図示しないが、記録媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報，作成者等も記憶され、かつ、プログラム読み出し側のＯＳ等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【０２１０】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、インストールするプログラムやデータが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【０２１１】
本実施形態における図６，図７，図９，図１０，図１１，図１３，図１４，図１５，図１６，図１７，図１８，図１９に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、ＣＤ−ＲＯＭやフラッシュメモリやＦＤ等の記録媒体により、あるいはネットワークを介して外部の記録媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【０２１２】
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０２１３】
この場合、記録媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【０２１４】
プログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＤＶＤ−ＲＯＭ，磁気テープ，不揮発性のメモリカード，ＲＯＭ，ＥＥＰＲＯＭ，シリコンディスク等を用いることができる。
【０２１５】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２１６】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２１７】
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０２１８】
さらに、本発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバ，データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【図面の簡単な説明】
【０２１９】
【図１】本発明の一実施形態を示す印刷制御装置を適用可能な印刷システムの構成例を説明するブロック図である。
【図２】図１に示したホストコンピュータからプリンタに印刷ジョブデータを送信する際の流れを示した主要な機能ブロック図である。
【図３】図１に示したホストコンピュータ，プリンタを適用可能な印刷システムの一例を示すシステム構成図である。
【図４】本発明の印刷制御装置における印刷を行う場合の基本的な処理の流れを示すステータス図である。
【図５】図１に示したホストコンピュータ上で実行される丁合い印刷のために印刷ジョブを部数分分割するような印刷要求を行うアプリケーションの丁合い印刷処理手順の一例を示すフローチャートである。
【図６】本発明の印刷制御装置における第１の制御処理手順の一例を示すフローチャートである。
【図７】本発明の印刷制御装置における第２の制御処理手順の一例を示すフローチャートである。
【図８】図１に示したプリンタドライバが生成する印刷ジョブデータのデータ構造の一例を示す模式図である。
【図９】本発明の印刷制御装置における第３の制御処理手順の一例を示すフローチャートである。
【図１０】本発明の印刷制御装置における第４の制御処理手順の一例を示すフローチャートである。
【図１１】本発明の印刷制御装置における第５の制御処理手順の一例を示すフローチャートである。
【図１２】アプリケーションが印刷設定を変更する場合の処理の流れを示すステータス図である。
【図１３】本発明の印刷制御装置における第６の制御処理手順の一例を示すフローチャートである。
【図１４】本発明の印刷制御装置における第７の制御処理手順の一例を示すフローチャートである。
【図１５】本発明の印刷制御装置における第８の制御処理手順の一例を示すフローチャートである。
【図１６】本発明の印刷制御装置における第９の制御処理手順の一例を示すフローチャートである。
【図１７】本発明の印刷制御装置における第１０の制御処理手順の一例を示すフローチャートである。
【図１８】本発明の印刷制御装置における第１１の制御処理手順の一例を示すフローチャートである。
【図１９】本発明の印刷制御装置における第１２の制御処理手順の一例を示すフローチャートである。
【図２０】本発明に係る印刷制御装置であるホストコンピュータ等の情報処理装置で読み取り（読み出し）可能な各種データ処理プログラムを格納する記録媒体（記憶媒体）のメモリマップを説明する図である。
【図２１】プリンタドライバの詳細設定用のユーザインタフェース（ＵＩ）の一例を示す模式図である。
【図２２】アプリケーションの印刷指示ユーザインタフェース（ＵＩ）の一例を示す模式図である。
【符号の説明】
【０２２０】
３０００  ホストコンピュータ
１  ＣＰＵ
２  ＲＡＭ
１１  外部メモリ
１５００  プリンタ
１９  ＲＡＭ
２０１  アプリケーション
２０２  グラフィックエンジン
２０３  プリンタドライバ
２０４  プリントサブシステム
３０１  ネットワーク
【図１】
2006011830.tif 000003
【図２】
2006011830.tif 000004
【図３】
2006011830.tif 000005
【図４】
2006011830.tif 000006
【図５】
2006011830.tif 000007
【図６】
2006011830.tif 000008
【図７】
2006011830.tif 000009
【図８】
2006011830.tif 000010
【図９】
2006011830.tif 000011
【図１０】
2006011830.tif 000012
【図１１】
2006011830.tif 000013
【図１２】
2006011830.tif 000014
【図１３】
2006011830.tif 000015
【図１４】
2006011830.tif 000016
【図１５】
2006011830.tif 000017
【図１６】
2006011830.tif 000018
【図１７】
2006011830.tif 000019
【図１８】
2006011830.tif 000020
【図１９】
2006011830.tif 000021
【図２０】
2006011830.tif 000022
【図２１】
2006011830.tif 000023
【図２２】
2006011830.tif 000024