(57)【特許請求の範囲】
【請求項１】
ネットワークに接続されたクライアントコンピュータと、プリントサーバと、複数のプリンタとよりなる分散印刷システムにおいて、
前記プリントサーバは、前記クライアントコンピュータにより作成された印刷ジョブを一旦スプールするスプール部と、スプールされた印刷ジョブから各プリンタ別の印刷ジョブを生成する制御部とを備え、
該制御部は、前記複数プリンタ毎にジョブカウンタを備え、各プリンタと双方向通信を行い、プリンタに印刷ジョブを送信すると当該送信先プリンタ用のジョブカウンタをインクリメントし、
当該送信先プリンタから、印刷終了したページ数の情報を取得して、前記印刷ジョブで印刷要求したページ数と前記印刷終了したページ数との一致を判定し、一致する場合は正常として当該プリンタ用のジョブカウンタをディクリメントし、
不一致の場合は異常としてエラーを表示後に当該プリンタ用のジョブカウンタをディクリメントすることで、送信したジョブ数と各プリンタで処理が終了したジョブ数との差を前記ジョブカウンタ毎にそれぞれカウントし、
該カウント値に応じて各プリンタに印刷ジョブを割り当てることを特徴とする分散印刷システム。
【請求項２】
請求項１において、前記プリントサーバは、前記スプール部にスプールされた印刷ジョブを解析する解析部を備え、該解析部は、スプールされた印刷ジョブから印刷部数に関する情報を取得して前記制御部に渡し、該制御部は前記カウント値と前記印刷部数の情報に応じて各プリンタに印刷ジョブを割り当てることを特徴とする分散印刷システム。
【請求項３】
請求項１において、前記プリントサーバは、前記スプール部にスプールされた印刷ジョブを解析する解析部を備え、該解析部は、スプールされた印刷ジョブから印刷ページ数に関する情報を取得して前記制御部に渡し、該制御部は前記カウント値と前記印刷ページ数の情報に応じて各プリンタに印刷ジョブを割り当てることを特徴とする分散印刷システム。
【請求項４】
請求項１において、前記制御部は各プリンタと双方向通信を行い、プリンタが使用可能な状態にあるか否かの情報を取得し、前記カウント値に応じて使用可能な状態にあるプリンタに印刷ジョブを割り当てることを特徴とする分散印刷システム。
【請求項５】
請求項４において、前記プリントサーバは、前記スプール部にスプールされた印刷ジョブを解析する解析部を備え、該解析部は、スプールされた印刷ジョブから印刷部数に関する情報を取得して前記制御部に渡し、該制御部は前記カウント値と前記印刷部数の情報に応じて使用可能な状態にあるプリンタに印刷ジョブを割り当てることを特徴とする分散印刷システム。
【請求項６】
請求項４において、前記プリントサーバは、前記スプール部にスプールされた印刷ジョブを解析する解析部を備え、該解析部は、スプールされた印刷ジョブから印刷ページ数に関する情報を取得して前記制御部に渡し、該制御部は前記カウント値と前記印刷ページ数の情報に応じて使用可能な状態にあるプリンタに印刷ジョブを割り当てることを特徴とする分散印刷システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプリンタを用いて効率的にドキュメントを印刷する分散印刷システムに関し、特にクライアントコンピュータ上のアプリケーションソフトで作成されたドキュメントを、プリンタドライバ等でプリンタが理解できるイメージデータに変換し、これを印刷ジョブとしてプリントサーバで一旦スプールし、プリントサーバが監視するネットワーク上の複数のプリンタに対して印刷ジョブをページまたは部数単位で分割して送信し、複数のプリンタで印刷する分散印刷システムに関する。
【背景技術】
【０００２】
近年の急速なコンピュータの普及と、ネットワーク環境の整備充実に伴い、アプリケーションソフトにより作成されたドキュメントを、ネットワークに接続された共有プリンタにより印刷する方式が一般的になりつつある。このようなプリンタの使用形態が一般的になるにつれて、ネットワーク接続された複数台のプリンタをいかに有効に活用するかが新たな課題となっている。
【０００３】
このために大量の印刷ジョブを、複数ページ単位に分割したり、或いは同一のドキュメントを複数部数印刷する場合に、印刷ジョブを所要部数単位で分割し、これらの分割ジョブを複数台のプリンタに送信して実行することによって１台で印刷する場合よりも高速且つ効率的に印刷する方式が提案されている。
【０００４】
例えば１０００ページのドキュメントを２００ページ単位で分割し、５台のプリンタに送信することによって１台のプリンタで１０００ページ印刷するときより圧倒的に早く印刷を完了することが期待できる。このようなジョブの分割は、プリントサーバ型コンピュータ上でソフトウエア処理によってページレベルで分割したり、印刷ジョブ内の部数を書き換えることによって容易に複数部数ジョブを生成することができる。
【０００５】
なお、分散印刷技術については従来より様々な提案があり、特許文献１は印刷ジョブをプリンタ毎に分割する前に一括してプリンタデータに変換する方式を開示する。特許文献２は、全プリンタの一覧情報を取得し、印刷可能なプリンタを検出して印刷実行する方式を開示する。
【０００６】
また特許文献３は、印刷ジョブの属性を検出し、属性に応じて印刷ジョブを分割する方式を開示する。特許文献４は複数のプリンタサーバのジョブ情報からジョブのないサーバを検索し、印刷要求を転送する方式を開示する。特許文献５は複数のプリンタの印刷能力をプリンタ毎に取得し、能力に基づいてジョブを分散させる方式を開示する。
【０００７】
【特許文献１】特開２００２−３３３９６４号公報
【特許文献２】特開２００２−９１７３４号公報
【特許文献３】特開２００３−２２１７０号公報
【特許文献４】特開平６−３３２６４２号公報
【特許文献５】特開平１１−５３１２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら従来の分散印刷システムでは、本来の印刷デバイスの負荷分散とならず、プリンタによっては長時間印刷をし続ける場合が発生し、プリンタの使用率にバラツキが生じてしまう場合があった。
【０００９】
例えば、利用可能なプリンタがネットワーク上に５台存在するものと仮定して、２台のクライアントコンピュータからそれぞれジョブＡ及びＢがほぼ同時にプリントサーバにスプールされたとする。ジョブＡは例えば１００ページのドキュメントを３部印刷するジョブで、プリンタ１〜３に各１部ずつ印刷するジョブとして送信される。もうひとつのジョブＢは、１００ページのドキュメントを２部印刷するジョブであるが、まだプリンタ１〜３は印刷を開始していないのでプリンタ１と２は利用可能な空きのプリンタと見なされ、ジョブＢもプリンタ１と２に割り当てられてしまう。このようにジョブが連続してクライアントコンピュータから送信されるような場合は、複数のジョブが平均化してプリンタに割り当てられない場合が生じる。
【００１０】
本発明は上記のような従来の問題を解決した分散印刷システムを提供することを目的とする。
【００１１】
具体的には、本発明は、ネットワークに接続された複数のプリンタの空き状態、ジョブ数の状態を双方向通信を利用して把握し、プリンタの状態に応じてジョブを平均化して割り当てることにより、印刷業務の効率化を図ることが可能な分散印刷システムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記の目的を達成するために本発明は、ネットワークに接続されたクライアントコンピュータと、プリントサーバと、複数のプリンタとよりなる分散印刷システムにおいて、前記プリントサーバは、前記クライアントコンピュータにより作成された印刷ジョブを一旦スプールするスプール部と、スプールされた印刷ジョブから各プリンタ別の印刷ジョブを生成する制御部とを備え、該制御部は、前記複数プリンタ毎にジョブカウンタを備え、各プリンタと双方向通信を行い、プリンタに印刷ジョブを送信すると当該送信先プリンタ用のジョブカウンタをインクリメントし、当該送信先プリンタから、印刷終了したページ数の情報を取得して、前記印刷ジョブで印刷要求したページ数と前記印刷終了したページ数との一致を判定し、一致する場合は正常として当該プリンタ用のジョブカウンタをディクリメントし、不一致の場合は異常としてエラーを表示後に当該プリンタ用のジョブカウンタをディクリメントすることで、送信したジョブ数と各プリンタで処理が終了したジョブ数との差を前記ジョブカウンタ毎にそれぞれカウントし、該カウント値に応じて各プリンタに印刷ジョブを割り当てるようにしたことに一つの特徴がある。
【００１４】
本発明の他の特徴は、前記プリントサーバが、前記スプール部にスプールされた印刷ジョブを解析する解析部を備え、該解析部は、スプールされた印刷ジョブから印刷部数に関する情報を取得して前記制御部に渡し、該制御部は前記カウント値と前記印刷部数の情報に応じて各プリンタに印刷ジョブを割り当てることにある。
【００１５】
本発明の他の特徴は、前記プリントサーバが前記スプール部にスプールされた印刷ジョブを解析する解析部を備え、該解析部は、スプールされた印刷ジョブから印刷ページ数に関する情報を取得して前記制御部に渡し、該制御部は前記カウント値と前記印刷ページ数の情報に応じて各プリンタに印刷ジョブを割り当てることにある。
【００１６】
本発明の他の特徴は、前記制御部が各プリンタと双方向通信を行い、プリンタが使用可能な状態にあるか否かの情報を取得し、前記カウント値に応じて使用可能な状態にあるプリンタに印刷ジョブを割り当てることにある。
【発明の効果】
【００１７】
本発明によれば、各プリンタに対応するジョブカウンタを備え、プリントサーバと各プリンタ間で双方向通信を行い、各プリンタに送信したジョブ数と、各プリンタで終了したジョブ数との差をカウントし、該カウント値に応じて各プリンタに印刷ジョブを割り当てるようにしたので、ネットワークに接続されたプリンタの負荷が平均化され、印刷業務を効率よく行うことができるという効果がある。
【発明を実施するための最良の形態】
【００１８】
以下本発明に係る分散印刷システムを図面を参照して説明する。
【００１９】
図１は本発明に係る分散印刷システムの全体構成を示すもので、ネットワーク１００に接続されたクライアントコンピュータ２００、プリントサーバ３００及び複数のプリンタ４００，５００，６００からなる。もちろん、クライアントコンピュータ２００及びプリントサーバ３００が複数台接続される場合もあり、プリンタ４００〜６００の接続台数も任意である。
【００２０】
クライアントコンピュータ２００は、図２に示すように例えばワード（Ｗｏｒｄ）等のアプリケーションソフト２１０と、プリンタドライバ２２０を含む。一方、プリントサーバ３００は、複数台のクライアントコンピュータ２００からの印刷ジョブを受け付け、印刷ジョブを一旦スプール部３１０にスプールし、解析部３１１でジョブの内容を解析した後、制御部３１２でプリンタ毎の印刷コマンドを生成してプリンタ４００，５００，６００に送信する。
【００２１】
クライアントコンピュータ２００のアプリケーションソフト２１０で作成された文書データは、ＧＤＩ（Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）形式で、ページ毎にプリンタドライバ２２０に渡される。プリンタドライバ２２０はＧＤＩ形式からページ記述言語のジョブに変換する。図３はページ記述言語で記述された印刷ジョブを示すもので、印刷ジョブ７００は、ジョブ全体を制御するためのジョブヘッダ７１０と、各ページを制御するためのページヘッダ７２０と、各ページのイメージとなる文書７３０とにより構成される。文書が２頁以上の場合は、ページヘッダ７２０とページ文書７３０が交互に繰り返して配列されるので、このジョブ７００からページ数の情報７４０を取得することができる。
【００２２】
図４はジョブヘッダ７１０に含まれる情報を示し、印刷する文書の部数７１１、給紙部７１２、排紙部７１３、ステープル７１４、パンチ７１５等の詳細なジョブ制御の情報が記述されている。
【００２３】
図２の説明に戻り、プリントサーバ３００の制御部３１２は、各プリンタ４００，５００，６００に対応するジョブカウンタ３１３Ａ，３１３Ｂ，３１３Ｃを備えており、各プリンタに送信したジョブ数、印刷終了したジョブ数を監視し、各プリンタが有する印刷未済のジョブ数をカウントする。
【００２４】
図５はジョブカウンタ３１３Ａ，３１３Ｂ，３１３Ｃの更新の手順を示す。例えばプリンタＡにジョブを送信すると（ステップＳ１０１）、そのプリンタＡに対応するジョブカウンタ３１３Ａをインクリメントする（ステップＳ１０２）。
【００２５】
プリンタＡにジョブを送信した後、ステップＳ１０３において定期的にプリンタＡのジョブ状態の情報を取得する。プリンタの仕様によっても異なるが、一般的にはジョブ状態は、印刷待機中、印刷中、キャンセル終了、正常終了、異常終了程度の状態が考えられる。
【００２６】
ステップＳ１０４において印刷終了したか否か判定され、ＮＯの場合はステップＳ１０３に戻り、ＹＥＳの場合はステップＳ１０５に進む。ステップＳ１０５では、プリンタＡで印刷終了したページ数の情報を取得し、ステップＳ１０６では、ジョブで印刷要求したページ数とプリンタＡにより実際に印刷終了したページ数が一致しているか否かを判定することにより、ジョブで要求した全ページの印刷が終了したか否かを判定する。この判定がＹＥＳの場合は、正常に印刷ジョブが終了したものと判断して（ステップＳ１０７）、プリンタＡのジョブカウンタをディクリメントする。一方、ステップＳ１０６の判定がＮＯの場合は、印刷ジョブが異常終了したものと判断して、例えば再度ユーザに印刷を促す等の表示が行われることもあるが、一応ジョブは終了したものとしてジョブカウンタをディクリメントする。
【００２７】
本発明は、上記のようにして時々刻々更新されるジョブカウンタの情報を参照しながら、新しく受け付けた印刷ジョブを各プリンタに割り当てるものであり、以下本発明システムにおける印刷ジョブ生成の手順を図６を参照して説明する。
【００２８】
まず、ステップＳ２０１において、複数台のクライアントコンピュータ２００からの印刷ジョブは、一旦プリントサーバ３００のスプール部３１０に格納される。ステップＳ２０２において、制御部３１２は、プリンタとネットワークを介して双方向通信を行い、プリンタの状態を取得する。プリンタの仕様によっても異なるが、一般的には印刷中、障害発生中、オンライン程度の状態が考えられる。プリンタの電源が入っていなければ通信を行えないため、更に電源断という状態も加わる。この結果、制御部３１２はネットワークに接続されたプリンタの中で、利用可能なプリンタと利用不可能なプリンタの情報を取得する。この場合、利用可能なプリンタの定義を、いく通りかに設定できるようにしておく。例えば直ぐに印刷できるプリンタという意味ではオンライン状態のプリンタだけになるが、印刷が終われば印刷中のプリンタも利用できるようになる。短時間で終わるジョブを印刷中なのであれば候補とすることも可能である。また、障害発生中のプリンタでも用紙ジャム等の軽微な障害であれば用紙を取り除くことで直ぐ利用できるプリンタと考えることが可能である。電源断のプリンタも電源を入れれば利用できるプリンタと考えることが可能である。このようにプリンタの状態から利用可能なプリンタを選出する。
【００２９】
次にステップＳ２０３において、使用可能なプリンタのジョブカウンタ情報を取得する。前述のように、ネットワークに接続されたプリンタ４００，５００，６００に対応するジョブカウンタ３１３Ａ，３１３Ｂ，３１３Ｃに設けられており、各カウンタにはそれぞれ対応するプリンタで実行すべき印刷ジョブ数が時々刻々更新され、格納されているので、制御部３１２はこれらのカウンタ３１３Ａ，３１３Ｂ，３１３Ｃの値を読み取ることにより、使用可能なプリンタのジョブカウンタ情報を取得することができる。
【００３０】
更にステップＳ２０４では、印刷ジョブから印刷部数又はページ数情報を取得する。すなわち、スプール部３１０にスプールされたジョブがジョブ解析部３１１に渡され、ジョブ解析部３１１がページ記述言語を解析して、図４に示した印刷部数情報７１１及び図３に示したページ数情報７４０の一方又は両方を取得する。
【００３１】
この実施例では、ジョブ解析部３１１がページ記述言語を解析して自動的に部数情報及びページ情報を取得する例を示したが、これらの情報はユーザがマニュアルで指定してもよい。
【００３２】
次にステップＳ２０５では、ステップＳ２０２により取得した使用可能なプリンタ数、ステップＳ２０３で取得した各プリンタが実行すべき未済のジョブ数、及びステップＳ２０４で取得した印刷部数及びページ数の情報より、各プリンタのジョブ数が平均化するように印刷ジョブを各プリンタに割り当て、更にステップＳ２０６で各プリンタに送信する。例えばジョブカウンタ３１３Ａ，３１３Ｂ，３１３Ｃの情報を参照して、全てのプリンタのジョブ数が平均化されるようにジョブを各プリンタに割り当てる。
【００３３】
例えばプリンタ４００に４個、プリンタ５００に３個、プリンタ６００に３個のジョブがある場合は、プリンタ５００とプリンタ６００にジョブを分散し、平均してジョブが4個になるようにする。
【００３４】
またプリンタ４００に４個、プリンタ５００に３個、プリンタ６００に２個のジョブがある場合はプリンタ５００とプリンタ６００にジョブを分散し、それぞれ４個、４個、３個にしてもよいし、プリンタ６００だけに送信して４個、３個、３個にしてもよい。
【００３５】
また、印刷部数７１１に関する情報を参照する場合、例えば部数が１０部で、使用可能なプリンタがプリンタ４００と５００の２台であった場合、２台に均等に５部ずつ割り当てる。ステップＳ２０６において、制御部３１２はプリンタ４００に部数７１１を５部に書き換えて送信し、プリンタ５００にも部数７１１を５部に書き換えて送信する。
【００３６】
また、ページ数７４０の情報を参照する場合、例えばページ数７４０が１０００ページで、使用可能なプリンタがプリンタ４００、５００の２台であった場合、均等に分散するのであればそれぞれに５００ページずつ割り当てる。制御部３１２は、ステップＳ２０６において、プリンタ４００に、ジョブヘッダ７１０と１ページから５００ページまでのページヘッダ７２０とページ文書７３０だけにジョブを再構成して送信し、プリンタ５００には同様にジョブヘッダ７１０と５０１ページから１０００ページまでのページヘッダ７２０とページ文書７３０だけにジョブを再構成して送信する。
【００３７】
上記の実施例では、ジョブカウンタ３１３Ａ，３１３Ｂ，３１３Ｃでジョブ数をカウントしたが、プリンタ毎に送信したジョブのページ数をカウントしてもよい。この場合は、印刷ジョブを受け付けた後、制御部３１２は使用可能なプリンタのジョブカウンタ情報を取得し、ジョブのページ数が平均化するように各プリンタにジョブを割り当てる。
【００３８】
例えばプリンタ４００に合計４００ページ、プリンタ５００に合計３００ページ、プリンタ６００に合計３００ページのジョブがある場合に、２００ページのジョブが印刷された場合、プリンタ５００とプリンタ６００にジョブを１００ページずつ分散し、平均ページ数が4００ページになるようにする。またプリンタ４００に４００ページ、プリンタ５００に３００ページ、プリンタ６００に２００ページのジョブがある場合はプリンタ５００に５０ページ、プリンタ６００に１５０ページを分散し、それぞれ４００ページ、３５０ページ、３５０ページにしてもよいし、プリンタ６００だけに送信して４００ページ、３００ページ、４００ページにしてもよい。
【００３９】
また、利用可能なプリンタの情報を参照する場合、利用可能なプリンタのみのジョブが平均化されるようにジョブを割り当てる。例えばプリンタ４００に合計４００ページ、プリンタ５００に合計３００ページ、プリンタ６００に合計３００ページのジョブがある場合に、２００ページの印刷ジョブを受け付けると、プリンタ５００もプリンタ６００も利用可能なプリンタであればプリンタ５００とプリンタ６００にジョブを１００ページずつ分散し、平均ページ数が４００ページになるようにすればよい。プリンタ４００とプリンタ６００だけが利用可能なプリンタである場合はプリンタ４００に５０ページ、プリンタ６００に１５０ページずつ分散し、平均ページ数が４５０ページになるようにする。
【００４０】
以上説明した本発明システムによれば、制御部３１２がプリンタにジョブを送信する際に、プリンタ毎に送信したジョブのジョブ数又はページ数をカウントするカウンタを備え、各プリンタにジョブを送信する毎に、送信ジョブ数又はページ数だけ、そのプリンタのカウンタをインクリメントし、さらにその後、制御部３１２はプリンタと通信を行い、プリンタのジョブ状態情報を取得して、プリンタのジョブ状態がキャンセル終了、正常終了、異常終了等の終了系の状態になったら、カウンタから送信した際にインクリメントした数をディクリメントするので、常に複数のジョブが平均化してプリンタに割り当てられることになる。
【００４１】
その際に、解析部３１１がページ記述言語を解析して印刷部数又はページ数に関する情報を取得し、取得した情報をジョブ生成に利用する場合は、制御部３１２がプリンタ数と印刷部数又はページ数から自動的に各プリンタのジョブを生成するから、アプリケーションからの1回の印刷指示で、接続されたプリンタの台数やそれぞれに割り当てる部数を考慮することなく、欲しい部数を指定するだけで、複数のプリンタに分散して印刷することができるようになり、ユーザの利便性、使い勝手あるいは印刷業務効率を高め得るという効果がある。
【００４２】
また、プリントサーバがプリンタと双方向通信を行い、プリンタ状態の情報を取得して、利用可能なプリンタだけを対象として分散印刷した場合は、ユーザの利便性、使い勝手あるいは印刷業務高率をさらに高め得るという効果がある。
【００４３】
以上本発明の一実施例について説明したが、本発明の基本的な考え方を変更しない範囲内で種々の変形を行うことは容易である。例えばネットワークに接続されたプリンタの印刷速度に差がある場合は、その情報を予め制御部３１２のメモリに格納しておき、印刷速度に応じた分散率を算定し、前述のステップＳ２０５において分散率に応じた部数、ページ数を各プリンタに割り当てるようにすることもできる。
【図面の簡単な説明】
【００４４】
【図１】本発明に係る分散印刷システムの全体構成図である。
【図２】本発明システムにおけるクライアントコンピュータ及びプリントサーバの構成概略図である。
【図３】印刷ジョブの説明図である。
【図４】ジョブヘッダの説明図である。
【図５】本発明システムにおけるジョブカウンタの更新の手順の一実施例を示すフローチャートである。
【図６】本発明システムにおけるジョブ生成手順の一実施例を示すフローチャートである。
【符号の説明】
【００４５】
１００：ネットワーク、２００：クライアントコンピュータ、２１０：アプリケーション、
２２０：プリンタドライバ、３００：プリントサーバ、３１０：スプール部、
３１１：ジョブ解析部、３１２：制御部、４００：プリンタＡ、５００：プリンタＢ、
６００：プリンタＮ、７００：ページ記述言語、７１０：ジョブヘッダ、７１１：部数、
７１２：給紙部、７１３：排紙部、７１４：ステープル、７１５：パンチ、
７２０：ページヘッダ、７３０：ページ文書、７４０：ページ数、
【図１】
0004485426.tif 000002
【図２】
0004485426.tif 000003
【図３】
0004485426.tif 000004
【図４】
0004485426.tif 000005
【図５】
0004485426.tif 000006
【図６】
0004485426.tif 000007