以下、図面を参照しながら、本発明のいくつかの実施形態について詳細に説明する。なお、複数の図面において対応する要素には同一の符号を付した。また、以下のいくつかの実施形態の説明においては、印刷装置を例に説明するが、本発明に係る実施形態はこれに限定されるものではなく、例えば、複写機やスキャナ等を含む所謂複合機等にも適用することができる。
図1は一実施形態に係る、分散印刷システム100の構成を例示する図である。図2は一実施形態に係る、クライアントコンピュータ(PC)102及び104の構成を例示する図である。図3は、一実施形態に係る、印刷装置106の印刷装置コントローラ300の構成を例示する図である。
図1に例示される分散印刷システム100では、印刷装置106と、印刷装置106を利用している複数のクライアントPC102及び104がネットワーク110を介して接続されている。ネットワーク110は有線接続、及び無線接続(例えばLAN:Local Area Network)などの各種接続形態を含む。クライアントPC102及び104は、例えばパーソナルコンピュータなどであり、印刷装置106を利用するために必要なプリンタドライバ212がインストールされている。なお、以下の説明においては、クライアントPC102は、書類データ216の分散印刷処理の実行を開始するコンピュータであり、他のクライアントPCに分散委託データ520(詳しくは後述する)を委託する側のコンピュータである。一方、クライアントPC104は、分散印刷処理の際に、クライアントPC102からの分散委託データ520の委託を受け付ける側のコンピュータとして取り扱う。従って、クライアントPC102と、クライアントPC104とは、どのコンピュータが分散印刷の実行を開始したかによって関係が入れ替わり、分散印刷処理の実行を開始したコンピュータがクライアントPC102となり、その他のコンピュータはクライアントPC104となる。
図2を参照して、一実施形態に係る、クライアントPC102及び104の例示的な構成を説明する。クライアントPC102及び104は、制御部200、時計203、読取部204、通信インタフェース(I/F)207、入出力(I/O)部208を含んでいる。更に、クライアントPC102及び104は、記憶部202として、補助記憶装置210、RAM220を含んでおり、また、読取部204には着脱可能記憶媒体205が接続可能である。制御部200、時計203、読取部204、通信インタフェース207、入出力(I/O)部208、補助記憶装置210、RAM220は、例えば、バス206を介して互いに接続されている。
読取部204は、制御部200の指示に従って着脱可能記憶媒体205にアクセスする。着脱可能記憶媒体205は、例えば、半導体デバイス(USBメモリ等)、磁気的作用により情報が入出力される媒体(磁気ディスク等)、光学的作用により情報が入出力される媒体(CD‐ROM、DVD等)などにより実現される。
制御部200は、例えばCPU(Central Processor Unit:中央処理装置)などであり、制御機能及び演算機能を有する。記憶部202(例えば補助記憶装置210)には、例えば、アプリケーションソフト211で作成された書類データ216などのデータが格納されている。書類データ216には、例えば文書ファイル及び画像データなどのデータが含まれる。また、記憶部202には、例えば、アプリケーションソフト211、プリンタドライバ212、及び本発明に係る実施形態に応じて構成される分散印刷処理モジュール213などのプログラムも格納されている。アプリケーションソフト211は、例えば、文書及び画像を編集するためのソフトウェアである。プリンタドライバ212は、例えば、書類データ216から印刷装置106で印刷可能な印刷ジョブ500を生成するための処理を実行するプログラムを含む。分散印刷処理モジュール213については後述する。制御部200は、記憶部202に格納されているデータを読み出してプログラムを実行することでクライアントPC102又は104の各部の制御及び各種の処理を実行する。
入出力(I/O)部208は、例えば、ユーザーからの入力を受け付けるために、また、ユーザーに対して情報を提示するために用いられ、例えば、キーボード、及びディスプレー等を含む。時計203からは、制御部200は例えば現在時刻等の時間の情報を取得する。通信インタフェース207は、ネットワーク110と接続されており、制御部200の指示に従いネットワーク110を介してデータを送受信する。通信インタフェース207は、例えば図1においては、他のクライアントPC102及び104並びに印刷装置106と通信する際のインタフェースとして用いられる。
次に、図3を参照して、一実施形態に係る、印刷装置106の印刷装置コントローラ300の例示な構成を説明する。印刷装置コントローラ300は、制御部302、ビデオインタフェース(I/F)303、エンジンインタフェース(I/F)304、操作パネル・インタフェース(I/F)305、通信インタフェース(I/F)306を含んでいる。また、印刷装置コントローラ300は、記憶部307として、ROM310、不揮発性メモリ(HDD等)320、RAM325などを含んでいる。なお、制御部302、ビデオインタフェース303、エンジンインタフェース304、操作パネル・インタフェース305、通信インタフェース306、ROM310、不揮発性メモリ320、RAM325は、例えばバス308を介して互いに接続されている。
操作パネル・インタフェース305は、操作パネル330と接続されている。操作パネル330は、表示部331及びキー部332を含む。一実施形態においては、表示部331にキーの画像が表示され、その画像がキー部332として機能してもよい。操作パネル330のキー部332はユーザーからの入力を受け付ける。制御部302は、操作パネル330で入力された情報を操作パネル・インタフェース305を介して取得する。また、表示部331は例えば印刷装置106の状態及び印刷処理の設定情報などの情報をユーザーに提示するために用いられる。
通信インタフェース306は、ネットワーク110と接続されており、制御部302の指示に従ってネットワーク110を介してデータを送受信する。通信インタフェース306は、例えば図1におけるクライアントPC102及び104と通信する際のインタフェースとして用いられる。
制御部302は、例えばCPU(Central Processor Unit:中央処理装置)などであり、制御機能及び演算機能を有する。記憶部307(例えばROM310、又は不揮発性メモリ320)には、印刷処理に関するプログラム、及び本発明に係る実施形態に応じて構成される分散印刷処理モジュール213等のプログラムが格納されている。また、記憶部307には、本発明に係る実施形態に応じて、例えば、接続クライアントPCテーブル600,1200などのデータが格納されている。制御部302は、記憶部307に格納されているデータを読み出してプログラムを実行することで例えば操作パネル330等の各部の制御及び本発明に係る実施形態の分散印刷処理などの各種の処理を実行する。
ビデオインタフェース303は、クライアントPC102及び104から受信した印刷ジョブ及び一実施形態に係る分割印刷ジョブ560に含まれる描画データ503に基づいてプリンタエンジン(不図示)の制御を行うビデオコントローラ(不図示)と接続されており、制御部302とビデオコントローラとの通信を仲介する。エンジンインタフェース304は、ビデオコントローラから供給される制御信号に基づいて、紙等の記録媒体に画像を出力するエンジン部(不図示)と接続されており、制御部302とエンジン部との通信を仲介する。
<第1の実施形態>
以上の図1から図3で述べた例示的なシステム構成を用いる第1の実施形態に係る分散印刷システム100について以下に説明する。まず、図14を参照して、従来の印刷処理のクライアントPC102におけるデータの遷移を説明する。
図14には、クライアントPC102の例示的なソフトウェア構成が示されている。クライアントPC102にはWindows(登録商標)及びLinux等のオペレーティングシステム(OS)が載っており、また、ユーザーからの入力に応じて印刷データ502の印刷指示を出力するアプリケーションソフト211、及び印刷指示を受けて印刷データを処理し印刷装置106に出力するプリンタドライバ212がインストールされている。図14は、クライアントPC102のOSがWindows(登録商標)の場合における通常印刷時のデータの遷移を例示している。
Windows(登録商標)における通常の印刷では、アプリケーションソフト211で作成されたWIN32API形式(ベクター形式)で書かれた書類データ216は、印刷データ502としてWindows(登録商標)内部のGDI(グラフィック・デバイス・インターフェース)215へと渡される(図14の<1>)。続いて、GDIにおいて、印刷データ502はDDI(デバイスドライバインターフェース)形式(ベクター形式)に変換され、プリンタドライバ212に渡される(図14の<2>)。プリンタドライバは、DDI形式のデータを印刷装置106が高速に印刷処理できるイメージデータ(ここではPRN形式とする)へとラスタライズし、ラスタライズ後に生成される印刷データ502に、印刷処理に必要な情報を付加(図14の<3>)し、印刷ジョブ500を生成する。続いて、生成された印刷ジョブ500は、Windows(登録商標)のスプーラ214を経由して印刷装置106へ出力される(図14の<4>)。
このように、通常の印刷処理では、クライアントPC102のプリンタドライバが印刷データ502の全体をラスタライズして印刷ジョブ500を生成し、その印刷ジョブ500が印刷装置106へと送信される。そのため、クライアントPC102は、印刷する印刷データ502全体のラスタライズを実行しなければならず、印刷処理におけるクライアントPC102への負荷が大きい。
一方、第1の実施形態では、クライアントPC102において、ラスタライズ前に、印刷データ502をページ毎に分割し、ラスタライズ処理が複数のクライアントPC102及び104において分散して実行される。図4は、第1の実施形態に係るクライアントPC102における印刷処理のデータの遷移を例示する図である。
図4には、第1の実施形態に係るクライアントPC102の例示的なソフトウェア構成が示されている。図4において、図14の例と同様に、クライアントPC102には、Windows(登録商標)及びLinux等のオペレーティングシステム(OS)が載っており、また、ユーザーからの入力に応じて印刷指示を出力するアプリケーションソフト211、及び印刷指示を受けて印刷データ502を処理し印刷装置106に出力するプリンタドライバ212がインストールされている。また更に、図4においては、クライアントPC102には本発明の第1の実施形態に係る分散印刷処理モジュール213もインストールされている。
第1の実施形態では、アプリケーションソフト211で作成されたWIN32API形式(ベクター形式)で書かれた書類データ216は、印刷データ502としてWindows(登録商標)内部のGDI(グラフィック デバイス インタフェース)215へと渡される(図4の<1>)。続いて、GDIにおいて、印刷データ502はDDI(デバイスドライバインターフェース)形式(ベクター形式)に変換され、プリンタドライバ212に渡される(図4の<2>)。ここまでは図14を参照して述べた通常印刷時と同様の処理である。続いて、プリンタドライバ212は、DDI形式のデータを、Windows(登録商標)上のベクター形式である、EMF形式に変換し(ここでは、プリンタドライバ212自体が変換するのではなくプリンタドライバ212の定義に従ってWindows(登録商標)(GDI)が変換する。図4の<3>)、EMF形式のデータがWindows(登録商標)のスプーラ214を経由して分散印刷処理モジュール213に渡される(図4の<4>)。
分散印刷処理モジュール213では、図5を参照して後述するように、EMF形式の印刷データ502が、印刷データ502のページ毎のデータである分割データ510に分割され、その分割データ510にジョブ情報501と分割情報530とを付加することで分散委託データ520が作成される。続いて、分散印刷処理モジュール213は、その分散委託データ520を他の1又は複数のクライアントPC104に送信し、ラスタライズ処理を他のクライアントPC104に委託する(図4の<5b>〜<5d>)。分散委託データ520を受信した他のクライアントPC102及び104のプリンタドライバ212は、分散委託データ520に含まれる分割データ510をラスタライズ処理してPRN形式の分割データ510に変換し、このラスタライズ後のPRN形式の分割データ510と、ジョブ情報501と、分割情報530とを含む分割印刷ジョブ560をスプーラ214経由で、印刷装置106へと出力する。
なお、いくつかの分散委託データ520については他のクライアントPC104に委託せずに自装置でラスタライズ処理を行ってもよい。その場合、分散印刷処理モジュール213は、自装置のプリンタドライバ212に、一部の分散委託データ520を送る(図4の<5a>)。プリンタドライバ212は、分散委託データ520を受信すると、分散委託データ520に含まれる分割データ510をラスタライズしてPRN形式の分割データ510に変換し、ラスタライズ後のPRN形式の分割データ510と、ジョブ情報501と、分割情報530とを含む分割印刷ジョブ560を生成し(図4の<6>)、分割印刷ジョブ560をスプーラ214経由で、印刷装置106のスプール1000へと出力する(図4の<7>)。
以上で述べたように、第1の実施形態では、クライアントPC102は、分散印刷処理モジュール213を備えており、分散印刷処理モジュール213が印刷処理において印刷データ502を分割し、そのラスタライズ処理を他のクライアントPC104に委託するため、印刷処理におけるクライアントPC102への負荷が少なくて済む。
以下、このクライアントPC102における分散印刷処理についてより詳細に説明していく。図5は、アプリケーションソフト211によって印刷指示された書類データ216である印刷データ502(図5の(a))と、図14の説明において述べた通常の印刷処理における印刷ジョブ500(図5の(b))と、並びに図4の説明において述べた第1の実施形態に係る、分散委託データ520(図5の(c))及び分割印刷ジョブ560(図5の(d))のデータ構成を例示する。
図5の(a)に示されるように、印刷データ502は、ページ順に並んだラスタライズ前の描画データ503a(503‐1a、503‐2a、・・・503‐Na)を含んでいる。なお、ここで添字“a”は、描画データ503がラスタライズ前のデータであることを示している。
続いて、通常の印刷処理で生成される印刷ジョブ500は、図5の(b)に示されるように、印刷ジョブ500のヘッダに、ジョブ情報501を含んでおり、それに続いて印刷データ502の各ページのラスタライズ後の描画データ503b(503‐1b、503‐2b、・・・503‐Nb)がページ順に並んで含まれている構成となっている。なお、ここで添字“b”は、描画データ503がラスタライズ後のデータであることを示している。ジョブ情報501には、印刷ジョブ500を印刷装置106に印刷させる上で必要となる印刷設定等の情報を含み、例えば、クライアントPC102のコンピュータ名540、印刷指示された個々の印刷データ502に対応する印刷ジョブを特定するためのジョブ識別情報(例えば、印刷ジョブ名)541、印刷に用いる用紙のサイズを指定する用紙サイズ542、印刷の部数543、及びその他の書式等の情報が格納されている。
一方、第1の実施形態に係る分散委託データ520には、図5の(c)に示されるように、印刷データ502(図5の(a))を、ラスタライズされる前に各ページの描画データ503a(503‐1a、503‐2a、503‐3a、・・・503‐Na)毎に分割して生成された分割データ510が含まれており、各分割データ510のヘッダにはジョブ情報501と、分割情報530とが付加されている。ジョブ情報501については、図5の(b)で述べたのと同様である。分割情報530は、個々の分割データ510が、元の印刷データ502の中で、どの部分にあたるデータであるのかを示す情報である。本実施形態においては、印刷データ502がページ毎に分割され分割データ510が作成されるため、分割データ510に含まれる分割情報530は、その分割データ510が、元の印刷データ502において何ページ目の描画データ503であるのかを示すページ情報531と、印刷データの全ページ数の情報である全ページ数情報532とが格納されている。
図5の(d)は、分割印刷ジョブ560を例示している。分割印刷ジョブ560のデータ構成は、第1の実施形態においては、図5の(c)の分散委託データ520と類似している。しかしながら、分散委託データ520では、分割データ510に含まれる描画データ503として、分散委託データ520ではラスタライズ前の描画データ503aが格納されているのに対し、分割印刷ジョブ560ではラスタライズ後の描画データ503bが格納されている。
続いて、図6を参照して、第1の実施形態に係る印刷装置106の記憶部307に格納されている、接続クライアントPCテーブル600について説明する。
図6に示されるように、接続クライアントPCテーブル600には、印刷装置106のプリンタドライバ212がインストールされており、プリンタドライバ212を用いて印刷装置106に印刷処理を実行させることが可能なクライアントPC102及び104が登録されている。接続クライアントPCテーブル600には、また、クライアントPC102及び104毎に、クライアントPC名601と、アドレス情報603と、分散印刷処理可否情報602とが対応づけられて登録されている。クライアントPC名601は、クライアントPC102及び104を識別するためのPC名の情報である。アドレス情報603は、クライアントPC102及び104にデータを送信する際の送信宛先となる情報であり、例えばクライアントPC102及び104のIPアドレスなどである。また、分散印刷処理可否情報602は、クライアントPC102及び104が分散印刷処理の委託を受けられる状態にあるか否かを示す情報である。
ここで、分散印刷処理の委託を受けられない状態とは、例えば、クライアントPC102及び104の制御部200が何らかの処理を実行中であり、その処理による負荷が高く、そのクライアントPC102及び104が分散印刷処理を委託するのに適していない状態にあることを指す。一方、分散印刷処理の委託を受けられる状態とは、例えば、クライアントPC102及び104の制御部200が他の処理を実行しておらず、又は他の処理を実行中であっても処理の負荷が小さいため処理能力に余裕があり、他の処理にその処理能力を割くことができる状態にあることを指す。図6の接続クライアントPCテーブル600では、分散印刷処理可否情報602として、クライアントPC102及び104が分散印刷処理の委託を受けられない状態にある場合には“×”が格納されている。一方、クライアントPC102が分散印刷処理の委託を受けられる状態にある場合には“○”が格納されている。各クライアントPC102及び104の分散印刷処理可否情報602の設定は、例えばクライアントPC102及び104のCPU使用率に対して閾値を設けて、閾値以上であれば分散印刷処理の委託を受けられない状態にある、及び閾値以下であれば分散印刷処理の委託を受けられる状態にあると判定することで設定することが可能である。印刷装置106は、クライアントPC102及び104からビジー通知を受信することで、或いは、定期的にクライアントPC102及び104の状態をポーリングにより取得することで、クライアントPC102及び104の状態を取得し、それにより図6の分散印刷処理可否情報602を更新する。
以上の図6で述べた接続クライアントPCテーブル600を用いる、第1の実施形態に係るクライアントPC102において実行される、分散委託処理について以下に説明する。
図7は、第1の実施形態に係るクライアントPC102の制御部によって実行される分散委託データ520の送信処理を例示する動作フロー図である。図7の動作フローは、クライアントPC102において、スプーラ214が分散印刷処理モジュール213にラスタライズ前の印刷データ502を受け渡すと開始する(例えば、図4の<4>)。
ステップS701において、分散印刷処理モジュール213は、印刷装置106に、分散印刷処理における分散委託データ520の委託が可能な状態にあるクライアントPC104を問い合わせる。印刷装置106は、クライアントPC102の分散印刷処理モジュール213から分散委託データ520の委託が可能な状態にあるクライアントPC104の問い合わせを受信すると、図6に示される接続クライアントPCテーブル600を参照して、分散印刷処理可否情報602が“○”となっており分散委託処理を受け付け可能な状態にあるクライアントPC104のアドレス情報603を、クライアントPC102の分散印刷処理モジュール213へと通知する。クライアントPC102の分散印刷処理モジュール213が、印刷装置106から分散印刷処理を委託可能な他のクライアントPC104のアドレス情報603を取得すると、フローはステップS702へと進む。
続いて、ステップS702において、分散印刷処理モジュール213は印刷データ502を分割して分割データ510を生成する。第1の実施形態においては、印刷データ502の分割単位をページ単位としているため、印刷データ502はページ毎のデータに分割される。ステップS703において、分散印刷処理モジュール213は、生成された分割データ510のそれぞれの例えばヘッダ部分に、ジョブ情報501と、分割情報530とを付加して分散委託データ520(図5の(c))を生成する。ステップS704において、分散印刷処理モジュール213は、分散委託データ520を、ステップS701で取得した分散委託処理を実行可能なクライアントPC104のアドレス情報603に示される送信宛先に送信し、本フローは終了する。
以上の図7で述べた処理により、クライアントPC102においてユーザーより印刷指示が入力された印刷データ502は、複数の分割データ510へと分割され、それぞれの分割データにジョブ情報501と分割情報530とが付加されて分散委託データ520が生成され、生成された分散委託データ520は他のクライアントPC104へと分配される。
なお、図7の分散委託データ520の送信処理において、ステップS704におけるクライアントPC104への分散委託データ520の配分は、第1の実施形態においては、ステップS701で取得されたアドレス情報603に示されるクライアントPC104に対して、順に分散委託データ520を1つずつ分配することで行われる。従って、第1の実施形態では、委託を受け付けるそれぞれのクライアントPC104には、概ね均等な数の分散委託データ520が配分される。
なお、上述したように、分散印刷処理モジュール213は、分散委託データ520の一部を自装置のプリンタドライバ212へと送ってもよく、一部の分散委託データ520のラスタライズについては自装置で実行してもよい。この場合には、分散委託データ520の配分は、ステップS701で取得されたアドレス情報603に示される他のクライアントPC104に加えて自装置(クライアントPC102)も委託先とし、クライアントPC102及び104に順に分散委託データ520を送信することで配分が決定されてもよい。
なお、分散委託データ520のクライアントPC104に対する配分は、上記の例に限定されるものではなく、任意に設定することが可能である。例えば、別の実施形態においては、分散委託データ520のクライアントPC104への配分は、個々のクライアントPC104の処理性能に応じて、処理性能が高いクライアントPC104により多くの分散委託データ520が分配されるように決定されてもよい。
続いて、図8を参照して、第1の実施形態に係る他のクライアントPC104の制御部302によって実行される分散ラスタライズ処理を説明する。図8の動作フローは、クライアントPC102が送信した分散委託データ520を他のクライアントPC104のプリンタドライバ212が受信すると開始する。ステップS801において、他のクライアントPC104のプリンタドライバ212は、受信した分散委託データ520に含まれる分割データ510をラスタライズし、ラスタライズ後の分割データ510と、ジョブ情報501と、分割情報530とを含む分割印刷ジョブ560(図5の(d))を生成する。ステップS802において、プリンタドライバ212は、生成した分割印刷ジョブ560を、スプーラ214を介して印刷装置106へと送信し、本フローは終了する。
なお、上述したように、クライアントPC102が分散委託データ520の一部を自装置のプリンタドライバ212へと送る場合には、自装置のプリンタドライバ212が分散委託データ520を受信すると図8で述べた処理が実行され、印刷装置106にラスタライズ後の分割データ510と、ジョブ情報501と、分割情報530とを含む分割印刷ジョブ560が送信される。
図9は、第1の実施形態に係る印刷装置106の制御部302によって実行される分割印刷ジョブ560の登録処理の動作フロー図である。図9の動作フローは、印刷装置106が、クライアントPC102及び104から分割印刷ジョブ560を受信すると開始する。
ステップS901において、印刷装置106の制御部302は、受信した分割印刷ジョブ560から分割印刷ジョブレコード1010を生成し、記憶部307に格納されているスプール1000に登録し、本フローは終了する。第1の実施形態に係るスプール1000及び分割印刷ジョブレコード1010を図10に例示する。
図10に示されるように、スプール1000には、印刷装置106がクライアントPC102から受信した分割印刷ジョブ560と対応する分割印刷ジョブレコード1010が登録されている。第1の実施形態においては、各分割印刷ジョブレコード1010は、分割印刷ジョブ560の元となった印刷データ502の印刷指示が入力されたクライアントPC102のコンピュータ名1011、ジョブ識別情報(例えば、印刷ジョブ名)541、及び分割情報530とから構成されている。また、上述したように、第1の実施形態においては、分割情報530は、ページ情報531、及び全ページ数情報532とで構成されている。
続いて、図11を参照して、第1の実施形態に係る印刷装置106の制御部302によって実行される分割印刷ジョブ560の印刷処理を説明する。図11に示す分割印刷ジョブの印刷処理の動作フローは、スプール1000に分割印刷ジョブレコード1010の登録がない状態において、スプール1000に分割印刷ジョブレコード1010の登録が実行されると開始する。
ステップS1101において、印刷装置106の制御部302は、スプール1000に登録されている分割印刷ジョブレコード1010のうちで、ジョブ識別情報541が一致する分割印刷ジョブレコード1010の分割情報530を確認し、ジョブ識別情報541で識別される印刷データ502の印刷に必要な全ての分割印刷ジョブ560が揃っている分割印刷ジョブレコード1010が有るか否かを判定する。第1の実施形態においては、この判定は、スプール1000に登録されている分割印刷ジョブレコード1010のうちで、ジョブ識別情報541が一致する分割印刷ジョブ560に含まれるページ情報531に示されるページを確認し、全ページ数情報532に示される全ページ数の分割印刷ジョブ560がスプール1000に登録されているかを判定することで行われる。
印刷データ502の印刷に必要な全ての分割印刷ジョブ560が揃っている分割印刷ジョブレコード1010が無い場合には、ステップS1101はNoと判定され、フローはステップS1101に戻る。一方、印刷ジョブの印刷に必要な全ての分割印刷ジョブ560が揃っている分割印刷ジョブレコード1010がある場合には、ステップS1101はYesと判定され、フローはステップS1102へと進む。
ステップS1102において、制御部302は、ステップS1101において必要な全ての分割印刷ジョブ560が揃ったと判定された分割印刷ジョブレコード1010の分割印刷ジョブ560を、その分割印刷ジョブ560に含まれるジョブ情報501と、分割情報530とに基づいて印刷する。第1の実施形態においては、この印刷処理は、印刷装置106の制御部302が、分割印刷ジョブ560に含まれるページ情報531を読み出し、ページ情報531のページ数の小さい方の分割印刷ジョブ560から順に(即ち、1ページ目から順に)印刷処理をジョブ情報501に示される印刷設定で実行することで行われる。
分割印刷ジョブ560の全ページ数情報532に示される元の印刷データ502の全ページ分の分割印刷ジョブ560の印刷が完了すると、フローはステップS1103へと進み、制御部302は印刷が完了した分割印刷ジョブ560の分割印刷ジョブレコード1010をスプール1000から削除する。
続いて、ステップS1104において、制御部302は、スプール1000に他に分割印刷ジョブレコード1010が登録されているか否かを判定する。登録されている場合には、Yesと判定され、フローはステップS1101へと戻る。一方、分割印刷ジョブレコード1010の登録が他に無い場合にはNoと判定され本フローは終了する。
以上、図5〜図11を参照して述べたように、第1の実施形態に係る分散印刷処理では、クライアントPC102は、印刷データ502を分割して分割データ510を生成する。クライアントPC102は、生成した分割データ510に、それぞれの分割データ510が元の印刷データ502のなかで、どの部分にあたるデータであるのかを示す分割情報530と、印刷設定を含むジョブ情報501とを付加して分散委託データ520を生成し、他のクライアントPC104へと送信する。分散委託データ520を受信した他のクライアントPC104は、分散委託データ520に含まれる分割データ510をラスタライズし、ラスタライズ後の分割データ510と、分割情報530と、ジョブ情報501とを含む分割印刷ジョブ560を生成し、印刷装置106へと送信する。印刷装置106は、受信した分割印刷ジョブ560と対応づけて分割印刷ジョブレコード1010をスプール1000に登録する。続いて、印刷装置106は、分割印刷ジョブレコード1010に含まれる分割情報530に基づいて、分割前の元の印刷データ502と対応する全ての分割印刷ジョブ560が受信されたか否かを判定し、全ての分割印刷ジョブ560が受信されている場合には、分割情報530に示される順番に従って、1ページ目から順に印刷処理をジョブ情報501に示される印刷設定で実行する。
そのため、第1の実施形態では、印刷データ502のラスタライズ処理が、複数のクライアントPC102及び104によって分散して実行されるため、印刷処理におけるクライアントPC102への負荷が小さくなる。また、第1の実施形態では、印刷装置106は分割印刷ジョブ560に含まれる分割情報530に基づいて、元の印刷データ502と同じ順番で分割印刷ジョブ560を印刷することができる。従って、分散印刷処理を実行するために、印刷ジョブを管理するためのサーバを別途設ける必要無い。更には、分割印刷ジョブ560の印刷を実行するタイミングも、上述したように分割情報530に基づいて、元の印刷データに対応する全ての分割印刷ジョブ560が揃ったタイミングで実行されるため、例えば、印刷データ502に対応する複数の分割印刷ジョブ560のラスタライズ処理が完了したタイミングで印刷を開始するために、サーバ等の装置を追加する必要がない。
なお、第1の実施形態においては、印刷データ502から分割委託データを生成し、クライアントPC104に送信する処理が、クライアントPC102で実行される例を述べたが、本発明に係る実施形態はこれに限定されるものではない。例えば、クライアントPC102は、ラスタライズ前の印刷データ502を分割することなく、印刷装置106へと送信し、図7に示す処理を印刷装置106に備えられている分散印刷処理モジュール213で実行するように構成してもよい。
この場合には、印刷装置106の分散印刷処理モジュール213は、自装置の記憶部307に備えられた接続クライアントPCテーブル600を参照して、アドレス情報を取得し、クライアントPC102から受信した印刷データ502を分割して分散委託データ520を生成して、その分散委託データ520を取得したアドレス情報603に示されるクライアントPC102及び104へと送信する。
また、第1の実施形態においては、分散印刷処理可否情報602を用いて、クライアントPC102及び104の処理の負荷状態が高いものには、分散委託データ520の委託を行わないように構成した。この様に構成することで、処理の負荷状態が高いクライアントPC102及び104に、分散委託データ520のラスタライズを委託してしまったこと起因する、ラスタライズ処理の遅延が防止できる。しかしながら、本発明に係る実施形態はこれに限定されるものではなく、例えば、クライアントPC102及び104の処理の負荷状態を考慮せず、印刷装置106のプリンタドライバ212をインストールしており、印刷装置106に印刷を実行させることが可能な状態にある全てのクライアントPC102及び104を分散委託データ520の委託先としてもよい。このような場合にも、クライアントPC102におけるラスタライズ処理の負荷は分散されるため、クライアントPC102の印刷処理による負荷が低減できる。
<第2の実施形態>
第1の実施形態では、接続クライアントPCテーブル600に分散印刷処理可として登録されているクライアントPC104を特に区別することなく、分散委託データ520の委託先として指定し分散印刷処理を実行した。しかしながら、クライアントPC102及び104によって処理能力に差がある状況がしばしば存在する。第2の実施形態では、第1の実施形態の図6に記載される接続クライアントPCテーブル600に、更にクライアントPC102及び104の処理能力に関する性能情報1204が登録されており、性能情報1204に基づいて、分散委託データ520を割り振る数を調節する実施形態について述べる。
図12は、第2の実施形態に係る印刷装置106の記憶部307に格納されている接続クライアントPCテーブル1200を例示する図である。第2の実施形態では、接続クライアントPCテーブル1200には、印刷装置106のプリンタドライバ212がインストールされており、印刷装置106に印刷処理を実行させることが出来る状態にあるクライアントPC102及び104が登録されている。また、登録されているクライアントPC102及び104毎に、クライアントPC名601、分散印刷処理を実行することが可能な状態か否かを示す分散印刷処理可否情報602、送信宛先であるアドレス情報603、並びにクライアントPC102及び104の性能情報1204が接続クライアントPCテーブル1200には登録されている。
接続クライアントPCテーブル1200において、クライアントPC名601、分散印刷処理可否情報602、及びアドレス情報603については、第1の実施形態の図6のものと同様である。一方、性能情報1204は、図12の接続クライアントPCテーブル1200において対応付けられているクライアントPC102及び104の処理性能を示す値である。例えば、図11においては、クライアントPC名601“PC‐B”で識別されるクライアントPCには性能情報1204に値“3”が格納されており、これは“PC‐C”の性能情報1204が値“1”のクライアントPC104よりも“PC‐B”が3倍の処理性能が見込めることを表している。即ち、例えば、“PC‐B”のクライアントPC104には、“PC‐C”のクライアントPC104よりも3倍多い数の分散委託データ520を送信したとしても、“PC‐B”に委託された分散委託データ520のラスタライズ処理完了のタイミングが、“PC‐C”に委託された分散委託データ520のラスタライズ完了のタイミングと大きくずれることはない。
なお、印刷装置106による性能情報1204の取得には、既知のさまざま方法を利用することができる。一実施形態においては、印刷装置106のプリンタドライバ212をクライアントPC102及び104にインストールする際に、クライアントPC102及び104のメモリ容量及びCPUのクロック周波数等に基づいて性能情報1204を決定してもよい。決定された性能情報1204は、そのクライアントPC102及び104のアドレス情報603と共に、印刷装置106へと通知され、印刷装置106において接続クライアントPCテーブル1200に登録されてもよい。
以下、図13を参照して、第2の実施形態に係る、クライアントPC102の制御部200によって実行される分散委託データの送信処理について説明する。
ステップS1301において、分散印刷処理モジュール213は、印刷装置106に分散印刷処理が可能な状態にあるクライアントPC104のアドレス情報603と、性能情報1204とを問い合わせる。印刷装置106の記憶部307には、例えば図12に示すような接続クライアントPCテーブル1200が格納されており、分散印刷処理モジュール213からのアドレス情報603の問い合わせを受信すると、印刷装置106では、図12に示される接続クライアントPCテーブル1200を参照することで、分散委託処理を受け付け可能な状態にあるクライアントPC104を特定し、そのアドレス情報603と性能情報1204とをクライアントPC102の分散印刷処理モジュール213へと通知する。この通知により、クライアントPC102の分散印刷処理モジュール213は、印刷装置106から、分散印刷処理を委託先として他のクライアントPC104のアドレス情報603と性能情報1204とを取得する。
続いて、ステップS1302において、分散印刷処理モジュール213は印刷データ502を分割して分割データ510を生成する。ステップS1303において、分散印刷処理モジュール213は、生成された複数の分割データ510それぞれの例えばヘッダ部分に、ジョブ情報501と、分割情報530とを付加し、分散委託データ520を生成する。ステップS1304において、分散印刷処理モジュール213は、印刷装置106から取得した性能情報1204に基づいて、生成した分散委託データ520の配分を決定する。この分散委託データ520の配分の決定は、例えば、ステップS1301で取得されたアドレス情報603に示されるクライアントPC104に対して、性能情報1204に値3であるものには、配分の一巡毎に3つの分散委託データ520を割り振り、性能情報1204が値1であれば配分の一巡毎に1つの分散委託データ520を割り振るというように、性能情報1204の値と同じ比率で分散委託データ520を順に割り振るというようにして決定しても良い。
この様にして、性能情報1204に応じて分散委託データ520を振り分けることで、性能の高いクライアントPC102及び104には、より多くの分散委託データ520を振り分けられるので、結果として、分散印刷システム100に存在するクライアントPC102及び104の計算資源を効率的に利用することが可能となる。
続いて、ステップS1305において、制御部200は、性能情報1204に基づいて決定された配分で分散委託データ520を、印刷装置106から取得したアドレス情報603に示される送信宛先へと送信し、本フローは終了する。
第2の実施形態では、クライアントPC102において分割委託処理を実行した以降の処理は、第1の実施形態で述べた処理と同様の処理が行われてよく、例えば、他のクライアントPC104での処理は、図8で述べた処理に従ってラスタライズが実行され、また、印刷装置106における印刷処理は図9及び図11で述べた処理に従って実行されてもよい。
第2の実施形態では、クライアントPC102及び104の性能情報1204を考慮して、クライアントPC102及び104への分散委託データ520の配分を決定するため、分散印刷システム100に存在するクライアントPC102及び104の計算資源を効率的に利用することが可能である。
なお、上記の例では、分散委託データ520の委託数で割り当てを決定したが、例えば、ラスタライズの負荷が大きい画像データ領域が多く含まれている分散委託データ520を、処理性能の高いクライアントPC102及び104に、テキストデータ領域が多く含まれているラスタライズの負荷が小さい分散委託データ520は処理性能の低いクライアントPC102及び104に送信するというように、分散委託データ520に含まれる描画データの種類に応じてクライアントPC102及び104への割り当てが決定されてもよい。
以上で述べた、第1の実施形態又は第2の実施形態に係る分散印刷システム100により、分散印刷システム100内で余剰となっている他のクライアントPC104の処理能力を印刷データ502のラスタライズ処理に有効に活用することができるため、高速印刷の実現、及び印刷処理中の負荷の低減が可能であり、また、印刷処理による負荷が低減されるため、クライアントPC102及び104でその他の処理をスムーズに実行することができる。
なお、上述の第1の実施形態及び第2の実施形態では、印刷データ502の分割をページ単位で行うことで、分割データ510を生成する例を述べた。しかしながら、本発明に係る実施形態はこれに限定されるものではなく、例えば、1ページを4分割して、他のクライアントPC104に1/4ページずつラスタライズを委託するというように、或いは、1ページの描画データ503を画像領域とテキスト領域とに分割するというように、ページ単位以外の単位に分割して分割データ510を生成するように構成してもよく、これらの変形例も本発明に係る実施形態の開示の範囲内にある。
なお、このようなページ単位以外の単位に分割して分割データ510を生成する場合には、ページ内で分割された分割データ510がそのページのどの領域のデータであるのかを示す区切り位置の座標データ、並びに画像データ領域の位置及びテキストデータ領域の位置を示す座標データ等の位置情報が、分割情報530として分割データ510の例えばヘッダ領域に付加されて分散委託データ520が生成されてもよい。
上述の実施形態で述べた、例えば、図7、図8、図9、図11、及び図13に示される動作フローの手順を記述したプログラムが、それぞれの処理に応じて例えば、クライアントPC102及び104の記憶部202に、又は印刷装置106の記憶部307に分散印刷処理モジュール213として記憶されている。クライアントPC102及び104の制御部200、又は印刷装置106の制御部302が、記憶部202又は記憶部307から分散印刷処理モジュール213を読み出して実行することにより、図7、図8、図9、図11、及び図13に示す処理が実現される。
いくつかの実施形態においては、クライアントPC102及び104の記憶部202には、図7、図8、及び図13に示される動作フローの手順を記述した分散印刷処理モジュール213が格納されている。また、印刷装置106の記憶部307には、図9及び図11に示される動作フローの手順を記述した分散印刷処理モジュール213が格納されている。
これらの分散印刷処理モジュール213は、例えば、下記の形態で分散印刷システム100のクライアントPC102及び104、及び印刷装置106に提供される。
(1)記憶部202及び記憶部307に予めインストールされている。
(2)着脱可能記憶媒体205により提供される。
(3)プログラムサーバから提供される。
以上でいくつかの実施形態について説明してきた。しかしながら、本発明に係る実施形態は上記の実施形態に限定されるものではなく、上述の実施形態の各種変形形態及び代替形態を包含するものとして理解されるべきである。例えば、各種実施形態は、その趣旨及び範囲を逸脱しない範囲で構成要素を変形して具体化できることが理解されよう。また、前述した実施形態に開示されている複数の構成要素を適宜組み合わせることにより、本発明に係る種々の実施形態を成すことができることが理解されよう。或いは、実施形態に示される全構成要素からいくつかの構成要素を削除して又は置換して、或いは実施形態に示される構成要素にいくつかの構成要素を追加して本発明に係る種々の実施形態が実施され得ることが当業者には理解されよう。
上述の第1から第2の実施形態を含む、本発明に係るいくつかの実施形態に関し更に以下の付記を開示する。
(付記1)
印刷装置と、前記印刷装置を利用している複数のクライアントコンピュータとを含む分散印刷システムであって、
前記複数のクライアントコンピュータは、それぞれ、
ユーザーからの印刷データの印刷指示の入力を受け付ける受付部と、
前記印刷指示が入力された場合に、前記印刷装置に前記複数のクライアントコンピュータのアドレス情報を問い合わせて取得する、アドレス情報取得部と、
前記印刷データを複数の分割データへと分割する分割部と、
前記複数のクライアントコンピュータのアドレス情報で指定される宛先へと、前記複数の分割データを分配する分配部と、
前記複数のクライアントコンピュータのうちの他の前記クライアントコンピュータから前記分割データを受信する受信部と、
受信した前記分割データをラスタライズし分割印刷ジョブを生成する生成部と、
生成した前記分割印刷ジョブを、前記印刷装置に送信する送信部と、
を含み、
前記印刷装置は、
前記アドレス情報取得部からの問い合わせに応じて、前記複数のクライアントコンピュータのアドレス情報を前記アドレス情報取得部へと通知するアドレス情報通知部と、
前記分割印刷ジョブを受信する受信部と、
前記受信部により受信された前記分割印刷ジョブを、前記分割データに示される前記印刷データ内での順番で印刷する印刷部と、
を含む分散印刷システム。
(付記2)
前記分割データは、該分割データが前記印刷データのどの部分のデータにあたるかを示す分割情報と、前記印刷データを識別するためのジョブ識別情報を含むジョブ情報とを含む分散委託データを含むことを特徴とする付記1記載の分散印刷システム。
(付記3)
前記生成部は、前記分散委託データをラスタライズし、ラスタライズ後の前記分散委託データと、前記分割情報と、前記ジョブ情報とを含む分割印刷ジョブを生成することを特徴とする付記2記載の分散印刷システム。
(付記4)
前記印刷装置は、
受信した前記分割印刷ジョブに含まれる前記分割情報と、前記ジョブ識別情報とを対応付けて分割印刷ジョブレコードとしてスプールに登録する登録部と、
前記スプールに登録されている分割印刷ジョブレコードのうちで前記ジョブ識別情報が一致する分割印刷ジョブレコードの前記分割情報を確認し、前記印刷データに対応する全ての前記分割印刷ジョブが集まったか否かを判定する判定部と、
を有し、前記印刷部は、前記判定部が全ての前記分割印刷ジョブが集まったと判定した場合、印刷処理を実行することを特徴とする付記3記載の印刷システム。
(付記5)
前記分割データに付加される前記分割情報は、該分割情報が付加されている前記分割データが前記印刷データにおいて、何ページ目のデータであるかを示すページ情報と、前記印刷データの全ページ数の情報とを含む、付記2に記載の分散印刷システム。
(付記6)
前記印刷装置は、前記クライアントコンピュータが分散委託データのラスタライズを行うことができる状態にあるか否かを示す分散印刷処理可否情報を、前記複数のクライアントコンピュータから取得して接続クライアントPCテーブルに格納する、分散印刷処理可否情報登録部を更に備え、
前記アドレス情報通知部は、前記接続クライアントPCテーブルに登録されている複数のクライアントコンピュータのうちで、分散印刷処理可否情報がラスタライズを行うことができる状態を示すクライアントコンピュータのアドレス情報を前記アドレス情報取得部に通知する、付記3又は4に記載される分散印刷システム。
(付記7)
前記接続クライアントPCテーブルには、更に前記印刷装置を利用している前記複数のクライアントコンピュータの処理性能を表す性能情報が格納されており、
前記アドレス情報取得部は、前記アドレス情報と共に、前記性能情報を取得し、
前記分配部は、前記性能情報に基づいて、前記複数のクライアントコンピュータへの前記複数の分散委託データの配分を決定する、付記6に記載の分散印刷システム。
(付記8)
印刷装置の制御方法であって、
クライアントコンピュータからの問い合わせに応じて、記憶部に格納されている、接続クライアントPCテーブルから、前記印刷装置を利用している前記複数のクライアントコンピュータのアドレス情報を取得し、クライアントコンピュータに通知するステップ、
前記複数のクライアントコンピュータから分割印刷ジョブを受信し、受信した前記分割印刷ジョブに含まれる分割情報と、前記ジョブ識別情報とを対応付けて分割印刷ジョブレコードとしてスプールに登録する登録ステップ、
前記スプールに登録されている分割印刷ジョブレコードのうちで前記ジョブ識別情報が一致する分割印刷ジョブレコードの前記分割情報を確認し、印刷データに対応する全ての前記分割印刷ジョブが集まったか否かを判定する判定ステップ、
全ての前記分割印刷ジョブが集まったと判定した場合に、前記分割印刷ジョブを、前記分割情報に示される前記印刷データ内での順番で印刷する印刷ステップ、
を含み、
前記クライアントコンピュータにおいて、前記印刷データが複数の分割データに分割され、前記分割データに、前記分割データが前記印刷データのどの部分のデータにあたるかを示す分割情報と、前記印刷データを識別するためのジョブ識別情報を含むジョブ情報とを付加することで生成される分散委託データが前記複数のクライアントコンピュータに送信され、前記複数のクライアントコンピュータにおいて、分散委託データに含まれる前記分割データをラスタライズすることで前記分割印刷ジョブが生成されることを特徴とする、印刷装置の制御方法。