(57)【要約】【課題】  部単位の部数印刷時に、システムやその他のアプリケーションによる記憶領域の使用量の変化に動的に対応し、それらの安定動作を保つ範疇で、２部目以降を高速に処理することができなかった。【解決手段】  印刷データの生成処理の前に、システムの安定動作に必要な所定の空き容量が存在しているかを確認し、存在しない場合は保存済み印刷データを削除する。事前削除により所定の空き容量が存在する場合、印刷データを保存する。２部目以降、処理中ページの印刷データが存在する場合は、印刷データの生成をスキップする。【選択図】  図４
2010282280.tif 000002
【特許請求の範囲】
【請求項１】
１部目の印刷データを生成する際、印刷データを生成する前に記憶装置の空き容量が所定値以下であるか否かを判別し、記憶装置の空き容量が所定値以下であると判別された場合、記憶装置から印刷データを削除し、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送すると共に生成された印刷データを記憶装置に保存する保存手段と、
２部目以降の印刷データを生成する際、記憶装置に生成すべきページの印刷データが保存されているか否かを判別し、記憶装置に生成すべきページの印刷データが保存されていると判別された場合、記憶装置に保存されている生成すべきページの印刷データをプリンタに転送し、記憶装置に生成すべきページの印刷データが保存されていないと判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送する転送手段とを有することを特徴とする印刷制御装置。
【請求項２】
前記保存手段は、１部目の印刷データを生成する際、印刷データを生成する前に記憶装置の空き容量が所定値以下であるか否かを判別し、記憶装置の空き容量が所定値以下であると判別された場合、記憶装置から印刷データを削除し、記憶装置の空き容量が所定値以下であるか否かを判別し、記憶装置の空き容量が所定値以下であると判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送し、記憶装置の空き容量が所定値を超えると判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送すると共に生成された印刷データを記憶装置に保存することを特徴とする請求項１記載の印刷制御装置。
【請求項３】
前記保存手段は、１部目の印刷データを生成する際、印刷データを生成する前に記憶装置の空き容量が所定値以下であるか否かを判別し、記憶装置の空き容量が所定値以下であると判別された際、保存済みの印刷データがない場合、記憶装置から印刷データを削除せず、保存済みの印刷データがある場合、記憶装置の空き容量が所定値以下になるまで記憶装置から印刷データを削除し、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送すると共に生成された印刷データを記憶装置に保存することを特徴とする請求項１または２記載の印刷制御装置。
【請求項４】
印刷データを生成する前に、記憶装置の空き容量が所定値以下であるか否かを判別し、記憶装置の空き容量が所定値以下であると判別された場合、記憶装置から印刷データを削除する削除手段と、
前記削除手段による削除の後に、記憶装置に生成すべきページの印刷データが保存されているか否かを判別し、記憶装置に生成すべきページの印刷データが保存されていると判別された場合、記憶装置に保存されている生成すべきページの印刷データをプリンタに転送し、記憶装置に生成すべきページの印刷データが保存されていないと判別された場合、記憶装置の空き容量が所定値以下であるか否かを判別し、記憶装置の空き容量が所定値以下であると判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送し、記憶装置の空き容量が所定値を超えると判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送すると共に生成された印刷データを記憶装置に保存する転送手段とを有することを特徴とする印刷制御装置。
【請求項５】
転送手段は、前記削除手段による削除の後に、記憶装置に生成すべきページの印刷データが保存されているか否かを判別し、記憶装置に生成すべきページの印刷データが保存されていると判別された場合、記憶装置に保存されている生成すべきページの印刷データをプリンタに転送し、記憶装置に生成すべきページの印刷データが保存されていないと判別された場合、記憶装置の空き容量が所定値を超えるか、最終部でないかを判別し、記憶装置の空き容量が所定値以下であると判別された場合または最終部であると判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送し、記憶装置の空き容量が所定値を超えかつ最終部でないと判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送すると共に生成された印刷データを記憶装置に保存することを特徴とする請求項４記載の印刷制御装置。
【請求項６】
前記所定値は、部数が多い場合、部数が少ない場合より小さくなることを特徴とする請求項１または４記載の印刷制御装置。
【請求項７】
１部目の印刷データを生成する際、印刷データを生成する前に記憶装置の空き容量が所定値以下であるか否かを判別し、記憶装置の空き容量が所定値以下であると判別された場合、記憶装置から印刷データを削除し、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送すると共に生成された印刷データを記憶装置に保存する保存ステップと、
２部目以降の印刷データを生成する際、記憶装置に生成すべきページの印刷データが保存されているか否かを判別し、記憶装置に生成すべきページの印刷データが保存されていると判別された場合、記憶装置に保存されている生成すべきページの印刷データをプリンタに転送し、記憶装置に生成すべきページの印刷データが保存されていないと判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送する転送ステップとを有することを特徴とする印刷制御方法。
【請求項８】
前記保存ステップは、１部目の印刷データを生成する際、印刷データを生成する前に記憶装置の空き容量が所定値以下であるか否かを判別し、記憶装置の空き容量が所定値以下であると判別された場合、記憶装置から印刷データを削除し、記憶装置の空き容量が所定値以下であるか否かを判別し、記憶装置の空き容量が所定値以下であると判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送し、記憶装置の空き容量が所定値を超えると判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送すると共に生成された印刷データを記憶装置に保存することを特徴とする請求項７記載の印刷制御方法。
【請求項９】
前記保存ステップは、１部目の印刷データを生成する際、印刷データを生成する前に記憶装置の空き容量が所定値以下であるか否かを判別し、記憶装置の空き容量が所定値以下であると判別された際、保存済みの印刷データがない場合、記憶装置から印刷データを削除せず、保存済みの印刷データがある場合、記憶装置の空き容量が所定値以下になるまで記憶装置から印刷データを削除し、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送すると共に生成された印刷データを記憶装置に保存することを特徴とする請求項７または８記載の印刷制御方法。
【請求項１０】
印刷データを生成する前に、記憶装置の空き容量が所定値以下であるか否かを判別し、記憶装置の空き容量が所定値以下であると判別された場合、記憶装置から印刷データを削除する削除ステップと、
前記削除ステップによる削除の後に、記憶装置に生成すべきページの印刷データが保存されているか否かを判別し、記憶装置に生成すべきページの印刷データが保存されていると判別された場合、記憶装置に保存されている生成すべきページの印刷データをプリンタに転送し、記憶装置に生成すべきページの印刷データが保存されていないと判別された場合、記憶装置の空き容量が所定値以下であるか否かを判別し、記憶装置の空き容量が所定値以下であると判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送し、記憶装置の空き容量が所定値を超えると判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送すると共に生成された印刷データを記憶装置に保存する転送ステップとを有することを特徴とする印刷制御方法。
【請求項１１】
転送ステップは、前記削除ステップによる削除の後に、記憶装置に生成すべきページの印刷データが保存されているか否かを判別し、記憶装置に生成すべきページの印刷データが保存されていると判別された場合、記憶装置に保存されている生成すべきページの印刷データをプリンタに転送し、記憶装置に生成すべきページの印刷データが保存されていないと判別された場合、記憶装置の空き容量が所定値を超えるか、最終部でないかを判別し、記憶装置の空き容量が所定値以下であると判別された場合または最終部であると判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送し、記憶装置の空き容量が所定値を超えかつ最終部でないと判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送すると共に生成された印刷データを記憶装置に保存することを特徴とする請求項１０記載の印刷制御方法。
【請求項１２】
前記所定値は、部数が多い場合、部数が少ない場合より小さくなることを特徴とする請求項７または１０記載の印刷制御方法。
【請求項１３】
１部目の印刷データを生成する際、印刷データを生成する前に記憶装置の空き容量が所定値以下であるか否かを判別し、記憶装置の空き容量が所定値以下であると判別された場合、記憶装置から印刷データを削除し、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送すると共に生成された印刷データを記憶装置に保存する保存ステップと、
２部目以降の印刷データを生成する際、記憶装置に生成すべきページの印刷データが保存されているか否かを判別し、記憶装置に生成すべきページの印刷データが保存されていると判別された場合、記憶装置に保存されている生成すべきページの印刷データをプリンタに転送し、記憶装置に生成すべきページの印刷データが保存されていないと判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送する転送ステップとをコンピュータに実行させることを特徴とするプログラム。
【請求項１４】
前記保存ステップは、１部目の印刷データを生成する際、印刷データを生成する前に記憶装置の空き容量が所定値以下であるか否かを判別し、記憶装置の空き容量が所定値以下であると判別された場合、記憶装置から印刷データを削除し、記憶装置の空き容量が所定値以下であるか否かを判別し、記憶装置の空き容量が所定値以下であると判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送し、記憶装置の空き容量が所定値を超えると判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送すると共に生成された印刷データを記憶装置に保存することを特徴とする請求項１３記載のプログラム。
【請求項１５】
前記保存ステップは、１部目の印刷データを生成する際、印刷データを生成する前に記憶装置の空き容量が所定値以下であるか否かを判別し、記憶装置の空き容量が所定値以下であると判別された際、保存済みの印刷データがない場合、記憶装置から印刷データを削除せず、保存済みの印刷データがある場合、記憶装置の空き容量が所定値以下になるまで記憶装置から印刷データを削除し、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送すると共に生成された印刷データを記憶装置に保存することを特徴とする請求項１３または１４記載のプログラム。
【請求項１６】
印刷データを生成する前に、記憶装置の空き容量が所定値以下であるか否かを判別し、記憶装置の空き容量が所定値以下であると判別された場合、記憶装置から印刷データを削除する削除ステップと、
前記削除ステップによる削除の後に、記憶装置に生成すべきページの印刷データが保存されているか否かを判別し、記憶装置に生成すべきページの印刷データが保存されていると判別された場合、記憶装置に保存されている生成すべきページの印刷データをプリンタに転送し、記憶装置に生成すべきページの印刷データが保存されていないと判別された場合、記憶装置の空き容量が所定値以下であるか否かを判別し、記憶装置の空き容量が所定値以下であると判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送し、記憶装置の空き容量が所定値を超えると判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送すると共に生成された印刷データを記憶装置に保存する転送ステップとをコンピュータに実行させることを特徴とするプログラム。
【請求項１７】
転送ステップは、前記削除ステップによる削除の後に、記憶装置に生成すべきページの印刷データが保存されているか否かを判別し、記憶装置に生成すべきページの印刷データが保存されていると判別された場合、記憶装置に保存されている生成すべきページの印刷データをプリンタに転送し、記憶装置に生成すべきページの印刷データが保存されていないと判別された場合、記憶装置の空き容量が所定値を超えるか、最終部でないかを判別し、記憶装置の空き容量が所定値以下であると判別された場合または最終部であると判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送し、記憶装置の空き容量が所定値を超えかつ最終部でないと判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送すると共に生成された印刷データを記憶装置に保存することを特徴とする請求項１６記載のプログラム。
【請求項１８】
前記所定値は、部数が多い場合、部数が少ない場合より小さくなることを特徴とする請求項１３または１６記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数部印刷を行う印刷制御装置に関する。
【背景技術】
【０００２】
従来、同一ページの複数部印刷が指定された印刷要求が生じた場合、生成したプリンタが解釈可能な印刷データをハードディスク等の記憶領域に保存しておいて、以後生成済みの印刷データを参照する技術が知られる。これにより、同一ページを印刷する場合は再度印刷データを生成する処理を行う必要が無く、２部目以後の処理が高速に行える。一般的に、複数部印刷には、各ページを連続して複数部出力する方法（３ページ２部印刷の場合、１，１，２，２，３，３）と、ジョブ中のページ全体を部単位で複数部出力する方法（３ページ２部印刷の場合、１，２，３，１，２，３）が知られる。前者の複数部印刷を行う場合、同一ページの印刷は必ず連続するため、印刷データを保存して参照する前記手法を適用する場合、保存すべき印刷データは最大で１ページ分である。後者の複数部印刷を行う場合、２部目以降の印刷で生成済み印刷データを活用するためには、ジョブ中のページ数分の印刷データを保存する必要がある。そのため、ジョブ中のページ数が多い場合、ホストコンピュータやプリンタ内部の記憶領域に、印刷データを全て格納しきれない場合がある。これに対し、現在のページの印刷データを一時的な記憶領域に生成後、記憶領域に複製を保存可能な空き容量があると判定した場合のみ保存する技術が知られる（［特許文献１］参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平８−２４４３０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術においては、ＰＣ（パーソナルコンピュータ）のように他のアプリケーションやプロセスが並列に動作するような環境については想定されておらず、記憶領域に保存可能な限界まで印刷データを保存できた。
【０００５】
また、先行技術では、まず一時的な記憶領域に１ページ分の印刷データを生成するが、通常、ＰＣのような環境においては、全てのアプリケーションが使う記憶領域は共通で用意されている。記憶領域が逼迫している場合、このように１ページ分の印刷データを生成することすら正常に行えない。
【０００６】
そこで、本発明は、ＰＣ上の他のアプリケーションやシステムの動作が不安定にならない範囲で、部単位印刷を高速に行うことを目的とする。加えて、保存処理は必要最小限となる構成とし、不要なファイルアクセスを防止する。
【課題を解決するための手段】
【０００７】
上述のような課題を解決するための本発明の印刷制御装置は、
１部目の印刷データを生成する際、印刷データを生成する前に記憶装置の空き容量が所定値以下であるか否かを判別し、記憶装置の空き容量が所定値以下であると判別された場合、記憶装置から印刷データを削除し、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送すると共に生成された印刷データを記憶装置に保存する保存手段と、
２部目以降の印刷データを生成する際、記憶装置に生成すべきページの印刷データが保存されているか否かを判別し、記憶装置に生成すべきページの印刷データが保存されていると判別された場合、記憶装置に保存されている生成すべきページの印刷データをプリンタに転送し、記憶装置に生成すべきページの印刷データが保存されていないと判別された場合、生成すべきページの印刷データを生成し、生成された印刷データをプリンタに転送する転送手段とを有することを特徴とする。
【発明の効果】
【０００８】
部単位印刷時に、記憶領域に所定の空き容量を確保する処理を、全てのページの印刷データ生成処理前に実施することで、不要なファイルアクセスを防止すると共に、システムの安定性を維持することができる。印刷制御処理中に、同一システム上で動作する他の処理により記憶領域が逼迫した場合、システム及び他の処理を優先し、処理負荷の低い印刷データが削除され、常に所定の空き容量を確保する事ができる。逆に、印刷制御処理中に記憶領域に十分な空き容量ができた場合、その空き容量を有効活用して、印刷データを保存する処理が動作する。このように、印刷制御処理中の記憶領域の変動にも動的に追従し、一定の空き容量を保ちながら、印刷データを保存し、印刷制御を高速に行うことができる。
【図面の簡単な説明】
【０００９】
【図１】本発明を適用できる印刷システムのハードウェア構成を示すブロック図である。
【図２】本発明を適用できる印刷システムのソフトウェア構成を示すブロック図である。
【図３】プリントプロセッサ２０５による、部単位の部数印刷処理を示す図である。
【図４】実施形態１におけるグラフィックスドライバ２０６の印刷処理を示す図である。
【図５】所定の空き容量Ｆを決定する処理の一例（処理Ａ−１）を示す図である。
【図６】保存済み印刷データを削除する処理の一例（処理Ｂ−１）を示す図である。
【図７】印刷データ生成、転送処理の一例（処理Ｃ−１）を示す図である。
【図８】印刷データ生成、保存、転送処理（処理Ｄ）を示す図である。
【図９】印刷データ読み出し、転送処理（処理Ｅ）を示す図である。
【図１０】実施形態２におけるグラフィックスドライバ２０６の印刷処理を示す図である。
【図１１】保存済み印刷データを削除する処理の一例（処理Ｂ−２）を示す図である。
【図１２】印刷データ生成、転送処理の一例（処理Ｃ−２）を示す図である。
【図１３】所定の空き容量Ｆを決定する処理の一例（処理Ａ−２）を示す図である。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１１】
＜実施形態１＞
図１は本発明を適用できる印刷システムのハードウェア構成を示すブロック図である。本図において、一般的に１００がホストコンピュータ装置となる。１０１は、ＣＲＴ表示装置であり、プリンタドライバが提供する印刷設定ダイアログやプリンタステータス情報等を表示する。１０２はＣＲＴＣで表示装置用のコントローラである。１０３は、キーボードなどのデータ入力装置であり、１０４は、キーボードコントローラである。１０５は、ポインティングデバイス等の座標入力装置であり、１０６は、ポインティングデバイスコントローラである。１０７は、装置全体の制御を司るＣＰＵである。１０８は、ブートプログラムなどを記憶しているＲＯＭである。１０９は、ＯＳ、各アプリケーションプログラムやプリンタドライバプログラムを格納したり、さらにはワークエリアとしても利用されるＲＡＭである。１１０は、ＯＳ、各アプリケーションプログラムとプリンタドライバプログラム、フォントデータを記憶しており、さらにはスプールファイル等を一時的に記憶するハードディスク装置であり、１１１はハードディスクコントローラである。なお、記憶装置としてはハードディスクだけでなくＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ、Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ）のような記憶装置でも良い。１１２は、可搬性記憶媒体の駆動装置であるフロッピー（登録商標）ディスク装置であり、１１３はフロッピー（登録商標）ディスクコントローラである。１１４は、インターフェースであり、インターフェースケーブルを介してインクジェットプリンタなどのプリンタ１１５に接続される。１１６は、各デバイスを接続するバスである。本装置に電源が投入されると、ＣＰＵ１０７はＲＯＭ１０８に格納されているブートプログラムに従って起動し、ハードディスク装置１１０からＯＳをロードし、ユーザーの操作待ち状態になる。そして、ユーザーからＰＤ１０５等からアプリケーションを介して印刷指示やプリンタドライバの印刷設定変更指示を受けた場合、ハードディスク装置１１０に格納されているプリンタドライバプログラムがＲＡＭ１０９にロードされ実行される。また自動的に起動するように設定されている場合でもハードディスク装置１１０に格納されているプリンタドライバプログラムがＲＡＭ１０９にロードされ実行される。
【００１２】
次に、図２は本発明を適用できる印刷システムのソフトウェア（主にプリンタドライバ）の構成を示すブロック図である。以下、例えば一般的に普及しているパーソナルコンピュータにＭｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（登録商標）をオペレーティングシステム（以下、ＯＳと呼ぶ）として使用した場合の印刷システムについて説明する。本図において、１００は図１における１００に相当し、ホストコンピュータ内に存在する要素である。さらに、スプールファイル２０４およびプリンタ１１５以外は、図１におけるハードディスク装置１１０に格納されており、印刷実行時や、印刷設定変更時に、必要なプログラムがＲＡＭ１０９にロードされる。またスプールファイル２０４は、一般的に印刷実行時にハードディスク装置１１０に生成される。
【００１３】
まず、アプリケーション２０１は文書を作成し、その文書を印刷するためにユーザーインタフェースドライバ２０３にプリンタシステムの機能を問い合わせる。その後、ＯＳの描画モジュールであるグラフィックデバイス・インターフェース（Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ，以下ＧＤＩと呼ぶ）２０２を含む印刷システムに印刷開始を通知する。ここでＧＤＩ２０２は、アプリケーション２０１から印刷開始の通知を受けると、ユーザーインタフェースドライバ２０３にアプリケーション２０１による印刷開始の印刷イベントを通知する。続いてアプリケーション２０１は印刷対象の文書の描画データをＧＤＩ２０２に供給し印刷処理を続行する。ＧＤＩ２０２は、描画データをＥＭＦ（Ｅｎｈａｎｃｅｄ  Ｍｅｔａ  Ｆｉｌｅ）データとしてスプールファイル２０４に格納し、プリントプロセッサ２０５に印刷要求を発行する。これによりプリントプロセッサ２０５は、スプールファイル２０４から印刷出力情報と描画データをページ単位で読み込み、１ページずつグラフィックスドライバ２０６に出力して印刷するように要求する。尚、このプリントプロセッサ２０５は、ＯＳのモジュールとして用意されている。しかしながら、プリンタのメーカ等がカスタマイズしたプリントプロセッサ２０５をグラフィックスドライバ２０６とともに供給し、それらをハードディスク装置１１０にインストールすることも許容されている。
【００１４】
プリントプロセッサ２０５から印刷を要求されたグラフィックスドライバ２０６は、ＧＤＩ２０２が持つ描画機能であるＧＤＩレンダリングエンジンを用いて、その描画データをプリンタ１１５の印刷解像度に合わせてラスタイメージデータにレンダリングする。このラスタイメージデータは色を多段階の値として保持する多値データであり、これを元に色処理を行い、プリンタ１１５の保持するインク毎の色成分に分解したハーフトーンデータが生成される。これらのラスタイメージデータ、及びハーフトーンデータを、ページ全体分一度に処理をしようとすると、非常に大きなメモリが必要になる。よって、グラフィックスドライバ２０６は、ＧＤＩ２０２に対して、短冊状の矩形（以下、バンドと呼ぶ）単位での処理を要求することができる。その後、グラフィックスドライバ２０６は、プリンタコマンドの付加などを行い、プリンタ１１５が解釈可能な印刷データの形に変換し、それをプリンタ１１５に送信する。実際には、グラフィックスドライバ２０６から出力されたデータは、ランゲージモニタ２０７に送信依頼という形で出力される。ランゲージモニタ２０７は印刷ジョブを特定サイズのパケットに区切り、プリンタ１１５へ逐一出力する。プリンタ１１５が多値データを受け取ることができるような多値プリンタである場合、グラフィックスドライバ２０６は、ラスタイメージデータを直接，乃至何らかの圧縮を施した上でプリンタ１１５に送信することも許容される。
【００１５】
図２のような印刷システムにおいて、アプリケーション２０１が複数部数指定の印刷要求を発行した場合、プリンタドライバは以下のような方法で部数印刷を実現することが可能である。１つ目は、プリントプロセッサ２０５が、グラフィックスドライバ２０６に対し、指定のあった部数回、描画要求を発行するという方法である。ただしこの方法では、グラフィックスドライバ２０６は、部数回分、スプールファイル２０４中の描画データを印刷データへ変換する処理を実行する事になり、効率的では無い。２つ目は、グラフィックスドライバ２０６が、１部目の印刷処理時に生成した印刷データを、ハードディスク装置１１０などに保存しておき、２部目以降は保存済みの印刷データを用いるという方法である。この方法では、グラフィックスドライバ２０６による印刷データの生成は必要最小限に抑えられ、効率的であるが、ハードディスク装置１１０に、印刷データを格納可能な空き容量が必要であることは言うまでも無い。
【００１６】
また、プリンタドライバにおける複数部印刷には、一般的に、部単位による印刷と、そうでない印刷の２種類が存在し、それらについては背景技術で述べたとおりである。グラフィックスドライバ２０６が、生成した印刷データをハードディスク装置１１０に保存して再利用する場合、部単位印刷時には、ドキュメント中に存在するページ数分の印刷データを保持しておく必要がある。一方、部単位でない部数印刷時には、グラフィックスドライバ２０６は、１ページ分の印刷データをハードディスク装置１１０に保持できれば、部数印刷を要求通りに実行することができる。後者の場合、グラフィックスドライバ２０６は、仮に１ページ分の印刷データの記憶に失敗したとしても、処理すべきページの描画データを保持しているため、再度印刷データを生成することで、印刷を続行する事が可能である。つまり部単位でない部数印刷時には、プリントプロセッサ２０５は、同一ページの描画要求をグラフィックスドライバ２０６に発行する必要が無い。一方、部単位での部数印刷時には、各ページは連続しないため、グラフィックスドライバ２０６が印刷データを保存できなかった場合、再度プリントプロセッサ２０５に描画データを発行してもらう必要がある。グラフィックスドライバ２０６は、独自の方法でプリントプロセッサ２０５からの描画データを保存しておかない限り、現在処理中のページとは異なるページのスプールデータを参照することができないためである。
【００１７】
図３は、本発明を適用できる印刷システムにおいて、部単位の部数印刷の要求を受け取ってから、印刷処理を終了するまでの、プリントプロセッサ２０５の処理に関するフローチャートを示すものである。なお、図３は主に部数印刷に係る処理のみを示したものであり、その他の印刷要求に応じて、プリントプロセッサ２０５はその他の処理も実行することは言うまでもない。例えば、逆順での印刷が指示された場合、プリントプロセッサ２０５は、スプールファイル中の各ページの描画データの最後からグラフィックスドライバ２０６に渡す。
【００１８】
まず、プリントプロセッサ２０５は、Ｎを１に初期化する（Ｓ３００）。Ｎは、現在処理中の部番号を示す値である。次に、プリントプロセッサ２０５は、Ｍを１に初期化する（Ｓ３０１）。Ｍは、現在処理中のページ番号を示す値である。その後、プリントプロセッサ２０５は、ページ処理を開始する（Ｓ３０２）。ここで、プリントプロセッサ２０５は、ＯＳにより提供される、ページ開始を通知するためのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）の呼び出しなどを行う。次に、プリントプロセッサ２０５は、グラフィックスドライバ２０６に、処理中のページ番号Ｍ、部番号Ｎの情報を通知する（Ｓ３０３）。プリントプロセッサ２０５は、一例としてＧＤＩ２０２が提供するＡＰＩの１つである、ＥｘｔＥｓｃａｐｅ関数を用いるなどの方法で、グラフィックスドライバ２０６に対し、独自情報を通知することができる。次に、プリントプロセッサ２０５は、グラフィックスドライバ２０６に対し、Ｍページ目の描画データを再生（プレイ）する（Ｓ３０４）。このようにしてプレイされた描画データは、グラフィックスドライバ２０６に到達し、グラフィックスドライバ２０６は、印刷データの生成処理を実行することができる。プレイが終了すると、プリントプロセッサ２０５は、ページ処理を終了する（Ｓ３０５）。ここでも、プリントプロセッサ２０５は、Ｓ３０４と同様に、ＯＳにより提供されるページ終了を通知するためのＡＰＩの呼び出しなどを行う。プリントプロセッサ２０５は、Ｓ３０７で未処理のページが存在するかどうか判別し、存在したと判別された場合は、Ｓ３０１からＳ３０６の処理を実行する。残ページが存在しなかったと判別された場合、プリントプロセッサ２０５は、部番号Ｎに１を加える（Ｓ３０８）。次に、プリントプロセッサ２０５は、Ｓ３０９で未処理の部が存在するかどうか調べ、存在した場合は、Ｓ３０１からＳ３０８の処理を繰り返す。未処理の部が存在しなかった場合、プリントプロセッサ２０５の印刷処理は終了する。以上のように、本発明を適用できる印刷システムにおいて、プリントプロセッサ２０５は、部単位の部数印刷時には、全てのページの描画データを実際の印刷順にプレイする。
【００１９】
図４は、本発明を適用できる印刷システムにおいて、印刷開始の要求を受け取ってから、印刷処理を終了するまでの、グラフィックスドライバ２０６の処理に関するフローチャートを示すものである。なお、図４は主に部単位時の部数印刷に係る処理のみを示したものであり、その他の印刷要求に応じて、グラフィックスドライバ２０６はその他の処理も実行することは言うまでもない。
【００２０】
まず、グラフィックスドライバ２０６は、ハードディスク装置１１０に残存した保存済み印刷データがあるかどうかを調べ、あれば該当するものを全て削除する処理を実行する（Ｓ４００）。後に、グラフィックスドライバ２０６は、印刷データをハードディスク装置１１０に保存し、保存した印刷データは印刷処理の終了時に削除するが、異常終了するなどして削除されなかった印刷データが残存している可能性があるためである。ここで、グラフィックスドライバ２０６は、既定の保存場所に、既定の名称ルールに該当するファイル名で保存されたファイルを検索し、削除する処理を実行する。次に、グラフィックスドライバ２０６は、所定の空き容量Ｆの決定処理（処理Ａ）を実行する（Ｓ４０１）。Ｆは、グラフィックスドライバ２０６が１ページ分の印刷データを保存しても、ＯＳが不安定にならずに動作可能な所定値に定められる。Ｆの値の具体的な決定方法については後述する。
【００２１】
次に、グラフィックスドライバ２０６はページ処理を開始する（Ｓ４０２）。具体的には、グラフィックスドライバ２０６は、プリンタ１１５に対し、ページ開始を示す印刷コマンドの送信などを行う。その後、プリントプロセッサ２０５によってＳ３０３で送信されたページ情報が、グラフィックスドライバ２０６に通知されるため、グラフィックスドライバ２０６は、その情報を受信し、ＲＡＭ１０９に記憶する（Ｓ４０３）。その後、グラフィックスドライバ２０６は、現在の印刷ジョブにおいて、部数２以上の部単位印刷が指定されているかどうかを調べる（Ｓ４０４）。ここで、Ｓ４０４の判定が真でない場合、グラフィックスドライバ２０６は描画データを元に印刷データを生成し、プリンタ１１５に転送を行う（Ｓ４０５）。部単位の部数印刷が指定されていない場合、一度生成した特定ページに対する印刷データが再度利用されることはないため、グラフィックスドライバ２０６は、印刷データの保存処理は実行せず、プリンタ１１５に単純に転送をする。前述の通り、部単位でない部数印刷時には、グラフィックスドライバ２０６は印刷データを保存し、繰り返し転送しても良い。Ｓ４０５の転送処理（処理Ｃ−１）については、詳細のフローチャートにて後述する。
【００２２】
Ｓ４０４が真であった場合、グラフィックスドライバ２０６は、現在１部目を処理中であるか否かを、プリントプロセッサ２０５から受信したＮを参照することで調べる（Ｓ４０６）。１部目であった場合、つまりＳ４０６の判定が真でなかった場合、グラフィックスドライバ２０６は、まずハードディスク装置１１０に保存済み印刷データの削除処理（処理Ｂ−１）を行う（Ｓ４０７）。この削除処理は、ハードディスク装置１１０に、Ｆより大きい空き容量を確保する目的で行うもので、全ての保存済み印刷データを削除するわけではない。Ｓ４０７の削除処理の詳細は後述する。削除処理実行後、グラフィックスドライバ２０６は、ハードディスク装置１１０の空き容量がＦより大きくなっているかどうかを調べる（Ｓ４０８）。ハードディスク装置１１０の空き容量は、ＯＳが提供するＡＰＩにより取得することが可能である。ハードディスク装置１１０の空き容量がＦより小さい場合、グラフィックスドライバ２０６は、印刷データの保存処理は実行せず、通常印刷時と同等の処理（処理Ｃ−１）を実行する（Ｓ４０５）。ハードディスク装置１１０の空き容量がＦより大きい場合、グラフィックスドライバ２０６は、印刷データの生成、転送に加え、ハードディスク装置１１０への保存処理を実行する（Ｓ４０９）。Ｓ４０９の保存処理（処理Ｄ）の詳細は後述する。
【００２３】
Ｓ４０６が真、つまり２部目以降の処理に際しては、まずグラフィックスドライバ２０６は、ハードディスク装置１１０に現在処理中のＭページ目の印刷データを保存済みであるか否かを調べる（Ｓ４１０）。Ｓ４０９の詳細処理のフローチャートにて後述するが、グラフィックスドライバ２０６は、印刷データをハードディスク装置１１０に保存する際、印刷データのページ番号を元に参照可能な形で保存する。よってここでは、グラフィックスドライバ２０６は、現在処理中のページ番号Ｍに関連付けられて保存された印刷データが、ハードディスク装置１１０に存在するかどうかを調べれば良い。Ｓ４１０が真でない場合、つまりＭページ目の印刷データがハードディスク装置１１０に存在しない場合、グラフィックスドライバ２０６は、通常印刷時と同等の処理（処理Ｃ−１）を実行する（Ｓ４０５）。一方、Ｍページ目の印刷データがハードディスク装置１１０に存在した場合、グラフィックスドライバ２０６は、ハードディスク装置１１０からＭページ目の印刷データを読み出し、転送する処理（処理Ｅ）を行う（Ｓ４１１）。Ｓ４１１の処理は、印刷データの生成処理を行わないため、処理Ｃ−１や処理Ｄに対して軽量な処理であり、高速に実行することが可能である。Ｓ４１１の読み出し、転送処理の詳細は後述する。
【００２４】
以上のように、処理Ｃ−１、処理Ｄ、処理Ｅのいずれかの方法により、グラフィックスドライバ２０６は、現在のページの印刷データをプリンタ１１５に転送する。この転送処理が完了すると、グラフィックスドライバ２０６は、ページ終了の処理を実行する（Ｓ４１２）。具体的には、グラフィックスドライバ２０６は、プリンタ１１５に対し、ページ終了を示す印刷コマンドの送信などを行う。尚、ページ開始や終了のコマンドは、Ｓ４０９で保存する対象とすることも可能で、その場合、グラフィックスドライバ２０６は、Ｓ４０２やＳ４１２で、ページ開始や終了のコマンドを送信する必要はない。グラフィックスドライバ２０６は、印刷要求のあった残ページが存在するまで（Ｓ４１３）、Ｓ４０２からＳ４１２の処理を繰り返す。全てのページを終了すると、グラフィックスドライバ２０６は、最後にハードディスク装置１１０から、保存済みの印刷データを削除する処理を行う（Ｓ４１４）。ここでは、Ｓ４０７と異なり、グラフィックスドライバ２０６は自身が生成した全てのページに対する印刷データを削除する。
【００２５】
本実施形態においては、グラフィックスドライバ２０６は、１部目の処理中にのみ印刷データの事前削除処理（Ｓ４０７）、印刷データの保存処理（Ｓ４０９）を実行する。これは、特別な構成を必要とせず、２部目以降の処理時に、グラフィックスドライバ２０６が、不要な印刷データの生成・削除を繰り返してしまう事を防ぐことを目的としている。グラフィックスドライバ２０６が１部目の全ページの処理を終了したタイミングで、ハードディスク装置１１０には、処理負荷の高いページの印刷データが保存可能な範囲で最適に保存されている。２部目以降も印刷データの保存処理を実行する場合、まずＳ４０７で、ハードディスク装置１１０に空き容量Ｆが確保されていない場合、保存済みの印刷データの中で最も処理負荷の軽いものから削除する処理を実行する。その後、グラフィックスドライバ２０６はＳ４０９で現在のページの印刷データを保存し、その保存した印刷データは、次のページを処理する際にはじめて、Ｓ４０７における削除対象となる。このように、処理負荷の高い順に最適に保存されているにも関わらず、一旦一部を削除して、処理負荷の軽いものを保存してしまう可能性がある。本実施形態はこのような不要なファイルアクセスを防止する構成となっている。
【００２６】
また、図４に示すように、グラフィックスドライバ２０６は、保存済み印刷データが存在すればそれを単純に転送し、存在しなければ印刷データを生成してからそれを転送する。そのため、プリントプロセッサ２０５は、どのページの印刷データが保存されているかを意識する必要がなく、特別な処理が不要である。一方で、グラフィックスドライバ２０６が、保存したページ番号をプリントプロセッサ２０５に通知することで、プリントプロセッサ２０５は、そのページの描画データをプレイしない構成とすることも可能である。この場合、不要なページの描画データのプレイ時間が掛からないため、処理時間の短縮を図ることができる。
【００２７】
以下、図４のフローチャートにおける、（Ａ）から（Ｅ）の処理について説明する。まず、図５は、グラフィックスドライバ２０６が空き容量Ｆ（所定値）を決定する際の処理の一例（処理Ａ−１）を示すフローチャートである。まず、グラフィックスドライバ２０６は、自身がサポートする最大の用紙サイズ、色数、解像度を取得する（Ｓ５００）。色数とは、一例としてインクを吐出することで印刷を実行するインクジェットプリンタのインクの数に該当するものであり、プリンタドライバは、通常このインク毎にハーフトーンイメージを作成することで印刷を実行する。次に、グラフィックスドライバ２０６は、Ｓ５００で取得した各種値を利用することで、１ページ当たりの印刷データの最大目安値Ｐｍａｘを計算する（Ｓ５０１）。一例として、Ｐｍａｘは、用紙サイズ、色数、解像度をそれぞれ掛け合わることで求められる。
【００２８】
次に、グラフィックスドライバ２０６は、ＯＳの提供するＡＰＩを利用することで、現在のＯＳ環境における仮想メモリサイズＶｍを取得する（Ｓ５０２）。仮想メモリとは、ハードウェアとして存在するＲＡＭ１０９が一杯になった場合に、ＯＳがＲＡＭ１０９の代替として用いるハードディスク装置１１０の一領域を指す。つまり仮想メモリとして確保されている領域は、各種アプリケーションやＯＳ自身によって、一時領域として利用される可能性が高い領域であると言える。Ｆは、このようにして求められたＰｍａｘとＶｍを足し合わせた値とする（Ｓ５０３）。このように、グラフィックスドライバ２０６は、Ｆを、ハードディスク装置１１０に１ページ分の印刷データを保存しても、仮想メモリとして予約されているサイズの空き容量が残る事を保証できるようなサイズにする。このような空き容量を事前に確保することで、グラフィックスドライバ２０６は、システムやその他のアプリケーションの動作を阻害しない範疇で、印刷データの保存処理を行うことができる。
【００２９】
なお、一般に仮想メモリサイズＶｍは、印刷データの最大目安値Ｐｍａｘよりも十分に大きい。そのため、グラフィックスドライバ２０６は、Ｓ５００，Ｓ５０１の処理をスキップし、Ｆは仮想メモリサイズＶｍをそのまま用いても良い。また、Ｆ決定処理Ａ−１は、印刷処理の開始時に毎回実行されるが、仮想メモリサイズは通常既定の推奨値から頻繁に変更され得るものではないため、グラフィックスドライバ２０６は、あらかじめ決めておいた固定値をＦとして用いても良い。
【００３０】
図６は、グラフィックスドライバ２０６がハードディスク装置１１０に保存済みの印刷データを削除する処理の一例（処理Ｂ−１）を示すフローチャートである。この処理は、ハードディスク装置１１０に空き容量Ｆを確保する目的で実行する処理であり、グラフィックスドライバ２０６は、全ての保存済み印刷データを削除するわけではない。まず、グラフィックスドライバ２０６は、ＯＳの提供するＡＰＩを使い、ハードディスク装置１１０の空き容量を取得し、Ｆ（Ｓ４０１で決定した所定の空き容量）より大きいかどうかを調べる（Ｓ６００）。Ｓ６００が真の場合（Ｆ所定値を超える場合）、グラフィックスドライバ２０６は、現在のページの印刷データを保存可能な空き容量がハードディスク装置１１０にあると判断し、Ｓ４０７の処理を終了する。Ｓ６００が真でない場合（Ｆ所定値以下の場合）、グラフィックスドライバ２０６は、ハードディスク装置１１０に保存済みの印刷データが存在するかどうかを調べる（Ｓ６０１）。Ｓ６０１が真でない場合、グラフィックスドライバ２０６は、自身が保存した印刷データを削除して、ハードディスク装置１１０の空き容量を増やすことができないため、処理Ｂ−１を終了する。
【００３１】
Ｓ６０１が真である場合、グラフィックスドライバ２０６は、保存済み印刷データの中から、ラスタライズ時間が最も短いページを検索する（Ｓ６０２）。後述するが、グラフィックスドライバ２０６は、印刷データをハードディスク装置１１０に保存する際、そのページのラスタライズ処理に要した時間を参照可能なよう保存しておく。グラフィックスドライバ２０６は、ここでその情報を参照し、最もラスタライズ時間が短いページ、つまり処理負荷が軽いページの印刷データを決定する。最後に、グラフィックスドライバ２０６は、Ｓ６０２で決定したページの印刷データを、ハードディスク装置１１０から削除する。グラフィックスドライバ２０６は、Ｓ６００からＳ６０３までの処理を繰り返し、削除対象がなくなるか、あるいは必要な空き容量Ｆが確保できた時点で、処理Ｂ−１を終了する。
【００３２】
図７は、グラフィックスドライバ２０６が、あるページの印刷データを生成・転送する処理の一例（処理Ｃ−１）を示すフローチャートである。図２で説明したとおり、グラフィックスドライバ２０６は、使用するメモリを抑えるため、バンドと呼ばれる矩形単位で印刷データの生成処理を行う。まず、グラフィックスドライバ２０６は、現在のバンドのラスタイメージデータを生成する（Ｓ７００）。次に、グラフィックスドライバ２０６は、一定の単位で、ラスタイメージデータを元に、プリンタ１１５が解釈可能な印刷データを生成し、生成した印刷データをＲＡＭ１０９に記憶する（Ｓ７０１）。グラフィックスドライバ２０６は、生成した印刷データを、ＲＡＭ１０９から読み出し、プリンタ１１５に転送する（Ｓ７０２）。グラフィックスドライバ２０６は、処理中のバンドの全ラスタイメージデータを印刷データに変換・転送するまで、Ｓ７０１からＳ７０２の処理を繰り返す（Ｓ７０３による繰り返し）。バンドの処理が終了すると、グラフィックスドライバ２０６は次のバンドの処理を開始し（Ｓ７０４による繰り返し）、全てのバンドの処理が完了すれば、処理Ｃ−１は終了する。
【００３３】
このように、グラフィックスドライバ２０６による通常印刷時には、生成された印刷データは逐次ＲＡＭ１０９に保存され、転送後、削除（上書き）される。この処理でグラフィックスドライバ２０６が使うＲＡＭの容量は、数ラスタ分の印刷データが確保可能なサイズで良く、小さなＲＡＭ容量で動作する。
【００３４】
一方、図８は、グラフィックスドライバ２０６が、あるページの印刷データの生成・転送に加え、ハードディスク装置１１０への保存も行う処理（処理Ｄ）の詳細を示すフローチャートである。まず、グラフィックスドライバ２０６は、ハードディスク装置１１０に新規ファイルを作成する（Ｓ８００）。ファイル名は、ページ番号を元に探索可能な名称とする。次に、グラフィックスドライバ２０６は、現在のバンドに対応するラスタイメージデータを生成すると共に、その生成に要した時間をＴｂａｎｄに保存する（Ｓ８０１）。グラフィックスドライバ２０６は、Ｔｂａｎｄの値を、Ｔｎに積算値として加える（Ｓ８０２）。Ｓ８０３，Ｓ８０４では、Ｓ７０１，Ｓ７０２同様、グラフィックスドライバ２０６は、印刷データをＲＡＭ１０９に展開し、プリンタ１１５に転送する。それに加えて処理Ｄでは、グラフィックスドライバ２０６は、ＲＡＭ１０９の内容をＳ８００で生成したハードディスク装置１１０上のファイルにコピーする（Ｓ８０５）。
【００３５】
Ｓ８０６、Ｓ８０７で、グラフィックスドライバ２０６は、バンド内の処理、及びページ内の処理を繰り返し、ページ全体の印刷データの生成・転送・保存を行う。ページ全体の処理が完了すると、グラフィックスドライバ２０６は、Ｓ８００で生成したハードディスク装置１１０上のファイルをクローズする（Ｓ８０８）。グラフィックスドライバ２０６は、Ｍ（この印刷データのページ番号）を元に、この保存した印刷データを参照可能にしておく。同様に、グラフィックスドライバ２０６は、Ｍを元に、Ｔｎ（印刷データのラスタライズに要した時間）を参照可能に記憶しておく（Ｓ８０９）。これらのデータは、ＲＡＭ１０９上に保存しても、ハードディスク装置１１０上に保存しても良い。以上で、グラフィックスドライバ２０６による、Ｓ４０９の処理は終了である。
【００３６】
図８の処理において、グラフィックスドライバ２０６は、ラスタライズに要した時間を印刷データに関連付けて保存するが、この時間は、その他の色処理なども含めた時間としても良い。あくまで、印刷データの生成負荷を判断可能な一情報を格納しておくことが目的である。
【００３７】
また、グラフィックスドライバ２０６は、Ｓ４０８で、ハードディスク装置１１０の空き容量がＦ以上になった場合にのみ、印刷データの保存処理Ｓ４０９を実行する。ここでＦは、印刷データの最大目安値Ｐｍａｘよりも大きな値に決定されているため、グラフィックスドライバ２０６による印刷データの保存時に、容量が不足して失敗することは通常起こりえない。但し、Ｓ８０５で万が一ハードディスク装置１１０への保存に失敗した場合、グラフィックスドライバ２０６は、生成中のファイルを削除し、印刷データの生成・転送処理のみを行う。この印刷データについては、保存がなされていないものとして、特別なケアをする必要なく、グラフィックスドライバ２０６は処理を進めることが可能である。
【００３８】
図９は、処理ページの印刷データがハードディスク装置１１０に保存済みである場合に、グラフィックスドライバ２０６が、その印刷データを読み出し、転送する処理（処理Ｅ）の詳細を示すフローチャートである。まずグラフィックスドライバ２０６は、現在処理中のＭページ目の保存済み印刷データをハードディスク装置１１０から開く（Ｓ９００）。次に、グラフィックスドライバ２０６は、印刷データをＳ９００で開いたファイルからＲＡＭ１０９に一定単位で読み出し（Ｓ９０１）、プリンタ１１５へ転送する（Ｓ９０２）。グラフィックスドライバ２０６は、Ｓ９０１、Ｓ９０２の処理を、ファイルが終了するまで繰り返す（Ｓ９０３による繰り返し）。ファイルが終了した場合、グラフィックスドライバ２０６は、Ｓ９００で開いたファイルをクローズし、終了する（Ｓ９０４）。
【００３９】
以上が、本発明を適用できる印刷システムの一例である。本構成では、一部目の処理が終了した時点で、処理負荷の高い順番に、ハードディスク装置１１０に印刷データが保存される。また、保存処理は、システムが不安定にならない空き容量Ｆを維持して実行される。印刷データの保存によりシステムが不安定になる可能性がある場合は、グラフィックスドライバ２０６は最初から保存処理は実行せず、システムにさらに負担を掛けることもない上、通常通りの低メモリのＲＡＭ容量で動作可能である。逆に、グラフィックスドライバ２０６が印刷データを保存する場合、事前に十分な空き容量があることを確認するため、通常保存に失敗することはない。２部目以降は、グラフィックスドライバ２０６は、処理負荷が高いページは保存済み印刷データを参照し転送するだけの軽量な処理で印刷を実現し、印刷データが保存されていない軽量なページのみ、印刷データの生成処理を再度実行することで印刷する。
【００４０】
また、一部目処理中に、グラフィックスドライバ２０６は毎ページ処理開始前にハードディスク装置１１０の空き容量を調べる処理を行う。これにより、一度保存の限界に達していても、他のアプリケーションの動作によりハードディスク装置１１０の空き容量が確保された場合、グラフィックスドライバ２０６は再度印刷データの保存処理を行う。その際、グラフィックスドライバ２０６は、保存処理をリトライするのではなく、あくまでハードディスク装置１１０の空き容量を事前確認するだけなので、システムへの負担は軽い。一方、既に多数の印刷ページを保存していても、他のアプリケーションの動作によりハードディスク装置１１０の空き容量が逼迫した場合、グラフィックスドライバ２０６は、保存済み印刷データを削除し、システムや他のアプリケーションの動作を優先させる。印刷データを保存して再利用することは、トータルとしての印刷処理の軽量化と高速化を目的とするものであり、それを実行しなくては印刷が行えないというものではない。そのため、場合によっては保存済み印刷データを全て削除してでも、グラフィックスドライバ２０６は、他のアプリケーションやシステムの動作を優先させる。
【００４１】
＜実施形態２＞
次に、本発明を適用できる第２の実施形態について説明する。第２の実施形態は、図４で示した実施例１のグラフィックスドライバ２０６のフローの一部が異なるのみであり、その他の構成や処理は第１の実施形態と同等である。
【００４２】
図１０は、実施形態１の図４に該当する、グラフィックスドライバ２０６の印刷処理のフローチャートを示す図である。Ｓ１０００からＳ１００４の処理は、図４におけるＳ４００からＳ４０４の処理と同等である。Ｓ１００４が真でない場合、つまり部単位の部数印刷でない場合、グラフィックスドライバ２０６は、印刷データの生成、転送処理を行う（Ｓ１００５）。このフローにおいて好適な、印刷データの生成・転送処理（処理Ｃ−２）については後述する。本実施形態においては、Ｓ１００４が真である場合、つまり部単位の部数印刷を処理する場合、グラフィックスドライバ２０６は、まずハードディスク装置１１０に保存済み印刷データの削除処理を実行する（Ｓ１００６）。このように、グラフィックスドライバ２０６は、実施形態１において１部目処理時にのみ行っていた削除処理（Ｓ４０７）を、実施形態２においては、全ての部の処理時に実行する。このフローにおいて好適な、保存済み印刷データの削除処理（処理Ｂ−２）については後述する。Ｓ１００７、及びＳ１０１０の処理は、Ｓ４１０、Ｓ４１１の処理と同等であり、グラフィックスドライバ２０６は、印刷データが保存済みであれば読み出して転送する。Ｓ１００７の判定が真でない場合、つまりハードディスク装置１１０に現在のページの印刷データが保存されていない場合、グラフィックスドライバ２０６は次にＳ１００８の判定を行う。Ｓ１００８でグラフィックスドライバ２０６は、Ｓ４０８同様、ハードディスク装置１１０の空き容量がＦより大きいか否かに加え、処理中の部Ｎが最終部であるかどうかを調べる。本実施形態では、保存済み印刷データ削除処理（処理Ｂ−２）に加え、印刷データの保存処理も、全ての部の処理中に実施を試みる。但し、印刷データの保存処理に関しては、最終部で保存してもその後参照されることはあり得ないので、グラフィックスドライバ２０６は、最終部でのみ、保存処理を実施しない。そのため、Ｓ１００８で真であった場合、つまりハードディスク装置１１０の空き容量がＦより大きく、かつ最終部処理中でない場合のみ、グラフィックスドライバ２０６は保存処理Ｓ１００９を実行する。Ｓ１００９の処理についてはＳ４０９と同等である。繰り返し処理や終了処理に関するＳ１０１１からＳ１０１３までの処理は、Ｓ４１２からＳ４１４の処理と同等である。
【００４３】
次に、本実施形態で好適な、印刷データの生成、転送処理（処理Ｃ−２）を、図１２のフローチャートで説明する。処理Ｃ−２は、処理Ｃ−１に対し、処理Ｄで実行しているラスタライズ時間の計測と保存処理を加えたものであり、共通部分に関する説明は割愛する。グラフィックスドライバ２０６は、Ｓ１２００、Ｓ１２０１にて、ラスタライズ時間Ｔｍを測定し、Ｓ１２０６で現在のページ番号Ｍと関連付けて保存する。これらの情報は、Ｓ８０８で保存するページ情報と同等のものであり、ＲＡＭ１０９に保存され、一連の情報として参照可能な状態であるのが好ましい。また、同じページ番号Ｍを持つページ情報が既にＲＡＭ１０９に存在する場合、グラフィックスドライバ２０６は、重複して登録はせず、情報を上書きする。
【００４４】
つまり、本実施形態においては、１部目の処理が完了した時点で、保存したページに限らず、全てのページのラスタライズ時間がＲＡＭ１０９に格納される。加えて、印刷データを保存すると判断したページは、ハードディスク装置１１０に印刷データが保存され、ページ番号を元に参照可能な形になる。
【００４５】
次に、本実施形態で好適な、保存済み印刷データの削除処理（処理Ｂ−２）を、図１１のフローチャートで説明する。処理Ｂ−２では、処理Ｂ−１に対し、削除する条件などが一部変わっている。まず、Ｓ１１００からＳ１１０２の処理は、処理Ｂ−１のＳ６００からＳ６０２の処理と同等である。ここで、ハードディスク装置１１０の空き容量をＥ、Ｓ１１０２で検索されたラスタライズが最も短いページのラスタライズ時間をＴｍｉｎ、そのページの印刷データサイズをＤｍｉｎとする。次に、グラフィックスドライバ２０６は、現在のページのラスタライズ時間（Ｔｍ）が既知であるかどうかを調べる（Ｓ１１０３）。処理Ｂ−２は、印刷データの生成処理の前に実行されるため、１部目処理時は、グラフィックスドライバ２０６は、Ｔｍを知らない。一方、Ｓ８０８及びＳ１２０６の処理により、２部目処理時には、グラフィックスドライバ２０６は、１部目に測定したＴｍを参照することが可能である。Ｔｍが未知であった場合、グラフィックスドライバ２０６は、検出したページの印刷データを削除する（Ｓ１１０５）。この処理はＳ６０３と同等である。一方、Ｔｍが既知であった場合、グラフィックスドライバ２０６は、以下のいずれかの条件に当てはまる場合のみ削除を実行する。最初の条件は、以下の通りである。
Ｅ（ハードディスク装置１１０の空き容量）＋Ｄｍｉｎ（削除対象データのサイズ）＜Ｆ（ハードディスク装置１１０に確保したい所定の空き容量）
この条件に当てはまるものを削除するということは、削除した後も、ハードディスク装置１１０には、所定の空き容量Ｆは確保できないということである。言い換えれば、この削除を実行しても、まだ新しい印刷データを保存可能な空き容量Ｆは確保できていない状態になり、保存処理は実行されない。システムや他のアプリケーションの安定動作を優先させる目的で、ハードディスク装置１１０に所定の空き容量Ｆが確保されていない場合、グラフィックスドライバ２０６は可能な限り印刷データを削除してＦの確保を試みる。
【００４６】
２つ目の条件は以下の通りである。
Ｔｍ＞Ｔｍｉｎ
まず、１つ目の条件に当てはまらないものを削除するということは、次のＳ１１００の判定が真になり、その結果、グラフィックスドライバ２０６は、現在のページの印刷データを保存するということを意味する。ここで、グラフィックスドライバ２０６が、既に１部目で決定した処理負荷の高い印刷データを削除して、再度処理負荷の軽い印刷データを保存してしまわないように、この２つ目の条件による判定を実施する。２つ目の条件は、前述の通り、Ｔｍ（現在のページのラスタライズ時間）が、Ｔｍｉｎ（削除対象のページのラスタライズ時間）よりも長いか否かを判定するものである。この条件を満たす場合のみ削除することで、グラフィックスドライバ２０６は、処理負荷の軽い印刷データを削除して、より処理負荷が高い現在のページの印刷データを保存することができる事になる。
【００４７】
以上のような２つの条件により、グラフィックスドライバ２０６は、所定の空き容量Ｆが確保可能な直前までは無条件で削除を実行する。これにより、システムやその他のアプリケーションでハードディスク装置１１０の空き容量が変動した場合、それに追従して所定の空き容量Ｆを保つ。一方で、現在のページを保存するために、保存済みページを削除しなくてはならない場合は、グラフィックスドライバ２０６は、それらの処理負荷を比較し、より処理負荷が高い方を残すか、新規に保存する。
【００４８】
本実施形態では、１部目の処理は第一の実施形態と基本的に同一である。それに加えて、グラフィックスドライバ２０６は、２部目以降も、印刷データの削除・保存処理を実行する点が特徴である。まず、システムや他のアプリケーションにより、ハードディスク装置１１０の空き容量が減った場合、グラフィックスドライバ２０６は、所定の空き容量Ｆを確保するまで、印刷データを削除する処理を２部目以降も実行する。逆に、他の要因でハードディスク装置１１０の空き容量が増えた場合、グラフィックスドライバ２０６は、印刷データを保存する処理を２部目以降も実行する。一方で、ハードディスク装置１１０の空き容量の増減がない範疇で、グラフィックスドライバ２０６は、１部目で最適に印刷データを保存済みである。現在のページのラスタライズ時間を元に、保存済み印刷データを削除して追加で保存すべきか否かを決定することによって、グラフィックスドライバ２０６は、無駄な削除・保存処理を実行することなく、常に処理負荷の高い印刷データを保持することができる。
【００４９】
＜実施形態３＞
次に、本発明を適用できる第３の実施形態について説明する。第３の実施形態は、第１、第２の実施形態に対して、所定の空き容量Ｆの決定処理（処理Ａ）が異なるのみであり、その他の構成や処理は第１、第２の実施形態と同等である。
【００５０】
本実施形態におけるＦ決定処理（処理Ａ−２）を図１３に示す。処理Ａ−２は、処理Ａ−１に対し、ユーザーから指定のあった印刷部数を元にＦ値を調整する処理が追加になっており、その他の処理はＡ−１と同等である。まず、Ｓ１３００からＳ１３０３の処理は、Ｓ５００からＳ５０３の処理と同等である。次に、本構成では、グラフィックスドライバ２０６は、ユーザーから指定のあった印刷部数Ｎｍａｘを取得する（Ｓ１３０４）。次に、グラフィックスドライバ２０６は、ＦをＮｍａｘで割る（Ｓ１３０５）。最低値として、Ｆは、１ページ分の印刷データが保存可能である必要があるため、グラフィックスドライバ２０６はＦがＰｍａｘより小さいか否かを調べる（Ｓ１３０６）。Ｓ１３０６が真であった場合、ＦはＰｍａｘとする（Ｓ１３０７）。
【００５１】
このようにして決定されたＦは、最低値をＰｍａｘとし、Ｎｍａｘに反比例した値となる。つまり、ユーザーにより指定された部数が多い場合は、Ｆは小さな値となり、グラフィックスドライバ２０６による印刷データの保存が実行されやすく（空き容量がなくなる直前まで保存されるように）なる。例えば２部印刷の場合、１部目で保存した印刷データは、２部目を処理する際に１回だけ参照される。一方、１００部印刷の場合、１部目で保存した印刷データは、２部目以降を処理する際に９９回参照される。このように、部数が多いということは、保存した印刷データが繰り返し使われる（印刷データの保存により節約可能な処理負荷が大きい）ことになる。すなわち、本実施形態は、保存後の効果に従い、保存の度合いを変えるものである。
【００５２】
Ｓ１３０５の計算では、Ｆは単純にＮｍａｘに反比例した値としているが、何らかのパラメータを掛け合わせたものでも良い。
【００５３】
ハードディスク装置１１０の空き容量を積極的に利用する処理Ａ−２は、実施形態２のように、ジョブ全体を通して、グラフィックスドライバ２０６がハードディスク装置１１０の空き容量を監視するような構成において、より親和性が高い。
【００５４】
＜実施形態４＞
また、本発明の目的は、以下の処理を実行することによっても達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出す処理である。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００５５】
以上説明したように、本発明の実施の形態によれば、部単位印刷時に、一度生成した印刷データのうち処理負荷の高いものを優先的に保存し、その後の同一ページの処理に際して印刷データの生成処理をスキップすることで、印刷制御を高速に行うことができる。また、記憶領域に所定の空き容量を確保する処理を、全てのページの印刷データ生成処理前に実施することで、不要なファイルアクセスを防止すると共に、システムの安定性を維持することができる。印刷制御処理中に、同一システム上で動作する他の処理により記憶領域が逼迫した場合、システム及び他の処理を優先し、処理負荷の低い印刷データが削除され、常に所定の空き容量を確保する事ができる。逆に、印刷制御処理中に記憶領域に十分な空き容量ができた場合、その空き容量を有効活用して、印刷データを保存する処理が動作する。このように、印刷制御処理中の記憶領域の変動にも動的に追従し、一定の空き容量を保ちながら、処理負荷が高い印刷データを保存し、印刷制御を高速に行うことができる。
【符号の説明】
【００５６】
１００  ホストコンピュータ装置
１０９  ＲＡＭ
１１０  ハードディスク装置
１１５  プリンタ
２０１  アプリケーション
２０５  プリントプロセッサ
２０６  グラフィックスドライバ
【図１】
2010282280.tif 000003
【図２】
2010282280.tif 000004
【図３】
2010282280.tif 000005
【図４】
2010282280.tif 000006
【図５】
2010282280.tif 000007
【図６】
2010282280.tif 000008
【図７】
2010282280.tif 000009
【図８】
2010282280.tif 000010
【図９】
2010282280.tif 000011
【図１０】
2010282280.tif 000012
【図１１】
2010282280.tif 000013
【図１２】
2010282280.tif 000014
【図１３】
2010282280.tif 000015