(57)【要約】    【課題】  印刷開始を指示する前に、使用可能なプリンタのみをユーザに認識させることができる印刷制御装置を提供する。    【解決手段】  ネットワーク３０１介して接続されるプリンタ１５００を制御するプリンタドライバを備えるクライアントコンピュータ３０００（印刷制御装置）では、ＣＰＵ１０１はネットワーク３０１上の所定の位置（プリントサーバ４０００）に存在するプリンタチケットを取得し、クライアントコンピュータ３０００のレジストリがプリンタチケットに基づいて設定されるプリンタドライバの設定情報を保持し、ＣＰＵ１０１が取得したプリンタチケットに基づいて、上記プリンタドライバを使用可能又は使用不可能にするための設定を上記プリンタドライバの設定情報に対して行う。【選択図】      図１１
2006185157.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク介して接続されるプリンタを制御するプリンタドライバを備える印刷制御装置であって、
前記ネットワーク上の所定の位置に存在するプリンタ設定データを取得するプリンタ設定データ取得手段と、
前記プリンタ設定データに基づいて設定されるプリンタドライバの設定情報を保持する保持手段と、
前記取得したプリンタ設定データに基づいて、前記プリンタドライバを使用可能又は使用不可能にするための設定を前記プリンタドライバの設定情報に対して行うドライバ設定手段と
を備えることを特徴とする印刷制御装置。
【請求項２】
前記ドライバ設定手段は、前記プリンタ設定データに基づいて、前記プリンタドライバの機能を使用可能又は使用不可能にするための設定を前記プリンタドライバの設定情報に対して行うことを特徴とする請求項１記載の印刷制御装置。
【請求項３】
前記ドライバ設定手段は、前記プリンタ設定データに基づいて、使用可能なプリンタドライバの機能に対する制限の設定を前記プリンタドライバの設定情報に対して行うことを特徴とする請求項２記載の印刷制御装置。
【請求項４】
前記ドライバ設定手段は、仮想プリンタドライバの生成を行うことを特徴とする請求項１乃至３のいずれか１項記載の印刷制御装置。
【請求項５】
前記ドライバ生成手段は、前記生成された仮想プリンタドライバをデフォルトプリンタとして設定することを特徴とする請求項４記載の印刷制御装置。
【請求項６】
プリンタの詳細設定表示の指示を受信する受信手段と、該詳細設定表示の指示を受信したときに、前記詳細設定表示の指示に係るプリンタに対応するプリンタドライバが前記仮想プリンタドライバであるか否かを判定する判定手段と、前記詳細設定表示の指示に係るプリンタに対応するプリンタドライバが前記仮想プリンタドライバであるときに、前記仮想プリンタドライバ用のプロパティシートを用いて印刷設定画面を生成する印刷設定画面生成手段とを備えることを特徴とする請求項４又は５記載の印刷制御装置。
【請求項７】
前記ドライバ生成手段は、前記保持手段に保持されるプリンタドライバの設定情報に使用可能と設定されている複数のプリンタドライバの機能を統合して、新たに統合されたプリンタドライバの機能を生成することを特徴とする請求項１乃至６のいずれか１項記載の印刷制御装置。
【請求項８】
前記新たに統合されたプリンタドライバの機能を一覧表示する表示手段と、前記一覧表示されたプリンタドライバの機能の選択指示を入力する選択指示入力手段と、該入力された選択指示に係るプリンタドライバの機能の全てを印刷に反映できるプリンタドライバがあるか否かを判別する判別手段と、該入力された選択指示に係るプリンタドライバの機能の全てを印刷に反映できるプリンタドライバがないと判別されたときに、該入力された選択指示に係るプリンタドライバの機能と前記保持手段に保持されるプリンタドライバの設定情報に使用可能と設定されている複数のプリンタドライバの機能との一致度を算出する一致度算出手段と、該一致度算出手段により一致する機能数が最も多いプリンタドライバに対応するプリンタを印刷を行うプリンタとして選択する選択手段とを備えることを特徴とする請求項７記載の印刷制御装置。
【請求項９】
前記プリンタ設定データ取得手段により取得されたプリンタ設定データを記憶する記憶手段と、前記記憶手段にプリンタ設定データが存在せず、前記プリンタ設定データ取得手段による取得動作の実行時に前記プリンタ設定データが取得できない場合に、前記プリンタ設定データに基づいて設定されるプリンタドライバの設定情報を無効にする設定情報無効手段とを備えることを特徴とする請求項１乃至８のいずれか１項記載の印刷制御装置。
【請求項１０】
ネットワーク介して接続されるプリンタを制御するプリンタドライバを備える印刷制御装置に適用される印刷制御方法であって、
前記ネットワーク上の所定の位置に存在するプリンタ設定データを取得するプリンタ設定データ取得工程と、
前記プリンタ設定データに基づいて設定されるプリンタドライバの設定情報を保持する保持工程と、
前記取得したプリンタ設定データに基づいて、前記プリンタドライバを使用可能又は使用不可能にするための設定を前記プリンタドライバの設定情報に対して行うドライバ設定工程と
を備えることを特徴とする印刷制御方法。
【請求項１１】
ネットワーク介して接続されるプリンタを制御するプリンタドライバを備えるコンピュータで実行される印刷制御プログラムであって、
前記ネットワーク上の所定の位置に存在するプリンタ設定データを取得するプリンタ設定データ取得モジュールと、
前記プリンタ設定データに基づいて設定されるプリンタドライバの設定情報を保持する保持モジュールと、
前記取得したプリンタ設定データに基づいて、前記プリンタドライバを使用可能又は使用不可能にするための設定を前記プリンタドライバの設定情報に対して行うドライバ設定モジュールと
を備えることを特徴とする印刷制御プログラム。
【請求項１２】
ネットワーク介して接続されるプリンタを制御するプリンタドライバを備えるコンピュータで読み取り可能な記録媒体であって、
前記ネットワーク上の所定の位置に存在するプリンタ設定データを取得するプリンタ設定データ取得モジュールと、
前記プリンタ設定データに基づいて設定されるプリンタドライバの設定情報を保持する保持モジュールと、
前記取得したプリンタ設定データに基づいて、前記プリンタドライバを使用可能又は使用不可能にするための設定を前記プリンタドライバの設定情報に対して行うドライバ設定モジュールと
を備えることを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリンタに通信可能に接続される印刷制御装置、印刷制御方法、印刷制御プログラム及び記録媒体に関し、特にプリンタの使用許可を制限する印刷制御装置、印刷制御方法、印刷制御プログラム及び記録媒体に関する。
【背景技術】
【０００２】
従来から、プリンタを共有するためにネットワークを介してクライアントコンピュータとプリンタが接続される構成がとられ、複数のクライアントコンピュータがネットワーク上に接続されたプリンタを共有して使用することができるようになっている。
【０００３】
しかし、機密保持や経費節約の観点から、特定のユーザや特定のクライアントコンピュータからはプリンタへの出力を許可しないように、プリンタの使用を制限したい又はプリンタの機能の使用制限を行いたいというニーズが発生している。
【０００４】
これに対して、例えば、クライアントコンピュータからプリンタに印刷を行う際、「利用者管理ファイル」に記載されている「MachineName」「UserName」「Time」「Status」の情報を元に、印刷ジョブを送信するクライアントコンピュータ名、ログインユーザ名、及び印刷を行う時間等の条件が一致すれば、印刷を許可する印刷システムが知られている（例えば、特許文献１参照）。
【０００５】
また、ネットワーク上に多数のプリンタが存在する場合、ユーザが望む印刷体裁を得るためにどの印刷装置を使用するべきか判断に迷うことがある。特に、どのプリンタが利用できるのかが分からない場合や、プリンタに関し知識の少ないユーザにとっては、難を強いられる。また、ユーザが印刷を実行した後、ユーザが望む印刷出力を得られていない問題が発生する。ユーザの希望する出力を得るために、使用可能のプリンタの中から、ユーザの望む印刷が行えるプリンタを自動で選択し、印刷を行う印刷制御システムが知られている（例えば特許文献２参照）。
【０００６】
この印刷制御システムでは、ユーザが設定した印刷設定にマッチしたプリンタドライバとプリンタを自動選択し、印刷処理を行わせる。また、この印刷制御システムでは、あらかじめグループ分けされたプリンタの中から、選択された機能をより満たすプリンタを自動的に選択する。
【特許文献１】特開２００１−１８８６６３号公報
【特許文献２】特開平７−１２１３２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１の印刷システムは、印刷開始を指示した後、「利用者管理情報ファイル」の参照を行い、プリンタへ印刷ジョブを送信する段階で印刷ができるか否かが決定される。印刷開始を指示した後に、初めて印刷が行えるのかについて結果がわかる仕組みになっている。そのため、印刷開始を指示するまで印刷が行えるか分からないという課題があった。そして、印刷を管理する機構は、プリンタサーバとクライアントとの相互通信でおこなわれており、スタンドアローンなクライアントには適応することができないという課題があった。
【０００８】
また、管理者がクライアントに対して一方的に印刷制限を行った場合には、どのプリンタで印刷が可能で、また利用可能なプリンタではどの機能が利用できるのかが不明である。そこで、希望する条件で印刷できるプリンタを自動的に検索するために特許文献２の技術を利用することが考えられる。
【０００９】
しかしながら、特許文献２では、あらかじめグループ分けされたプリンタ群の中からユーザの希望する機能にマッチするプリンタグループを選択するものであるため、ユーザの要求に応えるプリンタは限られた範囲から選択されることになる。そのため、暗にユーザが望む機能の範囲を狭めてしまっているという課題が挙げられる。
【００１０】
また、特許文献２では、ユーザに対して、プリンタの機能把握を強いる面があるという課題が挙げられる。更には、クライアントが利用可能なプリンタがどれであり、それらから選ぶことが可能な機能が何であるかを示唆することができないので無駄な設定を行ってしまうという欠点を有している。
【００１１】
本発明の目的は、印刷開始を指示する前に、使用可能なプリンタのみをユーザに認識させることができる印刷制御装置、印刷制御方法、印刷制御プログラム及び記録媒体を提供することにある。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、請求項１の印刷制御装置は、ネットワーク介して接続されるプリンタを制御するプリンタドライバを備える印刷制御装置であって、前記ネットワーク上の所定の位置に存在するプリンタ設定データを取得するプリンタ設定データ取得手段と、前記プリンタ設定データに基づいて設定されるプリンタドライバの設定情報を保持する保持手段と、前記取得したプリンタ設定データに基づいて、前記プリンタドライバを使用可能又は使用不可能にするための設定を前記プリンタドライバの設定情報に対して行うドライバ設定手段とを備えることを特徴とする。
【００１３】
請求項１０の印刷制御方法は、ネットワーク介して接続されるプリンタを制御するプリンタドライバを備える印刷制御装置に適用される印刷制御方法であって、前記ネットワーク上の所定の位置に存在するプリンタ設定データを取得するプリンタ設定データ取得工程と、前記プリンタ設定データに基づいて設定されるプリンタドライバの設定情報を保持する保持工程と、前記取得したプリンタ設定データに基づいて、前記プリンタドライバを使用可能又は使用不可能にするための設定を前記プリンタドライバの設定情報に対して行うドライバ設定工程とを備えることを特徴とする。
【００１４】
請求項１１の印刷制御プログラムは、ネットワーク介して接続されるプリンタを制御するプリンタドライバを備えるコンピュータで実行される印刷制御プログラムであって、前記ネットワーク上の所定の位置に存在するプリンタ設定データを取得するプリンタ設定データ取得モジュールと、前記プリンタ設定データに基づいて設定されるプリンタドライバの設定情報を保持する保持モジュールと、前記取得したプリンタ設定データに基づいて、前記プリンタドライバを使用可能又は使用不可能にするための設定を前記プリンタドライバの設定情報に対して行うドライバ設定モジュールとを備えることを特徴とする。
【００１５】
請求項１２の記録媒体は、ネットワーク介して接続されるプリンタを制御するプリンタドライバを備えるコンピュータで読み取り可能な記録媒体であって、前記ネットワーク上の所定の位置に存在するプリンタ設定データを取得するプリンタ設定データ取得モジュールと、前記プリンタ設定データに基づいて設定されるプリンタドライバの設定情報を保持する保持モジュールと、前記取得したプリンタ設定データに基づいて、前記プリンタドライバを使用可能又は使用不可能にするための設定を前記プリンタドライバの設定情報に対して行うドライバ設定モジュールとを備えることを特徴とする。
【発明の効果】
【００１６】
請求項１の印刷制御装置、請求項１０の印刷制御方法、請求項１１の印刷制御プログラム及び請求項１２の記録媒体によれば、ネットワーク上の所定の位置に存在するプリンタ設定データが取得され、プリンタ設定データに基づいて設定されるプリンタドライバの設定情報を保持され、取得されたプリンタ設定データに基づいて、プリンタドライバを使用可能又は使用不可能にするための設定がプリンタドライバの設定情報に対して行われるので、プリンタ設定データに基づいて設定されるプリンタドライバの設定情報は更新され、常に最新のプリンタ環境を反映することができる。結果として、印刷開始を指示する前に、使用可能なプリンタのみをユーザに認識させることができる。
【００１７】
請求項２、３の印刷制御装置によれば、印刷開始を指示する前に、使用可能なプリンタの機能のみをユーザに認識させることができる。
【００１８】
請求項７の印刷制御装置によれば、ユーザに禁止項目を意識することなく、プリンタの設定を行うことが可能である。これにより、ユーザの印刷設定を円滑におこなわせることができる。
【００１９】
請求項８の印刷制御装置によれば、ユーザの要望に沿ったプリンタの自動選択を実行することができ、プリンタ選択におけるユーザの煩わしさが軽減できる。
【００２０】
請求項９の印刷制御装置によれば、使用が許可されていないプリンタや使用が制限されている機能についても、使用を可能にすることができる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照して、本発明の実施の形態を詳細に説明する。
【００２２】
図１は、本発明の実施の形態に係る印刷制御装置が適用される印刷システムの構成を示すブロック図である。
【００２３】
図１の印刷システムは、主として印刷制御装置としてのクライアントコンピュータ（以下、「クライアントＰＣ」という）３０００とプリンタ１５００とを備えている。
【００２４】
図１において、クライアントＰＣ３０００に含まれるＲＯＭ１０３又は外部メモリ１１１には、ＣＰＵ１０１の制御プログラムであるＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）やオペレーティングシステムプログラム（以下「ＯＳ」という）や、クライアントＰＣ３０００の実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。本実施の形態で使用するＯＳは、例えば、マイクロソフト社製のウィンドウズ（登録商標）ＸＰを想定するが、これに限るものではない。ＲＡＭ１０２は、ＣＰＵ１０１の主メモリ又はワークエリアとして機能する。ＣＰＵ１０１は、各種処理の実行に際して必要なプログラムや必要なデータ等をＲＡＭ１０２にロードして、プログラムを実行することで各種処理を実現する。
【００２５】
また、入力コントローラ（入力Ｃ）１０５は、キーボード（ＫＢ）１０９や不図示のマウス等のポインティングデバイスからの入力を制御する。ビデオコントローラ（ＶＣ）１０６は、ＣＲＴディスプレイ（ＣＲＴ）１１０等の表示器への表示を制御する。表示器はＣＲＴだけでなく、液晶ディスプレイ等でもよい。これらは必要に応じて管理者が使用するものである。
【００２６】
メモリコントローラ（ＭＣ）１０７は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、又は各種データ等を記憶するハードディスク（ＨＤ）やフロッピー（登録商標）ディスク（ＦＤ）、或いはＰＣＭＣＩＡカードスロットにアダプタを介して接続されるコンパクトフラッシュ（登録商標）メモリ等の外部メモリ１１１へのアクセスを制御する。
【００２７】
通信Ｉ／Ｆコントローラ（通信Ｉ／ＦＣ）１０８は、ネットワーク１２１を介して、外部機器と接続及び通信するものであり、クライアントＰＣ３０００の通信制御処理を実行する。例えば、ＴＣＰ／ＩＰを用いたインターネット通信やプリンタ１５００との間でデータの送受信等がを実行する。
【００２８】
ＣＰＵ１０１は、例えば、ＲＡＭ１０２内の表示情報用領域（不図示）でアウトラインフォントの展開（ラスタライズ）処理を実行することにより、ＣＲＴ１１０の表示を可能としている。また、ＣＰＵ１０１は、ＣＲＴ１１０上の不図示のマウスカーソル等でのユーザ指示を可能とする。
【００２９】
プリンタ１５００に含まれるＣＰＵ１１２は、ＲＯＭ１１３ｂのプログラム用ＲＯＭに記憶された制御プログラム又は外部メモリ１１４に記憶された制御プログラム等に基づいてシステムバス１１５に接続される印刷部（プリンタエンジン）１１７に出力情報としての画像信号を出力する。また、ＲＯＭ１１３ｂのプログラムＲＯＭには、ＣＰＵ１１２の制御プログラム等が記憶される。ＲＯＭ１１３ａのフォント用ＲＯＭには上記出力情報を生成する際に使用するフォントデータ等を記憶し、ＲＯＭ１１３ｃのデータ用ＲＯＭにはハードディスク等の外部メモリ１１４がないプリンタの場合には、コンピュータ上で利用される情報等も記憶される。
【００３０】
ＣＰＵ１１２は入力部１１８を介してクライアントＰＣ３０００との通信処理が可能となっており、プリンタ内の情報等をクライアントＰＣ３０００に通知可能に構成されている。ＲＡＭ１１９はＣＰＵ１１２の主メモリであり、ワークエリア等として機能する。ＲＡＭ１１９は、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。
【００３１】
なお、ＲＡＭ１１９は、出力情報展開領域、環境データ格納領域、ＮＶＲＡＭ等としても使用される。ハードディスク（ＨＤ）又はＩＣカード等の外部メモリ１１４は、メモリコントローラ（ＭＣ）１２０によりアクセスを制御される。外部メモリ１１４は、オプション機器としてコントローラ（ＭＣ）１２０に接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。また、入力部１１８には、操作パネルが設けられており、該操作パネルには操作のためのスイッチ又はＬＥＤ表示器等が配されている。
【００３２】
また外部メモリ１１１，１１４は１個に限らず、少なくとも１個以上備えていればよく、メモリコントローラ（ＭＣ）１０７，１２０は、内蔵フォントにオプションフォントを加えるためのオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを複数接続できるように構成されていてもよい。さらに、プリンタ１５００が図示しないＮＶＲＡＭを有し、操作パネルからのプリンタモード設定情報を記憶するようにしてもよい。
【００３３】
また、本実施の形態では、プリンタ１５００がサポートするページ記述言語（以下、「ＰＤＬ」という）として、例えば、ＬＩＰＳというキヤノン社製の比較的高度なＰＤＬであると想定しているが、これに限るものではない。
【００３４】
本発明を実現するための印刷制御プログラム（以下、「プリンタドライバ」という）は外部メモリ１１１に記録されており、必要に応じてＲＡＭ１０２にロードされることにより、ＣＰＵ１０１によって実行される。さらに、本発明に係るプリンタドライバが用いる定義ファイル及び各種情報テーブルは外部メモリ１１１に格納されており、これらについての詳細な説明は後述する。
【００３５】
図２は、図１に示したクライアントＰＣ３０００からプリンタ１５００に印刷ジョブデータを送信する際の流れを概略的に示したシステムブロック図である。
【００３６】
クライアントＰＣ３０００におけるアプリケーションプログラム（以下、「アプリケーション」という）２０１、グラフィックエンジン２０２、プリンタドライバ２０３及びプリントサブシステム２０４は、それぞれ図１に示した外部メモリ１１１に保存されたファイル（プログラムモジュール）として存在し、各ファイルが実行される際には、ＯＳやそのモジュールを利用するモジュールによってＲＡＭ１０２にロードされ実行される。
【００３７】
なお、アプリケーション２０１及びプリンタドライバ２０３は、外部メモリ１１１のＦＤや不図示のＣＤ−ＲＯＭ又は後述するネットワーク３０１を経由して外部メモリ１１１のハードディスク（ＨＤ）に追加可能になっている。
【００３８】
外部メモリ１１１に保存されているアプリケーション２０１は、ＣＰＵ１０１によってＲＡＭ１０２にロードされて実行される。このアプリケーション２０１からプリンタ１５００に対して印刷を実行させるときには、同様にＣＰＵ１０１によってＲＡＭ１０２にロードされて実行されるグラフィックエンジン２０２を利用して出力（描画）を行う。
【００３９】
グラフィックエンジン２０２は、印刷装置毎に用意されたプリンタドライバ２０３を起動する。これにより、プリンタドライバ２０３は、ＣＰＵ１０１によって外部メモリ１１１からＲＡＭ１０２にロードされて実行される。グラフィックエンジン２０２は、このプリンタドライバ２０３を用いて、アプリケーション２０１の出力をＰＤＬによるプリンタ制御コマンドに変換する。プリンタドライバ２０３により変換されたプリンタ制御コマンドは、プリントサブシステム２０４及び不図示の通信Ｉ／ＦＣ１０８を介してプリンタ１５００に出力される。
【００４０】
このプリントサブシステム２０４は、ＯＳによって起動されて、ＣＰＵ１０１によって外部メモリ１１１からＲＡＭ１０２にロードされて実行されるものであり、印刷ジョブのスケジューリング、プリンタ１５００との接続制御やプリンタ１５００のステータスの管理を行っている。
【００４１】
プリンタドライバ２０３は、アプリケーション２０１から指示された印字や描画命令の出力に対してプリンタ制御コマンドを生成し、プリント出力に反映されるようプリンタ１５００に指示するだけでなく、プリンタドライバ２０３やプリンタ１５００本体が持つ機能を制御するための設定を行う機能（以下、「ユーザインタフェース」という）と、その設定を記憶する機能、プリンタドライバ２０３やプリンタ１５００本体が持つ能力をアプリケーションやＯＳに情報提供する機能、上記ユーザインタフェースで設定された機能がプリンタの有する機能である場合にプリンタ制御命令を生成する機能、および該ユーザインタフェースで設定された機能がプリンタドライバ独自で行う機能の場合にその機能を実現する機能等を有する。
【００４２】
図３は、図１に示した印刷システムの変形例を示す構成図である。
【００４３】
図３において、３０１はネットワークであり、３０２はローカルインターフェイスであり、複数のクライアントＰＣ３０００、１つのプリンタ１５００及び１つのプリントサーバ４０００がネットワーク３０１を介して接続されている。プリントサーバ４０００には、他のプリンタ１５００がローカルインターフェイス３０２を介して接続されている。
【００４４】
プリンタ１５００は、同図に示すように、セントロニクスやＵＳＢ等のローカルインタフェース３０２を介してプリントサーバ４０００と接続され、さらに該プリントサーバ４０００を介してネットワーク３０００に接続される形態であっても、ネットワーク３０１に直接接続される形態であってもよい。なお、ネットワーク３０１に直接接続されているプリンタ１５００の入力部１１８は、ネットワークインタフェースカード（ＮＩＣ）の機能を有するものとする。
【００４５】
プリントサーバ４０００を介してネットワーク３０１に接続されるプリンタ１５００に各クライアントＰＣ３０００から印刷ジョブを送信する場合、まず各クライアントＰＣ３０００は、図２のプリントサブシステム２０４を介して、プリントサーバコンピュータ４０００へ印刷ジョブを送信する。そして、プリントサーバ４０００は、各クライアントＰＣ３０００から送信されてきた印刷ジョブを、不図示のプリントサーバ４０００上のプリントサブシステムを介して、プリンタ１５００へ送信する。これにより、各クライアントＰＣ３０００は、プリントサーバコンピュータ４０００を介して印刷ジョブをプリンタ１５００へ送信することができる。
【００４６】
また、ネットワーク３０１に直接接続されるプリンタ１５００に各クライアントＰＣ３０００から印刷ジョブを送信する場合、各クライアントＰＣ３０００は、プリントサブシステム２０４を介して、ネットワーク３０１に直接接続されるプリンタ１５００へ印刷ジョブを送信する。
【００４７】
次に、図４のタイミングチャートを用いて、本発明を適用するのに好適なプリンタドライバの基本的な処理の流れについて説明する。
【００４８】
図４は、印刷を行う場合のアプリケーション２０１、グラフィックエンジン２０２及びプリンタドライバ２０３の基本的な処理の流れを示すステータス図であり、特に、図２に示したアプリケーション２０１、グラフィックエンジン２０２、プリンタドライバ２０３の処理に対応する。なお、図２と同一のものには同一の符号を付してある。
【００４９】
図２に示したように、アプリケーション２０１は、プリンタドライバ２０３と直接やり取りを行うのではなく、ＯＳの持つグラフィックスエンジン２０２を介して行うため、アプリケーション２０１自体は、実際にはグラフィックスエンジン２０２とやり取りを行う。グラフィックエンジン２０２はアプリケーション２０１から指示を受け、プリンタドライバ２０３に対して指示を行う。
【００５０】
まず、アプリケーション２０１は、片面／両面設定、ページ単位出力／部数単位出力設定や部数設定などの印刷のための設定をＲＡＭ１０２に確保されたメモリを介してグラフィックエンジン２０２に通知し、プリンタドライバ２０３は、グラフィックエンジン２０２より、その印刷設定とその印刷設定を元にプリンタドライバ２０３が印刷処理を行う上で必要な情報を格納する、新たにＲＡＭ１０２上に確保されたメモリ領域の初期化要求を受信する（ステップＳ４０１）。これにより、プリンタドライバ２０３は、そのプリンタドライバ２０３が印刷処理を行うために必要な情報（プリンタドライバ情報）を保持するメモリ領域を確保し、印刷設定に従ってそのメモリ領域を初期化する。
【００５１】
次いで、プリンタドライバ２０３は、プリンタドライバ２０３が上記メモリ領域を参照し、受信した初期化処理要求に応じて必要な処理を完了すると、ステップＳ４０１で受信した印刷設定に応じたプリンタドライバ２０３の印刷能力をグラフィックエンジン２０２に通知する。アプリケーション２０１は、グラフィックエンジン２０２より、最終的にプリンタ１５００に送信される印刷ジョブとその印刷ジョブに反映する印刷設定とを関連付けるために必要なハンドル値を取得する（ステップＳ４０２）。
【００５２】
次に、アプリケーション２０１が、印刷の開始要求をグラフィックエンジン２０２に通知すると、プリンタドライバ２０３は、グラフィックエンジン２０２より印刷開始要求を受信する（ステップＳ４０３）。これにより、プリンタドライバ２０３は、ＰＤＬの生成処理を開始し、まず、プリンタ１５００が印刷開始に必要なプリンタ命令を生成する。ただし、プリンタ１５００が印刷開始に必要なプリンタ命令を生成する処理は、最初のページ（１ページ目）の印刷処理が開始された時点（アプリケーションからの最初のページの描画指示を受信した時点）でもあっても良い。
【００５３】
さらに、アプリケーション２０１は、文字やイメージ等の描画オブジェクトの描画を実現するための描画指示をグラフィックエンジン２０２に対して通知する。プリンタドライバ２０３は、その描画指示をグラフィックエンジン２０２より受信する（ステップＳ４０４）。これにより、プリンタドライバ２０３は、指定された描画オブジェクトや改ページ、更には不図示の印刷設定を途中で変更するための要求などを反映したプリンタ制御命令を適宜生成し、プリンタ１５００へ出力する。なお、印刷するページ数はアプリケーション２０１からの指定に因る。
【００５４】
次に、アプリケーション２０１が、印刷の終了要求をグラフィックエンジン２０２に通知すると、プリンタドライバ２０３は、グラフィックエンジン２０２より印刷終了要求を受信する（ステップＳ４０５）。これにより、プリンタドライバ２０３は、プリンタ１５００が印刷終了に必要なプリンタ命令を生成し、ＰＤＬの生成処理を終了する。
【００５５】
最後に、アプリケーション２０１は、ステップＳ４０２で取得したハンドル値の破棄要求をグラフィックエンジン２０２に通知し、プリンタドライバ２０３は、グラフィックエンジン２０２より、プリンタドライバ２０３が印刷処理を行う上で必要な情報を格納するメモリ領域にある情報（プリンタドライバ情報）の破棄要求を受信する。これにより、プリンタドライバ２０３は、上記プリンタドライバ情報の破棄処理を行う（ステップＳ４０６）。
【００５６】
以上に示した、ステップＳ４０３〜Ｓ４０５の処理により、プリンタ１５００へ送信するための１つのジョブが生成されることになる。
【００５７】
本実施の形態の印刷システムは、図１及び図２で示すプリンタ１５００とホストクライアントＰＣ３０００からなる印刷システムに加えて、更にアプリケーション２０１からの印刷データを一旦中間コードデータでスプールする構成を有する。この印刷システムにおいては、一旦スプールした中間コードデータの内容に対して加工することができる。これによりアプリケーション２０１からの印刷データに対して、拡大縮小や、複数ページを１ページに縮小して印刷する等、アプリケーションの持たない機能を実現することができる。
【００５８】
図５は、グラフィックエンジン２０２からプリンタドライバ２０３へ印刷命令を送る際に、一旦中間コードからなるスプールファイル５０４を生成すべく、プリンタドライバ２０３が拡張されたシステム構成を示す図である。
【００５９】
図５のシステムでは、中間コードデータをスプールするように、図２のシステムと比べてシステムの拡張がなされている。
【００６０】
図５の拡張されたシステムでは、グラフィックエンジン２０２からの印刷命令であるＤＤＩ関数をディスパッチャ５０１が受け取る。ディスパッチャ５０１がグラフィックエンジン２０２から受け取った印刷命令（ＤＤＩ関数）が、アプリケーション２０１からグラフィックエンジン２０２へ発行された印刷命令（ＧＤＩ関数）に基づくものである場合には、ディスパッチャ５０１は外部メモリ１１１に格納されている内部スプール処理モジュールであるスプーラ５０３をＲＡＭ１０２にロードし、通常の印字データ作成処理５０７ではなくスプーラ５０３へ印刷命令（ＤＤＩ関数）を送付する。
【００６１】
スプーラ５０３は受け取った印刷命令を解析し、ページ単位に中間コードに変換してスプールファイル５０４に出力する。このページ単位に格納されている中間コードのスプールファイルをページ描画ファイル（ＰＤＦ：Page Description File）という。また、スプーラ５０３は、プリンタドライバ２０３に対して設定されている印刷データに関する加工設定（製本印刷、Ｎｕｐ、両面、ステイプル、カラー／モノクロ指定等）をプリンタドライバ２０３から取得してジョブ単位のファイルとしてスプールファイル５０４に保存する。
【００６２】
このとき、ジョブ単位で格納されている設定ファイルをジョブ設定ファイル（簡略してＳＤＦ：Spool Description Fileということもある）という。このジョブ設定ファイルについては後述する。なお、スプールファイル５０４は外部メモリ１１１上にファイルとして生成するが、ＲＡＭ１０２上に生成されても構わない。更にスプーラ５０３は、外部メモリ１１１に格納されているスプールファイルマネージャ５０５をＲＡＭ１０２にロードし、スプールファイルマネージャ５０５に対してスプールファイル５０４の生成状況を通知する。その後、スプールファイルマネージャ５０５は、スプールファイル５０４に保存された印刷データに関する加工設定の内容に従って印刷が実行できるか否かを判断する。
【００６３】
スプールファイルマネージャ５０５がグラフィックエンジン２０２を利用して印刷が実行できると判断した際には、外部メモリ１１１に格納されているデスプーラ５０６をＲＡＭ１０２にロードし、デスプーラ５０６に対して、スプールファイル５０４に記述された中間コードのページ描画ファイルの印刷処理を行うように指示する。
【００６４】
デスプーラ５０６はスプールファイル５０４に含まれる中間コードのページ描画ファイルをスプールファイル５０４に含まれる加工設定情報を含むジョブ設定ファイルに従って加工し、ＧＤＩ関数を再生成し、もう一度グラフィックエンジン２０２経由でＧＤＩ関数を出力する。
【００６５】
ディスパッチャ５０１がグラフィックエンジン２０２から受け取った印刷命令（ＤＤＩ関数）が、デスプーラ５０６からグラフィックエンジン２０２へ発行された印刷命令（ＧＤＩ関数）に基づいたものである場合には、ディスパッチャ５０１はスプーラ１１０３ではなく、プリンタドライバの通常の印字データ作成処理５０７に印刷命令を送る。プリンタドライバ２０３はグラフィックエンジン２０２から取得したＤＤＩ関数に基づいてＰＤＬ等からなるプリンタ制御コマンドを生成し、プリントサブシステム２０４経由でプリンタ１５００に出力する。
【００６６】
また、図５で示すシステムでは、スプールファイル５０４の内容に対して加工することができる。これによりアプリケーション２０１からの印刷データに対して、拡大縮小や、複数ページを１ページに縮小して印刷する等、アプリケーション２０１の持たない機能を実現することができる。なお、印刷データの加工を行うためには、プリンタドライバ２０３が提供するウインドウから設定を行い、プリンタドライバ２０３がその設定内容をＲＡＭ１０２上又は外部メモリ１１１上に保管する。
【００６７】
図１〜図５で説明したシステム構成を用いて、以下、クライアントＰＣ３０００が実行する具体的な処理について説明する。
【００６８】
図６は、図３の印刷システム全体の処理を示すフローチャートである。
【００６９】
まず、クライアントＰＣ３０００を起動後、クライアントＰＣ３０００のＣＰＵ１０１はプリントサーバ４０００に格納されているプリンタチケットを取得するか否かを判別する（ステップＳ１００１）。プリンタチケットとは、プリンタの使用制限について記載されたファイルであり、その内容は、使用可能なプリンタ、ユーザ、クライアントＰＣ名及び使用を制限する機能が記載されている。プリンタチケットの内容の詳細は後述する。プリンタチケットはプリントサーバ４０００で一元管理され、管理者によってプリンタチケットの内容の変更や修正が行われる。
【００７０】
上記ステップＳ１００１の判別は、ＣＰＵ１０１が外部メモリ１１１のレジストリ領域（以下、「レジストリ」という）にあるプリンタチケットを取得するか否かを決定するフラグを参照し、当該フラグがオンの場合はプリンタチケットの取得が行われる。
【００７１】
上記ステップＳ１００１の判別の結果、プリンタチケットの取得を行う場合は、クライアントＰＣ３０００からプリントサーバ４０００に対してネットワーク３０１を介してプリンタチケット取得のメッセージを送信して、クライアントＰＣ３０００はプリントサーバ４０００から最新のプリンタチケットを取得し、外部メモリ１１１に保存する（ステップＳ１００２）。ここではネットワーク経由でプリンタチケットを取得する方法を示したが、フロッピー（登録商標）ディスクやＣＤＲＯＭなどの記録媒体からの取得も可能である。
【００７２】
次いで、ＣＰＵ１０１が外部メモリ１１１に保存されたプリンタチケットファイルの読み込みを行い、プリンタチケットの情報をＲＡＭ１０２又はＲＯＭ１０３に記憶する（ステップＳ１００３）。プリンタチケットファイルの読み込み処理の詳細な内容については後述する（図１０）。
【００７３】
次に、ＣＰＵ１０１がＲＡＭ１０２又はＲＯＭ１０３に記憶されたプリンタチケットの制限情報に基づいて、クライアントＰＣ３０００で使用できるプリンタドライバの使用許可設定を行う（ステップＳ１００４）。このクライアントＰＣ３０００で使用できるプリンタドライバの使用許可又は使用不許可の設定を行う処理の詳細な内容については後述する（図１１）。
【００７４】
最後に、ＣＰＵ１０１がクライアントのＲＡＭ１０２又はＲＯＭ１０３に記憶されたプリンタチケットの制限情報に基づいて、ログインユーザが使用できるプリンタドライバの機能制限の設定を行う（ステップＳ１００５）。このプリンタドライバの機能制限の設定処理の詳細な内容については後述する（図１２）。
【００７５】
以上の印刷システム全体の処理では、図３の印刷システムの環境において、各クライアント３０００が起動時にプリンタチケットを取得するので、各クライアント３０００に対し、常に最新のプリンタ環境を反映することができる。即ち、各クライアント３０００が起動時にプリンタチケットを取得することで、各クライアント３０００は多様に変化する印刷環境に柔軟に対応することができる。
【００７６】
図７はプリンタチケットの概要を示す図である。図７の左側に記載されている数字は行番号を示し、プリンタチケットの内容を構成するものではない。図８及び図９についても同様である。
【００７７】
プリンタチケットは、ファイルの最初にタグ<PRINTTICKET>（５行目）、ファイルの最後にタグ</PRINTTICKET>（３５行目）を記載した形式をとり、ファイルの情報を示すヘッダ部１０００１（６行目〜１２行目）とプリンタの使用許可の判定を行うための条件を示す条件データ部１０００２（１４行目〜３４行目）とで構成される。
【００７８】
プリンタチケットヘッダ部１０００１は、プリンタチケットのフォーマットバージョン（FormatVersion）、ファイルバージョン（FileVersion）、ファイルサイズ（FileSize）、ファイル名（FileName）及び更新日（Update）から構成されている。
【００７９】
条件データ部１０００２は、印刷を許可又は許可しないプリンタ（ModelName）、ユーザ（User）、クライアントＰＣ（PC）、プリンタの機能（Feature）及び使用の制約をかける機能（RestricFeature）から構成される。
【００８０】
ここで、プリンタチケットのメンバ構造の形式を表１に示す。
【００８１】
【表１】
2006185157.tif 000003
【００８２】
プリンタチケットの形式を定義する表１のメンバは、プリンタドライバ又はプリンタドライバに同梱されるアプリケーションの内部で同じ形式が定義されている。プリンタドライバ又はプリンタドライバに同梱されるアプリケーションは、プリンタチケットを読み込む際、このメンバを基準としてプリンタチケットの情報を取得する。
【００８３】
本実施の形態では、表１に記載されたメンバのみを紹介するが、メンバの追加、そのメンバの読み込み、それにともないプリンタドライバ又はプリンタドライバに同梱されるアプリケーションの処理の追加なども実行される。
【００８４】
ヘッダ部１０００１のメンバは、タグ<PrintTicket.Header>（６行目）とタグ</PrintTicket.Header>（１２行目）の間に記述される。条件データ部１０００２のメンバは、タグ<PrintTicket.EnablePrinter>（１４行目）とタグ</PrintTicket.EnablePrinter>（３４行目）の間に記述される。
【００８５】
ヘッダ部１０００１、条件データ部１０００２の各メンバは必ずタグ<メンバ名>とタグ</メンバ名>で構成され、この間にデータを記述する。
【００８６】
ヘッダ部１０００１の７行目から１１行目に記載されている各メンバのタグ<メンバ名>とタグ</メンバ名>の間の「＊印」又は「YYYYMMDD」と記載されている部分にデータを指定する。条件データ部１０００２の１６行目から３１行目に記載されている各メンバのタグ<メンバ名>とタグ</メンバ名>の間の「・・・」にデータを入力する。ヘッダ部１０００１と条件データ部１０００２は表１に準じたアイテムを記載する。
【００８７】
次に、図７のプリンタチケットの条件データ部１０００２の説明を行う。
【００８８】
条件データ部１０００２は、タグ<PrintTicket.EnablePrinter>（１４行目）とタグ</PrintTicket.EnablePrinter>（３４行目）の間に、各種使用制限の有無及び制限をかけるプリンタグループの個数を示すConstraintsBaseタグ<MEMBERTAG fTag1="ENABLE又はDISABLE " NumTag2="アイテム個数">（１５行目）を１つ含み、このNumTag2で示したアイテムの個数分のタグ<EnabelePrinter>（１６行目）及びタグ</EnablePrinter>（３２行目）を含む。
【００８９】
プリンタグループに対し制限を行うアイテムがある場合、タグ<EnabelePrinter>（１６行目）とタグ</EnablePrinter>（３２行目）の間にプリンタチケットの条件データ部の各メンバ "ModelName"、 "User"、 "Feature"、 "RestricFeature"に対する制限内容を記述する。この制限内容も、ConstraintsBaseタグを用いて記述される。
【００９０】
ここで、ConstraintsBaseタグ内の「MEMBERTAG」、「fTag1」、「NumTag2」のネーミング規則は次の通りである。「MEMBERTAG」は任意の大文字の文字列であり、例えば、ENABLEPRINTER、MODELIST、USERLISTのように記載する。fTag1のTag1は任意の文字列で、Tag1に"f"を先頭につける。例えば、fEnablePrinter、fModelList、fUserのように記載する。NumTag2のTag2は任意の文字列で、Tag2に"Num"を先頭につける。例えば、NumPrinter、NumModel、NumUserのように記載する。
【００９１】
fTag1はENABLE又はDISABLEを指定し、NumTag2は条件データの各メンバが保持するアイテムの個数を指定する。
【００９２】
fTag1とNumTag2の値の指定によるメンバの解釈は表２の通りである。
【００９３】
【表２】
2006185157.tif 000004
【００９４】
図８は、プリンタチケットの一例を示す図である。
【００９５】
同図において、７行目から１１行目にはヘッダ部に必要な情報を記載し、１４行目から４３行目に制限を行うアイテムを記載する。１５行目のConstraintsBaseタグは、制限を行うプリンタグループを規定するConstraintsBaseタグであり、制限を行うプリンタグループが１つ存在することを意味する。
【００９６】
１７行目から２１行目では、制限を行うプリンタを指定する。１８行目のConstraintsBaseタグは、使用の制限を行うプリンタについてのCnstraintsBaseタグであり、使用を許可するプリンタが１つあることを示す。１９行目ではプリンタ（Printer1）を指定する。
【００９７】
２２行目から２８行目では使用制限を行うユーザを指定する。２３行目のConstraintsBaseタグは、使用を制限するユーザについてのConstraintsBaseタグで、使用を許可するユーザが３ユーザいることを示す。２４行目から２６行目では使用を許可するユーザ（Administrator、taro、hanako）を指定する。
【００９８】
２９行目から３２行目では、使用を制限するクライアントを指定する。３０行目のConstraintsBaseタグは、使用を制限するクライアントについてのConstraintsBaseタグで、ここでは全てのクライアントが使用可能であることを意味する。この場合、クライアント名を指定する必要はない。
【００９９】
３３行目から３６行目では使用許可又は不許可とするプリンタの機能を指定する。３４行目のタグは、使用の可否を制限するプリンタの機能についてのConstraintsBaseタグで、プリンタの全ての機能は使用可能であることを意味する。この場合、使用を許可又は不許可にするプリンタの機能を指定する必要はない。
【０１００】
３７行目から４０行目では使用制限を設けるプリンタの機能を指定する。３８行目のタグは、使用制限を行うプリンタの機能についてのConstraintsBaseタグで、ここでは全ての機能は使用可能（使用制限を行うプリンタの機能がない）ことを意味する。この場合、使用制限を行うプリンタの機能を記載する必要がない。
【０１０１】
図８では、このプリンタチケットを保存しているクライアントＰＣ３０００は、Printer1を３人のユーザだけ使用可能であることを意味する。プリンタの機能についての制限や、クライアントＰＣによる制限はない。
【０１０２】
図９は、プリンタチケットの他の一例を示す図である。
【０１０３】
図９では、クライアントＰＣ３０００にインストールされているプリンタドライバに対し、制限をかけるグループがＧｒｏｕｐ１（図中の符号１０００３）とＧｒｏｕｐ２（図中の符号１０００４）の２種類存在する。このプリンタチケットを保持するクライアントは、Ｇｒｏｕｐ１において、Printer１は３人のユーザがClient-0001〜0004のクライアントＰＣから使用可能で、Printer１の全ての機能が使用できる。そして、Ｇｒｏｕｐ２では、Printer２とPrinter３は２人のユーザがClient-0001〜0002のクライアントＰＣから使用可能で、Printer２とPrinter３の中とじ機能（SaddleStitch）、ステイプル機能（Staple）、Ｚ折り機能（Z-fold）、パンチ穴あけ機能（HolePunch）が使用できない。ページのレイアウト（Layout）は用紙１枚に対し２ページ（2PagePerSheet）、４ページ（4PagePerSheet）、６ページ（6PagePerSheet）の指定しかできない。印刷方法（Duplex）は両面印刷（2SidePrint）のみで固定である。
【０１０４】
図１０は、図６のステップＳ１００３におけるプリンタチケットの読み込み処理を実行するためのフローチャートである。本処理は主としてＣＰＵ１０１が実行する。
【０１０５】
まず、プリンタチケットの読み込みで用いる３つのフラグの初期化を実行する（ステップＳ２００１）。これらのフラグは、プリンタチケットの余計な読み込みを避けるために用いられるフラグである。具体的には、bPrintTicketフラグ、bRegPTDataフラグ、bCompareフラグがあり、bPrintTicketフラグは「１」のときに、プリンタチケットの情報の取得が完了したことを表し、bRegPTDataフラグは「１」のときに、レジストリに前回使用したプリンタチケットの情報があることを表し、bCompareフラグは「１」のときに、レジストリにある前回使用したプリンタチケットの情報と今回読み込んだプリンタチケットの情報が同一であることを表す。
【０１０６】
次いで、前回使用したプリンタチケットの情報がクライアント３０００のレジストリに存在するか否かを判別する（ステップＳ２００２）。レジストリに前回使用したプリンタチケットの情報がある場合には、その情報をＲＡＭ１０２又はＲＯＭ１０３に読み込み（ステップＳ２００３）、bRegPTDataフラグに１を設定する（ステップＳ２００４）。
【０１０７】
次に、クライアント３０００の外部メモリ１１１にプリンタチケットのファイルが存在するか否かの判別を行う（ステップＳ２００５）。プリンタチケットのファイルがない場合には、プリンタチケットの読み込みを実行せずに、本処理を終了する。一方、プリンタチケットのファイルが存在する場合は、プリンタチケットのヘッダ情報を読み込む（ステップＳ２００６）。
【０１０８】
次いで、レジストリに前回使用したプリンタチケットの情報があるか否か、即ち、bRegPTDataフラグが「１」であるか否かを判別し（ステップＳ２００７）、レジストリに前回使用したプリンタチケットの情報がない場合には、プリンタチケットの条件データ部を読み込み（ステップＳ２０１１）、bPrintTicketフラグを「１」に設定し（ステップＳ２０１２）、本処理を終了する。
【０１０９】
ステップＳ２００７において、レジストリに前回使用したプリンタチケットの情報がある場合には、レジストリにある前回使用したプリンタチケットのヘッダ情報が新たにステップＳ２００６で読み込んだプリンタチケットのヘッダ情報と同一であるか否かを判別する（ステップＳ２００８）。ヘッダ情報の比較は、プリンタチケットのヘッダ部のメンバであるファイルバージョン（FileVersion）、ファイルサイズ（FileSize）、ファイル名（FileName）、更新日（Update）のそれぞれについて相違がないか比較を行う。ステップＳ２００８において、ヘッダ情報同士が同一でない場合には、上記ステップＳ２０１１に進む。一方、ヘッダ情報同士が同一である場合には、プリンタチケットの読み込みは行わず、レジストリに格納されているプリンタチケットの条件データ部を読み込み（ステップＳ２００９）、bCompareフラグを「１」に設定し（ステップＳ２０１０）、bPrintTicketフラグに「１」を設定して（ステップＳ２０１２）、本処理を終了する。
【０１１０】
図１１は、レジストリから読み込まれたプリンタチケットの情報に基づいて、クライアントＰＣ３０００にインストールされているプリンタドライバの使用許可又は使用不許可を設定するためのフローチャートである。本処理は主としてＣＰＵ１０１が実行する。
【０１１１】
まず、プリンタチケットの情報の取得が完了したか（bPrintTicketフラグ＝１？）、即ち、プリンタチケットの情報の読み込みが図６のステップＳ１００３で行われたか否かを判別する（ステップＳ３００１）。
【０１１２】
この判別の結果、プリンタチケットの読み込みが行われていない場合には、クライアントＰＣ３０００に対してプリンタドライバの使用制限は行わず、前回使用したプリンタチケットの情報がレジストリに存在するか否かを判別する（bRegPTDataフラグ＝１？）（ステップＳ３０１０）。前回使用したプリンタチケットの情報がレジストリに存在する場合には、レジストリにあるプリンタチケットの情報を削除し（ステップＳ３０１１）、本処理を終了する一方、前回使用したプリンタチケットの情報がレジストリに存在しない場合には、ステップＳ３０１１の処理をスキップし、本処理を終了する。
【０１１３】
上記ステップＳ３００１の判別の結果、プリンタチケットの読み込みが行われていた場合には、クライアントＰＣ３０００にインストールされている全てのプリンタドライバを取得する（ステップＳ３００２）。
【０１１４】
ステップＳ３００３〜ステップＳ３００５の処理は、ステップＳ３００２で取得したプリンタドライバに対して、プリンタチケットに挙げられている使用許可があるか否かを判別する処理である。
【０１１５】
具体的には、取得したプリンタドライバが、使用が許可されているプリンタに対応するものであるか否か（ステップＳ３００３）、ログインユーザに対して使用許可があるか否か（ステップＳ３００４）、及び使用しているＰＣに対して使用許可があるか否か（ステップＳ３００５）を判別する。ステップＳ３００３〜ステップＳ３００５のいずれか１つでも条件を満たしていない場合、ログインユーザに対するプリンタドライバの使用不許可の情報を外部メモリ１１１のレジストリに書き込み、設定する（ステップＳ３００６）。
【０１１６】
ステップＳ３００３〜ステップＳ３００５の全ての条件を満たす場合、取得した全プリンタドライバに対してステップＳ３００３〜ステップＳ３００５の処理が終了したか否かを判別し（ステップＳ３００７）、処理が終了していない場合には、ステップＳ３００３に戻る一方、処理が終了した場合には、レジストリにある前回使用したプリンタチケットの情報と今回読み込んだプリンタチケットの情報が異なるか否か（bCompareフラグ＝０）を判別し（ステップＳ３００８）、異なる場合に、プリンタチケットの情報をレジストリに保存し（ステップＳ３００９）、本処理を終了する。同一の場合には、プリンタチケットの情報をレジストリに保存せずに、本処理を終了する。
【０１１７】
以上の処理が終了すると、プリンタチケットに基づいて設定されるプリンタドライバの設定情報（即ち、使用許可又は使用不許可の情報）がレジストリに書き込まれ、保持される。
【０１１８】
尚、上記ステップＳ３００４〜Ｓ３００６の処理は、プリンタチケットの各メンバで指定されているConstraintsBaseタグのfTag1がENABLEの場合であり、DISABLEの場合は各ステップにおける判定条件が反転する。
【０１１９】
図１２は、プリンタチケットの条件データ部にある情報に基づいてプリンタドライバの機能制限を行う処理を示すフローチャートである。本処理は主としてＣＰＵ１０１が実行する。
【０１２０】
まず、プリンタチケットの情報の取得が完了したか（bPrintTicketフラグ＝１？）、即ち、プリンタチケットの情報の読み込みが図６のステップＳ１００３で行われたか否かを判別する（ステップＳ４００１）。プリンタチケットの情報の読み込みが行われていない場合、プリンタドライバの機能制限は行わずに本処理を終了する。プリンタチケットの情報の読み込みが行われている場合、図６のステップＳ１００４で設定された使用が許可されているプリンタドライバ（即ち、使用可能なプリンタドライバ）の一覧と、プリンタドライバの機能についてレジストリに記憶されている設定情報を取得する（ステップＳ４００２）。
【０１２１】
ステップＳ４００３〜ステップＳ４００６の処理は、使用可能な全プリンタドライバに対して、機能の使用制限を行うため、プリンタドライバ毎に実行される。
【０１２２】
具体的には、まず、プリンタチケットの条件データ部のFeatureを参照し、使用許可又は不許可にする機能があるか否かを判別する（ステップＳ４００３）。使用許可又は不許可にする機能がある場合には、その機能について設定を行う（ステップＳ４００４）。この設定は、ステップＳ４００２で取得したレジストリに記憶されているプリンタドライバの設定情報に対して行う。使用許可又は不許可にする機能がない場合には、後述するステップＳ４００５に進む。
【０１２３】
次いで、プリンタチケットの条件データ部のRestricFeatureを参照して、使用制限を行う機能があるか否かを判別する（ステップＳ４００５）。使用制限を行う機能がある場合には、使用制限がかけられている機能について制限を設定する（ステップＳ４００６）。設定は、ステップＳ４００２で取得したレジストリに記憶されているプリンタドライバの設定情報に対して行う。使用制限を行う機能がない場合には、ステップＳ４００７に進む。
【０１２４】
最後に、全ての使用可能なプリンタドライバに対し、機能制限に係る設定が終了したか否かを判別し（ステップＳ４００７）、終了していない場合には、ステップＳ４００３に戻る一方、終了した場合には、本処理を終了する。
【０１２５】
ここで、外部メモリ１１１にプリンタチケットが存在せず、各クライアント３０００が起動時にプリンタチケットを取得できない場合には、ＣＰＵ１０１はプリンタチケットに基づいて設定されるプリンタドライバの設定情報（即ち、プリンタドライバの使用許可設定の情報やプリンタドライバの機能制限の設定情報）を無効にする。これにより、レジストリで使用が許可されていないプリンタや使用が制限されている機能についても、使用が可能になる。例えば、社内のコンピュータを自宅に持ち帰って利用するときに、レジストリに記憶されているプリンタの設定情報が自宅では反映できないので、プリンタドライバの設定情報を無効にできないと、自宅のプリンタが一切利用できないという状況が生じ得るが、プリンタドライバの設定情報を無効にできるため、このような状況を回避することができる。
【０１２６】
図１３は、アプリケーション２０１から印刷指示をする場合に、クライアントＰＣ３０００が実行する処理を示すフローチャートである。
【０１２７】
図６のステップＳ１００４で使用可能なプリンタドライバが１つも設定されない場合、アプリケーション２０１から印刷をユーザが選択しても、アプリケーション２０１の動作として、印刷処理を行うためのダイアログの表示がされない。そのため、使用可能なプリンタドライバが１つも設定されていない場合は、図１３に示すフローの前段で、アプリケーション２０１が印刷処理自体を制限するため、印刷を実行することができない。
【０１２８】
図１３に示す処理は、図６のステップＳ１００４で使用可能なプリンタドライバが１つ以上設定されている場合に実行される。
【０１２９】
まず、アプリケーション２０１から印刷を実行する場合、ユーザが印刷データに対して印刷設定を行うか否かを判別する（ステップＳ５００１）。印刷設定とは、アプリケーション２０１から印刷を行うためのダイアログが表示されたときに、そのダイアログ上にアプリケーション２０１が準備する印刷の詳細設定を行うためのコントロールが押されたことを意味する。このコントロールとして表示される名称は「プロパティ」や「プリンタの設定」などアプリケーションによって異なる。
【０１３０】
ステップＳ５００１でユーザが印刷設定を行わずに印刷をする場合は、通常使うプリンタを選択し、プリンタドライバの機能は初期値の設定で印刷を行う（ステップＳ５００３）。
【０１３１】
ステップＳ５００１でユーザが印刷設定を行う場合は、使用可能なプリンタドライバの全機能を表示する擬似ユーザインタフェースをＣＲＴ１１０に表示し、ユーザに希望する印刷機能を選択させる。選択された機能をもとに最適なプリンタドライバに対応するプリンタを自動選択する（ステップＳ５００２）。
【０１３２】
次いで、ステップＳ５００２やＳ５００３で選択されたプリンタに対し、他のプリンタを選択するために印刷設定を再度行うか否かを判別する（ステップＳ５００４）。この処理は、アプリケーション２０１が準備する印刷の詳細設定をおこなうためのコントロールをユーザが選択するか否かに基づいて実行される。このコントロールが選択された場合、再度ステップＳ５００２の処理を実行される。
【０１３３】
ステップＳ５００４において、印刷設定を再度行わないと判別された場合は、アプリケーション２０１が表示する印刷を行うためのダイアログ上で印刷実行ボタンが押下されたか否かを判別する（ステップＳ５００５）。印刷実行ボタンが所定時間内に押下されない場合は、印刷を行わずに、本処理を終了する。一方、印刷実行ボタンが押下された場合は、印刷を実行し（ステップＳ５００６）、本処理を終了する。
【０１３４】
図１４は、使用可能なプリンタドライバの全機能を表示する擬似ユーザインタフェースを表示する処理及びユーザが選択した機能から最適なプリンタドライバに対応するプリンタを選択する処理を示すフローチャートである。本処理は主としてＣＰＵ１０１が実行する。
【０１３５】
まず、使用が許可されているプリンタドライバの一覧とレジストリに保存されている各プリンタドライバの設定情報を取得する（ステップＳ６００１）。
【０１３６】
ステップＳ６００１で取得したプリンタドライバの設定情報をもとに、プリンタドライバのユーザインタフェースに表示される機能の一覧を作成する（ステップＳ６００２）。機能一覧の作成は、各プリンタドライバの情報が保存されているレジストリのＤＥＶＭＯＤＥを参照し、使用可能な機能の一覧を作成する。レジストリの各プリンタドライバのＤＥＶＭＯＤＥには、プリンタドライバで使用できる機能と使用できない機能が既に設定されている。ステップＳ６００２では、ステップＳ１００５で設定された使用制限のかけられた機能について加味される。使用が禁止されている機能や使用が制限されている機能の項目については、ユーザインターフェース（ＵＩ）上には表示しない。例えば、ステイプルできるプリンタがあるが、プリンタチケット内ですべてのプリンタでステイプルが使用できない制約がかけられていた場合、統合ＵＩ上にはステイプルのコントロールは表示しない。またプリンタドライバの機能の項目に制限がかけられているケースでは、制限がかけられている項目は表示されない。例えば、N-up印刷（N page/Sheet：１枚の物理用紙に論理ページを何ページ印刷するかを指定する機能）において、プリンタチケット内で２upと４upしか認められていない場合、他の項目１up、６up、８up及び１６upは統合ＵＩ上には表示されない。
【０１３７】
ステップＳ６００２で作成した使用可能な機能一覧からプリンタドライバの全機能を表示するＵＩを作成し、表示する（ステップＳ６００３）。ユーザはこのユーザインタフェースから印刷設定を行う。
【０１３８】
ステップＳ６００３のプリンタドライバの全機能を表示するＵＩを介したユーザの入力に応じて、印刷機能の選択、即ち印刷設定を行う（ステップＳ６００４）。
【０１３９】
ユーザが一通り設定を終えた後、ＵＩを閉じる指示が入力されると、ＵＩを閉じる（ステップＳ６００５）。
【０１４０】
次に、ユーザが選択した機能の全てを印刷に反映できるプリンタドライバがある否かを判別する（ステップＳ６００６）。ユーザが選択した機能の全てを印刷に反映できるプリンタドライバがある場合は、そのプリンタドライバに対応するプリンタを印刷で使用するプリンタとして決定し（ステップＳ６００７）、本処理を終了する。
【０１４１】
一方、ステップＳ６００６において、ユーザが選択した機能の全てを印刷に反映できるプリンタドライバがない場合には、使用可能なプリンタドライバの機能とユーザが選択した機能とを比較し、両者の機能の一致度の計算を行う（ステップＳ６００８）。両者の機能の一致度の計算は、ユーザが設定した機能と使用可能なプリンタドライバが有している機能とを比較し、機能の一致した数が多いものから高い優先度をつけていく。
【０１４２】
そして、優先度の一番高いプリンタドライバに対応するプリンタを印刷を行うプリンタの候補として選択する（ステップＳ６００９）。
【０１４３】
ステップＳ６００９で選択されたプリンタで印刷を行うか否かのメッセージをＣＲＴ１１０に表示し、ユーザからの入力に応じて、ステップＳ６００９で選択されたプリンタで印刷を行うか否かを判別する（ステップＳ６０１０）。上記メッセージでは、ステップＳ６００９で選択されたプリンタで印刷を行うことについて、「はい」及び「いいえ」のボタンが表示される。
【０１４４】
ステップＳ６０１０において、選択されたプリンタで印刷を行う（即ち「はい」ボタンが押下された）場合は、そのプリンタを印刷するためのプリンタとして決定し（ステップＳ６００７）、本処理を終了する。
【０１４５】
ステップＳ６０１０において、選択されたプリンタで印刷を行わない（即ち「いいえ」ボタンが押下された）場合は、次の候補のプリンタがあるか否かを判別する（ステップＳ６０１１）。
【０１４６】
次の候補のプリンタがある場合には、次に優先度の高いプリンタを候補として選択し（ステップＳ６０１２）、ステップＳ６０１０に戻る。一方、ステップＳ６０１１において、次の候補のプリンタがない場合には、印刷可能なプリンタがない旨のメッセージをＣＲＴ１１０に表示し（ステップＳ６０１３）、通常使うプリンタを選択し、その旨のメッセージをＣＲＴ１１０に表示して（ステップＳ６０１４）、本処理を終了する。
【０１４７】
図１５は、図３の印刷システム全体の処理を示すフローチャートであり、図６の変形例である。
【０１４８】
図１５では、図６で説明した処理に、ステップＳ１００６の仮想プリンタ生成処理が追加されている。図６との違いであるステップＳ１００６について以下に説明する。
【０１４９】
ステップＳ１００６では、仮想プリンタに対する仮想プリンタドライバの生成処理を行う。
【０１５０】
ステップＳ１００６の処理の開始時には、それまで存在している仮想プリンタドライバの削除を行い、新規に仮想プリンタドライバを生成する。この処理は、プリンタドライバのインストール処理であって、このときに使用可能なプリンタドライバのＤＥＶＭＯＤＥ（プリンタ機能情報）の情報を全て収集して統合し、新たなＤＥＶＭＯＤＥを生成する。      
【０１５１】
また、本処理においては、生成した仮想プリンタドライバをデフォルトプリンタ（通常使うプリンタ）として設定する。図１６は、アプリケーション２０１から印刷を行う場合のダイアログの表示例を示し、仮想プリンタ（Virtual Printer）がデフォルトプリンタとして選択されている。
【０１５２】
また、ステップＳ１００６で仮想プリンタドライバの生成が行われた場合には、図１４のステップＳ６００１及びステップＳ６００２の処理が不要となり、図１４の処理を開始するために、アプリケーション２０１が提供する印刷画面において、ユーザから印刷の設定を行うための詳細設定表示の指示があった場合に、アプリケーション２０１の提供する印刷画面で指定されているプリンタに対応するプリンタドライバが仮想プリンタドライバであるか否かを判別し、仮想プリンタドライバが指定されている場合には、外部メモリ１１１に格納されている仮想プリンタドライバ用のプロパティシートを用いて詳細設定用の設定画面を生成する。仮想プリンタドライバが指定されていない場合には、通常のプロパティシートでの詳細設定画面を生成する。図１７（Ａ）は、仮想プリンタドライバ用のプロパティシートを用いて生成された詳細設定用の設定画面の一例を示し、図１７（Ｂ）は、通常のプロパティシートを用いて生成された詳細設定用の設定画面の一例を示す。図１７（Ａ）に示すように、仮想プリンタ（Virtual Printer）では、N-up印刷に関し使用制限がかけられて、２up、４up、６upのみが認められている。
【０１５３】
以上詳細に説明したように、本実施の形態によれば、ＣＰＵ１０１がネットワーク上の所定の位置（例えば、プリントサーバ４０００）に存在するプリンタチケットを取得し、該取得したプリンタチケットに基づいて、プリンタドライバを使用可能又は使用不可能にするための設定をレジストリに保持させるので、クライアント３０００の起動時には、レジストリが更新され、常に最新のプリンタ環境を反映することができる。結果として、クライアント３０００の起動時には、自動的に使用可能なプリンタが決まり、印刷開始を指示する前に、使用可能なプリンタのみをユーザに認識させることができる。
【０１５４】
また、プリンタチケットに基づいて、プリンタドライバの機能を使用可能又は使用不可能にするための設定や、使用可能なプリンタドライバの機能に対する制限の設定をレジストリに保持させるので、印刷開始を指示する前に、使用可能なプリンタの機能のみをユーザに認識させることができる。
【０１５５】
特に、ユーザ単位、クライアントコンピュータ単位、プリンタ単位でプリンタ使用の制御処理を行い、自動でプリンタの使用許可設定が可能になるので、プリンタ使用に関する管理が容易にできる。またプリンタの機能単位で制限もおこなえるため、印刷枚数の制限や、用紙１枚に出力するページ数の制限、モノクロ印刷に固定など、コスト削減が図ることができる。
【０１５６】
また、レジストリに使用可能と設定されている複数のプリンタドライバの機能を統合して、新たに統合されたプリンタドライバの機能が一覧表示され、一覧表示されたプリンタドライバの機能の選択指示が入力されたときに、該入力された選択指示に係るプリンタドライバの機能の全てを印刷に反映できるプリンタドライバがあるか否かが判別され、該入力された選択指示に係るプリンタドライバの機能の全てを印刷に反映できるプリンタドライバがないと判別されたときに、該入力された選択指示に係るプリンタドライバの機能とレジストリに使用可能と設定されている複数のプリンタドライバの機能との一致度が算出され、一致する機能数が最も多いプリンタドライバに対応するプリンタが印刷を行うプリンタとして選択されるので、ユーザの要望に沿ったプリンタの自動選択を実行することができ、プリンタ選択におけるユーザの煩わしさが軽減できる。
【０１５７】
また、複数のプリンタドライバの機能を統合して該機能を表示させるユーザインターフェースでは、使用が許可されているプリンタドライバ、使用できるプリンタドライバに課せられた使用禁止機能、及び使用可能なプリンタドライバに課せられた使用制限された機能の少なくとも１つが加味されたユーザインタフェースであるため、ユーザに禁止項目を意識することなく、プリンタの設定を行うことが可能である。これにより、ユーザの印刷設定を円滑におこなわせることができる。
【０１５８】
なお、本発明の実施の形態の機能が実行されるものであれば、単体の機器であっても、複数の機器からなるシステムであっても、ＬＡＮ，ＷＡＮ等のネットワークを介して接続がなされ処理が行われるシステムであっても本発明を適用できる。即ち、該実施の形態で接続される各種端末の構成は一例であり、用途や目的に応じて様々な構成例があることは言うまでもない。
【０１５９】
また、本発明の目的は、実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出して実行することによっても達成される。
【０１６０】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１６１】
又、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【０１６２】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１６３】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【図面の簡単な説明】
【０１６４】
【図１】本発明の実施の形態に係る印刷制御装置が適用される印刷システムの構成を示すブロック図である。
【図２】図１に示したクライアントＰＣ３０００からプリンタ１５００に印刷ジョブデータを送信する際の流れを概略的に示したシステムブロック図である。
【図３】図１に示した印刷システムの変形例を示す構成図である。
【図４】印刷を行う場合のアプリケーション２０１、グラフィックエンジン２０２及びプリンタドライバ２０３の基本的な処理の流れを示すステータス図である。
【図５】グラフィックエンジン２０２からプリンタドライバ２０３へ印刷命令を送る際に、一旦中間コードからなるスプールファイル５０４を生成すべく、プリンタドライバ２０３が拡張されたシステム構成を示す図である。
【図６】図３の印刷システム全体の処理を示すフローチャートである。
【図７】プリンタチケットの概要を示す図である。
【図８】プリンタチケットの一例を示す図である。
【図９】プリンタチケットの他の一例を示す図である。
【図１０】図６のステップＳ１００３におけるプリンタチケットの読み込み処理を実行するためのフローチャートである。
【図１１】レジストリから読み込まれたプリンタチケットの情報に基づいて、クライアントＰＣ３０００にインストールされているプリンタドライバの使用許可又は使用不許可を設定するためのフローチャートである。
【図１２】プリンタチケットの条件データ部にある情報に基づいてプリンタドライバの機能制限を行う処理を示すフローチャートである。
【図１３】アプリケーション２０１から印刷指示をする場合に、クライアントＰＣ３０００が実行する処理を示すフローチャートである。
【図１４】使用可能なプリンタドライバの全機能を表示する擬似ユーザインタフェースを表示する処理及びユーザが選択した機能から最適なプリンタドライバに対応するプリンタを選択する処理を示すフローチャートである。
【図１５】図３の印刷システム全体の処理を示すフローチャートであり、図６の変形例である。
【図１６】アプリケーション２０１から印刷を行う場合のダイアログの表示例を示す図である。
【図１７】（Ａ）は、仮想プリンタドライバ用のプロパティシートを用いて生成された詳細設定用の設定画面の一例を示す図であり、図１７（Ｂ）は、通常のプロパティシートを用いて生成された詳細設定用の設定画面の一例を示す図である。
【符号の説明】
【０１６５】
１０１  ＣＰＵ
１０２  ＲＡＭ
１０３  ＲＯＭ
１０４  システムバス
１０５  入力コントローラ
１０６  ビデオコントローラ
１０７  メモリコントローラ
１０８  通信Ｉ／Ｆコントローラ
１０９  キーボード
１１０  ＣＲＴ
１１１  外部メモリ（ＨＤ、ＦＤ）
１５００  プリンタ
１５０１  操作部
３０００  クライアントコンピュータ
４０００  プリントサーバ
【図１】
2006185157.tif 000005
【図２】
2006185157.tif 000006
【図３】
2006185157.tif 000007
【図４】
2006185157.tif 000008
【図５】
2006185157.tif 000009
【図６】
2006185157.tif 000010
【図７】
2006185157.tif 000011
【図８】
2006185157.tif 000012
【図９】
2006185157.tif 000013
【図１０】
2006185157.tif 000014
【図１１】
2006185157.tif 000015
【図１２】
2006185157.tif 000016
【図１３】
2006185157.tif 000017
【図１４】
2006185157.tif 000018
【図１５】
2006185157.tif 000019
【図１６】
2006185157.tif 000020
【図１７】
2006185157.tif 000021