(57)【特許請求の範囲】
【請求項１】
描画データを生成するクライアント装置と、
クライアント装置から受信した描画データを格納する描画データ格納手段と、
前記クライアント装置から受信した前記描画データの印刷要求に基づいて、該描画データの内容を特定するための情報を含む出力要求を生成し、該出力要求を前記描画データの出力先ごとに格納する出力要求格納手段と、
前記出力要求格納手段に格納された出力要求に基づいて、該出力要求により特定される内容の前記描画データを前記描画データ格納手段から読み出して、該出力要求に対応する出力先に転送する描画データ転送手段とを備えたサーバ装置からなることを特徴とする印刷システム。
【請求項２】
前記出力要求は、前記描画データを識別する識別情報及び前記描画データの印刷頁を指定する頁情報を含んでいることを特徴とする請求項１記載の印刷システム。
【請求項３】
複数のアプリケーションにより作成された描画データを格納する描画データ格納手段と、
前記複数のアプリケーションにより作成された描画データを統合した仮想的なドキュメントを生成する仮想ドキュメント生成手段と、
前記仮想的なドキュメントの内容を特定するための情報を含む出力要求を生成し、該出力要求を前記仮想的なドキュメントの出力先ごとに格納する出力要求格納手段と、
前記出力要求格納手段に格納された出力要求に基づいて、該出力要求により特定される内容の前記仮想的なドキュメントに含まれる描画データを、前記描画データ格納手段から読み出して、該出力要求に対応する出力先に転送する描画データ転送手段とを備えることを特徴とする印刷システム。
【請求項４】
クライアント装置から受信した描画データを前記描画データの出力先と独立に格納する機能と、
前記クライアント装置から受信した前記描画データの印刷要求に基づいて、該描画データの内容を特定するための情報を含む出力要求を生成し、該出力要求を前記描画データの出力先ごとに格納する機能と、
前記描画データの出力要求に基づいて、前記出力先と独立に格納され、該出力要求により特定される内容の描画データを読み出して、該出力要求に対応する出力先に転送する機能とをコンピュータに実行させるプログラムを格納したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は印刷システムに関し、特に、クライアントサーバ印刷システムに適用して好適なものである。
【０００２】
【従来の技術】
近年、オフィス業務や基幹業務向けコンピュータのオペレーティングシステムとして、マイクロソフト社のＷｉｎｄｏｗｓの普及が目覚ましい。
【０００３】
ところが、オペレーティングシステムとして、Ｗｉｎｄｏｗｓを用いた場合、Ｗｉｎｄｏｗｓはパーソナル指向のオペレーティングシステムであることから、基幹業務における大量印刷には不向きな点がある。例えば、Ｗｉｎｄｏｗｓでは、１回の印刷アクションで、複数のプリンタに同時に印刷することができない。このため、資料の配布等を行うとき、繰り返し印刷起動をかけ、印刷物を手作業で仕分けし、さらに郵便等で配布する手間がかかる。
【０００４】
また、昨今のメイルの普及により、ワードプロセッサなどにより作成された少量かつ固定的ドキュメントは、メイルで代替えすることができるが、アプリケーション稼働による集計データ等の管理帳票の印刷や大量のドキュメントの印刷などについては、メイルでは代替不可能である。さらに、大量の印刷を行う時、複数のプリンタに分散して印刷することができず、開始頁と終了頁と出力先プリンタとを各プリンタごとに繰り返し指定する必要がある。
【０００５】
これらの問題を解決するため、従来では、基幹業務帳票印刷用の専用のＡＰＩ（アプリケーション・インタフェース関数）を用意し、そのＡＰＩを用いて、Ｗｉｎｄｏｗｓなどのオペレーティングシステムの有する印刷制御の不備を補う方法があった。
【０００６】
図１２は、従来の分散印刷方法を説明するブロック図である。図１２において、アプリケーション２０１は、専用の印刷制御関数として、ＡＰＩ２０３を呼び出す。ここで、ＡＰＩ２０３には、プリンタ名称、開始頁及び終了頁の組を複数受け取ることができるインターフェースが設られ、ＡＰＩ２０３にこのインターフェースを設けることにより、分散印刷を可能としている。ＡＰＩ２０３が、パラメータ２０２として、プリンタ名称、開始頁及び終了頁の組を複数受け取るとともに、描画データをアプリケーション２０１から受け取ると、受け取ったパラメータ２０２と描画データとを、オペレーティングシステム２０４及びファイルドライバ２０５を経由してスプールファイル２０６に格納する。
【０００７】
一方、スプールライタ２０７は、ある決められたディレクトリ（スプールディレクトリ）をポーリングしており、完成したスプールファイル２０６を検知すると、スプールファイル２０６の読み出しを開始し、スプールファイル２０６内に格納されたパラメータ２０２を取り出す。また、各ページの描画データをスプールファイル２０６から順次読み出すとともに、ＧＤＩ２０８を呼び出し、パラメータ２０２の情報に従って、指定の頁の印刷を指定のプリンタ２１１ａ、２１１ｂに行わせる。なお、ＧＤＩ２０８は、オペレーティングシステム２０４と密接に結びついたグラフィカルデバイス描画用の関数群である。
【０００８】
例えば、スプールファイル２０６に格納される１００頁分の印刷データを２台のプリンタ２１１ａ、２１１ｂに均等に分配して印刷するために、プリンタ２１１ａのプリンタ名称、開始頁＝１、終了頁＝５０、プリンタ２１１ｂのプリンタ名称、開始頁＝５１、終了頁＝１００を、パラメータ２０２として与えたものとする。この場合、ＧＤＩ２０８では、プリンタ単位の描画を取り扱うため、スプールライタ２０７は、まず、プリンタ２１１ａを指定して、ＧＤＩ２０８を呼び出す。すると、プリンタ２１１ａ専用のスプールキューに１頁から５０頁までの印刷データが出力され、スプールファイル２０９ａが生成される。次に、スプールライタ２０７は、プリンタ２１１ｂを指定して、ＧＤＩ２０８を呼び出す。すると、プリンタ２１１ｂ専用のスプールキューに５１頁から１００頁までの印刷データが出力され、スプールファイル２０９ｂが生成される。
【０００９】
スプールファイル２０９ａ、２０９ｂが生成されると、各プリンタ２１１ａ、２１１ｂ専用のプリンタドライバ２１０ａ、２１０ｂによって、プリンタ２１１ａ、２１１ｂの物理的コマンドコードに変換された後、各々のプリンタ２１１ａ、２１１ｂに出力され印刷される。
【００１０】
【発明が解決しようとする課題】
しかしながら、従来のＡＰＩ２０３を提供する手法では、ＡＰＩ２０３を呼び出すことが可能な専用のアプリケーション２２１だけにしか、適用することができなかった。このため、ＡＰＩ２０３を呼び出す機能がないワードプロセッサなどの汎用パッケージアプリケーションには適用することができないという問題があった。また、提供されたＡＰＩ２０３を用いて印刷用のアプリケーション２０１を構築しなければならないという問題もあった。
【００１１】
また、１つのアプリケーション２０１から印刷要求されたドキュメント（文書）を複数のプリンタ２１１ａ、２１１ｂに同時に分散して印刷を行う場合、描画データがプリンタ２１１ａ、２１１ｂごとに分別された待ち行列（以下、プリンタキューと言う）に予め振り分けられ、描画データをプリンタキューにページ単位で格納し直すことが行われる。このため、各プリンタ２１１ａ、２１１ｂに対する印刷するページの配分をプリンタキューに格納した後に変更するには、描画データをスプールファイル２０６から読み出し、その描画データをプリンタキューごとに再度格納し直す必要があり、印刷するページの配分の変更が非常に困難になるという問題があった。
【００１２】
また、アプリケーション２０１が出力した描画データがスプールファイル２０６に格納された後、スプールファイル２０６に格納されている描画データが、スプールファイル２０６とは別個のスプールファイル２０９ａ、２０９ｂに再格納されるため、スプール処理に時間がかかるという問題もあった。
【００１３】
また、従来のＡＰＩ２０３を提供する手法では、１つのアプリケーション２０１が出力したドキュメント単位に印刷が行われるため、複数のアプリケーションが出力するドキュメントにより、１つのドキュメント文書（以下、仮想ドキュメントと言う）を構成する場合、アプリケーション２０１を複数起動して開始頁、終了頁を指定して印刷動作を行わなければならなず、操作が煩雑になるという問題もあった。
【００１４】
そこで、本発明の第１の目的は、印刷データのスプール処理を効率的に行うことが可能な印刷システムを提供することである。
また、本発明の第２の目的は、複数のアプリケーションが出力したドキュメントを統一して扱うことが可能な印刷システムを提供することである。
【００１５】
【課題を解決するための手段】
上述した課題を解決するために、本発明によれば、描画データを格納する描画データ格納手段と、前記描画データの出力要求を、前記描画データの出力先ごとに格納する出力要求格納手段と、前記描画データの出力要求に基づいて、前記描画データを前記描画データ格納手段から前記出力先に転送する描画データ転送手段とを備えている。
【００１６】
このことにより、描画データ格納手段に格納されている描画データを、描画データの出力先に対応させて再度格納し直すことなく、出力先に転送する描画データを描画データ格納手段から直接読み出して、出力先に転送することが可能となり、描画データを出力先に転送する際に、描画データをその出力先ごとに再格納する処理を省略することが可能となることから、スプール処理を高速化することが可能となる。
【００１７】
また、本発明の一態様によれば、前記出力要求は、前記描画データを識別する識別情報及び前記描画データの印刷頁を指定する頁情報を含んでいる。
このことにより、出力する描画データの印刷頁を変更する場合には、出力要求格納手段に格納されている頁情報を変更するだけでよく、印刷頁の変更に対応した描画データの再格納が不要になることから、スプール処理を効率的に行うことが可能となる。
【００１８】
また、本発明の一態様によれば、複数のアプリケーションにより作成された描画データを格納する描画データ格納手段と、前記複数のアプリケーションにより作成された描画データに基づいて、仮想的なドキュメントを生成する仮想ドキュメント生成手段と、前記仮想的なドキュメントの出力要求を、前記仮想的なドキュメントの出力先ごとに格納する出力要求格納手段と、前記仮想的なドキュメントの出力要求に基づいて、前記仮想的なドキュメントに含まれる描画データを、前記描画データ格納手段から前記出力先に転送する描画データ転送手段とを備えている。
【００１９】
このことにより、複数のアプリケーションにより作成された描画データを統合し、この統合された描画データを一体的に扱うことが可能となり、各アプリケーションごとの印刷指定を何度も行うことなく、統合された仮想的なドキュメントについての印刷指定を１回行うだけで、複数のアプリケーションにより作成された描画データの印刷を行うことが可能となることから、複数のアプリケーションを扱う印刷処理を効率的に行うことが可能となる。
【００２０】
また、仮想的なドキュメントの描画データを、その描画データの出力先に対応させて構成することなく、仮想的なドキュメントの出力要求に基づいて、仮想的なドキュメントに含まれる描画データを描画データ格納手段から順次に読み出して、出力先に転送することが可能となり、仮想的なドキュメントの描画データを出力先に転送する際に、仮想的なドキュメントごとの描画データを格納しておく処理を省略することが可能となることから、複数のアプリケーションを扱うスプール処理を高速化することが可能となる。
【００２１】
【発明の実施の形態】
以下、本発明の一実施例に係わる印刷システムについて図面を参照しながら説明する。なお、以下の実施例では、Ｗｉｎｄｏｗｓによるオペレーティングシステム下における出力装置運用支援（以下ＣＡＰＣＡＬと称する）制御方式について説明する。
【００２２】
図１は、本発明の一実施例に係わる印刷システムの構成を示すブロック図である。図１において、クライアント１００とサーバ１０３とが通信ネットワーク１０１、１０２を介して接続され、サーバ１０３はプリンタ９と接続されている。ここで、通信ネットワーク１０２は、例えば、ＬＡＮ（ローカルエリアネットワーク）、通信ネットワーク１０１は、例えば、ＬＡＮ、ＷＡＮ（ワイドエリアネットワーク）、インターネットである。クライアント１００には、アプリケーション１、ＧＤＩ２、Ｗｉｎｄｏｗｓ印刷制御部３及びクライアント制御部４が設けられ、サーバ１０３には、Ｗｉｎｄｏｗｓ印刷制御部５、サーバ制御部６、ＧＤＩ７及びプリンタ出力制御部８が設けられている。ここで、ＧＤＩ２、７は、Ｗｉｎｄｏｗｓのプログラムが画面表示やプリンタ９への印刷を行う際に利用するインターフェース（ＡＰＩ）である。
【００２３】
Ｗｉｎｄｏｗｓによる印刷処理を行う場合、Ｗｉｎｄｏｗｓ印刷制御部３、５による処理が行われ、クライアント１００側で生成された印刷データは通信回線１０２を介してサーバ側へ送れられる。一方、ＣＡＰＣＡＬ制御を行う場合、クライアント制御部４及びサーバ制御部６による処理が行われ、クライアント１００側で生成された印刷データは通信回線１０１を介してサーバ側へ送られる。なお、ＣＡＰＣＡＬ制御を選択する場合、ＣＡＰＣＡＬ制御用に設けられたＣＡＰＣＡＬドライバをアプリケーション１で指定してＧＤＩ２を呼び出す。
【００２４】
図２は、図１のクライアント制御部４の構成を説明するブロック図である。図２において、クライアント制御部４には、ＣＡＰＣＡＬドライバ１４、ＣＡＰＣＡＬドライバプロパティ制御スレッド１５、出力制御情報ファイル１７、ジョブ記述ファイル１８、ＥＭＦファイル１９、２４、ＣＡＰＣＡＬクライアント定義ファイル２０、ＣＡＰＣＡＬプリントプロセッサ２１、ＣＡＰＣＡＬジョブ記述ファイル２３、ＣＡＰＣＡＬ転送先定義ファイル２５、ＣＡＰＣＡＬクライアントメインプロセス２６及びＣＡＰＣＡＬジョブ転送スレッド２７が設けられている。また、Ｗｉｎｄｏｗｓ印刷制御部３には、スプーラプロセス１１、ローカルプリントプロバイダ１２及びプリントプロセッサ１３が設けられている。ここで、クライアント制御部４は、Ｗｉｎｄｏｗｓによるオペレーティングシステム上で稼働するアプリケーション１が描画した印刷データをＣＡＰＣＡＬの処理環境に取り込み、サーバ１０３へ転送するまでの処理を制御する。
【００２５】
アプリケーション１が描画した印刷データをＣＡＰＣＡＬ環境で処理する場合、アプリケーション１は、仮想ドライバとして設けられたＣＡＰＣＡＬドライバ１４を指定し、ＧＤＩ２を呼び出す。なお、ＣＡＰＣＡＬドライバ１４は、実際のプリンタに対応するドライバとは別個に設けられた仮想的なものであり、Ｗｉｎｄｏｗｓのプリンタドライバとは別個独立のものである。
【００２６】
ＧＤＩ２が呼び出されると、ＣＡＰＣＡＬドライバ１４から描画機能を取得し、アプリケーション１の要求した描画プリミティブをＣＡＰＣＡＬドライバ１４が有する描画機能に変換して、システムスプールキュー１６にスプールする。このシステムスプールキュー１６には、印刷要求したユーザ名や、アプリケーション名などを格納したジョブ記述ファイル１８と、描画情報をフォーマット化して格納したＥＭＦファイル１９が作成される。ＥＭＦとは、Ｅｎｈａｎｃｅｄ  Ｍｅｔａ−Ｆｉｌｅの略で、Ｗｉｎｄｏｗｓにおける描画データの論理的な格納形式である。なお、ジョブ記述ファイル１８及びＥＭＦファイル１９の形式は、Ｗｉｎｄｏｗｓ標準の形式と完全に同一である。このため、ジョブ記述ファイル１８及びＥＭＦファイル１９は、Ｗｉｎｄｏｗｓに備わっているデフォルト機能により生成させることができる。
【００２７】
また、ＣＡＰＣＡＬドライバ１４は、ＣＡＰＣＡＬ特有の出力制御情報を出力制御情報ファイル１７として、システムスプールキュー１６に書き込む。なお、この出力制御情報は、ＣＡＰＣＡＬドライバ１４側からダイアログ画面を開き、配布や分散などの印刷条件をオペレータに指定させることにより、設定することができる。
【００２８】
アプリケーション１の全描画データのスプールが完了すると、ＣＡＰＣＡＬプリントプロセッサ２１が呼び出される。このＣＡＰＣＡＬプリントプロセッサ２１の呼び出しは、アプリケーション１でＣＡＰＣＡＬドライバ１４を指定することにより行われる。なお、アプリケーション１で他のドライバが指定された場合は、Ｗｉｎｄｏｗｓに備わっているプリントプロセッサ１３が呼び出され、Ｗｉｎｄｏｗｓによる印刷処理を行うことができる。
【００２９】
ＣＡＰＣＡＬプリントプロセッサ２１は、システムスプールキュー１６からジョブ記述ファイル１８と出力制御情報ファイル１７の内容を取り込み、ＣＡＰＣＡＬスプールキュー２２にＣＡＰＣＡＬジョブ記述ファイル２３として書き込む。ここで、ＣＡＰＣＡＬクライアント定義ファイル２０には、出力制御情報のデフォルト値が定義されており、出力制御情報ファイル１７に出力制御情報が格納されていない場合は、ＣＡＰＣＡＬクライアント定義ファイル２０から出力制御情報を取り込む。
【００３０】
また、ＣＡＰＣＡＬプリントプロセッサ２１は、システムスプールキュー１６のＥＭＦファイル１９を、そのままＣＡＰＣＡＬスプールキュー２２のＥＭＦファイル２４に書き込む。ＣＡＰＣＡＬジョブ記述ファイル２３及びＥＭＦファイル２４が、ＣＡＰＣＡＬスプールキュー２２へ書き込まれると、ＣＡＰＣＡＬプリントプロセッサ２１は、このことをＣＡＰＣＡＬジョブ転送スレッド２７に通知する。
【００３１】
ＣＡＰＣＡＬジョブ転送スレッド２７は、予め定義された転送手段に基づいて、ＣＡＰＣＡＬジョブ記述ファイル２３及びＥＭＦファイル２４の内容をサーバ１０３に転送する。なお、転送手段及び転送先のサーバ名は、ＣＡＰＣＡＬ転送先定義ファイル２５に格納されており、ＣＡＰＣＡＬジョブ転送スレッド２７は、ＣＡＰＣＡＬ転送先定義ファイル２５の内容に従って、転送手段及び転送先のサーバ１０３を決定する。なお、転送手段として、ファイル転送プロトコル（ｆｔｐ）を用いた通信ネットワーク２８やメイルの添付ファイルを用いた通信ネットワーク２９が使用可能である。また、これら以外の転送手段を用いるようにしてもよい。
【００３２】
このように、仮想ドライバとしてのＣＡＰＣＡＬドライバ１４をクライアント制御部４に設け、このＣＡＰＣＡＬドライバ１４により出力情報制御ファイル１７をシステムスプールキュー１６にスプールさせる。このＣＡＰＣＡＬドライバ１４は、仮想的に設けられたものであり、特定のプリンタ機種やメーカに依存することがないため、Ｗｉｎｄｏｗｓに予め備わっている印刷機能では実現不可能な機能をＣＡＰＣＡＬドライバ１４上で独自に構築することが可能となり、ドキュメント配布処理、分散印刷処理、配布先自動検出処理、プリンタエラー及び印刷完了の通知処理等を容易に実現することが可能となる。
【００３３】
また、Ｗｉｎｄｏｗｓ上のＧＤＩ２を利用して、ジョブ記述ファイル１８及びＥＭＦファイル１９をシステムスプールキュー１６にスプールさせることにより、ジョブ記述ファイル１８及びＥＭＦファイル１９の形式を、Ｗｉｎｄｏｗｓ標準の形式と一致させることが可能となり、Ｗｉｎｄｏｗｓのアプリケーションインタフェースを一切変更せずに、汎用パッケージソフトを含むＷｉｎｄｏｗｓ上で動作する全てのアプリケーションについて、ドキュメント配布処理、分散印刷処理、配布先自動検出処理、プリンタエラー及び印刷完了の通知処理等を容易に実現することが可能となる。
【００３４】
図３は、図１のサーバ制御部６の構成を説明するブロック図である。図３において、サーバ制御部６には、メイル用のＣＡＰＣＡＬ受信スレッド３０、ｆｔｐ用のＣＡＰＣＡＬ受信スレッド３１、ＣＡＰＣＡＬサーバメインプロセス３２、ＣＡＰＣＡＬジョブ記述ファイル３４、ＥＭＦファイル３５、ジョブ制御ファイル３６、配布分散処理スレッド３７、出力制御ファイル３９、ＣＡＰＣＡＬサーバ側定義ファイル４０、プリンタ別出力スレッド４１、４２及びＣＡＰＣＡＬジョブ転送スレッド４３が設けられている。
【００３５】
ＣＡＰＣＡＬサーバメインプロセス３２によりＣＡＰＣＡＬ受信スレッド３０、３１が起動されると、ＣＡＰＣＡＬ受信スレッド３０、３１は、ＣＡＰＣＡＬジョブ転送スレッド２７から送信されたＣＡＰＣＡＬジョブ記述ファイル２３及びＥＭＦファイル２４を受信する。そして、受信したＣＡＰＣＡＬジョブ記述ファイル２３及びＥＭＦファイル２４の内容を、ＣＡＰＣＡＬスプールドキュメントキュー３３のＣＡＰＣＡＬジョブ記述ファイル３４及びＥＭＦファイル３５に書き込む。ここで、ＣＡＰＣＡＬ受信スレッド３０、３１は、ファイル名（ジョブＩＤ）が重複しないように管理を行う。ＣＡＰＣＡＬスプールドキュメントキュー３３への書き込みが完了したら、ＣＡＰＣＡＬサーバメインプロセス３２は配布分散処理スレッド３７を起動し、ＣＡＰＣＡＬスプールドキュメントキュー３３への書き込み完了を、配布分散処理スレッド３７に通知する。
【００３６】
配布分散処理スレッド３７は、ＣＡＰＣＡＬジョブ記述ファイル３４から出力制御情報を取り込む。また、ＣＡＰＣＡＬサーバ側定義ファイル４０の内容を予め読み込んでおく。そして、配布分散処理スレッド３７は、出力制御情報及びサーバ側定義ファイル４０の内容から、出力プリンタ及び出力する開始頁、終了頁を検出し、ジョブ制御ファイル３６を生成する。ジョブ制御ファイル３６には、プリンタ名及びＣＡＰＣＡＬプリントジョブＩＤが格納される。ここで、ＣＡＰＣＡＬプリントジョブＩＤは、ＣＡＰＣＡＬスプールプリントキュー３８ごとにユニークに与えられるＩＤである。また、配布分散処理スレッド３７は、出力プリンタ及び出力する開始頁、終了頁を検出すると、出力プリンタ９ごとに設けられるＣＡＰＣＡＬスプールプリントキュー３８に印刷要求を投入する。
【００３７】
配布分散処理スレッド３７は、ＣＡＰＣＡＬスプールプリントキュー３８に印刷要求を投入すると、出力制御ファイル３９を生成する。この出力制御ファイル３９には、ＣＡＰＣＡＬジョブＩＤ、開始頁、終了頁及びＷｉｎジョブＩＤが格納される。ここで、ＣＡＰＣＡＬジョブＩＤは、ＣＡＰＣＡＬシステムが独自にユニークに作成する管理上のＩＤであり、このＣＡＰＣＡＬジョブＩＤを指定することにより、ＣＡＰＣＡＬスプールドキュメントキュー３３に格納されているＣＡＰＣＡＬジョブ記述ファイル３４の内容及びＥＭＦファイル３５の内容を特定することができる。
【００３８】
ＣＡＰＣＡＬサーバ側定義ファイル４０には、配布先名とプリンタ名（またはサーバ名）との対応関係が格納されており、配布先が論理名で特定されている場合においても、ＣＡＰＣＡＬサーバ側定義ファイル４０を参照することにより、出力プリンタを決定することができる。ＣＡＰＣＡＬスプールプリントキュー３８への印刷要求の投入が完了したら、印刷要求があったプリンタ９を専門に受け持つプリンタ別出力スレッド４１通知する。
【００３９】
プリンタ別出力スレッド４１は、ＣＡＰＣＡＬスプールプリントキュー３８の出力制御ファイル３９に格納されているＣＡＰＣＡＬジョブＩＤを参照することにより、ＣＡＰＣＡＬスプールドキュメントキュー３３に格納されているＣＡＰＣＡＬジョブ記述ファイル３４及びＥＭＦファイル３５を特定する。そして、特定されたＣＡＰＣＡＬジョブ記述ファイル３４及びＥＭＦファイル３５の内容のうち、出力制御ファイル３９で指定される開始頁から終了頁までの部分を、ＣＡＰＣＡＬスプールドキュメントキュー３３から取り出し、ＧＤＩ７を呼び出すことにより、Ｗｉｎｄｏｗｓ印刷制御５に描画データが渡るようにする。
【００４０】
なお、出力制御情報及びＣＡＰＣＡＬサーバ側定義ファイル４０の内容により、出力プリンタとして、サーバ１０３が管理しているプリンタ９以外のプリンタが指定されている場合、配布分散処理スレッド３７は、ＣＡＰＣＡＬジョブ転送スレッド４３から通信ネットワーク４４を介し、指定されているプリンタを管理しているサーバに印刷要求を送る。
【００４１】
このように、ＣＡＰＣＡＬスプールプリントキュー３８に、ＣＡＰＣＡＬスプールドキュメントキュー３３に格納されているＣＡＰＣＡＬジョブ記述ファイル３４及びＥＭＦファイル３５の内容を書き込むのではなく、ＣＡＰＣＡＬジョブ記述ファイル３４及びＥＭＦファイル３５の内容を特定する情報を書き込む。そして、プリンタ別出力スレッド４１、４２が描画データをＧＤＩ７に送る際には、ＣＡＰＣＡＬスプールプリントキュー３８から描画データを取り出すのではなく、出力制御ファイル３９で指定される情報に従って、ＣＡＰＣＡＬスプールドキュメントキュー３３から描画データを取り出すようにする。
【００４２】
このことにより、ＣＡＰＣＡＬスプールプリントキュー３８に描画データを書き込む必要がなくなり、スプール処理を高速化することが可能となる。また、印刷頁を変更する場合は、出力制御ファイル３９の印刷頁を書き換えるだけでよく、ＣＡＰＣＡＬスプールプリントキュー３８への描画データの再書き込みを行う必要がなくなることから、印刷頁の変更など容易に行うことが可能となる。
【００４３】
図４は、図１のプリンタ出力制御部８の構成を説明するブロック図である。図４において、プリンタ出力制御部８には、セントロポートモニタ４８及びプリンタ出力管理部５０が設けられ、サーバ制御部６には、ＣＡＰＣＡＬサーバメインプロセス３２、ＥＭＦファイル３５及びプリンタ別出力スレッド４１が設けられ、Ｗｉｎｄｏｗｓ印刷制御部５には、Ｒａｗスプールファイル４６、プリントプロセッサ４７及びスプーラプロセスメイン４９が設けられ、クライアント１００には、ＣＡＰＣＡＬクライアントメインプロセス２６が設けられている。
【００４４】
プリンタ別出力スレッド４１は、ＣＡＰＣＡＬスプールドキュメントキュー３５からＥＭＦファイル３５を取り出し、ＧＤＩ７を呼び出すことにより、Ｗｉｎｄｏｗｓ印刷制御部５に描画データを送る。ＧＤＩ７は、印刷指定されたプリンタ９用のプリンタドライバ４５と交信し、印刷指定されたプリンタ９専用のコマンド（ＥＳＣシーケンス）にＥＭＦファイル３５を変換する。変換して得られたＥＳＣシーケンスは、Ｗｉｎｄｏｗｓのシステムスプールキューに格納される。これをＲａｗスプールファイル４６と言う。Ｒａｗスプールファイル４６は、純粋なプリンタコマンド（ＥＳＣシーケンス）だけで構成される。Ｒａｗスプールファイル４６は、Ｗｉｎｄｏｗｓのスプーラプロセスメイン４９によりプリントプロセッサ４７で読み込まれ、１頁分の描画データ単位で、セントロポートモニタ４８に送られる。
【００４５】
プリンタ９とサーバ１００とのインタフェースがＬＡＮの場合、ＬＡＮポートモニタに送られ、その他のインタフェースの場合、そのインタフェース用のポートモニタが送られる。なお、ここまでの処理は、Ｗｉｎｄｏｗｓ印刷制御部５によるデータ処理と同一である。
【００４６】
セントロポートモニタ４８は、スプーラプロセスメイン４９経由で受け取ったプリンタ９のコマンドデータを、セントロポートに出力する。ここで、プリンタ９にエラーが発生し、コマンドデータを出力できなかった場合、セントロポートモニタ４８は、プリンタ出力管理部５０に、プリンタ名称、エラーコード及び元のドキュメントを識別するジョブＩＤを通知する。また、他のポートモニタ５１も、他のポートモニタ５１に接続されているプリンタにエラーが発生した場合、プリンタ出力管理部５０に、プリンタ名称、エラーコード及び元のドキュメントを識別するジョブＩＤを通知する。ここで、ジョブＩＤは、Ｗｉｎｄｏｗｓ印刷制御の仕組みに存在するプリントジョブを特定するＩＤであり、ジョブＩＤをプリンタ出力管理部５０に通知することにより、プリンタ出力管理部５０は、元のドキュメント名称、印刷要求したクライアントホスト名称及びユーザ名称を取得することができる。
【００４７】
プリンタ出力管理部５０は、プリンタ名称、エラーコード及びジョブＩＤをセントロポートモニタ４８から受け取ると、ＣＡＰＣＡＬサーバメインプロセス３２に、これらの情報を通知する。
【００４８】
ＣＡＰＣＡＬサーバメインプロセス３２は、取得したジョブＩＤから印刷要求を発行したクライアントホスト名を検出し、そのクライアントホスト上で稼働するＣＡＰＣＡＬクライアントメインプロセス２６にドキュメント名称、ユーザ名及びエラーコードを通知する。また、画面呼び出し５２を行うことにより、これらの情報を表示する。
【００４９】
ＣＡＰＣＡＬクライアントメインプロセス２６は、ＣＡＰＣＡＬサーバメインプロセス３２からドキュメント名称、ユーザ名及びエラーコードを受信すると、画面呼び出し５３を行うことにより、ユーザ名、印刷中のドキュメント名称、エラーメッセージを表示する。
【００５０】
また、セントロポートモニタ４８は、１つのジョブの出力が完全に終了したら、プリンタ出力管理部５０にプリンタ名称及びジョブＩＤを通知する。プリンタ出力管理部５０は、セントロポートモニタ４８からプリンタ名称及びジョブＩＤを受け取ると、ＣＡＰＣＡＬサーバメインプロセス３２に、これらの情報を通知する。
【００５１】
ＣＡＰＣＡＬサーバメインプロセス３２は、取得したジョブＩＤから印刷要求を発行したクライアントホスト名を検出し、そのクライアントホスト上で稼働するＣＡＰＣＡＬクライアントメインプロセス２６に、ドキュメント名称及びユーザ名を通知する。また、画面呼び出し５２を行うことにより、これらの情報を表示する。
【００５２】
ＣＡＰＣＡＬクライアントメインプロセス２６は、ＣＡＰＣＡＬサーバメインプロセス３２からドキュメント名称及びユーザ名を受信すると、画面呼び出し５３を行うことにより、ドキュメントの印刷が完了したことを示すメッセージを表示する。
【００５３】
このように、セントロポートモニタ４８は、元のドキュメントを識別するジョブＩＤをプリンタ出力管理部５０に通知することにより、プリンタ出力管理部５０は、印刷要求したクライアントホスト名を認識することが可能となり、印刷要求したクライアント１００に対し、印刷エラーや印刷完了を通知することが可能となることから、ドキュメントの印刷状況をクライアント１００側で認識することが可能となる。
【００５４】
以下、本発明の第１実施例に係わるドキュメント管理制御方法についてより詳細に説明する。
図５は、本発明の第１実施例に係わるドキュメント管理制御方法を示すブロック図である。図５において、１つのアプリケーション１が印刷実行されると、ＣＡＰＣＡＬジョブ記述ファイル３４及びＥＭＦファイル３５が、ＣＡＰＣＡＬクライアント制御部４の各モジュールを経由して、ＣＡＰＣＡＬサーバ制御部６のＣＡＰＣＡＬスプールドキュメントキュー３３に生成される。
【００５５】
ここで、ＣＡＰＣＡＬジョブ記述ファイル３４及びＥＭＦファイル３５のファイル名称形式は、以下のように表される。
・「ｎｎｎｎｎ．ｃｓｈｄ」…ＣＡＰＣＡＬジョブ記述ファイル
・「ｎｎｎｎｎ．ｃｓｐｌ」…ＥＭＦファイル
ただし、「ｎｎｎｎｎ」の部分は、ＣＡＰＣＡＬジョブＩＤと呼び、ＣＡＰＣＡＬシステムが独自にユニークに作成する管理上のＩＤである。ＣＡＰＣＡＬジョブＩＤが同じＣＡＰＣＡＬジョブ記述ファイル３４とＥＭＦファイル３５とで、１つのスプールジョブを構成する。
【００５６】
配布分散処理スレッド３７は、実際の出力先（プリンタ名）、出力開始頁及び出力終了頁を検出すると、プリンタ名とＣＡＰＣＡＬプリントジョブＩＤをジョブ制御ファイル３６に書き込む。ここで、印刷結果を複数のプリンタに出力させる場合、各プリンタごとのプリンタ名及びＣＡＰＣＡＬプリントジョブＩＤがジョブ制御ファイル３６に書き込まれる。
【００５７】
また、このジョブ制御ファイル３６に書き込まれたＣＡＰＣＡＬプリントジョブＩＤに対応して、出力するプリンタ台数分のＣＡＰＣＡＬスプールプリントキュー３９ａ、３９ｂ、・・・が生成される。そして、配布分散処理スレッド３７は、各ＣＡＰＣＡＬスプールプリントキュー３８ａ、３８ｂ、・・・に対応させて、出力制御ファイル３９ａ、３９ｂ、・・・を生成し、各出力制御ファイル３９ａ、３９ｂ、・・・に対し、ＣＡＰＣＡＬジョブＩＤ、開始頁、終了頁及びＷｉｎジョブＩＤを書き込む。
【００５８】
例えば、出力制御ファイル３９ａが生成されると、配布分散処理スレッド３７は、ジョブ制御ファイル３６で指定されたプリンタを受け持つプリンタ別出力スレッド４１を起動する。プリンタ別出力スレッド４１は、ＣＡＰＣＡＬスプールドキュメントキュー３３に格納されているＣＡＰＣＡＬジョブ記述ファイル３４及びＥＭＦファイル３５の内容のうち、出力制御ファイル３９ａで指定される開始頁から終了頁までの部分を、ＣＡＰＣＡＬスプールドキュメントキュー３３から取り出し、ＧＤＩ７を呼び出して、Ｗｉｎｄｏｗｓ印刷制御５に描画データを送る。
【００５９】
また、出力制御ファイル３９ｂが生成されると、配布分散処理スレッド３７は、ジョブ制御ファイル３６で指定されたプリンタを受け持つプリンタ別出力スレッド４２を起動する。プリンタ別出力スレッド４２は、ＣＡＰＣＡＬスプールドキュメントキュー３３に格納されているＣＡＰＣＡＬジョブ記述ファイル３４及びＥＭＦファイル３５の内容のうち、出力制御ファイル３９ｂで指定される開始頁から終了頁までの部分を、ＣＡＰＣＡＬスプールドキュメントキュー３３から取り出し、ＧＤＩ７を呼び出して、Ｗｉｎｄｏｗｓ印刷制御５に描画データを送る。
【００６０】
図６（ａ）は、図５のジョブ制御ファイル３６の内容の一例を示す図である。図６（ａ）において、ジョブ制御ファイル３６には、出力するプリンタ台数分のプリンタ名及びＣＡＰＣＡＬプリントジョブＩＤが書き込まれる。ここで、ＣＡＰＣＡＬプリントジョブＩＤは、ＣＡＰＣＡＬスプールプリントキュー３８ａ、３８ｂ、・・・ごとにユニークな５桁の数字文字列である。この５桁の数字文字列を１エントリとし、出力するプリンタが複数ある場合には、複数のエントリを書き込む。なお、ジョブ制御ファイル３６のファイル名は、「（ＣＡＰＣＡＬジョブＩＤ）．ｊｃｔＩ」とすることができる。
【００６１】
図６（ｂ）は、図５の出力制御ファイル３９ａの内容の一例を示す図である。図６（ｂ）において、出力制御ファイル３９ａには、ＣＡＰＣＡＬジョブＩＤ、開始頁、終了頁及びＷｉｎジョブＩＤが書き込まれる。ここで、ＣＡＰＣＡＬジョブＩＤは、ＣＡＰＣＡＬスプールドキュメントキュー３３上のスプールファイルの実体を特定するＩＤである。また、ＷｉｎジョブＩＤは、プリンタ別出力スレッド４１がＧＤＩ７に描画データを出力した時、Ｗｉｎｄｏｗｓスプールジョブを特定するための管理ＩＤである。出力制御ファイル３９ａにＷｉｎジョブＩＤを格納するのは、後に印刷の取消が指示された時に、Ｗｉｎｄｏｗｓスプールジョブの削除を行うためには、ＷｉｎジョブＩＤを記憶しておく必要があるからである。なお、出力制御ファイル３９ａのファイル名は、「（ＣＡＰＣＡＬプリントジョブＩＤ）．ｐｃｔＩ」とすることができる。図５の出力制御ファイル３９ｂ、・・・の構成も同様である。
【００６２】
図７は、本発明の第１実施例に係わるドキュメント管理制御方法を示すフローチャートである。図７において、配布分散処理スレッド３７は、ＣＡＰＣＡＬジョブ記述ファイル３４及びＥＭＦファイル３５がＣＡＰＣＡＬスプールドキュメントキュー３３に生成され、実際の出力先（プリンタ名）、出力開始頁及び出力終了頁を検出すると、ＣＡＰＣＡＬスプールドキュメントキュー３３にジョブ制御ファイル３６を生成する（ステップＳ１）。
【００６３】
次に、各ＣＡＰＣＡＬスプールプリントキュー３８ａ、３８ｂ、・・・に対応させて、出力制御ファイル３９ａ、３９ｂ、・・・を生成し（ステップＳ２）、使用するプリンタ専用のプリンタ別出力スレッド４１、４２にイベントで通知する（ステップＳ３）。
【００６４】
プリンタ別出力スレッド４１、４２への通知が行われると、該当するＣＡＰＣＡＬスプールプリントキュー３８ａ、３８ｂ、・・・下の出力制御ファイル３９ａ、３９ｂ、・・・を読み込み、ＣＡＰＣＡＬジョブＩＤ、開始頁及び終了頁を認識する（ステップＳ１１）。次に、出力制御ファイル３９ａ、３９ｂ、・・・から読み出した開始頁を変数Ｎに格納し（ステップＳ１２）、出力制御ファイル３９ａ、３９ｂ、・・・から読み出したＣＡＰＣＡＬジョブＩＤにより特定されるＣＡＰＣＡＬスプールドキュメントキュー３３下のＥＭＦファイル３５の第Ｎ頁目を読み込み（ステップＳ１３）、ＧＤＩ７に出力する。。
【００６５】
次に、変数Ｎの値を１だけ増やしながら（ステップＳ１４）、変数Ｎの値が出力制御ファイル３９ａ、３９ｂ、・・・から読み出した終了頁を越えるまで（ステップＳ１５）、ＣＡＰＣＡＬスプールドキュメントキュー３３下のＥＭＦファイル３５の第Ｎ頁目を読み込みを繰り返す。
【００６６】
変数Ｎの値が出力制御ファイル３９ａ、３９ｂ、・・・から読み出した終了頁を越えると、出力するプリンタ台数分の処理を行ったかどうかを判断し（ステップＳ４）、出力するプリンタ台数分の処理が終了していない場合は、ステップＳ２に戻り、出力制御ファイル３９ａ、３９ｂ、・・・の作成及びプリンタ別出力スレッド４１、４２のジョブ投入処理を繰り返す。
【００６７】
このように、本発明の第１実施例によれば、アプリケーション１が出力したスプールファイルである描画データの実体はシステムに唯一存在させ、ＣＡＰＣＡＬスプールプリントキュー３８ａ、３８ｂ、・・・に描画データの実体をスプールするのではなく、ＣＡＰＣＡＬスプールプリントキュー３８ａ、３８ｂ、・・・に印刷要求ファイルを作成し、この印刷要求ファイルにＥＭＦファイル３５の中の当該プリンタで印刷する頁情報を格納することにより、スプール処理を高速に行うことが可能となる。
【００６８】
また、ＣＡＰＣＡＬスプールプリントキュー３８ａ、３８ｂ、・・・に印刷要求ファイルを作成した後に、当該プリンタへ印刷する頁数等を変更する場合においても、出力制御ファイル３９ａ、３９ｂ、・・・内の開始頁、終了頁を書き換えるだけでよく、ＣＡＰＣＡＬジョブ記述ファイル３４及びＥＭＦファイル３５の印刷データのスプールをやり直す必要がなくなることから、当該プリンタへ印刷する頁数等の変更も容易に行うことが可能となる。
次に、本発明の第２実施例に係わる仮想ドキュメント管理制御方法について図面を参照しながら説明する。
【００６９】
図８は、本発明の第２実施例に係わる仮想ドキュメント管理制御方法を示すブロック図である。図８において、サーバ制御部６には、仮想ドキュメントエディタ６０が設けられている。仮想ドキュメントエディタ６０は、複数のアプリケーションが出力したスプールファイル群を元に、任意の頁構成で仮想ドキュメントを構築するマンマシンインタフェースを提供するユーティリティアプリケーションである。
【００７０】
この仮想ドキュメントエディタ６０は、複数のアプリケーションが出力したスプールファイルを読み込み、頁単位に表示させる。そして、オペレーション指示により、複数のアプリケーションが出力した文書データを指示頁単位に抜き出して、仮想ドキュメントを作成する。その後、作成した仮想ドキュメント単位で、特定プリンタへの印刷、複写印刷、複数のプリンタで同時印刷などを実行させる。
【００７１】
具体的には、複数のアプリケーションから出力された文書データに対応して、複数のＣＡＰＣＡＬジョブ記述ファイル３４ａ、・・・、３４ｂ及びＥＭＦファイル３５ａ、・・・、３５ｂが、ＣＡＰＣＡＬスプールドキュメントキュー３３に生成されているものとすると、仮想ドキュメントエディタ６０は、ＣＡＰＣＡＬスプールドキュメントキュー３３にジョブ制御ファイル３６’を作成する。ここで、仮想ドキュメントエディタ６０により作成されたジョブ制御ファイル３６’は、図５の配布分散処理スレッド３７が作成するジョブ制御ファイル３６と同等である。すなわち、ジョブ制御ファイル３６’には、プリンタ名とＣＡＰＣＡＬプリントジョブＩＤを書き込まれ、印刷結果を複数のプリンタに出力させる場合には、各プリンタごとのプリンタ名及びＣＡＰＣＡＬプリントジョブＩＤがジョブ制御ファイル３６’に書き込まれる。
【００７２】
また、このジョブ制御ファイル３６’に書き込まれたＣＡＰＣＡＬプリントジョブＩＤに対応して、出力するプリンタ台数分のＣＡＰＣＡＬスプールプリントキュー３８ａ’、３８ｂ’、・・・が生成される。そして、仮想ドキュメントエディタ６０は、各ＣＡＰＣＡＬスプールプリントキュー３８ａ’、３８ｂ’、・・・に対応させて、出力制御ファイル３９ａ’、３９ｂ’、・・・を生成し、各出力制御ファイル３９ａ’、３９ｂ’、・・・に対し、ＣＡＰＣＡＬジョブＩＤ、開始頁、終了頁及びＷｉｎジョブＩＤを書き込む。ここで、仮想ドキュメントエディタ６０により生成された仮想ドキュメントが、複数のアプリケーションから出力された文書データを統合したものである場合、各出力制御ファイル３９ａ’、３９ｂ’、・・・には、各アプリケーションごとのＣＡＰＣＡＬジョブＩＤ、開始頁、終了頁及びＷｉｎジョブＩＤが格納される。
【００７３】
例えば、出力制御ファイル３９ａ’が生成されると、仮想ドキュメントエディタ６０は、ジョブ制御ファイル３６’で指定されたプリンタを受け持つプリンタ別出力スレッド４１を起動する。プリンタ別出力スレッド４１は、まず、出力制御ファイル３９ａ’に格納されている１番目のＣＡＰＣＡＬジョブＩＤを参照することにより、ＣＡＰＣＡＬスプールドキュメントキュー３３に格納されているＣＡＰＣＡＬジョブ記述ファイル３４ａ、・・・、３４ｂ及びＥＭＦファイル３５ａ、・・・、３５ｂを特定する。例えば、出力制御ファイル３９ａ’に格納されている１番目のＣＡＰＣＡＬジョブＩＤが、ＣＡＰＣＡＬジョブ記述ファイル３４ａ及びＥＭＦファイル３５ａを指定している場合、ＣＡＰＣＡＬジョブ記述ファイル３４ａ及びＥＭＦファイル３５ａの内容のうち、出力制御ファイル３９ａ’で指定される開始頁から終了頁までの部分を、ＣＡＰＣＡＬスプールドキュメントキュー３３から取り出し、ＧＤＩ７を呼び出して、Ｗｉｎｄｏｗｓ印刷制御５に描画データを送る。
【００７４】
次に、プリンタ別出力スレッド４１は、出力制御ファイル３９ａ’に格納されている２番目のＣＡＰＣＡＬジョブＩＤを参照することにより、ＣＡＰＣＡＬスプールドキュメントキュー３３に格納されているＣＡＰＣＡＬジョブ記述ファイル３４ａ、・・・、３４ｂ及びＥＭＦファイル３５ａ、・・・、３５ｂを特定する。例えば、出力制御ファイル３９ａ’に格納されている２番目のＣＡＰＣＡＬジョブＩＤが、ＣＡＰＣＡＬジョブ記述ファイル３４ｂ及びＥＭＦファイル３５ｂを指定している場合、ＣＡＰＣＡＬジョブ記述ファイル３４ｂ及びＥＭＦファイル３５ｂの内容のうち、出力制御ファイル３９ａ’で指定される開始頁から終了頁までの部分を、ＣＡＰＣＡＬスプールドキュメントキュー３３から取り出し、ＧＤＩ７を呼び出して、Ｗｉｎｄｏｗｓ印刷制御５に描画データを送る。
【００７５】
プリンタ別出力スレッド４１は、出力制御ファイル３９ａ’に格納されている全てのＣＡＰＣＡＬジョブＩＤについて、以上の処理を行う。
また、出力制御ファイル３９ｂ’が生成されると、仮想ドキュメントエディタ６０は、ジョブ制御ファイル３６’で指定されたプリンタを受け持つプリンタ別出力スレッド４２を起動する。プリンタ別出力スレッド４２は、まず、出力制御ファイル３９ｂ’に格納されている１番目のＣＡＰＣＡＬジョブＩＤを参照することにより、ＣＡＰＣＡＬスプールドキュメントキュー３３に格納されているＣＡＰＣＡＬジョブ記述ファイル３４ａ、・・・、３４ｂ及びＥＭＦファイル３５ａ、・・・、３５ｂを特定する。例えば、出力制御ファイル３９ｂ’に格納されている１番目のＣＡＰＣＡＬジョブＩＤが、ＣＡＰＣＡＬジョブ記述ファイル３４ａ及びＥＭＦファイル３５ａを指定している場合、ＣＡＰＣＡＬジョブ記述ファイル３４ａ及びＥＭＦファイル３５ａの内容のうち、出力制御ファイル３９ｂ’で指定される開始頁から終了頁までの部分を、ＣＡＰＣＡＬスプールドキュメントキュー３３から取り出し、ＧＤＩ７を呼び出して、Ｗｉｎｄｏｗｓ印刷制御５に描画データを送る。
【００７６】
次に、プリンタ別出力スレッド４２は、出力制御ファイル３９ｂ’に格納されている２番目のＣＡＰＣＡＬジョブＩＤを参照することにより、ＣＡＰＣＡＬスプールドキュメントキュー３３に格納されているＣＡＰＣＡＬジョブ記述ファイル３４ａ、・・・、３４ｂ及びＥＭＦファイル３５ａ、・・・、３５ｂを特定する。例えば、出力制御ファイル３９ｂ’に格納されている２番目のＣＡＰＣＡＬジョブＩＤが、ＣＡＰＣＡＬジョブ記述ファイル３４ｂ及びＥＭＦファイル３５ｂを指定している場合、ＣＡＰＣＡＬジョブ記述ファイル３４ｂ及びＥＭＦファイル３５ｂの内容のうち、出力制御ファイル３９ｂ’で指定される開始頁から終了頁までの部分を、ＣＡＰＣＡＬスプールドキュメントキュー３３から取り出し、ＧＤＩ７を呼び出して、Ｗｉｎｄｏｗｓ印刷制御５に描画データを送る。
【００７７】
プリンタ別出力スレッド４２は、出力制御ファイル３９ａ’に格納されている全てのＣＡＰＣＡＬジョブＩＤについて、以上の処理を行う。
この結果、複数のアプリケーションにより作成された仮想ドキュメントの描画データをプリンタキューに形成することなく、仮想ドキュメントの複数のプリンタによる分散印刷を行うことが可能となる。
【００７８】
このように、仮想ドキュメントエディタ６０が、ＣＡＰＣＡＬジョブ記述ファイル３４ａ、・・・、３４ｂ及びＥＭＦファイル３５ａ、・・・、３５ｂを統合した文書を仮想的に生成する。そして、この仮想的に生成された仮想ドキュメントの描画データをＣＡＰＣＡＬスプールプリントキュー３８ａ’、３８ｂ’、・・・に書き込むのではなく、この仮想ドキュメントの印刷要求をＣＡＰＣＡＬスプールプリントキュー３８ａ’、３８ｂ’、・・・に書き込む。このことにより、複数のアプリケーションで作成された文書を統合して印刷する場合においても、スプール処理を高速に行うことが可能となるととも、使用するアプリケーションの変更や指定頁の変更なども容易に行うことが可能となる。
【００７９】
図９（ａ）は図８のジョブ制御ファイル３６’の内容の一例を示す図である。図９（ａ）において、ジョブ制御ファイル３６’には、出力するプリンタ台数分のプリンタ名及びＣＡＰＣＡＬプリントジョブＩＤが書き込まれる。ここで、ＣＡＰＣＡＬプリントジョブＩＤは、ＣＡＰＣＡＬスプールプリントキュー３８ａ’、３８ｂ’、・・・ごとにユニークな５桁の数字文字列である。この５桁の数字文字列を１エントリとし、出力するプリンタが複数ある場合には、複数のエントリを書き込む。なお、ジョブ制御ファイル３６’のファイル名は、「（ＣＡＰＣＡＬジョブＩＤ）．ｊｃｔＩ」とすることができる。
【００８０】
図９（ｂ）は図８の出力制御ファイル３９ａ’の内容の一例を示す図である。図９（ｂ）において、出力制御ファイル３９ａ’には、ＣＡＰＣＡＬジョブＩＤ、開始頁、終了頁及びＷｉｎジョブＩＤが書き込まれる。ここで、ＣＡＰＣＡＬジョブＩＤは、ＣＡＰＣＡＬスプールドキュメントキュー３３上のＣＡＰＣＡＬジョブ記述ファイル３４ａ、・・・、３４ｂ及びＥＭＦファイル３５ａ、・・・、３５ｂの実体を特定するＩＤである。すなわち、各ＣＡＰＣＡＬジョブ記述ファイル３４ａ、・・・、３４ｂ及びＥＭＦファイル３５ａ、・・・、３５ｂごとに、異なるＣＡＰＣＡＬジョブＩＤが付与される。また、ＷｉｎジョブＩＤは、プリンタ別出力スレッド４１がＧＤＩ７に描画データを出力した時、Ｗｉｎｄｏｗｓスプールジョブを特定するための管理ＩＤである。ここで、複数のＣＡＰＣＡＬジョブ記述ファイル３４ａ、・・・、３４ｂ及びＥＭＦファイル３５ａ、・・・、３５ｂを特定する場合、ＣＡＰＣＡＬジョブＩＤ、開始頁、終了頁、ＷｉｎジョブＩＤを１エントリとして、複数エントリの情報が出力制御ファイル３９ａ’に書き込まれる。なお、出力制御ファイル３９ａ’のファイル名は、「（ＣＡＰＣＡＬプリントジョブＩＤ）．ｐｃｔＩ」とすることができる。図８の出力制御ファイル３９ｂ’、・・・の構成も同様である。
【００８１】
図１０は、本発明の第２実施例に係わる仮想ドキュメント管理制御方法を示すフローチャートである。図１０において、仮想ドキュメントエディタ６０は、ＣＡＰＣＡＬジョブ記述ファイル３４ａ、・・・、３４ｂ及びＥＭＦファイル３５ａ、・・・、３５ｂがＣＡＰＣＡＬスプールドキュメントキュー３３に生成され、仮想ドキュメントの実際の出力先（プリンタ名）を検出すると、ＣＡＰＣＡＬスプールドキュメントキュー３３にジョブ制御ファイル３６’を生成する（ステップＳ２１）。
【００８２】
次に、各ＣＡＰＣＡＬスプールプリントキュー３８ａ’、３８ｂ’、・・・に対応させて、出力制御ファイル３９ａ’、３９ｂ’、・・・を生成し（ステップＳ２２）、仮想ドキュメントに含まれるスプールファイル（ＣＡＰＣＡＬジョブ記述ファイル３４ａ、・・・、３４ｂ及びＥＭＦファイル３５ａ、・・・、３５ｂ）の数だけループすることにより（ステップＳ２３）、仮想ドキュメントに含まれるスプールファイルの個数に対応したエントリ情報（ＣＡＰＣＡＬジョブＩＤ、開始頁、終了頁）を書き込む。
【００８３】
次に、出力制御ファイル３９ａ’、３９ｂ’、・・・へのエントリ情報（ＣＡＰＣＡＬジョブＩＤ、開始頁、終了頁）の書き込みが終了すると、使用するプリンタ専用のプリンタ別出力スレッド４１、４２にイベントで通知する（ステップＳ２４）。
【００８４】
次に、プリンタ別出力スレッド４１，４２は、当該プリンタごとに生成されたＣＡＰＣＡＬスプールプリントキュー３８ａ’、３８ｂ’、・・・から、ファイル作成時間が古い順に出力制御ファイル３９ａ’、３９ｂ’、・・・の内容を読み込む（ステップＳ３１）。そして、出力制御ファイル３９ａ’、３９ｂ’、・・・から、１エントリ情報（ＣＡＰＣＡＬジョブＩＤ、開始頁、終了頁）を取り出し（ステップＳ３２）、１ジョブ印刷処理を行う（ステップＳ３３）。
【００８５】
１ジョブ印刷処理では、出力制御ファイル３９ａ’、３９ｂ’、・・・の１エントリ情報内の開始頁を変数Ｎに格納し（ステップＳ４１）、出力制御ファイル３９ａ’、３９ｂ’、・・・の１エントリ情報内のＣＡＰＣＡＬジョブＩＤにより特定されるＣＡＰＣＡＬスプールドキュメントキュー３３下のＥＭＦファイル３５ａ、・・・、３５ｂの第Ｎ頁目を読み込み（ステップＳ４２）、ＧＤＩ７に出力する。
【００８６】
次に、変数Ｎの値を１だけ増やしながら（ステップＳ４３）、変数Ｎの値が出力制御ファイル３９ａ’、３９ｂ’、・・・の１エントリ情報内の終了頁を越えるまで（ステップＳ４４）、ＣＡＰＣＡＬスプールドキュメントキュー３３下のＥＭＦファイル３５ａ、・・・、３５ｂの第Ｎ頁目を読み込みを繰り返す。
【００８７】
１ジョブ印刷処理が終了すると、出力制御ファイル３９ａ’、３９ｂ’、・・・に次のエントリがあるかどうかを判断し（ステップＳ３４）、出力制御ファイル３９ａ’、３９ｂ’、・・・に次のエントリがある場合は、ステップＳ３２に戻り、エントリ情報（ＣＡＰＣＡＬジョブＩＤ、開始頁、終了頁）の取り出し及び１ジョブ印刷処理を繰り返す。
【００８８】
出力制御ファイル３９ａ’、３９ｂ’、・・・に次のエントリがなくなると、出力するプリンタ台数分の処理を行ったかどうかを判断し（ステップＳ２５）、出力するプリンタ台数分の処理が終了していない場合は、ステップＳ２２に戻り、出力制御ファイル３９ａ、３９ｂ、・・・の作成及びプリンタ別出力スレッド４１、４２のジョブ投入処理を繰り返す。
【００８９】
このように、本発明の第２実施例では、複数のアプリケーションから出力された描画データを統合する仮想ドキュメントエディタ６０を設け、仮想ドキュメントエディタ６０で生成された仮想ドキュメントを１つのドキュメントファイルとして管理することにより、仮想ドキュメントの指定を行うだけで、複数のアプリケーションから出力された描画データを一体的に扱って、何度でも印刷することが可能となり、複数のアプリケーションを用いた印刷処理を容易に行うことが可能となる。また、仮想ドキュメント単位でプリンタから出力させることができるので、複数のアプリケーションを用いて印刷された印刷物を仕分けしたり、手書きで頁連番を書き加えるたりすることなく、複数のアプリケーションを用いた印刷された印刷物に通し番号を印字するなどの印刷処理を自動的に行うことが可能となる。
【００９０】
図１１は、本発明の一実施例に係わる印刷システムのシステム構成を示すブロック図である。図１１において、１５１は全体的な処理を行う中央演算処理ユニット（ＣＰＵ）、１５２はリードオンリメモリ（ＲＯＭ）、１５３はランダムアクセスメモリ（ＲＡＭ）、１５４は通信インターフェイス、１５５は通信ネットワーク、１５６はバス、１５７は入出力インターフェイス、１５８は印刷イメージなどを表示するディスプレイ、１５９は印刷結果を出力するプリンタ、１６０はキーボード、１６１はマウス、１６２は記憶媒体を駆動するドライバ、１６３はハードディスク、１６４はＩＣメモリカード、１６５は磁気テープ、１６６はフロッピーディスク、１６７はＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの光ディスクである。
【００９１】
印刷処理を行うプログラムや印刷データなどは、ハードディスク１６３、ＩＣメモリカード１６４、磁気テープ１６５、フロッピーディスク１６６、光ディスク１６７などの記憶媒体に格納される。そして、印刷処理を行うプログラムをこれらの記憶媒体からＲＡＭ１５３に読み出すことにより、印刷処理を行うことができる。また、印刷処理を行うプログラムをＲＯＭ１５２に格納しておくこともできる。
【００９２】
さらに、印刷処理を行うプログラムや印刷データなどを通信インターフェイス１５４を介して通信ネットワーク１５５から取り出すこともできる。通信インターフェイス２４に接続される通信ネットワーク１５５として、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、アナログ電話網、デジタル電話網（ＩＳＤＮ：Ｉｎｔｅｇｒａｌ  Ｓｅｒｖｉｃｅ  Ｄｉｇｉｔａｌ  Ｎｅｔｗｏｒｋ）、ＰＨＳ（パーソナルハンディシステム）や衛星通信などの無線通信網を用いることができる。
【００９３】
ＣＰＵ１５１は、印刷処理を行うプログラムが起動されると、キーボード１６０やマウス１６１などで入力された描画データをハードディスク１６３、ＩＣメモリカード１６４、磁気テープ１６５、フロッピーディスク１６６、光ディスク１６７などの記憶媒体に格納する。そして、これらの記憶媒体に格納された描画データをプリンタ１５９に送って印刷させたり、通信ネットワーク１５５を介して他のサーバやプリンタに送ったりする。
【００９４】
【発明の効果】
以上説明したように、本発明によれば、描画データ格納手段に格納されている描画データを、描画データの出力先に対応させて再度格納し直すことなく、出力先に転送する描画データを描画データ格納手段から直接読み出して、出力先に転送することにより、描画データを出力先に転送する際に、描画データをその出力先ごとに再格納する処理を省略することが可能となることから、スプール処理を高速化することが可能となる。
【００９５】
また、本発明の一態様によれば、描画データを識別する識別情報及び描画データの印刷頁を指定する頁情報を、描画データの代わりに格納しておくことにより、出力する描画データの印刷頁を変更する場合には、描画データの内容を再格納することなく、頁情報を変更するだけで済むことから、スプール処理を効率的に行うことが可能となる。
【００９６】
また、本発明の一態様によれば、複数のアプリケーションにより作成された描画データを統合した仮想ドキュメントを生成することにより、複数のアプリケーションにより作成された描画データを一体的に扱うことが可能となり、各アプリケーションごとの印刷指定を何度も行うことなく、統合された仮想ドキュメントについての印刷指定を１回行うだけで、複数のアプリケーションにより作成された描画データの印刷を行うことが可能となり、印刷処理を効率的に行うことが可能となる。
【００９７】
また、仮想ドキュメントの描画データを、その描画データの出力先に対応させて構成することなく、仮想ドキュメントの出力要求に基づいて、仮想ドキュメントに含まれる描画データを描画データ格納手段から順次に読み出して、出力先に転送することが可能となり、仮想ドキュメントの描画データを出力先に転送する際に、仮想ドキュメントごとの描画データを格納しておく処理を省略することが可能となることから、スプール処理を高速化することが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施例に係わる印刷システムの構成を示すブロック図である。
【図２】図１のクライアント制御部の構成を説明するブロック図である。
【図３】図１のサーバ制御部の構成を説明するブロック図である。
【図４】図１のプリンタ出力制御部の構成を説明するブロック図である。
【図５】本発明の第１実施例に係わるドキュメント管理制御方法を示すブロック図である。
【図６】（ａ）は図５のジョブ制御ファイルの内容の一例を示す図、（ｂ）は図５の出力制御ファイルの内容の一例を示す図である。
【図７】本発明の第１実施例に係わるドキュメント管理制御方法を示すフローチャートである。
【図８】本発明の第２実施例に係わる仮想ドキュメント管理制御方法を示すブロック図である。
【図９】（ａ）は図８のジョブ制御ファイルの内容の一例を示す図、（ｂ）は図８の出力制御ファイルの内容の一例を示す図である。
【図１０】本発明の第２実施例に係わる仮想ドキュメント管理制御方法を示すフローチャートである。
【図１１】本発明の一実施例に係わる印刷システムのシステム構成を示すブロック図である。
【図１２】従来の分散印刷方法を説明するブロック図である。
【符号の説明】
１００  クライアント
１０３  サーバ
１０１、１０２、２８、２９、４４  通信回線
１  アプリケーション
２、７  ＧＤＩ
３、５  Ｗｉｎｄｏｗｓ印刷制御部
４  クライアント制御部
６  サーバ制御部
８  プリンタ出力制御部
９  プリンタ
１１  スプーラプロセス
１２  プロバイダ
１３、４７  プリントプロセッサ
１４  仮想ドライバ
１５  ＣＡＰＣＡＬドライバプロパティ制御スレッド
１６  システムスプールキュー
１７  出力制御情報ファイル
１８  ジョブ記述ファイル
１９、２４、３５、３５ａ、３５ｂ  ＥＭＦファイル
２０  ＣＡＰＣＡＬクライアント定義ファイル
２１  ＣＡＰＣＡＬプリントプロセッサ
２２  ＣＡＰＣＡＬスプールキュー
２３、３４ａ、３４ｂ  ＣＡＰＣＡＬジョブ記述ファイル
２５  ＣＡＰＣＡＬ転送先定義ファイル
２６  ＣＡＰＣＡＬクライアントメインプロセス
２７  ＣＡＰＣＡＬジョブ転送スレッド
３０、３１  ＣＡＰＣＡＬ受信スレッド
３２  ＣＡＰＣＡＬサーバメインプロセス
３３  ＣＡＰＣＡＬスプールドキュメントキュー
３６、３６  ジョブ制御ファイル
３７  配布分散処理スレッド
３８、３８ａ、３８ｂ、３８ａ’、３８ｂ’  ＣＡＰＣＡＬスプールプリンタキュー
３９、３９ａ、３９ｂ、３９ａ’、３９ｂ’  出力制御ファイル
４０  ＣＡＰＣＡＬサーバ側定義ファイル
４１、４２  プリンタ別出力スレッド
４３  ＣＡＰＣＡＬジョブ転送スレッド
４５  プリンタドライバ
４６  Ｒａｗスプールファイル
４８  セントロポートモニタ
４９  スプーラプロセスメイン
５０  プリンタ出力管理部
５１  ポートモニタ
５２、５３  画面呼び出し
６０  仮想ドキュメントエディタ
１５１  ＣＰＵ
１５２  ＲＯＭ
１５３  ＲＡＭ
１５４  通信インターフェース
１５５  通信ネットワーク
１５６  バス
１５７  入出力インターフェース
１５８  ディスプレイ
１５９  プリンタ
１６０  キーボード
１６１  マウス
１６２  ドライバ
１６３  ハードディスク
１６４  ＩＣメモリカード
１６５  磁気テープ
１６６  フロッピーディスク
１６７  光ディスク
【図１】
0003823534.tif 000002
【図２】
0003823534.tif 000003
【図３】
0003823534.tif 000004
【図４】
0003823534.tif 000005
【図５】
0003823534.tif 000006
【図６】
0003823534.tif 000007
【図７】
0003823534.tif 000008
【図８】
0003823534.tif 000009
【図９】
0003823534.tif 000010
【図１０】
0003823534.tif 000011
【図１１】
0003823534.tif 000012
【図１２】
0003823534.tif 000013