(57)【特許請求の範囲】
【請求項１】
分割された印刷データを含むサブファイルを特定するための情報と、印刷を中止させるキャンセルコマンドを含む、プリンタを制御するコマンド群を記録したコマンドファイルを特定するための情報とを含むスプールファイルを読込み、プリンタへの印刷データの転送を制御する処理をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記スプールファイルにより特定されるサブファイルを読み込み、前記サブファイルに含まれる印刷データを出力する処理と、
前記スプールファイルにより特定されるコマンドファイルが更新されたことを検知すると、前記コマンドファイルを読込み、追加されたコマンドがキャンセルコマンドであった場合には、印刷データの出力を中止し、前記プリンタにおける印刷を中止させるための処理とをコンピュータに実行させるためのプログラムを記録したコンピュータ読取可能な記録媒体。
【請求項２】
分割された印刷データを含むサブファイルを特定するための情報と、印刷を中止させるキャンセルコマンドを含む、プリンタを制御するコマンド群を記録したコマンドファイルを特定するための情報とを含むスプールファイルを読込む手段と、
前記スプールファイルにより特定されるサブファイルを読み込み、前記サブファイルに含まれる印刷データを出力する手段と、
前記スプールファイルにより特定されるコマンドファイルが更新されたことを検知すると、前記コマンドファイルを読込み、追加されたコマンドがキャンセルコマンドであった場合には、印刷データの出力を中止し、前記プリンタにおける印刷を中止させるための処理を行なう手段とを備えることを特徴とするコンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータシステムにおける印刷処理に係り、特に、印刷時において、操作者からの印刷キャンセル命令を受付ける技術に関する。
【０００２】
【従来の技術】
印刷実行の際、プリンタへの出力によって、コンピュータシステム本体の計算完了が遅くなるのを防いだり、ネットワークに接続されたコンピュータからのプリンタ出力要求をさばき、順序を整えてプリンタにデータを送るという目的のため、コンピュータシステムはプリントスプールという手法を通常採用している。
【０００３】
図７は、ローカル接続プリンタでの印刷時の処理の概要を示すブロック図である。プリンタドライバ２３１で生成された印刷データ（プリンタ制御言語で記述されたデータ）は、オぺレーティングシステムのプリントシステム２４０のモジュールの一つであるスプーラ２４１に送られる。印刷データを受け取ったスプーラ２４１は、印刷データを一旦スプールファイル２６０として、ハードディスク上に格納する。そしてプリントシステム２４０のモジュールの一つであるプリントプロセッサ２４２が、このスプールファイル２６０を読み込み、プリンタ２０に転送する。
【０００４】
【発明が解決しようとする課題】
しかし、印刷処理が一旦開始すると、操作者が印刷を中止しようとして、キャンセルボタンをクリックしても、コンピュータ処理とのタイミング等によりキャンセルが実行されなかったり、迅速なキャンセル処理ができない等の問題がある。特に、スプールファイル２６０作成後、プリントプロセッサ２４２が、プリント２０に印刷データの転送を開始した後は、キャンセル処理は一層不確実なものとなっている。
【０００５】
本発明の目的は、印刷時において、印刷キャンセルコマンドを迅速に作成・検知し、検知以降の印刷データの転送を確実に中止することにある。
【０００６】
【課題を解決するための手段】
前記目的を達成するため、本発明は、操作者からの印刷命令に従って、プリンタを制御する印刷データを作成するプリンタドライバであって、当該プリンタドライバがインストールされたコンピュータで利用できるプリントプロセッサが、当該プリンタドライバが作成可能な独自の印刷データに従って、プリンタへの転送制御ができるものであるかどうかを判定する判定手段と、プリントプロセッサが、当該プリンタドライバが作成可能な独自の印刷データに従って、プリンタへの印刷制御ができるものであると判定された場合に、印刷データを１または複数のデータに分割して、かつ、データを識別するための情報をそれぞれのデータに付加し、これらをファイルとして記録する手段と、前記ファイルを特定するための情報を含むデータを、前記ファイルとは別に作成する手段と、を有することを特徴とするプリンタドライバを提供する。
【０００７】
また、本発明では、プリントスプールファイルを読込み、プリンタへの転送を制御するプリントプロセッサであって、プリントスプールファイルが、印刷データが含まれる、一または複数のファイルを特定するための情報を含むかどうかを判定する判定手段と、プリントスプールファイルが、、印刷データが含まれる、一または複数のファイルを特定するための情報を含むと判定された場合に、当該プリントスプールファイルを読み込み、前記ファイルを特定するための情報を参照する手段と、特定されたファイルを読み込み、ファイルに含まれる印刷データを出力する手段と、を有することを特徴とするプリントプロセッサも提供する。
【０００８】
【発明の実施の形態】
本発明の実施例について、図面を参照して説明する。本実施例は、ローカル接続されたプリンタで印刷を行うコンピュータシステムに、本発明を適用した場合である。
【０００９】
まず、本実施例におけるコンピュータシステムの構成について説明する。
【００１０】
図５は、コンピュータシステムのハードウェア構成を示すブロック図である。本図において、コンピュータ本体１０は、ＣＰＵ１１と、画像制御装置１２と、主記憶装置１３と、外部記憶装置１４と、入出力制御装置１５と、インタフェース１６と、これらを接続するバス１７とから構成される。
【００１１】
ＣＰＵ１１は、コンピュータの中心的な制御を行う装置で、主記憶装置に格納された種々の命令を解読して、実行する機能を有している。画像制御装置１２は、画像を生成するための演算等を行う。主記憶装置１３は、コンピュータが取り扱うデータ、ソフトウェア、オペレーティングシステム等を一時的に格納する機能を有している。外部記憶装置１４は、ハードディスク等の読み書き可能の記録媒体を有する記憶装置であって、ソフトウェア、一時ファイル等が格納される。入出力制御装置１５は、操作者の指示を受け付けるとともに、データを外部に接続された装置に出力する際の制御を行う。インタフェース１６は、プリンタ２０等の周辺装置と接続する際の仲立ちを行う。バス１７は、アドレス、データ等の信号が流れる線である。
【００１２】
コンピュータ本体１０には、インタフェース１６を介して、マウス１８とキーボード１９と、プリンタ本体２０が接続される。マウス１７およびキーボードは、コンピュータ操作者の入力を受付ける。プリンタ本体２０は、コンピュータ１０から印刷データを受付けて、印刷を実行する。
【００１３】
なお、コンピュータシステムの構成は、本構成に限られるものではない。
【００１４】
次に、ワードプロセッサ、グラフィック等のアプリケーションソフトウェアの印刷コマンドを実行した時の印刷データの流れの概要を、図９を参照して説明する。本図において、アプリケーションソフトウェア５０と、プリンタドライバ３１と、プリントシステム４０は、ソフトウェアで、主記憶装置１３に格納されている。ＣＰＵ１１は、これらのソフトウェアを参照して、本図に示す処理を行う。アプリケーションソフトウェア５０は、コンピュータ１０で実行しているプログラムである。操作者からの印刷命令を受付けると、アプリケーションソフトウェア５０は、印刷対象物の描画データ５１（主として、画像出力用のデータ形式）をプリンタドライバ３１に送る。
【００１５】
プリンタドライバ３１は、送られた描画データ５１を印刷データ５２（プリンタ制御言語で記述されたデータ）に展開して、プリントシステム４０に送る。
【００１６】
プリントシステム４０は、送られた印刷データ５２を外部記憶装置１４に一時的に格納する。その後、格納した印刷データ５２をプリンタ２０に送り、コンピュータ本体１０の印刷処理を終了する。
【００１７】
印刷データ５２を受け取ったプリンタ２０は、印刷を実行する。
【００１８】
図１は、本実施例の構成および処理の概要を説明するブロック図である。本図において、スプーラ４１とプリントプロセッサ４２とは、プリントシステム４０を構成するソフトウェアモジュールである。スプーラ４１は、プリンタドライバ３１から送られ、プリントシステム４１が受け取ったデータを、外部記憶装置１４に格納する。プリントプロセッサ４２は、格納された印刷データを読み込んで、プリンタ２０に送る。プリントプロセッサ４２は、通常オぺレーティングシステムの一部として、提供されるが、独自仕様のものを開発し、利用することも可能である。
【００１９】
以上の構成により行われる、本実施例における処理の概要について説明する。
【００２０】
プリンタドライバ３１は、印刷データを生成すると、この印刷データを後述するサブファイル７０に分割して、外部記憶装置１４に格納する。そして、サブファイル７０のファイル名と、印刷制御コマンドファイル７１のファイル名をスプーラ４１に送る。ここで、印刷制御コマンドファイル７１とは、プリンタドライバ３１が、プリンタを制御するコマンド、例えばキャンセル命令を書き込むために外部記憶装置１４等に作成するファイルである。
【００２１】
これらを受付けたスプーラ４１は、サブファイル名６１と、印刷制御コマンドファイルのファイル名６２をスプールファイル６０として外部記憶装置１４に格納する。
【００２２】
プリントプロセッサ４２は、スプールファイル６０から、サブファイル名６１を参照し、対応するサブファイル７０を順次オープンする。そして、サブファイル７０を読込み、印刷データを再構成し、プリンタ２０に送る。そして、プリンタ２０に送った印刷データに対応するサブファイル７０を順次削除する。また、プリントプロセッサ４２は、スプールファイル６０から、印刷制御コマンドファイル名６２を参照し、対応する印刷制御コマンドファイル７１を監視する。
【００２３】
次に、本実施例におけるプリンタドライバ３１の動作について詳細に説明する。プリンタドライバ３１は、プリントプロセッサ４２が本発明による印刷処理が可能である否かを調べ、可能である場合には、以下の処理を行う。可能でない場合には、従来の処理を行う。なお、プリントプロセッサ４２が本発明による印刷処理が可能か否かの判別は、例えば、本発明による印刷処理が可能なプリントプロセッサ４２に、識別用のコードを付し、プリンタドライバ３１が、そのコードを検出した場合には、本発明による印刷処理が可能であると決定すること等により実現できる。
【００２４】
ユーザからの印刷命令により、あるジョブに対する印刷処理を開始したプリンタドライバ３１は、本発明による印刷処理を行うことを示す識別データと、印刷制御コマンドファイルのファイル名とを、スプーラ４１に送る。なお、ジョブとは、１つの印刷命令で行われる印刷処理の単位をいう。印刷されるページ数の複単、部数の複単は問わない。
【００２５】
次に、プリンタドライバ３１は、印刷データを加工し、複数のサブファイル７０に分割し、外部記憶装置１４に格納する。そして、サブファイルのファイル名をスプーラ４１に送る。
【００２６】
ここで、プリンタドライバ３１が、印刷データを加工し、複数のサブファイル７０に分割する処理について説明する。
【００２７】
図２は、サブファイル７０を説明する概念図である。本図（ａ）に示すようにサブファイル７０は、ヘッダ部７１と、本体部７２と、フッタ部７３とから構成される。本体部７２は、さらにパケット部（７２ａ、７２ｂ、…）から構成される（本図（ｂ））。
【００２８】
ヘッダ部７１は、サブファイル７０の種類の識別等に用いられる。パケット部（７２ａ、７２ｂ、…）は、ジョブの開始を識別するためのコード、ページの開始を識別するためのコード、印刷データ等から構成される。フッタ部７３は、サブファイルの終了の識別に用いられる。
【００２９】
ヘッダ部７１と、フッタ部７３と、パケット部（７２ａ、７２ｂ、…）は、図２（ｃ）に示すような共通のフォーマットを有している。パケット部７２ａは、可変長で、パケットサイズ部７２１と、パケットコード部７２２と、パケットＩＤ部７２３と、パケットデータ部７２４とから構成される。
【００３０】
パケットサイズ部７２１は、パケットデータ７２ａのデータサイズを格納する。パケットコード部７２２は、パケットの種類を示すコードを格納する。パケットＩＤ部７２３は、パケットデータ７２ａのデータ種類（パケットの種類におけるデータの種類）を識別するコードを格納する。パケットデータ部７２４は、データ本体を格納する。
【００３１】
なお、印刷制御コマンドファイル７１の構成も、上記で説明したサブファイル７０と同様であり、両者はヘッダ部７１の内容で識別される。
【００３２】
図３は、プリンタドライバ３１が、印刷データ５２を、サブファイル７０に分割する処理を説明する概念図である。本図において７０ａ、７０ｂ、７０ｃは、サブファイルである。それぞれのサブファイルは、ヘッダ部（７１ａ、７１ｂ、７１ｃ）と、フッタ部（７３ａ、７３ｂ、７３ｃ）と、本体部であるパケット部（７２ａ、７２ｂ…）とから構成される。
【００３３】
プリンタドライバ３１は、印刷データを、パケットに分解し、いくつかのパケットをまとめ、ヘッダ部と、フッタ部を付加してサブファイルとする。パケットに分解する単位は、少なくとも、ジョブ開始、ページ開始等の印刷用コマンドは１パケットとするが、それ以外の印刷データは任意のサイズにすることができる。また、パケットをまとめて１サブファイルとする単位も任意である。ただし、印刷データの並び順を変更することは許されない。
【００３４】
図４は、プリンタドライバ３１が作成するサブファイル７０と、プリンタドライバ３１からスプーラ４１にファイル名が送られ、スプーラ４１が作成するスプールファイル６０の関係について説明する図であり、（ａ）（ｂ）の２例を示している。いずれも、印刷制御コマンドファイル名６１は、印刷制御コマンドファイル７１のファイル名を格納している。
【００３５】
図４（ａ）は、作成したサブファイルのファイル名をすべてスプールファイルで保持する方法を示す。本図においてスプールファイル６０は、印刷制御コマンドファイル名６１と、サブファイル名１、サブファイル名２…（６２ａ、６２ｂ…）とから構成される。
【００３６】
図４（ｂ）は、作成したサブファイルのファイル名の代表名をスプールファイルで保持する方法を示す。本図においてスプールファイル６０は、印刷制御コマンドファイル名６１と、サブファイル名６２とから構成される。サブファイル１、サブファイル２…は、サブファイル名６２を参照することにより、順次特定可能となる。
【００３７】
次に、プリンタドライバ３１が、ユーザが指示したキャンセル命令を受け取った場合の処理について説明する。
【００３８】
プリンタドライバ３１は、ユーザからの印刷キャンセル命令を受付けると、キャンセルを表すプリンタ制御コマンドを、印刷データとは別個に、印刷制御コマンドファイル７１に書き込む。このため、迅速にキャンセル命令コマンドを作成することができる。
【００３９】
次に、実施例におけるプリントプロセッサ４２の動作について詳細に説明する。
【００４０】
プリントプロセッサ４２は、プリントシステム４０から印刷命令を受付けると、スプールファイル６０中に、本発明による印刷処理が行われていることを示す識別データがあるか否かを調べる。そして識別データを検出した場合は、以下の処理を行う。なお、識別データは、本処理を行ったプリンタドライバ３１からスプーラ４１に送られ、スプーラ４１がスプールファイル６０中に書き込んだものである。
【００４１】
プリントプロセッサ４２は、スプールファイル６０を参照し、サブファイル名６１と、印刷制御コマンドファイル名６２を取得する。プリントプロセッサ４２は、サブファイル名６１の最初のファイル名に対応するサブファイル７０をオープンし、パケット単位（ヘッダ部７１とフッタ部７３とを含む）で読み込む。そして、印刷データであるパケットデータ部７２４を順次、プリンタ２０に送る。
【００４２】
プリントプロセッサ４２がフッタ部７３を読み込んだときは、読込み済みのサブファイルをクローズして、サブファイル名６１の次のファイル名に対応するサブファイル７０をオープンし、同様の処理を行うと共に、読込み済みである最初のサブファイルを消去する。これにより、外部記憶装置のディスク容量の節約が実現される。以下この処理が印刷データの終了まで繰り返される。
【００４３】
プリントプロセッサ４２が、ジョブ終了パケットを読み込んだときは、印刷を終了し、最後のサブファイル７０をクローズし、消去する。
【００４４】
プリントプロセッサ４２は、最初のサブファイルが作成されると、ジョブ全体のサブファイルが完成されるのを待たずに、プリンタへのデータを開始することができるため、印刷開始までの待ち時間を短縮することが可能となる。
【００４５】
プリントプロセッサ４２は、パケット単位でのファイルの読込み毎に、印刷制御コマンドファイル７１を監視する。そして、印刷制御コマンドファイル７１のファイルサイズ増加等により、印刷制御コマンドファイル７１が更新されたことを検知すると、印刷制御コマンドファイル７１を読み込む。
【００４６】
読込みの結果、印刷制御コマンドファイル７１に印刷キャンセル命令が追加されていた場合は、それ以降のパケットのプリンタ２０への転送を中止し、ページ終了コマンドおよびジョブ終了コマンドをプリンタ２０に送り、印刷を終了させる。
【００４７】
この印刷キャンセル処理により、パケット処理毎にキャンセル検知が可能となり、また、検知以後のパケットをプリンタ２０に転送することなく印刷を中止することができるようになる。
【００４８】
【発明の効果】
上述のように本発明によれば、印刷時において、印刷キャンセルコマンドを迅速に作成・検知し、検知以降の印刷データの転送を確実に中止することが可能となる。
【図面の簡単な説明】
【図１】  実施例の構成と処理の概要を説明するブロック図。
【図２】  サブファイルを説明する概念図。
【図３】  印刷データをサブファイルに分割する処理を説明する概念図。
【図４】  スプールファイルとサブファイルの関係を説明する概念図。
【図５】  コンピュータシステムのハードウェア構成を示すブロック図
【図６】  印刷データの流れの概要を説明するブロック図。
【図７】  ローカル接続プリンタでの印刷時の処理の概要を示すブロック図。
【符号の説明】
１０…コンピュータ本体、
２０…プリンタ、
３１…プリンタドライバ、
４０…プリントシステム、
４１…スプーラ、
４２…プリントプロセッサ、
６０…スプールファイル、
７０…サブファイル、
７１…印刷制御コマンドファイル。
【図１】
0003812278.tif 000002
【図２】
0003812278.tif 000003
【図３】
0003812278.tif 000004
【図４】
0003812278.tif 000005
【図５】
0003812278.tif 000006
【図６】
0003812278.tif 000007
【図７】
0003812278.tif 000008