(57)【特許請求の範囲】
【請求項１】
プリンタに送信すべき印刷ジョブを生成するプリンタドライバを有するホストコンピュータとしての情報処理装置における印刷制御方法であって、
アプリケーションからグラフィックエンジンを介して受け取る印刷命令を中間コードに変換し、中間コードファイルとしてスプールする中間コード変換工程と、
印刷ダイアログから入力された印刷設定を前記プリンタドライバから取得し、指定されている部数を取得する取得工程と、
前記プリンタが一回の印刷動作で印刷可能な制限部数を認識する認識工程と、
前記取得工程で取得された部数が前記認識工程で認識された制限部数より大きい場合に、１つの印刷ジョブにおいて印刷される部数が、前記認識工程で認識された制限部数以下となるように、前記取得工程で取得された部数を前記制限部数で割って得られる数の小数点以下を切り上げた値を印刷ジョブ数として、該印刷ジョブ数分、前記中間コード変換工程で生成された中間コードを繰り返しデスプールするデスプール工程と、
前記デスプール工程でデスプールされた中間コードに応じて、前記プリンタドライバを用いて前記制限部数以内の印刷部数が指定された複数の印刷ジョブを生成する印刷制御工程と、
を有することを特徴とする印刷制御方法。
【請求項２】
前記印刷制御工程は、各印刷ジョブで印刷される部数の総和が前記取得工程で取得された部数となるような複数の印刷ジョブを生成することを特徴とする請求項１に記載の印刷制御方法。
【請求項３】
前記印刷制御工程は、
前記取得工程で取得された指定部数ＵＮｕｍと、前記認識工程で認識した前記制限部数ＰＮｕｍとを比較する比較工程と、
前記比較工程での比較の結果、前記指定部数ＵＮｕｍが前記制限部数ＰＮｕｍよりも大きい場合に、ＵＮｕｍをＰＮｕｍで割った商Ｎ１及び余りＮ２に基づき、前記制限部数ＰＮｕｍ印刷する印刷ジョブをＮ１個と、Ｎ２部印刷する印刷ジョブを１個生成するジョブ生成工程と、
を含むことを特徴とする請求項１または２に記載の印刷制御方法。
【請求項４】
前記ジョブ生成工程は、
前記指定部数ＵＮｕｍと、前記制限部数ＰＮｕｍを比較した結果、前記指定部数ＵＮｕｍが前記制限部数ＰＮｕｍよりも大きい場合に、ＵＮｕｍをＰＮｕｍで割った商Ｎ１及び余りＮ２を求め、Ｎ２が０でない場合には、ＵＮｕｍを（Ｎ１＋１）で割った商Ｎ３及び余りＮ４に基づき、Ｎ３部印刷する印刷ジョブをＮ１個と、Ｎ４部印刷する印刷ジョブを１個生成することを特徴とする請求項３に記載の印刷制御方法。
【請求項５】
前記制限部数は、前記プリンタに備えられた全排紙口の数であることを特徴とする請求項１乃至４のいずれか一つに記載の印刷制御方法。
【請求項６】
前記制限部数は、前記プリンタに備えられた全排紙口のうち、有効な排紙口の数であることを特徴とする請求項１乃至４のいずれか一つに記載の印刷制御方法。
【請求項７】
前記取得工程では、排紙口の指定を取得することが可能であって、前記制限部数は前記取得工程で指定された排紙口の数であることを特徴とする請求項１乃至４のいずれか一つに記載の印刷制御方法。
【請求項８】
プリンタに送信すべき印刷ジョブを生成するプリンタドライバを有するホストコンピュータとしての印刷制御装置であって、
アプリケーションからグラフィックエンジンを介して受け取る印刷命令を中間コードに変換し、中間コードファイルとしてスプールする中間コード変換手段と、
印刷ダイアログから入力された印刷設定を前記プリンタドライバから取得し、指定されている部数を取得する取得手段と、
前記プリンタが一回の印刷動作で印刷可能な制限部数を認識する認識手段と、
前記取得手段で取得した部数が前記認識手段で認識した制限部数より大きい場合に、１つの印刷ジョブにおいて印刷される部数が、前記認識手段で認識された制限部数以下となるように、前記取得工程で取得された部数を前記制限部数で割って得られる数の小数点以下を切り上げた値を印刷ジョブ数として、該印刷ジョブ数分、前記中間コード変換工程で生成された中間コードを繰り返しデスプールするデスプール手段と、
前記デスプール手段でデスプールされた中間コードに応じて、前記プリンタドライバを用いて前記制限部数以内の印刷部数が指定された複数の印刷ジョブを生成する印刷制御手段と、
を有することを特徴とする印刷制御装置。
【請求項９】
前記印刷制御手段は、
前記取得手段で取得された指定部数ＵＮｕｍと、前記認識手段で認識した前記制限部数ＰＮｕｍとを比較する比較手段と、
前記比較手段による比較の結果、前記指定部数ＵＮｕｍが前記制限部数ＰＮｕｍよりも大きい場合には、ＵＮｕｍをＰＮｕｍで割り、商Ｎ１と余りＮ２を求め、制限部数ＰＮｕｍ印刷するジョブをＮ１個と、Ｎ２部印刷するジョブを１個生成するジョブ生成手段と、
を含むことを特徴とする請求項８に記載の印刷制御装置。
【請求項１０】
前記ジョブ生成手段は、
前記指定部数ＵＮｕｍと、前記制限部数ＰＮｕｍを比較した結果、前記指定部数ＵＮｕｍが前記制限部数ＰＮｕｍよりも大きい場合に、ＵＮｕｍをＰＮｕｍで割った商Ｎ１及び余りＮ２を求め、Ｎ２が０でない場合には、ＵＮｕｍを（Ｎ１＋１）で割った商Ｎ３及び余りＮ４に基づき、Ｎ３部印刷するジョブをＮ１個と、Ｎ４部印刷するジョブを１個生成することを特徴とする請求項８または９に記載の印刷制御装置。
【請求項１１】
プリンタに送信すべき印刷ジョブを生成するプリンタドライバを有するホストコンピュータとしての印刷制御装置であって、
アプリケーションからグラフィックエンジンを介して受け取る印刷命令を中間コードに変換し、中間コードファイルとしてスプールする中間コード変換手段と、
印刷ダイアログから入力された印刷設定を前記プリンタドライバから取得し、指定されている部数を取得する取得手段と、
前記プリンタが一回の印刷動作で印刷可能な制限部数を認識する認識手段と、
前記取得手段で取得された指定部数ＵＮｕｍと、前記認識手段で認識した前記制限部数ＰＮｕｍとを比較する比較手段と、
前記取得手段で取得された部数が前記認識手段で認識された制限部数より大きい場合に、取得された部数を制限部数で割った商をデスプール回数として、前記中間コード変換手段で生成された中間コードを算出された当該デスプール回数分デスプールし、取得された部数を制限部数で割った余りの部数としての中間コードをデスプールするデスプール手段と、
前記デスプール手段で前記デスプール回数分デスプールされた中間コードに応じて１つの印刷ジョブとして前記プリンタドライバを用いてプリンタ制御コマンドからなる擬似印刷データを生成し、該擬似印刷データを前記制限部数印刷する印刷ジョブを生成する印刷制御手段と、を有し、
前記デスプール手段は、前記比較手段による比較の結果、前記指定部数ＵＮｕｍが前記制限部数ＰＮｕｍよりも大きい場合には、ＵＮｕｍをＰＮｕｍで割った商Ｎ１及び余りＮ２に基づいて、前記中間コード変換手段で生成された中間コードをＮ１のデスプール回数分連続させてデスプールし、その後、前記中間コード変換手段で生成された中間コードをＮ２を部数としてデスプールし、
前記印刷制御手段は、Ｎ１のデスプール回数分デスプールされた中間コードに応じてＰＮｕｍ部数指定された擬似印刷データを生成し、その後デスプールされた中間コードに応じてＮ２部数指定された印刷データを生成することを特徴とする印刷制御装置。
【請求項１２】
前記制限部数は、前記プリンタに備えられた全排紙口の数であることを特徴とする請求項８乃至１１の何れかに記載の印刷制御装置。
【請求項１３】
前記制限部数は、前記プリンタに備えられた全排紙口のうち、有効な排紙口の数であることを特徴とする請求項８乃至１１の何れかに記載の印刷制御装置。
【請求項１４】
前記取得手段は、排紙口の指定を取得することが可能であって、前記制限部数は前記取得手段で指定された排紙口の数であることを特徴とする請求項８乃至１１の何れかに記載の印刷制御装置。
【請求項１５】
プリンタに送信すべき印刷ジョブを生成するプリンタドライバとしての印刷制御プログラムを格納したコンピュータ可読メモリであって、
前記印刷制御プログラムはコンピュータに、
アプリケーションからグラフィックエンジンを介して受け取る印刷命令を中間コードに変換し、中間コードファイルとしてスプールする中間コード変換工程と、
印刷ダイアログから入力された印刷設定を前記プリンタドライバから取得し、指定されている部数を取得する取得工程と、
前記プリンタが一回の印刷動作で印刷可能な制限部数を認識する認識工程と、
前記取得工程で取得された部数が前記認識工程で認識された制限部数より大きい場合に、１つの印刷ジョブにおいて印刷される部数が、前記認識工程で認識された制限部数以下となるように、前記取得工程で取得された部数を前記制限部数で割って得られる数の小数点以下を切り上げた値を印刷ジョブ数として、該印刷ジョブ数分、前記中間コード変換工程で生成された中間コードを繰り返しデスプールするデスプール工程と、
前記デスプール工程でデスプールされた中間コードに応じて、前記制限部数以内の印刷部数が指定された複数の印刷ジョブを生成する印刷制御工程と、
を実行させることを特徴とする印刷制御プログラムを格納したコンピュータ可読メモリ。
【請求項１６】
前記印刷制御プログラムは、
ユーザにより指定された部数を取得する取得工程と、
前記取得工程で取得された指定部数ＵＮｕｍと、前記認識工程で認識した前記制限部数ＰＮｕｍとを比較する比較工程と、
前記比較工程での比較の結果、前記指定部数ＵＮｕｍが前記制限部数ＰＮｕｍよりも大きい場合に、ＵＮｕｍをＰＮｕｍで割った商Ｎ１及び余りＮ２に基づき、制限部数ＰＮｕｍ印刷する印刷ジョブをＮ１個と、Ｎ２部印刷する印刷ジョブを１個生成するジョブ生成工程と、
を更にコンピュータに実行させることを特徴とする請求項１５に記載のコンピュータ可読メモリ。
【請求項１７】
前記ジョブ生成工程は、
前記指定部数ＵＮｕｍと、前記制限部数ＰＮｕｍを比較した結果、前記指定部数ＵＮｕｍが前記制限部数ＰＮｕｍよりも大きい場合に、ＵＮｕｍをＰＮｕｍで割った商Ｎ１及び余りＮ２を求め、Ｎ２が０でない場合には、ＵＮｕｍを（Ｎ１＋１）で割った商Ｎ３及び余りＮ４に基づき、Ｎ３部印刷する印刷ジョブをＮ１個と、Ｎ４部印刷する印刷ジョブを１個生成することを特徴とする請求項１６に記載のコンピュータ可読メモリ。
【請求項１８】
プリンタに送信すべき印刷ジョブを生成するプリンタドライバとしての印刷制御プログラムを格納したコンピュータ可読メモリであって、
前記印刷制御プログラムはコンピュータに、
アプリケーションからグラフィックエンジンを介して受け取る印刷命令を中間コードに変換し、中間コードファイルとしてスプールする中間コード変換工程と、
印刷ダイアログから入力された印刷設定を前記プリンタドライバから取得し、指定されている部数を取得する取得工程と、
前記プリンタが一回の印刷動作で印刷可能な制限部数を認識する認識工程と、
前記取得工程で取得された指定部数ＵＮｕｍと、前記認識工程で認識した前記制限部数ＰＮｕｍとを比較する比較工程と、
前記取得工程で取得された部数が前記認識工程で認識された制限部数より大きい場合に、取得された部数を制限部数で割った商をデスプール回数として、前記中間コード変換工程で生成された中間コードを算出された当該デスプール回数分デスプールし、取得された部数を制限部数で割った余りの部数としての中間コードをデスプールするデスプール工程と、
前記デスプール工程で前記デスプール回数分デスプールされた中間コードに応じて１つの印刷ジョブとして前記プリンタドライバを用いてプリンタ制御コマンドからなる擬似印刷データを生成し、該擬似印刷データを前記制限部数印刷する印刷ジョブを生成する印刷制御工程と、
を実行させ、
前記デスプール工程は、前記比較工程での比較の結果、前記指定部数ＵＮｕｍが前記制限部数ＰＮｕｍよりも大きい場合には、ＵＮｕｍをＰＮｕｍで割った商Ｎ１及び余りＮ２に基づいて、前記中間コード変換工程で生成された中間コードをＮ１のデスプール回数分連続させてデスプールし、その後、前記中間コード変換手段で生成された中間コードをＮ２を部数としてデスプールし、
前記印刷制御工程は、Ｎ１のデスプール回数分デスプールされた中間コードに応じてＰＮｕｍ部数指定された擬似印刷データを生成し、その後デスプールされた中間コードに応じてＮ２部数指定された印刷データを生成することを特徴とする印刷制御プログラムを格納したコンピュータ可読メモリ。
【請求項１９】
前記制限部数は、前記プリンタに備えられた全排紙口の数であることを特徴とする請求項１５乃至１８のいずれか一つに記載のコンピュータ可読メモリ。
【請求項２０】
前記制限部数は、前記プリンタに備えられた全排紙口のうち、有効な排紙口の数であることを特徴とする請求項１５乃至１８のいずれか一つに記載のコンピュータ可読メモリ。
【請求項２１】
前記取得工程では、排紙口の指定を取得することが可能であって、前記制限部数は前記取得工程で指定された排紙口の数であることを特徴とする請求項１５乃至１８のいずれか一つに記載のコンピュータ可読メモリ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プリンタを制御する印刷制御方法及び印刷制御装置並びに印刷制御プログラムを格納したコンピュータ可読メモリに関するものである。
【０００２】
【従来の技術】
近年の情報化時代の中で、プリンタを制御する印刷制御装置においても大量な情報処理をする必要性が生じてきた。そして、このような必要性に応える為、スプールデバイスの搭載や、排紙口の複数化、ステープル機能の付加などの処置が取られている。
【０００３】
従来情報処理システム（ホスト）を用いて、印刷出力装置（プリンタ）へ複数ページのデータを複数部印刷する場合には、該印刷データを指定された部数の回数だけプリンタへ転送していた。例えば、３ページの文書を３部出力する場合、図１９に示すようにホストから１ページから３ページのデータを３回プリンタへ転送することにより印刷データを所定部数印刷していた。これは、まったく同じデータを３回送ることになり印刷効率が悪かった。
【０００４】
これを改善し印刷効率を向上させるために、印刷データを記憶するスプールデバイスを設けたプリンタが存在する。この場合、ホストからは１ページから３ページのデータを１度送り、プリンタ内部でスプールデバイスに記憶し、記憶したデータを複数回（図１９の例では３回）使用して部数分の出力を実現していた。
【０００５】
また、排紙口を複数設けたプリンタも存在する。この場合、ホストからは１ページから３ページのデータを１度送り、各ページデータを受け取る度に部数回数だけ排出口を変えて印刷することで部数分の出力を実現していた。
【０００６】
【発明が解決しようとする課題】
しかしながら、プリンタにおいて一回の印刷動作で印刷可能な部数には制限がある。例えば、スプールデバイスを用いてプリンタで複数部数を実現しようとしても、印刷データの総容量がスプールデバイスの容量を越える場合には一回の印刷動作では対応することができない。また、スプールデバイスの容量以下の印刷データであっても、ハードウェアの制限で上限部数が決められる場合もある。例えば複数の排紙口を設けたプリンタにおいては、排紙口の数を超える部数が指定された場合には排紙口部分の物理的な制限によって排紙口数分の部数しか印刷されない。
【０００７】
複写機では、排紙口数を超える部数が指定された場合には原稿を再度読み取ることによりこの制限をなくしているものもある。しかし、プリンタの場合はプリンタ内部に印刷データを記憶するスプールデバイスを設けたとしても印刷データサイズがスプールデバイスの容量を超える場合などがあるため、本質的に解決することはできない。
【０００８】
このため、従来の技術では、ユーザが望む部数がプリンタの制限を超える場合には、プリンタの制限部数まで印刷したところで完全に印刷を中止してしまうか、もしくは制限部数以上は全く印刷することができないという問題があった。
【０００９】
本発明は上記の従来技術の課題を解決するためになされたもので、その目的とするところは、プリンタの制限部数を越えてもユーザの要求する部数の印刷を可能とする印刷制御方法及び印刷制御装置並びに印刷制御プログラムを格納したコンピュータ可読メモリを提供することにある。
【００１０】
【課題を解決するための手段】
上記目的を達成するため、本発明に係る印刷制御方法にあっては、
プリンタに送信すべき印刷ジョブを生成するプリンタドライバを有するホストコンピュータとしての情報処理装置における印刷制御方法であって、
アプリケーションからグラフィックエンジンを介して受け取る印刷命令を中間コードに変換し、中間コードファイルとしてスプールする中間コード変換工程と、
印刷ダイアログから入力された印刷設定を前記プリンタドライバから取得し、指定されている部数を取得する取得工程と、
前記プリンタが一回の印刷動作で印刷可能な制限部数を認識する認識工程と、
前記取得工程で取得された部数が前記認識工程で認識された制限部数より大きい場合に、１つの印刷ジョブにおいて印刷される部数が、前記認識工程で認識された制限部数以下となるように、前記取得工程で取得された部数を前記制限部数で割って得られる数の小数点以下を切り上げた値を印刷ジョブ数として、該印刷ジョブ数分、前記中間コード変換工程で生成された中間コードを繰り返しデスプールするデスプール工程と、
前記デスプール工程でデスプールされた中間コードに応じて、前記プリンタドライバを用いて前記制限部数以内の印刷部数が指定された複数の印刷ジョブを生成する印刷制御工程と、
を有することを特徴とする。
【００１１】
前記印刷制御工程は、各印刷ジョブで印刷される部数の総和が前記取得工程で取得された部数となるような複数の印刷ジョブを生成することを特徴とする。
【００１２】
前記印刷制御工程は、
前記取得工程で取得された指定部数ＵＮｕｍと、前記認識工程で認識した前記制限部数ＰＮｕｍとを比較する比較工程と、
前記比較工程での比較の結果、前記指定部数ＵＮｕｍが前記制限部数ＰＮｕｍよりも大きい場合に、ＵＮｕｍをＰＮｕｍで割った商Ｎ１及び余りＮ２に基づき、前記制限部数ＰＮｕｍ印刷する印刷ジョブをＮ１個と、Ｎ２部印刷する印刷ジョブを１個生成するジョブ生成工程と、
を含むことを特徴とする。
【００１３】
前記ジョブ生成工程は、
前記指定部数ＵＮｕｍと、前記制限部数ＰＮｕｍを比較した結果、前記指定部数ＵＮｕｍが前記制限部数ＰＮｕｍよりも大きい場合に、ＵＮｕｍをＰＮｕｍで割った商Ｎ１及び余りＮ２を求め、Ｎ２が０でない場合には、ＵＮｕｍを（Ｎ１＋１）で割った商Ｎ３及び余りＮ４に基づき、Ｎ３部印刷する印刷ジョブをＮ１個と、Ｎ４部印刷する印刷ジョブを１個生成することを特徴とする。
【００１６】
前記取得工程では、排紙口の指定を取得することが可能であって、前記制限部数は前記取得工程で指定された排紙口の数であることを特徴とする。
【００１７】
上記目的を達成するため、本発明に係る第１の印刷制御装置にあっては、
プリンタに送信すべき印刷ジョブを生成するプリンタドライバを有するホストコンピュータとしての印刷制御装置であって、
アプリケーションからグラフィックエンジンを介して受け取る印刷命令を中間コードに変換し、中間コードファイルとしてスプールする中間コード変換手段と、
印刷ダイアログから入力された印刷設定を前記プリンタドライバから取得し、指定されている部数を取得する取得手段と、
前記プリンタが一回の印刷動作で印刷可能な制限部数を認識する認識手段と、
前記取得手段で取得した部数が前記認識手段で認識した制限部数より大きい場合に、１つの印刷ジョブにおいて印刷される部数が、前記認識手段で認識された制限部数以下となるように、前記取得工程で取得された部数を前記制限部数で割って得られる数の小数点以下を切り上げた値を印刷ジョブ数として、該印刷ジョブ数分、前記中間コード変換工程で生成された中間コードを繰り返しデスプールするデスプール手段と、
前記デスプール手段でデスプールされた中間コードに応じて、前記プリンタドライバを用いて前記制限部数以内の印刷部数が指定された複数の印刷ジョブを生成する印刷制御手段と、
を有することを特徴とする。
【００１８】
ここで、前記印刷制御手段は、
前記取得手段で取得された指定部数ＵＮｕｍと、前記認識手段で認識した前記制限部数ＰＮｕｍとを比較する比較手段と、
前記比較手段による比較の結果、前記指定部数ＵＮｕｍが前記制限部数ＰＮｕｍよりも大きい場合には、ＵＮｕｍをＰＮｕｍで割り、商Ｎ１と余りＮ２を求め、制限部数ＰＮｕｍ印刷するジョブをＮ１個と、Ｎ２部印刷するジョブを１個生成するジョブ生成手段と、
を含むことを特徴とする。
【００１９】
また、前記ジョブ生成手段は、
前記指定部数ＵＮｕｍと、前記制限部数ＰＮｕｍを比較した結果、前記指定部数ＵＮｕｍが前記制限部数ＰＮｕｍよりも大きい場合に、ＵＮｕｍをＰＮｕｍで割った商Ｎ１及び余りＮ２を求め、Ｎ２が０でない場合には、ＵＮｕｍを（Ｎ１＋１）で割った商Ｎ３及び余りＮ４に基づき、Ｎ３部印刷するジョブをＮ１個と、Ｎ４部印刷するジョブを１個生成することを特徴とする。
【００２０】
本発明に係る第２の印刷制御装置にあっては、
プリンタに送信すべき印刷ジョブを生成するプリンタドライバを有するホストコンピュータとしての印刷制御装置であって、
アプリケーションからグラフィックエンジンを介して受け取る印刷命令を中間コードに変換し、中間コードファイルとしてスプールする中間コード変換手段と、
印刷ダイアログから入力された印刷設定を前記プリンタドライバから取得し、指定されている部数を取得する取得手段と、
前記プリンタが一回の印刷動作で印刷可能な制限部数を認識する認識手段と、
前記取得手段で取得された指定部数ＵＮｕｍと、前記認識手段で認識した前記制限部数ＰＮｕｍとを比較する比較手段と、
前記取得手段で取得された部数が前記認識手段で認識された制限部数より大きい場合に、取得された部数を制限部数で割った商をデスプール回数として、前記中間コード変換手段で生成された中間コードを算出された当該デスプール回数分デスプールし、取得された部数を制限部数で割った余りの部数としての中間コードをデスプールするデスプール手段と、
前記デスプール手段で前記デスプール回数分デスプールされた中間コードに応じて１つの印刷ジョブとして前記プリンタドライバを用いてプリンタ制御コマンドからなる擬似印刷データを生成し、該擬似印刷データを前記制限部数印刷する印刷ジョブを生成する印刷制御手段と、を有し、
前記デスプール手段は、前記比較手段による比較の結果、前記指定部数ＵＮｕｍが前記制限部数ＰＮｕｍよりも大きい場合には、ＵＮｕｍをＰＮｕｍで割った商Ｎ１及び余りＮ２に基づいて、前記中間コード変換手段で生成された中間コードをＮ１のデスプール回数分連続させてデスプールし、その後、前記中間コード変換手段で生成された中間コードをＮ２を部数としてデスプールし、
前記印刷制御手段は、Ｎ１のデスプール回数分デスプールされた中間コードに応じてＰＮｕｍ部数指定された擬似印刷データを生成し、その後デスプールされた中間コードに応じてＮ２部数指定された印刷データを生成することを特徴とする。
【００２１】
ここで、前記取得手段で取得された指定部数ＵＮｕｍと、前記認識手段で認識した前記制限部数ＰＮｕｍとを比較する比較手段をさらに有し、
前記デスプール手段は、前記比較手段による比較の結果、前記指定部数ＵＮｕｍが前記制限部数ＰＮｕｍよりも大きい場合には、ＵＮｕｍをＰＮｕｍで割った商Ｎ１及び余りＮ２に基づいて、前記中間コード変換手段で生成された中間コードをＮ１のデスプール回数分連続させてデスプールし、その後、前記中間コード変換手段で生成された中間コードをＮ２を部数としてデスプールし、
前記印刷制御手段は、Ｎ１のデスプール回数分デスプールされた中間コードに応じてＰＮｕｍ部数指定された擬似印刷データを生成し、その後デスプールされた中間コードに応じてＮ２部数指定された印刷データを生成することを特徴とする。
【００２２】
また、前記取得手段は、排紙口の指定を取得することが可能であって、前記制限部数は前記取得手段で指定された排紙口の数であることを特徴とする。
【００２３】
上記目的を達成するため、本発明に係る第１の記憶媒体は、
プリンタに送信すべき印刷ジョブを生成するプリンタドライバとしての印刷制御プログラムを格納したコンピュータ可読メモリであって、
前記印刷制御プログラムはコンピュータに、
アプリケーションからグラフィックエンジンを介して受け取る印刷命令を中間コードに変換し、中間コードファイルとしてスプールする中間コード変換工程と、
印刷ダイアログから入力された印刷設定を前記プリンタドライバから取得し、指定されている部数を取得する取得工程と、
前記プリンタが一回の印刷動作で印刷可能な制限部数を認識する認識工程と、
前記取得工程で取得された部数が前記認識工程で認識された制限部数より大きい場合に、１つの印刷ジョブにおいて印刷される部数が、前記認識工程で認識された制限部数以下となるように、前記取得工程で取得された部数を前記制限部数で割って得られる数の小数点以下を切り上げた値を印刷ジョブ数として、該印刷ジョブ数分、前記中間コード変換工程で生成された中間コードを繰り返しデスプールするデスプール工程と、
前記デスプール工程でデスプールされた中間コードに応じて、前記制限部数以内の印刷部数が指定された複数の印刷ジョブを生成する印刷制御工程と、
を実行させることを特徴とする。
【００２４】
ここで、前記印刷制御プログラムは、
ユーザにより指定された部数を取得する取得工程と、
前記取得工程で取得された指定部数ＵＮｕｍと、前記認識工程で認識した前記制限部数ＰＮｕｍとを比較する比較工程と、
前記比較工程での比較の結果、前記指定部数ＵＮｕｍが前記制限部数ＰＮｕｍよりも大きい場合に、ＵＮｕｍをＰＮｕｍで割った商Ｎ１及び余りＮ２に基づき、制限部数ＰＮｕｍ印刷する印刷ジョブをＮ１個と、Ｎ２部印刷する印刷ジョブを１個生成するジョブ生成工程と、
を更にコンピュータに実行させることを特徴とする。
【００２５】
また、前記ジョブ生成工程は、
前記指定部数ＵＮｕｍと、前記制限部数ＰＮｕｍを比較した結果、前記指定部数ＵＮｕｍが前記制限部数ＰＮｕｍよりも大きい場合に、ＵＮｕｍをＰＮｕｍで割った商Ｎ１及び余りＮ２を求め、Ｎ２が０でない場合には、ＵＮｕｍを（Ｎ１＋１）で割った商Ｎ３及び余りＮ４に基づき、Ｎ３部印刷する印刷ジョブをＮ１個と、Ｎ４部印刷する印刷ジョブを１個生成することを特徴とする。
【００２６】
本発明に係る第２の記憶媒体は、
プリンタに送信すべき印刷ジョブを生成するプリンタドライバとしての印刷制御プログラムを格納したコンピュータ可読メモリであって、
前記印刷制御プログラムはコンピュータに、
アプリケーションからグラフィックエンジンを介して受け取る印刷命令を中間コードに変換し、中間コードファイルとしてスプールする中間コード変換工程と、
印刷ダイアログから入力された印刷設定を前記プリンタドライバから取得し、指定されている部数を取得する取得工程と、
前記プリンタが一回の印刷動作で印刷可能な制限部数を認識する認識工程と、
前記取得工程で取得された指定部数ＵＮｕｍと、前記認識工程で認識した前記制限部数ＰＮｕｍとを比較する比較工程と、
前記取得工程で取得された部数が前記認識工程で認識された制限部数より大きい場合に、取得された部数を制限部数で割った商をデスプール回数として、前記中間コード変換工程で生成された中間コードを算出された当該デスプール回数分デスプールし、取得された部数を制限部数で割った余りの部数としての中間コードをデスプールするデスプール工程と、
前記デスプール工程で前記デスプール回数分デスプールされた中間コードに応じて１つの印刷ジョブとして前記プリンタドライバを用いてプリンタ制御コマンドからなる擬似印刷データを生成し、該擬似印刷データを前記制限部数印刷する印刷ジョブを生成する印刷制御工程と、
を実行させ、
前記デスプール工程は、前記比較工程での比較の結果、前記指定部数ＵＮｕｍが前記制限部数ＰＮｕｍよりも大きい場合には、ＵＮｕｍをＰＮｕｍで割った商Ｎ１及び余りＮ２に基づいて、前記中間コード変換工程で生成された中間コードをＮ１のデスプール回数分連続させてデスプールし、その後、前記中間コード変換手段で生成された中間コードをＮ２を部数としてデスプールし、
前記印刷制御工程は、Ｎ１のデスプール回数分デスプールされた中間コードに応じてＰＮｕｍ部数指定された擬似印刷データを生成し、その後デスプールされた中間コードに応じてＮ２部数指定された印刷データを生成することを特徴とする。
【００２７】
ここで、前記取得工程で取得された指定部数ＵＮｕｍと、前記認識工程で認識した前記制限部数ＰＮｕｍとを比較する比較工程を更にコンピュータに実行させ、
前記デスプール工程は、前記比較工程での比較の結果、前記指定部数ＵＮｕｍが前記制限部数ＰＮｕｍよりも大きい場合には、ＵＮｕｍをＰＮｕｍで割った商Ｎ１及び余りＮ２に基づいて、前記中間コード変換工程で生成された中間コードをＮ１のデスプール回数分連続させてデスプールし、その後、前記中間コード変換手段で生成された中間コードをＮ２を部数としてデスプールし、
前記印刷制御工程は、Ｎ１のデスプール回数分デスプールされた中間コードに応じてＰＮｕｍ部数指定された擬似印刷データを生成し、その後デスプールされた中間コードに応じてＮ２部数指定された印刷データを生成することを特徴とする。
【００２８】
前記指定プログラムでは、ユーザが排紙口の指定を行なうことが可能であって、前記制限部数は前記指定プログラムでユーザが指定した排紙口の数であることを特徴とする。
【００２９】
前記制限部数は、プリンタに備えられた全排紙口の数であることを特徴とする。
【００３０】
前記制限部数は、プリンタに備えられた全排紙口のうち、有効な排紙口の数であることを特徴とする。
【００３１】
【発明の実施の形態】
以下に、図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、この実施の形態に記載されている構成要素の相対配置、数式、数値等は、特に特定的な記載がない限りは、この発明の範囲をそれらのみに限定する趣旨のものではない。
【００３２】
（第１の実施の形態）
先ず、本発明に係る情報処理システムの第１の実施の形態としてのプリンタ制御システムの構成を図１のブロック図を参照して説明する。
【００３３】
第１の実施形態に係るプリント制御システムは、ホストコンピュータ３０００とプリンタ１５００とから構成されている。ホストコンピュータ３０００は、ＣＰＵ１とＲＡＭ２と、ＲＯＭ３とキーボードコントローラ（ＫＢＣ）５と、ＣＲＴコントローラ（ＣＲＴＣ）６とディスクコントローラ（ＤＫＣ）７と、プリンタコントローラ（ＰＲＴＣ）８と、キーボード（ＫＢ）９と、ＣＲＴディスプレイ（ＣＲＴ）１０と、外部メモリ１１とを備えている。
【００３４】
先ず、ホストコンピュータ３０００各部の構成を詳述すると、ＣＰＵ１はシステムバスに接続された各デバイスを統括的に制御する中央処理装置であり、ＲＯＭ３のプログラム用ＲＯＭ３ｂ（後述）或いは外部メモリ１１に記憶された文書処理プログラム等に基づいて、図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理を実行する。また、ＣＰＵ１は、例えばＲＡＭ２上に設定された表示情報ＲＡＭへのアウトラインフォントの展開（ラスタライズ）処理を実行し、ＣＲＴディスプレイ１０上でのＷＹＳＩＷＹＧ（What You See Is What You Get：ＣＲＴディスプレイ画面上に見えているそのままの大きさや形で印刷できる機能）を可能としている。
【００３５】
更に、ＣＰＵ１はＣＲＴディスプレイ１０上のマウスカーソル（図示略）等で指示されたコマンドに基づいて、予め登録された種々のウインドウを開き、種々のデータ処理を実行する。ユーザはプリンタ１５００を使用して印刷する際、印刷の設定に関するウインドウを開き、プリンタ１５００の設定や印刷モードの選択を含むプリンタドライバに対する印刷処理方法の設定を行うことができるようになっている。
【００３６】
ＲＡＭ２はＣＰＵ１の主メモリ、ワークエリア等として機能する。ＲＯＭ３はフォント用ＲＯＭ３ａと、プログラム用ＲＯＭ３ｂと、データ用ＲＯＭ３ｃとを備えている。フォント用ＲＯＭ３ａ或いは外部メモリ１１は、上記文書処理の際に使用するフォントデータなどを記憶する。プログラム用ＲＯＭ３ｂ或いは外部メモリ１１は、ＣＰＵ１の制御プログラムであるオペレーティングシステム（以下、ＯＳ）等を記憶する。データ用ＲＯＭ３ｃ或いは外部メモリ１１は、上記文書処理等を行う際に使用する各種データを記憶する。
【００３７】
キーボードコントローラ（ＫＢＣ）５は、キーボード９やポインティングデバイス（図示略）からのキー入力を制御する。ＣＲＴコントローラ（ＣＲＴＣ）６は、ＣＲＴディスプレイ（ＣＲＴ）１０の表示を制御する。ディスクコントローラ（ＤＫＣ）７は、外部メモリ１１とのアクセスを制御する。プリンタコントローラ（ＰＲＴＣ）８は、双方向性インタフェース２１を介してプリンタ１５００に接続されて、プリンタ１５００との通信制御処理を実行する。キーボード９は、各種キーを備えている。
【００３８】
ＣＲＴディスプレイ（ＣＲＴ）１０は、図形、イメージ文字、表等を表示する。外部メモリ１１はハードディスク（ＨＤ）、フロッピーディスク（ＦＤ）等から構成されており、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、プリンタ制御コマンド生成プログラム（以下、プリンタドライバ）等を記憶する。
【００３９】
上述したＣＰＵ１、ＲＡＭ２、ＲＯＭ３、キーボードコントローラ（ＫＢＣ）５、ＣＲＴコントローラ（ＣＲＴＣ）６、ディスクコントローラ（ＤＫＣ）７、プリンタコントローラ（ＰＲＴＣ）８は、コンピュータ制御ユニット２０００上に配設されている。
【００４０】
次に、プリンタ１５００各部の構成を詳述すると、ＣＰＵ１２は、システムバス１５に接続された各デバイスを統括的に制御する中央処理装置であり、ＲＯＭ１３のプログラム用ＲＯＭ１３ｂ（後述）に記憶された制御プログラム等或いは外部メモリ１４に記憶された制御プログラム等に基づいて印刷部（プリンタエンジン）１７に出力情報としての画像信号を出力する。また、ＣＰＵ１２は、入力部１８を介してホストコンピュータ３０００との通信処理が可能となっており、プリンタ１５００内の情報等をホストコンピュータ３０００に通知できる構成となっている。
【００４１】
ＲＡＭ１９は、ＣＰＵ１２の主メモリや、ワークエリア等として機能し、増設ポートに接続されるオプションＲＡＭ（図示略）によりメモリ容量を拡張することができるように構成されている。尚、ＲＡＭ１９は、出力情報展開領域、環境データ格納領域、ＮＶＲＡＭ等に用いられる。ＲＯＭ１３は、フォント用ＲＯＭ１３ａと、プログラム用ＲＯＭ１３ｂと、データ用ＲＯＭ１３ｃとを備えている。フォント用ＲＯＭ１３ａは、上記出力情報を生成する際に使用するフォントデータなどを記憶する。プログラムＲＯＭ１３ｂは、ＣＰＵ１２の制御プログラム等を記憶する。データ用ＲＯＭ１３ｃは、プリンタ１５００にハードディスク等の外部メモリ１４が接続されていない場合には、ホストコンピュータ３０００上で利用される情報等を記憶する。
【００４２】
入力部１８は、双方向性インタフェース２１を介してプリンタ１５００とホストコンピュータ３０００との間におけるデータの送受を行う。印刷部インタフェース（Ｉ／Ｆ）１６は、ＣＰＵ１２と印刷部１７との間におけるデータの送受を行う。メモリコントローラ（ＭＣ）２０は、外部メモリ１４のアクセスを制御する。印刷部１７は、ＣＰＵ１２の制御に基づき印刷動作を行う。操作部１５０１は、各種操作のためのスイッチや表示手段（例えばＬＥＤ表示器）等を備えている。
【００４３】
外部メモリ１４は、ハードディスク（ＨＤ）、ＩＣカード等から構成されており、プリンタ１５００にオプションとして接続される。外部メモリ１４は、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶するものであり、メモリコントローラ（ＭＣ）２０によりアクセスを制御される。尚、外部メモリ１４は、１個に限らず、複数個備えることが可能となっている。即ち、内蔵したフォントに加えてオプションカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを複数接続できるように構成されていてもよい。更に、ＮＶＲＡＭ（図示略）を有し、操作部１５０１からのプリンタモード設定情報を記憶するようにしてもよい。
【００４４】
上述したＣＰＵ１２、ＲＡＭ１９、ＲＯＭ１３、入力部１８、印刷部インタフェース（Ｉ／Ｆ）１６、メモリコントローラ（ＭＣ）２０は、プリンタ制御ユニット１０００上に配設されている。
【００４５】
図２は、プリンタ等の印刷装置が直接接続されているか、あるいはネットワーク経由で接続されているホストコンピュータにおける典型的な印刷処理の構成を示すブロック図である。図２において、アプリケーション２０１、グラフィックエンジン２０２、プリンタドライバ２０３、およびシステムスプーラ２０４は、上記図１の外部メモリ１１に保存されたファイルとして存在し、実行される場合にＯＳやそのモジュールを利用するモジュールによってＲＡＭ２にロードされ実行されるプログラムモジュールである。
【００４６】
また、アプリケーション２０１およびプリンタドライバ２０３は、外部メモリ１１のＦＤやＣＤＲＯＭ或いはネットワーク（以上図示略）を経由して外部ディスク１１のＨＤに追加することが可能となっている。外部メモリ１１に保存されているアプリケーション２０１はＲＡＭ２にロードされて実行されるが、該アプリケーション２０１からプリンタ１５００に対して印刷を行う際には、同様にＲＡＭ２にロードされ実行可能となっているグラフィックエンジン２０２を利用して出力（描画）を行う。
【００４７】
グラフィックエンジン２０２は、印刷装置ごとに用意されたプリンタドライバ２０３を同様に外部メモリ１１からＲＡＭ２にロードし、アプリケーション２０１の出力をプリンタドライバ２０３に設定する。そして、アプリケーション２０１から受け取るＧＤＩ(Graphic Device Interface)関数をＤＤＩ(Device Driver Interface)関数に変換して、プリンタドライバ２０３へＤＤＩ関数を出力する。プリンタドライバ２０３は、グラフィックエンジン２０２から受け取ったＤＤＩ関数に基づいて、プリンタが認識可能な制御コマンド、例えばＰＤＬ(Page Description Language)に変換する。変換されたプリンタ制御コマンドは、ＯＳによってＲＡＭ２にロードされたシステムスプーラ２０４を経てインタフェース２１経由でプリンタ１５００へ印刷データとして出力される仕組みとなっている。
【００４８】
第１の実施形態に係るプリンタ制御システムは、上記図１及び図２で示すプリンタ１５００とホストコンピュータ３０００からなる印刷システムに加えて、更に図３に示す如くアプリケーションからの印刷データを一旦中間コードデータでスプールする構成を有する。
【００４９】
図３は、図２のシステムを拡張したもので、グラフィックエンジン２０２からプリンタドライバ２０３へ印刷命令を送る際に、一旦、中間コードからなるスプールファイル３０３を生成する構成を示したものである。上記図２のシステムでは、アプリケーション２０１が印刷処理から開放されるのは、プリンタドライバ２０３がグラフィックエンジン２０２からすべての印刷命令をプリンタ１５００の制御コマンドへ変換し終わった時点である。
【００５０】
これに対して、図３のシステムでは、アプリケーション２０１が印刷処理から開放されるのは、スプーラ３がすべての印刷命令を中間コードデータに変換し、スプールファイル３０３に出力した時点である。通常、後者の方が短時間で済む。また、図３で示すシステムにおいては、スプールファイル３０３の内容に対して加工することができる。これによりアプリケーションからの印刷データに対して、拡大／縮小や、複数ページを１ページに縮小して印刷するＮアップ印刷等、アプリケーションの持たない機能を実現することができる。
【００５１】
これらの目的のために、上記図２のシステムに対し、図３の如く中間コードデータでスプールするよう、システムの拡張がなされてきている。尚、印刷データの加工を行うためには、通常、プリンタドライバ２０３が提供するウインドウから設定を行い、プリンタドライバ２０３がその設定内容をＲＡＭ２上あるいは外部メモリ１１上に保管する。
【００５２】
以下、図３の詳細を説明する。図示の如く、この拡張された処理方式では、グラフィックエンジン２０２からの印刷命令をディスパッチャ３０１が受け取る。ディスパッチャ３０１がグラフィックエンジン２０２から受け取った印刷命令が、アプリケーション２０１からグラフィックエンジン２０２へ発行された印刷命令の場合には、ディスパッチャ３０１は外部メモリ１１に格納されているスプーラ３０２をＲＡＭ２にロードし、プリンタドライバ２０３ではなくスプーラ３０２へ印刷命令を送付する。
【００５３】
スプーラ３０２は受け取った印刷命令を中間コードに変換してスプールファイル３０３に出力する。また、スプーラ３０２は、プリンタドライバ２０３に対して設定されている印刷データに関する加工設定をプリンタドライバ２０３から取得してスプールファイル３０３に保存する。尚、スプールファイル３０３は外部メモリ１１上にファイルとして生成するが、ＲＡＭ２上に生成されても構わない。更に、スプーラ３０２は、外部メモリ１１に格納されているスプールファイルマネージャ３０４をＲＡＭ２にロードし、スプールファイルマネージャ３０４に対してスプールファイル３０３の生成状況を通知する。
【００５４】
その後、スプールファイルマネージャ３０４は、スプールファイル３０３に保存された印刷データに関する加工設定の内容に従って印刷を行えるか判断する。スプールファイルマネージャ３０４がグラフィックエンジン２０２を利用して印刷を行えると判断した際には、外部メモリ１１に格納されているデスプーラ３０５をＲＡＭ２にロードし、デスプーラ３０５をＲＡＭ２にロードし、デスプーラ３０５に対して、スプーラファイル３０３に記述された中間コードの印刷処理を行うように指示する。
【００５５】
デスプーラ３０５はスプールファイル３０３に含まれる中間コードをスプールファイル３０３に含まれる加工設定の内容に従って加工し、もう一度グラフィックエンジン２０２経由で出力する。ディスパッチャ３０１がグラフィックエンジン２０２から受け取った印刷命令が、デスプーラ３０５からグラフィックエンジン２０２へ発行された印刷命令の場合には、ディスパッチャ３０１はスプーラ３０２ではなく、プリンタドライバ２０３に印刷命令を送る。プリンタドライバ２０３はプリンタ制御コマンドを生成し、システムスプーラ２０４経由でプリンタ１５００に出力する。
【００５６】
図４は、第１の実施の形態の形態に係るプリンタ１５００の一例としてレーザビームプリンタ（以下、ＬＢＰと略章）の場合の内部構造を示す断面図である。
【００５７】
ＬＢＰとしてのプリンタ１５００は、文字パターンデータ等を入力して記録紙に印刷することができる。
【００５８】
プリンタ１５００は、供給されるプリンタ制御コマンド等を基に記録媒体である記録用紙上に像を形成するＬＢＰ本体７４０に、プリンタ制御ユニット１０００と、操作部１５０１とレーザドライバ７０２と、半導体レーザ７０３と、回転多面鏡７０５と、静電ドラム７０６と、現像ユニット７０７と、用紙カセット７０８と、搬送路等７１０と、外部メモリ７１１と、フェイスダウン排出部７１５と、排紙トレイ７１６とを備えている。
【００５９】
上記各部の構成を動作とともに詳述すると、プリンタ制御ユニット１０００は、ＬＢＰ本体７４０全体の制御及び文字パターン情報等を解析するものであり、主にプリンタ制御コマンドをビデオ信号に変換してレーザドライバ７０２に出力する。プリンタ制御ユニット１０００には、フォントデータやページ記述言語のエミュレーションプログラム等を供給する外部メモリ７１１を接続することもできる。操作部１５０１には、上述した如く操作のためのスイッチ及び表示手段（例えばＬＥＤ表示器）等が配設されている。
【００６０】
レーザドライバ７０２は半導体レーザ７０３を駆動するための回路であり、入力されたビデオ信号に応じて半導体レーザ７０３から発射されるレーザ光７０４をオン・オフ切替えする。半導体レーザ７０３は、回転多面鏡７０５に向けてレーザ光を発射する。回転多面鏡７０５は、レーザ光７０４を左右方向に振り、静電ドラム７０６上を走査させる。静電ドラム７０６は、レーザ光７０４の走査により文字パターンの静電潜像がドラム表面に形成される。
【００６１】
現像ユニット７０７は、静電ドラム７０６周囲に配設されており、静電潜像を現像する。現像後は、記録紙に転写される。用紙カセット７０８は、記録紙として例えばカットシートを収納する。給紙ローラ７０９及び搬送ローラ７１０は、給紙カセット７０８内のカットシート記録紙をＬＢＰ本体７４０内に送り込み、静電ドラム７０６に供給する。この場合、用紙カセット７０８の蓋部上面に設けられた手差しトレイ（図示略）からカットシート記録紙を供給することもできる。
【００６２】
定着部７１２は、カットシート記録紙に転写されたトナー像を加熱してカットシート記録紙上に定着させる。画像が形成された記録紙は、切り替えくさび７１３を上向きにした場合にはフェイスアップ排出部７１４から記録面を上にした状態で排紙トレイ７１６に排出され、くさび７１３を下向きにした場合にはフェイスダウン排出部７１５から記録面を下にした状態で排出される。
【００６３】
図５は、スプーラ３０２における、スプールファイル３０３の生成におけるページ単位保存処理をフローチャートで示したものである。
【００６４】
まずステップＳ５０１では、アプリケーションからの印刷要求を受け付ける。アプリケーションにおいては、図６に示すような印刷設定を入力するダイアログが表示され、このダイアログから入力された印刷設定がプリンタドライバよりスプーラ３０２に渡される。図６に示す設定入力ダイアログにおいては、８０１のような１物理ページにレイアウトする論理ページの数を決定するような設定項目等を含んでいる。
【００６５】
ステップＳ５０２では、受け付けた印刷要求がジョブ開始要求か判定し、ステップＳ５０２でジョブ開始要求であると判断した場合には、ステップＳ５０３に進み、中間データを一時的に保存するためのスプールファイル３０３を作成する。続いて、ステップＳ５０４では、スプールファイルマネージャ３０４へ印刷処理の進捗を通知し、続くステップＳ５０５でスプーラ３０２のページ数カウンタを１に初期化する。ここで、スプールファイルマネージャ３０４においては、印刷が開始されたジョブに対するジョブの情報や加工設定などをスプールファイル３０３より読み込み、記憶する。
【００６６】
一方、ステップＳ５０２において、ジョブ開始要求ではなかったと判断した場合には、ステップＳ５０６に進む。
【００６７】
ステップＳ５０６では、受け付けた要求がジョブ終了要求かどうかの判別を行う。ジョブ終了要求でないと判断した場合には、ステップＳ５０７に進み、改ページかどうかの判別を行う。もしもステップＳ５０７で改ページであると判断した場合には、ステップＳ５０８に進み、スプールファイルマネージャ３０４へ印刷処理の進捗を通知する。そしてページ数カウンタをインクリメントする。
【００６８】
ステップＳ５０７において、受け付けた印刷要求が改ページではないと判断した場合には、ステップＳ５０９に進み、中間ファイル書き出しの準備を行う。
【００６９】
次に、ステップＳ５１０では、印字要求をスプールファイル３０３へ格納するための変換処理を行う。ステップＳ５１１では、ステップＳ５１０において格納可能な形に変換された印刷要求をスプールファイル３０３へ書き込む。その後、ステップＳ５０１に戻り、再びアプリケーションからの印刷要求を受け付ける。この一連のステップＳ５０１からステップＳ５１１までの処理を、アプリケーションよりジョブ終了要求を受け取るまで続ける。一方、ステップＳ５０６にて、アプリケーションからの印刷要求がジョブ終了であると判断した場合には、アプリケーションからの印刷要求は全て終了であるので、ステップＳ５１２に進み、スプールファイルマネージャ３０４へ印刷処理の進捗を通知し、処理を終える。
【００７０】
図７は、スプールファイルマネージャ３０４における、スプールファイル３０３生成プロセスと以降説明する印刷データ生成プロセスの間での制御の詳細をフローチャートで示したものである。
【００７１】
ステップＳ６０１では、スプーラ３０２あるいはデスプーラ３０５からの印刷処理の進捗通知を受け付ける。
【００７２】
ステップＳ６０２では、進捗通知が前述のステップＳ５０４において通知されるスプーラ３０２からの印刷開始通知であるかどうか判定し、もしそうであればステップＳ６０３へ進み、印刷の加工設定をスプールファイル３０３から読み込み、ジョブの管理を開始する。一方、ステップＳ６０２において、スプーラ３０２からの印刷開始通知でなければステップＳ６０４へ進み、進捗通知が前述のステップＳ５０８において通知されるスプーラ３０２からの１論理ページの印刷終了通知であるかどうか判定する。ここで１論理ページの印刷終了通知であればステップＳ６０５へ進み、この論理ページに対する論理ページ情報を格納する。そして、続くステップＳ６０６では、この時点でスプールが終了したｎ論理ページに対して、１物理ページの印刷が開始できるかを判定する。ここで、印刷可能である場合はステップＳ６０７へ進み、印刷する１物理ページに対して割り付けられる論理数から物理ページ番号を決定する。
【００７３】
物理ページの計算については、例えば、加工設定が１物理ページに４論理ページを配置するような設定の場合、第１物理ページは第４論理ページがスプールされた時点で印刷可能となり、第１物理ページとなる。続いて、第２物理ページは第８物理ページがスプールされた時点で印刷可能となる。
【００７４】
また、論理ページ数の総数が１物理ページに配置する論理ページ数の倍数でなくても、ステップＳ５１２におけるスプール終了通知によって１物理ページに配置する論理ページが決定可能である。
【００７５】
そして、ステップＳ６０８では、図８に示すような形式によって、印刷可能となった物理ページを構成する論理ページ番号と、その物理ページ番号などの情報がデスプーラ３０５に通知される。その後ステップＳ６０１に戻り、次の通知を待つ。本実施の形態においては、印刷データ１ページ、すなわち１物理ページを構成する論理ページがスプールされた時点で印刷ジョブのスプールが全て終了していなくても印刷処理が可能である。
【００７６】
一方、ステップＳ６０４において、進捗通知がスプーラ３０２からの１論理ページの印刷終了通知でなかった場合ステップＳ６０９へ進み、前述のステップＳ５１２において通知されるスプーラ３０２からのジョブ終了通知であるかどうかを判定する。ここで、ジョブ終了通知である場合、前述のステップＳ６０６へ進む。一方、ジョブ終了通知でない場合、ステップＳ６１０へ進み、受け付けた通知がデスプーラ３０５からの１物理ページの印刷終了通知であるかどうか判定する。ここで、１物理ページの印刷終了通知である場合はステップＳ６１１へ進み、加工設定の印刷が全て終了したかを判定する。印刷終了した場合、ステップＳ６１２へ進み、デスプーラ３０５に印刷終了の通知を行う。一方、加工設定に対する印刷がまだ終了していないと判断した場合、前述の６０６へ進む。本実施の形態におけるデスプーラ３０５は同時に印刷処理を行える物理ページ数を１と想定している。
【００７７】
ステップＳ６１０において、デスプーラ３０５からの１物理ページの印刷終了通知でないと判断された場合、ステップＳ６１３へ進み、デスプーラ３０５からの印刷終了通知かどうかを判定する。デスプーラ３０５からの印刷終了通知と判定された場合、ステップＳ６１４へ進み、スプールファイル３０３の削除を行い処理を終える。一方、デスプーラ３０５からの印刷終了通知でなかった場合はステップＳ６１５へ進み、その他通常処理を行い、次の通知を待つ。
【００７８】
図９は、デスプーラ３０５における、印刷データの生成プロセスの詳細をフローチャートで示したものである。
【００７９】
デスプーラ３０５は、およびスプールファイルマネージャ３０４からの印刷要求に応じて、スプールファイル３０３から必要な情報を読出して印刷データを生成する。生成された印刷データにおけるプリンタへの転送方法については図３で説明した通りである。
【００８０】
印刷データの生成では、まず、ステップＳ７０１において、前述のスプールファイルマネージャ３０４からの通知を入力する。続くステップＳ７０２では、入力された通知がジョブの終了通知かどうか判定し、ジョブ終了通知であるならばステップＳ７０３へ進み、デスプーラ３０５の処理終了の通知をスプールファイルマネージャ３０４に通知し、処理を終える。一方、ステップＳ７０２においてジョブ終了通知でない場合は、ステップＳ７０４に進み、前述のステップＳ６０８における１物理ページの印刷開始要求が通知されたかどうか判定する。ここで１物理ページの印刷開始要求と判定された場合、ステップＳ７０５へ進み、スプールファイルマネージャ３０４から渡された図１７に示す情報とスプールファイル３０３とから、指定された物理ページの印刷データ生成に必要な情報を読込み、印刷処理を行う。印刷処理はスプールファイル３０３に格納された印刷要求命令をデスプーラ３０５においてグラフィックエンジン２０２が認識可能な形式に変換し、転送する。本実施の形態のような、複数論理ページを１物理ページにレイアウトするような加工設定については、このステップで縮小配置を考慮に入れながら変換する。また、この時点で、図８に示すような形式でスプールファイル３０３に保存されているページ番号付加情報を読み込み、所定の位置に対してページ番号を付加する。
【００８１】
必要な印刷処理が終えたならば、続くステップＳ７０６において１物理ページの印刷データ生成終了の通知をスプールファイルマネージャ３０４に対して行う。そしてステップＳ７０１へ戻り、次の通知を待つ。
【００８２】
一方、ステップＳ７０４において開始要求と判定されなかった場合は、ステップＳ７０７へ進み、その他通常処理を行い、ステップＳ７０１へ戻り次の通知を待つ。
【００８３】
図１０は、図７及び図９のスプールファイルマネージャとデスプーラの処理を印刷処理に絞り込んで抜き出した図である。ステップの番号は図６、図７の対応するステップと同じ番号を振ってある。簡略化してしまえば、印刷工程を以下のステップで表現することもできる。
【００８４】
ステップＳ６１３で印刷終了と判定されるまで、ステップＳ７０５に進み各物理ページに対して印刷処理を繰り返し、印刷が終了した倍はステップＳ６１４でスプールファイルを削除して終了する。
【００８５】
図１１は、本発明の印刷方法を従来の印刷工程に組み込む場合のフローチャートである。プリンタの制限を回避するためには、プリンタの制限を仮定する必要がある。本実施の形態では、プリンタの制限を超える部数を指定した場合にはその指定を無視して、プリンタの上限部数に丸めてしまうようなプリンタを想定して説明を行う。
【００８６】
ステップＳ１１０１でユーザの指定した部数（ＵＮｕｍ）を取得する。この値は、通常アプリケーションから印刷する際に表示される印刷ダイアログなどで設定される。
【００８７】
ステップＳ１１０２でプリンタの部数制限の値（ＰＮｕｍ）を取得する。この値は、プリンタに固有な場合は、プリンタ名と部数の上限値のテーブルを用意しておき、出力対称プリンタ名からテーブルを引くことで得ることが可能である。また、プリンタとホストで通信可能であれば印刷前にプリンタに問い合わせることで取得することも可能である。この場合の通信方法は、プリンタの用紙切れなどに使用する通信方法を流用して実現することができる。
【００８８】
次にステップＳ１１０３に進み、ユーザの指定した部数と、プリンタの制限を比較する。比較した結果、ユーザの指定した部数がプリンタの制限以内である場合には、プリンタの制限を考慮する必要がないためステップＳ１１０４に進み通常の印刷工程どおり処理を行う。ステップＳ１１４０が図１０のＡ〜Ｂに相当する処理となる。
【００８９】
ユーザが指定した部数がプリンタの上限を超える場合は、ステップＳ１１０５に進み、プリンタの制限を回避するために特別な処理を行う。
【００９０】
図１２は、図１１のステップＳ１１０５の、プリンタの制限を回避するための特別な処理を説明したフローチャートである。
【００９１】
本実施の形態では、１回の印刷ジョブあたり最大でＰＮｕｍ部までしか印刷できないため、ユーザの指定する部数分印刷するには、印刷を複数回繰り返す必要がある。
【００９２】
ステップＳ１２０１で印刷ジョブ数Ｊを求める。ＵＮｕｍをＰＮｕｍで割った数（小数点以下切り上げ）を印刷ジョブ数とする。
【００９３】
次に、ステップＳ１２０２で印刷ジョブ数Ｊ回だけ印刷を繰り返すためのループカウンタＩを初期化する。
【００９４】
ステップＳ１２０３でカウンタＩと印刷ジョブ数Ｊを比較する。カウンタが印刷ジョブ数Ｊに達していない場合はステップＳ１２０６〜１２０８の処理へ進む。
【００９５】
ステップＳ１２０６では、１回のデスプールで得られる印刷データを、プリンタ制限の上限であるＰＮｕｍ部印刷する。ここでの印刷処理は、図１乃至図１１を用いて説明したとおりである。
【００９６】
印刷データを全て印刷し終わった後、ステップＳ１２０７で印刷ジョブを一旦終了することをプリンタに通知し、一旦印刷を終了する。
【００９７】
同時に、ステップＳ１２０８で印刷カウンタＩを１インクリメントしてステップＳ１２０３に戻る。
【００９８】
このように、ＩがＪに達するまで、つまり、ＰＮｕｍ部の印刷がＪ−１回行なわれるまで、ステップＳ１２０６〜Ｓ１２０８の処理が繰り返される。
【００９９】
そして、ステップＳ１２０３で最終回（Ｊ回目のジョブ）であると判定された時には、ステップＳ１２０４に進み最終回の部数を求める。この時点ですでにＰＮｕｍ×（Ｊ−１）部の出力が終わっているので、最終回はＵＮｕｍをＰＮｕｍで割った余りであるＮを部数とすればよい。
【０１００】
ステップＳ１２０５に進み、ＮをＪ回目の印刷の部数として印刷を行い、終了する。
【０１０１】
なお、ステップＳ１２０１での計算においてＵＮｕｍをＰＮｕｍで割る際に、商Ｊ１と余りＮ１を求め、ステップＳ１２０６〜Ｓ１２０８の処理をＪ１回だけ繰りかえし（Ｊ１個のＰＮｕｍ部印刷ジョブを生成し）、その後、Ｓ１２０５でＮ１部の印刷ジョブを生成してもよい。
【０１０２】
図１３は本実施の形態の処理で、プリンタの制限が１０部である場合であって、３ページの文書を印刷する際にユーザが２４部を指定した場合の例である。印刷回数Ｊは２４／１０＝２．４を切り上げて３回。１回〜２回目まではプリンタの上限である１０部を指定、最終回である３回めは２４を１０で割った余りである４部を指定して印刷する。
【０１０３】
図１２では、最終回の部数のみを特別扱いし、Ｎを部数としているが、これは最初の回であっても途中の印刷回数のいずれかであってもかまわない。
【０１０４】
このような処理を行なうことにより、プリンタの制限部数を越えた部数を指定した印刷が可能となる。また、かかる構成においてユーザが複数部数をパンチ穴指定で印刷した場合、プリンタの物理的な制限にかかわりなく、ユーザが指定した部数の印刷物をパンチ穴があいた状態で得ることが可能となる。
【０１０５】
また、かかる構成においてユーザが複数部数を部単位ソート指定した場合、プリンタの物理的な制限にかかわりなく、ユーザが指定した部数の印刷物を部単位でソートした状態で得ることが可能となる。
【０１０６】
また、かかる構成においてユーザが複数部数をその他のソート指定で印刷した場合、プリンタの物理的な制限にかかわりなく、ユーザが所望とするソート指定の印刷物を得ることが可能となる。
【０１０７】
（第２の実施の形態）
上記第１の実施の形態としてのプリンタシステムでは、ユーザがプリンタ制限を超えるような部数を指定して印刷した場合、ステップＳ１２０６において、Ｊ回繰り返すべく指定される部数は、プリンタの上限部数の値としている。排紙口を複数備え、排紙口を切り替えることで部単位の印刷を行うプリンタを用いて上記第１の実施の形態で説明した処理を実行する場合、プリンタの上限部数は、一般に排紙口の数と等しくなる。この場合、例えば、１０個の排紙口を備えたプリンタで、２４部の印刷を行なう場合には、図１４に示すように排紙口１〜４に３部、排紙口５〜１０に２部排出される。しかし、このように、排紙口を全て占有することは、望ましくないことが多い。例えば、他の印刷ジョブで既にいくつかの排紙口が占有されている場合もあり、その他、複合機ではファクシミリの受信のために排紙口をあけておく必要もある。
【０１０８】
そこで、排紙口の占有を回避する印刷処理を行なうことも好適である。図１５は、そのような印刷処理のフローチャートである。大部分は図１２のフローチャートで示した処理と同じである為、同じ処理を行なうステップについては、同じ符号を付してその説明は省略する。また、この処理以外の構成及び作用については第１の実施の形態と同様である為、その説明は省略する。
【０１０９】
ステップＳ１２０１で印刷回数Ｊを求めたのち、ステップＳ１５０１で部数の計算を行う。ここでは、ＵＮｕｍ／Ｊの小数点以下を切り上げた数値を部数Ｎ１とし、このＮ１部の印刷をＪ−１回繰り返す。
【０１１０】
ステップＳ１２０６では、ステップＳ１５０１で求めた部数Ｎ１だけ印刷を行なう。ステップＳ１２０４では、Ｎ２＝ＵＮｕｍ−Ｎ１×（Ｊ−１）で求めた値Ｎ２を最後に印刷する部数とする。
【０１１１】
第１の実施の形態同様、制限１０部で、ユーザが２４部を指定した場合、Ｊ＝３、Ｎ１＝２４／３＝８、Ｎ２＝２４−８×（３−１）＝８となり、図１６に示すように最大で８つの排紙口を占有するだけですむ。
【０１１２】
このように、印刷回数や各回の部数指定のアルゴリズムを変えたさまざまなバリエーションも本発明の範疇に含まれる。
【０１１３】
（第３の実施の形態）
第１の実施の形態及び第２の実施の形態はともに、ユーザが認識する印刷単位と、実際に一部の印刷を構成する単位が等しくなるような実施の形態であるが（共に１、２、３）、図１７のフローチャートに示すようなアルゴリズムを採用してもよい。その他の構成及び作用については、第１の実施の形態と同様である為その説明は省略する。
【０１１４】
まず、ステップＳ１８０１で繰り返し印刷する回数、即ち、デスプール回数を求める。ここでは、ユーザにより指定された部数を、プリンタが一回の印刷動作で印刷可能な制限部数で割った商（小数点以下切り下げ）をそのデスプール回数とする。
【０１１５】
ステップＳ１８０２では、ステップＳ１８０１で求めた回数分デスプールした印刷データを１部とし、その印刷データをプリンタの制限部数印刷するように指定したジョブをプリンタに送り、印刷させる。
【０１１６】
次に、ステップＳ１８０３でステップＳ１８０２で印刷した合計部数（実際の部数：Ｎ１×ＰＮｕｍ）とユーザの指定した部数（ＵＮｕｍ）の差を求める。
【０１１７】
ステップＳ１８０４では、今度はデスプール１回分の印字データについて、求めた部数差を指定したジョブをプリンタに送り、再度印刷させる。
【０１１８】
具体的に、３ページ文書をユーザが３０部指定、プリンタの制限が１０部であった場合を例にとって説明する。デスプール回数は３０／１０＝３回となる。プリンタの制限である１０部を指定してホストからは、図１９に示すようにデスプール３回分の印刷データである１，２，３，１，２，３，１，２，３を１部の印刷単位として送る。即ち、印刷単位を９ページと変更して、９ページの印刷データを１単位として、１０部印刷する。
【０１１９】
このように、印刷単位を、元となる印刷データの単位（スプールされた印刷データの単位）とは異なる形式に変更して印刷処理を行うことでプリンタの制限を回避することも本発明の範疇である。
【０１２０】
なお、ここでは、同じ印刷データを重複してスプールしないことを想定しており、ユーザが考える印刷単位とスプールされる印刷単位とは等しいものと考えて説明したが、デスプール回数ではなく、スプールされたデータを変更することによって印刷単位を変更しても良い。
【０１２１】
また、ステップＳ１８０１でデスプール回数を求める際、ユーザにより指定された部数を、プリンタの制限部数で割っているが、第２の実施の形態において説明したように、プリンタの制限部数以下の部数で割ることによってデスプール回数を求めてもよい。その場合、例えば、制限回数が排紙口の数であれば、実質的に排紙可能な排紙口の数で割ってもよい。
【０１２２】
（第４の実施の形態）
第１の実施の形態では、複数の排紙口を有するプリンタの制限として排紙口数を利用しているが、実際の物理的な排紙口の数とプリンタの制限は異なっていてもかまわない。
【０１２３】
例えば、１０個の排紙口を有するプリンタにおいて、他の印刷ジョブによって排紙口が３つ使用されている場合には、実際には使用できる排紙口の数としては７つである。
【０１２４】
また、ユーザによって使用可能な排紙口がそれぞＦれ指定されている場合には、その排紙口がプリンタの制限である。
【０１２５】
このような場合、プリンタの制限を取得する際に、この使用可能な排紙口位置に関する情報も合わせて取得する必要がある。ユーザによる排紙口の使用制限がある場合は、ユーザ名などから使用可能な排紙口を引いてくるようなテーブルを用いることによって印刷に用いる排紙口を取得することも可能である。
【０１２６】
印刷を行う際の排紙口指定の制御には、従来からの方式（ジョブコマンド言語を用いる）などの方法を流用することが可能となる。
【０１２７】
（その他の実施の形態）
尚、本発明の機能が実行されるのであれば、一つの機器からなる装置（複写機、プリンタ、ファクシミリ装置など）に適用しても、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）からなるシステムに適用しても、ＬＡＮ（Local Area Network：ローカルエリアネットワーク）、ＷＡＮ（Wide Area Network：広域ネットワーク）等のネットワークを介して接続がなされ処理が行われるシステムに適用してもよい。
【０１２８】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成される。
【０１２９】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１３０】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピーディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【０１３１】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１３２】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１３３】
【発明の効果】
本発明によれば、プリンタの物理的な制限にかかわりなく、ユーザが指定した部数の印刷物を得ることが可能である。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態としてのホストコンピュータとプリンタとを含むシステムの構成を説明するブロック図である。
【図２】本発明の第１の実施の形態としてのホストコンピュータでのプリント処理を示すブロック図である。
【図３】本発明の第１の実施の形態としてのホストコンピュータでのプリント処理を詳細に説明するブロック図である。
【図４】本発明の第１の実施の形態としてのホストコンピュータと共にプリントシステムを構成可能なプリンタについて説明した図である。
【図５】スプーラ３０５における処理を示したフローチャートである。
【図６】印刷設定画面の一例を示す図である。
【図７】スプールファイルマネージャ３０４における印刷制御および物理ページ番号の決定について示したフローチャートである。
【図８】スプールファイルマネージャ３０４からデスプーラ３０５に対して物理ページの印刷要求を行う際に渡すデータ形式の一例を示した図である。
【図９】デスプーラ３０５における処理を示したフローチャートである。
【図１０】図５、図６から印刷処理の部分を取り出してまとめた図である。
【図１１】図１０に本発明の処理を追加する例を示したフローチャートである。
【図１２】本発明特有の処理をさらに詳しく説明したフローチャートである。
【図１３】本発明の第１の実施の形態としてのホストコンピュータを利用した出力例を示す図である。
【図１４】排紙口を複数有するプリンタに対して第１の実施の形態としてのホストコンピュータを利用した場合の出力状態を示す図である。
【図１５】本発明の第２の実施の形態としてのホストコンピュータを含むプリントシステムの処理を示すフローチャートである。
【図１６】本発明の第２の実施の形態としてのホストコンピュータを含むプリントシステムで処理を行った場合の出力状態を示す図である。
【図１７】本発明の第３の実施の形態としてのホストコンピュータを含むプリントシステムの処理を示すフローチャートである。
【図１８】本発明の第３の実施の形態としてのホストコンピュータを含むプリントシステムの出力を説明する図である。
【図１９】従来のホストコンピュータからプリンタへのデータの転送を説明する図である。
【符号の説明】
１，１２  ＣＰＵ
２，１９  ＲＡＭ
３，１３  ＲＯＭ
４  システムバス
７  ディスクコントローラ
３０００  ホストコンピュータ
１５００  プリンタ
【図１】
0003710307.tif 000002
【図２】
0003710307.tif 000003
【図３】
0003710307.tif 000004
【図４】
0003710307.tif 000005
【図５】
0003710307.tif 000006
【図６】
0003710307.tif 000007
【図７】
0003710307.tif 000008
【図８】
0003710307.tif 000009
【図９】
0003710307.tif 000010
【図１０】
0003710307.tif 000011
【図１１】
0003710307.tif 000012
【図１２】
0003710307.tif 000013
【図１３】
0003710307.tif 000014
【図１４】
0003710307.tif 000015
【図１５】
0003710307.tif 000016
【図１６】
0003710307.tif 000017
【図１７】
0003710307.tif 000018
【図１８】
0003710307.tif 000019
【図１９】
0003710307.tif 000020