(57)【要約】【課題】ジョブを分割して分散印刷するシステムにおいて、複数のジョブが存在する場合にも所定のページ以降の出力を中止する制御を行なう。【解決手段】オリジナルの印刷ジョブを複数の分散印刷ジョブに分割して複数の出力装置で印刷している場合、オリジナルの印刷ジョブの所定のページで出力を中止する指示を入力し、指定された所定のページを含む分散印刷ジョブを出力する出力装置を判別し、当該出力装置に所定のページで出力を停止するための指示を発行する制御を行なう。【選択図】      図９
2005025308.tif 000002
【特許請求の範囲】
【請求項１】
分散印刷を制御する情報処理装置であって、
オリジナルの印刷ジョブを複数の分散印刷ジョブに分割する分散印刷ジョブ生成手段と、
前記オリジナルの印刷ジョブの所定のページで出力を中止する指示が入力されるページ指定手段と、
前記ページ指定手段で指定された前記所定のページを含む分散印刷ジョブを出力する出力装置に対して、前記所定のページで出力を停止するための指示を発行する出力停止指示発行手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記出力停止指示手段は、前記所定のページを含まない分散印刷ジョブのうち、前記所定のページよりも後のページを出力する分散印刷ジョブを出力する出力装置に対しては、出力を停止するための指示を発行する制御を行い、前記所定のページよりも前のページを出力する分散印刷ジョブを出力する出力装置に対しては、出力を停止しないように制御することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記出力停止指示手段は、前記複数の分散印刷ジョブのいずれに前記ページ指定手段で指示された前記所定のページが存在するか判定する判定手段を有し、該判定手段は、前記複数の分散印刷ジョブの数がＮ（Ｎ≧２）であるとき、Ｎ番目のジョブから順に前記所定のページが含まれるか否かを判定することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記ページ指定手段は前記オリジナルの印刷ジョブの状態を表示する画面に関連付けて設けられ、前記所定のページは前記オリジナルの印刷ジョブの総ページ数に対して指定されることを特徴とする請求項１乃至３のいずれか１項に情報処理装置。
【請求項５】
分散印刷を制御する分散印刷制御方法であって、
オリジナルの印刷ジョブを複数の分散印刷ジョブに分割する分散印刷ジョブ生成工程と、
前記オリジナルの印刷ジョブの所定のページで出力を中止する指示が入力されるページ指定工程と、
前記ページ指定工程で指定された前記所定のページを含む分散印刷ジョブを出力する出力装置に対して、前記所定のページで出力を停止するための指示を発行する出力停止支持発行工程と、
を有することを特徴とする分散印刷制御方法。
【請求項６】
前記出力停止指示工程は、前記所定のページを含まない分散印刷ジョブのうち、前記所定のページよりも後のページを出力する分散印刷ジョブを出力する出力装置に対しては、出力を停止するための指示を発行する制御を行い、前記所定のページよりも前のページを出力する分散印刷ジョブを出力する出力装置に対しては、出力を停止しないように制御することを特徴とする請求項５に記載の分散印刷制御方法。
【請求項７】
前記出力停止指示工程は、前記複数の分散印刷ジョブのいずれに前記ページ指定工程で支持された前記所定のページが存在するか判定する判定工程を有し、該判定工程は、前記複数の分散印刷ジョブの数がＮ（Ｎ≧２）であるとき、Ｎ番目のジョブから順に前記所定のページが含まれるか否かを判定することを特徴とする請求項５または６に記載の分散印刷制御方法。
【請求項８】
分散印刷を制御するためにコンピュータで実行可能な分散印刷制御プログラムであって、
オリジナルの印刷ジョブを複数の分散印刷ジョブに分割する分散印刷ジョブ生成工程と、
前記オリジナルの印刷ジョブの所定のページで出力を中止する指示が入力されるページ指定工程と、
前記ページ指定工程で指定された前記所定のページを含む分散印刷ジョブを出力する出力装置に対して、前記所定のページで出力を停止するための指示を発行する出力停止支持発行工程と、
を有することを特徴とする分散印刷制御プログラム。
【請求項９】
前記出力停止指示工程は、前記所定のページを含まない分散印刷ジョブのうち、前記所定のページよりも後のページを出力する分散印刷ジョブを出力する出力装置に対しては、出力を停止するための指示を発行する制御を行い、前記所定のページよりも前のページを出力する分散印刷ジョブを出力する出力装置に対しては、出力を停止しないように制御することを特徴とする請求項７に記載の分散印刷制御プログラム。
【請求項１０】
前記出力停止指示工程は、前記複数の分散印刷ジョブのいずれに前記ページ指定工程で支持された前記所定のページが存在するか判定する判定工程を有し、該判定工程は、前記複数の分散印刷ジョブの数がＮ（Ｎ≧２）であるとき、Ｎ番目のジョブから順に前記所定のページが含まれるか否かを判定することを特徴とする請求項７または８に記載の分散印刷制御プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、１つの印刷ジョブを複数の印刷ジョブに分割して複数の出力装置で出力する分散印刷に関するものであり、より詳細には分散印刷ジョブに対する出力中止制御を実行する情報処理装置、分散印刷制御方法および分散印刷制御プログラムに関するものである。
【０００２】
【従来の技術】
従来、ネットワークを介して接続された情報処理装置とプリンタ、複合機などの複数の出力装置からなる印刷システムにおいて、例えば、ある情報処理装置上で作成された出力データを分割して複数の出力装置に分散して出力する分散印刷技術が存在している。
【０００３】
分散印刷の基本的な例を図１２を用いて説明する。図１２は、出力データの総ページ数が３００ページの文書データを、出力装置としての印刷装置１２０２、１２０３、１２０４で分散印刷させる処理の概要である。この例では３つの印刷装置で１００ページずつ均等に分散印刷させている。よって、印刷装置１２０２では１ページから１００ページまでが印刷出力され、印刷装置１２０３では１０１ページから２００ページまでが印刷出力され、印刷装置１２０４では２０１ページから３００ページまでが印刷出力される。
【０００４】
このような分散印刷処理を行うことにより、大量の出力データやモノクロ／カラー混合出力データを最適な画像処理装置に分散させることが可能となり、軽印刷などの分野における業務効率を向上させることが可能となった。
【０００５】
また、分散印刷を行うユーザの操作性向上や印刷出力管理を容易にするために、特開２００２−１６３０８６に記載されるような分散印刷システムが考えられている。特開２００２−１６３０８６では、ユーザの分散印刷指示に基づいて、元の印刷データを分散して印刷出力する、複数の印刷装置に対してそれぞれ子印刷ジョブを生成し、親印刷ジョブに対応する複数の子印刷ジョブが同時に操作されるように制御することにより、ユーザにとって理解しやすい分散印刷の操作を提供することが開示されている。
【０００６】
【特許文献１】
特開２００２−１６３０８６号公報
【０００７】
【発明が解決しようとする課題】
しかしながら、上記従来技術では、複数のプリンタドライバに対して印刷要求が行われる。結果として、複数の印刷ジョブ（子印刷ジョブ）が発行され、それらを元に複数の印刷装置で印刷出力が行われることになる。このため、例えば、文書データの特定のページまでの印刷しか必要としていないユーザが誤って全ページを印刷する操作を行ってしまった場合、分散印刷ではない出力形態であれば、必要とするページまでが印刷されたところで印刷ジョブを削除すれば所望のページまでが出力されることになるが、分散印刷の場合は、以下のような課題が生じていた。
【０００８】
（１）分散印刷の複数のジョブを１つのジョブとしてユーザに認識させるように制御する特許文献１に記載の技術では、必要とするページの最終ページが印刷された時点で、この印刷ジョブを削除した場合、最終ページを含まない別の子印刷ジョブも同時に削除されてしまう。
【０００９】
この課題の具体的な例を図１３を用いて説明する。図１３では、総ページ数３００の印刷データを誤って全ページの印刷操作を行い、印刷装置１３０１、１３０２、１３０３でそれぞれ１００ページずつ均等に分散印刷させている場合を想定している。ユーザが本来必要としているページが１２５ページまでであるとすると、印刷装置１３０２で１２５ページ目が印刷されたのを確認して、分散印刷の制御をおこなっているアプリケーションで管理されている親印刷ジョブを削除すると、印刷装置１３０１、１３０２、１３０３で処理されている全て子印刷ジョブが削除されてしまう。このため、印刷装置１３０１ではページ１からページ２５までが印刷され、印刷装置１３０２ではページ１０１からページ１２５までが印刷され、印刷装置１３０３ではページ２０１からページ２２５までが印刷出力される。
【００１０】
よって、ユーザが本来必要としていたページはページ１からページ１２５までであるため、ページ２６からページ１００までを改めて印刷しなければならなかった。
【００１１】
（２）また、複数の印刷装置で処理されている子印刷ジョブを独立して操作する場合を考えると、必要とするページの最終ページが印刷された時点で、該印刷装置で処理されている子印刷ジョブを削除しなければならないが、複数ある印刷装置のどの印刷装置で該当の子印刷ジョブが実行されているか、また、どの印刷装置の子印刷ジョブを削除しなければならないかをユーザが認識しておかなければ、そのような処理を行えない、という課題も生じていた。
【００１２】
【課題を解決するための手段】
本発明は上述した課題に鑑みなされたものであり、分散印刷を制御する情報処理装置であって、印刷ジョブを複数の分散印刷ジョブに分割する分散印刷ジョブ生成手段と、前記印刷ジョブの所定のページで出力を中止する指示を入力するページ指定手段と、前記ページ指定手段で指定された前記所定のページを含む分散印刷ジョブを出力する出力装置に対して、前記所定のページで出力を停止するための指示を発行する出力停止指示発行手段と、を有することを特徴とする。
【００１３】
また、前記出力停止指示手段は、前記所定のページを含まない分散印刷ジョブのうち、前記所定のページよりも後のページを出力する分散印刷ジョブを出力する出力装置に対しては、出力を停止するための指示を発行する制御を行い、前記所定のページよりも前のページを出力する分散印刷ジョブを出力する出力装置に対しては、出力を停止しないように制御することを特徴とする。
【００１４】
また更に、前記出力停止指示手段は、前記複数の分散印刷ジョブのいずれに前記ページ指定手段で指示された前記所定のページが存在するか判定する判定手段を有し、該判定手段は、前記複数の分散印刷ジョブの数がＮ（Ｎ≧２）であるとき、Ｎ番目のジョブから順に前記所定のページが含まれるか否かを判定することを特徴とする。
【００１５】
また更に、前記ページ指定手段は前記オリジナルの印刷ジョブの状態を表示する画面に関連付けて設けられ、前記所定のページは前記オリジナルの印刷ジョブの総ページ数に対して指定されることを特徴とする。
【００１６】
【発明の実施の形態】
本発明の実施の形態について、図面を用いて詳細に説明する。
【００１７】
図１は、本実施の形態における情報処理装置を含む分散印刷システムの概略構成図である。図１において、１０１は、本発明の情報処理装置の一例であるクライアントコンピュータ（以下、クライアントと称することもある）である。ホストコンピュータ１０１は、本発明の印刷制御プログラムがインプリメントされており、この印刷制御プログラムによって分散印刷処理を実行するものである。クライアント１０１はネットワーク１００によって接続された複数の印刷装置（以下、プリンタと称することもある）にそれぞれ対応する複数のプリンタドライバをインストールしているものである。
【００１８】
１０２〜１０４はネットワーク１００に接続されるプリンタであり、クライアント１０１から印刷ジョブを受信し、印刷処理を実行するものである。なお、以下の実施の形態では、情報処理装置にクライアントコンピュータを適用させた例を説明するが、本発明はこれに限定されるものではなく、例えば、情報処理装置にプリントサーバなどを適用させることも可能であり、以下に説明する処理と同様の処理をプリントサーバに実行させることも想定できる。
【００１９】
また、本発明における印刷ジョブとは、ジョブ開始命令からジョブ終了命令まででひとまとまりにされた印刷データを指し、各々のプリンタは印刷ジョブ単位で印刷処理を行う（他の印刷ジョブの割り込みを禁止する）ものであり、印刷データとは、印刷ジョブの中身の描画内容及びプリンタを制御するコマンドを指すものである。クライアント１０１にインプリメントされているプリンタドライバによって、アプリケーションからＯＳを介して受け取る印刷命令（ＤＤＩ関数）は印刷データ（プリンタ制御言語：ページ記述言語とも言う）に変換され、一まとまりの印刷データによる印刷ジョブが特定のプリンタに発行される。また、後述するが、本発明の情報処理装置であるクライアント１０１は、アプリケーションからの印刷命令を所定のデータ形式（ＥＭＦスプールもしくはＲＡＷスプールを用いる）でスプールし、複数のプリンタドライバによる生成処理により、複数の印刷ジョブを発行するものである。
【００２０】
図２は、図１に示したクライアント１０１のハード構成を概略的に示したブロック図である。図２において、２００はＣＰＵであり、クライアント１０１全体の制御を行う。２０１はＲＯＭであり、クライアント１０１を制御するための各種のプログラム及びデータが記憶されており、ＣＰＵ２００は、ＲＯＭ２０１あるいはＲＡＭ２０２に格納されたプログラムに従って、ＲＡＭ２０２をワークメモリとして利用しながら、クライアント１０１上での各種処理を実行する。
【００２１】
２０３は、本発明の制御プログラムを格納した記憶媒体の一例であるＦＤ２０４からのデータ（プログラム）を読み出したり、また書き込んだりする機能を有するＦＤドライブである。図３に示すように、ＦＤドライブ２０３にフロッピー（登録商標）ディスク（ＦＤ）２０４が挿入され、クライアント１０１とフロッピー（登録商標）ディスク２０４との間でデータの入出力が実行される。
【００２２】
ここで、図４を用いて、上記フロッピー（登録商標）ディスク２０４の内部におけるデータ構造を説明する。図４にはフロッピー（登録商標）ディスク２０４の内部データ構造としてのメモリマップ４００を示してある。フロッピー（登録商標）ディスク２０４の中には、ボリューム情報４０１と、ディレクトリ情報４０２と、ネットワークプリンタ１０２〜１０４の制御プログラム４０３と、関連データ４０４が格納されている。
【００２３】
また、図５を用いて、上記フロッピー（登録商標）ディスク２０４からＲＡＭ２０２に制御プログラムを展開したときのメモリマップ５００を説明する。図５に示すように、ＲＡＭ２０２は基本Ｉ／Ｏプログラム５０１、オペレーティングシステム（ＯＳ）５０２、フロッピー（登録商標）ディスク２０４から展開されたネットワークプリンタ制御プログラム５０３および関連データ５０４を格納するエリアと、ワークエリア５０５とを有している。
【００２４】
図２の２０５は、外部メモリの一例であるハードディスク（ＨＤ）であり、アプリケーションソフトウェアや、また、本発明の印刷制御プログラムもＦＤ２０４からＦＤドライブ２０３を介して読み込まれ、このＨＤ２０５にインストールされている。２０６は入力装置の一例であるキーボードであり、ユーザからの指示を入力する機能を有している。また、入力装置の他の例としては、マウスなどのポインティングデバイスが存在している。
【００２５】
２０７は表示手段の一例であるディスプレイであり、ＣＲＴであってもＬＣＤなどの液晶ディスプレイであってもよい。本印刷制御プログラムにより提供されるユーザインタフェースをＯＳの指示に基づいて表示する機能を有している。また、ディスプレイ２０７への表示は実際にはＣＰＵ２００の指示に基づくものであり、この表示制御手段として機能するＣＰＵ２００の指示に基づく信号をディスプレイ２０７が処理することによって所定の画面の表示が実現される。なお、後述にて説明する例えば図７に示されるようなユーザインタフェースもＣＰＵ２００の指示に基づく信号をディスプレイ２０７が処理し、表示することによって実現される。
【００２６】
２０９はネットワークインタフェースであり、図１に示すように、クライアント１０１をＬＡＮ（ローカルエリアネットワーク）に接続し、外部装置と通信する機能を有している。なお、ネットワークインタフェースとしてはネットワークボードまたはネットワークカードが好ましい。
【００２７】
以上に述べた２００から２０８（２０４を除く）は、システムバス２０９を介して接続されており、相互にデータを授受できるようになっている。
【００２８】
図６は、本発明の印刷制御プログラム（方法）に基づいて、分散印刷ジョブの操作及び表示方式を実現する分散印刷システムの一実施例である。この図は、Ｗｉｎｄｏｗｓ（登録商標）ＯＳのスプーラ及び、印刷処理の組み合わせによる実現する例を示している。本発明では、実施例としてＷｉｎｄｏｗｓ（登録商標）上の表示機能や印刷システムを例にして説明するが、ＯＳはＷｉｎｄｏｗｓ（登録商標）でなくてもよく、また、スプーラもＷｉｎｄｏｗｓ（登録商標）スプーラに依存しなくても実現することができる。
【００２９】
また、本発明の操作方式が対象とする分散印刷方法についても、アプリケーションソフトから一つの印刷指示をもとに複数のプリンタに対して分散印刷処理する印刷方法であれば、ＯＳやハードの仕様、分散のタイプを指定する分散印刷方法などにも依存しない。即ち、複数のプリンタに対して子印刷ジョブが親印刷ジョブを元に生成され出力処理されるような分散方法であれば、本発明に適用することが可能である。例えば、複数の出力先毎に所定の部数が割り当てられるような部数分散、或いは、出力先毎に所定の印刷ページが割り振られるようなページ分散、或いは、ページ分散の１つとして、ユーザの用途や、カラーか白黒か等の印刷条件に応じて、印刷ジョブ中のページ毎に出力先デバイスが決定され、分散される分散方法などが分散印刷処理のタイプとして挙げられる。
【００３０】
図６において、文書（ドキュメント形式、表形式、画像ファイル、ＤＴＰなどを含む）の作成機能を有するアプリケーションソフトウェア（以下、アプリケーションと呼ぶ）において、ユーザは分散印刷の指示をすることが可能となっている。例えば、１つの仮想的なプリンタドライバ（以下、この仮想的なプリンタドライバを分散印刷ドライバと呼ぶ）を予め分散印刷用に作成しておく。この分散印刷ドライバは、実際には複数のプリンタドライバを呼び出すモジュールを有しており、印刷命令を受けると、所定のデータ形式（例えばＥＭＦ：エンハンスドメタファイル）で印刷命令をスプールし、分散印刷ドライバで設定されている複数のプリンタドライバに対して自動的に該印刷命令を分散して印刷依頼する。それぞれのドライバに渡される印刷命令自体は、すべての印刷命令であるが、ページ数を指定したものとなっているため、それぞれのプリンタドライバでは、指定されたページ番号のものに対して印刷データを生成する処理を行うことになる。
【００３１】
図６において、ユーザが分散印刷ドライバに対してアプリケーションから文書の印刷指示を行うと、アプリケーションは印刷命令（ＧＤＩ関数）をＯＳのグラフィックエンジンであるＧＤＩに出力する。また、アプリケーションとＧＤＩの間には、ＥＭＦスプーラが存在し、アプリケーションが吐き出した印刷命令の内容をバイナリ形式のＥＭＦでスプールしている。なお、ＥＭＦについては、Ｗｉｎｄｏｗｓ（登録商標）ＯＳではよく知られた技術であるため、詳細な説明は省略する。
【００３２】
ＯＳのグラフィックエンジンであるＧＤＩは、出力すべきプリンタドライバが解釈可能な印刷命令（ＤＤＩ関数）に変換して処理を渡す。プリンタドライバは、ＧＤＩから取得した印刷命令（ＤＤＩ関数）と指定されたページ番号に基づいて、必要なページ番号の印刷データを生成し、スプーラ１（ＲＡＷスプーラ）に印刷データを出力する。スプーラ１は、スプールしている印刷データを所定単位ごとに転送部を介してＬＡＮに接続されるプリンタに出力し、所定のプリンタで印刷を行わせる。
【００３３】
また、ここでいうスプーラ１は、説明を簡単にするために、印刷データをスプールするＲＡＷスプーラと、ＧＤＩに渡される前のＥＭＦ形式のデータをスプールするＥＭＦスプーラとを同じくくりで説明している。詳細に説明するのであれば、ＥＭＦスプーラは、前述したように、アプリケーションが吐き出したデータに基づいてスプールされるため、ＧＤＩの前に存在している。ＥＭＦスプーラにスプールされているＥＭＦ形式のデータは、分散印刷ドライバの指示に基づいて、再スプール部（本印刷制御プログラムの一つのモジュール）にページ番号と共に渡される。そして、分散すべきプリンタに相当する第２のプリンタドライバで印刷データの生成処理をさせるために、もう一度ＧＤＩを介してプリンタドライバに印刷命令をページ番号と共に出力し、スプーラ２を介して印刷データをプリンタに出力する。また、必要に応じて（３つ以上のプリンタに分散する場合）、再スプール部から、異なる第３のプリンタドライバで印刷データの生成処理をさせるために、もう一度ＧＤＩを介してプリンタドライバに印刷命令をページ番号と共に出力し、スプーラ３を介して印刷データをプリンタに出力する。
【００３４】
また、図６の印刷システムでは、スプールファイルとして、ＥＭＦを利用する例について説明したが、分散印刷をさせるプリンタが同系列のプリンタである場合は、印刷データのプリンタ言語が同一になるため、ＲＡＷスプーラを利用することも可能である。その場合は、プリンタドライバで最初の印刷データの生成時にすべてのページの生成を行い、分散するプリンタごとにページ数を指定して印刷を行わせる。
【００３５】
このように分散印刷を自動的に行わせることにより、ユーザの手間が省け、また、アプリケーションからの印刷命令の出力も一度で済むため、印刷処理からの開放が早くなり、その間に他の処理をすることが可能となり、ユーザにとって使い勝手のよい分散印刷が提供されることになる。
【００３６】
このように分散印刷を自動的に行わせることにより、ユーザの手間が省け、また、アプリケーションからの印刷命令の出力も一度で済むため、印刷処理からの開放が早くなり、その間に他の処理をすることが可能となり、ユーザにとって使い勝手のよい分散印刷が提供されることになる。
【００３７】
図７は、分散印刷処理中の分散印刷ジョブの操作、表示の対象となるプリンタオブジェクトの表示の一例である。ここで各々の印刷ジョブのステータス取得の処理は通常の印刷ジョブのステータス取得の処理と同様であり、その手段は特に問わない。例えば、図示省略したプリントサーバやプリンタに対して直接クライアントからポーリングを行ってステータスを取得してもよいし、プリントサーバからのステータス通知を受けてもよいし、また、プリンタから直接トラップを用いてステータス通知を受けてもよい。
【００３８】
このようにして取得した各々の印刷ジョブのステータスに基づいて、分散印刷ジョブの親印刷ジョブ（オリジナルの印刷ジョブ）と子印刷ジョブ（分散印刷ジョブ）のステータスを認識することができる。ここでいう親印刷ジョブとは、アプリケーションが依頼した印刷命令に基づく分散印刷ジョブそのものである。また、子印刷ジョブとは、分散印刷ジョブ内のそれぞれのプリンタに対して分散された実際の印刷ジョブのことである。更に具体的には、親印刷ジョブとは、アプリケーションから依頼された印刷命令に基づいて生成され、スプールファイルとして保持されるものに対応するものであり、親印刷ジョブに対応するスプールファイルは例えば上に説明したＥＭＦなどが相当するが、本発明はこれに限定されるものではなく、ＰＤＬに変換できる形式のファイルであれば、異なるページ記述言語に対応した複数のプリンタを対象にしてでも子印刷ジョブを生成することが可能となり、本発明に適用可能である。
【００３９】
また、子印刷ジョブとは、分散印刷ドライバの指示に基づいてオリジナルの親印刷ジョブに対応するスプールファイル（ＰＤＬに変換できる形式のファイルであり例えばＥＭＦに相当）を再スプール部を介し更に分散すべきプリンタに対応するプリンタドライバにより生成された印刷データを含む印刷ジョブに対応する。
【００４０】
７０１は、オリジナルの親印刷ジョブに関する表示、および操作をするためのユーザインタフェース画面の一例である。このユーザインタフェース画面（以下、ＵＩと呼ぶことがある）は、分散印刷ドライバのアイコンをダブルクリックすることにより、本印刷制御プログラムにより提供されて表示部に表示される。このＵＩでは、親印刷ジョブのステータス（状態）が「スプール中」と表示されている。「スプール中」とは、印刷データをプリンタに対してスプール（転送し、プリンタのメモリに対して保存）しているという意味である。他の状態としては、「印刷待ち」、「印刷中」、「印刷終了（削除）」、「エラー発生」などがある。また、７０１のＵＩにおいて、例えば、メニューの「プリンタ（Ｐ）」から「分散先プリンタ」というメニュー（図示省略）を選択すると、以下の７０２と７０３のダイアログ（ＵＩ）が表示される。
【００４１】
７０２、７０３は、オリジナルのジョブから、２つの出力装置に対して分散印刷処理を行うことで生成した子印刷ジョブに関する表示、および操作をするためのユーザインタフェース画面（ダイアログボックス）の一例である。このように、親印刷ジョブのＵＩから対応する子印刷ジョブのみを抽出することができるので、ユーザは親印刷ジョブの表示を見ることにより、分散印刷処理全体として現在どのような状態なのかを容易に認識することができるばかりでなく、親印刷ジョブに対応する複数の子印刷ジョブに関する情報を容易に抽出し得ることが可能となる。また、所定のプリンタにおいて、子印刷ジョブが他の一般的な印刷ジョブと混在して処理されるような環境下でも、ユーザが親印刷ジョブに関連する子印刷ジョブを容易に区別することができるという効果に結びつくものとなる。なお、子印刷ジョブの表示のさせ方は上に説明したものに限定されるものではなく、上の説明で７０２、７０３は親印刷ジョブに対応する子印刷ジョブの状態をそれぞれ別の表示枠に示すようにしたが、無論、１つの表示枠中に、親印刷ジョブに対応する複数の子印刷ジョブのリストを表示させるような形態も想定される。また、この時に１つの表示枠中に表示される複数の子印刷ジョブのリストは、複数の親印刷ジョブのリストが表示されたＵＩから指定された、所定の親印刷ジョブに対応して抽出された複数の子印刷ジョブの夫々に関する出力先、状態が一覧表示されたリストに対応する。
【００４２】
ここで、注意しておく点として、図７の７０１における親印刷ジョブのステータス（状態）とは、オリジナルとして生成された印刷データそのもののステータスを表わすものではなく、オリジナルの印刷データから分割され生成された複数の子印刷ジョブの夫々のステータスを組み合わせることによって生成した仮想的なステータスであるということである。この仮想的な親印刷ジョブのステータスがユーザに提供されることによって、例えば、ユーザは分散印刷処理が全体として完了したか否かなどの状態を、複数に分割された子印刷ジョブの夫々のステータスをわざわざ確認しなくとも、容易に知ることができる。即ち、もともとユーザが印刷指示をした１つのドキュメントの印刷状況を知るには、どのような分散印刷方法の場合でも、どれだけの数の子印刷ジョブが生成され、夫々がどういう状況であろうとも、親印刷ジョブを把握するだけで良いという効果を得ることができる。
【００４３】
このように、仮想プリンタドライバのダイアログボックスを表示させることにより、分散印刷の親印刷ジョブのステータス表示や操作を行うことができる。また、分散先プリンタのダイアログボックスを表示することにより子印刷ジョブのステータス表示や操作を行うことができる。また、ユーザにとって分散印刷ジョブの表示が明確に理解できることにより、それぞれのジョブの操作が容易に理解可能となる。
【００４４】
図８は、オリジナルの親印刷ジョブ（図８中では親ジョブと呼ぶ）と、分散印刷により分割された子印刷ジョブ（図８中では子ジョブと呼ぶ）の状態遷移の一例を示す表である。前述したように、オリジナルの印刷ジョブを親印刷ジョブ、分散印刷処理により生成されたジョブを子印刷ジョブとしている。本発明の情報処理装置においては、図８に示すような、複数の子印刷ジョブの夫々の状態の組み合わせに従って親印刷ジョブの状態が決定されるようになっている。これにより、ユーザはそれぞれ同期していない子印刷ジョブの夫々の状態を理解せずとも、分散印刷ジョブの状態がどのようなものであるかを親印刷ジョブの状態を知ることにより容易に把握することができる。また、状態の種類としては図８に示される状態に限定されるものではなく、例えば、エラーなどの状態も想定され、複数の子印刷ジョブのうちの何れかの状態がエラーであったような場合には、親印刷ジョブの状態をエラーとするような制御形態も本発明では想定される。以下、本実施の形態の説明では、親印刷ジョブと子印刷ジョブとで、印刷ジョブを区別して説明する。
【００４５】
以上で分散印刷に関する基本的な構成について説明を終える。以下では本発明の特徴について説明する。
【００４６】
本発明の情報処理装置（クライアント１０１）は、分散印刷を制御する情報処理装置であって、操作者から本印刷制御プログラムに対して入力される分散印刷の指示（分散印刷ドライバに対する印刷指示）に基づいて、印刷すべきデータ（アプリケーションから吐き出される印刷命令であるＧＤＩ関数、または、対応するＥＭＦ形式のデータ）から複数のプリンタに対する複数の子印刷ジョブを、それぞれのプリンタで印刷させることができるプリンタドライバを用いて生成させるよう制御する分散印刷制御手段（それぞれのプリンタドライバに対してＥＭＦのデータをページ番号を指示して渡す本印刷制御プログラムの処理）と、前記分散印刷制御手段による制御に応じて生成される複数の子印刷ジョブ（図７でいう７０２、７０３）と、複数の子印刷ジョブの基となる親印刷ジョブ（図７でいう７０１）との状態を識別可能に（実施例ではダイアログを分けている。また、後述する子印刷ジョブの一覧表示に親印刷ジョブを分類「親」等として表示させてもよい。）表示させる表示制御手段と、前記親印刷ジョブに対する操作指示に応じて、親印刷ジョブに対応する複数の子印刷ジョブが同様に操作されるよう制御する操作制御手段（図９以降に後述する処理）とを有する。
【００４７】
また、前記操作制御手段における印刷ジョブの操作は、ページ指定キャンセル操作（図９のフローチャート）である。
【００４８】
図９は本発明の印刷制御プログラムによって実行される、ページを指定して印刷をキャンセルする手順を示すフローチャートである。以下、詳しい手順を説明する。尚、以下説明する図９のフローチャートの各ステップの処理は、情報処理装置におけるＣＰＵ２００が、ＲＯＭ２０１、ＨＤ２０５などの不揮発性記憶手段に記憶されたプログラムコードを読込み、該読込んだプログラムコードに即した処理を実行することに基づいて実現されるもであるが、各フローチャートの一部、或は、全てのステップをプリントサーバ或はプリンタなどが処理するような場合には、その都度処理の主体となる装置に備えられたＣＰＵが不揮発性記憶手段に記憶されたプログラムコードを読込み、該読込んだプログラムコードに即した処理を実行することに基づいて実現されるものとする。
【００４９】
はじめに、図９のステップＳ９０１は、図９のフローチャート処理の開始を示すものであるが、その開始の状況としては、あるジョブに対して分散印刷処理が行われ、親印刷ジョブと子印刷ジョブが図７の例で示したようなダイアログボックスを用いたＵＩ表示がなされているような場合が想定される。このときの各ジョブのステータスはジョブがページ指定でキャンセル可能なステータスであればどのようなステータスであってもよい。
【００５０】
ステップＳ９０１において、ユーザがマウスやキーボードなどの操作部を用いて親印刷ジョブをＵＩ上で表示する。ステップＳ９０２において、ＵＩ上のメニュー「ドキュメント」の「ページ指定キャンセルメニュー」（図示省略）を選択すると、図１０に示すようなキャンセルページを入力するダイアログボックスが表示される。ユーザはこのダイアログボックスにページＰを入力してキャンセルの指示をする。即ち、キャンセルするページの入力画面は親印刷ジョブのステータスを表示する画面に関連付けて設けられている。
【００５１】
ページ指定のキャンセルがなされるとステップＳ９０３において、指示された親印刷ジョブを管理する印刷システム（印刷制御プログラム）は、キャンセル指示された親印刷ジョブのジョブ管理情報（ＲＡＭ２０２で管理されている）に付随している子印刷ジョブの管理情報（ＲＡＭ２０２で管理されている）を参照して、子印刷ジョブ数を変数Ｎにセットする。
【００５２】
ここで、ジョブ管理情報について詳細に説明する。図１１は情報処理装置１０１によって参照されるジョブ管理情報の具体的な一例を示すものである。図１１は本発明におけるジョブ管理情報の一部を示すものであるが、１１０１はジョブを識別するためのジョブＩＤを示す。また、１１０２は印刷ジョブの名前（ドキュメント名）を示すものである。また、１１０３はジョブがスプールされるプリンタの名前を指定するものである。１１０４はプリンタの稼動状態、エラー発生状況などのジョブやプリンタに関連する情報を示すものである。また、１１０５は元のジョブＩＤを指すものである。１１０６は子印刷ジョブ情報リストのポインタであって、該ポインタの指し示すアドレスには子印刷ジョブの情報が記憶されており、図１１の場合には、１１０７〜１１０９を参照するための情報が記憶されている。１１０７〜１１０９には子印刷ジョブのＩＤと夫々のＩＤに対応したドキュメント名、ステータス、出力先プリンタ、ページ数などを示す情報が記憶されている。
【００５３】
ここで更に、親印刷ジョブのジョブ管理情報と、子印刷ジョブ管理情報とを夫々区別して説明する。親印刷ジョブのジョブ管理情報においては、図１１における元のジョブＩＤ１１０５の値は自身が元のジョブのために、例えば「ＸＸＸＸ」など、自身が元のジョブであることを識別するための情報が記憶されている。そして、子印刷ジョブの情報リストのポインタ１１０６には、自身の印刷データを元に生成された複数の子印刷ジョブの夫々の情報を参照するためのポインタが記憶されている。
【００５４】
次に、子印刷ジョブのジョブ管理情報を図１１を用いて説明する。ジョブＩＤ１１０１は子印刷ジョブ自身のＩＤが記憶されており、元のジョブＩＤ１１０５には元のジョブである親印刷ジョブのＩＤが記憶されている。この１１０５が参照されることにより、子印刷ジョブに対応する親印刷ジョブを特定することが可能となる。そして、子印刷ジョブ情報リストのポインタには、自身が子印刷ジョブであることを識別するための情報が記憶されている。無論、自身以外の子印刷ジョブのステータス等の情報を参照するためのポインタを格納することも想定され、そうすることにより、子印刷ジョブのジョブ管理情報から他の子印刷ジョブを特定することが可能となる。
【００５５】
なお、本発明におけるジョブ管理情報は上に説明したものに限定されるものではなく、親印刷ジョブと子印刷ジョブとが相互にお互いの情報を参照したり、更新したりできて、かつ、それぞれの情報更新が連動して処理されるような形式であれば、本発明における親印刷ジョブと子印刷ジョブとの関係を実現することができる。
【００５６】
フローチャートの説明に戻る。図９のステップＳ９０４では、ステップＳ９０３で設定した変数Ｎのジョブに指定されたページＰが含まれているか否かを判定する。ページＰがジョブＮに含まれていれば、ステップＳ９０５に進み、ページＰが印刷出力されたか否かを判定する。ページＰがまだ印刷出力されていない場合はＰの出力が完了するまで継続的に監視し、Ｐが出力された時点でステップＳ９０６に進み、子印刷ジョブＮの印刷出力をキャンセルするコマンドを、ジョブＮを印刷しているプリンタに対して発行する。コマンドを受信したプリンタは出力処理を停止することになる。
【００５７】
ステップＳ９０４で、ページＰがジョブＮに含まれていないと判定された場合は、該ジョブＮの印刷出力をキャンセルするコマンドを、ジョブＮを印刷しているプリンタに対して発行する。このコマンドを受けたプリンタはその時点で出力を停止する。
【００５８】
そして、ジョブ数の変数Ｎを１デクリメントし、ステップＳ９０４の判断処理に戻る。
【００５９】
以上、分散印刷のページ指定キャンセルに関して説明したが、ここで改めて一連の処理を説明する。まず図１２に示したように、ページ１からページ３００までのドキュメントを、ユーザがクライアント１０１のプリンタドライバで分散印刷開始を指示することにより、印刷制御プログラムがプリンタ１２０１、プリンタ１２０２、プリンタ１２０３にそれぞれページ１からページ１００まで、ページ１０１からページ２００まで、ページ２０１からページ３００までを分散して出力させるような子印刷ジョブを生成して発行したものとする。説明の便宜上、プリンタ１２０１に発行されたジョブを子ジョブ１としてジョブＩＤ１を付与し、プリンタ１２０２に発行されたジョブを子ジョブ２としてジョブＩＤ２を付与し、プリンタ１２０３に発行されたジョブを子ジョブ３としてジョブＩＤ３を付与するものとし、図１１に説明したようにこれらのジョブＩＤ及び付随するジョブの詳細情報はジョブ管理情報としてＲＡＭ２０２に記憶される。
【００６０】
そして、これらの子印刷ジョブの発行により、プリンタ１２０１、プリンタ１２０２、プリンタ１２０３はそれぞれページの出力処理を開始する。
【００６１】
ユーザが印刷開始を指示した後、ページ１２５を指定してキャンセル処理を行なう場合は、親印刷ジョブが表示されているＵＩに対して、図１０に示したようなページ数入力手段を利用してページ数を入力する（ステップＳ９０１、ステップＳ９０２）。
【００６２】
ページ１２５でキャンセルする旨の指示を受けた印刷制御プログラムは、ＲＡＭ２０２で管理されているジョブ管理情報に付随している子印刷ジョブの管理情報を参照して、子印刷ジョブ数である３を変数Ｎにセットする（ステップＳ９０３）。これは、図１１に示した子印刷ジョブＩＤを参照することでセットすることができる。
【００６３】
次に、ジョブＩＤ３である子ジョブ３に、指定されたページ１２５が含まれるか否かを判定する（ステップＳ９０４）。ジョブＩＤ３に対応する管理情報から、子ジョブ３はページ２０１からページ３００までを出力するジョブであることが判明するため、印刷制御プログラムは子ジョブ３の出力を行なっているプリンタ１２０３に対して、プリントをキャンセルするためのコマンドを発行する（ステップＳ９０７）。このコマンドを受けたプリンタ１２０３は出力処理を中止する。
【００６４】
次に、ジョブＩＤ２である子ジョブ２に、指定されたページ１２５が含まれるか否かを判定する（ステップＳ９０４）。ジョブＩＤ２に対応する管理情報から、子ジョブ２はページ１０１からページ２００までを出力するジョブであることが判明した場合は、プリンタが保持しているカウンタ情報などから、指定されたページである１２５ページが既に出力されたかどうかを判定する（ステップＳ９０５）。まだ出力されていなければ、ステップＳ９０５の判定を繰り返す。既に出力されている場合、印刷制御プログラムはジョブＩＤ２の子ジョブ２に対してキャンセルコマンドを発行し（ステップＳ９０６）、即座に出力を中止させる。
【００６５】
なお、ステップＳ９０５の判定の結果、まだ出力されていないと判定された場合でも印刷制御プログラムが「ページ１２５の出力を完了した時点でその後の出力を中止せよ」という意味のコマンドを発行し、かつ該コマンドを解釈して動作可能なプリンタである場合には、判定を繰り返す必要が無くなるため、効率的なキャンセル処理が可能である。
【００６６】
ジョブＩＤ１である子ジョブ１はページ１からページ１００までを出力するものであるから、ここでは特に指示をすることなく出力を完了させる。
【００６７】
以上の処理により、ユーザがキャンセルを所望したページで出力を完了させることができるため、必要以上に全ページを出力する必要もなく、また、キャンセルしたいページ以前のページ（上記の説明ではページ１からページ１２５までのページ）の出力を中止してしまうことが無くなる。
【００６８】
なお、上述した実施の形態の図９では、子印刷ジョブ（分散印刷ジョブ）の数Ｎを用いて、ジョブＮから順次キャンセル指定されたページが該ジョブに含まれるか否かを判定する処理を行なっているが、本発明はこれに限るものではない。例えば、各分散印刷ジョブに割り当てられたページ数を管理する管理プログラムなどに対し、キャンセル指定されたページ数を入力して、キャンセル指示を発行する分散印刷ジョブを特定する方法であってもよい。
【００６９】
また、上記実施形態では、分散印刷制御プログラムが提供するユーザインタフェース画面により、ページ指定キャンセル処理を行なうものであるが、本発明はこれに限るものではなく、分散印刷中にある印刷装置で処理されている子印刷ジョブが操作パネルなどからキャンセルされた場合、分散印刷制御プログラムが印刷装置からのイベント通知あるいはポーリングによってキャンセル処理を検知し、削除された子印刷ジョブによって印刷されるページよりあとのページを含む子印刷ジョブを出力している印刷装置に対して子印刷ジョブの出力キャンセル指示を出すようにしてもよい。
【００７０】
また、本発明の実施形態は、ＰＣにインストールされているＷｉｎｄｏｗｓ（登録商標）のようなＯＳ上での動作を例にして説明したが、他のＯＳやＰＣ以外の装置であっても、複数の出力装置に対して異なるスプール方式や、プリンタ制御を行なえる装置から、一つのジョブを複数の出力装置から出力するような装置であれば、いかなるものであってもよい。
【００７１】
本発明は、ユーザが意図した印刷データをひとつのジョブとして扱い、その印刷データから新たに複数のジョブを生成する場合、例えば、印刷データを分割する場合であっても、印刷データのコピーを生成して部数を増やす場合のような分散印刷処理にも適用できる。
【００７２】
本発明のジョブの操作、表示の適応範囲は、プリンタに転送するまでのホストコンピュータ上に限るものではなく、プリンタ内にスプールされる場合や、印刷処理中のジョブ、排紙確認待ちのジョブなど、プリントシステム内にジョブ、または印刷データ、ジョブの管理情報のいずれかが存在する全ての状況に対して適応することができる。
【００７３】
なお、本発明は、複数の機器（例えば、ホストコンピュータ、インタフェース機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（複写機、プリンタ、ファクシミリ装置など）に適用してもよい。
【００７４】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出して実行することによっても達成される。
【００７５】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体、あるいはそのプログラムコード自体は本発明を構成することになる。
【００７６】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【００７７】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能の実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００７８】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００７９】
【発明の効果】
以上説明したように、本発明によれば、複数の子印刷ジョブが複数の出力装置で処理される分散印刷処理において、その元となる親印刷ジョブに対して特定のページを指定した出力キャンセル指示を行なうことで、該ページを出力する子印刷ジョブの状態などをユーザが意識・把握することなく、出力のキャンセルを行なうことができる。これにより、不要な印刷出力を防止し、また、キャンセルしたいページ以前のページの出力を中止してしまうことも防ぐことが可能となる。
【図面の簡単な説明】
【図１】本発明の情報処理装置が適用される印刷システムの一例を示す図である。
【図２】本発明の情報処理装置の機能構成を概略的に示すブロック図である。
【図３】情報処理装置と記憶媒体の関係を示す図である。
【図４】記憶媒体の内部のプログラムモジュール等のデータ配置を表すメモリマップを示す図である。
【図５】記憶媒体から本プログラムモジュールをＲＡＭに展開したときのメモリマップを示す図である。
【図６】本発明の分散印刷の操作、表示を実現する印刷システムの一例を説明する機能ブロック図である。
【図７】本発明のプログラムモジュール（機能）により提供される表示方法の一例である。
【図８】本発明の操作方式の前提となる分散印刷処理よるジョブのステータスの遷移の一例である。
【図９】本発明のオリジナルジョブに対するページ指定キャンセル操作の手順を示すフローチャートである。
【図１０】本発明のページ指定キャンセル画面の概略図である。
【図１１】本発明のジョブ管理情報の一例を示す図である。
【図１２】公知の分散印刷処理を示す図である。
【図１３】従来技術の分散印刷処理におけるジョブキャンセル実行時の状態を示す図である。
【符号の説明】
１０１  クライアントコンピュータ（情報処理装置）
１０２  プリンタ
１０３  プリンタ
１０４  プリンタ
２００  ＣＰＵ
２０１  ＲＯＭ
２０２  ＲＡＭ
【図１】
2005025308.tif 000003
【図２】
2005025308.tif 000004
【図３】
2005025308.tif 000005
【図４】
2005025308.tif 000006
【図５】
2005025308.tif 000007
【図６】
2005025308.tif 000008
【図７】
2005025308.tif 000009
【図８】
2005025308.tif 000010
【図９】
2005025308.tif 000011
【図１０】
2005025308.tif 000012
【図１１】
2005025308.tif 000013
【図１２】
2005025308.tif 000014
【図１３】
2005025308.tif 000015