(57)【要約】【課題】タンデム印刷機能に必要な情報を印刷装置に集約し、これによって効率的な処理を実現する。【解決手段】主印刷装置と１以上の副印刷装置とに分割して印刷ジョブを実行するように要求する印刷要求部と、主印刷装置と副印刷装置とに関する装置情報を予め格納する主印刷装置から装置情報を取得する装置情報取得部と、要求された印刷ジョブと取得した装置情報から主印刷装置ならびに副印刷装置が実行すべき印刷ジョブを決定する指示決定部と、決定した印刷ジョブに基づき主印刷装置が実行すべき印刷ジョブの制御命令を主印刷装置へ送信する主印刷装置制御部と、決定した印刷ジョブに基づき副印刷装置が実行すべき印刷ジョブの制御命令を副印刷装置へ送信する副印刷装置制御部とを備える印刷制御プログラム【選択図】図１
2006330828.tif 000002
【特許請求の範囲】
【請求項１】
主印刷装置と１以上の副印刷装置とに分割して印刷ジョブを実行するように要求する印刷要求部と、
主印刷装置と副印刷装置とに関する装置情報を予め格納する主印刷装置から装置情報を取得する装置情報取得部と、
要求された印刷ジョブと取得した装置情報から主印刷装置ならびに副印刷装置が実行すべき印刷ジョブを決定する指示決定部と、
決定した印刷ジョブに基づき主印刷装置が実行すべき印刷ジョブの制御命令を主印刷装置へ送信する主印刷装置制御部と、
決定した印刷ジョブに基づき副印刷装置が実行すべき印刷ジョブの制御命令を副印刷装置へ送信する副印刷装置制御部と
を備える印刷制御プログラム。
【請求項２】
主印刷装置へ送信する制御命令と、副印刷装置へ送信する制御命令との体系が共通である請求項１記載のプログラム。
【請求項３】
主印刷装置へ送信する制御命令と、副印刷装置へ送信する制御命令とは、それぞれ各装置に対する印刷準備の指示を含んで断続的に送信される一連の命令からなり、
主印刷装置制御部が、印刷準備の指示を送信し、かつ副印刷装置制御部が、印刷準備の指示を送信した後に、
主印刷装置制御部が、後続の制御命令を送信し、かつ副印刷装置制御部が、後続の制御命令を送信する請求項１記載のプログラム。
【請求項４】
前記印刷準備の指示が、印刷待機状態に復帰するまでに時間を要する省電力モードから主印刷装置または副印刷装置を復帰させる制御命令である請求項３記載のプログラム。
【請求項５】
前記印刷要求部が、複数部の印刷からなる印刷ジョブを要求し、
前記指示決定部が、主印刷装置の印刷ジョブの部数と副印刷装置の印刷ジョブの部数を各装置の印刷ジョブとして決定する請求項１記載のプログラム。
【請求項６】
前記印刷要求部が、複数ページの印刷からなる印刷ジョブを要求し、
前記指示決定部が、主印刷装置で印刷するページと副印刷装置で印刷するページを各装置の印刷ジョブとして決定する請求項１記載のプログラム。
【請求項７】
使用者への警告を発する報知部をさらに備え、
前記装置情報取得部は、印刷要求部が印刷ジョブの要求をする度に主印刷装置に格納された副印刷装置への命令送信先を装置情報として取得し、
前記報知部は、取得した命令送信先が以前の印刷ジョブ要求時に取得した命令送信先と異なる場合にその旨を報知する請求項１記載のプログラム。
【請求項８】
前記装置情報取得部が、主印刷装置と副印刷装置とに配分する印刷ジョブの配分比率を算出するための情報を取得し、
指示決定部が、取得した情報に基づいて算出した配分比率に応じて各印刷ジョブを決定する請求項１記載のプログラム。
【請求項９】
前記装置情報取得部が、複数の印刷装置に配分する印刷ジョブの配分比率を各副印刷装置についてそれぞれ算出するための情報を取得し、
指示決定部が、取得した情報に基づいて各副印刷装置について算出した配分比率に応じて各印刷ジョブを決定する請求項８記載のプログラム。
【請求項１０】
前記装置情報取得部が、各装置の処理能力を装置情報として取得する請求項１０記載のプログラム。
【請求項１１】
前記処理能力が、各装置に装着されたオプション機器の処理能力である請求項１０記載のプログラム。
【請求項１２】
前記処理能力が、各装置がサポートするプリンタ言語の種類である請求項１記載のプログラム。
【請求項１３】
各装置が要求する認証データを予め設定する認証データ設定部と、
設定した認証データを対応する装置へ送信する制御命令に付加する認証データ付加部とをさらに備える請求項１記載のプログラム。
【請求項１４】
各装置のオプション機器の構成情報を取得するよう使用者に要求させる構成取得要求部をさらに備え、
前記装置情報取得部が、構成取得要求部からの要求に応じて、オプション機器の構成情報と共に、副印刷装置への命令送信先を主印刷装置から取得する請求項１記載のプログラム。
【請求項１５】
各装置の状態を監視する状態監視部をさらに備え、
前記装置情報取得部が、副印刷装置への命令送信先を主印刷装置から取得し、
前記状態監視部が、命令送信先を取得した副印刷装置の状態を監視する請求項１記載のプログラム。
【請求項１６】
前記状態監視部は、印刷要求部から印刷ジョブの要求があった後、印刷ジョブの制御命令を各装置に送信するまで各装置の状態を監視し、
当該装置に対応する主印刷装置制御部もしくは副印刷装置制御部は、各装置の監視結果に基づいて印刷ジョブの処理に支障がある装置の印刷ジョブの制御命令の送信を留保し、
さらに、前記状態監視部が、送信を留保した装置が印刷ジョブの処理に支障のない状態に復帰するまで当該装置の状態を監視し、
前記主印刷装置制御部もしくは副印刷装置制御部は、復帰した装置の印刷ジョブの制御命令の送信を再開する請求項１５記載のプログラム。
【請求項１７】
送信を留保した装置に関する警告を使用者に報知する報知部をさらに備える請求項１６記載のプログラム。
【請求項１８】
前記状態監視部は、印刷要求部から印刷ジョブの要求があった後、印刷ジョブの制御命令を各装置に送信するまで各装置の状態を監視し、
前記指示決定部は、各装置の監視結果に基づいて印刷ジョブの処理に支障がある装置への印刷ジョブを処理に支障のない他の装置が実行すべき印刷ジョブとして決定する請求項１５記載のプログラム。
【請求項１９】
他の装置に制御命令の送信先を変更された装置に関する警告を使用者に報知する報知部をさらに備える請求項１８記載のプログラム。
【請求項２０】
前記装置情報取得部が装置情報を取得する副印刷装置のうち、印刷ジョブを実行させる対象から除外する副印刷装置を指定する非選択装置指定部をさらに備え、
前記指示決定部が、非選択装置指定部に指定された副印刷装置を除く各装置に対する印刷ジョブを決定する請求項１記載のプログラム。
【請求項２１】
前記非選択装置指定部が、特定の使用者のみが副印刷装置を指定することができるように構成される請求項２０記載のプログラム。
【請求項２２】
各装置への制御命令が、当該装置が主印刷装置か副印刷装置かを識別するための識別命令を含む請求項１記載のプログラム。
【請求項２３】
主印刷装置と１以上の副印刷装置とに分割して処理させる印刷ジョブを要求する工程と、
主印刷装置と副印刷装置とに関する装置情報を予め格納する主印刷装置から装置情報を取得する工程と、
要求された印刷ジョブと取得した装置情報から主印刷装置ならびに副印刷装置が実行すべき印刷ジョブを決定する工程と、
決定した印刷ジョブに基づき主印刷装置が実行すべき印刷ジョブの制御命令を主印刷装置へ送信する主印刷装置送信工程と、
決定した指示に基づき副印刷装置が実行すべき印刷ジョブの制御命令を副印刷装置へ送信する副印刷装置送信工程と
をコンピュータに実行させることを特徴とする印刷装置の制御方法。
【請求項２４】
主印刷装置送信工程と副印刷装置送信工程とが、
対応する装置へ送信する印刷ジョブの一連の制御命令を順次生成する工程と、
生成した制御命令を記憶する工程と、
記憶した制御命令を装置へ送信し、送信済み制御命令を管理する工程とをそれぞれ備える請求項２３記載の制御方法。
【請求項２５】
複数のスレッドを生成してスレッドごとの処理を非順次に実行するマルチタスク環境下で制御が実行され、
主印刷装置送信工程と各副印刷装置への副印刷装置送信工程とが、各装置に対応して生成されるスレッド内で処理される請求項２３記載の制御方法。
【請求項２６】
請求項１記載のプログラムを備えてなる印刷制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、印刷制御プログラム、印刷装置の制御方法および前記プログラムを備えてなる印刷制御装置に関する。
【背景技術】
【０００２】
近年、印刷ジョブを複数の印刷装置に分配して並行処理させることにより、短時間で印刷ジョブを処理するタンデム印刷機能を用いた印刷システムが普及しつつある。タンデム印刷機能は、例えば、マスター（主印刷装置）側のデジタル複合機で複数部のコピーを実行した場合に、マスターとスレーブ（副印刷装置）とでコピー部数を分割し、並行してコピー処理を行う機能である。あるいは、ホストから受信した印刷データを展開して複数部の印刷を出力する場合に、マスターとスレーブとで印字部数を分割し、並行して印刷処理を行う機能である。前記の印刷システムにおいて、各印刷装置は互いに一対一で接続され、あるいはネットワークを介して互いに接続されている。
【０００３】
印刷ジョブをより効率的に処理するために、複数部数の印刷を行う際に対象とする印刷装置を決定し、各装置の印刷能力を判断して印刷能力に応じた分散処理を行う手法が開示されている（例えば、特許文献１参照）。
【特許文献１】特開２００２−３４２０５５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
タンデム印刷機能は、印刷処理をより効率化するために提供される機能であるが、従来の技術にはより効率的な処理を提供するために改善すべき余地があった。ここで、効率化とは印刷処理に要する時間の短縮、印刷装置や印刷制御装置の設置、設定に要する手間の低減、処理エラーのリカバリーの手間の低減、印刷ジョブの実行を要求する際に使用者が印刷ジョブの設定を行う手間の低減のいずれか１を含む広い意味での効率化である。
【０００５】
まず、印刷装置や印刷制御装置の設置あるいは構成変更の際に、タンデム印刷機能を使うために用いる各種の情報の設定が必要であった。しかも、プリンタとしてタンデム印刷機能を使うために必要な情報は、印刷制御装置（ホスト）側で設定して保持し、コピー機としてタンデム印刷機能を使うために必要な情報は印刷装置（複合機）側で設定して保持していた。これは、実行する印刷ジョブの設定処理が、プリンタの場合はホスト側で行われ、コピーの場合はホストを介さずに複合機側で行われるため、それぞれ設定処理を行う側で情報が取得しやすいからである。しかし、前記情報は重複する部分が多く、システム・アドミニストレータや設置作業者など、システムを管理する管理者に対する設定の負担が大きかった。
【０００６】
さらに、設定後に関連する装置やネットワーク等の接続環境に変更があった場合にこれらの情報を更新しなければ、各装置やネットワークの構成に応じた効率的な処理が実現されない場合があった。そればかりでなく、前記情報が適切に更新されないと、実際には処理できない印刷ジョブが設定されてしまい、処理エラーが発生し、エラー解除のために使用者の手を煩わせるといったような結果に陥ることもあった。
【０００７】
本発明は、上記のような事情に鑑みてなされたものであり、タンデム印刷機能に必要な情報を装置情報として印刷装置に集約し、これによって効率的な処理を実現することのできる印刷システムに適用可能な印刷制御プログラムあるいは制御方法を提供するものである。
【課題を解決するための手段】
【０００８】
この発明は、主印刷装置と１以上の副印刷装置とに分割して印刷ジョブを実行するように要求する印刷要求部と、主印刷装置と副印刷装置とに関する装置情報を予め格納する主印刷装置から装置情報を取得する装置情報取得部と、要求された印刷ジョブと取得した装置情報から主印刷装置ならびに副印刷装置が実行すべき印刷ジョブを決定する指示決定部と、決定した印刷ジョブに基づき主印刷装置が実行すべき印刷ジョブの制御命令を主印刷装置へ送信する主印刷装置制御部と、決定した印刷ジョブに基づき副印刷装置が実行すべき印刷ジョブの制御命令を副印刷装置へ送信する副印刷装置制御部とを備える印刷制御プログラムを提供する。
【０００９】
ここで、印刷要求部は、例えば、ＧＵＩを用いて印刷ジョブに関する各種の設定を使用者に行わせた後、印刷ジョブの実行ボタンをクリックさせたときに、プログラム処理として印刷ジョブの要求が受け付けられ、印刷ジョブの設定に従った処理がされるようにトリガを与えるブロックである。また、装置情報とは、タンデム印刷を実行する際の各装置への印刷ジョブの設定に必要な情報である。装置情報は、例えば、各装置に制御命令を送信する際の送信先を示す情報を含んでいてもよい。あるいは、各装置のオプション機器の構成情報を含んでいてもよい。あるいは、各装置の印刷処理速度に関する情報を含んでいてもよい。
【００１０】
また、異なる観点から、この発明は、主印刷装置と１以上の副印刷装置とに分割して処理させる印刷ジョブを要求する工程と、主印刷装置と副印刷装置とに関する装置情報を予め格納する主印刷装置から装置情報を取得する工程と、要求された印刷ジョブと取得した装置情報から主印刷装置ならびに副印刷装置が実行すべき印刷ジョブを決定する工程と、決定した印刷ジョブに基づき主印刷装置が実行すべき印刷ジョブの制御命令を主印刷装置へ送信する工程と、決定した指示に基づき副印刷装置が実行すべき印刷ジョブの制御命令を副印刷装置へ送信する工程とをコンピュータに実行させることを特徴とする印刷装置の制御方法を提供する。
また、この発明は、前記プログラムを備えてなる印刷制御装置を提供する。
【発明の効果】
【００１１】
この発明のプログラムは、主印刷装置と副印刷装置とに関する装置情報を予め格納する主印刷装置から装置情報を取得する装置情報取得部と、要求された印刷ジョブと取得した装置情報から主印刷装置ならびに副印刷装置が実行すべき印刷ジョブを決定する指示決定部とを備えるので、コピー及びプリンタの印刷ジョブの決定に必要な機種情報を予め主印刷装置に集約して格納しておくことができる。従って、情報を設定する手間が低減できるばかりでなく、情報が集約されるので一部の情報の更新を忘れて不整合を生じることがない。引いては、情報設定の不整合に伴う非効率的な処理や処理エラーの発生を回避することができ、効率的な印刷処理を実現することができる。
【００１２】
主印刷装置へ送信する制御命令と、副印刷装置へ送信する制御命令との体系が共通であってもよい。このようにすれば、各装置に応じて異なる命令体系に変換する処理が不要になり、処理を単純にすることができる。従って、処理に要する時間が短縮できる。
【００１３】
また、主印刷装置へ送信する制御命令と、副印刷装置へ送信する制御命令とは、それぞれ各装置に対する印刷準備の指示を含んで断続的に送信される一連の命令からなり、主印刷装置制御部が、印刷準備の指示を送信し、かつ副印刷装置制御部が、印刷準備の指示を送信した後に、主印刷装置制御部が、後続の制御命令を送信し、かつ副印刷装置制御部が、後続の制御命令を送信するようにしてもよい。このようにすれば、主印刷装置と副印刷装置へ並列的に印刷準備の指示を送信して両者を印刷開始待ちの状態にすることができるので、各装置が印刷データを受けて印刷を開始するまでの時間を短縮して効率的な印刷処理を実現することができる。
【００１４】
前記印刷準備の指示が、印刷待機状態に復帰するまでに時間を要する省電力モードから主印刷装置または副印刷装置を復帰させる制御命令であってもよい。省電力モードからの復帰には時間を要するので、例えば、主印刷装置と副印刷装置に印刷準備の指示を送信し、各装置を省電力モードから復帰させている間に、印刷データの生成など他の処理を印刷制御装置側で行うことができる。このように、各装置が印刷データを受けて印刷を開始するまでの時間を有効に利用して印刷処理に要する全体の時間時間を短縮し、効率的な印刷処理を実現することができる。
【００１５】
さらに、前記印刷要求部が、複数部の印刷からなる印刷ジョブを要求し、前記指示決定部が、主印刷装置の印刷ジョブの部数と副印刷装置の印刷ジョブの部数を各装置の印刷ジョブとして決定するようにしてもよい。このようにすれば、印刷ジョブを要求する度に、各装置への部数の配分を使用者に設定させなくても、機種情報から適当な部数を決定することができるので、使用者の設定の手間を低減することができる。あるいは、最適な部数の設定により効率的な印刷処理を実現することができる。
【００１６】
また、前記印刷要求部が、複数ページの印刷からなる印刷ジョブを要求し、前記指示決定部が、主印刷装置で印刷するページと副印刷装置で印刷するページを各装置の印刷ジョブとして決定するようにしてもよい。このようにすれば、印刷ジョブを要求する度に、各装置への印刷ページ数の配分を使用者に設定させなくても、機種情報から適当な印刷頁数を決定することができるので、使用者の設定の手間を低減することができる。あるいは、最適な印刷ページ数の設定により効率的な印刷処理を実現することができる。
【００１７】
さらにまた、使用者への警告を発する報知部をさらに備え、前記装置情報取得部は、印刷要求部が印刷ジョブの要求をする度に主印刷装置に格納された副印刷装置への命令送信先を装置情報として取得し、前記報知部は、取得した命令送信先が以前の印刷ジョブ要求時に取得した命令送信先と異なる場合にその旨を報知するようにしてもよい。このようにすれば、主印刷装置に格納された命令転送先が変更された際に、命令転送先の更新を使用者に知らせることができるので、使用者は、どの副印刷装置から印刷が出力されるのかを事前に知って出力を受け取ることができる。
【００１８】
前記装置情報取得部が、主印刷装置と副印刷装置とに配分する印刷ジョブの配分比率を算出するための情報を取得し、指示決定部が、取得した情報に基づいて算出した配分比率に応じて各印刷ジョブを決定するようにしてもよい。このようにすれば、各装置の印刷処理速度が異なる場合にも、装置情報取得部が印刷ジョブの配分比率を算出するための情報を取得して、指示決定部が適当な配分比率を決定するので、各装置への適当な印刷ジョブの配分比率を使用者に設定させる手間を低減することができ、あるいは、適当な配分比率を設定することにより効率的な印刷処理を実現することができる。
【００１９】
また、前記装置情報取得部が、複数の副印刷装置に配分する印刷ジョブの配分比率を各副印刷装置についてそれぞれ算出するための情報を取得し、指示決定部が、取得した情報に基づいて各副印刷装置について算出した配分比率に応じて各印刷ジョブを決定するようにしてもよい。このようにすれば、複数の副印刷装置がある場合に、単に主印刷装置と副印刷装置の配分比率を決定するだけでなく、各副印刷装置の配分比率をそれぞれ決定するので、より印刷処理の時間を短縮して効率的な処理を実現することができる。
【００２０】
さらにまた、前記装置情報取得部が、各装置の処理能力を装置情報として取得するようにしてもよい。このようにすれば、各装置の能力に応じて最も効率的な処理を実現するように各装置への印刷ジョブを決定することができる。あるいは、ある装置に処理不可能な印刷ジョブを判断し、当該装置を除外して印刷処理を配分することができる。従って、印刷ジョブを設定する際に各装置への適当な印刷ジョブの配分を使用者に設定させる手間を省略することができ、あるいは、適切な配分を設定することにより効率的な印刷処理を実現することができ、あるいは、ある装置に処理不可能な印刷ジョブが誤って配分されるといった事態を回避することができる。
【００２１】
前記処理能力が、各装置に装着されたオプション機器の処理能力であってもよい。このようにすれば、例えば、装着されていないオプションを必要とする機能を印刷ジョブとして要求させないようにすることが可能となる。あるいは、印刷ジョブに必要なオプションが装着されていない装置がある場合、その装置に印刷ジョブを配分しないように決定することができる。
あるいは、前記処理能力が、各装置がサポートするプリンタ言語（ＰＤＬ言語）の種類であってもよい。このようにすれば、例えば、主印刷装置がＰＣＬとＰＳ言語をサポートしており、副印刷装置がＰＣＬ言語のみをサポートしている場合、ＰＳ言語を使用する印刷ジョブは、副印刷装置に処理させず、主印刷装置のみで実行させるように決定することができる。したがって、処理能力の判定をせずに、副印刷装置に印刷ジョブを送って処理エラーが発生するといったような不具合の発生を回避することができる。
【００２２】
また、前記プログラムが、各装置が要求する認証データを予め設定する認証データ設定部と、設定した認証データを対応する装置へ送信する制御命令に付加する認証データ付加部とをさらに備えていてもよい。このようにすれば、各装置が印刷処理を行うために異なる認証データを必要とする場合にも、それぞれの装置に対応する認証データを制御命令に付加して送信することができるので、送信された認証データを用いて各装置の認証手続を行い、印刷処理を実行させることができる。
【００２３】
さらに、各装置のオプション機器の構成情報を取得するよう使用者に要求させる構成取得要求部をさらに備え、前記装置情報取得部が、構成取得要求部からの要求に応じて、オプション機器の構成情報と共に、副印刷装置への命令送信先を主印刷装置から取得するようにしてもよい。このようにすれば、設定が不可欠なオプション機器の構成情報と共に副印刷装置への命令送信先を取得することができるので、使用者が設定に要する操作の手間を低減することができる。
【００２４】
さらにまた、各装置の状態を監視する状態監視部をさらに備え、前記装置情報取得部が、副印刷装置への命令送信先を主印刷装置から取得し、前記状態監視部が、命令送信先を取得した副印刷装置の状態を監視するようにしてもよい。このようにすれば、主印刷装置だけでなく、副印刷装置についても状態監視を行うことができ、副印刷装置がタンデム印刷可能な状態にあるかどうかを知ることができる。
【００２５】
前記状態監視部は、印刷要求部から印刷ジョブの要求があった後、印刷ジョブの制御命令を各装置に送信するまで各装置の状態を監視し、当該装置に対応する主印刷装置制御部もしくは副印刷装置制御部は、各装置の監視結果に基づいて印刷ジョブの処理に支障がある装置の印刷ジョブの制御命令の送信を留保し、さらに、前記状態監視部が、送信を留保した装置が印刷ジョブの処理に支障のない状態に復帰するまで当該装置の状態を監視し、前記主印刷装置制御部もしくは副印刷装置制御部は、復帰した装置の印刷ジョブの制御命令の送信を再開するようにしてもよい。このようにすれば、印刷ジョブの制御命令を送信する前に、各出装置の状態を確認して、印刷ジョブの処理に支障がある状態の場合に、例えば、印刷ジョブを続行するかどうかを使用者に選択させることが可能となり、非効率な印刷処理の実行を回避することができる。従って、使用者にとっての利便性が向上する。
【００２６】
さらに、前記プログラムが、送信を留保した装置に関する警告を使用者に報知する報知部をさらに備えていてもよい。このようにすれば、装置の状態を使用者に知らせて、対応を促すことができる。
【００２７】
あるいはまた、前記状態監視部は、印刷要求部から印刷ジョブの要求があった後、印刷ジョブの制御命令を各装置に送信するまで各装置の状態を監視し、前記指示決定部は、各装置の監視結果に基づいて印刷ジョブの処理に支障がある装置への印刷ジョブを処理に支障のない他の装置が実行すべき印刷ジョブとして決定するようにしてもよい。このようにすれば、印刷ジョブの制御命令を送信する前に、各出装置の状態を確認して、印刷ジョブの処理に支障がある状態の場合に、当該装置以外に印刷出力することが可能となり、非効率な印刷処理の実行を回避することができる。従って、使用者にとっての利便性が向上する。
【００２８】
さらに、前記プログラムが、送信先を変更された装置に関する警告を使用者に報知する報知部をさらに備えていてもよい。このようにすれば、装置の状態を使用者に知らせて、対応を促すことができる。
【００２９】
前記装置情報取得部が装置情報を取得する副印刷装置のうち、印刷ジョブを実行させる対象から除外する副印刷装置を指定する非選択装置指定部をさらに備え、前記指示決定部が、非選択装置指定部に指定された副印刷装置を除く各装置に対する印刷ジョブを決定するようにしてもよい。このようにすれば、タンデム印刷可能な副印刷装置の中から適当な装置だけを選択することができるので、使用者の意図に応じた設定が可能になる。例えば、副印刷装置の数が多すぎて印刷出力を取りに行く手間がかかりすぎると使用者が判断した場合や、印刷装置が遠すぎて出力を取りに行く手間がかかりすぎると使用者が判断した場合に、判断に応じた設定に変更することができるので、使用者の利便性が向上する。
【００３０】
さらに、前記非選択装置指定部が、特定の使用者のみが副印刷装置を指定することができるようになっていてもよい。このようにすれば、副印刷装置を指定できる使用者を制限することにより、誤って指定が変更されることを回避することができる。ネットワークや装置の構成に明るくない一般のユーザーには、適切な装置の選択がむずかしいと想定され、設定変更可能な使用者の権限に制約を持たせた方が円滑な管理運用がなされる場合があるからである。
【００３１】
各装置への制御命令が、当該装置が主印刷装置か副印刷装置かを識別するための識別命令を含むようにしてもよい。このようにすれば、各装置の状態を監視する場合に、各装置が前記の識別命令に応じた識別情報を返信することにより、どの装置から送られた状態かを容易に識別することができる。例えば、主印刷装置が識別命令に識別子を含めて送り、各装置がその識別子を状態情報と共に返信するようにすれば、返信された状態情報がどの装置からのものかを容易に判断することができる。
【００３２】
また、異なる観点から、この発明は、主印刷装置と１以上の副印刷装置とに分割して処理させる印刷ジョブを要求する工程と、主印刷装置と副印刷装置とに関する装置情報を予め格納する主印刷装置から装置情報を取得する工程と、要求された印刷ジョブと取得した装置情報から主印刷装置ならびに副印刷装置が実行すべき印刷ジョブを決定する工程と、決定した印刷ジョブに基づき主印刷装置が実行すべき印刷ジョブの制御命令を主印刷装置へ送信する工程と、決定した指示に基づき副印刷装置が実行すべき印刷ジョブの制御命令を副印刷装置へ送信する工程とをコンピュータに実行させることを特徴とする印刷装置の制御方法を提供する。
【００３３】
主印刷装置送信工程と副印刷装置送信工程とが、対応する装置へ送信する印刷ジョブの一連の制御命令を順次生成する工程と、生成した制御命令を記憶する工程と、記憶した制御命令を装置へ送信し、送信済み制御命令を管理する工程とをそれぞれ備えていてもよい。
【００３４】
また、複数のスレッドを生成してスレッドごとの処理を非順次に実行するマルチタスク環境下で制御が実行され、主印刷装置送信工程と各副印刷装置への副印刷装置送信工程とが、各装置に対応して生成されるスレッド内で処理されるようにしてもよい。
また、この発明は、前記プログラムを備えてなる印刷制御装置を提供する。
【発明を実施するための最良の形態】
【００３５】
以下、図面を用いてこの発明をさらに詳述する。以下の説明により、この発明をよりよく理解することが可能であろう。なお、以下の説明によってこの発明が限定されるものではない。
【００３６】
図１は、この発明に係る印刷制御装置、主印刷装置、副印刷装置からなる印刷システムの構成を示すブロック図である。図１に示すように、この発明に係る印刷システムは、印刷制御装置１と主印刷装置であるプリンタ２と副印刷装置であるプリンタ３とが互いに接続されて構成される。各装置間の物理的な接続形態は、例えばイサーネット等のネットワークによるものであってもよいが、それに限定されず、例えば、ＵＳＢやＩＥＥＥ１３９４などであってもよい。また、ネットワークに接続された各装置がやり取りする通信方式は、例えばＴＣＰ／ＩＰを用いるものであってもよいがそれに限定されず、トークンリングなど他の方式であってもよい。図１は、副印刷装置が１台の例であるが、複数の副印刷装置が接続されていてもよい。
【００３７】
プリンタ２及びプリンタ３は、例えば、電子写真装置のデジタル複合機であってもよいが、それに限定されず、例えば、インクジェット方式のデジタル複合機であってもよい。また、印刷装置の何れかが画像読取機能を備えない単機能のプリンタであってもよい。また、印刷制御装置１は、例えばパーソナルコンピュータであってもよいが、それに限定されず、いわゆるワークステーションや情報端末機器であってもよい。
【００３８】
印刷制御装置１は、印刷すべき情報を作成するアプリケーションプログラム１４、アプリケーションで作成した情報をプリンタ２及び３に印刷させるために印刷装置を制御する印刷制御プログラム１１を含む。また、印刷装置の状態を監視し、必要に応じて図示しない表示部に印刷装置の状態を表示するプログラムであるステータスモニタ１５を含んでいてもよい。
【００３９】
印刷制御プログラム１１は、プリンタ２および３がサポートするＰＤＬ言語の種類に応じてプリンタに送信する制御命令（ＰＪＬまたはプリンタジョブ言語）を生成するプリンタドライバと、プリンタドライバで生成した制御命令をプリンタへ送信すると共に印刷データの生成するスレッドを起動し、プリンタからの情報を受信してプリンタドライバやステータスモニタ１５に渡す通信ドライバ１３から構成される。図１において、プリンタドライバは、ＰＣＬ言語をサポートするプリンタのためのＰＣＬプリンタドライバ１２とＰＳ言語をサポートするプリンタのためのＰＳプリンタドライバ１６の２種類のプリンタドライバからなる。
【００４０】
ＰＣＬプリンタドライバ１２、ＰＳプリンタドライバ１６、通信ドライバ１３、アプリケーションプログラム１４、ステータスモニタ１５は、それぞれ印刷制御装置１が提供するマルチタスク・オペレーティングシステム環境下で独立したタスクとして動作する。さらに、各タスクは、必要に応じてスレッドを生成し、生成された各スレッドが独立して処理を実行する。印刷制御装置１が提供するマルチタスク・オペレーティングシステムの一例は、ウインドウズ（登録商標）であるが、これに限らず、他のオペレーティングシステム、例えばマックＯＳやリナックス（登録商標）であってもよい。
【００４１】
この発明の印刷要求部、装置情報取得部、指示決定部は、ＰＣＬプリンタドライバ１２あるいはＰＳプリンタドライバ１６の機能の一部として実現される。そして、主印刷装置制御部および副印刷装置制御部は、通信ドライバ１３の機能の一部として実現される。この発明を実現するハードウェア構成としては、例えば、印刷制御装置１がパーソナルコンピュータであり、パーソナルコンピュータのＣＰＵがＰＣＬプリンタドライバ１２、ＰＳプリンタドライバ１６、通信ドライバ１３、アプリケーションプログラム１４、ステータスモニタ１５のそれぞれのプログラムを実行することによって実現される。各プログラムは、例えばパーソナルコンピュータが備えるハードディスクドライブに格納され、パーソナルコンピュータの電源投入時にＲＡＭ上に転送され、その内容に従ってＣＰＵが処理を実行するように構成される。あるいは、各プログラムは、ＣＤやＤＶＤなどの媒体に記録されて提供され、それらの記録媒体の内容を読み取ってＲＡＭ上に転送されてもよい。さらにまた、各プログラムはフラッシュメモリなどの記憶素子に格納され、格納されたプログラムをＣＰＵが直接フェッチし、あるいは一旦ＲＡＭ上に転送されて、ＲＡＭ上のプログラムをＣＰＵがフェッチして実行されるものであってもよい。
【００４２】
図２は、図１に示すＰＣＬプリンタドライバ１２、ＰＳプリンタドライバ１６あるいは通信ドライバ１３の内部構成を示すブロック図である。図２（ａ）は、ＰＣＬプリンタドライバ１２あるいはＰＳプリンタドライバ１６の内部構成を示し、図２（ｂ）は、通信ドライバ１３の内部構成を示すブロック図である。
【００４３】
図２（ａ）に示すように、ＰＣＬプリンタドライバ１２およびＰＳプリンタドライバ１６は、いずれも、アプリケーションプログラム１４とやり取りを行うアプリケーション通信部２０１、印刷制御装置１の図示しない表示画面およびキーボードやマウスの入力部を用いて使用者にＧＵＩを提供し、実行する印刷ジョブの設定を使用者に行わせると共に印刷要求部として機能するプリンタドライバ印刷設定部２０３、プリンタ２，３に関する情報をマスタープリンタ２から取得する装置情報取得部２０４、プリンタ２および３の状態を監視して取得し、状態監視部として機能する状態取得部２０５、生成したプリンタコマンドの送信先のプリンタの機種情報を保持する出力先情報保持部２０７、印刷設定部２０３から要求された印刷ジョブをプリンタ２および３に印刷させるためのＰＪＬを生成する指示決定部としてのプリンタコマンド生成部２０２、印刷ジョブの続行／キャンセルを操作させる印刷続行／キャンセル操作部２０６から構成される。ここで、印刷要求部、装置情報取得部、指示決定部はこの発明の必須の構成要素である。
【００４４】
さらに、プリンタドライバ印刷設定部２０３は、認証データを予め設定する認証データ設定部としての機能を含んでいてもよい。さらにまた、プリンタドライバ印刷設定部２０３は、各装置のオプション機器の構成情報の取得を使用者に要求させる構成情報取得要求部としての機能を含んでいてもよい。
【００４５】
また、図２（ｂ）に示すように、通信ドライバ１３は、ＰＣＬプリンタドライバ１２またはＰＳプリンタドライバ１６が生成したプリンタコマンドを取得するプリンタコマンド取得部２１１、取得したプリンタコマンドの内容を解析し、解析結果に応じたプリンタコマンドを送信すると共に、各プリンタへの印刷データを作成するスレッドを生成するプリンタコマンド解析部２１２、生成されたプリンタコマンドを各プリンタへ送信するプリンタコマンド送信部２１４、順次プリンタへ送信されるプリンタコマンドの通信手順の進行を管理し、主印刷装置制御部および１以上の副印刷装置制御部として機能するプリンタコマンド送信管理部２１３から構成される。また、プリンタコマンド送信部２１４は、設定された認証データを対応する装置へ送信するプリンタコマンドに付加する認証データ付加部としての機能を含んでいてもよい。ここで、主印刷装置制御部と１つの副印刷装置制御部は、この発明の必須の構成要素である。以上が、印刷制御装置１の構成の説明である。
【００４６】
図３は、使用者に印刷ジョブの設定を行わせるために図２（ａ）の印刷設定部２０３が認証データ設定部として提供する機能設定画面の一例を示す説明図である。また、図５は、図３に示す機能設定画面の「ユーザー認証」ボタン３０５がクリックされることにより表示される設定画面の一例を示す説明図である。使用者は、図３の機能設定画面上で実行させる印刷ジョブの設定を行った後に、「ＯＫ」ボタンをクリックする。印刷設定部２０３は、「ＯＫ」ボタンがクリックされたことを検出すると、選択されたプリンタドライバ（一例として、この説明ではＰＣＬプリンタドライバ１２とする）に対して印刷ジョブの実行を要求する。要求を受けたＰＣＬプリンタドライバ１２は、印刷ジョブ開始の処理を行う。以下に、印刷制御プログラム１１の処理の手順について説明する。
【００４７】
図９は、図１のＰＣＬプリンタドライバ１２あるいはＰＳプリンタドライバ１６が実行する、印刷ジョブ開始の処理手順の一例を示すフローチャートである。以下の説明は、ＰＣＬプリンタドライバ１２について説明するが、ＰＳプリンタドライバ１６についても処理の手順は同じである。図９に示すように、ＰＣＬプリンタドライバ１２は、印刷ジョブ開始に関する制御命令（ＰＪＬ）を生成する（ステップＳ９０１）。ここで生成されるＰＪＬは、プリンタに印刷ジョブを実行させるために印刷制御装置が送信する制御命令である。図２０は、図１の通信ドライバ１３からプリンタ２または３へ、印刷ジョブ開始時に送信されるＰＪＬのデータの一例を示す説明図である。図２０に示すように、ＰＪＬは、プリンタに対する複数の制御命令から構成される。その命令体系は、プリンタの設計者もしくは印刷制御プログラムの設計者が決めるものであるが、この発明において、主印刷装置と副印刷装置の命令体系は、共通であることが好ましい。
続いて、ＰＣＬプリンタドライバ１２は、印刷ジョブの印字部数のＰＪＬを生成する（ステップＳ９０２）。そして、タンデム印刷の設定として部数分割が設定されているかどうかを判定する（ステップＳ９０３）。ここで、タンデム印刷の設定は、図３の画面で使用者によってなされた設定に従う。タンデム印刷が設定されない場合は、マスタープリンタ２だけで印刷を行うが、この場合の処理は、本願の特徴とするものではないのでこの実施の形態では、主としてタンデム印刷が設定されている場合について説明する。前記判定で、部数分割が設定されている場合、ＰＣＬプリンタドライバ１２は、部数分割情報のＰＪＬを生成する（ステップＳ９０４）。次に、ページ分割が設定されているかどうかを判定する（ステップＳ９０５）。ページ分割が設定されている場合、ＰＣＬプリンタドライバ１２は、ページ分割情報のＰＪＬを生成する（ステップＳ９０６）。
【００４８】
部数分割、ページ分割のいずれもが設定されていない場合、ルーチンは後述するステップＳ９１５へ進む。一方、部数分割またはページ分割のいずれかが設定されている場合、ルーチンはステップＳ９０８へ進み、マスタープリンタ２から機種情報としてタンデム印刷に関するマスタープリンタ２およびスレーブプリンタ３の情報を装置情報として取得する。また、プリンタ２および３の状態を取得する。この処理の詳細については、後述するが、ステップＳ９０８の処理は、図２（ａ）における装置情報取得部２０４および状態取得部２０５としての機能を実現する。
【００４９】
ステップＳ９０８で取得した機種情報およびプリンタの状態に基づき、何れかのプリンタがエラー状態にないか、あるいは何れかのプリンタの構成が要求された印刷ジョブの設定に対して不整合を生じないかを判断する（ステップＳ９０９）。その結果、エラーあるいは不整合があると判断した場合、図２（ａ）の印刷続行／キャンセル操作部２０６が、印刷ジョブを続行するか、あるいはキャンセルするかを使用者に選択させる画面を表示する（ステップＳ９１０）。
【００５０】
図７は、図２（ａ）の印刷続行／キャンセル操作部２０６が表示するエラー警告画面の一例を示す説明図である。このうち、図７（ａ）の画面が、ステップＳ９１０で表示する画面の一例である。表示された画面に対して、キャンセル（「いいえ」ボタン７０５）が選択された場合、ＰＣＬプリンタドライバ１２は、ＰＪＬを通信ドライバに渡すことなく終了し、印刷ジョブはキャンセルされる。一方、印刷続行（「はい」ボタン７０４）が選択された場合、ルーチンはステップＳ９１２へ進み、前回印刷ジョブの実行要求があった際とスレーブプリンタコマンドの送信先が変更されているかどうかを判断する（ステップＳ９１２）。この実施の形態では、各プリンタがＴＣＰ／ＩＰを用いたネットワークで接続されており、送信先は各プリンタのＩＰアドレスであるとする。送信先に、変更があった場合は、図示しない報知部によって、スレーブプリンタが変更されたことを使用者に通知する画面を表示する（ステップＳ９１３）。
図８は、取得されたスレーブプリンタへのプリンタコマンドの送信先が、以前の印刷ジョブ要求時と異なる場合の警告画面の一例を示す説明図である。
【００５１】
あるいは、前記ステップＳ９０９の判断で、エラーあるいは不整合があると判断されたプリンタについての印刷ジョブを、他のエラーあるいは不整合のないプリンタに変更して処理させるようにしてもよい。この場合、ＰＪＬの体系が各装置で共通であるため、変更の処理は装置固有の情報だけを変更するだけでよく、容易に実現することができる。
【００５２】
図７（ｂ）は、エラー状態のプリンタが検出された場合に、エラー状態にない他のプリンタに印刷ジョブを処理させるかどうかを使用者に報知して選択させる画面の例を示す説明図である。図７（ｂ）に示すように、スレーブ１のプリンタが用紙なしの状態であって、印刷ジョブを実行できないことを使用者に報知し、印刷可能なマスタープリンタに変更して出力するかどうかを選択させる画面である。使用者が「はい」のボタン７０４を選択すると、本来スレーブ１のプリンタで処理する予定の印刷ジョブを、マスタープリンタに変更して生成し、マスタープリンタに印刷させる。一方、使用者が「いいえ」のボタン７０５を選択した場合、印刷ジョブの変更を行わず、スレーブ１のプリンタに対するＰＪＬを生成する。しかし、スレーブ１プリンタに対するプリンタコマンド送信部２１４は、スレーブ１に用紙が補給され、印刷可能な状態になるまでＰＪＬの送信を留保する。その間、図１の状態取得部２０５は、スレーブ１のプリンタの状態を監視し、プリンタコマンド送信部２１４は、用紙が補給されて印刷可能な状態になったら、ＰＪＬの送信を行う。
また、印刷装置によっては、ＰＣＬプリンタドライバ１２から送信されたＰＪＬをその内部で保持できる程度の大容量メモリ、例えばハードディスクを備えたものがある。このような印刷装置では、印刷装置が印刷不可能な状態であってもＰＣＬプリンタドライバ１２はＰＪＬを留保することなく送信してもよい。印刷装置は、受信したＰＪＬをメモリに保持し、印刷可能な状態になった後に、メモリにＰＪＬが保持されたジョブを処理するようにすればよい。
【００５３】
続いて、ＰＣＬプリンタドライバ１２は、タンデム印刷設定のＰＪＬを生成する（ステップＳ９１４）。
次に、ＰＣＬプリンタドライバ１２は、印刷実行前にユーザー認証設定画面を表示する機能が設定されているかどうかを判定する（ステップＳ９１５）。この機能は、図５の画面のチェックボックス５０５で使用者によって設定される機能である。この機能が設定されているときは、図５のユーザー認証画面を表示し、ユーザー認証に必要なログイン名とパスワードを使用者に入力させる（ステップＳ９１６）。このステップは、前記認証データ設定部としての機能を提供する。一方、この機能が設定されていない場合はログイン名とパスワードの入力を求めないでルーチンは、ステップＳ９１７へ進む。ステップＳ９１７で、ＰＣＬプリンタドライバ１２は、マスターおよびスレーブの全てのプリンタについてユーザー認証のＰＪＬを作成する。ステップＳ９１６で、ユーザー認証に必要なログイン名とパスワードが入力された場合、ユーザー認証のＰＪＬに入力されたログイン名とパスワードを付加する。ステップＳ９１７の処理は、プリンタドライバ１３のプリンタコマンド送信部２１４に前記認証データ付加部の機能を実現させるために必要な処理である。
【００５４】
次に、ＰＣＬプリンタドライバ１２は、ＰＤＬ言語のＰＪＬを作成する（ステップＳ９１８）。そして、これまでに生成したＰＪＬを通信ドライバへ渡して、各プリンタへ送信するように要求する（ステップＳ９１９）。この印刷制御装置１が提供するオペレーティングシステムの一例であるウインドウズについてより詳細に説明すると、ＰＣＬプリンタドライバ１２は、作成したＰＪＬや印刷データを含む印刷ジョブを、ウインドウズによって提供されるスプーラーに渡す。スプーラーでは、渡された前記印刷ジョブをブロック単位で通信ドライバに渡し、通信ドライバは各プリンタへ印刷ジョブを送信する。
【００５５】
ここで、図９の「タンデム印刷設定情報取得」（ステップＳ９０８）処理の詳細ついて説明する。図１３は、前記処理の詳細を示すフローチャートである。図１３に示すように、ＰＣＬプリンタドライバ１２は、マスタープリンタ２から、プリンタ２自身とスレーブプリンタ３の機種情報と、状態を取得する。ここで取得する機種情報は、スレーブプリンタ３のプリンタコマンド送信先、マスターとスレーブプリンタへの印刷ジョブの配分比率を計算するための情報である（ステップＳ１３０１）。取得した状態に基づいて、エラー状態のプリンタがあるか否かを判断する（ステップＳ１３０２）。エラー状態のプリンタが無ければ、エラー状態のプリンタが無かったことを示すフラグを後の判定のためにセットし（ステップＳ１３０５）て、ルーチンはＳ１３０６へ進む。一方、何れかのプリンタがエラー状態の場合、エラー状態のプリンタがマスタープリンタ２と同じＰＤＬ言語をサポートする装置かどうかを判断する（ステップＳ１３０３）。判断の結果、エラー状態のプリンタがマスターと同じＰＤＬ言語をサポートするものでなければ、ルーチンはステップＳ１３０５へ進んで、エラー状態のプリンタが無かったことを示すフラグをセットし（ステップＳ１３０５）、その後Ｓ１３０６へ進む。当該プリンタがエラー状態であっても、実行する印刷ジョブのＰＤＬ言語をサポートしていなければ、印刷ジョブの実行対象でないからである。一方、エラー状態のプリンタがマスターと同じＰＤＬ言語をサポートする場合、エラー状態のプリンタがあることを示すフラグを後の判定のためにセットし（ステップＳ１３０４）て、ルーチンはＳ１３０６へ進む。
【００５６】
ステップＳ１３０６で、ＰＣＬプリンタドライバ１２は、前回印刷ジョブの実行要求があった際のスレーブプリンタコマンド送信先が、前述のステップＳ１３０１で取得した送信先から変更されているか否かを判断する。変更が無ければ、スレーブプリンタコマンド送信先に変更が無いことを示すフラグを後の判定のためにセットして（ステップＳ１３０８）、ルーチンはステップＳ１３０９へ進む。一方、変更があった場合、スレーブプリンタコマンド送信に変更があったことを示すフラグを後の判定のためにセットして（ステップＳ１３０７）、ルーチンはステップＳ１３０９へ進み、マスタープリンタ２と同じＰＤＬ言語をサポートするスレーブプリンタのアドレスリストと前記ステップＳ１３０１で取得したジョブの配分比率とをレジストリに保持する。
以上が、ＰＣＬプリンタドライバ１２が実行する印刷ジョブ開始の処理手順の例である。
【００５７】
次に、印刷ジョブ終了の処理手順の例について説明する。図１０は、ＰＣＬプリンタドライバ１２が実行する、印刷ジョブ終了の処理手順の一例を示すフローチャートである。ＰＣＬプリンタドライバ１２は、全てのＰＪＬを生成した後に、その印刷ジョブの終了のＰＪＬを生成する。図１０に示すように、ＰＣＬプリンタドライバ１２は、開始された印刷ジョブが途中でキャンセルされたかどうかを判断する（ステップＳ１００１）。印刷ジョブがキャンセルされていなければ、印刷ジョブ終了のＰＪＬを生成する（ステップＳ１００２）。印刷ジョブがキャンセルされた場合は、終了のＰＪＬを生成することなく終了する。印刷ジョブ終了のＰＪＬを生成することにより、当該印刷ジョブに関する一連のＰＪＬ生成が完了する。
【００５８】
次に、生成された、ＰＣＬプリンタドライバ１２が生成したプリンタコマンドを各プリンタへ送信する通信ドライバ１３の処理の手順について説明する。
【００５９】
図１１は、図１の通信ドライバ１３が実行する、通信の処理手順の一例を示すフローチャートである。図１１に示すように、通信ドライバ１３のプリンタコマンド取得部２１１は、ＰＣＬプリンタドライバ１２が生成したプリンタコマンドを取得する（ステップＳ１１０１）。そして、部数分割またはページ分割が設定されているかどうかを判断する（ステップＳ１１０２）。これらの設定は、図３の画面で使用者によって設定されるものである。部数分割もページ分割も設定されていない場合は、タンデム印刷を行わないので、取得したプリンタコマンドをマスタープリンタ２のみに送信して（ステップＳ１１１１）処理を終了する。
【００６０】
一方、部数分割またはページ分割が設定されている場合、取得したプリンタコマンドがジョブ終了のＰＪＬかどうかを判断する（ステップＳ１１０３）。ジョブ終了のＰＪＬの場合、ページ分割が設定されているかどうかを判断する（ステップＳ１１１２）。ページ分割が設定されている場合は、ページ分割処理を実行して（ステップＳ１１１３）終了する。ページ分割処理の詳細については、後述する。一方、前記ステップＳ１１１２の判定で、ページ分割が設定されていない場合は、部数分割終了処理（ステップＳ１１１４）を行って処理を終了する。部数分割終了処理の詳細は、後述する。
【００６１】
前記ステップＳ１１０３の判定で、ジョブ終了ＰＪＬでない場合、通信ドライバ１３は、取得したプリンタコマンドがジョブ開始のＰＪＬかどうかを判断する（ステップＳ１１０４）。ジョブ開始のＰＪＬの場合、ジョブ開始ＰＪＬ取得済みのフラグをセットする。（ステップＳ１１１５）そして、ページ分割が設定されているかどうかを判断する（ステップＳ１１０５）。ページ分割が設定されている場合、ジョブ開始ＰＪＬを一時的に保存して（ステップＳ１１０７）処理を終了する。一方、ページ分割が設定されていない場合、即ち部数分割が設定されている場合、部数分割開始処理（ステップＳ１１０６）を実行して処理を終了する。部数分割開始処理の詳細については、後述する。
【００６２】
前記ステップＳ１１０４の判定で、取得したＰＪＬがジョブ開始ＰＪＬでない場合は、ジョブ開始ＰＪＬを既に取得済みであるかどうかを判断し（ステップＳ１１１６）、取得済みでなければ処理を終了する。ジョブ開始ＰＪＬを取得済みの場合、ページ分割が設定されているかどうかを判断し（ステップＳ１１０８）、ページ分割が設定されている場合は、取得したプリンタコマンドをページ単位で一時的に保存する（ステップＳ１１０９）。一方、ページ分割が設定されていない場合、部数分割処理（ステップＳ１１１０）を実行し、処理を終了する。部数分割処理の詳細は、後述する。
【００６３】
次に、ステップＳ１１０６の部数分割開始処理の詳細を説明する。図１４は、図１１のステップＳ１１０６の部数分割開始処理の詳細を示すフローチャートである。この処理で、通信ドライバ１３は、マスターとスレーブの各プリンタに対する印刷部数の配分を決定し、各印刷装置のスレッドを起動生成する。図１４に示すように、通信ドライバ１３は、まず、ジョブ開始ＰＪＬの解析を行う（ステップＳ１４０１）。次に、部数の配分計算に用いるため、変数Ｃに図３の画面の部数設定３０２で設定された印刷部数を格納し（ステップＳ１４０２）、変数Ｎにスレーブプリンタの台数＋１を格納する（ステップＳ１４０３）。この実施形態では、Ｎは２である。
続いて、出力先情報保持部２０７からマスタープリンタ２のＩＰアドレスと印刷ジョブのマスターへの配分比率（Ｙ０）とを取得する（ステップＳ１４０４、１４０５）。そして、変数Ｃに格納された印刷部数とマスターへの配分比率Ｙ０との積を計算してマスタープリンタ２に配分すべき印刷部数（Ｃ０）を求める（ステップＳ１４０６）。
【００６４】
次に、通信ドライバ１３は、マスタープリンタ２との通信を管理するスレッドを起動生成する（ステップＳ１４０７）。ここで起動されるスレッドは、図１８のフローチャートにその詳細な処理内容を示しているが、マスタープリンタ２へジョブ開始ＰＪＬを送信し、その後、ＰＣＬプリンタドライバによって生成され、テンポラリファイルに格納される印刷データを順次プリンタ２へ送信し、最後に、ジョブ終了ＰＪＬを送信する。印刷データは、多くの場合複数のブロックに分割して生成される。その場合、印刷データの送信はブロック単位で断続的に行われる。
【００６５】
続いて、通信ドライバ１３は、スレーブプリンタ３に対する配分率を決定し、通信を管理するスレッドを起動生成する処理を行う。この実施形態では、スレーブプリンタは１台だけであるが、フローチャートは複数台のスレーブプリンタに対応した構造になっている。まず、処理用の一時変数ｉに１、ＤにＣとＣ０との差、即ち、スレーブプリンタが印刷すべき部数の合計を格納する（ステップＳ１４０８）。そして、スレーブプリンタの台数だけループ処理を繰り返すために変数ｉがＮよりも小さいかどうかを判定する（ステップＳ１４０９）。この実施形態においてＮ＝２であるので、１回だけ判定結果が真（Ｙｅｓ）になる。スレーブプリンタが２台以上あれば、その台数と同じ回数だけ以下の処理が繰り返されることになる。
【００６６】
まず、通信ドライバ１３は、機種情報として、出力先情報保持部２０７からスレーブプリンタｉのＩＰアドレスと配分率Ｙｉとを取得する（ステップＳ１４１０、Ｓ１４１１）。ここで、ｉ＝１である。次に、変数Ｃに格納された印刷部数とスレーブプリンタｉへの配分比率Ｙｉとの積を計算してスレーブプリンタｉに配分すべき印刷部数（Ｃｉ）を求める（ステップＳ１４１２）。そして、求めたＣｉとＤとの最小値を求めて改めてＣｉとする（ステップＳ１４１３）。これは、積の計算に伴う誤差を丸めて、各プリンタの合計印刷部数を設定した部数と等しくするための処理である。さらに、通信ドライバ１３は、変数ＤにＤ−Ｃｉを格納し、ｉを１だけ加算した（ステップＳ１４１４）後、ステップＳ１４０９の判定に進む。
【００６７】
このようにして、全てのスレーブプリンタについて処理を行った後、ステップＳ１４０９の判定は、Ｎｏとなり、ルーチンはＳ１４１５へ進む。ここで、通信ドライバ１３は、スレーブプリンタの台数Ｓを求め、Ｓの値が０でなければ（ステップＳ１４１６）各スレーブプリンタにそれぞれ対応するスレッドを起動生成する（ステップＳ１４１７）。また、生成される印刷データを一時的に格納するためのテンポラリファイルを生成し（ステップＳ１４１８）、処理を終了する。
以上が、図１１のステップＳ１１０６の部数分割開始処理の詳細である。
【００６８】
次に、図１１のステップＳ１１１０の部数分割処理の詳細について説明する。図１５は、図１１の「部数分割処理」（ステップＳ１１１０）処理の詳細を示すフローチャートである。図１５に示すように、通信ドライバ１３は、前述のように図１４のステップＳ１４１８で生成した印刷データ保持用のテンポラリファイルに、取得したプリンタコマンドを追加書き込みする（ステップＳ１５０１）。そして、各プリンタとの通信管理のために起動生成された各スレッドに対して、テンポラリファイルに追加書き込みを行ったことを通知して（ステップＳ１５０２）処理を終了する。前記通知に応じて、各スレッドは、生成された印刷データをプリンタに送信する。以上が、部数分割処理の詳細である。
次に、図１１のステップＳ１１１４の部数分割終了処理の詳細について説明する。図１６は、図１１の「部数分割終了処理」（ステップＳ１１１４）処理の詳細を示すフローチャートである。図１６に示すように、通信ドライバ１３は、印刷データ保持用のテンポラリファイルに、ジョブ終了のＰＪＬを書き込む（ステップＳ１６０１）。そして、各プリンタとの通信管理を行う各スレッドに対して、処理の終了を要求し（ステップＳ１６０２）処理を終了させるためのイベントを発行し、全スレッドが終了することを確認する。前記終了要求に応じて、各スレッドは、テンポラリファイルに残っている内容を各プリンタに送信する。印刷データが残っていれば、それが送信され、最後にテンポラリファイルに書き込まれたジョブ終了のＰＪＬが送信される。通信ドライバ１３は、全スレッドが終了していることを確認した後、印刷データを一時的に格納するために生成したテンポラリファイルを削除する。各スレッドは、処理を終えた後に消滅する。部数分割処理の詳細である。
【００６９】
次に、図１１のステップＳ１１１３のページ分割処理の詳細について説明する。この処理で、通信ドライバ１３は、マスターとスレーブの各プリンタに対するページ数の配分と印刷するページの先頭位置を決定し、各印刷装置のスレッドを起動生成する。図１７は、図１１の「ページ分割処理」（ステップＳ１１１３）処理の詳細を示すフローチャートである。図１７に示すように、通信ドライバ１３は、まず、印刷する先頭ページ位置を指定するための変数Ｐ０に１を格納し、印刷ページ数を指定するための変数Ｃに要求された印刷ジョブの総ページ数を格納する（ステップＳ１７０１）。
【００７０】
次に、変数Ｎにスレーブプリンタの台数＋１を格納する（ステップＳ１７０２）。この実施形態では、Ｎは２である。
続いて、出力先情報保持部２０７から、マスタープリンタ２のＩＰアドレスと印刷ジョブのマスターへの配分比率（Ｙ０）とを取得する（ステップＳ１７０３、１７０４）。そして、変数Ｃに格納された総ページ数とマスターへの配分比率Ｙ０との積を計算してマスタープリンタ２に配分すべき印刷ページ数（Ｃ０）を求める（ステップＳ１７０５）。
【００７１】
次に、通信ドライバ１３は、マスタープリンタ２との通信を管理するスレッドを起動生成する（ステップＳ１７０６）。ここで起動されるスレッドは、図１９のフローチャートにその詳細な処理内容を示しているが、マスタープリンタ２へジョブ開始ＰＪＬを送信し、その後、ＰＣＬプリンタドライバによって生成され、テンポラリファイルに格納される印刷データを順次プリンタ２へ送信し、最後にジョブ終了ＰＪＬを送信する。印刷データは、多くの場合複数のブロックに分割して生成される。その場合、印刷データの送信はブロック単位で断続的に行われる。
【００７２】
続いて、通信ドライバ１３は、スレーブプリンタ３に対する配分率を決定し、通信を管理するスレッドを起動生成する処理を行う。この実施形態では、スレーブプリンタは１台だけであるが、フローチャートは複数台のスレーブプリンタに対応した構造になっている。まず、処理用の一時変数ｉに１、ＤにＣとＣ０との差、即ち、スレーブプリンタが印刷すべきページ数の合計を格納する（ステップＳ１７０７）。そして、スレーブプリンタの台数だけループ処理を繰り返すために変数ｉがＮよりも小さいかどうかを判定する（ステップＳ１７０８）。この実施形態においてＮ＝２であるので、１回だけ判定結果が真（Ｙｅｓ）になる。スレーブプリンタが２台以上あれば、その台数と同じ回数だけ以下の処理が繰り返されることになる。
【００７３】
まず、通信ドライバ１３は、機種情報として、スレーブプリンタｉのＩＰアドレスと配分率Ｙｉとを取得する（ステップＳ１７０９、Ｓ１７１０）。ここで、ｉ＝１である。次に、変数Ｃに格納された印刷部数とスレーブプリンタｉへの配分比率Ｙｉとの積を計算してスレーブプリンタｉに配分すべき印刷ページ数（Ｃｉ）を求める（ステップＳ１７１１）。そして、求めたＣｉとＤとの最小値を求めて改めてＣｉとする（ステップＳ１７１２）。これは、積の計算に伴う誤差を丸めて、各プリンタの合計印刷ページ数を設定した総ページ数と等しくするための処理である。さらに、通信ドライバ１３は、変数ＤにＤ−Ｃｉを格納し、ｉを１だけ加算し（ステップＳ１７１３）、各プリンタの印刷先頭ページ位置を格納する変数ＰｉにＰ（ｉ−１）＋Ｃ（ｉ―１）を格納した後（ステップＳ１７１４）、ステップＳ１７０８の判定に進む。この実施形態では、ＰｉにＰ０＋Ｃ０＝１＋Ｃ０（Ｃ０は、マスタープリンタ３の印刷ページ数）を格納する。
【００７４】
このようにして、全てのスレーブプリンタについて処理を行った後、ステップＳ１７０８の判定は、Ｎｏとなり、ルーチンはＳ１７１５へ進む。ここで、通信ドライバ１３は、スレーブプリンタの台数Ｓを求め、Ｓの値が０でなければ（ステップＳ１７１６）各スレーブプリンタにそれぞれ対応するスレッドを起動生成する（ステップＳ１７１７）。その後、生成される印刷データを一時的に格納するためのテンポラリファイルにジョブ終了のＰＪＬを格納し（ステップＳ１７１８）、各スレッドに対して処理の終了要求を行った後に（ステップＳ１７１９）処理を終了する。
以上が、図１１のステップＳ１１１３のページ分割処理の詳細である。
【００７５】
次に、図１４の処理によって起動されたスレッド内の部数分割時のデータ送信処理の手順を示すフローチャートである。図１８に示すように、スレッドは、ジョブ開始のＰＪＬを取得する（ステップＳ１８０１）。この実施形態では、マスタープリンタおよびスレーブプリンタのＰＪＬの体系は、共通である。そこで、取得したジョブ開始ＰＪＬのうち、各プリンタでパラメータの値が異なるものを置換する。まず、印刷部数を前記スレッドが対応するプリンタに配分された印刷部数Ｃｉに変更する（ステップＳ１８０２）。また、対応するプリンタ以外のユーザー認証情報を削除する（ステップＳ１８０３）。
【００７６】
次に、前記スレッドは、対応するプリンタがマスタープリンタかどうかを判定する（ステップＳ１８０４）。マスタープリンタに対応する場合は、ジョブ開始ＰＪＬに、マスタープリンタであることを識別するための識別命令を追加する（ステップＳ１８０５）。スレーブプリンタに対応する場合は、ジョブ開始ＰＪＬに、スレーブプリンタであることを識別するための識別命令を追加する（ステップＳ１８０６）。この識別命令は、各プリンタに対してユニークな識別子を含み、各プリンタは、識別命令に含まれる識別子を応答するコマンドに付加するようにしてもよい。
【００７７】
さらに、前記スレッドは、スレーブプリンタの識別番号をジョブ開始ＰＪＬに追加する（ステップＳ１８０７）。そして、ジョブ開始ＰＪＬを対応するプリンタに送信する（ステップＳ１８０８）。
その後、前記スレッドは、受信イベント待ちで待機する（ステップＳ１８０９）。待機状態で、受信イベントが発生すると、まず、受信したコマンドが終了要求かどうかを判定する（ステップＳ１８１０）。終了要求を受信した場合、テンポラリファイルにある印刷データを取得し（ステップＳ１８１４）、取得した全ての印刷データをプリンタに送信（ステップＳ１８１５）し、さらにジョブ終了のＰＪＬを送信した後、スレッドの終了処理を行う（ステップＳ１８１６）。これによって、スレッドが消滅する。終了要求を送信した通信ドライバ１３は、全スレッドが終了するのを待っており、全スレッドが終了処理を完了したことを確認した後に、生成したテンポラリファイルを削除する。
【００７８】
一方、前記ステップＳ１８１０で、終了要求以外を受信した場合、印刷データの追加書き込みがあったかどうかを判断する（ステップＳ１８１１）。追加書き込みがあった場合は、テンポラリファイルから追加書き込みされた印刷データを取得し（ステップＳ１８１２）、取得した印刷データを印刷装置に送信する（ステップＳ１８１３）。そして、ルーチンはステップＳ１８０９へ進み、次のイベント待ちで待機する。追加書き込みがなかった場合、何も処理せずにルーチンはステップＳ１８０９へ進み、次のイベント待ちで待機する。
以上が、図１４の処理によって起動されたスレッドのデータ送信処理の詳細である。
【００７９】
次に、図１７の処理によって起動されたスレッド内の部数分割時のデータ送信処理の手順を示すフローチャートである。図１９に示すように、スレッドは、ジョブ開始のＰＪＬを取得する（ステップＳ１９０１）。この実施形態では、マスタープリンタおよびスレーブプリンタのＰＪＬの体系は、共通である。そこで、取得したジョブ開始ＰＪＬのうち、各プリンタでパラメータの値が異なるものを置換する。まず、対応するプリンタ以外のユーザー認証情報を削除する（ステップＳ１９０２）。結果的に、残されたユーザー認証情報がジョブ開始ＰＪＬに付加されて対応する装置へ送信される。ステップＳ１９０２の処理は、前記前記認証データ付加部としての機能を実現する。
【００８０】
次に、前記スレッドは、対応するプリンタがマスタープリンタかどうかを判定する（ステップＳ１９０３）。マスタープリンタに対応する場合は、ジョブ開始ＰＪＬに、マスタープリンタであることを識別するための識別命令を追加する（ステップＳ１９０４）。スレーブプリンタに対応する場合は、ジョブ開始ＰＪＬに、スレーブプリンタであることを識別するための識別命令を追加する（ステップＳ１９０５）。この識別命令は、各プリンタに対してユニークな識別子を含み、各プリンタは、識別命令に含まれる識別子を応答するコマンドに付加するようにしてもよい。
【００８１】
そして、ジョブ開始ＰＪＬを対応するプリンタに送信し（ステップＳ１９０６）、さらに、対応するプリンタが印刷するページ位置、即ち、ページ位置のＰｉからＰｉ＋Ｃｉについてのプリンタコマンドを取得し（ステップＳ１９０７）、取得したプリンタコマンドを対応するプリンタへ送信する（ステップＳ１９０８）。
【００８２】
その後、前記スレッドは、受信イベント待ちで待機する（ステップＳ１９０９）。待機状態で、受信イベントが発生すると、まず、受信したコマンドが終了要求かどうかを判定する（ステップＳ１９１０）。終了要求を受信した場合、テンポラリファイルにある印刷データを取得し（ステップＳ１９１１）、取得した全ての印刷データをプリンタに送信（ステップＳ１９１２）した後、スレッドの終了処理を行う（ステップＳ１９１３）。これによって、スレッドが消滅する。
一方、前記ステップＳ１９１０で、終了要求以外を受信した場合、何も処理せずにルーチンはステップＳ１９０９へ進み、次のイベント待ちで待機する。
以上が、図１７の処理によって起動されたスレッドのデータ送信処理の詳細である。
【００８３】
また、図４は、図１のＰＣＬプリンタドライバ１２あるいはＰＳプリンタドライバ１６が操作者に対して提供するオプション機器設定画面の一例を示す説明図である。
図１２は、図４の設定画面の「オプション自動設定」ボタン４０２がクリックされることにより、ＰＣＬプリンタドライバ１２が実行する処理手順の一例を示すフローチャートである。「オプション自動設定」ボタン４０２は、印刷制御装置に印刷制御プログラムをインストールした後、あるいは印刷装置を設置したとき、使用者に操作させるためのボタンである。あるいは、印刷制御プログラムや印刷装置、もしくはネットワークの接続設定などを変更した際に使用者に操作させるものである。
【００８４】
図１２に示すように、ＰＣＬプリンタドライバ１２は、まず、オプションの構成情報を機種情報として取得する（ステップＳ１２０１）。さらに、スレーブプリンタ３の機種情報として、ＩＰアドレスやジョブの配分比率をマスタープリンタ２から取得する（ステップＳ１２０２）。さらに、各装置の印刷能力に関する情報を機種情報として取得する（ステップＳ１２０３）。そして、マスタープリンタ２と同じＰＤＬ言語をサポートするスレーブプリンタのＩＰアドレスとジョブの配分比率とをレジストリに格納する（ステップＳ１２０４）。また、全てのプリンタがサポートする機能を項目別にレジストリに格納する（ステップＳ１２０５）。前記レジストリは、出力先情報保持部２０７に相当する。
以上が、図４の設定画面の「オプション自動設定」ボタン４０２がクリックされた際のＰＣＬプリンタドライバ１２の処理であり、ステップＳ１２０１〜１２０５の機能は、図２の装置情報取得部２０４に相当する。
【００８５】
また、図６は、図４の「タンデム印刷設定」ボタン４０３がクリックされることにより表示される設定画面の一例を示す説明図である。図６で、削除ボタン６０４は、表示部６０２に一覧表示された装置情報の取得対象となる印刷装置のうち、選択された印刷装置を印刷ジョブの実行対象から除外させるためのボタンであり、このボタンを押すことにより、ＰＣＬプリンタドライバ１２は、前記非選択装置指定部としての機能を実行する。即ち、実行対象から除外された装置に対して、印刷ジョブのＰＪＬを作成せず、従って印刷ジョブに関する制御命令を送信することもしない。
【００８６】
前述の実施の形態の他にも、この発明について種々の変形例があり得ることは明らかである。そのような変形例は、この発明の特徴及び範囲に属さないと解釈されるべきものではない。そのような変形例が、この発明の特許請求の範囲に含まれることを意図したものであることは、この技術分野の通常の知識を有するものにとって明らかである。
【図面の簡単な説明】
【００８７】
【図１】この発明に係る印刷制御装置、主印刷装置、副印刷装置からなる印刷システムの構成を示すブロック図である。
【図２】図１に示すＰＣＬプリンタドライバ１２、ＰＳプリンタドライバ１６あるいは通信ドライバ１３の内部構成を示すブロック図である。
【図３】使用者に印刷ジョブの設定を行わせるために図２（ａ）の印刷設定部２０３が提供する機能設定画面の一例を示す説明図である。
【図４】図１のＰＣＬプリンタドライバ１２あるいはＰＳプリンタドライバ１６が操作者に対して提供するオプション機器設定画面の一例を示す説明図である。
【図５】図３に示す機能設定画面の「ユーザー認証」ボタン３０５がクリックされることにより表示される設定画面の一例を示す説明図である。
【図６】図４の「タンデム印刷設定」ボタン４０３がクリックされることにより表示される設定画面の一例を示す説明図である。
【図７】図２（ａ）の印刷続行／キャンセル操作部２０６が表示するエラー警告画面の一例を示す説明図である。
【図８】この発明に係る印刷制御プログラムにおいて、取得された副印刷装置への命令送信先が、以前の印刷ジョブ要求時と異なる場合に報知部が報知する警告画面の一例を示す説明図である。
【図９】図１のＰＣＬプリンタドライバ１２あるいはＰＳプリンタドライバ１６が実行する、印刷ジョブ開始の処理手順の一例を示すフローチャートである。
【図１０】図１のＰＣＬプリンタドライバ１２あるいはＰＳプリンタドライバ１６が実行する、印刷ジョブ終了の処理手順の一例を示すフローチャートである。
【図１１】図１の通信ドライバ１３が実行する、通信の処理手順の一例を示すフローチャートである。
【図１２】図４の設定画面の「オプション自動設定」ボタン４０２がクリックされることにより、ＰＣＬプリンタドライバ１２あるいはＰＳプリンタドライバ１６が実行する処理手順の一例を示すフローチャートである。
【図１３】図９の「タンデム印刷設定情報取得」（ステップＳ９０８）処理の詳細を示すフローチャートである。
【図１４】図１１の「部数分割開始処理」（ステップＳ１１０６）処理の詳細を示すフローチャートである。
【図１５】図１１の「部数分割処理」（ステップＳ１１１０）処理の詳細を示すフローチャートである。
【図１６】図１１の「部数分割終了処理」（ステップＳ１１１４）処理の詳細を示すフローチャートである。
【図１７】図１１の「ページ分割処理」（ステップＳ１１１３）処理の詳細を示すフローチャートである。
【図１８】図１４の処理によって起動されるスレッド内の部数分割時のデータ送信処理の手順を示すフローチャートである。
【図１９】図１７の処理によって起動されるスレッド内のページ分割時のデータ送信処理の手順を示すフローチャートである。
【図２０】図１の通信ドライバ１３からプリンタ２または３へ、印刷ジョブ開始時に送信されるＰＪＬのデータの一例を示す説明図である。
【符号の説明】
【００８８】
１    印刷制御装置
２    主印刷装置、プリンタ（マスター）
３    副印刷装置、プリンタ（スレーブ）
１１    印刷制御プログラム
１２    ＰＣＬプリンタドライバ
１３    ＰＳプリンタドライバ
１４    アプリケーションプログラム
１５    ステータスモニタ
【図１】
2006330828.tif 000003
【図２】
2006330828.tif 000004
【図３】
2006330828.tif 000005
【図４】
2006330828.tif 000006
【図５】
2006330828.tif 000007
【図６】
2006330828.tif 000008
【図７】
2006330828.tif 000009
【図８】
2006330828.tif 000010
【図９】
2006330828.tif 000011
【図１０】
2006330828.tif 000012
【図１１】
2006330828.tif 000013
【図１２】
2006330828.tif 000014
【図１３】
2006330828.tif 000015
【図１４】
2006330828.tif 000016
【図１５】
2006330828.tif 000017
【図１６】
2006330828.tif 000018
【図１７】
2006330828.tif 000019
【図１８】
2006330828.tif 000020
【図１９】
2006330828.tif 000021
【図２０】
2006330828.tif 000022