(57)【要約】      （修正有）【課題】印刷ジョブの自動振り分けを実現するとともに、特殊なフォントを使用した場合でも、中間データからプリンタ言語に正しく変換する。【解決手段】クライアントコンピュータは、印刷要求に含まれる文書データから画像データを生成し、印刷要求から印刷設定情報とクライアントコンピュータに関する情報とを抽出して、これらから中間データを生成し、サーバコンポーネントに送信する。サーバコンピュータは、中間データを受信し、中間データと１以上の設定条件とを照合、出力先となる印刷装置を決定して、決定された出力先に従って、受信された画像データを、出力先となる印刷装置に対応する出力待ちデータ蓄積手段へ振り分け、振り分けられた画像データを、出力待ちデータ蓄積手段内で印刷装置が解釈可能な言語に変換する。【選択図】図５
2015075822.tif 000002
【特許請求の範囲】
【請求項１】
クライアントコンピュータからの印刷指示を受けてアプリケーション実行手段が出力した印刷要求を受信し、ネットワークに接続された印刷装置を選択して印刷を実行させる印刷制御システムであって、前記印刷制御システムは、サーバコンピュータとクライアントコンピュータとを含んで構成され、
前記サーバコンピュータは、
前記アプリケーション実行手段から受信した前記印刷要求に含まれる文書データから各ページの画像データを生成し、前記印刷要求から印刷設定情報と前記クライアントコンピュータに関する情報とを抽出し、前記画像データと前記印刷設定情報と前記クライアントコンピュータに関する情報とから構成される中間データを生成する中間データ生成手段と、
前記中間データ生成手段により生成された前記中間データを、前記クライアントコンピュータに送信する中間データ送信手段とを含み、
前記クライアントコンピュータは、
前記中間データ送信手段から送信された前記中間データを受信する中間データ受信手段と、
印刷装置と印刷設定情報および前記クライアントコンピュータに関する情報の少なくとも１つの情報とを含む予め設定された１以上の設定条件と、前記中間データ受信手段により受信された前記中間データとを照合して、出力先となる印刷装置を決定する出力先決定手段と、
前記出力先決定手段により決定された出力先に従って、前記中間データ受信手段により受信された前記画像データを、出力先となる印刷装置に対応する出力待ちデータ蓄積手段へ振り分ける振り分け手段と、
前記振り分け手段により振り分けられた前記画像データを、前記出力待ちデータ蓄積手段内で前記印刷装置が解釈可能な言語に変換する変換手段とを含む、印刷制御システム。
【請求項２】
前記クライアントコンピュータは、
前記振り分け手段から取得した出力先となる前記印刷装置の情報を受け取り、当該印刷装置の情報を使用して当該印刷装置へアクセスすることにより当該印刷装置のジョブ処理状況を監視し、監視することにより得られた情報を、前記クライアントコンピュータが備える表示装置の画面上に表示させる印刷ジョブ監視手段をさらに含む、請求項１に記載の印刷制御システム。
【請求項３】
前記サーバコンピュータは、前記ネットワークの通信状態を判断する判断手段と、前記中間データ生成手段により生成された前記中間データを圧縮し、圧縮データとして前記中間データ送信手段に出力する圧縮手段とをさらに含み、
前記クライアントコンピュータは、前記中間データ受信手段により受信された前記圧縮データを伸長し、元の中間データに復元する伸長手段をさらに含む、請求項２に記載の印刷制御システム。
【請求項４】
前記サーバコンピュータは、前記中間データ生成手段により生成された前記中間データを、複数のデータに分割し、複数に分割したデータを前記圧縮手段に出力する分割手段をさらに含み、
前記クライアントコンピュータは、前記伸長手段により伸長された複数のデータを結合し、元の中間データに復元する結合手段をさらに含む、請求項３に記載の印刷制御システム。
【請求項５】
前記クライアントコンピュータが、前記アプリケーション実行手段を備える、請求項１〜４のいずれか１項に記載の印刷制御システム。
【請求項６】
前記印刷制御システムの機能を使用する設定を受け付ける設定受付手段をさらに備え、前記設定受付手段が前記設定を受け付けたことに応答して、前記中間データ生成手段、前記中間データ送信手段、前記中間データ受信手段、前記出力先決定手段、前記振り分け手段および前記変換手段を起動させる、請求項１〜５のいずれか１項に記載の印刷制御システム。
【請求項７】
クライアントコンピュータからの印刷指示を受けてアプリケーション実行手段が出力した印刷要求を受信し、ネットワークに接続された印刷装置を選択して印刷を実行させる印刷制御システムにより実行される印刷制御方法であって、前記印刷制御システムは、サーバコンピュータと、前記クライアントコンピュータとを含んで構成され、
前記サーバコンピュータが、
前記アプリケーション実行手段から受信した前記印刷要求に含まれる文書データから各ページの画像データを生成し、前記印刷要求から印刷設定情報と前記クライアントコンピュータに関する情報とを抽出し、前記画像データと前記印刷設定情報と前記クライアントコンピュータに関する情報とから構成される中間データを生成するステップと、
生成された前記中間データを、前記クライアントコンピュータに送信するステップとを実行し、
前記クライアントコンピュータが、
前記サーバコンピュータから送信された前記中間データを受信するステップと、
前記クライアントコンピュータが保持する、印刷装置と印刷設定情報および前記クライアントコンピュータに関する情報の少なくとも１つの情報とを含む予め設定された１以上の設定条件と、受信された前記中間データとを照合して、出力先となる印刷装置を決定するステップと、
前記決定するステップで決定された出力先に従って、前記受信するステップで受信された前記画像データを、出力先となる印刷装置に対応する出力待ちデータ蓄積手段へ振り分けるステップと、
前記振り分けるステップで振り分けられた前記画像データを、前記出力待ちデータ蓄積手段内で前記印刷装置が解釈可能な言語に変換するステップとを実行する、印刷制御方法。
【請求項８】
前記クライアントコンピュータが、さらに、
出力先となる前記印刷装置の情報を受け取り、当該印刷装置の情報を使用して当該印刷装置へアクセスすることにより当該印刷装置のジョブ処理状況を監視し、監視することにより得られた情報を、前記クライアントコンピュータが備える表示装置の画面上に表示させるステップを実行する、請求項７に記載の印刷制御方法。
【請求項９】
前記サーバコンピュータが、前記ネットワークの通信状態を判断するステップと、前記中間データを生成するステップで生成された前記中間データを圧縮し、圧縮データとして出力するステップとをさらに実行し、
前記クライアントコンピュータが、前記中間データを受信するステップで受信された前記圧縮データを伸長し、元の中間データに復元するステップをさらに実行する、請求項７または８に記載の印刷制御方法。
【請求項１０】
前記サーバコンピュータが、前記中間データを生成するステップで生成された前記中間データを、複数のデータに分割し、複数に分割したデータを出力するステップをさらに実行し、
前記クライアントコンピュータが、前記復元するステップで伸長された複数のデータを結合し、元の中間データに復元するステップをさらに実行する、請求項９に記載の印刷制御方法。
【請求項１１】
請求項７〜１０のいずれか１項に記載の印刷制御方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷ジョブを各出力先へ自動振り分けする印刷制御システム、印刷制御方法およびその方法をコンピュータに実行させるためのプログラムに関する。
【背景技術】
【０００２】
ネットワーク上のプリンタを使用して印刷を行う技術として、ポイントアンドプリントと呼ばれる技術が知られている。この技術は、印刷を指示するクライアントコンピュータにプリンタドライバがインストールされていなくても、ネットワークに接続されているプリントサーバにインストールされているプリンタドライバを使用して印刷を行うことができる技術である。
【０００３】
ポイントアンドプリントには、その利用方法として、クライアントサイドレンダリングと呼ばれる方法と、サーバサイドレンダリングと呼ばれる方法の２つがある。前者の方法は、印刷されたデータを実際のプリンタへ紙により出力する際の、プリンタ言語への変換をクライアントコンピュータ側で行う方法である。後者の方法は、そのプリンタ言語への変換をプリントサーバ側で行う方法である。ここで、プリンタ言語とは、プリンタへ出力するイメージを記述し、そのプリンタに対して指示する言語である。
【０００４】
サーバサイドレンダリングでは、印刷を指示するクライアントコンピュータが中間データ（例えば、拡張メタファイル）を作成して、それをプリントサーバへ送信し、プリントサーバが、中間データに含まれるフォント情報に基づき、プリンタ言語に変換する。
【０００５】
このサーバサイドレンダリングを利用した技術として、ネットワーク上のプリンタを使用し、印刷ジョブを特定のルールに基づいて出力先のプリンタへ自動振り分けするシステムや方法が提案されている（例えば、特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、サーバサイドレンダリングを利用した上記技術では、中間データに含まれる特殊なフォントが、プリントサーバに実装されていない場合、中間データからプリンタ言語に正しく変換することができないという問題があった。
【課題を解決するための手段】
【０００７】
本発明は、上記課題に鑑み、クライアントコンピュータからの印刷指示を受けてアプリケーション実行手段が出力した印刷要求を受信し、ネットワークに接続された印刷装置を選択して印刷を実行させる印刷制御システムであって、印刷制御システムは、サーバコンピュータとクライアントコンピュータとを含んで構成され、
サーバコンピュータは、
アプリケーション実行手段から受信した印刷要求に含まれる文書データから各ページの画像データを生成し、印刷要求から印刷設定情報とクライアントコンピュータに関する情報とを抽出し、画像データと印刷設定情報とクライアントコンピュータに関する情報とから構成される中間データを生成する中間データ生成手段と、中間データ生成手段により生成された中間データを、クライアントコンピュータに送信する中間データ送信手段とを含み、
クライアントコンピュータは、
中間データ送信手段から送信された中間データを受信する中間データ受信手段と、印刷装置と印刷設定情報およびクライアントコンピュータに関する情報の少なくとも１つの情報とを含む予め設定された１以上の設定条件と、中間データ受信手段により受信された中間データとを照合して、出力先となる印刷装置を決定する出力先決定手段と、出力先決定手段により決定された出力先に従って、中間データ受信手段により受信された画像データを、出力先となる印刷装置に対応する出力待ちデータ蓄積手段へ振り分ける振り分け手段と、振り分け手段により振り分けられた画像データを、出力待ちデータ蓄積手段内で印刷装置が解釈可能な言語に変換する変換手段とを含む、印刷制御システムが提供される。
【発明の効果】
【０００８】
本発明によれば、クライアント側で変換を行うので、中間データに含まれる特殊なフォントがサーバに実装されていない場合でも、中間データからプリンタ言語に正しく変換することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態の印刷制御システムとしてのクライアントコンピュータとサーバとを含むネットワークシステムの構成例を示した図。
【図２】図１に示すクライアントコンピュータのハードウェア構成を例示した図。
【図３】既存の印刷制御システムの機能ブロック図。
【図４】従来のサーバサイドレンダリングを行う印刷制御システムの機能ブロック図。
【図５】本実施形態の印刷制御システムの機能ブロック図。
【図６】図５に示す印刷制御システムにより実行される印刷制御の流れを示したフローチャート。
【図７】仮想プリンタドライバにより実行される処理の流れを示したフローチャート。
【図８】印刷ジョブのジョブ処理状況を監視する処理の流れを示したフローチャート。
【発明を実施するための形態】
【００１０】
図１は、本実施形態の印刷制御システムとしてのクライアントコンピュータ（以下、クライアントと略す。）とサーバコンピュータ（以下、サーバと略す。）とを含むネットワークシステムの構成例を示した図である。このネットワークシステムは、４台のクライアント１０〜１３と、ＭＦＰ(Multi Function Peripheral)１４と、レーザプリンタ１５〜１７と、サーバ１８とから構成されている。これらの機器は、ネットワーク１９を介して互いに接続され、互いに通信可能とされている。印刷装置として使用されるＭＦＰ１４およびレーザプリンタ１５〜１７は、リモートプリンタとしてネットワーク１９に接続されている。
【００１１】
クライアント１０〜１３は、ここでは４台としているが、１台であってもよいし、２台または３台であってもよいし、５台以上であってもよい。ＭＦＰ１４も、１台に限定されるものではなく、２台以上であってもよい。また、レーザプリンタ１５〜１７も、１または２台であってもよいし、４台以上であってもよい。また、その他の印字方式のプリンタ、例えばインクジェットプリンタ等を用いてもよい。ただし、自動振り分けを行うためには、リモートプリンタは複数台であることが望ましい。
【００１２】
クライアント１０〜１３は、デスクトップＰＣ、ノートＰＣ、タブレットＰＣ等とされ、オフィス等に配置され、各々が各ユーザにより使用される。クライアント１０〜１３は、クライアント１０〜１３を制御するＯＳ、文書データを作成し、印刷処理を依頼する機能を備えるアプリケーションを実装している。ここでは、クライアント１０〜１３が、文書データを作成する機能も有するアプリケーションを実装しているが、この文書データを作成する機能を有するアプリケーションは、別途設けられるアプリケーションサーバに実装されていてもよい。この場合、クライアント１０〜１３は、印刷処理を依頼する機能のみを有する。このため、クライアント１０〜１３は、いわゆるシンクライアントとして、サービス要求を発行し、そのアプリケーションサーバに文書データ作成処理を実行させ、処理結果を受領して印刷出力を依頼することができる。
【００１３】
ＭＦＰ１４は、コピー機能、ファックス機能、プリンタ機能、スキャナ機能、データ配信機能等の複数の機能を実装し、その機能を実現するために、プロッタ、スキャナ、通信Ｉ／Ｆ等をハードウェアとして備えている。プロッタは、レーザプリンタ１５〜１７と同様の電子写真方式のプロッタを用いることができる。ＭＦＰ１４やレーザプリンタ１５〜１７は、ネットワークインタフェース(NIC)を実装し、これらの機器が解釈可能なプリンタ言語に変換された印刷コマンドを、ネットワーク１９を介して受領し、その印刷コマンドに基づき、印刷を実行する。
【００１４】
サーバ１８は、クライアント１０〜１３と同様のＰＣ、ワークステーション等とされ、クライアント１０〜１３から印刷要求を受け付け、描画処理等の所定の処理を実行し、また、プリントサーバの機能として、リモートプリンタの管理を行う。ここでは、サーバ１８がプリントサーバの機能を有する構成としたが、プリントサーバを別途設けることもできる。
【００１５】
ネットワーク１９は、１０００Ｂａｓｅ−ＴＸ等のイーサネット（登録商標）、光ネットワーク、ＩＥＥＥ８０２．１１等の規格の無線ネットワークを含んで構成することができる。ネットワーク１９は、フレームまたはＴＣＰ／ＩＰプロトコルに基づくパケット通信により、相互通信を行うことができる。また、ネットワーク１９は、ＬＡＮ、ＶＡＮ(Virtual Private Network)等によるセキュア環境下でインターネット等の広域ネットワークを含んで構成されていてもよい。
【００１６】
印刷制御システムは、クライアント１０〜１３がポイントアンドプリント機能によりサーバ１８との間の接続を確立することにより、その機能を実現する。これらの間の接続は、接続する機器に応じて、ＲＰＣ接続やＳＭＢ接続により確立することができる。ＲＰＣ、すなわちリモートプロシージャコールは、ネットワークに接続された他の機器でプログラムを呼び出し、実行させるためのプロトコルで、ＲＰＣ接続は、そのプロトコルを使用して接続を行うものである。ＳＭＢ、すなわちサーバメッセージブロックは、ファイル共有やプリンタ共有を実現するためのプロトコルで、ＳＭＢ接続は、そのプロトコルを使用して接続を行うものである。
【００１７】
クライアント１０〜１３は、サーバ１８へ要求メッセージ等を送信し、サーバ１８が応答を返すことにより、この接続を確立することができる。また、クライアント１０〜１３は、例えばファイル名を指定して実行することにより、また、同一のワーキンググループや同一のドメインに含まれるコンピュータを一覧するＮｅｔ  Ｖｉｅｗコマンドを使用して、接続を確立することもできる。なお、クライアント１０〜１３とサーバ１８との間は、ＲＤＰ(Remote Desktop Protocol)等の適切な遠隔接続プロトコルを使用して通信を行うことができる。
【００１８】
各ユーザは、自分が使用するクライアント１０〜１３を利用し、それに実装されているアプリケーションを使用して文書を作成する。各ユーザは、作成した文書を印刷したい場合、そのアプリケーションを起動して印刷設定を行い、アプリケーションが、その設定された印刷設定情報と作成した文書の文書データとを含めて印刷要求を生成する。印刷要求には、クライアント１０〜１３を利用するユーザとして登録されたユーザの情報や、クライアント１０〜１３の装置情報が、クライアントコンピュータに関する情報として含まれる。このクライアントコンピュータに関する情報は、以下、システム情報として説明する。
【００１９】
ここで、印刷設定情報としては、例えば、用紙の種類、用紙のサイズ、用紙の向き、枚数、カラー印刷の有無、両面印刷の有無、集約印刷の有無、行数、列数、フォントの種類、フォントのサイズ等が挙げられる。システム情報としては、例えば、ユーザ名、装置名、ＩＰアドレス、ＭＡＣ(Media Access Control)アドレス等が挙げられる。
【００２０】
アプリケーションは、クライアント１０〜１３が備えるＣＰＵにより実行されることにより、アプリケーション実行手段として機能し、このアプリケーション実行手段が、上記の印刷要求を作成し、その印刷要求を出力する。なお、この印刷要求は、クライアント１０〜１３がユーザからの印刷指示を受け付け、クライアント１０〜１３からアプリケーションがその印刷指示を受け付けることにより出力される。
【００２１】
印刷制御システムは、印刷要求を受け付け、描画処理を行い、中間画像の画像データを生成し、また、印刷要求から印刷設定情報とシステム情報とを抽出し、それらから構成される中間データを生成する。また、印刷制御システムは、この中間データを用いて、出力先となるリモートプリンタを決定し、その決定したリモートプリンタへ出力するために一時的にデータを蓄積する出力待ちデータ蓄積手段として機能するプリントキューへ印刷ジョブを振り分ける。プリントキューでは、決定したリモートプリンタが解釈可能なプリンタ言語に変換して印刷コマンドを生成し、その印刷コマンドを当該リモートプリンタへ出力する。
【００２２】
また、印刷制御システムは、出力先の情報を基に、監視する対象のリモートプリンタを特定し、そのリモートプリンタとの間で通信を行い、当該リモートプリンタのジョブ処理状況を監視する。そして、印刷制御システムは、出力先の情報、エラーが発生した場合のエラー情報、印刷が終了した旨の情報等を、クライアント１０〜１３が備える表示装置に表示させる。
【００２３】
これにより、自動的に印刷ジョブを振り分けることができ、また、印刷ジョブのジョブ処理状況も監視することができる。
【００２４】
図２は、クライアント１０〜１３のハードウェア構成を例示した図である。クライアント１０〜１３は、いずれも同じハードウェア構成を採用することができる。このため、ここではクライアント１０のみについて説明する。
【００２５】
クライアント１０は、ＣＰＵ２０、ＲＯＭ２１、ＲＡＭ２２、ＨＤＤ２３、通信Ｉ／Ｆ２４、外部機器Ｉ／Ｆ２５、外部メモリＩ／Ｆ２６、表示装置２７、入力装置２８をハードウェアとして含んで構成される。これらのハードウェアは、バス２９を介して互いに接続され、データ等のやりとりを行うことができるようになっている。
【００２６】
ＣＰＵ２０は、クライアント１０の全体の制御を行う。ＣＰＵ２０は、ＲＯＭ２１やＨＤＤ２３に記憶される各種プログラムを実行し、所定の処理を行う。ＲＯＭ２１は、電源を投入してからＯＳが起動するまでの処理を行うブートプログラム、ＨＤＤ２３や外部メモリＩ／Ｆ２６等を制御するＢＩＯＳ(Basic Input/Output System)等のプログラムを記憶する。ＨＤＤ２３は、ＯＳ、プリンタドライバ、各種のアプリケーション、各種データ等を記憶する。ＲＡＭ２２は、ＣＰＵ２０が上記のプログラムを実行して各種の制御を行う際の作業エリアとして使用される。
【００２７】
通信Ｉ／Ｆ２４は、ネットワーク１９に接続し、クライアント１０が他のクライアント１１〜１３、ＭＦＰ１４、レーザプリンタ１５〜１７、サーバ１８と通信を行うことを可能にする。通信Ｉ／Ｆ２４は、送受信機を備え、Ｗｉ−Ｆｉ等による無線ＬＡＮ接続により、無線通信を行うことができるようにされていてもよい。
【００２８】
外部機器Ｉ／Ｆ２５は、ＵＳＢ(Universal Serial Bus)やＩＥＥＥ１３９４等の接続規格をもつ外部機器を接続し、データ等の入出力を行う。外部メモリＩ／Ｆ２６は、ＣＤ−ＲＯＭ、ＤＶＤ、ＳＤカード等の外部メモリと接続し、ＨＤＤ２３と外部メモリとの間のデータの入出力を行う。表示装置２７は、各種のデータを表示画面に表示するディスプレイで、入力装置２８は、ユーザが各種の入力操作を行い、その入力を受け付ける装置である。入力装置２８としては、キーボード、マウス、タッチパッド等を使用することができる。これら表示装置２７と入力装置２８とは、ディスプレイとキーボードといったように別個の装置であってもよいが、タッチパネルといった両方の機能を備えた装置を使用することも可能である。
【００２９】
なお、ＭＦＰ１４、レーザプリンタ１５〜１７、サーバ１８も、これらのハードウェアを含んで構成することができる。ただし、ＭＦＰ１４は、これらのハードウェアに加えて、さらにプロッタおよびスキャナを含み、レーザプリンタ１５〜１７は、これらのハードウェアに加えて、さらにプロッタを含む。サーバ１８は、外部機器Ｉ／Ｆ２５、外部メモリＩ／Ｆ２６、表示装置２７、入力装置２８を備えていても、備えていなくてもよい。
【００３０】
本実施形態の印刷制御システムの機能、その機能により実現される処理の詳細を説明する前に、既存の自動振り分けを行う印刷制御システムの機能構成について簡単に説明しておく。既存の自動振り分けを行う印刷制御システムは、仮想プリンタドライバ、振り分け機能、出力先決定機能、印刷ジョブ監視機能といった４つの機能を有し、これらの機能を実現するためのプログラムは、ＯＳ上で動作する。印刷制御システムは、このプログラム以外に、印刷要求を出力するアプリケーション、プリントキューを実現し、その内部で動作するプリンタドライバを備える。なお、このプログラムは、クライアントをシンクライアントとし、アプリケーションサーバ等に実装してシンクライアントから利用する、Ｔｅｒｍｉｎａｌ  Ｓｅｒｖｉｃｅ上の公開アプリケーションとすることも可能である。プリンタドライバは、リモートプリンタ（以下、単にプリンタという。）が解釈可能なプリンタ言語に変換し、印刷コマンドとしてそのプリンタに出力する。
【００３１】
図３は、既存の自動振り分けを行う印刷制御システムの機能ブロック図である。この印刷制御システムは、例えばクライアントから構成され、その機能部として、アプリケーション実行部３０、仮想プリンタドライバ３１、中間データ蓄積部３２、振り分け部３３、出力先決定部３４、印刷ジョブ監視部３５を備える。また、この印刷制御システムは、各々が出力先のプリンタ３７に対応したプリンタドライバを備える１以上のプリントキュー３６も有する。図３に示すように、ネットワーク１９には、利用可能な３台のプリンタ３７としてプリンタＡ〜プリンタＣが接続されているため、それらに対応した３つのプリントキューＡ〜プリントキューＣが設けられている。ここでは、各機能部として説明するが、これらは各手段として機能するものである。
【００３２】
アプリケーション実行部３０は、ＣＰＵがＯＳ上でアプリケーションを実行することにより実現され、クライアントに実装されていてもよいし、アプリケーションサーバ等の別の機器に実装されていてもよい。アプリケーション実行部３０は、印刷対象の文書データを生成し、その文書データを印刷するために、文書データ、印刷設定情報、システム情報から構成される印刷要求を出力する。ここでは文書データとしているが、その他のデータであってもよい。
【００３３】
仮想プリンタドライバ３１は、仮想プリンタドライバ部として機能し、通常のプリンタドライバと同様の動作を行いつつ、アプリケーション実行部３０から印刷要求を受け付け、印刷要求から、印刷対象の文書をページ単位で中間画像の画像データを生成する。ここで、通常のプリンタドライバと同様の動作とは、描画処理、すなわち、この印刷対象の文書からページ単位の中間画像の画像データを生成する処理である。
【００３４】
仮想プリンタドライバ３１は、その文書の文書名や各種の印刷設定を含む印刷設定情報、印刷制御システムを動作させているユーザの情報を含むシステム情報を、印刷要求から抽出する。そして、仮想プリンタドライバ３１は、生成した画像データ、抽出した印刷設定情報およびシステム情報から構成される中間データを生成する。仮想プリンタドライバ３１は、生成した中間データを、中間データ蓄積部３２に蓄積し、蓄積した旨を振り分け部３３に通知する。
【００３５】
振り分け部３３は、その通知を受けて、中間データ蓄積部３２から蓄積された中間データを取得し、出力先を決定するために、出力先決定部３４を呼び出し、取得した中間データを渡す。出力先決定部３４は、中間データを構成する印刷設定情報およびシステム情報と、予め設定された設定条件と照合し、その設定条件に合致する出力先を決定し、その出力先の情報を返答する。予め設定された設定条件としては、ユーザ名「Ｔａｒｏ」から指示された印刷はプリンタＡから出力する、という条件が挙げられる。
【００３６】
出力先決定部３４は、呼び出しを受け、渡された中間データに基づき出力先を決定した後、振り分け部３３に対して出力先のプリンタ３７に対応するプリントキュー３６の情報を返答する。上記の例で言えば、プリンタＡに対応するプリントキューＡを特定するためのアドレス等の情報を返答する。
【００３７】
振り分け部３３は、出力先決定部３４が返答したプリントキュー３６の情報に対して仮想プリンタドライバ３１が出力した中間データを構成する中間画像の画像データを、印刷ジョブとして出力する。また、振り分け部３３は、プリントキュー３６からプリンタ３７の情報を取得し、印刷ジョブ監視部３５にプリンタ３７の印刷ジョブのジョブ処理状況を監視させる。印刷ジョブ監視部３５は、振り分け部３３が出力した印刷ジョブをプリンタ３７が実行中に、そのプリンタ３７においてエラーが発生していないかどうかを監視する。印刷ジョブ監視部３５は、プリンタ３７でエラーが発生したことを検出した場合、表示装置２７にエラーが発生した旨を通知し、画面上に表示させる。
【００３８】
プリントキュー３６では、プリントキュー３６の内部で動作するプリンタドライバにより、対応するプリンタ３７が解釈可能なプリンタ言語に変換し、印刷コマンドとしてそのプリンタ３７に出力する。プリンタ３７は、プリントキュー３６から受け付けた印刷コマンドに基づき、印刷を実行する。
【００３９】
ポイントアンドプリント機能を使用した印刷では、仮想プリンタドライブ部による処理が、図３に示す印刷制御システムの仮想プリンタドライバ３１による処理とは異なることから、図３に示すシステムでは、ポイントアンドプリント機能を使用できない。そこで、この機能を使用できるようにするため、図４に示すような、２つのコンポーネントに分け、各コンポーネントをクライアント、サーバにそれぞれ実装する。図４を参照して、クライアント、サーバの機能ブロック、その処理について簡単に説明する。
【００４０】
図４に示すシステムは、サーバサイドレンダリングを行うシステムであり、プリンタドライバによる描画処理がサーバにより実行され、プリンタ言語への変換もサーバにより実行される。このため、描画処理を行う仮想プリンタドライバ３１、中間データ蓄積部３２、プリントキュー３６は、サーバに実装する必要がある。振り分け部３３、出力先決定部３４も、サーバに実装することができるが、印刷ジョブ監視部３５については、クライアントに実装しなければ、ユーザがクライアントを使用してプリンタ３７を監視することができない。
【００４１】
このため、図４に示すように、図３に示した機能部のうち、ユーザが使用して印刷要求を作成するアプリケーション実行部３０、印刷ジョブ監視部３５のみをクライアントが実装し、その他はサーバが実装する。印刷ジョブ監視部３５は、振り分け部３３からの指示を受けて印刷ジョブの監視を開始するが、そのためには、その指示を受け付ける機能、どのプリンタを監視するかを決定するための機能が別途必要になる。そこで、クライアントには、その指示を受け付けるための振り分け先情報受信部３８、どのプリンタ３７を監視するかを決定するための印刷ジョブ監視制御部３９をさらに備える。これにより、サーバ上での描画処理や振り分け処理に正しく出力先の情報の受信やプリンタ３７の監視を行うことができる。
【００４２】
クライアントは、アプリケーション実行部３０、印刷ジョブ監視部３５に加えて、上記の振り分け先情報受信部３８、１以上のプリンタ３７に対応した１以上の印刷ジョブ監視制御部３９を備える。また、クライアントは、印刷要求を、サーバが実装する仮想プリンタドライバ３１に転送する仮想プリンタドライバ４０も備える。仮想プリンタドライバ４０は、アプリケーション実行部３０から出力された印刷要求をＯＳが受け、ＯＳによって起動され、印刷処理を開始させる。そして、仮想プリンタドライバ４０は、振り分け先情報受信部３８および印刷ジョブ監視制御部３９が起動していない場合、それらの機能部を起動させる。この仮想プリンタドライバ４０は、描画処理は実施しない。
【００４３】
サーバに実装された仮想プリンタドライバ３１は、クライアントに実装された仮想プリンタドライバ４０から印刷要求を受け取る。仮想プリンタドライバ３１は、印刷要求に含まれる文書データからページ単位で中間画像の画像データを生成する。また、仮想プリンタドライバ３１は、印刷要求から、その文書の文書名や各種の印刷設定を含む印刷設定情報およびクライアントを動作させているユーザの情報を含むシステム情報を抽出する。そして、仮想プリンタドライバ３１は、生成した画像データ、抽出した印刷設定情報およびシステム情報から構成される中間データを生成する。仮想プリンタドライバ３１は、生成した中間データを、中間データ蓄積部３２に蓄積し、蓄積した旨を振り分け部３３に通知する。
【００４４】
サーバは、振り分け制御部４１をさらに備えていて、仮想プリンタドライバ３１から振り分け指示を受け付ける。振り分け制御部４１は、その指示を受け付け、仮想プリンタドライバ３１が中間データ蓄積部３２に蓄積した中間データの出力先の情報を取得し、振り分け部３３を起動させる。また、振り分け制御部４１は、出力先の情報を取得するために、出力先決定部３４を呼び出す。そして、振り分け制御部４１は、起動した振り分け部３３に対して、出力先の情報および中間データ蓄積部３２における中間データの蓄積場所を通知する。
【００４５】
出力先決定部３４は、中間データ蓄積部３２に蓄積された印刷設定情報およびシステム情報と、予め設定された設定条件と照合し、その条件に合致する出力先を決定し、その出力先の情報を振り分け制御部４１に対して返答する。振り分け部３３は、振り分け制御部４１から出力先の情報を取得し、蓄積場所の情報に基づき中間データ蓄積部３２から中間データを取得し、中間画像の画像データを、印刷ジョブとして出力先のプリンタ３７に対応したプリントキュー３６へ出力する。また、振り分け部３３は、そのプリントキュー３６からプリンタ３７の情報を取得し、中間データに含まれるシステム情報、例えば装置名、ＩＰアドレス、ＭＡＣアドレスを使用して、プリンタ３７の情報を、振り分け先情報受信部３８へ送信する。
【００４６】
振り分け先情報受信部３８は、プリンタ３７の情報を、振り分け部３３から受信すると、そのプリンタ３７の情報を、印刷ジョブ監視制御部３９に渡す。印刷ジョブ監視制御部３９は、印刷ジョブ監視部３５に対してプリンタ３７の情報を渡し、出力先であるプリンタ３７を監視させる。印刷ジョブ監視部３５は、プリンタ３７と通信し、プリンタ３７の現在の状態に関する情報、すなわちジョブ処理状況を取得する。印刷実行中に何らかのエラーが発生した場合、印刷ジョブ監視部３５は、プリンタ３７からジョブ処理状況としてエラー情報を取得し、表示装置の画面上にそのエラー情報を表示させる。エラーが発生することなく、印刷が終了した場合は、印刷ジョブ監視部３５は、プリンタ３７から印刷が終了した旨の通知を受け取り、その画面上に印刷が終了した旨と、出力したプリンタ３７の情報とを表示させる。
【００４７】
プリントキュー３６では、プリントキュー３６の内部で動作するプリンタドライバにより、対応するプリンタ３７が解釈可能なプリンタ言語に変換し、印刷コマンドとしてプリンタ３７に出力する。プリンタ３７は、プリントキュー３６から出力された印刷コマンドに基づき、印刷を実行する。
【００４８】
これまで既存の印刷制御システムについて説明してきた。図４に示したサーバサイドレンダリングを行うシステムでは、サーバにおいて描画処理を行い、プリンタ言語への変換も行うため、サーバに実装されていない特殊なフォントが使用された場合、正しく変換できず、文字化けが発生することになる。そこで、サーバサイドレンダリングではなく、クライアントサイドレンダリングを行うシステムとすれば、このような問題を解消することができる。これは、クライアントで特殊なフォントを使用して文書を作成した場合であっても、同じクライアントでプリンタ言語への変換も行うからである。
【００４９】
しかしながら、クライアントサイドレンダリングでは、クライアントで作成したジョブＩＤを、プリントサーバに送信した際に、ジョブＩＤが変更されてしまい、クライアントから印刷ジョブのジョブ処理状況を監視することができない。また、クライアントで描画処理を行うためには、独自に開発したプリントプロセッサモジュールをクライアントにコピーしなければならない。しかしながら、クライアントに実装されるＯＳとの互換性や信頼性を得るために、ロゴ認証と呼ばれる認証テストを行う必要があり、認証が得られない場合、描画処理を行うことができない。
【００５０】
そうすると、描画処理は、サーバで行い、プリンタ言語への変換および印刷ジョブのジョブ処理状況の監視を、クライアントで実行することができれば、このような問題は生じなくなる。
【００５１】
そこで、本発明では、描画処理のみをサーバ１８で行い、その他の処理についてはクライアント１０〜１３で行うように構成した印刷制御システムを提供する。これにより、上記の問題を解決することができる。図５は、本実施形態の印刷制御システムの機能ブロック図である。この印刷制御システムも、クライアント１０とサーバ１８とを含んで構成されるものとして説明する。なお、印刷制御システムは、クライアント１１とサーバ１８、クライアント１２とサーバ１８、クラインアント１３とサーバ１８から構成されていてもよいし、２以上のクライアントとサーバ１８とから構成されていてもよい。
【００５２】
クライアント１０は、アプリケーション実行部６０、仮想プリンタドライバ６１、中間データ受信部６２、中間データ蓄積部６３、振り分け制御部６４、出力先決定部６５、振り分け先情報受信部６６、印刷ジョブ監視制御部６７を備えている。また、クライアント１０は、出力先であるプリンタ８０の各プリンタＡ〜プリンタＣを監視するための印刷ジョブ監視部６８、各プリンタ８０に対応した振り分け部６９およびプリントキュー７０を備えている。
【００５３】
サーバ１８は、中間データ生成手段としての仮想プリンタドライバ５０、中間データ蓄積部５１、中間データ送信部５２を備えている。これらの機能部は、各装置に実装されるプログラムをＣＰＵが実行することによって、また、ＲＡＭやＨＤＤ等の記憶装置、通信Ｉ／Ｆ等によって実現される。これらの各機能部は、上記のように各手段として機能するものである。
【００５４】
クライアント１０が備えるアプリケーション実行部６０は、印刷対象の文書データ、印刷設定情報、システム情報を含む印刷要求を出力する。アプリケーション実行部６０が印刷要求を出力すると、ＯＳが仮想プリンタドライバ６１を起動させ、仮想プリンタドライバ６１が、振り分け制御部６４、振り分け先情報受信部６６、印刷ジョブ監視制御部６７が起動していない場合、それらの機能部を起動させる。その後、仮想プリンタドライバ６１は、振り分け制御部６４に対して振り分け処理を実行させるための指示を送る。そして、仮想プリンタドライバ６１は、中間データ受信部６２を起動させ、中間データ受信部６２が、サーバ１８から送信された中間データを受信する。中間データ受信部６２は、サーバ１８から受信した中間データを、中間データ蓄積部６３に蓄積させる。
【００５５】
サーバ１８が備える仮想プリンタドライバ５０は、クライアント１０が備える仮想プリンタドライバ６１との間で通信を行い、仮想プリンタドライバ６１から印刷要求を受信する。仮想プリンタドライバ５０は、その印刷要求から、中間画像の画像データを生成し、印刷設定情報およびシステム情報を抽出して、それらのデータや情報から中間データを生成して、中間データ蓄積部５１に蓄積させる。中間データ送信部５２は、中間データ蓄積部５１に蓄積された中間データが存在するかどうかを適宜確認し、中間データが存在する場合、それを取得し、クライアント１０が備える中間データ受信部６２へ取得した中間データを送信する。
【００５６】
振り分け制御部６４は、仮想プリンタドライバ６１からの指示を受け、出力先決定部６５を起動させ、中間データ蓄積部６３に蓄積された中間データを取得し、中間データを出力先決定部６５に渡す。出力先決定部６５は、予め設定された１以上の設定条件と、取得した中間データを構成する印刷設定情報およびシステム情報とを照合し、その条件に合致する出力先を決定し、その出力先の情報を振り分け制御部６４に対して返答する。設定条件は、上記に例示したような条件であり、印刷装置であるプリンタ８０と印刷設定情報およびシステム情報の少なくとも１つの情報とを含む。
【００５７】
振り分け制御部６４は、振り分け部６９を起動させ、出力先の情報および中間画像の画像データの蓄積場所を振り分け部６９に対して通知する。振り分け部６９は、通知された蓄積場所に基づき、画像データを取得し、出力先の情報に基づき、画像データを印刷ジョブとして、出力先のプリンタ８０に対応するプリントキュー７０に出力し、プリントキュー７０から出力先のプリンタ８０の情報を取得する。そして、振り分け部６９は、取得したプリンタの情報を、振り分け先情報受信部６６へ送る。
【００５８】
振り分け先情報受信部６６は、振り分け部６９からプリンタ８０の情報を受け取り、それを印刷ジョブ監視制御部６７へ渡す。印刷ジョブ監視制御部６７は、印刷ジョブ監視部６８に対してプリンタ８０の情報を渡し、出力先であるプリンタ８０を監視させる。印刷ジョブ監視部６８は、プリンタ８０の情報を使用してプリンタ８０と通信し、プリンタ８０の現在の状態に関する情報、すなわちジョブ処理状況を取得する。
【００５９】
印刷実行中に何らかのエラーが発生した場合、印刷ジョブ監視部６８は、プリンタ８０からエラー情報を取得し、取得したエラー情報を、表示装置２７の画面上に表示させ、ユーザに知らせる。エラーが発生することなく、印刷が終了した場合は、印刷ジョブ監視部６８は、プリンタから印刷が終了した旨の通知を受け取り、表示装置２７の画面上に印刷が終了した旨と、出力したプリンタ８０の情報とを表示させる。これらの情報は、画面上にダイアログを表示させ、そのダイアログ内にメッセージや警告等として表示させることができる。
【００６０】
プリントキュー７０では、プリントキュー７０の内部で動作する変換手段としてのプリンタドライバにより、対応するプリンタ８０が解釈可能なプリンタ言語に変換し、印刷コマンドとしてプリンタ８０へ出力する。プリンタ８０は、プリントキュー７０から受け付けた印刷コマンドに基づき、印刷を実行する。
【００６１】
サーバ１８とクライアント１０とはネットワークを介して接続されるため、その通信事情によっては、印刷要求を受け、それに対応する中間データを即座に返すことができない場合がある。すると、中間データが返される前に次の印刷要求が出力された場合、当該次の印刷要求とその中間データとが対応するものと判断され、異なる印刷結果となってしまう。
【００６２】
これを回避するために、印刷制御システムは、ネットワークの通信状態を判断する判断部と、その判断部の判断結果に応じて、仮想プリンタドライバ５０により生成された中間データを圧縮する圧縮部とをさらに備えることができる。これらの機能部は、サーバ１８が備えることができる。これに伴い、クライアント１０は、圧縮された中間データを伸長し、元の中間データに復元する伸長部を備えることができる。ネットワークの通信状態が良好でない場合であっても、中間データを圧縮し、サイズを小さくして送信することができるので、中間データを即座に返すことが可能となる。
【００６３】
ネットワークの通信状態は、例えば、pingと呼ばれるソフトウェアを利用し、通信対象のノードにパケットを送り、その応答が得られるまでの時間や応答率から判断することができる。これは一例であるので、それ以外の方法を使用して判断することもできる。
【００６４】
中間データの圧縮は、所定の圧縮アルゴリズムを適用して実施することができる。ここで、圧縮とは、データを実質的な性質を保持したままデータの容量を減らす処理である。この圧縮は、中間データがクライアント１０へ送信された場合、伸長して元のデータに復元する必要があるので、可逆圧縮でなければならない。圧縮アルゴリズムは、これまでに知られたいかなるアルゴリズムであってもよく、例えば、ＺＩＰ、ＬＨＡ、ＬＺＨ等を使用することができる。圧縮データの伸長は、伸長プログラム（解凍プログラムとも呼ばれる。）を使用して実施することができる。
【００６５】
ネットワークの通信状態によっては、上記の圧縮のみでは不十分な場合がある。この場合、中間データを複数に分割し、分割したデータを１つずつ送信したり、分割したデータをさらに圧縮し、その圧縮したデータを送信したりすることができる。このため、印刷制御システムは、さらに、サーバ１８が、仮想プリンタドライバ５０により生成された中間データを、複数のデータに分割し、複数に分割したデータを出力する分割部を備えることができる。また、クライアント１０が、複数のデータを結合し、元の中間データに復元する結合部を備えることができる。この結合は、結合プログラムを使用して実施することができる。
【００６６】
分割部は、任意の数あるいは任意のサイズに中間データを分割することができる。分割部は、複数に分割したデータを、上記の圧縮部に出力し、圧縮部が、複数の圧縮データを生成し、中間データ送信部５２がそれをクライアント１０へ送信することができる。また、クライアント１０では、中間データ受信部６２が、複数の圧縮データを受信し、伸長部が複数の圧縮データを伸長して元の複数のデータに復元し、結合部が複数のデータを結合して、元の中間データに復元することができる。
【００６７】
図６に示すフローチャートを参照して、印刷制御システムが実行する印刷制御について詳細に説明する。ユーザは、自己が使用するクライアント１０上でアプリケーションのアイコンをダブルクリックする等して開き、起動させる。これにより、アプリケーション実行部６０が起動する。ユーザは、入力装置２８を使用して、文字等を入力し、文書を作成する。また、ユーザは、既に作成した文書を開き、修正等を行う。その後、ユーザは、印刷設定画面を要求し、アプリケーション実行部６０は、それを受けて、印刷設定画面を表示させる。ユーザは、用紙サイズの選択等の印刷設定を行い、印刷開始ボタンを押下する等して、印刷を指示する。この指示を受けて、印刷制御システムは、ステップ６００から処理を開始する。
【００６８】
ステップ６０５では、アプリケーション実行部６０は、仮想プリンタドライバ６１が起動していない場合、クライアント１０に実装されているＯＳに指示し、仮想プリンタドライバ６１を起動させる。そして、アプリケーション実行部６０は、画面上に開かれた文書の文書データと、印刷設定情報と、クライアント１０に登録されているシステム情報とを含む印刷要求を、仮想プリンタドライバ６１に出力する。このとき、サーバ１８の仮想プリンタドライバ５０が起動していない場合、サーバ１８に実装されているＯＳに指示し、仮想プリンタドライバ５０を起動させる。ステップ６１０では、仮想プリンタドライバ６１が、アプリケーション実行部６０から出力された印刷要求を、サーバ１８の仮想プリンタドライバ５０へ転送する。
【００６９】
ステップ６１５では、仮想プリンタドライバ５０が、印刷要求から中間データを生成する。仮想プリンタドライバ５０は、中間データ蓄積部５１に、生成した中間データを蓄積させる。ここで、仮想プリンタドライバ５０は、中間データ送信部５２が起動していない場合、起動させる。ステップ６２０では、中間データ送信部５２が、中間データ蓄積部５１に蓄積された中間データの有無を確認し、中間データが蓄積されている場合に当該中間データを取得し、クライアント１０にその中間データを送信する。
【００７０】
ステップ６２５では、クライアント１０の中間データ受信部６２が、中間データ送信部５２が送信した中間データを受信する。そして、中間データ受信部６２は、受信した中間データを中間データ蓄積部６３に蓄積させる。ステップ６３０では、振り分け制御部６４が、中間データ蓄積部６３に蓄積された中間データの有無を確認し、中間データが蓄積されている場合に当該中間データを取得する。振り分け制御部６４は、出力先を決定させるために、出力先決定部６５が起動していない場合、起動させる。そして、振り分け制御部６４は、取得した中間データを、出力先決定部６５に渡す。
【００７１】
ステップ６３５では、出力先決定部６５が、振り分け制御部６４から取得した中間データを構成する印刷設定情報およびシステム情報と、出力先決定部６５が保持する、予め設定された１以上の設定条件とを照合し、その条件に合致する出力先を決定する。例えば、ユーザＡから指示された印刷は、プリンタＢから出力する、という条件が設定条件として設定されていて、中間データを構成するシステム情報に、ユーザＡが含まれる場合、その設定条件に合致する出力先としてプリンタＢと決定する。
【００７２】
ステップ６４０では、出力先決定部６５が、決定した出力先の情報を、振り分け制御部６４に対して返答する。ステップ６４５では、振り分け制御部６４が、振り分け部６９が起動していない場合は起動させ、出力先の情報および中間データの蓄積場所を振り分け部６９に通知する。
【００７３】
ステップ６５０では、振り分け部６９が、その出力先に対応するプリントキュー７０へ印刷ジョブを振り分け、中間データを構成する画像データを印刷ジョブとして出力する。ステップ６５５では、プリントキュー７０内で動作するプリンタドライバが、変換手段として機能し、画像データを出力先のプリンタ８０が解釈可能なプリンタ言語に変換し、印刷コマンドとしてそのプリンタ８０に出力する。ステップ６６０では、プリンタ８０が、印刷コマンドを受領し、その印刷コマンドに基づき、印刷を実行し、紙に印字等して出力されたところで、ステップ６６５へ進み、この処理を終了する。
【００７４】
図７は、クライアント１０が備える仮想プリンタドライバ６１により実行される処理の流れを示したフローチャートである。仮想プリンタドライバ６１は、クライアント１０に実装されるＯＳによって起動され、その起動によって、ステップ７００から処理を開始する。仮想プリンタドライバ６１は、１つの処理として、アプリケーション実行部６０から出力された印刷要求を、サーバ１８が備える仮想プリンタドライバ５０へ転送する処理を行う。また、仮想プリンタドライバ６１は、その処理に並行し、もう１つの処理として、以下のステップの処理を実行する。
【００７５】
ステップ７０５では、印刷ジョブ監視制御部６７が起動しているかどうかを判断する。起動していない場合、ステップ７１０へ進み、印刷ジョブ監視制御部６７を起動させる。既に起動している場合は、ステップ７１５へ直接進む。ステップ７１５では、振り分け先情報受信部６６が起動しているかどうかを判断する。起動していない場合、ステップ７２０へ進み、振り分け先情報受信部６６を起動させる。既に起動している場合は、ステップ７２５へ直接進む。
【００７６】
ステップ７２５では、振り分け制御部６４が起動しているかどうかを判断する。起動していない場合、ステップ７３０へ進み、振り分け制御部６４を起動させる。既に起動している場合は、ステップ７３５へ直接進む。ステップ７３５では、中間データ受信部６２が起動しているかどうかを判断する。起動していない場合、ステップ７４０へ進み、中間データ受信部６２を起動させる。既に起動している場合は、ステップ７４５へ直接進み、仮想プリンタドライバ６１による処理を終了する。
【００７７】
各機能は、例えば、プログラムモジュールとして提供することができ、当該モジュールが実行されているかどうかにより、各機能部が起動しているかどうかを判断することができる。ここでは、印刷ジョブ監視制御部６７、振り分け先情報受信部６６，振り分け制御部６４、中間データ受信部６２の順に判断しているが、この順に限られるものではなく、その他の順に判断を行ってもよい。
【００７８】
印刷制御システムは、図６に示した自動振り分けを実現するほか、印刷ジョブのジョブ状況を監視することもできる。この監視する処理について、図８に示すフローチャートを参照して詳細に説明する。図６に示すステップ６４５で振り分け制御部６４が振り分け部６９に中間データを出力したことを受けて、ステップ８００からこの処理を開始する。
【００７９】
ステップ８０５では、振り分け部６９が、対応するプリントキュー７０から出力先のプリンタ８０の情報を取得する。プリンタ８０の情報としては、プリンタ名、ＩＰアドレス、ＭＡＣアドレス等を挙げることができる。そして、振り分け部６９は、取得したプリンタの情報を、振り分け先情報受信部６６へ送る。
【００８０】
ステップ８１０では、振り分け先情報受信部６６が、振り分け部６９から受け取ったプリンタ８０の情報を、印刷ジョブ監視制御部６７に渡す。ステップ８１５では、印刷ジョブ監視制御部６７は、印刷ジョブ監視部６８を起動させ、受け取ったプリンタ８０の情報を印刷ジョブ監視部６８に渡す。
【００８１】
ステップ８２０では、印刷ジョブ監視部６８は、プリンタ８０の情報を使用してプリンタ８０へ適宜アクセスし、プリンタ８０の状態に関する情報を取得して、プリンタ８０の印刷ジョブのジョブ処理状況を監視する。印刷実行中に何らかのエラーが発生した場合、印刷ジョブ監視部６８は、プリンタ８０からエラー情報を取得し、取得したエラー情報を、表示装置２７の画面上に表示させ、ユーザに知らせる。エラーが発生することなく、印刷が終了した場合は、印刷ジョブ監視部６８は、プリンタ８０から印刷が終了した旨の通知を受け取り、表示装置２７の画面上に印刷が終了した旨と、出力したプリンタ８０の情報とを表示させる。このように、エラー情報や印刷が終了した旨を画面上に表示したところで、ステップ８２５へ進み、この処理を終了する。
【００８２】
サーバ１８において描画処理のみを行い、その結果としての中間データをクライアント１０へ送信するように構成し、クライアント１０で、自動振り分け、プリンタ言語への変換を実施するように構成することで、特殊なフォントの文字化けを回避することができる。これにより、サーバサイドレンダリングで生じる問題を解決することができる。また、サーバ１８で描画処理を行うので、独自に開発したプリントプロセッサモジュールをコピーする必要がなくなり、クライアント１０が直接監視を行うので、クライアントサイドレンダリングで生じる問題も解決することができる。
【００８３】
印刷制御システムは、上記のような文字化けを回避するための処理を実行する機能を使用するか否かを切り替えることができるように、ユーザインタフェース等によりＯＮ／ＯＦＦ制御することも可能である。例えば、ユーザは、クライアント１０が備える入力装置２８を使用し、その機能に対応して設けられるチェックボックスにチェックを入れてＯＮにすることで、その機能を使用することができる。これは一例であるので、その他の設定方法を採用することもできる。なお、その機能がＯＦＦの場合は、自動振り分けも行わず、通常の印刷処理のみを実行することができる。その機能がＯＦＦの場合、文字化けを回避するための処理を実行する機能を有していなければ、これに限定されるものではなく、実行するプログラムを切り替え、印刷制御システムを、図３や図４に示した機能構成とし、自動振り分けを実行できるようにしてもよい。
【００８４】
上記のＯＮ／ＯＦＦ制御を実現するために、印刷制御システムは、機能部として、印刷制御システムの機能を使用する設定を受け付ける設定受付部をさらに備えることができる。設定受付部がその設定を受け付けたことに応答して、上述した各機能部を起動、あるいは各機能部として機能させ、上述した各処理を実行させることができる。
【００８５】
これまで本発明の印刷制御システムおよびそのシステムにより実行される印刷制御方法について図面に示した実施形態を参照しながら詳細に説明してきたが、本発明は、上述した実施形態に限定されるものではない。したがって、他の実施形態や、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。よって、本発明では、上記の印刷制御方法をコンピュータに実行させるためのプログラムや、当該プログラムが記録された記録媒体等も提供することができるものである。
【符号の説明】
【００８６】
１０〜１３…クライアント、１４…ＭＦＰ、１５〜１７…レーザプリンタ、１８…サーバ、１９…ネットワーク、２０…ＣＰＵ、２１…ＲＯＭ、２２…ＲＡＭ、２３…ＨＤＤ、２４…通信Ｉ／Ｆ、２５…外部機器Ｉ／Ｆ、２６…外部メモリＩ／Ｆ、２７…表示装置２７、２８…入力装置、２９…バス、３０…アプリケーション実行部、３１…仮想プリンタドライバ、３２…中間データ蓄積部、３３…振り分け部、３４…出力先決定部、３５…印刷ジョブ監視部、３６…プリントキュー、３７…プリンタ、３８…振り分け先情報受信部、３９…印刷ジョブ監視制御部、４０…仮想プリンタドライバ、４１…振り分け制御部、５０…仮想プリンタドライバ、５１…中間データ蓄積部、５２…中間データ送信部、６０…アプリケーション実行部、６１…仮想プリンタドライバ、６２…中間データ受信部、６３…中間データ蓄積部、６４…振り分け制御部、６５…出力先決定部、６６…振り分け先情報受信部、６７…印刷ジョブ監視制御部、６８…印刷ジョブ監視部、６９…振り分け部、７０…プリントキュー、８０…プリンタ
【先行技術文献】
【特許文献】
【００８７】
【特許文献１】特開２０１２−１９４６２１号公報
【図１】
2015075822.tif 000003
【図２】
2015075822.tif 000004
【図３】
2015075822.tif 000005
【図４】
2015075822.tif 000006
【図５】
2015075822.tif 000007
【図６】
2015075822.tif 000008
【図７】
2015075822.tif 000009
【図８】
2015075822.tif 000010