(57)【特許請求の範囲】
【請求項１】
プリンタに印刷データを供給するためにコンピュータ上で実行されるプリンタドライバであって、
前記コンピュータを、
前記プリンタに供給されるべき印刷データの要素である印刷要素データを一時記憶するための印刷データ記憶部と、
属性データを一時記憶するための属性データ記憶部と、
前記プリンタに供給されるべき印刷データに関する印刷要素データを順次生成して前記印刷データ記憶部に記憶する処理を行なうとともに、必要に応じて、前記属性データ記憶部に、前記印刷データ記憶部内に記憶されている印刷要素データの中から、印刷の中止指示が出された場合に破棄されることなく前記プリンタに送信されるべき印刷要素データである破棄不可印刷要素データを特定可能な属性データを記憶する処理を行なう印刷データ生成部と、
印刷の中止指示が出されていない場合には、前記印刷データ記憶部に記憶されている印刷要素データを、印刷データ記憶部への記憶順に従った順番で前記プリンタに送信する処理を行ない、印刷の中止指示が出された後には、前記属性データ記憶部に記憶されている属性データに基づき、前記印刷データ記憶部内の前記破棄不可印刷要素データのみを前記プリンタに送信する処理を行なう印刷データ送信部
とを備える装置として動作させることを特徴とするプリンタドライバ。
【請求項２】
前記印刷データ生成部は、印刷の中止指示が出された後には、前記破棄不可印刷要素データのみを前記印刷データ記憶部に記憶する
ことを特徴とする請求項１記載のプリンタドライバ。
【請求項３】
前記印刷データ生成部は、少なくとも、破棄不可印刷データを生成した後に破棄不可印刷要素データではない印刷要素データを生成したときと、破棄不可印刷要素データではない印刷要素データを生成した後に破棄不可印刷要素データを生成したときとに、属性データを前記属性データ記憶部に記憶する
ことを特徴とする請求項１又は請求項２記載のプリンタドライバ。
【請求項４】
前記印刷データ生成部は、前記属性データ記憶部に記憶しない属性データも生成し、
前記印刷データ生成部は、前記印刷データ生成部によって生成されたが前記属性データ記憶部に記憶されなかった属性データを、前記印刷データ生成部から当該属性データの供給を受けることなく、復元する機能を有する
ことを特徴とする請求項３記載のプリンタドライバ。
【請求項５】
前記印刷データ送信部は、印刷の中止指示が出された場合、その中止指示が出された時に送信を行っていた印刷要素データを含む一連の不可分な印刷要素データ群の送信を終えた後に、前記属性データ記憶部に記憶されている属性データに基づき、前記印刷データ記憶部内の前記破棄不可印刷要素データのみを前記プリンタに送信する処理を開始する
ことを特徴とする請求項３又は請求項４記載のプリンタドライバ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プリンタへ印刷データを供給するためにコンピュータ上で実行されるプリンタドライバに、関する。
【０００２】
【従来の技術】
プリンタを利用するためにコンピュータにて実行されるプリンタドライバには、コンピュータ（ＣＰＵ）に過度の負担がかからない手順で印刷データをプリンタに供給できるものであることが望まれる。このため、コンピュータに、印刷データを生成するための処理（以下、印刷データ生成処理と表記する）と、生成された印刷データをプリンタに送信するための処理（以下、印刷データ送信処理と表記する）とを独立して（並行して非同期的に）行なわせることが出来るプリンタドライバ（以下、並列型プリンタドライバと表記する）が、開発されている。
【０００３】
また、プリンタドライバには、コンピュータとプリンタとからなる印刷システムを、ユーザから印刷の中止が指示された際に即座に印刷関連の動作を中止するシステムとして機能させることが出来ることも望まれる。そして、この要望を満たす並列型プリンタドライバを作成するためには、並列型プリンタドライバに、印刷データ生成処理によって生成された印刷データが、どの部分まで印刷データ送信処理により送信されたかを管理する機能を付与しておかなければならない。何故ならば、プリンタは、所定サイズのデータを受信する度にそのデータがコマンドであるか否かを判断している訳ではないので、プリンタがコマンドを受信可能なタイミングを並列型プリンタドライバが把握できるようにしておく必要があるからである。
【０００４】
そのような機能が付与された並列型プリンタドライバとしては、特開平１１−３１６６６１号公報に記載の並列型プリンタドライバ（公報での名称は、印刷制御プログラム；以下、従来ドライバと表記する）が、知られている。
【０００５】
この公報に記載の従来ドライバが実行されたコンピュータでは、印刷データ生成処理として、印刷データを構成する印刷コマンド群を生成するとともに、生成した各印刷コマンドに、その印刷コマンドのサイズとその印刷コマンドが次の印刷コマンドの送信が常に（印刷の中止が指示された場合にも）必要とされるものであるか否かとを示すヘッダ（或いはその印刷コマンドがどのようなコマンドであるかのみを示すヘッダ）を付加した形で、コマンドファイルに記憶する処理が行なわれる。なお、この従来ドライバによって実行される印刷データ生成処理は、中止指示が出されたか否かによって内容の変わらない処理となっている。
【０００６】
そして、従来ドライバが実行されたコンピュータでは、印刷データ送信処理として、通常は、コマンドファイルから各印刷コマンドを抽出してプリンタに送信する処理が行なわれ、印刷の中止が指示された後には、コマンドファイルに記憶されたヘッダに基づきプリンタに送信することが必要な印刷コマンドのみをコマンドファイルから抽出してプリンタに送信する処理が行なわれる。
【０００７】
【発明が解決しようとする課題】
上記した従来ドライバを用いれば、印刷の中止が指示されたときに即座に印刷が中止されるシステムを、一応、実現することが出来る。しかしながら、この従来ドライバを用いた場合、印刷データ生成処理が中止指示に応じた内容の処理となっていないことから明らかなように、印刷データ生成処理が完了する前に印刷の中止を指示した場合、印刷データ生成処理が完了するまでは印刷が終了しないことになる。また、従来ドライバの制御下、実行される印刷データ送信処理は、通常時にも、コンピュータ（ＣＰＵ）が、コマンドファイル内から印刷コマンドを抽出しなければならない処理、換言すれば、単純なデータ送信処理よりも若干ＣＰＵの負荷が大きい処理となっている。さらに、従来ドライバは、生成したコマンド毎にヘッダの記憶が行なわれるように構成されているので、その動作のために、比較的に多くのメモリ資源を消費するものともなっている。
【０００８】
本発明は、このような事情に鑑みなされたものであり、本発明の課題は、プリンタに対する中止制御を含む制御をより効率的にコンピュータに行なわせることが出来るプリンタドライバを、提供することにある。
【０００９】
【課題を解決するための手段】
上記課題を解決するために、本発明のプリンタドライバは、コンピュータを、プリンタに供給されるべき印刷データの要素である印刷要素データを一時記憶するための印刷データ記憶部と、属性データを一時記憶するための属性データ記憶部と、プリンタに供給されるべき印刷データに関する印刷要素データを順次生成して印刷データ記憶部に記憶する処理を行なうとともに、必要に応じて、属性データ記憶部に、印刷データ記憶部内に記憶されている印刷要素データの中から、印刷の中止指示が出された場合に破棄されることなくプリンタに送信されるべき印刷要素データである破棄不可印刷要素データを特定可能な属性データを記憶する処理を行なう印刷データ生成部と、印刷の中止指示が出されていない場合には、印刷データ記憶部に記憶されている印刷要素データを、印刷データ記憶部への記憶順に従った順番でプリンタに送信する処理を行ない、印刷の中止指示が出された後には、属性データ記憶部に記憶されている属性データに基づき、印刷データ記憶部内の破棄不可印刷要素データのみをプリンタに送信する処理を行なう印刷データ送信部とを備える装置として動作させることが出来るように作成される。
【００１０】
すなわち、本発明のプリンタドライバが実行されたコンピュータでは、属性データが印刷要素データ毎に記憶されない（所定条件を満たす印刷要素データが生成された場合にのみ属性データが記憶される）形で、印刷データ（印刷要素データ群）が生成される。従って、このプリンタドライバを用いれば、印刷要素データ毎に属性データが記憶されるようにした場合よりも、コンピュータ内でのメモリの消費量が少ない形で、プリンタに印刷を行なわせることが出来ることになる。また、本プリンタドライバを用いたコンピュータでは、印刷要素データと属性データとは、印刷データ記憶部と属性データ記憶部とに分けて記憶されるため、コンピュータ（印刷データ送信部）は、プリンタへの印刷要素データの送信を極めて単純な処理（送信すべきデータを他データから分離する処理が必要とされない処理）により行なうことが出来ることになる。従って、本プリンタドライバを用いれば、通常の印刷時（中止指示が出されていないとき）にＣＰＵが行なわなければならない処理量を、従来よりも、低減できることにもなる。
【００１１】
本発明のプリンタドライバは、印刷データ生成部が、印刷の中止指示が出された後には、破棄不可印刷要素データのみを印刷データ記憶部に記憶するユニットとして動作するように、構成（作成）しておくことが出来る。
【００１２】
このように構成されたプリンタドライバを用いれば、印刷データの生成が完了していない状態で受け付けた印刷の中止指示に即座に応答できる印刷システムを実現できることになる。
【００１３】
なお、属性データ記憶部に、印刷データ記憶部内に記憶されている印刷要素データの中から、印刷の中止指示が出された場合に破棄されることなくプリンタに送信されるべき印刷要素データである破棄不可印刷要素データを特定可能な属性データを記憶する処理としては、さまざまなものが採用可能であり、例えば、破棄不可印刷データを生成した後に破棄不可印刷要素データではない印刷要素データを生成したときと、破棄不可印刷要素データではない印刷要素データを生成した後に破棄不可印刷要素データを生成したときとに、属性データを属性データ記憶部に記憶する処理を、採用することが出来る。
【００１４】
そのような処理が印刷データ生成部によって行われるように本発明のプリンタドライバを構成する場合には、さらに、印刷データ生成部が、属性データ記憶部に記憶しない属性データも生成するものとなり、印刷データ生成部が、印刷データ生成部によって生成されたが属性データ記憶部に記憶されなかった属性データを、印刷データ生成部から当該属性データの供給を受けることなく、復元する機能を有するものとなるようにすることが出来る。また、印刷データ送信部が、印刷の中止指示が出された場合、その中止指示が出された時に送信を行っていた印刷要素データを含む一連の不可分な印刷要素データ群の送信を終えた後に、属性データ記憶部に記憶されている属性データに基づき、印刷データ記憶部内の破棄不可印刷要素データのみをプリンタに送信する処理を開始するものとなるように、プリンタドライバを構成しておくことも、出来る。
【００１５】
【発明の実施の形態】
以下、本発明の実施の形態を、図面を参照して詳細に説明する。
【００１６】
図１に模式的に示したように、本発明の一実施形態に係るプリンタドライバ１０は、プリンタ３０へ印刷データを供給するためにパーソナルコンピュータ（ＰＣ）にインストールされるプログラムである。また、プリンタドライバ１０は、一般的なプリンタドライバと同様に、ユーザが、ＰＣ２０に対して、何らかのドキュメントの印刷を指示したときに、起動されるプログラムとなっている。なお、プリンタドライバ１０のＰＣ２０へのインストールは、ＣＤ−ＲＯＭ等の過般型記録媒体からの読み出しや、インターネット上のＷｅｂサイトからのダウンロードにより、行なわれる。
【００１７】
以下、機能ブロック図と流れ図とを用いて、本実施形態に係るプリンタドライバ１０の構成及び機能を、説明する。
【００１８】
まず、プリンタドライバ１０が実行されている場合におけるＰＣ２０の機能ブロック図である図２を用いて、プリンタドライバ１０の概要を説明する。
【００１９】
図示したように、プリンタドライバ１０が実行されているＰＣ２０は、印刷データ生成部１１、印刷データ記憶部１２、属性データ記憶部１３、及び、印刷データ送信部１４を備える装置として機能する。
【００２０】
印刷データ生成部１１は、印刷が指示されたドキュメントの電子的データ（以下、印刷対象ドキュメントデータと表記する）に基づき、そのドキュメントに関する印刷データを、コマンド単位で順次生成するとともに、所定条件を満たすコマンドを生成した場合には属性データを生成する機能ブロックである。ここで、コマンドとは、プリンタ３０が一情報として受信するデータ（途中で送信を中断できないデータ）のことである。また、印刷データ生成部１１は、ユーザによりキャンセル要求（印刷処理の中止指示）が出されるのを監視し、キャンセル要求が出された場合には、キャンセルフラグを“ＯＮ”とする処理も行なう機能ブロックとなっている。
【００２１】
印刷データ記憶部１２は、印刷データ生成部１１によって生成されたコマンドをＦＩＦＯ(first-in first-out）形式（記憶された順にデータを読み出せる形式）で一時記憶するための機能ブロックである。この印刷データ記憶部１２は、印刷データ送信部１４が１度に送信できるサイズのデータを記憶可能な１つ又は複数個の記憶領域を有していると共に、個々の記憶領域に割り当てられているユニークな番号であるデータIndex値や、各記憶領域に記憶された印刷データの大きさを示すデータサイズIndex値を、必要に応じて属性データ記憶部１３に属性データ情報として通知する機能を有している。属性データ記憶部１３は、印刷データ生成部１１によって生成された属性データをＦＩＦＯ形式で一時記憶するための機能ブロックである。
【００２２】
印刷データ送信部１４は、印刷データ記憶部１２に記憶されているコマンド群を、プリンタ３０に送信する処理を行なうための機能ブロックである。この印刷データ送信部１４は、印刷データ生成部１１からの指示に従って動作を開始、終了する機能ブロックとなっている。
【００２３】
次に、図３〜図５に示した流れ図を用いて、印刷データ生成部１１の機能を、より具体的に説明する。
【００２４】
図３に示したように、印刷データ生成部１１は、起動された際（プリンタドライバ１０の実行が開始された際）には、まず、キャンセルフラグ及びデータ保持フラグを“ＯＦＦ”に初期化する（ステップＳ１０１）。
【００２５】
キャンセルフラグは、既に概要説明を行なったように、キャンセル要求（印刷処理の中止指示）がユーザによって出されている状態にあるか否かを“ＯＮ”、“ＯＦＦ”で記憶しておくためのフラグである。なお、このキャンセルフラグは、印刷データ生成部１１によって変更（設定）が行われ、印刷データ生成部１１及び印刷データ送信部１４によって参照されるフラグとなっている。
【００２６】
データ保持フラグは、前回、生成したコマンドが、キャンセル要求が出されている状態にあるときにはプリンタ３０に転送することなく破棄可能なコマンド（以下、破棄可コマンドと表記する）であるか、キャンセル要求が出されている状態にあるときにもプリンタ３０に転送することが必要なコマンド（排紙コマンド等、以下、破棄不可コマンドと表記する）であるかを、“ＯＮ”、“ＯＦＦ”で記憶しておくためのフラグである。なお、このデータ保持フラグは、印刷データ生成部１１或いは印刷データ送信部１４により、利用（変更及び更新）されるフラグとなっている。
【００２７】
このような用途のフラグであるキャンセルフラグ及びデータ保持フラグの初期化をステップＳ１０１にて行なった印刷データ生成部１１は、印刷データ出力部１４に対して動作の開始を指示する（ステップＳ１０２）。その後、印刷データ生成部１１は、ステップＳ１０３〜Ｓ１０８からなる処理ループに入り、まず、全てのコマンドの生成（１ドキュメント分の印刷データの生成）が完了しているか否かを判断する（ステップＳ１０３）。そして、印刷データ生成部１１は、全てのコマンドの生成が完了していなかった場合（ステップＳ１０３；ＮＯ）には、キャンセルフラグが“ＯＮ”となっているか否かを判断する（ステップＳ１０４）。
【００２８】
キャンセルフラグが“ＯＮ”ではなかった場合（ステップＳ１０４；ＮＯ）、印刷データ生成部１１は、キャンセル要求が出されているか否かを判断する（ステップＳ１０５）。すなわち、印刷データ生成部１１は、前回のステップＳ１０５の実行時から今回のステップＳ１０５の実行時までの間にキャンセル要求が出されたか否かを判断する。
【００２９】
キャンセル要求が出されていなかった場合（ステップＳ１０５；ＮＯ）、印刷データ生成部１１は、コマンド生成処理（ステップＳ１０８）を開始する。詳細は後述するが、このコマンド生成処理は、印刷対象ドキュメントデータから１コマンドが生成され、当該コマンドの印刷データ記憶部１２への記憶、或いは、当該コマンドの破棄が行なわれる処理であるとともに、必要である場合には、属性データを属性データ記憶部１３に記憶する処理となっている。
【００３０】
コマンド生成処理を終了した印刷データ生成部１１は、印刷対象ドキュメントデータの残りの部分を処理するために、ステップＳ１０３からの処理を再び実行する。
【００３１】
一方、キャンセル要求が出されていた場合（ステップＳ１０５；ＮＯ）、印刷データ生成部１１は、キャンセルフラグを“ＯＮ”に書き換え（ステップＳ１０６）、その後、全ての破棄不可コマンドの生成が完了しているか否かを判断する（ステップＳ１０７）。また、印刷データ生成部１１、キャンセルフラグが“ＯＮ”となっていた場合（ステップＳ１０４；ＹＥＳ）には、ステップＳ１０５、Ｓ１０６の処理を行なうことなく、このステップＳ１０７の処理（判断）を行なう。
【００３２】
そして、全ての破棄不可コマンドの生成が完了していなかった場合（ステップＳ１０７；ＮＯ）、印刷データ生成部１１は、コマンド生成処理（ステップＳ１０８）を開始する。
【００３３】
ここで、図４及び図５を用いて、コマンド生成処理の説明を行なうこととする。
【００３４】
図４に示してあるように、コマンド生成処理を開始した印刷データ生成部１１は、印刷対象ドキュメントデータに基づき、１コマンドの生成（ステップＳ１２１）を行なった後、生成したコマンド（以下、処理対象コマンドと表記する）が、破棄可コマンドであるか破棄不可コマンドであるかを判断する（ステップＳ１２２）。
【００３５】
処理対象コマンドが破棄可コマンドであった場合（ステップＳ１２２；ＹＥＳ）、印刷データ生成部１１は、データ保持フラグが“ＯＦＦ”であるか否かを判断する（図５：ステップＳ１３０）。
【００３６】
データ保持フラグが“ＯＦＦ”でなかった場合（ステップＳ１３０；ＮＯ）、印刷データ生成部１１は、データ保持フラグを“ＯＦＦ”に変更（ステップＳ１３１）した後に、キャンセルフラグが“ＯＮ”であるか否かを判断する（ステップＳ１３２）。キャンセルフラグが“ＯＮ”でなかった場合（ステップＳ１３２；ＮＯ）、印刷データ生成部１１は、印刷データ記憶部１２に処理対象コマンドを記憶（ステップＳ１３３）した後、現在のデータIndex値、データサイズIndex値を取得する（ステップＳ１３４）。一方、キャンセルフラグが“ＯＮ”であった場合（ステップＳ１３２；ＹＥＳ）、印刷データ生成部１１は、印刷データ記憶部１２に処理対象コマンドを記憶することなく（ステップＳ１３３を実行することなく）、ステップＳ１３４を実行する。
【００３７】
そして、印刷データ生成部１１は、データ保持終了属性値（対応するコマンドが破棄可コマンドであり、前コマンドが破棄不可コマンドであることを示す属性値）と、取得したデータIndex値及びデータサイズIndex値とからなる属性データを、属性データ記憶部１３に記憶（ステップＳ１３５）した後、データIndex記憶値、属性記憶値を、それぞれ、取得したデータIndex値、データ保持終了属性値に更新する処理（図４：ステップＳ１２９）を行う。そして、印刷データ生成部１１は、コマンド生成処理を終了して図３のステップＳ１０３からの処理を開始する。
【００３８】
一方、データ保持フラグが“ＯＦＦ”であった場合（ステップＳ１３０；ＹＥＳ）、印刷データ生成部１１は、キャンセルフラグが“ＯＮ”であるか否かを判断（ステップＳ１３６）し、キャンセルフラグが“ＯＮ”でなかった場合（ステップＳ１３６：ＮＯ）には、印刷データ記憶部１２内に処理対象コマンドを記憶（ステップＳ１３７）した後に、現在のデータIndex値、データサイズIndex値を取得する（ステップＳ１３８）。
【００３９】
次いで、印刷データ生成部１１は、属性データ出力省略条件が満たされているか否かを判断する（ステップＳ１３９）。ここで、属性データ出力省略条件とは、「取得したデータIndex値と、データIndex記憶値とが等しく、属性記憶値が、コマンド境界属性値（コマンド境界であることを示す属性値）となっている」という条件のことである。
【００４０】
属性データ出力省略条件が満たされていなかった場合（ステップＳ１３９；ＮＯ）、印刷データ生成部１１は、コマンド境界属性値と、ステップＳ１３８で取得したデータIndex値及びデータサイズIndex値とからなる属性データを、属性データ記憶部１３に記憶する（ステップＳ１４０）。次いで、印刷データ生成部１１は、図４のステップＳ１２９以降の処理を開始する。
【００４１】
一方、属性データ出力省略条件が満たされていた場合（ステップＳ１３１；ＹＥＳ）、印刷データ生成部１１は、ステップＳ１４０の処理を行なうことなく、ステップＳ１２９以降の処理を実行する。換言すれば、印刷データ生成部１１は、同一データINDEX内で同一属性（データ保持属性又はデータ破棄属性）が連続する場合には、属性データのデータ記憶部１３への記憶を、省略する。
【００４２】
また、ステップＳ１３６にて、キャンセルフラグが“ＯＮ”であることを検出した場合、印刷データ生成部１１は、処理対象コマンドを印刷データ記憶部１２に記憶する処理等を行なうことなく（換言すれば、処理対象コマンドを破棄して）、ステップＳ１２９以降の処理を実行する。
【００４３】
処理対象コマンドが破棄可コマンドではなかった場合（図４：ステップＳ１２２；ＮＯ）、印刷データ生成部１１は、データ保持フラグが“ＯＮ”であるか否かを判断する（ステップＳ１２３）。データ保持フラグが“ＯＮ”でなかった場合（ステップＳ１２３；ＮＯ）、印刷データ生成部１１は、データ保持フラグを“ＯＮ”に書き換える（ステップＳ１２４）とともに、現在のデータIndex値、データサイズIndex値を、取得する（ステップＳ１２５）。そして、印刷データ生成部１１は、データ保持開始属性値と、取得したデータIndex値及びデータサイズIndex値とからなる属性データを、属性データ記憶部１３に記憶（ステップＳ１２６）した後に、既に説明したステップＳ１２７からの処理を行なう。
【００４４】
要するに、図３のステップＳ１０３〜Ｓ１０８からなる処理ループでは、通常の状態（印刷処理の中止が指示されていない状態）では、プリンタ３０に供給すべきコマンド群を順次生成して印刷データ記憶部１２に記憶する処理、並びに、順序づけられて（時系列的に）印刷データ記憶部１２に記憶されているコマンドの中から、破棄可コマンドで前後が挟まれている破棄不可コマンドの並びを特定できる情報（データ保持開始属性値を含む属性データとデータ保持終了属性値を含む属性データ）を属性データ記憶部１３に記憶する処理が、行なわれる。また、幾つかの破棄可コマンドについては、その印刷データ記憶部１２内での位置を特定するための属性データ（コマンド境界属性値を含む属性データ）を、属性データ記憶部１３に記憶する処理も、行なわれる。そして、この処理ループは、印刷処理の中止が指示された後には、上記のような内容の処理が破棄可コマンドを印刷データ記憶部１２に記憶する処理を省略した形で実行されるループとなっている。
【００４５】
印刷データ生成部１１は、この処理ループを、全コマンドの生成が完了したとき（図３：ステップＳ１０３；ＹＥＳ）と、全ての破棄不可コマンドの生成が完了したとき（ステップＳ１０７；ＹＥＳ）とに、抜け出す。そして、印刷データ生成部１１は、ステップＳ１０９にて、印刷データ記憶部１２が空となる（印刷データ記憶部１２に記憶された全コマンドが印刷データ送信部１４によって取り出される）のを待機し、印刷データ記憶部１２が空となったとき（ステップＳ１０９；ＹＥＳ）に、印刷データ送信部１４に動作の終了を指示する（ステップＳ１１０）。その後、印刷データ生成部１１は、印刷データ送信部１４が動作を終了するのを監視（ステップＳ１１１）し、印刷データ送信部１４が動作を終了した際（ステップＳ１１１；ＮＯ）に、自身も動作を終了する。
【００４６】
次に、図６〜図１０を用いて、印刷データ送信部１４の動作を説明する。
【００４７】
印刷データ生成部１１から動作の開始が指示された印刷データ送信部１４は、図６に示してあるように、まず、キャンセル処理開始フラグを“ＯＦＦ”にするとともに、第２データ保持フラグを“ＯＦＦ”にする（ステップＳ２０１）。
【００４８】
具体的な利用手順については後述するが、キャンセル処理開始フラグは、印刷データ生成部１１によって、キャンセルフラグが“ＯＦＦ”から“ＯＮ”に変えられた後、印刷データ送信部１４によって、コマンドの境界まで印刷データの送信が行われたときに、印刷データ送信部１４により、“ＯＮ”に変更されるフラグである。要するに、キャンセル処理開始フラグは、キャンセルフラグが“ＯＮ”に変更される前に処理（プリンタ３０への送信）を開始したコマンドの処理が確認された状態にあるか否かを記憶しておくために、印刷データ送信部１４が参照、更新するフラグとなっている。また、第２データ保持フラグは、印刷データ生成部１１が処理履歴（過去に生成したコマンドが破棄可コマンドであるか破棄不可コマンドであるか）を記憶しておくために使用しているデータ保持フラグに相当するフラグとなっている。
【００４９】
ステップＳ２０１にて、キャンセル処理開始フラグ及び第２データ保持フラグをいずれも“ＯＦＦ”とした印刷データ送信部１４は、動作の終了が指示されているか否かを判断（ステップＳ２０２）し、動作の終了が指示されていない場合（ステップＳ２０２；ＮＯ）には、印刷データ記憶部１２内に印刷データ（１個以上のコマンド）が記憶されているか否かを判断する（ステップＳ２０３）。
【００５０】
印刷データ記憶部１２内に印刷データが記憶されていなかった場合（ステップＳ２０３；ＹＥＳ）、印刷データ送信部１４は、ステップＳ２０２に戻って、再び、動作の終了が指示されているか否かを判断する。
【００５１】
一方、印刷データ記憶部１２内に印刷データが記憶されていた場合（ステップＳ２０３；ＮＯ）、印刷データ送信部１４は、印刷データ記憶部１２内に送信可能な印刷データが記憶されているか否かを判断する。（ステップＳ２０４）。そして、印刷データ送信部１４は、印刷データ記憶部１２内に送信可能な印刷データが記憶されていなかった場合（ステップＳ２０４；ＮＯ）には、ステップＳ２０２からの処理を、再び、実行する。
【００５２】
一方、印刷データ記憶部１２内に送信可能な印刷データが記憶されていた場合（ステップＳ２０４；ＮＯ）、印刷データ送信部１４は、印刷データ記憶部１２内の最古の印刷データに関するデータIndex値を特定する（ステップＳ２０５）。
【００５３】
その後、印刷データ送信部１４は、キャンセルフラグが“ＯＮ”となっているか否かを判断（ステップＳ２０６）し、キャンセルフラグが“ＯＮ”となっていなかった場合（ステップＳ２０６；ＮＯ）には、第２データ保持フラグ設定処理（ステップＳ２０７）を実行する。
【００５４】
図１０に示してあるように、この第２データ保持フラグ設定処理時、印刷データ送信部１４は、まず、属性データを保持しているか否かを判断する（ステップＳ２２１）。
【００５５】
属性データを保持していなかった場合（ステップＳ２２１；ＮＯ）、印刷データ送信部１４は、属性データ記憶部１３内に属性データが記憶されているか否かを判断（ステップＳ２２２）し、属性データが記憶されていなかった場合（ステップＳ２２２；ＮＯ）には、第２データ保持フラグ設定処理を終了する。
【００５６】
一方、属性データ記憶部１３内に属性データが記憶されていた場合（ステップＳ２２２；ＹＥＳ）、印刷データ送信部１４は、属性データ記憶部１３から、最古の印刷データに関する属性データを取り出して保持する（ステップＳ２２３）。その後、印刷データ送信部１４は、保持している属性データ中のデータIndex値が、印刷データ記憶部１２内の最古の印刷データ記憶領域に関するデータIndex値（ステップＳ２０５で特定したデータIndex値）と一致しているか否かを判断する（ステップＳ２２４）。
【００５７】
そして、両者が一致していなかった場合（ステップＳ２２４；ＮＯ）、印刷データ送信部１４は、第２データ保持フラグ設定処理を終了する。すなわち、この場合、印刷データ送信部１４が保持している属性データは、処理すべき印刷データについての属性データではなく、それに続く印刷データについての属性データであるので、印刷データ送信部１４は、その属性データの内容に応じた処理を行うことなく、この第２データ保持フラグ設定処理を終了する。
【００５８】
なお、印刷データ送信部１４は、第２データ保持フラグ設定処理開始時に属性データを保持していた場合（ステップＳ２２１；ＹＥＳ）には、ステップＳ２２２、Ｓ２２３の処理を行うことなく、ステップＳ２２４の判断を行う。
【００５９】
一方、上記した２つのデータIndex値が一致していた場合（ステップＳ２２４；ＹＥＳ）、印刷データ送信部１４は、保持している属性データの属性が、コマンド境界属性、データ保持終了属性、データ保持開始属性のいずれであるかを判断する（ステップＳ２２５）。そして、属性データの属性がコマンド境界属性であった場合（ステップＳ２２５；境界）には、第２データ保持フラグ設定処理を終了する。属性データの属性がデータ保持終了属性であった場合（ステップＳ２２５；保持終了）には、第２データ保持フラグを“ＯＦＦ”とする（ステップＳ２２６）。次いで、印刷データ送信部１４は、保持している属性データを破棄（ステップＳ２２８）して、ステップＳ２２２に戻る。また、属性データの属性がデータ保持開始属性であった場合（ステップＳ２２５；保持開始）、印刷データ送信部１４は、第２データ保持フラグを“ＯＮ”とする処理（ステップＳ２２７）を行った後に、ステップＳ２２８以降の処理を行う。
【００６０】
このような内容の第２データ保持フラグ設定処理を終えた印刷データ送信部１４は、図６に示してあるように、特定してあるデータIndex値の印刷データ（最古の印刷データ）を印刷データ記憶部１２から読み出してプリンタ３０へ送信する（ステップＳ２０８）。そして、データIndex値と一致するデータIndex値を含む全ての属性データ（つまり、送信済みの印刷データの属性データ）を破棄（ステップＳ２０９）してから、ステップＳ２０２に戻る。
【００６１】
このような処理を繰り返している間に、キャンセルフラグが“ＯＮ”に変化した場合（ステップＳ２０６；ＹＥＳ）、印刷データ送信部１４は、図８に示してあるように、キャンセル処理開始フラグが“ＯＮ”となっているか否かを判断する（ステップＳ２４１）。
【００６２】
そして、キャンセル処理開始フラグが“ＯＮ”ではなかった場合（ステップＳ２４１；ＮＯ）、印刷データ送信部１４は、属性データを保持しているか否かを判断（ステップＳ２４２）し、属性データを保持していなかった場合（ステップＳ２４２；ＮＯ）には、図６のステップＳ２０８以降の処理を実行する。すなわち、この場合、キャンセルフラグが“ＯＮ”となる前に出力が開始されたコマンドが途中までしか出力されていないことになるので、キャンセル処理開始フラグが“ＯＮ”とされることなく、ステップＳ２０８以降の処理が実行される。
【００６３】
属性データを保持していた場合（ステップＳ２４２；ＮＯ）、印刷データ送信部１４は、保持している属性データ中のデータIndex値が、印刷データ記憶部１２内の最古の印刷データに関するデータIndex値（ステップＳ２０５で特定したデータIndex値）と一致しているか否かを判断する（ステップＳ２４３）。
【００６４】
そして、両者が一致していなかった場合（ステップＳ２４３；ＮＯ）、印刷データ送信部１４は、ステップＳ２０８以降の処理を実行する。すなわち、この場合も、キャンセルフラグが“ＯＮ”となる前に出力が開始されたコマンドが途中までしか出力されていないことになるので、キャンセル処理開始フラグが“ＯＮ”とされることなく、ステップＳ２０８以降の処理が実行される。
【００６５】
一方、２つのデータIndex値が一致していた場合（ステップＳ２４３；ＹＥＳ）、すなわち、保持している属性データが処理すべき印刷データの属性データであった場合、印刷データ送信部１４は、その属性データによって特定される印刷データを取り出してプリンタ３０へ送信する（ステップＳ２４４）。
【００６６】
次いで、印刷データ送信部１４は、保持している属性データ中のデータサイズIndex値を位置変数に記憶する（ステップＳ２４５）。次いで、印刷データ送信部１４は、保持している属性データの属性が、コマンド境界属性、データ保持終了属性、データ保持開始属性のいずれであるかを判断（ステップＳ２４６）し、属性データの属性がデータ保持終了属性であった場合（ステップＳ２４６；保持終了）には、第２データ保持フラグを“ＯＦＦ”とする処理（ステップＳ２４７）を行った後に、ステップＳ２４９の処理を実行する。属性データの属性がデータ保持開始属性であった場合（ステップＳ２４６；保持開始）、第２データ保持フラグを“ＯＮ”とする処理（ステップＳ２４８）を行った後に、ステップＳ２４９の処理を実行する。また、属性データの属性がコマンド境界属性であった場合（ステップＳ２４６；境界）には、第２データ保持フラグの値を変更することなく、ステップＳ２４９の処理を実行する。
【００６７】
そして、ステップＳ２４９にて、印刷データ送信部１４は、保持している属性データを破棄するとともに、キャンセル処理開始フラグを“ＯＮ”とする処理を行い、その後、図９のステップＳ２６１以降の処理を開始する。
【００６８】
また、キャンセル処理開始フラグが既に“ＯＮ”であった場合（ステップＳ２４１；ＹＥＳ）、印刷データ送信部１４は、ステップＳ２４２〜Ｓ２４９の処理を行うことなく、未送信の印刷データの先頭位置を示す値を位置変数に記憶する（ステップＳ２５０）。そして、印刷データ送信部１４は、図９のステップＳ２６１以降の処理を開始する。
【００６９】
ステップＳ２６１にて、印刷データ送信部１４は、属性データを保持しているか否かを判断する。
【００７０】
そして、印刷データ送信部１４は、属性データを保持していなかった場合（ステップＳ２６１；ＮＯ）には、属性データ記憶部１３内に属性データが記憶されているか否かを判断（ステップＳ２６２）し、属性データが記憶されていた場合（ステップＳ２６２；ＹＥＳ）には、属性データ記憶部１３から属性データを取り出して保持する（ステップＳ２６３）。
【００７１】
次いで、保持した属性データ内のデータIndex値と、印刷データ記憶部１２内の最古の印刷データに関するデータIndex値とが一致しているか否かを判断（ステップＳ２６４）し、両者が一致していなかった場合（ステップＳ２６４；ＮＯ）には、第２データ保持フラグが“ＯＮ”であるか否かを判断する（ステップＳ２６５）。なお、属性データが記憶されていなかった場合（ステップＳ２６２；ＮＯ）、印刷データ送信部１４は、属性データを保持していない状態で、このステップＳ２６５の判断を行う。
【００７２】
第２データ保持フラグが“ＯＮ”であった場合（ステップＳ２６５；ＹＥＳ）、印刷データ送信部１４は、位置変数が示す位置からステップＳ２０５で特定したデータIndex値が示す位置までの印刷データをプリンタ３０へ送信（ステップＳ２６６）した後に、ステップＳ２０９以降の処理を実行する。一方、第２データ保持フラグが“ＯＦＦ”であった場合（ステップＳ２６５；ＮＯ）、印刷データ送信部１４は、位置変数が示す位置からステップＳ２０５で特定したデータIndex値が示す位置までの印刷データを破棄（ステップＳ２６７）した後に、ステップＳ２０９以降の処理を実行する。
【００７３】
すなわち、本プリンタドライバ１０では、属性データの属性データ記憶部１３への記憶が省略されることがあるので、未処理（未送信or未破棄）の印刷データについての属性データが存在しないときがある。ただし、第２データ保持フラグ設定処理が実行される結果として、第２データ保持フラグは、当該印刷データが破棄可コマンドであるか破棄不可コマンドであるかを示す情報となっているため、上記のような手順の処理により、印刷データを破棄するか送信するかが決定されているのである。
【００７４】
一方、未処理（未送信or未破棄）の印刷データについての属性データが存在していた場合（ステップＳ２６４；ＹＥＳ）、印刷データ送信部１４は、その属性データの属性に応じた処理を、ステップＳ２８１〜Ｓ２８８（図１０）にて実行する。
【００７５】
すなわち、保持している属性データの属性がコマンド境界属性であった場合（ステップＳ２８１；境界）、印刷データ送信部１４は、属性データを破棄（ステップＳ２８２）してから、ステップＳ２６２以降の処理を実行する。
【００７６】
属性データの属性がデータ保持開始属性であった場合（ステップＳ２８１；保持開始）、印刷データ送信部１４は、位置変数が示す位置から属性データ中のデータサイズIndex値が示す位置までの印刷データを破棄（ステップＳ２８３）し、第２データ保持フラグを“ＯＮ”とする（ステップＳ２８４）。次いで、印刷データ送信部１４は、属性データ中のデータサイズIndex値を位置変数に記憶（ステップＳ２８７）し、属性データを破棄する（ステップＳ２８８）。その後、印刷データ送信部１４は、位置変数の値がデータサイズIndex値と一致していた場合（ステップＳ２８９；ＹＥＳ）には、図６のステップＳ２０９以降の処理を実行し、一致していなかった場合（ステップＳ２８９；ＮＯ）には、図９のステップＳ２６２以降の処理を実行する。
【００７７】
また、属性データの属性がデータ保持終了属性であった場合（ステップＳ２８１；保持終了）、印刷データ送信部１４は、位置変数が示す位置から属性データ中のデータサイズIndex値が示す位置までの印刷データをプリンタ３０へ送信（ステップＳ２８５）し、第２データ保持フラグを“ＯＦＦ”とする（ステップＳ２８６）。そして、印刷データ送信部１４は、ステップＳ２８７以降の処理を実行する。
【００７８】
以上、説明したように、本実施形態に係るプリンタドライバ１０が実行されたＰＣ２０では、属性データがコマンド毎に記憶されない（所定条件を満たすコマンドが生成された場合にのみ属性データが記憶される）形で、印刷データ（コマンド群）が生成される。従って、プリンタドライバ１０を用いれば、コマンドが生成される毎にヘッダの記憶が行なわれる従来技術（特開平１１−３１６６６１号公報に開示されている技術）よりも、メモリの消費量が少ない形で、プリンタ３０に印刷を行なわせることが出来ることになる。また、プリンタドライバ１０を用いた場合、コマンドと属性データとは、印刷データ記憶部１２と属性データ記憶部１３とに分けて記憶されるので、ＰＣ２０（印刷データ送信部１４として動作しているＣＰＵ）は、プリンタ３０へのコマンドの送信を極めて単純な内容の処理（送信すべきデータを他データから分離する処理が必要とされない処理）により行なうことが出来ることになる。従って、プリンタドライバ１０を用いれば、通常の印刷時（中止指示が出されていないとき）にＣＰＵが行なわなければならない処理量を、記憶したデータからヘッダの分離を行なっている従来技術よりも、低減できることにもなる。
【００７９】
さらに、プリンタドライバ１０を用いた場合、印刷処理の中止が指示された後には、プリンタ３０に送信することが必要とされるコマンドのみが、印刷データ記憶部１２に記憶される。従って、プリンタドライバ１０を用いれば、全てのコマンドの生成、記憶が完了しない限り、印刷が中止されないといった従来技術の問題を解決できることにもなる。
【００８０】
＜変形形態＞
上記したプリンタドライバ１０は、各種の変形を行なうことが出来る。例えば、破棄不可コマンド（印刷データを構成する単位データ）として、幾つかの破棄不可データと幾つかの破棄可データとにさらに細分化できるものが用いられている場合には、プリンタドライバ１０を、ステップＳ２４４等にて破棄不可データのみをプリンタ３０に送信する処理が行なわれるように変形しても良く、ステップＳ２４４等にて破棄不可データのみが特定の記憶領域に記憶され、動作終了指示が出された後（ステップＳ２０２で“ＹＥＳ”側への分岐が行なわれるとき）に、キャンセルフラグが“ＯＮ”であるか否かが判断され、キャンセルフラグが“ＯＮ”であった場合には、その特定の記憶領域に記憶されたデータがプリンタ３０に送信されるように変形しても良い。
【００８１】
また、ステップＳ１３９の判断が行われないように（ステップＳ１３６で“ＮＯ”側への分岐が行われた場合には、常に、ステップＳ１４０の処理が実行されるように）、プリンタドライバ１０を作成しておいても良い。
【００８２】
【発明の効果】
本発明のプリンタドライバを用いれば、コンピュータに、プリンタに対する中止制御を含む制御をより効率的に行なわせることが出来ることになる。
【図面の簡単な説明】
【図１】  本発明の一実施形態に係るプリンタドライバの使用形態の説明図である。
【図２】  実施形態に係るプリンタドライバが実行されているコンピュータの機能ブロック図である。
【図３】  図２に示されている印刷データ生成部の全体的な動作手順を示した流れ図である。
【図４】  図３のステップＳ１０８で実行されるコマンド生成処理の流れ図である。
【図５】  図３のステップＳ１０８で実行されるコマンド生成処理の流れ図である。
【図６】  図２に示されている印刷データ送信部の動作手順を示した流れ図である。
【図７】  印刷データ送信部の動作手順を示した流れ図である。
【図８】  印刷データ送信部が実行する第２データ生成処理の流れ図である。
【図９】  印刷データ送信部の動作手順を示した流れ図である。
【図１０】  印刷データ送信部の動作手順を示した流れ図である。
【符号の説明】
１０  プリンタドライバ
１１  印刷データ生成部
１２  印刷データ記憶部
１３  属性データ記憶部
１４  印刷データ送信部
２０  コンピュータ
３０  プリンタ
【図１】
0003925224.tif 000002
【図２】
0003925224.tif 000003
【図３】
0003925224.tif 000004
【図４】
0003925224.tif 000005
【図５】
0003925224.tif 000006
【図６】
0003925224.tif 000007
【図７】
0003925224.tif 000008
【図８】
0003925224.tif 000009
【図９】
0003925224.tif 000010
【図１０】
0003925224.tif 000011