(57)【要約】【課題】  禁則ルールの元、所望の指示した印刷設定を固定化する。【解決手段】  印刷装置の一例であるプリンタ２１４に対して送信して印刷させるデータを生成するプリンタドライバにおける印刷設定を処理するコンピュータを開示した。そして、外部記憶装置に、印刷設定の禁則を定義した禁則ルールを記憶する。そして、プリンタドライバのユーザインタフェースやＸＭＬファイルを用いて、印刷設定の固定化を指示する。さらに、コンフィギュレーションモジュールは、固定化を指示された印刷設定に関わる禁則ルールの優先度を従前の優先度よりも上げる。これは、ルール優先度設定の一例である。【選択図】  図５
2010040002.tif 000002
【特許請求の範囲】
【請求項１】
印刷装置に対して送信して印刷させるデータを生成するプリンタドライバにおける印刷設定を処理する情報処理装置において、
印刷設定の競合を禁止する禁則を定義した禁則ルールを記憶する記憶手段と、
印刷設定の固定化を指示する指示手段と、
前記固定化を指示された印刷設定に関わる禁則ルールの優先度を従前の優先度よりも上げて設定するルール優先度設定手段と、
を備える情報処理装置。
【請求項２】
印刷設定の値をオブジェクトとして格納する手段と、
禁則処理ルールを元にしてオブジェクトの値を変更する手段と、
優先度順に禁則処理ルールを評価する手段と、
前記固定化を指示された印刷設定は、ユーザインタフェースからの入力または禁則処理ルールの実行により変更されないようにする手段と、
を備える請求項１に記載の情報処理装置。
【請求項３】
値を固定化指示したオブジェクトに対して値を変更するような禁則処理ルールを処理するときは、変更する原因となったオブジェクトの値をプリンタドライバのユーザインタフェースから選択できない状態にする手段を有する請求項１に記載の情報処理装置。
【請求項４】
前記指示手段は、プリンタドライバのユーザインタフェース画面を介して印刷設定の固定化を指示する請求項１に記載の情報処理装置。
【請求項５】
前記指示手段により固定化を指示された印刷設定が識別可能に表示される請求項１に記載の情報処理装置。
【請求項６】
両面、２Ｕｐ、モノクロ、プリンタメモリへの保存、親展印刷、ユーザ名又は日時の印刷、の印刷設定のうち、少なくともひとつを前記指示手段は固定化指示できる請求項１に記載の情報処理装置。
【請求項７】
印刷装置に対して送信して印刷させるデータを生成するプリンタドライバにおける印刷設定を処理する情報処理装置における方法において、
印刷設定の競合を禁止する禁則を定義した禁則ルールを記憶する記憶工程と、
印刷設定の固定化を指示する指示工程と、
前記固定化を指示された印刷設定に関わる禁則ルールの優先度を従前の優先度よりも上げて設定するルール優先度設定工程と、
を備える情報処理方法。
【請求項８】
印刷設定の値をオブジェクトとして格納する工程と、
禁則処理ルールを元にしてオブジェクトの値を変更する工程と、
優先度順に禁則処理ルールを評価する工程と、
前記固定化を指示された印刷設定は、ユーザインタフェースからの入力または禁則処理ルールの実行により変更されないようにする工程と、
を備える請求項７に記載の情報処理方法。
【請求項９】
値を固定化指示したオブジェクトに対して値を変更するような禁則処理ルールを処理するときは、変更する原因となったオブジェクトの値をプリンタドライバのユーザインタフェースから選択できない状態にする工程を有する請求項７に記載の情報処理方法。
【請求項１０】
前記指示工程は、プリンタドライバのユーザインタフェース画面を介して印刷設定の固定化を指示する請求項７に記載の情報処理方法。
【請求項１１】
前記指示工程により固定化を指示された印刷設定が識別可能に表示される請求項７に記載の情報処理方法。
【請求項１２】
両面、２Ｕｐ、モノクロ、プリンタメモリへの保存、親展印刷、ユーザ名又は日時の印刷、の印刷設定のうち、少なくともひとつを前記指示工程は固定化指示できる請求項７に記載の情報処理方法。
【請求項１３】
請求項７乃至１２のいずれか１項に記載の方法をコンピュータに実行させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリンタドライバを含む印刷制御プログラムに関するものである。
【背景技術】
【０００２】
情報処理装置の一例であるコンピュータ上で作成された文書や図といったファイルをアプリケーションから印刷する際には、プリンタドライバを使って描画データをプリンタ言語に変換しプリンタに送信することが行われる。用紙の種類や両面、カラー、給紙段といった設定は、アプリケーションもしくはプリンタドライバが提供するユーザインタフェースの印刷設定で、ユーザが設定したデータをプリンタコマンドとしてプリンタに送信する。
【０００３】
プリンタドライバが持つ機能は年々増加する一方である。また、数百個の機能を持つプリンタドライバも少なくない。また、プリンタドライバの印刷設定を行うユーザインタフェースは、ユーザインタフェースからボタンを押して、さらに開くダイアログウィンドウが複数存在する。よって、これらのウィンドウのどこで所望の設定ができるのか迷うユーザも多い。そこでプリンタドライバは、ユーザのために機能の禁則処理（コンフリクト処理）を持っている。機能の禁則処理とは、ある機能を選択したときに、他の機能が使えなくなったり、他の設定値が変更されることを指す。たとえば多くのプリンタドライバでは、「はがき」と「ステイプル」を同時に設定することはできない。このとき、「はがき」を選択すると、プリンタドライバのユーザインタフェース上の「ステイプル」項目はグレーアウトしたり（特許文献１）する。また、設定することが出来ない項目の表示が隠れて選択することができなくなったり、その項目が選択できないという意味のアイコンを表示したりする（特許文献２）。また、設定することが出来ない項目についての警告としてメッセージが表示されたり（特許文献３）する。
【０００４】
また、プリンタドライバの禁則処理はユーザインタフェース上の表示だけではない。アプリケーションソフトウェアによっても印刷設定は変更することができる。しかし、アプリケーションからの禁則状態にある設定がそのままプリンタドライバに渡される場合がある。この場合、プリンタドライバがその設定をプリンタコマンドに変換してしまうと、プリンタでエラーになってしまう。そこでプリンタドライバは、印刷する際にも機能の禁則処理を行い、印刷設定を変更して印刷可能な値にしている。
【０００５】
一方で、セキュリティ意識の高まりやコストの削減などから、印刷設定の特定機能を固定したいという要求がある。たとえば、カラー機のプリンタでモノクロ印刷固定にすれば、印刷にかかるトナーやインクのコストを削減できる。また、１つのページに２ページ分を縮小して印刷する２Ｕｐ印刷や、両面印刷を固定にすると、用紙が節約できる。
【０００６】
しかし、値を固定する機能は、禁則処理とは相容れないことが多い。たとえば、両面印刷を固定にすると、両面できない用紙を選択したときにどのように禁則すればいいかという問題が発生する。従来では、プリンタドライバ自体をカスタマイズしてしまい、まったく別の専用ドライバを作成するといった方法が一般的であった。しかし、それではユーザの要望ごとにプリンタドライバを作成しなければならない。このため、外部のプラグインから新しい禁則処理ルールを追加することが考えられた（特許文献４）。さらに、可能な限り固定の設定を行ってみて禁則処理によって設定を変更できるときは印刷設定を変更する（特許文献５）などの方法があった。現在持っている禁則処理ルールと逆の禁則処理ルールを自動補完する技術が存在する。
【０００７】
また、開発者は、ある機能名に対して、ＯＮとなるすべてのルールを記述し、上記したとおり、ＯＦＦとなるルールを省略することができる。ＯＦＦとなるルールは推論エンジン３０２により自動生成される。逆に、開発者は、ある機能名に対して、ＯＦＦとなるすべてのルールを記述し、上記したとおり、ＯＮとなるルールを省略することができる。ＯＮとなるルールは推論エンジン３０２により自動生成される。開発者は、ある機能名に対して、ＯＮとなるルール、ＯＦＦとなるルールのすべてを記述することもできる。この場合ルールは自動生成されない。左辺に機能名（ＯＮ）、機能名（ＯＦＦ）の形式で記述された項に対して、右辺に項目を記述する場合には、左辺と同一のＯＮ／ＯＦＦ形式にする。この場合にルールが自動生成される（特許文献６）。
【特許文献１】特開２００３−９９１７０
【特許文献２】特開２０００−２２７８４７
【特許文献３】特開２０００−２２５７５４
【特許文献４】特開２００５−１９０４６７
【特許文献５】特開２００７−２７２７７９
【特許文献６】特開２００２−１６９６６９
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来の方法では、完全に値を固定化することが困難であった。すなわち、外部のプラグインから禁則処理ルールを差し込む場合は、外部のプラグインがプリンタドライバの禁則処理ルール（コンフリクトルールともいう。）を予めすべて知っていなければならない。さらに、プリンタドライバ本体の機能が拡張し、禁則処理も拡張された場合は、外部のプラグインも新たに変更した禁則処理ルールを差し込まなければならなかった。また、禁則処理によって変更されることを許容する場合は、固定にしている値によっては確実に固定にできるとは限らなかった。逆のルールを自動補完する場合、特許文献６の方法では、設定値がＯＮ／ＯＦＦのもののみ自動補完するだけである。たとえば、両面をＯＮにするという禁則処理ルールがある場合、両面をＯＦＦにするという禁則処理ルールを自動補完するものである。設定値を固定にした際に禁則処理ルールに不都合がないようにするには、自動補完するルールを固定値に変更するというルールを補完すればよい。しかし、それ以前に評価された禁則処理ルールで値が変更されてしまっては、開発者またはユーザの意図した固定にならない可能性がある。また、設定値が２つ以上あるもの、たとえば用紙サイズのようなものには適用できない。他に、「お気に入り」のようなユーザが保存したプリセットされた複数の設定値を適用する際に、固定にした設定値と共に、固定にした設定値ではない違う値が「お気に入り」に含まれていると、値が変更されてしまい確実に固定にすることができなかった。
【０００９】
本願は上記課題の少なくとも一つを鑑みてなされたものである。
【課題を解決するための手段】
【００１０】
印刷装置に対して送信して印刷させるデータを生成するプリンタドライバにおける印刷設定を処理する情報処理装置において、印刷設定の競合を禁止する禁則を定義した禁則ルールを記憶する記憶手段と、印刷設定の固定化を指示する指示手段と、前記固定化を指示された印刷設定に関わる禁則ルールの優先度を従前の優先度よりも上げて設定するルール優先度設定手段と、を備える情報処理装置が一例として開示される。
【発明の効果】
【００１１】
本発明によれば、設定値を固定化しつつ、プリンタの禁則処理にしたがって印刷を行うことが可能であることから、管理者が確実に印刷設定を管理することが可能になるという効果がある。
【発明を実施するための最良の形態】
【００１２】
（実施例）
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【００１３】
図１は本発明の一実施形態を示す印刷処理システムのブロック構成図である。なお、特に断らない限り、本発明の機能が実行されるのであれば、単体の機能であっても、複数の機器からなるシステムであっても、ＬＡＮ、ＷＡＮ等のネットワークを介して接続がなされ処理が行われるシステムであっても、本発明を適用できることは言うまでもない。
【００１４】
図１において、コンピュータを用いたシステムのブロック構成図を示す。ＣＰＵ１０１はＲＯＭ１０２あるいはＲＡＭ１０３あるいは外部記憶装置１０５に格納されたプログラムに従って装置全体の制御を行う。ＲＡＭ１０３はＣＰＵ１０１が各種処理を行う際のワークエリアとしても使用される。記憶装置１０５はオペレーティングシステム（ＯＳ）１０５４やアプリケーションソフト１０５１等を記録する。キーボードやマウスなどの入力機器は、入力Ｉ／Ｆ１０４を通じて、ユーザがコンピュータに対して各種指示を与えるためのデバイスである。出力Ｉ／Ｆ１０６は、データを外部に出力するためのインタフェースであり、モニタ１１０やプリンタ１１１に対してデータを出力する。プリンタ１１１とは直接接続されるローカルＩ／Ｏのみならず、ＬＡＮやＷＡＮといったネットワークを通して接続されていてもよい。また、１０７は共通データバスで、それぞれのデータのやりとりを行う。図２、図３、図９のモジュールは図１の記憶装置１０５にプリンタドライバ１０５３として記憶されており、ＣＰＵ１０１がＲＡＭ１０３に展開して実行する。
【００１５】
図２では、ＸＰＳＤｒｖ印刷システムのブロック構成図を示す。ＸＰＳＤｒｖとはＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）と呼ばれる文書ファイルフォーマットをスプールデータとして使用し、印刷を行うプリンタドライバのことを指す。ユーザはキーボードやマウスなどといった入力装置１０４を使用して、出力装置１０５のモニタに映し出されたＷｉｎ３２アプリケーションプログラム２０１（以下、Ｗｉｎ３２アプリと略す）、もしくはＷｉｎｄｏｗｓ（登録商標）  Ｐｒｅｓｅｎｔａｔｉｏｎ  Ｆｏｕｎｄａｔｉｏｎアプリケーションプログラム２０２（以下、ＷＰＦアプリと略す）から印刷処理を実行する。印刷処理はプリンタの選択、印刷設定の作成、描画データの変換と３つの処理を順番に行うことで実行する。図２の２０１乃至２１３，２１５は図１の外部記憶装置１０５に記憶される。
【００１６】
まずは、印刷したいプリンタ２１４の選択をする、これは、印刷を実行するプリンタに対応したプリンタドライバを選択することと同義である。次に印刷設定を作成する。印刷設定はアプリケーションが印刷設定用のメモリを確保し、アプリケーションかプリンタドライバのコンフィギュレーションモジュール２０４が、機種依存ファイル２０５を利用して設定データを埋めるという形で行われる。Ｗｉｎ３２アプリ２０１では印刷設定データとしてバイナリのＤＥＶＭＯＤＥ構造体２１５を用い、ＷＰＦアプリ２０２ではマークアップ言語のＸＭＬで記載されたＰｒｉｎｔＴｉｃｋｅｔ２０３を用いる。ＤＥＶＭＯＤＥ構造体２１５は図１３の構造を持っており、オペレーティングシステムが定義するＰｕｂｌｉｃ領域とプリンタドライバが独自で定義するＰｒｉｖａｔｅ領域を持つバイナリの構造体である。また、ＰｒｉｎｔＴｉｃｋｅｔ２０３は、図１４にあるようなＸＭＬ形式で記述された印刷設定情報である。このＤＥＶＭＯＤＥ構造体２１５もしくはＰｒｉｎｔＴｉｃｋｅｔ２０３が印刷設定を保持しており、アプリケーションが直接書き換えることで印刷設定を変更する。プリンタ２１４に依存した専用の設定は、コンフィギュレーションモジュール２０４が持つプリンタドライバのユーザインタフェースを表示し、ユーザがユーザインタフェースを操作することで行う。プリンタドライバは、ユーザインタフェースの設定に従い、ＤＥＶＭＯＤＥ構造体２１５もしくはＰｒｉｎｔＴｉｃｋｅｔ２０３のプリンタ２１４に依存した設定を変更する。印刷設定とは具体的に、出力する用紙サイズを「Ａ４」にする、両面印刷を行う、カラーとモノクロを切り替える、給紙段を指定するなどといった設定のことを指す。ＰｒｉｎｔＴｉｃｋｅｔ２０３は印刷設定がＸＭＬ形式で記述されているので、ＷＰＦアプリ２０２がすべての設定値を直接変更して書き換えることは容易だが、従来のようにプリンタドライバのユーザインタフェースを使って設定変更してもかまわない。
【００１７】
最後に描画データの変換を行う。印刷設定が確定したら、ユーザはアプリケーションから印刷処理を実行する。Ｗｉｎ３２アプリ２０１から印刷する場合は、バージョン３プリンタドライバの形態を取るＧＤＩｔｏＸＰＳ変換モジュール２０６に描画データが送られ、ＸＰＳスプールファイル２０７が作成される。バージョン３プリンタドライバとは、Ｍｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ（登録商標）２０００以降に対応したプリンタドライバのことを指す。このときＧＤＩｔｏＸＰＳ変換モジュール２０６はコンフィギュレーションモジュール２０４を呼び出し、印刷設定をＤＥＶＭＯＤＥ構造体２１５からＰｒｉｎｔＴｉｃｋｅｔ２０３に変換する。ＷＰＦアプリ２０２から印刷する場合は、ＸＰＳファイルをＷＰＦアプリ自身が生成するのと、オペレーティングシステムがＷＰＦアプリからの命令に応じてＸＰＳファイルを生成するのと２通りの方法があるが、どちらもＸＰＳスプールファイル２０７を生成する。このようにＸＰＳＤｒｖ印刷システムは、印刷時に必ずＸＰＳスプールファイル２０７を生成するのが特徴である。
【００１８】
ＸＰＳスプールファイル２０７が生成されたら、プリントフィルタパイプラインプロセスに処理が渡される。プリントフィルタパイプラインプロセスは複数のフィルタを通すことで印刷が行われる仕組みで、フィルタコンフィギュレーションファイル２０８でフィルタの数や順番を制御する。プリントフィルタパイプラインプロセスで動作するフィルタパイプラインマネージャはフィルタコンフィギュレーションファイル２０８に従って、この実施例では設定フィルタ２０９、レイアウトフィルタ２１０、レンダラフィルタ２１１の順に処理を行う。処理はＸＰＳスプールファイル２０７をフィルタに受け渡すことで行われ、フィルタがそれぞれＸＰＳスプールファイル２０７を加工し次のフィルタに渡していくことで処理が進む。最後にはプリンタが理解できるデータ言語であるプリンタ制御言語（以下、ＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）と略す）となって出力される。もちろんプリンタ２１４がＸＰＳスプールファイル２０７を直接読み込めるのであれば、そのままでもよい。設定フィルタ２０９ではＰｒｉｎｔＴｉｃｋｅｔを読み込んで印刷に必要なデータをＰｒｉｎｔＴｉｃｋｅｔに書き込む処理を、レイアウトフィルタ２１０では倍率の変更や製本の面付けレイアウトやスタンプなどレイアウトに関する処理を行う。レイアウトフィルタ２１０では、ＸＰＳスプールファイル２０７に含まれる印刷設定ＰｒｉｎｔＴｉｃｋｅｔ２０３に従って動作するため、たとえば面付けの設定がＰｒｉｎｔＴｉｃｋｅｔ２０３に存在しないときは、レイアウトフィルタ２１０は何も動作せずスルーして、次のフィルタにＸＰＳスプールファイル２０７をそのまま渡す。最後のレンダラフィルタ２１１では、ＸＰＳスプールファイル２０７をレンダリングしてＰＤＬに変換する。ＰＤＬデータは印刷処理のスケジュール管理を行うプリントマネージャ２１２で管理され、キュー（待ち行列）に印刷ジョブが次々と登録される。プリンタ２１４が印刷できる状態になったら、キューに登録した順にＰＤＬデータをＩ／Ｏモニタ２１３を通して送信する。このようにして、アプリケーションからの印刷データをプリンタ言語に変換することがプリンタドライバの主な役目であり、実際の印刷処理が行われる。
【００１９】
図３は本実施例におけるプリンタドライバのコンフィギュレーションモジュール２０４のブロック図である。コンフィギュレーションモジュール３０１はそれぞれのプリンタの機種に依存した情報を持つ機種依存ファイル３０７を読み込んで動作する。このようにすることで、コンフィギュレーションモジュール３０１はすべてのプリンタで共通のモジュールであっても、それぞれの機種に特化した動作を行うことができる。機種依存ファイル３０７は実際の機種データが記述されたＸＭＬデータファイル３０８を持っており、コンフィギュレーションモジュール３０１はＸＭＬデータファイル３０８を、コンフリクトエンジン３０４のデータファイルパーサー３０５で解釈して読み込む。
【００２０】
ＸＭＬデータファイル３０８はプリンタの機種データを含む巨大なデータファイルとなるので、機種依存ファイル３０７はＸＭＬデータファイル３０８をＺＩＰ圧縮することで、ファイルサイズを小さくしている。また、データファイルパーサー３０５は、ＸＭＬデータファイル３０８をいったん読み込むと、バイナリデータファイル３０９を作成する。バイナリデータファイル３０９を作成したあとは、ＸＭＬデータファイル３０８に変更がなければ、ＸＭＬデータファイル３０８の代わりにバイナリデータファイル３０９を使って動作する。これにより、機種依存ファイル３０７からＸＭＬデータファイル３０８を展開する作業と、ＸＭＬデータファイル３０８を解析する作業が軽減され、パフォーマンスが上がる。ＸＭＬデータファイル３０８に変更があれば、再度ＸＭＬを読み込み、バイナリデータファイル３０９を作成する。
【００２１】
コンフリクトエンジン３０４のデータファイルパーサー３０５は、ＸＭＬデータファイル３０８もしくはバイナリデータファイル３０９を読み込んで、状態変数（ＳｔａｔｕｓＶａｒｉａｂｌｅｓとも呼ばれる。以下、ＳＶと略す）３１０のオブジェクトインスタンスを作成する。ＳＶ３１０とは、プリンタのそれぞれの機能ごとにオブジェクトとして扱うもので、印刷設定情報の状態を表すものである。ＳＶ３１０は、名前、値もしくは値リスト、値に付随するプロパティ、現在値、デフォルト値、ステータス、リーズン、そしてロックフラグを持ったメモリ上に展開されるオブジェクトである。
【００２２】
たとえば、「プリンタで使用できる用紙サイズ」という機能に関するＳＶ３１０を図３の例で見てみる。用紙サイズのＳＶ３１０は「ＭｅｄｉａＳｉｚｅ」という名前を持ち、値リストとして、「Ａ４」「Ｌｅｔｔｅｒ」「Ｂ５」「ＰｏｓｔＣａｒｄ」などプリンタで使用できる用紙サイズが列挙されている。図３では現在値を黒い丸で、デフォルト値を白い丸で表しているので、デフォルトは「Ａ４」だが、現在は「Ｌｅｔｔｅｒ」が選択されている状態を表している。また、ＳＶ３１０はステータスを持ち、その値が現在の設定値で利用可能かどうかを示すことができる。ＳＶ３１０自体にも値リストのそれぞれの値にもステータスを持ち、図３では「Ｂ５」が現在の設定では利用できない用紙ということで、「Ｂ５」の値に対して利用不可のステータスを持つ取り消し線が引かれている。用紙サイズが選択できないような状況では、「ＭｅｄｉａＳｉｚｅ」自体に利用不可のステータスを付けることもできる。同様に、印刷の向きとして「Ｏｒｉｅｎｔａｔｉｏｎ」、カラーとして「ＯｕｔｐｕｔＣｏｌｏｒ」、給紙段として「ＩｎｐｕｔＢｉｎ」が例として挙げられている。もちろん、これ以外の機能がいくつあってもかまわない。さらに、ＳＶ３１０は値リストの代わりに値として、数値や文字列を持つこともできる。値リストであっても、現在値を複数持つことができるマルチセレクションという形のＳＶ３１０も作成することができる。マルチセレクションのＳＶ３１０は、同時に複数の値を選択していることになるので、プリンタの記憶装置に印刷ジョブを保存するボックス保存機能などで、一度の印刷で複数のボックスに同時に格納するような印刷設定を作ることができる。
【００２３】
禁則エンジン３０６はＳＶ３１０を使用して禁則処理を行う。禁則とは、印刷設定の競合を禁止するためのルールである。例えば、両面  ＯＮ、ＯＨＰ  ＯＮであれば、両立しえないので、片方をＯＦＦになるように修正する、というようなルールの定義である。後に詳述する。禁則エンジン３０６はＸＭＬデータファイル３０８もしくはバイナリデータファイル３０９に記載された禁則処理ルールを元に、ＳＶ３１０の値を変更する。禁則処理ルールは、１つ１つのＳＶ３１０ごとに記載されており、他のＳＶ３１０の値との関係を記載する。たとえば、部単位ソートを行うＳＶ「Ｃｏｌｌａｔｅ」の禁則処理ルールを考えてみる。部単位ソートは製本印刷を行うときは必ず使用しなければならない。このロジックをＳＶ「Ｃｏｌｌａｔｅ」の禁則処理ルールとして記載すると、「製本のＳＶ「Ｂｏｏｋｌｅｔ」がＯＮなら、自分自身をＯＮにする」という形で記載することになる。また、禁則処理ルールにはリーズンをセットすることができる。リーズンとは禁則処理ルールによって値が変更されたりしたときに、どの禁則処理ルールによって値が変更されたのかを区別するためのＳＶ３１０につけるマークである。さらに、禁則処理ルールでは、記載した条件の結果として、値を変更するだけでなく、ステータスを変更したり、値リストから特定の値を削除したり追加することも可能である。
【００２４】
コンフィギュレーションモジュール３０１は印刷設定を、ＤＥＶＭＯＤＥ３１１やＰｒｉｎｔＴｉｃｋｅｔ３１２という形で、アプリケーションプログラムインタフェース（以下、ＡＰＩと略す）を通じてアプリケーションソフトウェアと入出力することができる。コンフィギュレーションモジュール３０１は、ＤＥＶＭＯＤＥ３１１やＰｒｉｎｔＴｉｃｋｅｔ３１２を、ＳＶ３１０の現在の値をすべて集めて全体の印刷設定として作成し、アプリケーションソフトウェアに出力する。また、入力としてＤＥＶＭＯＤＥ３１１やＰｒｉｎｔＴｉｃｋｅｔ３１２を受け取った場合は、その値をＳＶ３１０にセットし、コンフリクトエンジン３０４を使用して禁則処理を行う。
【００２５】
コンフィギュレーションモジュール３０１はユーザに印刷設定をさせるために、ユーザインタフェース３０３も持っている。ユーザインタフェース３０３上には、ＳＶ３１０の現在の値を表示しており、ユーザによって値が変更されたら、その値をＳＶ３１０にセットし、コンフリクトエンジン３０４を使用して禁則処理を行う。禁則処理を行った結果、ＳＶ３１０が新しい値に変更され、またユーザインタフェース３０３上にＳＶ３１０の現在値を表示する。ユーザインタフェース３０３は、ＳＶ３１０のステータスに応じてコントロールの表示を変更する。ＳＶ３１０のステータスには、利用可（ａｖａｉｌａｂｌｅ）、利用不可（ｎｏｔａｖａｉｌａｂｌｅ）、サポート不可（ｎｏｔｓｕｐｐｏｒｔｅｄ）、権限不可（ｎｏｔｐｅｒｍｉｓｓｉｏｎ）の４つが存在し、それぞれコントロールの表示が異なる。利用可のときは通常の表示を行うが、利用不可や権限不可のときはコントロールや選択肢をグレーアウトして選択できないようにする。サポート不可のときはコントロールを隠してユーザに見せないようにする。標準に戻すボタンを押すと、ＳＶ３１０をデフォルト値に変更して禁則処理を行い、ユーザインタフェース上にＳＶ３１０の状態を表示する。このように、コンフィギュレーションモジュール３０１は、入力や出力がどんな形態であっても、すべてＳＶ３１０に変換して処理を行うことで、機能や禁則処理の一括管理を行っている。
【００２６】
ＳＶ３１０の特別な機能として、値や値リストを固定化するロック機能を持っている。ＳＶ３１０のロックフラグがＯＮになると、ＳＶ３１０は外部から値を変更したり、禁則処理ルールによって変更することができなくなる。ロック機能をＯＮにするには、ＸＭＬデータファイル３０８かバイナリデータファイル３０９にあらかじめ記載しておくか（図８）、ＡＰＩ３０２やユーザインタフェース３０３から指定する。図６はロック機能をＯＮ・ＯＦＦするためのユーザインタフェース３０３上の表示である。ロック機能は管理者権限を持つユーザのみに指定することを許可しており、図６では両面をロックしたときの表示を表す。図７はロック機能をＯＮにしたときのユーザインタフェース３０３上の表示を表す。図７では両面をロックしているので、両面が常にＯＮとなりユーザが操作できないようにコントロールをグレーアウトしている。また、ロックしていることを表すために、コントロールの横にロック専用の鍵のマークを表示する。ロックしているコントロール、もしくはロック専用の鍵のマークをポインティングデバイスで指し示すと、ツールチップを表示し固定化していることを表示する。
【００２７】
図４はＸＭＬデータファイル３０８の一部を示している。ＸＭＬデータファイル３０８には、プリンタの機能に応じて、ＳＶ３１０の情報と、禁則処理ルールを記載してあるが、図４はそのうち「Ｃｏｌｌａｔｅ」のＳＶ３１０について記載した箇所である。ＳｔａｔｕｓＶａｒｉａｂｌｅという要素でＳＶ３１０を定義する。ここにはｎａｍｅという属性でＳＶ３１０の名前を、ｔｙｐｅという属性でＳＶ３１０の型を定義している。図４ではｎａｍｅには「Ｃｏｌｌａｔｅ」を、ｔｙｐｅには「ｓｅｌｅｃｔｉｏｎ」を記載している。「ｓｅｌｅｃｔｉｏｎ」型というのは、値リストを使用するＳＶ３１０であることを示している。次にＳＶ３１０の定義としてＰｒｏｐｅｒｔｙＴａｂｌｅ要素と、ＣｏｎｆｌｉｃｔＲｕｌｅｓ要素を記載する。ＰｒｏｐｅｒｔｙＴａｂｌｅ要素にはＳＶ３１０のパラメータを、ＣｏｎｆｌｉｃｔＲｕｌｅ要素には禁則処理ルールを記載する。ＰｒｏｐｅｒｔｙＴａｂｌｅ要素にはＶａｌｕｅＩｎｆｏＴａｂｌｅ要素とＲｅａｓｏｎＩｎｆｏＴａｂｌｅ要素の２つがあり、それぞれ値とリーズンを定義する。ＶａｌｕｅＩｎｆｏＴａｂｌｅ要素にはＶａｌｕｅＳｅｔ要素に値リストのそれぞれの値を記載する。ＶａｌｕｅＳｅｔ要素の１つ１つの値には、Ｐｒｏｐｅｒｔｙ要素として値に付加するデータを追記することもできる。たとえば、用紙サイズ「Ａ４」に関して幅や高さなどの情報を付加したいときにＰｒｏｐｅｒｔｙ要素を使用する。ＤｅｆａｕｌｔＶａｌｕｅ要素には値リストのうちデフォルト値となるものを記載する。図４では「Ｃｏｌｌａｔｅｄ」と「Ｕｎｃｏｌｌａｔｅｄ」という２つの値と、「Ｃｏｌｌａｔｅｄ」がデフォルト値であることが記載されている。また、ＲｅａｓｏｎＩｎｆｏＴａｂｌｅ要素にはＲｅａｓｏｎＳｅｔ要素として、リーズンを３つ記載している。ＣｏｎｆｌｉｃｔＲｕｌｅｓ要素にはＣｏｎｆｌｉｃｔ要素で１つの禁則処理ルールを記載する。禁則処理ルールにはそれぞれ優先度が存在し、それをｐｒｉｏｒｉｔｙという属性で記載する。優先度の値が小さいものから禁則処理ルールを評価していくので、小さいほうの優先度が高い。このようにＳＶ３１０ごとに優先度が設定されているのは、同時入力時の禁則処理を行うために存在する。印刷設定として入力される値がすでに禁則状態にあり、どちらかの値を変更しなければならないときに、優先度が高い機能の値を優先して設定することで、ユーザが望むような印刷設定を行うことができる。優先度が存在しない場合は、禁則処理ルールを評価する順番によっては、先に評価したほうの機能が優先されるので、いつも一定の結果になるとは限らなくなってしまう。Ｃｏｎｆｌｉｃｔ要素にはＶａｌｕｅ要素とＣｏｎｄｉｔｉｏｎ要素があり、Ｖａｌｕｅ要素には、禁則した結果として変わる値を記載する。また、Ｃｏｎｆｌｉｃｔ要素には禁則した結果として変わるステータスをｓｔａｔｕｓ属性で記載できる。Ｃｏｎｄｉｔｉｏｎ要素には、禁則する対象のＳＶ３１０の名前と値を記載する。ｎａｍｅ属性には対象のＳＶ３１０の名前を、Ｖａｌｕｅ要素には対象のＳＶ３１０の値を記載する。Ｃｏｎｄｉｔｉｏｎ要素を並列に記載する場合は、論理積（ＡＮＤ）の意味となる。他に算術演算のような機能もあり、ｒｅｓｕｌｔ属性がｆａｌｓｅの場合は否定（ＮＯＴ）に、Ｂｌｏｃｋ要素は括弧に、ＡｎｙＯｎｅＣｏｎｄｉｔｉｏｎ要素は論理和（ＯＲ）になる。図４では３つの禁則処理ルールがある。製本のＳＶ３１０である「Ｂｏｏｋｌｅｔ」の値が「Ｎｏｎｅ」以外だったら、「Ｃｏｌｌａｔｅｄ」にしてＳＶ３１０自体のステータスを利用不可「ＮｏｔＡｖａｉｌａｂｌｅ」にする。表紙「ＣｏｖｅｒＦｒｏｎｔ」と裏表紙「ＣｏｖｅｒＢａｃｋ」が「ＮｏＣｏｖｅｒ」以外つまり指定されているときは、「Ｃｏｌｌａｔｅｄ」にしてＳＶ３１０自体のステータスを利用不可「ＮｏｔＡｖａｉｌａｂｌｅ」にする。ステイプル「Ｓｔａｐｌｅ」が中とじ「ＳａｄｄｌｅＳｔｉｔｃｈ」のときは「Ｃｏｌｌａｔｅｄ」にしてＳＶ３１０自体のステータスを利用不可「ＮｏｔＡｖａｉｌａｂｌｅ」にするという３つの禁則処理ルールである。
【００２８】
図５は、プリンタドライバに対してユーザが設定を指示したときに開始する。Ｓ５０１は、その都度確認することになっているが、予め処理をして、ユーザが印刷設定を変更したら、Ｓ５０２以降からの処理をするようにしてもよい。
【００２９】
次に、コンフリクトエンジン３０４の禁則エンジン３０６による禁則処理のロジックを、図５のフローチャートに沿って追っていく。まずは、ＡＰＩ３０２やユーザインタフェース３０３からＳＶ３１０のロック機能の情報をもらう。ロック情報を元に禁則エンジン３０６は、対象となるＳＶ３１０の値をロックする値に変更し、ロックフラグを立てる（ステップ５０１）。また、デフォルト値をロックする値に変更する。
【００３０】
ステップ５０２では、次にＡＰＩ３０２やユーザインタフェース３０３が、ＤＥＶＭＯＤＥ構造体やＰｒｉｎｔＴｉｃｋｅｔなどの印刷設定や、ユーザインタフェースからのコントロールの入力から、ユーザが指定した印刷設定情報を受け取る（ステップ５０２）。ＡＰＩ３０２やユーザインタフェース３０３は受け取った印刷設定情報を元に、変更するＳＶ３１０の値のリストを作成する。これはＳＶ３１０の名前と値のペアと、印刷設定情報との組み合わせが記載されたテーブルを持っていて、そのテーブルに沿ってリストを作成する。テーブルはＸＭＬファイルに記載されており、機種依存ファイル３０７に含まれている。禁則エンジン３０６は値のリストを元に、対応するＳＶ３１０の現在値をそれぞれ印刷設定の値に変更する（ステップ５０３）。禁則エンジン３０６はここで値が変更されたＳＶ３１０のリストを作成する（ステップ５０４）。すでに印刷設定の値でリストを作成しているが、ここでは値が変更できたＳＶ３１０のリストを作成している。また、禁則処理ルールを処理する過程においては、実際に値を変更したＳＶ３１０と禁則処理ルールの結果値が変更されたＳＶ３１０の両方を含んだリストを作成する。ステップ５０４で作成したリストに含まれるＳＶ３１０の禁則処理ルールをすべて取り出し、優先度順に並べる（ステップ５０５）。ここで、ＳＶ３１０の中でロックされているものがあれば、ロックされたＳＶ３１０の禁則処理ルールをまず優先度順に並べ、他の禁則処理ルールはその後ろに優先度順に並べる。優先度順に並べた禁則処理ルールがまだ存在していれば（ステップ５０６）、禁則処理ルールを１つ取り出し（ステップ５０８）、禁則処理ルールの評価を行う。禁則処理ルールに記載されたＳＶ３１０の値やプロパティを参照し、禁則処理ルールにおけるＣｏｎｄｉｔｉｏｎ要素に合致してルールが成立するかどうかを判定する。禁則処理ルールが成立するのであれば、ＳＶ３１０の値を変更する必要があるかどうかを判定する（ステップ５０９）。値を変更しなければならないときは、ロック情報によってロックフラグが立っているかどうかを判定する（ステップ５１０）。ロックされているときは、禁則処理ルールにおけるＣｏｎｄｉｔｉｏｎ要素に含まれるＳＶ３１０の値に対して、ステータスを利用不可に変更する（ステップ５１１）。つまり、通常は禁則処理ルールに記載された対象のＳＶ３１０の値によって自分の値を変更するのに対して、ロックのときは対象のＳＶ３１０のステータスを変えるように動作する。ロックされていないときは通常の禁則処理として、禁則処理ルールに従って値を変更しようとする。このとき、変更しようとしている対象のＳＶ３１０の値が、禁則処理によってすでに１度値が変更されたことがないかどうかのフラグを判定する（ステップ５１２）。禁則処理は値が変更されたことを起点とし、禁則処理ルールを評価していくが、値が何度も変更されてしまうと、禁則処理ルールによっては評価がループしてしまい終わらなくなることがある。そこで、禁則処理ルールによってＳＶ３１０の値が変更されるのは１回までとして制限することで、無現ループすることを防いでいる。値が１回も変更されていないことが確かめられたら、ＳＶ３１０の値を変更し、ＳＶ３１０の値を禁則処理ルールによって変更したというフラグを立てる（ステップ５１３）。そして、次の禁則処理ルールを評価する。禁則処理ルールがすべてなくなったら、禁則処理によって値が変更されたＳＶ３１０があるかどうかを判定する（ステップ５０７）。値がひとつも変更されていなければ、すべての禁則処理ルールを評価した結果、値が安定した状態にあると判断し終了する。変更されていれば、値が変更されたＳＶ３１０の禁則処理ルールをすべて取り出し、優先度順に並べて再度評価を行う。このときもロックしているＳＶ３１０は優先度を高くする。
【００３１】
このように、コンフィギュレーションモジュール３０１はコンフリクトエンジン３０４とＳＶ３１０の持つロック機能を利用して、機能を完全に固定化することができ、禁則処理においても矛盾がないように動作する。
【００３２】
（実施例２）
実施例１とは別のコンフィギュレーションモジュールの実施方法として、図９のブロック図にあるシステムを挙げる。実施例１との違いは禁則処理ルールで、実施例１の禁則処理ルールでは対象の値を元に自分の変更になる値を記載していたが、実施例２の禁則処理ルールでは、同時に設定することが不可能な組み合わせを記載するというのが異なる。したがって、コンフリクトエンジンが禁則処理を行うロジックも異なるが、優先度の並び変えによって同等のロック機能を実現する。
【００３３】
図９において、コンフィギュレーションモジュール９０３は、プリンタが異なっても同じモジュールを使える共通のモジュールである。プリンタごとに依存するデータはＧＰＤ（Ｇｅｎｅｒｉｃ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）と呼ばれるテキストファイルに記載しており、ＧＰＤファイルをコンフィギュレーションモジュール９０３のＧＰＤパーサー９０４が解釈して動作することで、プリンタ固有の動作を実現している。図９では、プリンタＡに対応したＧＰＤ９０１を読み込めばプリンタＡの動作を、プリンタＢに対応したＧＰＤ９０２を読み込めばプリンタＢの動作を行う。プリンタドライバを使用するたびにＧＰＤファイルをＧＰＤパーサー９０４が読み込むのは非効率なので、ＧＰＤファイルを読み込んだらバイナリファイルを作成し保存しておく。その後、ＧＰＤファイルの記載に変更がなければ、バイナリファイルを使って動作することで、高速化を実現している。
【００３４】
図９では、プリンタＡに対応したＧＰＤ９０１を読み込んだときは、バイナリデータ９０６を、プリンタＢに対応したＧＰＤ９０２を読み込んだときは、バイナリデータ９０７を作成している。ＧＰＤに記載されたデータを元に、コンフィギュレーションモジュール９０３は機能ごとのオブジェクトインスタンスを作成し、禁則処理を行う。アプリケーション９１０からの印刷設定データはＣＯＭＰＳＴＵＩ．ＤＬＬ９０９を経由してコンフィギュレーションモジュール９０３に渡される。また、ユーザインタフェースでの印刷設定はＣＯＭＭＯＮＵＩ９０５上からコンフィギュレーションモジュール９０３に渡される。コンフィギュレーションモジュール９０３は印刷設定を機能ごとのオブジェクトインスタンスに反映させ、禁則処理を行ってまた、アプリケーション９１０やユーザインタフェース上に印刷設定を返している。コンフィギュレーションモジュール９０３はまたユーザインタフェースプラグイン９０８を使って、新たな機能を自由に追加することができる。
【００３５】
図１０はＧＰＤの記載の一部である。＊Ｆｅａｔｕｒｅは機能の名前を記述する。図１０ではプリンタの給紙段でＩｎｐｕｔＢｉｎという名称をつけたＦｅａｔｕｒｅとして定義している。＊Ｏｐｔｉｏｎは機能に対する値である。図１０ではＡＵＴＯ、ＩＮＰＵＴＴＲＡＹ＿ＭＡＮＵＡＬ、ＩＮＰＵＴＴＲＡＹ＿ＣＡＳＳＥＴＴＥ１、ＩＮＰＵＴＴＲＡＹ＿ＣＡＳＳＥＴＴＥ２の４つのＯｐｔｉｏｎが存在し、どれか１つをＩｎｐｕｔＢｉｎの現在値として選択することになる。＊ＤｅｆａｕｌｔＯｐｔｉｏｎではＯｐｔｉｏｎのうちどれがデフォルト化を記述する。ここではＡＵＴＯ、つまり給紙段の「自動」がデフォルトであるという記載になる。
【００３６】
禁則処理ルールとしては、＊Ｃｏｎｓｔｒａｉｎｔｓと＊ＩｎｖａｌｉｄＣｏｎｂｉｎａｔｉｏｎの２つがある。＊Ｃｏｎｓｔｒａｉｎｔｓは自分のＯｐｔｉｏｎと他のＦｅａｔｕｒｅのＯｐｔｉｏｎと同時に組み合わさってはならない禁則を記載する。＊ＩｎｖａｌｉｄＣｏｎｂｉｎａｔｉｏｎはＧＰＤファイルのルート（行の先頭）に記載し、ＦｅａｔｕｒｅのＯｐｔｉｏｎ同士の禁則を記載する。＊ＩｎｖａｌｉｄＣｏｎｂｉｎａｔｉｏｎでは２つ以上のＯｐｔｉｏｎの禁則が記載することができるのが、＊Ｃｏｎｓｔｒａｉｎｔｓとの違いである。また、＊ＣｏｎｆｌｉｃｔＰｒｉｏｒｉｔｙでは、Ｆｅａｔｕｒｅの優先度を記載している。数値が小さいほど優先度が高く、先に禁則処理を評価する。このＧＰＤを読み込んで、コンフィギュレーションモジュール９０３はＦｅａｔｕｒｅオブジェクトを作成し、禁則処理を行う。
【００３７】
また、ＦｅａｔｕｒｅにはＯｐｔｉｏｎを固定化するためにロックしているかどうかのフラグを持ち、ロックしている場合はＯｐｔｉｏｎが変更されないようにしている。ロックはＧＰＤのＦｅａｔｕｒｅにあらかじめ記載しておくことも可能である（図１２）。
【００３８】
コンフィギュレーションモジュール９０３が行う禁則処理のロジックを、図１１のフローチャートに従って追っていく。Ｆｅａｔｕｒｅのロック情報をアプリケーション９１０やＣｏｍｍｏｎＵＩのユーザインタフェース９０５が持っていたときは、指定されたＦｅａｔｕｒｅのＯｐｔｉｏｎに変更し、ロックフラグを立てる（ステップ１１０１）。
【００３９】
また、ＤｅｆａｕｌｔＯｐｔｉｏｎをロックするＯｐｔｉｏｎに変更する。次にアプリケーション９１０やＣｏｍｍｏｎＵＩのユーザインタフェース９０５からユーザが指定した印刷設定情報を受け取る（ステップ１１０２）。この時点ではまだＦｅａｔｕｒｅにＯｐｔｉｏｎをセットしない。すべてのＦｅａｔｕｒｅをリストとして列挙し、ＣｏｎｆｌｉｃｔＰｒｉｏｒｉｔｙ順にリストを並べる（ステップ１１０３）。
【００４０】
ここで、ロックされているＦｅａｔｕｒｅがあれば、ロックされているＦｅａｔｕｒｅをＣｏｎｆｌｉｃｔＰｒｉｏｒｉｔｙ順に並べ、その後ろに通常のＦｅａｔｕｒｅをＣｏｎｆｌｉｃｔＰｒｉｏｒｉｔｙ順に並べる。リストにＦｅａｔｕｒｅが残っていれば（ステップ１１０４）、リストからＦｅａｔｕｒｅを取り出す（ステップ１１０５）。指定された印刷設定の値に対応するＦｅａｔｕｒｅのＯｐｔｉｏｎ、つまり設定しようとしているＯｐｔｉｏｎが、ＣｏｎｓｔｒａｉｎｔｓもしくはＩｎｖａｌｉｄＣｏｎｂｉｎａｔｉｏｎの対象となっているかどうかを、すべてのＣｏｎｓｔｒａｉｎｔｓもしくはＩｎｖａｌｉｄＣｏｎｂｉｎａｔｉｏｎを見て判定する（ステップ１１０６）。
【００４１】
対象となっていれば、禁則状態にあるということで、印刷設定をＦｅａｔｕｒｅの現在の値としてＯｐｔｉｏｎに設定することはできないので、次のＦｅａｔｕｒｅに進む。禁則状態でなければ、次に現在のＦｅａｔｕｒｅのＯｐｔｉｏｎがロック状態になるかどうかを確認する（ステップ１１０７）。
【００４２】
現在のＯｐｔｉｏｎがロック状態であれば、やはり印刷設定をＯｐｔｉｏｎとして設定することができないので、次のＦｅａｔｕｒｅに進む。変更するＯｐｔｉｏｎが禁則状態ではなく、かつ現在のＯｐｔｉｏｎがロック状態でなければ、Ｆｅａｔｕｒｅに印刷設定の値としてＯｐｔｉｏｎをセットする（ステップ１１０８）。そして、すべてのＦｅａｔｕｒｅに対して処理が終わったら、終了となる。
【００４３】
このように、Ｆｅａｔｕｒｅをロックすることで、機能を固定化することができる。機能を固定化したり、禁則処理を行うにあたっては実施例２のほうが簡易であり実装しやすい。しかし、実施例２の禁則処理では、値を変更することで他の値を変更するという処理ができないため、ユーザは印刷設定が禁則状態にあるときはいったん禁則状態を解除するように設定を変更し、再度、値を設定するということをしなければならなくなる。
【００４４】
他に、固定化指示可能な印刷設定として、パスワードによる親展印刷の設定の固定、ユーザ名・日時印刷固定なども想定できる。これらの印刷設定を固定化した場合、セキュアプリント固定にすると、保存（メールボックス）や追い越し印刷がＯＦＦになる。ユーザ名や、日時の印刷の固定にすると、ポスターがＯＦＦになるという処理が走る。プリンタのメモリとは、プリンタメモリである。ユーザインタフェース画面とは、ユーザインタフェースの画面である。
【００４５】
本実施形態の技術原理をまとめておく。
【００４６】
印刷装置の一例であるプリンタ２１４に対して送信して印刷させるデータを生成するプリンタドライバにおける印刷設定を処理するコンピュータを開示した。そして、外部記憶装置に、印刷設定の禁則を定義した禁則ルールを記憶する。そして、プリンタドライバのユーザインタフェースやＸＭＬファイルを用いて、印刷設定の固定化を指示する。さらに、コンフィギュレーションモジュールは、固定化を指示された印刷設定に関わる禁則ルールの優先度を従前の優先度よりも上げる。これは、ルール優先度設定の一例である。
【００４７】
外部記憶装置に、印刷設定の値をオブジェクトとして格納する。
【００４８】
コンフィギュレーションモジュールは、禁則処理ルールを元にしてオブジェクトの値を変更し、優先度順に禁則処理ルールを評価する。そして、固定化を指示された印刷設定は、ユーザインタフェースからの入力または禁則処理ルールの実行により変更されないようにする。さらに、値を固定化指示したオブジェクトに対して値を変更するような禁則処理ルールを処理するときは、コンフィギュレーションモジュールは、変更する原因となったオブジェクトの値をプリンタドライバのユーザインタフェースから選択できない状態にすることができる。
【００４９】
プリンタドライバのユーザインタフェースは、固定化を指示された印刷設定をモニタ１１０に識別可能に表示する処理を制御する。例えば、図７のごとくである。
【００５０】
禁則処理の優先順位はメーカが勝手に決めている。しかし、本実施形態を用いて、禁則処理を自由に変更できるのは便利である。両面固定、２Ｕｐ固定、モノクロ固定、保存（メールボックス）固定などをユーザインタフェースやＸＭＬファイルで指示できるようにすると好適である。メールボックスとは、プリンタや複合機のメモリ上に、ＰＣから印刷データ等を送信して格納させるためのボックスである。設定によっては、印刷出力を禁止し、必ずメールボックスに保存させることもできる。
【００５１】
また、他の人からもらった文書の印刷設定が「はがき」になっていたときに、「はがき」であることを意識せずに印刷してしまったときなどは印刷できないよりも「Ａ４」「両面」で出てくれるのは便利である。また、保存（メールボックス）固定にすると、指定した用紙サイズが「ユーザ定義用紙（長尺）」→「Ａ４」に修正される。これまでの処理であれば、長尺用紙で印刷になってしまっていたので、常に保存にさせることで紙資源の無駄を防げる。つまり、この環境では長尺用紙は使えないということになる。また、他の実施形態として、メールボックスへの保存設定に違反する設定があれば、メールボックスへの印刷データの保管はせずに、印刷中止して、管理者に対して通知しても良いと思われる。ここでは、メールボックスの設定は、印刷に関わる設定としておく。
【００５２】
また、２Ｕｐ固定にすると、製本がＯＦＦに修正される設計も想定できる。製本ができるときは製本で、２Ｕｐは諦め、製本がプリンタの仕様上でないときは２Ｕｐに固定する、準固定モードも想定できる。
【００５３】
（他の実施形態）
本実施形態における図５、図１１に示す処理が、外部からインストールされるプログラムによって、コンピュータにより遂行される。そして、その場合、ＣＤ−ＲＯＭやフラッシュメモリやＦＤ等の記憶媒体により、あるいはネットワークを介して外部の記憶媒体から、プログラムを含む情報群をホストコンピュータに供給される場合でも本発明は適用されるものである。
【００５４】
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、又は、外部サーバ（図示省略）からダウンロードすることで、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【００５５】
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。プログラムコードを供給するための記憶媒体としては、たとえば、フロッピィーディスク、ハードディスク、光ディスク、光磁気ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＥＥＰＲＯＭ等を用いることができる。
【００５６】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００５７】
【図１】本発明の一実施形態としての、コンピュータシステムのハードウェアとソフトウェアのブロック構成図である。
【図２】本発明の一実施形態としての、ＸＰＳＤｒｖ印刷システムのブロック構成図である。
【図３】本発明の一実施形態としての、実施例１におけるコンフィギュレーションモジュールのブロック構成図である。
【図４】本発明の一実施形態としての、実施例１における機種依存ファイルに含まれるＸＭＬファイルのフォーマットの一部である。
【図５】本発明の一実施形態としての、実施例１における禁則エンジンの禁則処理を行うロジックのフローチャートである。
【図６】本発明の一実施形態としての、実施例１におけるロック機能を指定するユーザインタフェース画面の一部である。
【図７】本発明の一実施形態としての、実施例１におけるロック機能が指定された印刷設定画面である。
【図８】本発明の一実施形態としての、実施例１における機種依存ファイルに含まれるＸＭＬファイルにおいて、ロック機能を有効にした一部のＸＭＬである。
【図９】本発明の一実施形態としての、実施例２におけるコンフィギュレーションモジュールのブロック構成図である。
【図１０】本発明の一実施形態としての、実施例２における機種依存ファイルであるＧＰＤファイルの一部である。
【図１１】本発明の一実施形態としての、実施例２におけるコンフィギュレーションモジュールの禁則処理のフローチャートである。
【図１２】本発明の一実施形態としての、実施例２における機種依存ファイルでロック機能を有効にした一部のＧＰＤである。
【図１３】本発明の一実施形態としての、印刷設定のバイナリＤＥＶＭＯＤＥ構造体である。
【図１４】本発明の一実施形態としての、印刷設定のＰｒｉｎｔＴｉｃｋｅｔのＸＭＬである。
【図１５】本発明の一実施形態としての、ＸＰＳスプールファイルのブロック図である。
【図１】
2010040002.tif 000003
【図２】
2010040002.tif 000004
【図３】
2010040002.tif 000005
【図４】
2010040002.tif 000006
【図５】
2010040002.tif 000007
【図６】
2010040002.tif 000008
【図７】
2010040002.tif 000009
【図８】
2010040002.tif 000010
【図９】
2010040002.tif 000011
【図１０】
2010040002.tif 000012
【図１１】
2010040002.tif 000013
【図１２】
2010040002.tif 000014
【図１３】
2010040002.tif 000015
【図１４】
2010040002.tif 000016
【図１５】
2010040002.tif 000017