(57)【要約】    【課題】ホストコンピュータ上で一旦ローカルスプーラが中間コードで印刷ジョブを保存したのちに印刷する印刷システムにおいて、直接ユーザ操作ができない環境では複数の印刷ジョブを１つのジョブに結合して印刷することができない。    【解決手段】他の印刷ジョブと１つに結合する印刷ジョブであることを表すジョブ結合フラグを印刷設定に設けたプリンタドライバと、プリンタドライバの印刷設定のジョブ結合フラグがＯＮの場合に印刷データをローカルスプーラに渡すディスパッチャとローカルスプールファイルから印刷データを順次取り出して１つのジョブとして印刷を行うジョブ結合部を有することを特徴とする印刷システム【選択図】        図３
2012113591.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータ上で一旦ローカルスプーラが中間コードで印刷ジョブを保存したのちに印刷する印刷システムにおいて、
他の印刷ジョブと１つに結合する印刷ジョブであることを表すジョブ結合フラグを印刷設定に設けたプリンタドライバと
プリンタドライバの印刷設定のジョブ結合フラグがＯＮの場合に印刷データをローカルスプーラに渡すディスパッチャと
ローカルスプールファイルから印刷データを順次取り出して１つのジョブとして印刷を行うジョブ結合部を有することを特徴とする印刷システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の印刷ジョブを１つのジョブに結合して印刷する印刷制御装置および方法およびプログラムに関する。
【背景技術】
【０００２】
近年のプリンタの高機能化により、パンチや折りといった多様なフィニッシング処理を行ったり、色々な紙質の用紙を使った印刷が可能となっている。このため、従来は印刷機でしかできなかった印刷がプリンタでも可能となり、ＰｒｉｎｔＯｎ Ｄｅｍａｎｄ（ＰＯＤ）のような印刷形態も増えてきている。このような印刷においては、１つの印刷物の中で印刷設定を切り替えられることも求められる。例えば、表紙はＡ４のプレプリント用紙を使い、本文１から８ページ目はＡ４普通紙を両面印刷でステイプルして、９ページ目はＡ３をＺ折りにして、それらを１つのまとまった印刷物として出力するといった印刷である。任意のアプリケーションソフトから連続して印刷することで（まとめ印刷）このような出力を実現すると、ネットワーク接続プリンタの場合他の印刷物が間に挟まり、間違って一緒に持って行ってしまう恐れがある。特許文献１は、グループジョブと設定された印刷ジョブに他の印刷ジョブが割り込まないようにプリンタサーバが制御する技術を公開している。その他、印刷装置内の記憶装置に印刷ジョブを貯える機能を用いて、貯えられた複数の文書を印刷装置の操作パネル上から指定することにより、他の印刷物が割り込まないようにすることも可能である。しかし、複数部印刷やセキュアプリント（印刷装置に一旦溜め置き、印刷装置上でパスワードを入力すると出力される）のようにジョブ単位で可能な印刷方法が困難であったり、エラーリカバリやステータス管理が煩雑になるので、１ジョブでの実現が望まれる。マイクロソフト社のＷｉｎｄｏｗｓ（登録商標）などプリンタドライバをつかった印刷システムでは、任意のアプリケーションソフトからジョブ中で変更できる印刷設定はシステムがあらかじめ定めた標準的な属性だけである。それ以外の印刷属性を印刷ジョブ中で変更するためには、各プリンタドライバメーカーが用意したＡＰＩを組み込む必要があり、任意のアプリケーションソフトでは不可能である。また、Ｗｅｂサーバ経由で入校された電子文書の印刷や夜間バッチ印刷など、直接ユーザ操作ができない環境で上記のような印刷が実現できることも重要である。
【０００３】
特許文献２および特許文献３は、複数の印刷ジョブを１つの結合ジョブにする技術を公開している。アプリケーションソフトウェアで印刷を行うと、中間コード形式の印刷ジョブを出力し、画面にジョブ名などを表示する。ユーザ操作により表示された複数の印刷ジョブから複数選択されて、結合指示がなされたら、1つの結合ジョブを生成する。この技術により、複数の印刷ジョブを結合して１つのジョブとして印刷することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−１８２８７８号公報
【特許文献２】特開２００１−１３４３９４号公報
【特許文献３】特開２００１−１３４３９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、この特許文献２および特許文献３開示の技術では、ユーザが結合する文書を指定して、結合指示をするというユーザ操作が必要である。
【０００６】
本発明の課題は、サーバ環境での印刷やバッチ印刷など直接ユーザ操作ができない環境では複数の印刷ジョブを１つのジョブに結合して印刷することができないことである。
【課題を解決するための手段】
【０００７】
ホストコンピュータ上で一旦ローカルスプーラが中間コードで印刷ジョブを保存したのちに印刷する印刷システムにおいて、他の印刷ジョブと１つに結合する印刷ジョブであることを表すジョブ結合フラグを印刷設定に設けたプリンタドライバと、プリンタドライバの印刷設定のジョブ結合フラグがＯＮの場合に印刷データをローカルスプーラに渡すディスパッチャと、ローカルスプールファイルから印刷データを順次取り出して１つのジョブとして印刷を行うジョブ結合部を有することを特徴とする印刷システム。
【発明の効果】
【０００８】
任意の複数のアプリケーションソフトウェアからの印刷ジョブを、印刷時および印刷後のユーザ操作なしで結合して１ジョブとして印刷することができる。その結果、一連の印刷物中に他の印刷物が混じることなく出力できるだけでなく、複数部印刷などジョブ単位で可能な印刷をしたり、ジョブ単位での管理が可能となる。
【０００９】
また、複数のユーザからの印刷ジョブを結合可能にしたり、結合する印刷ジョブが全部揃ってから印刷を開始することによりプリンタの占有時間を最小限にして印刷することも可能である。
【図面の簡単な説明】
【００１０】
【図１】本実施形態における印刷制御装置の構成を示すブロック図である。
【図２】図１に示すホストコンピュータの典型的な構成を示すブロック図である。
【図３】本実施例におけるアプリケーションからの印刷データを一旦中間コードデータでスプールして結合する構成を示すブロック図である。
【図４】第１の実施形態におけるジョブ結合終了通知を受け取ってジョブ結合を終了する場合の印刷ジョブ結合処理の概要を説明するシーケンス図である。
【図５】第１の実施形態における一定時間印刷ジョブがスプールされないとジョブ結合を終了する場合の印刷ジョブ結合処理の概要を説明するシーケンス図である。
【図６】第１の実施形態におけるジョブ結合終了フラグＯＮのジョブを取り出してジョブ結合を終了する場合の印刷ジョブ結合処理の概要を説明するシーケンス図である。
【図７】第１の実施形態におけるジョブ結合数分の印刷ジョブを結合してジョブ結合を終了する場合の印刷ジョブ結合処理の概要を説明するシーケンス図である。
【図８】第１の実施形態におけるジョブ結合設定画面の一例である。
【図９】第１の実施形態におけるジョブ結合終了設定画面の一例である。
【図１０】第１の実施形態におけるジョブ結合数設定画面の一例である。
【図１１】第１の実施形態におけるディスパッチャの処理の詳細な手順を示すフローチャートである。
【図１２】第１の実施形態におけるジョブ結合部の処理の詳細な手順を示すフローチャートである。
【図１３】図１２に示すジョブ追加処理の詳細な手順を示すフローチャートである。
【図１４】第２の実施形態におけるジョブ取得条件設定画面の一例である。
【図１５】第２の実施形態における一定時間印刷ジョブがスプールされないとジョブ結合を終了する場合の印刷ジョブ結合処理の概要を説明するシーケンス図である。
【図１６】第２の実施形態におけるジョブ結合終了通知を受け取ってジョブ結合を終了する場合の印刷ジョブ結合処理の概要を説明するシーケンス図である。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
＜システム構成の説明＞
〔第１実施形態〕
図１は、本実施形態を示す情報処理装置と印刷装置とが通信可能な印刷制御システムの構成を示すブロック図である。本実施形態は、オペレーティングシステムとして、マイクロソフト社のWindows(登録商標)のプリンティングシステムを例とする。
【００１２】
なお、特に断らない限り、本発明の機能が実行されるのであれば、機器の構成に係わらず本発明を適用できることは言うまでもない。単体の機器であっても、複数の機器からなるシステムであっても、ＬＡＮ，ＷＡＮ等のネットワークを介して接続が為され処理が行われるシステムであってもよい。
【００１３】
図１において、ホストコンピュータ３００は、ＲＯＭ３のプログラム用ＲＯＭあるいは外部メモリ１１に記憶された文書処理プログラム等に基づいて図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理を実行するＣＰＵ１を備える。
【００１４】
更に、システムバス４に接続される各デバイスをＣＰＵ１が総括的に制御する。また、このＲＯＭ３のプログラム用ＲＯＭあるいは外部メモリ１１には、ＣＰＵ１の制御プログラムであるオペレーティングシステム（以下ＯＳ）等を記憶する。本実施形態では、上述の通り、マイクロソフト社のＷｉｎｄｏｗｓ（登録商標）を例とする。
【００１５】
ＲＯＭ３のフォント用ＲＯＭあるいは外部メモリ１１には上記文書処理の際に使用するフォントデータ等を記憶する。ＲＯＭ３のデータ用ＲＯＭあるいは外部メモリ１１には上記文書処理等を行う際に使用する各種データを記憶する。
【００１６】
２はＲＡＭで、ＣＰＵ１の主メモリ、ワークエリア等として機能する。５はキーボードＩ／Ｆで、キーボード９や不図示のポインティングデバイスからのキー入力を制御する。
【００１７】
６はディスプレイＩ／Ｆで、ディスプレイ１０の表示を制御する。７は外部メモリＩ／Ｆで、ハードディスク（ＨＤ）、フレキシブルディスク（ＦＤ）等の外部メモリ１１とのアクセスを制御する。外部メモリ１１にはブートプログラム、各種アプリケーション、フォントデータ、ユーザファイル、編集ファイル、後述する図２に示すモジュールを備えるプリンタドライバ等が記憶される。
【００１８】
８はプリンタＩ／Ｆで、所定の双方向性のインタフェース２２を介してプリンタ１５０に接続されて、プリンタ１５０との通信制御処理を実行する。
【００１９】
なお、ＣＰＵ１は、例えばＲＡＭ２上に設定された表示情報ＲＡＭへのアウトラインフォントの展開（ラスタライズ）処理を実行し、ディスプレイ１０上でのＷＹＳＩＷＹＧを可能としている。
【００２０】
また、ＣＰＵ１は、ディスプレイ１０上の不図示のマウスカーソル等で指示されたコマンドに基づいて登録された種々のウインドウを開き、種々のデータ処理を実行する。ユーザはアプリケーションで作成した情報を印刷する際、当該情報に対する設定を行うためのユーザインタフェースをディスプレイ１０上で開き、プリンタ１５０の設定や、印刷モードの選択を行う。この際、ユーザは、プリンタドライバが提供するユーザインタフェースを介して、各種の印刷処理方法の設定を行えるように構成されている。
【００２１】
プリンタ１５０において、１２はプリンタＣＰＵ（ＣＰＵ）である。ＣＰＵ１２は、ＲＯＭ１４のプログラム用ＲＯＭあるいは外部メモリ２１に記憶された制御プログラム等に基づいてシステムバス１５に接続される印刷部Ｉ／Ｆ１７を介して印刷部（プリンタエンジン）１９に出力情報としての画像信号を出力する。
【００２２】
また、このＲＯＭ１４のプログラムＲＯＭにはＣＰＵ１２の制御プログラム等を記憶する。ＲＯＭ１４のフォント用ＲＯＭには上記出力情報を生成する際に使用するフォントデータ等を記憶する。
【００２３】
さらに、ＲＯＭ１４のデータ用ＲＯＭには、ハードディスク等の外部メモリ２１を備えていないプリンタの場合には、ホストコンピュータ上で利用される情報等を記憶する。
【００２４】
ＣＰＵ１２は、入力部１６を介してホストコンピュータ３００との通信処理が双方向に可能となっており、プリンタ１５０内の情報等をホストコンピュータ３００に通知可能に構成されている。ここで、情報には、プリンタエンジンのステータスや、ネットワーク設定情報や、デバイス名、リソース名等が含まれる。
【００２５】
ＲＡＭ１３は、ＣＰＵ１２の主メモリ、ワークエリア等として機能し、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。
【００２６】
なお、ＲＡＭ１３は、出力情報展開領域、環境データ格納領域、ＮＶＲＡＭ等に用いられる。前述したハードディスク（ＨＤ）、ＩＣカード等の外部メモリ２１は、外部メモリＩ／Ｆ１８によりアクセスが制御される。
【００２７】
外部メモリ２１は、オプションとして接続され、フォントデータ、エミュレーションプログラム等を記憶する。
【００２８】
なお、外部メモリ２１は１個に限らず、少なくとも１個以上備え、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを複数接続できるように構成されていてもよい。
【００２９】
さらに、図示しないＮＶＲＡＭを有し、操作部２０からのプリンタモード設定情報を記憶するようにしてもよい。操作部２０は、操作のためのスイッチおよびＬＥＤ表示器等が配されている。
＜ホストコンピュータ３００における印刷処理の詳細説明＞
図２は、プリンタ等の印刷装置が直接接続されているか、あるいはネットワーク経由で接続されているホストコンピュータ３００における典型的な印刷処理の構成図である。本実施形態では、後述するモジュールをＣＰＵ１が実行することで各種の印刷処理を行う例である。なお、図１と同一のものには同一の符号を付している。
【００３０】
図２において、アプリケーション２０１、グラフィックエンジン２０２、プリンタドライバ２０３、およびシステムスプーラ２０４は、外部メモリ１１に保存されたファイルとして存在する。これらは、ＯＳやそのモジュールを利用するモジュールによってＲＡＭ２にロードされて、ＣＰＵ１により実行されるプログラムモジュールとして構成されている。また、アプリケーション２０１およびプリンタドライバ２０３は、外部メモリ１１のＦＤや、不図示のＣＤ−ＲＯＭ、あるいは不図示のネットワークを経由して、外部メモリ１１として機能するハードディスク（ＨＤ）に保存することが可能となっている。そして、外部メモリ１１に保存されているアプリケーション２０１は、ＲＡＭ２にロードされてＣＰＵ１で実行される。なお、アプリケーション２０１およびプリンタドライバ２０３は、ネットワークを介してサーバ装置からホストコンピュータ３００にダウンロードした後、外部メモリ１１にインストールされる場合もある。
【００３１】
アプリケーション２０１からプリンタ１５０に対して印刷を行う際には、同様にＲＡＭ２にロードされ実行可能となっているグラフィックエンジン２０２を利用して出力（描画）を行う。
【００３２】
グラフィックエンジン２０２は、印刷装置ごとに用意されたプリンタドライバ２０３を外部メモリ１１からＲＡＭ２にロードし、アプリケーション２０１の出力をプリンタドライバ２０３に設定する。そして、アプリケーション２０１から受け取ったＧＤＩ（Graphic Device Interface）関数をＤＤＩ（Device Driver Interface）関数に変換して、プリンタドライバ２０３へＤＤＩ関数を出力する。
【００３３】
プリンタドライバ２０３は、グラフィックエンジン２０２から受け取ったＤＤＩ関数に基づいて、プリンタが認識可能な制御コマンド、例えばＰＤＬ（Page Description Language）に変換する。変換されたプリンタ制御コマンドは、ＯＳによってＲＡＭ２にロードされたシステムスプーラ２０４を経てインタフェイス２１経由でプリンタ１５０へ印刷データとして出力される仕組みとなっている。
【００３４】
本実施形態の印刷システムは、図２で示すプリンタとホストコンピュータからなる印刷システムに加えて、更に図３に示すように、アプリケーションからの印刷データを一旦中間コードデータでスプールする構成を有する。
【００３５】
図３は、図２のシステムを拡張したもので、グラフィックエンジン２０２からプリンタドライバ２０３へ印刷命令を送る際に、一旦中間コードからなるローカルスプールファイル３０３を生成する構成をとる。図２のシステムでは、アプリケーション２０１が印刷処理から開放されるのはプリンタドライバ２０３がグラフィックエンジン２０２からのすべての印刷命令をプリンタの制御コマンドへ変換し終った時点である。これに対して、図３のシステムでは、ローカルスプーラ３０２がすべての印刷命令を中間コードデータに変換し、ローカルスプールファイル３０３に出力した時点である。通常、後者の方が短時間で済む。また、図３で示すシステムにおいては、ローカルスプールファイル３０３の内容に対して加工することができる。これによりアプリケーションからの印刷データに対して、拡大縮小や、複数ページを１ページに縮小して印刷する、複数ジョブを結合する等、アプリケーションの持たない機能を実現することができる。
【００３６】
これらの目的のために、図２のシステムに対し、図３の様に中間コードデータでスプールする様、システムの拡張がなされている。なお、印刷データの加工を行うためには、通常プリンタドライバ２０３が提供する画面から設定を行い、プリンタドライバ２０３がその設定内容をＲＡＭ２上あるいは外部メモリ１１上に保管する。
【００３７】
以下、図３の詳細を説明する。
【００３８】
図に示す通り、この拡張された処理方式では、グラフィックエンジン２０２からの印刷命令であるＤＤＩ関数をディスパッチャ３０１が受け取る。ディスパッチャ３０１は、プリンタドライバ２０３に設定されている印刷データに関する加工設定（印刷設定）から結合する印刷データかどうか判断する。詳細は後述する。結合する印刷データである場合には、ディスパッチャ３０１は外部メモリ１１に格納されているローカルスプーラ３０２をＲＡＭ２にロードし、プリンタドライバ２０３ではなくローカルスプーラ３０２へ印刷命令（ＤＤＩ関数）を送付する。更に、ディスパッチャ３０１は外部メモリ１１に格納されているジョブ結合部３０４をＲＡＭ２にロードし、ジョブ結合部３０４に対してジョブ追加やジョブ結合終了などの通知を行う。ジョブ追加通知は、ディスパッチャ３０１がローカルスプーラ３０２に結合すべき印刷ジョブを１つ追加したことをジョブ結合部３０４に通知するものである。ジョブ結合終了通知は、印刷ジョブの結合を終了することをジョブ結合部３０４に通知するものである。本実施例ではディスパッチャ３０１がジョブ結合部３０４に通知しているが、ローカルスプーラ３０２が通知するように構成してもよい。
【００３９】
ローカルスプーラ３０２は、受け取った印刷命令を解析し、ページ単位に中間コードに変換してローカルスプールファイル３０３に出力する。このページ単位に格納されている中間コードのスプールファイルをページ描画ファイル（ＰＤＦ：Page DescriptionFile）と呼ぶ。また、ローカルスプーラ３０２は、プリンタドライバ２０３に設定されている印刷設定を取得してジョブ単位のファイルとしてローカルスプールファイル３０３に保存する。このジョブ単位に格納されている設定ファイルをジョブ設定ファイル（簡略してＳＤＦ：Spool Description Fileと呼ぶこともある）と呼ぶ。このジョブ設定ファイルについては後述する。なお、ローカルスプールファイル３０３は外部メモリ１１上にファイルとして生成するが、ＲＡＭ２上に生成されても構わない。
【００４０】
ジョブ結合部３０４は、ローカルスプールファイル３０３に含まれる中間コードのページ描画ファイルを、ローカルスプールファイル３０３に含まれる加工設定情報を含むジョブ設定ファイルに従って加工する。そして、ＧＤＩ関数を再生成し、もう一度グラフィックエンジン２０２経由で印刷する。その際、結合する印刷データを順次同じ印刷ジョブとして出力する。
【００４１】
ディスパッチャ３０１がプリンタドライバ２０３に設定されている印刷設定から結合しない印刷データと判断した場合には、ディスパッチャ３０１はローカルスプーラ３０２ではなく、プリンタドライバ２０３に印刷命令を送る。
【００４２】
プリンタドライバ２０３はグラフィックエンジン２０２から取得したＤＤＩ関数に基づいてページ記述言語等からなるプリンタ制御コマンドを生成し、システムスプーラ２０４経由でプリンタ１５０に出力する。
＜印刷ジョブ結合処理の概要説明＞
図４〜図７は、本実施形態を示す印刷システムにおける印刷ジョブ結合処理を説明するシーケンス図である。これらは、アプリケーション２０１から印刷すると、グラフィックエンジン２０２、ディスパッチャ３０１、ローカルスプーラ３０２を経由して、ローカルスプールファイル３０３に印刷データが保存され、ジョブ結合部３０４が再度印刷する流れを説明している。各シーケンス図において、アプリケーション２０１から印刷データを受け取るグラフィックエンジン２０２はＧＤＩ関数からＤＤＩ関数へ変換しているだけなので、省略している。ユーザがアプリケーション２０１からプリンタドライバ２０３の印刷設定のジョブ結合フラグをＯＮにして連続して印刷すると、そのユーザからの複数の印刷ジョブが１つのジョブに結合されて印刷する。ユーザが印刷設定のジョブ結合フラグをＯＦＦにして印刷すると、それぞれの印刷ジョブが単独のジョブとして印刷する。図８は、印刷設定画面の一例である。チェックボックス８０１をＯＮにして、ＯＫボタン８０２を押すと、プリンタドライバ２０３の印刷設定のジョブ結合フラグがＯＮになる。図４〜図７の各図では、ジョブ結合を終了する条件がそれぞれ異なる条件の場合を説明している。
【００４３】
図４は、ジョブ結合フラグＯＦＦで印刷すると、ジョブ結合処理を終了する場合のシーケンス図である。まず、プリンタドライバ２０３の印刷設定のジョブ結合フラグがＯＦＦになっている状態からＯＮにしてアプリケーション２０１から印刷すると、グラフィックエンジン２０２を経由してディスパッチャ３０１が印刷データを受け取る（ステップ４０１）。ディスパッチャ３０１は、プリンタドライバ２０３に設定されている印刷設定のジョブ結合フラグから結合する印刷データかどうか判断し、ジョブ結合フラグがＯＮになっているとローカルスプーラ３０２に印刷データを渡す（ステップ４０２）。ローカルスプーラ３０２は、ローカルスプールファイル３０３に、中間コードでページ描画ファイルとジョブ設定ファイルを保存する。更に、ディスパッチャ３０１は既に起動しているジョブ結合部３０４を探して、存在しなければ外部メモリ１１に格納されているジョブ結合部３０４をＲＡＭ２にロードし（ステップ４０３）、ジョブ結合部３０４にジョブ追加通知を送出する（ステップ４０４）。ジョブ結合部３０４はジョブ追加通知を受けると、最初の印刷データとしてローカルスプールファイル３０３から最も古い印刷データ（ページ描画ファイルとジョブ設定ファイル）を取り出す（ステップ４０５）。ジョブ設定ファイルと、この印刷ジョブを出力したユーザ名は、ＲＡＭ２のワーク領域に保存しておく（ステップ４０６）。ジョブ設定ファイルは、結合後のジョブ全体の印刷設定として用いる。この印刷ジョブを出力したユーザ名はジョブオーナーとして、この後 結合すべき印刷ジョブを抽出する条件として用いる。そして、ジョブ結合部３０４は、グラフィックエンジン２０２に対してステップ４０６で取り出したジョブ設定ファイルの印刷属性で新たに印刷を開始する。また、取り出したページ描画ファイルからＧＤＩ関数を再生成することにより描画データを送出する（ステップ４０７）。ただし、この後の印刷ジョブを同じジョブに追加するために、ジョブ終了命令は送出しない。引き続き、プリンタドライバ２０３の印刷設定のジョブ結合フラグがＯＮになっている状態でアプリケーション２０１から印刷する（ステップ４０８）。ステップ４０８はステップ４０１とは別のアプリケーションであってもよい。すると、最初の印刷と同様にグラフィックエンジン２０２、ディスパッチャ３０１を経由して、ローカルスプーラ３０２がローカルスプールファイル３０３に印刷データを保存する（ステップ４０９）。ジョブ結合部３０４はディスパッチャ３０１からジョブ追加通知を受け（ステップ４１０）、ステップ４０６でＲＡＭ２のワーク領域に保存されたジョブ抽出条件から、最初の印刷ジョブと同じオーナーの印刷データを取り出す（ステップ４１１）。同じホストコンピュータに複数のユーザがリモートログインして各ユーザが印刷を行うと、グラフィックエンジン２０２に対し複数のユーザからの印刷ジョブが混在する場合がある。そのため、別のオーナーの印刷ジョブが結合しないように、保存されたジョブ抽出条件から同じオーナーのジョブを抽出する。そして、ジョブ結合部３０４はステップ４０６でＲＡＭ２のワーク領域に保存されたジョブ設定ファイルに対して、ローカルスプ��ルファイル３０３から取り出した印刷データのジョブ設定ファイルの設定値を矛盾のない値に変更する（ステップ４１２）。（この設定値の変更処理を”丸める”ともいう。）例えば、通常セキュアプリントはジョブ単位で実施する機能なので、ステップ４０６で保存されたジョブ設定ファイル（最初の印刷ジョブの印刷設定）のセキュアプリントの設定値がＯＮならば、ステップ４１２でもセキュアプリントＯＦＦに丸める。そして、ジョブ結合部３０４は丸められたジョブ設定ファイルの印刷属性で、取り出したページ描画ファイルからＧＤＩ関数を再生成することにより、ステップ４０７で終了せずに待っているジョブに対して描画データを追加で送出する（ステップ４１３）。このように、結合したい文書をジョブ結合フラグＯＮで順次印刷するとステップ４０８〜４１３を繰り返して、同じジョブとして印刷する。一連の結合したい文書の印刷が終わった後に、プリンタドライバ２０３の印刷設定のジョブ結合フラグをＯＦＦにして結合せずに単独で印刷したい文書をアプリケーション２０１で印刷する（ステップ４１４）。ディスパッチャ３０１は、プリンタドライバ２０３に設定されている印刷設定のジョブ結合フラグから結合する印刷データかどうか判断し、ジョブ結合フラグがＯＦＦになっているとジョブ結合部３０４にジョブ結合終了通知を送出する（ステップ４１５）。また、ディスパッチャ３０１はプリンタドライバ２０３に印刷データを渡し（ステップ４１６）、通常の印刷がなされる。ジョブ結合部３０４はジョブ結合終了通知を受けると、ジョブ抽出条件として保存されているジョブオーナーからの通知か判定し（ステップ４１７）、終了せずに待っているジョブを終了する（ステップ４１８）。つまり、この場合のジョブ結合の終了条件は、ジョブ抽出条件のジョブオーナーからジョブ結合終了通知を受け取ることである。最後に、ローカルスプールファイル３０３に何も印刷ジョブがなければ、ジョブ結合部３０４は自身のプロセスを終了する（ステップ４１９）。
【００４４】
図５は、ジョブ結合フラグＯＮで一定時間印刷されないと、ジョブ結合処理を終了する場合のシーケンス図である。ステップ５０１〜５１３は、ステップ４０１〜４１３と同じである。アプリケーション２０１から何回か印刷された後、ジョブ結合部３０４はローカルスプールファイル３０３を監視している（ステップ５１４）。そして、前の印刷データを取り出してからあらかじめ定めた時間 ジョブ抽出条件のジョブオーナーから次の印刷データがスプールされないか判定し（ステップ５１５）、終了せずに待っているジョブを終了する（ステップ５１６）。つまり、この場合のジョブ結合の終了条件は、一定時間ジョブ抽出条件のジョブオーナーからジョブがスプールされないことである。このジョブ結合終了条件は、ジョブ終了を待ち続けて他の印刷が出来なくならないためのものである。最後のステップ５１７はステップ４１９と同じである。
【００４５】
図６は、プリンタドライバ２０３の印刷設定にジョブ結合終了フラグを設け、そのフラグをＯＮにして印刷すると、その印刷後にジョブ結合処理を終了する場合のシーケンス図である。図９は、ジョブ結合終了フラグの設定画面の一例である。この画面は、図８にチェックボックス９０１を追加している。チェックボックス９０１はチェックボックス８０１をＯＮにすると設定可能になり、チェックボックス９０１をＯＮにして、ＯＫボタン８０２を押すと、プリンタドライバ２０３の印刷設定のジョブ結合終了フラグがＯＮになる。まず、プリンタドライバ２０３の印刷設定のジョブ結合フラグがＯＦＦになっている状態からＯＮにし、ジョブ結合終了フラグがＯＦＦの状態でアプリケーション２０１から印刷する（ステップ６０１）。すると、ステップ４０２〜４０７と同様にしてジョブ結合部３０４が印刷する（ステップ６０２〜６０７）。そして、ステップ６０１と同様にしてジョブ結合フラグＯＮ，ジョブ結合終了フラグＯＦＦの状態でアプリケーション２０１から印刷する（ステップ６０８）。すると、ステップ４０９〜４１３と同様にしてジョブ結合部３０４が終了せずに待っているジョブに追加で印刷する（ステップ６０９〜６１３）。アプリケーション２０１から何回か印刷してステップ６０８〜６１３を繰り返した後、プリンタドライバ２０３の印刷設定のジョブ結合終了フラグをＯＦＦからＯＮに変更してアプリケーション２０１から印刷する（ステップ６１４）。すると、ステップ６０９〜６１３と同様にしてジョブ結合部３０４が終了せずに待っているジョブに追加で印刷する（ステップ６１５〜６１９）。更に、ジョブ結合部３０４は取り出したジョブ設定ファイルのジョブ結合終了フラグからジョブ結合を終了するか判断し（ステップ６２０）、終了せずに待っているジョブを終了する（ステップ６２１）。つまり、この場合のジョブ結合の終了条件は、ジョブ抽出条件のジョブオーナーからスプールされたジョブのジョブ結合終了フラグがＯＮであることである。最後に、ローカルスプールファイル３０３に何も印刷ジョブがなければ、ジョブ結合部３０４はステップ４１９と同様に自身のプロセスを終了する（ステップ６２２）。
【００４６】
図７は、プリンタドライバ２０３の印刷設定にジョブ結合数を設け、その数を設定して印刷すると、ジョブ結合数を設定した印刷を含めてジョブ結合数の回数だけ印刷が終わるとジョブ結合処理を終了する場合のシーケンス図である。図１０は、ジョブ結合数の設定画面の一例である。この画面は、図８にテキストボックス１００１を追加している。テキストボックス１００１はチェックボックス８０１をＯＮにすると設定可能になり、テキストボックス１００１に数値Ｎを入力して、ＯＫボタン８０２を押すと、プリンタドライバ２０３の印刷設定のジョブ結合数がＮに設定される。ジョブ結合フラグＯＮでジョブ結合数を設定して印刷すると、ＲＡＭ２のワーク領域にジョブ結合数のカウンタが保存される。その後ジョブ結合フラグＯＮでジョブ結合数を指定せずに印刷すると、カウンタを１つ減らして、設定したジョブ結合数分の印刷を行うとジョブ結合を終了する。ジョブ結合数の設定は、結合する印刷の最初に設定してもよいし途中でもよい。また、１度設定した後に再度設定してもよい。その場合、再設定時の設定値が有効になる。まず、プリンタドライバ２０３の印刷設定のジョブ結合フラグがＯＦＦになっている状態からＯＮにし、ジョブ結合数に数値Ｎを設定した状態でアプリケーション２０１から印刷する（ステップ７０１）。すると、４０２〜４０７と同様にしてジョブ結合部３０４が印刷する（ステップ７０２〜６０７）。ジョブ結合部３０４は、残りのジョブ結合数のカウンタとしてＲＡＭ２のワーク領域にＮ−１の数値を保存する（ステップ７０８）。次に、プリンタドライバ２０３の印刷設定のジョブ結合数に数字が設定されていない状態でアプリケーション２０１から印刷する（ステップ７０９）。すると、ステップ４０９〜４１３と同様にしてジョブ結合部３０４が終了せずに待っているジョブに追加で印刷する（ステップ７１０〜７１４）。ジョブ結合部３０４は、ＲＡＭ２のワーク領域に保存されている残りのジョブ結合数のカウンタを1つ減らす（ステップ７０８）。アプリケーション２０１から何回か印刷してステップ７０９〜７１５を繰り返した後、ジョブ結合部３０４はＲＡＭ２のワーク領域に保存されている残りのジョブ結合数のカウンタが０になっているか判断する（ステップ７１６）。カウンタが０であれば、終了せずに待っているジョブを終了する（ステップ７１７）。つまり、この場合のジョブ結合の終了条件は、ジョブ結合数が設定されたジョブを受け取った後、ジョブ抽出条件のジョブオーナーからスプールされたジョブをジョブ結合数の分だけ印刷することである。最後に、ローカルスプールファイル３０３に何も印刷ジョブがなければ、ジョブ結合部３０４はステップ４１９と同様に自身のプロセスを終了する（ステップ７１８）。
＜ディスパッチャ処理の詳細説明＞
次に、図４〜図７のシーケンス図におけるディスパッチャ３０１の処理について図１１のフローチャートを用いて説明する。
【００４７】
まず、グラフィックエンジン２０２から印刷命令を受け取ると、プリンタドライバ２０３に設定されている印刷設定のジョブ結合フラグがＯＮか判定し（ステップ１１０１）、ＯＮならば、とローカルスプーラ３０２に印刷データを渡す（ステップ１１０２）。そして、既に起動しているジョブ結合部３０４を探して（ステップ１１０３）、存在しなければ外部メモリ１１に格納されているジョブ結合部３０４をＲＡＭ２にロードする（ステップ１１０４）。そして、ジョブ結合部３０４にジョブ追加通知を送出して（ステップ１１０５）、処理を終了する。ジョブ追加通知を受けたジョブ結合部３０４の処理は後述する。
【００４８】
ステップ１１０１でジョブ結合フラグがＯＦＦと判定されたならば、ジョブ結合しない通常の印刷である。既に起動しているジョブ結合部３０４を探して（ステップ１１０６）、存在するならばジョブ結合部３０４にジョブ結合終了通知を送出する（ステップ１１０７）。
ステップ１１０６はステップ１１０３と同じ処理である。ジョブ結合終了通知を受けたジョブ結合部３０４の処理は後述する。その後、通常の印刷と同様にプリンタドライバ２０３に印刷データを渡し（ステップ１１０８）、処理を終了する。
＜ジョブ結合部処理の詳細説明＞
次に、図４〜図７のシーケンス図におけるジョブ結合部３０４の処理について図１２〜図１３のフローチャートを用いて説明する。
【００４９】
図１２は、ジョブ結合部３０４の処理のメインフローチャートである。
【００５０】
まず、ジョブ結合部３０４がディスパッチャ３０１から起動させられると、ディスパッチャ３０１から通知を受け取ったか判定し（ステップ１２０１）、受け取っていれば、その通知種別を判定する（ステップ１２０２）。通知種別がジョブ追加終了通知ならば、現在終了せずに待っているジョブが存在し（ステップ１２０３）、かつ、そのジョブオーナーからのジョブ結合終了通知ならば（ステップ１２０４）、終了せずに待っているジョブを終了する（ステップ１２０５）。最後に、ローカルスプールファイル３０３に印刷データが残っているか判定し（ステップ１２０６）、印刷データが残っているならステップ１２０１へ戻り、空ならばジョブ結合３０４を終了する。
【００５１】
ステップ１２０２でジョブ追加通知だと判定したなら、ジョブ追加処理を行い（ステップ１２０７）、ローカルスプールファイル３０３から印刷データを取り出して、終了せずに待っているジョブに追加で印刷する。詳細は後述する。ジョブ結合処理中でジョブ結合終了条件に合致したか判定し（ステップ１２０８）、合致したならステップ１２０５へ進み、ジョブを終了する。ジョブ結合処理中でジョブ結合終了条件に合致しないと判定されたならステップ１２０１へ戻り、ディスパッチャ３０１からの通知もしくは次の印刷データがスプールされるのを待つ。
【００５２】
次に、ステップ１２０１で通知を受け取っていないと判定したなら、ローカルスプールファイル３０３に印刷データが残っているか判定する（ステップ１２０９）。印刷データが残っているなら、ジョブ追加通知と同様にステップ１２０７へ進む。ローカルスプールファイル３０３が空ならば、空の状態があらかじめ定めた時間を超えたか判定する（ステップ１２１０）。一定時間超えて空ならばジョブ結合３０４を終了し、まだ超えていなければステップ１２０１へ戻り、ディスパッチャ３０１からの通知もしくは印刷データがスプールされるのを待つ。
【００５３】
図１３は、ジョブ追加処理ステップ１２０７の詳細なフローチャートである。
【００５４】
まず、終了せずに待っているジョブがないか探す（ステップ１３０１）。ジョブ結合フラグＯＮで最初に印刷した場合には、終了せずに待っているジョブはないので、ローカルスプールファイル３０３中で最も最初にスプールされた印刷データを取り出し（ステップ１３０２）、印刷データが取得できたか判定する（ステップ１３０３）。取得できたなら、ジョブがスプールされない時間を計測するために、ジョブ取得時間として現在の時間をＲＡＭ２のワーク領域に保存する（ステップ１３０４）。また、結合後のジョブ全体の印刷設定として用いるため、取り出した印刷データのジョブ設定ファイルをＲＡＭ２のワーク領域にも保存しておく（ステップ１３０５）。更に、この後 結合すべき印刷ジョブを抽出するための条件として、この印刷ジョブを出力したユーザ名をジョブオーナーとしてＲＡＭ２のワーク領域に保存しておく（ステップ１３０６）。そして、グラフィックエンジン２０２に対して取り出したジョブ設定ファイルの印刷属性で新たに印刷を開始し、取り出したページ描画ファイルからＧＤＩ関数を再生成することにより描画データを送出して（ステップ１３０７）、処理を抜ける。ただし、この後の印刷ジョブを同じジョブに追加するために、ジョブ終了命令は送出しない。
【００５５】
直前にジョブ結合フラグＯＮで印刷していれば、ステップ１３０１で終了せずに待っているジョブが見つかる。そこで、ステップ１３０６で保存したジョブ取得条件に合致する印刷データをローカルスプールファイル３０３から取り出し（ステップ１３０８）、印刷データが取得できたか判定する（ステップ１３０９）。取得できたなら、ステップ１３０４と同様にジョブ取得時間を保存する（ステップ１３１０）。そして、取り出したページ描画ファイルからＧＤＩ関数を再生成することにより描画データを送出して（ステップ１３１１）、処理を抜ける。この場合もステップ１３０７と同様にジョブ終了命令は送出しない。ステップ１３０９で印刷データが取得できなかったと判定すれば、ステップ１３０４もしくは１３１０で保存されたジョブ取得時間と現在時間を比較して、印刷データが取得できない時間があらかじめ定めた時間を超えたか判定する（ステップ１３１２）。一定時間を超えていれば終了せずに待っているジョブを終了し（ステップ１３１３）、一定時間を超えていなければそのまま処理を抜け、ローカルスプールファイル３０３に印刷データがスプールされるのを待つ。
〔第２実施形態〕
第１実施形態では、ジョブオーナー名をジョブ取得条件としてジョブを抽出することにより、同じユーザが順番に印刷した印刷ジョブを順次結合して印刷する例であった。しかし、ジョブオーナー名以外の条件をジョブ所得条件としてジョブを抽出することにより、複数のユーザが印刷した印刷ジョブを結合して、１つの印刷物として出力することができる。複数のユーザによる印刷の場合、印刷されるタイミングが必ずしも結合したい順にはならないので、プリンタドライバ２０３の印刷設定に結合する順序を示す設定値も設ける必要がある。図１５は、プリンタドライバ２０３の印刷設定にジョブ取得条件としてジョブＩＤ と結合順序を設定する画面の一例である。この画面は、図８〜図１０のプリンタドライバ２０３の印刷設定画面から呼び出されて表示される。テキストボックス１４０１にジョブＩＤを示す任意の文字列 、テキストボックス１４０２に結合順序を示す数値を入力して、ＯＫボタン１４０３を押すと、プリンタドライバ２０３の印刷設定のジョブ取得条件が設定される。ジョブ結合部は、ジョブ取得条件のジョブＩＤが同じでジョブ取得条件の結合順序が１から順番にローカルスプールファイル３０３から印刷データを取り出して、１つのジョブとして印刷する。
【００５６】
図１５は、第２実施形態における印刷ジョブ結合処理を説明するシーケンス図の一例で、第１実施形態の図１５のジョブ取得条件をジョブオーナーではなく、ジョブＩＤと結合順序に変更したものである。なお、図１５と同一の処理には同一の符号を付している。以下、変更点を中心に説明する。
【００５７】
まず、印刷するユーザ同士であらかじめ同じジョブＩＤを定め、またあらかじめ結合順序を定めておく。ジョブＩＤが異なっていたり、結合順序が連続していないと、正しく結合して印刷されないので、注意が必要である。そして、各ユーザは、プリンタドライバ２０３の印刷設定のジョブ結合フラグをＯＮにして、あらかじめ定めたジョブＩＤと結合順序をジョブ取得条件として設定して、アプリケーション２０１から印刷する（ステップ１５０１）。ジョブ結合部３０４は、ステップ５０４でジョブ追加通知を受け取ったら、ローカルスプールファイル３０３に保存されている印刷データのジョブ設定ファイルを古い順に確認する。そして、ジョブ取得条件の結合順序が１の印刷データを、最初の印刷データとしてローカルスプールファイル３０３から取り出す（ステップ１５０２）。そのために、図１３のステップ１３０２の処理を、結合順序が１の印刷データを取り出すように変更すればよい。また、図１３の場合のようにジョブＩＤと結合順序のジョブ取得条件が設定された印刷ジョブと、図５の場合のように設定されていないジョブが混在可能なように構成することもできる。その場合は、ステップ１３０２の処理を以下のように変更すればよい。つまり、ローカルスプールファイル３０３に保存されている印刷データのジョブ設定ファイルを古い順に確認し、ジョブ取得条件が設定されていない、もしくはジョブ取得条件が設定されていてかつ結合順序が１である印刷データを検索して取り出す。ステップ１５０２で結合順序が１の印刷データを取り出せたら、ジョブ設定ファイルと、この印刷ジョブを抽出した条件を、ＲＡＭ２のワーク領域に保存しておく（ステップ１５０３）。そして、ジョブ結合部３０４は、ステップ５０７と同様に新たに印刷を開始し、描画データを送出する。
【００５８】
ステップ１５０１とは別のユーザが、プリンタドライバ２０３の印刷設定のジョブ結合フラグをＯＮにして、あらかじめ定めたジョブＩＤと結合順序をジョブ取得条件として設定して、アプリケーション２０１から印刷する（ステップ１５０４）。ステップ５１０でジョブ追加通知を受け取ったら、既に開始しているジョブのジョブ取得条件をＲＡＭ２のワーク領域から読み取る。そのジョブ取得条件の結合順序を１つ増やして、ローカルスプールファイル３０３からジョブ設定ファイルのジョブ取得条件に合致する印刷データを取り出す（ステップ１５０５）。印刷データが取り出せたら、ステップ５１２と同様に印刷データのジョブ設定ファイルの設定値を矛盾のない値に変更し、ＲＡＭ２のワーク領域に保存されたジョブ取得条件をステップ１５０５で用いた結合順序で更新する。そして、ジョブ結合部３０４は、ステップ５１３と同様に描画データを追加で送出する。このように、このように、複数のユーザから何回か印刷された後、ジョブ結合部３０４はローカルスプールファイル３０３から次の結合順序取り出そうと監視する（ステップ５１４）。そして、前の印刷データを取り出してからあらかじめ定めた時間 ジョブ抽出条件に合致する次の印刷データがスプールされないか判定し（ステップ５１５）、終了せずに待っているジョブを終了する（ステップ５１６）。
【００５９】
ここでは、第１実施形態の図５のジョブ取得条件をジョブオーナーではなく、ジョブＩＤと結合順序に変更した処理シーケンスを説明したが、図６のジョブ取得条件をジョブＩＤと結合順序に変更した構成も可能である。
【００６０】
このようにして、あらかじめ同じジョブＩＤを定めておき、結合順序が１から順番に抜けがないように振り分けておけば、複数のユーザが印刷しても意図した順番に１つのジョブに結合して印刷することができる。
【００６１】
ジョブＩＤや結合順序は、ユーザが設定しなくても別の手段で与えてもよい。例えば、ユーザの所属部署名をジョブＩＤとして自動的に設定するようにすれば、同じ部署からの印刷は１ジョブとして印刷される。また、文書名の最後に数字を付けるようにし、その数字を結合順序として自動的に設定するようにすれば、文書名の最後の数字の順に１つのジョブに結合して印刷することができる。
〔第３実施形態〕
第１実施形態および第２実施形態では、結合する印刷ジョブが全て揃わなくても最初の印刷ジョブがスプールされたら印刷を開始する例であった。しかし、結合すべき印刷ジョブをずっと待ち続けると他のユーザがプリンタを使えないので、図５のように一定時間ジョブ取得条件に合致する印刷ジョブがスプールされなければジョブを終了する必要がある。そこで、ジョブ取得条件に合致するジョブをＲＡＭ２や外部メモリ１１に一時的に保存して、全て揃ったら印刷を開始するようにすると、プリンタの占有時間を最小限にして印刷ジョブを結合して印刷することができるようになる。
【００６２】
図１６は、第１実施形態における図４において結合するジョブが全て揃ってから印刷を開始するように変更したものである。なお、図４と同一の処理には同一の符号を付している。以下、変更点を中心に説明する。
【００６３】
ステップ４０６の後、ジョブ結合部３０４はステップ４０５で取得した印刷データをＲＡＭ２や外部メモリ１１に一時的に保存する（ステップ１６０１）。同様に、結合したい文書をジョブ結合フラグＯＮで順次印刷すると、ジョブ結合部３０４はステップ４１２の後、ステップ４１１で取得した印刷データを順次ＲＡＭ２や外部メモリ１１に一時的に保存する（ステップ１６０２）。ステップ４１７でジョブ結合終了と判定されたら、グラフィックエンジン２０２に対してステップ４０６で取り出したジョブ設定ファイルの印刷属性で新たに印刷を開始する（ステップ１６０３）。そして、印刷ステップ１６０１や１６０２で一時保存した印刷データをジョブ終了しないで順次印刷する（ステップ１６０４）。一時保存した印刷データを全て印刷したら、ステップ４１８と同様にジョブ終了する。
【符号の説明】
【００６４】
３００  ホストコンピュータ
２０３  プリンタドライバ
３０４  ジョブ結合部
【図１】
2012113591.tif 000003
【図２】
2012113591.tif 000004
【図３】
2012113591.tif 000005
【図４】
2012113591.tif 000006
【図５】
2012113591.tif 000007
【図６】
2012113591.tif 000008
【図７】
2012113591.tif 000009
【図８】
2012113591.tif 000010
【図９】
2012113591.tif 000011
【図１０】
2012113591.tif 000012
【図１１】
2012113591.tif 000013
【図１２】
2012113591.tif 000014
【図１３】
2012113591.tif 000015
【図１４】
2012113591.tif 000016
【図１５】
2012113591.tif 000017
【図１６】
2012113591.tif 000018