以下、本発明を実施形態をもって説明するが、本発明は、後述する実施形態に限定されるものではない。図1は、本発明のデータ処理装置110を含むプリンタネットワーク100の実施形態を示す。プリンタネットワーク100は、オフィスなどに配置される複数のクライアント112、114、116、118が、ネットワーク130に接続されて構成されている。ネットワーク130には、データ処理装置110の他、プリンタサーバ(図示せず。)が接続され、各クライアント112、114、116、118からの印刷要求をプリンタサーバが管理してもよい。
図1に示す例示的な実施形態では、MFP122、レーザプリンタ124、126、インクジェットプリンタ128などがリモートプリンタとして接続されている。本実施形態では、上述したMFP122、各プリンタ124〜128を、以下、リモートプリンタとして総称する。なお、図1中、点線で囲まれた領域140,150,160は、同一のロケーションと見なされる拠点を表している。
データ処理装置110は、図1に示す実施形態では、クライアント112〜118からの印刷要求および印刷要求に対応する印刷データを取得し、各種条件に応じて、出力内容に変更を加え、かつ適切な出力先とするリモートプリンタを判断し、当該リモートプリンタに対応するプリンタドライバを起動する。その後、データ処理装置110は、当該リモートプリンタに宛てて、出力先で処理可能な形式のデータ、印刷データに対応するRAWデータを送付する。作成されたRAWデータは、例えばPDL(Page Description Language)コマンドの追加処理などが行われて出力データとされ、指定されたリモートプリンタ122〜128に送付される。出力先とするリモートプリンタ122〜128は、クライアント112〜118に対応して決定することができ、クライアントが設置されたロケーションや、クライアントの近隣のロケーションなどのリモートプリンタで印刷処理を実行させることができる。図1に示した実施形態では、クライアント112−リモートプリンタ122とがロケーション140を構成し、各クライアントと各プリンタとが対応付けられてロケーション150、160を構成する。クライアントは、ロケーション140〜160に複数存在することもでき、リモートプリンタについても各ロケーションに複数存在していてもよく、クライアントのみまたはリモートプリンタのみのロケーションがあってもよい。
データ処理装置110は、好ましい実施形態では、サーバ装置として実装され、シングルコア、マルチコアのCPU、ROM、実行空間を提供するRAM、ハードディスク装置などを含み、Windows(登録商標)200Xサーバ、UNIX(登録商標)、LINUX(登録商標)、Solaris(登録商標)などのオペレーティングシステム(OS)による制御の下、印刷データの出力内容の変更および出力先を制御する。また、データ処理装置110と、クライアント112〜118の間は、RDPなどの適切な遠隔接続プロトコルを使用してトランザクションが可能とされている。また、データ処理装置110の機能は、クライアント112〜118がファットクライアントとして実装される場合、クライアントの機能として実装することもできる。
本実施形態で、プリンタネットワーク100にプリンタサーバを接続し、印刷要求を管理する場合、データ処理装置110は、プリンタサーバが処理可能な形式の印刷データを作成し、プリンタサーバに送付することができる。そして、プリンタサーバが、決定された出力先のリモートプリンタ122〜128に対して、RAW形式の印刷データを送付し、印刷ジョブを実行させる構成とすることができる。プリンタサーバを利用する場合、プリンタサーバは、ハードウェア構成およびOS構成についてデータ処理装置110と同様の構成とすることができる。
クライアント112〜118は、それぞれ同様の構成を有しており、いわゆるシンクライアントとして実装することができる。シンクライアントは、ネットワーク接続モジュール、ユーザ認証機能、セッション生成モジュールなど、専らデータ処理装置110に対してサービス要求を発行し、処理結果を受領して印刷出力を依頼する機能のみを実装する。クライアント112〜118がシンクライアントとして実装される場合では、クライアント112〜118は、シングルコア、マルチコアのCPUを搭載し、RAM、ROM、ネットワークインタフェースカード(NIC)を含み、Windows(登録商標)、UNIX(登録商標)、LINUX(登録商標)、Mac OS(登録商標)などの適切なOSの下で、アプリケーションにより処理を終了した後、データ処理装置110に対して印刷要求を発行する。
また、他の実施形態では、クライアント112〜118は、ファットクライアント、例えば、それぞれがアプリケーションプログラムを実装し、各種処理を完結するパーソナルコンピュータまたはワークステーションなどから構成することができる。ファットクライアントとして実装されるクライアント112〜118は、ハードディスク装置などからアプリケーションプログラムおよびデータをRAMに読込んで、CPUがアプリケーションプログラムを実行させることにより、文書、イメージ、マルチメディアまたはこれらが複合的に組合わされた電子的データとして印刷対象とする文書ファイルを生成し、各リモートプリンタ122〜128へと印刷処理を依頼する。
データ処理装置110は、クライアントの要求に対応して作成したデータを、仮想プリンタドライバに渡し、ジョブ毎に出力先の選択や出力内容の変更を可能とする。なお、本実施形態の出力内容の変更については詳細を後述するが、出力内容の変更は、複数のジョブを結合する変更、ジョブの各種印刷設定の変更、およびジョブのページ内容自体の変更などを含むことができる。これらの出力内容の変更および出力先の選択を含む出力条件は、クライアントのMACアドレス(Media Access Control Address)、IPアドレス(Internet Protocol Address)などの端末固有情報や、ログインユーザ名やユーザ権限などのユーザ固有情報や、ジョブの印刷設定情報や、文書名、ページ数、機密キーワードの有無などのジョブ内容情報などの種々の条件付け情報に対応して決定される。作成された出力データは、決定された出力先に対応するリモートプリンタに送付され、印刷処理が実行される。なお、仮想プリンタドライバについての詳細な説明は後述する。
ネットワーク130は、1000Base−TXなどのイーサネット(登録商標)、光ネットワーク、IEEE802.11などの規格の無線ネットワークを含んで構成することができ、フレームまたはTPC/IPプロトコルに基づくパケット通信によって、相互通信を行う。また、ネットワーク130は、LANの他、VPN(Virtual Private Network)などによるセキュア環境下で構築されたインターネットなどの広域ネットワークを含んで構成されていてもよい。
図2は、本実施形態のデータ処理装置110の機能ブロック200である。なお、図2に示すように、データ処理装置110は、複数の機能手段を含んで構成され、これらの機能手段は、RAMなどにプログラムを読込んで、CPUがプログラムを実行することによりコンピュータ上に実現されている。
図2に示すように、データ処理装置110は、データ処理部210と、アプリケーション実行部212と、プリント処理部250とを含む。データ処理装置110のデータ処理部210と、アプリケーション実行部212と、プリント処理部250とは、図2に示すように一体として構成することができる。しかしながら、他の実施形態では、図2に示す各機能部を図2の通りに実装する必要は無く、図2に示す破線のいずれか一方または両方をネットワーク境界として分離して実装することができる。例えば、右手側のプリント処理部250をプリントサーバとして実装し、左手側のアプリケーション実行部212および内側のデータ処理部210をターミナルサーバとして分離して実装することもできる。あるいは、右手側のプリント処理部250と内側のデータ処理部210とをサーバとして実装し、左手側のアプリケーション実行部212を別のサーバとして分離して実装することもできる。その他、データ処理部210、アプリケーション実行部212およびプリント処理部250をそれぞれ分離して独立したサーバとして実装することもできる。
さらに他の実施形態では、データ処理装置110の機能をクライアント上に実装してもよく、例えば、クライアント112〜118がそれぞれ、アプリケーション実行部212、データ処理部210およびプリント処理部250の機能を保有するか、アプリケーション実行部212およびデータ処理部210を保有するか、またはアプリケーション実行部212のみを保有する、いわゆるファットクライアントとして実装することもできる。これらの特定の実装形式は、プリンタネットワーク100が設置される環境やユーザの特定の用途に応じて適宜変更することができる。
アプリケーション実行部212は、ネットワーク130を介してクライアント112〜118の処理要求および印刷要求を受領して処理を実行し、実行結果を作成する。実行結果は、プリント指令部216によるプリント指令イベントの発生に応答して、GDIなどのAPIコールを経てプリントジョブ(以下、単にジョブとして参照する。)とした後、ジョブデータをデータ処理部210に送付する。データ処理部210は、仮想プリンタドライバ218と、仮想プリンタドライバ218が呼出された段階でアプリケーション214から送付されたジョブデータを一旦格納するジョブ格納部226と、出力先および出力内容の変更を所定の規則に従って制御しながら、決定されたいずれかのリモートプリンタ122〜128のプリンタドライバ252に印刷出力すべきデータを送付する発送処理部240とを含んでいる。仮想プリンタドライバ218は、アプリケーション実行部212のプリント指令モジュールとして実装されるプリント指令部216からの呼出しに対応して、アプリケーション214から送付されるジョブデータを受領し、現在開始したジョブを固有に識別するためのプロセスIDを生成し、プリント指令部216に通知するとともに処理を開始する。
プリント指令部216は、受け取ったプロセスIDを引数として、ジョブ毎に発送処理部240に出力条件を決定する処理および発送処理を実行させる。発送処理部240は、ジョブ毎に出力内容の変更および出力先の選択を含む出力条件を決定する。出力条件を決定した段階で、作業空間230内に生成された高次イメージフォーマットのデータを取得し、決定された出力先に対応するプリンタドライバ252に印刷指令する。
本実施形態では、データ処理部210のジョブ処理機能を、仮想プリンタドライバ218と発送処理部240とに分離し、ジョブ毎の発送処理部240のインスタンスを生成し、ジョブ単位で発送先のリモートプリンタに対する発送処理を実行させることで、リモートプリンタのエラーが発生した場合のプリント停止を最小限としている。本実施形態において、発送処理部240がジョブ毎に独立したインスタンスとして生成されている理由は、この点であるため、必ずしも発送処理部240が独立したインスタンスとして生成される実施形態に限定されるものではない。例えば他の実施形態では、ジョブ毎に独立した処理が行われるマルチスレッド(マルチタスク)インスタンスとされることも可能である。また、仮想プリンタドライバ218は、印刷設定データと高次イメージフォーマットのイメージデータとを出力することで、属性や機種の相違による描画処理を可能な限り後段に持たせ、最終的な印刷品質を高く保つことを可能としている。なお、説明する実施形態では、仮想プリンタドライバ218と発送処理部240とが同一のコンピュータ上に実装されるものとして説明するが、これらを別々のコンピュータ上に分離し、ネットワークを介して通信を行う形で実装することもできる。
上記の結果、発送処理部240は、特定のリモートプリンタがエラーとなった場合でもエラーによる障害を、当該エラーを生じたリモートプリンタのジョブのみに限定できる。また、上記プリント指令部216がユーザ単位のアプリケーションプロセスにロードされるため、発送処理部240は、アプリケーションプロセスと同一権限で起動され、後述する適切な通知や確認を正しく実現することが可能とされる。また本実施形態において、発送処理部240がアプリケーションプロセスと同一権限で起動される理由は、印刷要求元へ表示を行っているアプリケーションの権限を引き継ぐことで、発送処理部240が印刷要求元への表示を可能とするためであり、印刷要求元への各種表示が実現可能である限り、その実装方法は限定されるものではない。他の実施形態では、例えば、同一権限で起動することに代えて、印刷要求元のスレッドIDを渡すことで発送処理部240から印刷要求元への表示を可能とすることもできる。なお、データ処理装置110がユーザからの入力を受付けて処理を制御できる場合、プリント指令部216は、マウスイベントなどを受領してプリント指令を発行することができる。
また説明する実施形態では、仮想プリンタドライバ218がプロセスIDを生成し、プリント指令部216に通知し、プリント指令部216から発送処理部240に起動する際の引数として渡すものとして説明するが、仮想プリンタドライバ218および発送処理部240の間でジョブを固有に識別でき、処理に使用するデータが特定できる限り、その具体的実装は、特に限定されるものではない。他の実施形態では、プロセスIDは、仮想プリンタドライバ218から発送処理部240に送付してもよい。
本実施形態では、ジョブデータは、イメージデータおよびジョブ情報データを含んで構成される。イメージデータは、描画コードを含むEMF(Enhanced Metafile)、PDF(Portable Document Format)、PostScript(登録商標)、XPS(XML paper Specification)などの高次イメージデータを含むことが好適であるが、ビットマップ、JPEG、GIFなどの低次イメージデータを含むことができるし、さらに他の実施形態では低次イメージデータおよび高次イメージデータの両方を含むことができる。またイメージデータは、特定のプリンタに処理を依存しない共用性を有する形式のものを採用することが好ましい。ジョブ情報データは、印刷要求の発行元を固有に識別する識別値、イメージデータの面付情報、カラーモードの指定、集約印刷の指定、マージン、サイズ設定、ページ数、文書名などを含むジョブ情報データである。なお、発送処理部240がアプリケーションと同一権限で起動される場合には、アプリケーションのログインユーザに関連付けられた環境情報から発行元を固有に識別し、紐付けられた種々の情報を取得することが可能であるため、上記の発行元を固有に識別する識別値などは、必ずしもジョブ情報データに含ませなくともよい。
仮想プリンタドライバ218は、より詳細には、仮想プリント管理部220と、ジョブ情報データ抽出部222と、仮想描画部224とを含んで実装されている。仮想プリンタドライバ218は、ジョブデータを受領すると、仮想プリント管理部220を呼出し、ジョブデータをジョブ格納部226に格納する。一方、仮想プリント管理部220は、仮想描画部224を呼出し、仮想描画部224は、現在ジョブ格納部226に格納されているジョブデータが含むイメージデータをジョブに対応付けて処理するための作業領域を作業領域230として確保する。この作業領域230は、仮想プリンタドライバ218および発送処理部240からアクセス可能な、データ処理装置110のHDDやメモリなどの記憶領域として提供することができる。あるいは作業領域230は、仮想プリンタドライバ218および発送処理部240からアクセス可能な、他のコンピュータ装置の共有フォルダなどの記憶領域として提供することができる。仮想プリント管理部220は、データ抽出部222を呼出し、データ抽出部222は、一旦ジョブ格納部226に格納されたジョブデータからジョブ情報データを抽出し、対応する発送処理部240のインスタンスに渡すため、ジョブ情報データの内容を含む印刷設定データ232として、作業領域230に格納する。印刷設定データの格納は、例えば特定の実施形態であるWindows(登録商標)システムであれば、プリントプロセッサまたはグラフィックモジュールが、印刷設定構造体DEVMODEの内容を書き込むことなどで実現することができる。
また仮想描画部224は、ジョブデータが含むイメージデータをページ単位など所定のユニット単位で、ジョブ格納部226から作業領域230に移動して、高次イメージフォーマットのイメージデータを作業領域230に生成する。イメージデータの移動は、例えば特定の実施形態であるWindows(登録商標)システムであれば、スプーラが生成するEMFファイルを、プリントプロセッサがページ単位などの所定のユニット単位毎に分割して、作業領域230にコピーすることで実現することができ、またはグラフィックモジュールがEMFをページ毎に作業領域230に生成することで実現することもできる。ジョブ格納部226が空となると、仮想プリント管理部220は、アプリケーション実行部212に対してイメージ処理終了を通知する。なお、上述したジョブデータは、低次イメージデータよりも容量の少ない高次イメージデータを利用することが好適であり、これにより、ジョブ情報データ抽出部222や仮想描画部224の処理を効率化し、RTA(Return to Application)を短縮することができる。
上記抽出・分離されたジョブ情報データは、プロセスIDから特定できる印刷設定データとして上記作業領域230に格納される。説明する実施形態では、印刷設定データ232のファイル名等がプロセスIDから固有に求められ、仮想プリンタドライバ218および発送処理部240の間で、プロセスIDからジョブの印刷設定データ232が特定されるものとして説明する。しかしながら、他の実施形態では、プロセスIDと、印刷設定データを識別するジョブ情報IDとで関連付けて管理することで、ジョブに対応する印刷設定データが特定されるよう構成してもよい。
また説明する実施形態では、仮想描画部224は、作業領域230に移動したイメージデータ236のファイル名を順に印刷設定データ232に書き込む。つまり、印刷設定データ232には、ページ毎のイメージデータのファイル名、その印刷設定および面付け情報が記述される。そして、印刷設定データ内に記述されたイメージデータのファイル名から、各ジョブで使用するイメージデータが特定される。他の実施形態では、プロセスIDにイメージデータを識別するイメージIDでさらに関連付けて管理することで、プロセスIDに対応するイメージデータが特定されるよう構成してもよい。また、上述したように、印刷設定データが複数の機能手段からアクセスされる性質を有するため、その書込みは排他制御されることが好ましい。
イメージ処理終了通知を受領すると、アプリケーション214は、ジョブ格納部226に対する排他管理を解除し、後続する印刷要求の処理を実行することが可能となる。なお、排他管理としては、種々の手法を使用することができ、セマフォや、同期クラスなどを利用して実装することができる。他の実施形態では、また、アプリケーション実行部212のプリント指令部216を提供するGUI(Graphical User Interface)をイベントを受領しない形式に変更して表示することで、簡易的に排他制御を行うこともできる。
ジョブ格納部226は、データ処理部210の実施形態に応じて、プリンタバッファまたはスプールファイルを格納する記憶領域として実装することができ、特定OSの実装形式に限定されるものではない。また、特定の実施形態においてデータ処理部210は、作業領域230のイメージデータ236および印刷設定データ232を取得してページ割り当て、面付けなどの処理を実行する、イメージ処理部234を含むことができる。この場合、作業領域230に移動されたイメージデータは、データ処理部210のイメージ処理部234に取得される。
イメージ処理部234は、本実施形態では、リモートプリンタドライバ252および描画プロセッサを含む描画モジュールなどの画像処理モジュールとして実装することができる。より具体的には、イメージ処理部234は、EMF、PDF、PostScript(登録商標)、XPSなど描画制御コードやベクトルイメージを含む高次イメージデータの場合には、描画プロセッサを呼び出して処理を実行することができる。また処理対象のイメージデータがBMPなどの低次イメージデータの場合、リモートプリンタドライバ252を呼出してイメージ変換を実行し、イメージデータからラスタイメージの作成が終了するまで作業領域230との間で処理を反復して、RAW形式の出力データを生成することもできる。
本実施形態では、イメージデータとしてビットマップ、JPEG、JPEG2000、PNG、GIFなどの描画コードを含まない低次イメージデータを含むことができる。低次イメージデータを含む場合でも、作業領域230を生成し、呼び出されたリモートプリンタドライバ252のRAWデータの生成が終了するまで、作業領域230を利用して処理を反復させることができる。なお、低次イメージデータと高次イメージデータとが混在しているジョブの場合、描画プロセッサおよびリモートプリンタドライバ252を適宜呼出して処理を実行する。イメージ処理部234が出力データを生成した後、作業領域230から出力データが、データ発送部244に取得される。
また、出力先が特定のリモートプリンタに決定され、決定されたリモートプリンタのプリンタドライバ252がページ割り当てや面付けの機能を持っている場合には、イメージ処理部234は、高次イメージフォーマットとして生成されたイメージデータ236を、プリンタドライバ252の受信可能なフォーマットへのイメージ変換を行い、印刷設定データ232をプリンタドライバ252の機能設定値として指定してプリンタドライバ252に変換させることでRAWデータを作成することも可能である。例えば、特定の実施形態で、Windows(登録商標)のプリンタドライバにおいては、ほとんどのプリンタドライバがEMFを受信できるので、イメージデータ236がEMFであった場合にはデータの変換は必要なく、印刷設定データ232を印刷設定構造体DEVMODEに設定すれば、プリンタドライバ252が目的のRAWデータを作成可能となる。プリンタドライバ252にページ割当てや面付けの機能のない場合は、EMFをページごとのEMFに分割し、ページ順の入れ替えや描画位置の指定をすることで目的のRAWデータを得ることができる。
以下、発送処理部240について説明する。本実施形態の発送処理部240は、ジョブ毎にインスタンスとして生成され、より詳細には、出力条件制御部242と、データ発送部244とを含んで実装される。データ発送部244は、プロセスIDから特定される印刷設定データを検出して、プロセスIDまたは印刷設定データのファイル名で出力条件制御部242に問い合わせを行う。出力条件制御部242は、ルール定義データ246および適宜履歴データ248(あるいは履歴データから集計された集計データ)を参照して、種々の条件付け情報に対応して、出力先および出力内容の変更を含む出力条件を決定する。出力条件制御部242は、プロセスIDまたはファイル名から印刷設定データを特定し、決定された出力条件に応じて、印刷設定データおよびイメージデータを書き換えて、出力内容を確定する。その後、出力条件制御部242は、決定した出力先をデータ発送部244に返答する。なお、出力条件制御部242は、好適には、特定の用途に応じて発送処理部240に組み込み可能なプラグインモジュールとして提供される。
上記ルール定義データ246は、出力先のリモートプリンタの選択および出力内容の変更を条件付けており、ルール定義データ246は、好適には、特定の用途に応じてユーザ定義可能なファイルとして提供される。上記履歴データ248は、ユーザが実行したジョブ実行履歴を管理するデータベースとして構成され、これらの履歴情報から、例えばユーザ毎の直近1ヶ月間のカラーの印刷枚数などが集計され、出力条件を決定するために供される。出力条件制御部242が実行する出力先や出力内容の変更等の出力条件の制御の詳細については後述する。なお、上記ルール定義データ246および履歴データ248は、出力条件制御部242から適切にアクセス可能である限り、必ずしも発送処理部240が内部に保持していなくともよい。例えば、管理者がアクセス可能な共有ファイルサーバ上に配置するなど、利用しやすい形態で配置することができる。この構成により、例えば複数のデータ処理装置110が動作する環境では、ルール定義データ246を共通のファイルとすることによって、メンテナンス性を向上させることが可能となる。さらに、当該ルール定義データ246のファイルについて管理者のみに変更権限を設定することで、セキュリティも好適に確保することが可能となる。
データ発送部244は、出力条件制御部242から出力先の通知を受領して、その出力先を設定する。データ発送部244は、決定された出力先のプリンタドライバ252に対して、作業領域230の高次フォーマットのイメージデータを、印刷設定データ232の内容通りに印刷指令する。決定された出力先のプリンタドライバ252は、印刷指令を受けて、ポートモニタなどへとRAW形式の出力データを送付し、決定された出力先であるいずれかのリモートプリンタからの印刷出力を可能とする。そして、ジョブ毎に起動された発送処理部240のインスタンスは、印刷完了の通知を受けて終了する。
上述したように、本実施形態では、複数のジョブの結合出力を可能に構成されている。出力内容の変更として、複数ジョブの結合が決定された場合には、出力条件制御部242は、作業領域230に格納されるイメージデータ236と印刷設定データ232とを、後続のジョブに対する処理の際に結合して出力するために、図示しない記憶領域に退避させる。この場合、出力条件制御部242は、出力先無しとしてデータ発送部244に通知し、データ発送部244は、発送処理を行わずに処理を終了させる。一方、後続のジョブが要求された際に、例えば結合対象のジョブがすべて揃うなど、結合出力の契機となる条件が満たされた場合には、出力条件制御部242は、退避させておいたイメージデータを作業領域230に移動させ、これら退避させておいたイメージデータを指定の順序で結合するよう当該後続のジョブの印刷設定データを書き換え、その出力内容を確定する。そして、出力条件制御部242は、決定された出力先をデータ発送部244に通知する。そして、データ発送部244は、決定された出力先のプリンタドライバ252に対して、書き換え後の印刷設定データ232の内容通りに、結合されたジョブの印刷指令を行う。
なお、本実施形態では、アプリケーション214は、ジョブを、可能な限り高次イメージデータを含む形式で仮想プリンタドライバ218に送付することが好ましい。この理由は、高次イメージデータとしてイメージデータを送付することにより、特にカラーイメージについてはイメージあたりのデータ量を削減でき、ひいては、データ処理部210がより多くの印刷要求に対応することが可能となるためである。また、仮想プリンタドライバ218がデータを受け取る時点では、出力先が決定されていないため、出力先の能力より低次となるデータで受け取ってしまうと、出力先の能力を充分に活かしきれないことになる。このため、仮想プリンタドライバ218は、その描画能力を充分に高いものとしてアプリケーションに報告することが望ましい。
以下、フローチャートを参照しながら、本実施形態のデータ処理装置110が実行する処理の詳細を説明する。図3および図4は、本実施形態のデータ処理装置110が実行する処理のフローチャートである。なお、図3および図4は、図中のポイントAにより処理フローが連結されていることに留意されたい。図3および図4に示す処理は、ステップS300から開始し、ステップS301で、仮想プリンタドライバ230が選択され、各種設定が登録される。なお、この登録は、データ処理装置110の管理者やユーザなどが専用のGUI(Graphical User Interface)により行うことができる。また、図2に示した実施形態の場合、実行結果は、アプリケーション214がクライアント112〜118の要求に対応して作成し、仮想プリンタドライバ218に渡される。ステップS302で、仮想プリンタドライバ218は、アプリケーション214からジョブを受領する。
ステップS303で、プリント指令部216は、アプリケーションのプロセスと同一権限で発送処理部240のインスタンスを生成し、プロセスIDを引数として渡す。ステップS304で、仮想プリンタドライバ218は、ジョブデータからジョブ情報データおよびイメージデータを分離・抽出し、作業領域230にイメージデータ236を移動または生成するとともに、上述した印刷設定データ232を生成する。ステップS304では、より具体的には、仮想描画部224は、ジョブ格納部226に格納されているイメージデータをページ単位など所定のユニット単位で、作業領域230に移動または生成し、同時に印刷設定ファイルを生成し、それにユニット単位毎のイメージデータのファイル名等を書き込む。一方、ジョブ情報データ抽出部222は、ジョブデータから分離・抽出されたジョブ情報データの印刷設定等に従って印刷設定ファイルに書き込む。
ステップS304の後、ポイントAを介して、図4に示すステップS401に処理が進められる。図4のステップS401では、ステップS303で起動された発送処理部240のデータ発送部244は、引数として渡されたプロセスIDから特定される印刷設定データが作業領域230に生成されたことを検出し、発送処理を開始させる。
ステップS402では、データ発送部244は、出力条件制御部242に出力条件の問い合わせを行う。なお問い合わせは、プロセスID、またはプロセスIDから求められる印刷設定データのファイル名で行うことができる。そして、ステップS403では、出力条件制御部242は、種々の条件付け情報を取得し、ルール定義データ246を参照および比較して、合致する条件を検索する。ステップS404では、出力条件制御部242は、合致した条件に対応する設定を読み出し、印刷設定データを書き換える。また、合致した条件に対応する設定においてイメージデータの内容変更が指定される場合には、イメージデータに対しても変更を加える。
以下、図5〜図6を参照して出力条件の決定処理について詳細を説明する。図5は、ルール定義データを一例として示す。図5に示すルール定義データでは、[Condition1]および[Condition2]の箇所に種々の条件が定義され、[Setting1]および[Setting2]の箇所に種々の出力内容の変更の設定が定義されている。そして、[Command]で示した箇所で、上記条件および設定が紐付けられている。図5に示す例では、UserAが2ページ以上のドキュメントを印刷する場合には、両面印刷およびモノクロ印刷に機能を制限し、PrinterAを出力先とすべきとしてルールが定義されている。また、ClientAで機密キーワードが含まれるドキュメントを印刷する場合には、機密文書である旨の警告を行い、PrinterBを出力先とすべきとしてルールが定義されている。
なお、図5に示すルール定義データ246のデータ構造は、例示を目的とするものであり、特定の用途に応じて種々のルールが定義付け可能であることは言うまでもない。以下、ルール定義データについて説明を加える。定義可能な条件付け情報としては、上記ユーザ名やクライアント名のほか、ユーザに付与されたロール、グループ、権限などの他のユーザ固有情報や、クライアントのMACアドレス、IPアドレス、IPアドレス範囲などの他の端末固有情報を含むことができる。条件付け情報としては、さらに、上述したページ数や機密キーワードの有無の以外にも、カラーモード指定、片面印刷または両面印刷の指定、ステープル、パンチ、スタンプ等の指定、用紙サイズやメディアタイプの指定、給紙方向や給紙口・排紙口の指定、印刷品質の指定などの印刷設定や、文書名、ジョブ発行時間、個人名や特定用語の有無などのジョブ内容情報を含むことができる。
また、上述した条件付け情報は、単独で条件付けに用いることができるが、図5に示すように複数組み合わせて用いることもできる。なお、上記端末固有情報やユーザ固有情報などは、発送処理部240がアプリケーションと同一権限で起動される場合には、ログインユーザに紐付けられた情報として容易に得ることができる。あるいは、上記端末固有情報やユーザ固有情報などを、印刷設定データ内に記述しておくこともできる。
また、定義可能な設定情報としては、両面印刷への制限、モノクロモードへの制限、出力先の制限、地紋印刷への制限、スタンプ付加の制限、電子透かし付加の制限、機密文書である旨の警告の実施の他、所定のレイアウトの集約印刷への制限、印刷設定の変更の通知の実施、印刷設定の変更の確認の実施などを含むことができる。なお、設定情報も、図5に示すように、単数または複数組み合わせて用いることができる。以下、これらの条件付け情報と設定情報とを用いた出力条件の制御の例を説明する。
ユーザ固有情報を用いた出力内容の変更の例としては、例えば、管理者ユーザにはカラー印刷を許可し、一般ユーザにはモノクロ印刷に制限するというような規則を挙げることができる。端末固有情報を用いた出力内容の変更の例としては、例えば、所定の拠点に属するクライアントには、所定の拠点に属する機密文書の印刷のみを許可するというような規則を挙げることができる。印刷設定情報を用いた出力内容の変更の例としては、カラーモードの印刷が指定された場合には、所定ページ数以上である場合に2in1で集約印刷し、さらに所定ページ数以上である場合に4in1で集約印刷するというような規則を挙げることができる。ジョブ内容を用いた出力内容の変更の例としては、後述する結合出力や、所定枚数以上の場合に両面印刷とするというような規則を挙げることができる。
また印刷設定情報を用いた出力先の選択の例としては、カラーモードが指定された場合には、カラー印刷が可能であるとして登録された出力先を選択するというような規則を挙げることができる。ジョブ内容を用いた出力先の選択の例としては、ページ数が所定枚数以上の場合には、高速印刷可能であるとして登録された出力先を選択するというような規則を挙げることができる。
図6は、本実施形態の出力条件制御部242が出力条件の決定に用いる他のデータを例示する。図6(A)に示すルール定義データは、結合出力を条件付けるものである。図6(A)には、[Condition3]および[Condition4]の箇所に、対象の文書名の条件が定義され、[Setting3]および[Setting4]の箇所に、対応する処理が定義され、[Command]の箇所で、上記条件および設定が紐付けられている。
図6(A)に示す例では、doc_coverという文書名のジョブを検出した場合、BackuplocationAで示す保存場所に退避させ、かつ発送処理を行わないことが定義されている。また、doc_bodyという文書名のジョブを検出した場合、BackuplocationAで示す保存場所に退避されているdoc_coverという文書と、当該ジョブのdoc_bodyという文書とを結合して、PrinterBに発送することが定義されている。なお、文書名に対する条件は、正規表現やパターン辞書などを用いて表現することで、特定のパターンの名称の文書に対して定義することもできる。
なお、図6(A)に示す結合出力の条件付けも一例であって、その他いかなる表現方法で結合対象のジョブを特定する条件および結合出力の契機とする条件を定義付けることができる。例えば、結合対象とする全文書が揃うことを結合出力の契機の条件として定義することができるし、または結合対象とする全文書が揃わなくとも特定の文書が検出されることを結合出力の契機の条件として定義することもできる。
図6(B)に示すルール定義データは、機密キーワードなど任意のキーワードを定義付けるものである。図6(B)には、「Confidential」や「社内秘」などの機密キーワードが定義されている。また、ルール定義データには、個人名やなど墨消しすべき文字列が定義付けられていてもよい。上記機密キーワードや墨消しすべき文字列の抽出は、EMF、PDF、PostScript(登録商標)などテキストを保持する形式のイメージデータであれば、作業領域230にアクセスし、イメージデータを解析することでこれらの文字列を抽出することができる。また、イメージデータ中の文字列の置き換えを行ってもよい。このような抽出される文字列を利用した出力条件の決定の例としては、機密キーワードを含む場合に地紋印刷したり、個人名などの保護すべき情報を所定の文字列(例えば■や×など。)で置換して印刷したりするような規則を挙げることができる。
その他、条件付け情報としては、履歴データ248に保持されるジョブ実行履歴から集計される集計値を含むこともできる。図6(C)は、集計データを例示する。このような集計データは、履歴データ248の履歴を定期的あるいは不定期に集計することによって生成される。図6(C)に示す集計データは、ユーザ毎に過去1ヶ月分のカラー印刷およびモノクロ印刷の枚数の集計値を含んでいる。集計値を用いた出力条件の決定の例として、例えば、特定のユーザが1ヶ月当たりのカラー印刷の上限値を超えた場合に、モノクロに機能限定するというような規則を挙げることができる。
再び図4を参照すると、ステップS405では、出力条件制御部242は、上述した結合条件に合致するか否かを判定する。説明する実施形態では、合致する条件に対応する設定中に退避(backup)および結合(merge)が指定される場合に、結合条件に合致すると判定する。ステップS405で、結合条件に合致しないと判定された場合(NO)には、ステップS406へ処理を進める。ステップS406では、出力条件制御部242は、問い合わせに対する応答として、合致した条件に対応する設定中に指定された出力先をデータ発送部244に通知する。この段階で、出力先および出力内容が確定される。イメージ処理部234を用いる実施形態では、イメージ処理部234は、書き換え後の印刷設定データに従って、イメージデータの面付けおよび印刷サイズ、マージンなどの処理を適宜行うことができる。またこの段階で、例えば印刷したユーザと、カラーモードと、印刷枚数とを履歴として蓄積し、履歴データ248を更新する。
ステップS407では、データ発送部244は、書き換え後の印刷設定データおよびイメージデータの内容に従った印刷指令を、通知された出力先のリモートプリンタのプリンタドライバ252に対して実施する。出力先のプリンタドライバ252は、印刷指令を受けて、ポートモニタなどへと出力データを送付し、決定された出力先のリモートプリンタに印刷出力させる。そして、発送部処理部240のインスタンスは、ジョブの完了通知を受けてステップS408で処理を終了させる。イメージ処理部234を用いる場合には、イメージ処理部234による処理の完了を待って、データ発送部244が出力データを作業領域230から取得し、出力先に送付する。イメージ処理部234は、ジョブデータが含むイメージを高次イメージフォーマットとして生成する機能を含んで構成され、リモートプリンタドライバ252は、例えば、UPnP、Bonjourなどのプラグアンドプレイ機能を利用して自動的に取得される。この結果、特定のメーカの特定実装形式のページプリンタを使用することなく、プリンタネットワーク100に接続され、プラグアンドプレイ、すなわち、自動ドライバ転送プロトコルを利用することができるページプリンタであれば、特定のメーカに依存せずに処理を行うことができる。
また、特定の実施形態であるWindows(登録商標)システムにおいて、決定された出力先に対応するプリンタドライバがページ割り当ておよび面付け機能を有し、イメージデータ236がEMF形式のデータであった場合など、データ変換が必要ない場合などには、データ発送部244は、印刷設定データ232を印刷設定構造体DEVMODEに設定して、作業領域230の高次イメージフォーマットのイメージデータを出力先に対応するリモートプリンタドライバに渡し、リモートプリンタドライバ252にRAWデータを作成させることもできる。
一方、ステップS405で、結合条件に合致すると判定された場合(YES)には、ステップS409へ処理を進める。ステップS409では、出力条件制御部242は、結合(merge)が指定されるか否か、つまり出力の契機とする条件が満たされたか否かを判定する。ステップS409で、出力の契機とする条件が満たされていないと判定された場合(NO)には、ステップS412へ処理を分岐させる。ステップS412では、出力条件制御部242は、当該ジョブの印刷設定データおよびイメージデータを指定の退避先の記憶領域に退避させる。ステップS413では、出力条件制御部242は、データ発送部244に出力先なしとして通知し、ステップS408で処理を終了する。
一方、ステップS409で、出力の契機とする条件が満たされたと判定された場合(YES)には、ステップS410へ処理を分岐させる。ステップS410では、出力条件制御部242は、指定された退避先に退避された印刷設定データを読み出し、退避させたジョブのイメージデータを指定の順序で結合するよう現在のジョブの印刷設定データを書き換えるとともに、退避しておいたイメージデータを作業領域230に移動する。そして、ステップS411では、出力条件制御部242は、合致する条件に対応する設定に指定された発送先をデータ発送部244に通知する。このとき出力先および出力内容が確定される。
続いてステップS407では、データ発送部244は、結合後の印刷設定データおよびイメージデータの内容に従った印刷指令を、通知された出力先のリモートプリンタのプリンタドライバ252に対して実施する。出力先のプリンタドライバ252は、印刷指令を受けて、ポートモニタなどへと出力データを送付し、決定された出力先のリモートプリンタに印刷出力させる。そして、発送処理部240のインスタンスは、ジョブの完了通知を受けてステップS408で処理を終了させる。
以下、他の実施形態のデータ処理装置が実行する処理について、図3および図7〜図10を参照して説明する。なお、以下に説明する実施形態の処理では、出力内容の変更が有る場合に、ユーザに対し了承の可否の問い合わせを発生させる。ユーザに対し問い合わせを発生させるか否かは、特定の用途に合わせて実装を変更することができる。あるいは、特定の用途に応じてデータ処理装置110の管理者が問い合わせを発生させるか否かを設定できるよう構成することもでき、上記ルール定義データ内に定めてもよい。また説明する実施形態では、ユーザに対し了承の可否の問い合わせを発生させるとしたが、問い合わせとはせずに、出力内容の変更の結果を通知するのみとしてもよい。
図7は、他の実施形態のデータ処理装置の機能ブロック300を示す。なお、図7に示す各機能部には、図2と同様な機能を有するものについては、その符号の下二桁において同一の番号を付していることに留意されたい。また機能ブロック300は、図2に示す機能ブロックと同様の構成を有しているため、以下、相違点を中心に説明する。
図7は、複数のクライアント302a,302bが接続された状態のデータ処理装置の機能ブロック300を示し、クライアントA302aおよびクライアントB302bに対応して、それぞれアプリケーションA314aおよびアプリケーションB314bが動作している。アプリケーション314a,314bは、それぞれプリント指令部316を有しており、プリント指令部316a,316bは、それぞれ、印刷要求に応答して、アプリケーション314a,314bと同一権限で発送処理部のインスタンス340a,340bを生成するとともに、ジョブを識別するプロセスIDと、問い合わせのための表示方法を通知する。
本実施形態において、生成される発送処理部のインスタンス340a,340bは、それぞれ、図2に関連して説明したデータ発送部344、出力条件制御部342、ルール定義データ346および履歴データ348に加えて、さらに表示部345を含んで構成される。表示部345は、出力条件制御部342がユーザに対する問い合わせまたは通知を行うに際して、出力条件制御部342から表示内容を受け取り、対応するアプリケーション314が印刷要求元に表示しているのと同一の方法および権限で、印刷要求元に対して表示処理を行う。ここでいう表示方法とは、アプリケーション314が印刷指令を受けた印刷要求元が操作している端末画面に対して、表示に充分な権限を持って表示するための方法であり、本実施形態では、発送処理部のインスタンス340が、アプリケーション314の権限を引き継ぐことで達成されている。このように本実施形態では、発送処理部のインスタンス340が、アプリケーション314と同一の権限で生成されるため、アプリケーション314が印刷要求元に表示しているのと同じ方法および権限で表示することができ、このため印刷要求元への表示が正しく達成される。
一方、仮想プリンタドライバ318は、各クライアント302に対応するアプリケーション314からの印刷要求を排他管理し、例えば、まずクライアントA302aからのジョブデータを受領して、ジョブデータからジョブ情報データおよびイメージデータを分離・抽出し、作業領域330aにイメージデータ336を移動または生成するとともに、上述した印刷設定データ332を生成する。仮想プリンタドライバ318は、クライアントA302aについての処理が完了した後、同様に、例えばクライアントB302bからの印刷要求があれば、そのジョブデータを受領して、作業領域330bにイメージデータを移動または生成するとともに、上述した印刷設定データを生成する。各作業領域330a,330bのデータは、それぞれ、対応する発送処理部のインスタンス340a,340bからアクセスされることとなる。ジョブごとに起動された発送処理部のインスタンス340a,340bは、それぞれ、出力内容の変更および出力先の選択を含む出力条件を決定する。出力条件を決定した段階で、それぞれ作業空間330a,330b内に生成された高次イメージフォーマットのデータを取得し、印刷設定データの内容に従って、決定された出力先に対応するプリンタドライバ352に印刷指令する。
図8および図9は、他の実施形態のデータ処理装置が実行する処理のフローチャートである。なお、図8に示すポイントAまでの処理は、図3に示したものと同様であるため説明は割愛する。図8および図9は、図中のポイントB〜Dにより処理フローが連結されていることに留意されたい。図3と同様の処理フローを経た後、ポイントAを介して、図8に示すステップS801に処理が進められる。図8のステップS801では、ステップS303で起動された発送処理部のデータ発送部344は、プロセスIDから特定される印刷設定データが生成されたことを検出し、発送処理を開始させる。
ステップS802では、データ発送部344は、出力条件制御部342に出力条件の問い合わせを行う。ステップS803で、出力条件制御部342は、上記種々の条件付け情報を取得し、ルール定義データ346を参照および比較して、合致する条件を検索する。ステップS804で、出力条件制御部342は、合致する条件に対応する設定より印刷設定の変更があるか否かを判定する。ステップS804で、変更があると判定された場合(YES)には、ステップS805へ処理を分岐させる。ステップS805では、出力条件制御部342は、印刷設定に変更が要請されている旨の問い合わせを行うための表示内容を表示部345に渡し、印刷設定に変更が要請されている旨の通知と、その了承の可否のユーザ問い合わせを、表示部345を介して起動元のアプリケーション314で発生させる。
図10は、本実施形態のデータ処理装置によるユーザ問い合わせによって、クライアント上の画面に表示させるGUIを示す。図10(A)は、カラー印刷からモノクロ印刷への変更を提案するGUIを示す。「はい」ボタンや「いいえ」ボタンがクリックされると、了承の可否が表示部345を介して出力条件制御部342に戻される。ステップS805に続いて、ステップS806では、出力条件制御部342は、変更が了承されたか否かを判定する。ステップS806で、例えば「はい」ボタンがクリックされ、了承されている場合には、ステップS807へ処理を進める。
ステップS807では、出力条件制御部342は、合致した条件に対応する設定で刷設定データを書き換えるとともに、合致した条件に対応する設定においてイメージデータの内容変更が指定される場合にはイメージデータについても変更を加える。一方、ステップS804で、変更が無かった場合(NO)、およびステップS806で了承されなかった場合(NO)には、そのままステップS808へ進められる。なお、説明する実施形態では、ステップS806で了承されなかった場合(NO)に出力内容を変更せずに進めるものとして説明するが、他の実施形態では、了承されなかった場合(NO)、一律にジョブの実行を中止したり、了承されなかった場合の対応をルール定義データ346に記述しておき、その規則に応じてジョブの実行を継続するか中止するかを決定することもできる。
ステップS808では、出力条件制御部342は、上述した結合条件に合致するか否かを判定する。ステップS808で、結合条件に合致しないと判定された場合(NO)には、ステップS809へ処理を進める。ステップS809では、出力条件制御部342は、合致した条件に対応する設定中に指定された出力先をデータ発送部344に通知する。ステップS810では、データ発送部344は、書き換え後の印刷設定データおよびイメージデータの内容に従って、イメージの面付けおよび印刷サイズ、マージンなどの処理を適宜行い、決定された出力先のリモートプリンタのプリンタドライバ352に対して印刷指令を行う。決定された出力先のプリンタドライバ352は、印刷指令を受けて、ポートモニタなどへとRAW形式の出力データを送付し、決定された出力先のリモートプリンタに印刷出力させる。そして、データ発送部344は、ジョブの完了通知を受けてステップS811で処理を終了させる。
一方、ステップS808で、結合条件に合致すると判定された場合(YES)には、ポイントBを介して図9に示すステップS901へ処理を進める。ステップS901では、出力条件制御部342は、出力の契機とする条件が満たされたか否かを判定する。ステップS901で、出力の契機とする条件が満たされていないと判定された場合(NO)には、ステップS905へ処理を分岐させる。ステップS905では、出力条件制御部342は、作業領域330にある当該ジョブの印刷設定データおよびイメージデータを指定の退避先に退避させる。そして、出力条件制御部342は、ステップS906で、データ発送部に出力先なしとして通知し、ステップS907で、現在要求されたジョブが結合対象として退避された旨の通知を行うための表示内容を表示部345に渡し、表示部345を介して起動元のアプリケーションに退避された旨のユーザ通知を発生させる。図10(B)は、ドキュメントを退避した旨を通知するGUIを示す。その後、ポイントDを経て、図8のステップS811で処理を終了する。
一方、ステップS901で、出力の契機とする条件が満たされたと判定された場合(YES)には、ステップS902へ処理を分岐させる。ステップS902では、出力条件制御部342は、指定された退避先に退避された印刷設定データを読み出し、退避させたジョブのイメージデータを指定の順序で結合するよう現在のジョブの印刷設定データを書き換えるとともに、退避されたイメージデータを作業領域330に移動する。そして、ステップS903では、出力条件制御部342は、合致する条件に対応する設定に指定された発送先をデータ発送部344に通知する。このとき出力先および印刷設定データの内容が確定される。続いてステップS904で、現在要求されたジョブが結合対象であり、これまで退避されたジョブと結合して出力を行う旨の通知を、表示部345を介して起動元のアプリケーションに発生させる。図10(C)は、ドキュメントを結合した旨を通知するGUIを示す。その後、ポイントCを経て、図8のステップS810でデータ発送部244は、結合後の印刷設定データおよびイメージデータに従った内容の出力データを、決定された出力先のリモートプリンタに宛ててジョブとして送信し、ジョブの完了通知を受けて、ステップS811で処理を終了する。
以上説明したように、本発明の実施形態によれば、複数のベンダからのプリンタが混在している環境においてもベンダの異同にかかわらず、ユーザ、端末、印刷等に関する情報に対して定義される条件に則って、出力先のみならず出力内容を変更および決定して画像形成装置に出力させるデータ処理装置、データ処理方法、プログラムおよび記録媒体が提供される。
また本発明の実施形態によれば、パーソナルコンピュータやシンクライアントが複数の画像形成装置にアクセスすることが可能な現在のネットワークプリント環境で、ユーザ固有の情報や端末固有の情報、印刷設定およびジョブ内容に関連して定義付けた規則に従って、柔軟にジョブ出力先および出力内容を変更および制限し、適切なプリンタから出力させることが可能となり、出力業務ごとの管理を効率化し、さらに情報セキュリティの向上を可能とすることが可能となる。また、本発明の実施形態によれば、アプリケーションサーバに対するアプリケーションモジュールの追加を行うことなく、最小のコストで、出力先および出力内容を制御することが可能なデータ処理装置、プログラムおよび記憶媒体が提供できる。
さらに、本発明によれば、シンクライアントに対して印刷するべきリモートプリンタのプリンタドライバの追加実装を排除して、より柔軟なネットワーク構成に対応しつつ、印刷出力の出力先管理を可能とする、データ処理装置、プログラムおよび記憶媒体が提供できる。
本実施形態の上記機能は、C、C++、C#、Java(登録商標)などのオブジェクト指向プログラミング言語などで記述された装置実行可能なプログラムにより実現でき、本実施形態のプログラムは、ハードディスク装置、CD−ROM、MO、DVD、フレキシブルディスク、EEPROM、EPROMなどの装置可読な記録媒体に格納して頒布することができ、また他装置が可能な形式でネットワークを介して伝送することができる。
これまで本実施形態につき説明してきたが、本発明は、上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用効果を奏する限り、本発明の範囲に含まれるものである。