(57)【要約】【課題】アプリケーションにおける印刷設定の禁則の判定を高精度に行うことができる情報処理装置を提供すること。【解決手段】印刷設定を行うアプリケーション１０５１とプリンタドライバ１０５２を有する情報処理装置は、印刷機能に関する設定値と、同時に設定することが禁止されている印刷機能の設定値の組み合わせを示す第１の禁則情報と、第１の禁則情報に対応するアプリケーション１０５１で解釈可能な特定の禁則条件を含む第２の禁則情報とを含む機種依存ファイル３０９を管理する管理手段と、印刷設定が、アプリケーション１０５１で解釈可能な特定の禁則条件を含む第１の禁則情報もしくは第２の禁則情報に該当するか否かを判定する第１の判定手段と、第１の判定手段が該当すると判定した場合に、ユーザにプリンタドライバ１０５２の起動を促す表示を行う表示手段と、を備える。【選択図】図３
2019144814.tif 000002
【特許請求の範囲】
【請求項１】
印刷設定を行うアプリケーションとプリンタドライバを有する情報処理装置であって、
印刷機能に関する設定値と、同時に設定することが禁止されている印刷機能の設定値の組み合わせを示す第１の禁則情報と、前記第１の禁則情報に対応する前記アプリケーションで解釈可能な特定の禁則条件を含む第２の禁則情報とを含む機種依存情報を管理する管理手段と、
印刷設定が、前記アプリケーションで解釈可能な特定の禁則条件を含む前記第１の禁則情報もしくは前記第２の禁則情報に該当するか否かを判定する第１の判定手段と、
前記第１の判定手段が該当すると判定した場合に、ユーザに前記プリンタドライバの起動を促す表示を行う表示手段と、を備える
ことを特徴とする情報処理装置。
【請求項２】
前記第２の禁則情報は、前記第１の禁則情報のうち、前記アプリケーションで解釈できない禁則情報に、前記アプリケーションで解釈可能な特定の禁則条件を追加した禁則情報である
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第２の禁則情報は、前記第１の禁則情報のうち、前記アプリケーションで解釈できない禁則情報に、前記アプリケーションで解釈可能な特定の禁則条件の印刷機能のすべての設定値をそれぞれ追加した禁則情報である
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記第２の禁則情報は、前記第１の禁則情報のうち、前記アプリケーションで解釈できない禁則情報に、前記アプリケーションで解釈可能な特定の禁則条件のすべてをそれぞれ追加した禁則情報である
ことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記機種依存情報は、前記アプリケーションで解釈可能な設定値を含む優先度が最も高く設定された禁則判定用の印刷機能を含み、
前記第２の禁則情報は、前記第１の禁則情報のうち、前記アプリケーションで解釈できない禁則情報に、前記禁則判定用の印刷機能とその設定値の組み合わせである禁則条件を追加した禁則情報である
ことを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記禁則判定用の印刷機能の設定値は、前記アプリケーションで解釈可能な１つの設定値である
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記禁則判定用の印刷機能の設定値は、前記アプリケーションで解釈可能な設定値と前記アプリケーションで解釈できない設定値とを含む
ことを特徴とする請求項５に記載の情報処理装置。
【請求項８】
前記禁則判定用の印刷機能の設定値は、前記アプリケーションから変更が可能な公開されている設定値である
ことを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記プリンタドライバは、
前記印刷設定が前記第１の禁則情報に該当するか否かを判定する第２の判定手段と、
前記印刷設定が前記第１の禁則情報に該当する場合に、禁則処理を行う禁則処理手段と、をさらに備える
ことを特徴とする請求項１乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記プリンタドライバは、Ｗｉｎｄｏｗｓ（登録商標）のオペレーティングシステム上で動作するｖｅｒｓｉｏｎ４のプリンタドライバである
ことを特徴とする請求項１乃至９のいずれか１項に記載の情報処理装置。
【請求項１１】
印刷設定を行うアプリケーションとプリンタドライバを有する情報処理装置の制御方法であって、
印刷機能に関する設定値と、同時に設定することが禁止されている印刷機能の設定値の組み合わせを示す第１の禁則情報と、前記第１の禁則情報に対応する前記アプリケーションで解釈可能な特定の禁則条件を含む第２の禁則情報とを含む機種依存情報を管理する管理工程と、
印刷設定が、前記アプリケーションで解釈可能な特定の禁則条件を含む前記第１の禁則情報もしくは前記第２の禁則情報に該当するか否かを判定する判定工程と、
前記判定工程において該当すると判定された場合に、ユーザに前記プリンタドライバの起動を促す表示を行う表示工程と、を有する
ことを特徴とする制御方法。
【請求項１２】
請求項１乃至１０のいずれか１項に記載の情報処理装置の各手段としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法およびプログラムに関する。
【背景技術】
【０００２】
Ｍｉｃｒｏｓｏｆｔ（登録商標）のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）では、Ｖ４プリンタドライバと呼ばれる新しいアーキテクチャで動作するプリンタドライバが導入された。Ｖ４プリンタドライバは、ＰＰＤ（ＰｏｓｔＳｃｒｉｐｔ  Ｐｒｉｎｔｅｒ  Ｄｅｓｃｒｉｐｔｉｏｎ）やＧＰＤ（Ｇｅｎｅｒｉｃ  Ｐｒｉｎｔｅｒ  Ｄｅｓｃｒｉｐｔｉｏｎ）と呼ばれる機種依存ファイルで、各機種で使用できる印刷設定の機能を表現している。
【０００３】
Ｖ４プリンタドライバには、デバイスが同時に実行できない印刷設定を制御する「禁則」と呼ばれる機能が備わっている。デバイスが同時に実行できない印刷設定、すなわち、同時に設定することが禁止されている印刷設定については、無効な印刷設定の組み合わせの情報として機種依存ファイルに記載される。以後、本明細書では、機能の無効な組み合わせを禁則と呼び、機種依存ファイルに記載される機能の無効な組み合わせの情報を禁則情報と呼ぶ。ユーザが印刷設定を変更することによって、機種依存ファイルに記載された機能の無効な組み合わせになった場合、Ｖ４プリンタドライバは、優先順位が最も低い機能を使用しないように強制的に設定を変更する。このように、印刷設定の無効な組み合わせ（禁則）が指定された際に行われる無効な組み合わせを解消する設定の変更処理は、禁則処理と呼ばれる。
【０００４】
印刷設定には、アプリケーションから変更が可能な印刷設定（例えば、用紙サイズや両面等の一般的な印刷設定）と、メーカーの独自機能でアプリケーションから変更ができない印刷設定が存在する。ユーザがアプリケーションから変更が可能な印刷設定のみを変更したい場合は、プリンタドライバのＵＩ（Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を開かずに印刷設定を変更する事が可能である。ただし、プリンタドライバのＵＩを開かずにアプリケーション側で印刷設定を変更した場合、禁則処理をプリンタドライバ側で行うことができないため、ユーザが意図した印刷結果にならない場合がある。特許文献１は、従来のアーキテクチャであるＶ３プリンタドライバにおいて禁則が検出された場合に、ユーザに禁則の印刷設定を通知すると共に、その印刷設定の内容について機能の再設定操作を行わせる画面を表示する技術を開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１４５９５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来技術は、アーキテクチャのＶ３ドライバを想定した技術であるため、新しいアーキテクチャのＶ４プリンタドライバではアーキテクチャ上の制限で実現することができない。
また、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄ（商標登録）等、アプリケーションの中には、プリンタドライバの機種依存ファイルに記述された禁則情報を解釈し、禁則処理が必要と判断した場合にドライバのＵＩの起動を促すものがある。しかし、これらのアプリケーションであっても、プリンタドライバの機種依存ファイルに記述された全ての禁則情報を解釈できるわけではなく、特定の機能を含む禁則情報しか解釈できない。
【０００７】
本発明は、アプリケーションにおける印刷設定の禁則の判定を高精度に行うことができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明の情報処理装置は、印刷設定を行うアプリケーションとプリンタドライバを有する情報処理装置であって、印刷機能に関する設定値と、同時に設定することが禁止されている印刷機能の設定値の組み合わせを示す第１の禁則情報と、前記第１の禁則情報に対応する前記アプリケーションで解釈可能な特定の禁則条件を含む第２の禁則情報とを含む機種依存情報を管理する管理手段と、印刷設定が、前記アプリケーションで解釈可能な特定の禁則条件を含む前記第１の禁則情報もしくは前記第２の禁則情報に該当するか否かを判定する第１の判定手段と、前記第１の判定手段が該当すると判定した場合に、ユーザに前記プリンタドライバの起動を促す表示を行う表示手段と、を備える。
【発明の効果】
【０００９】
本発明によれば、アプリケーションにおける印刷設定の禁則の判定を高精度に行うことができる情報処理装置を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】情報処理装置のハードウェア構成の一例を示す図である。
【図２】Ｖ４プリンタドライバを利用した印刷処理を説明する図である。
【図３】印刷設定処理のフローチャートである。
【図４】機種依存ファイルの一例を示す図である。
【図５】機種依存ファイルの一例を示す図である。
【図６】禁則情報の一例を示す図である。
【図７】禁則情報の一例を示す図である。
【図８】禁則情報の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための最良の形態について図面を用いて説明する。ユースケース毎に７つの機種依存ファイルの記述方法を説明し、それぞれを第１実施形態から第７実施形態とする。第１実施形態を基本形態として説明し、第２実施形態から第７実施形態は第１実施形態との差分を説明する。
【００１２】
（第１実施形態）
図１は、一般的なコンピュータを用いたシステムのブロック構成図である。印刷システムは、ＣＰＵ１０１、主記憶装置１０２、入力Ｉ／Ｆ１０３、出力Ｉ／Ｆ１０４、補助記憶装置１０５および通信Ｉ／Ｆを有し、これらはシステムバス１０７を介して接続されている。
【００１３】
ＣＰＵ１０１は、主記憶装置１０２のＲＯＭ１０２１あるいはＲＡＭ１０２２あるいは補助記憶装置１０５に格納されたプログラムに従って、装置全体の制御を行う。
主記憶装置１０２は、ＲＯＭ１０２１およびＲＡＭ１０２２を備える。ＲＯＭ１０２１は、各種プログラムを記憶している。ＲＡＭ１０２２は、ＣＰＵ１０１が各種処理を行う際のワークメモリであり、また、一時的に各種データを記憶する。本実施形態における各コンポーネントの処理は、すべてＲＡＭ１０２２に読み込んで動作する。
【００１４】
補助記憶装置１０５は、アプリケーション１０５１、プリンタドライバ１０５２およびオペレーティングシステム（ＯＳ）１０５３等を記録する。アプリケーション１０５１は、例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄ（商標登録）やＭｉｃｒｏｓｏｆｔ  Ｅｘｃｅｌ（商標登録）など、印刷設定も行うことのできるアプリケーションである。プリンタドライバ１０５２は、印刷機能を持つデバイスに対して、印刷指示を行うことができる。ＯＳ１０５３は、例えば、Ｗｉｎｄｏｗｓ（商標登録）などのコンピュータ全体を制御するオペレーティングシステムである。アプリケーション１０５１、プリンタドライバ１０５２およびＯＳ１０５３に係るプログラムは、補助記憶装置１０５に記憶されており、ＲＡＭ１０２２にロードされ、ＣＰＵ１０１によって実行される。アプリケーション１０５１およびプリンタドライバ１０５２は、ＯＳ１０５３上で動作している。本実施形態におけるプリンタドライバ１０５２は、Ｖ４プリンタドライバである。
【００１５】
入力Ｉ／Ｆ１０３は、コンピュータに対するユーザからの指示を、キーボード１０３１やマウス・タッチパネルなどに代表されるポインティングデバイス１０３２などの入力機器を介して受け付けるインターフェースである。出力Ｉ／Ｆ１０４は、データを外部に出力するためのインターフェースであり、モニタ１０４１やプリンタ１０４２などの出力機器に対してデータを出力する。出力Ｉ／Ｆ１０４とプリンタ１０４２とは、直接接続されるローカルＩ／Ｏのみならず、通信Ｉ／Ｆ１０６およびネットワーク１０６１を介して接続されていてもよい。通信Ｉ／Ｆ１０６は、ネットワーク１０６１に接続され、外部装置と通信する。ネットワーク１０６１は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などのネットワークである。
【００１６】
図２は、Ｖ４プリンタドライバを利用した印刷処理を説明する図である。本実施形態のプリンタドライバ１０５２は、Ｗｉｎｄｏｗｓ（登録商標）のオペレーティングシステム上で動作するｖｅｒｓｉｏｎ４のプリンタドライバ（Ｖ４プリンタドライバ）である。Ｖ４プリンタドライバを利用した印刷処理では、ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（以下、ＸＰＳとする）と呼ばれるファイルフォーマットをスプールデータとして使用し、印刷を行う。ドライバ印刷システムは、ＯＳ１０５３上で動作している。
【００１７】
プリントマネージャ（スプーラ）３１８、ポートモニタ３１９、ＧＤＩｔｏＸＰＳ変換モジュール３０７およびフィルタパイプラインマネージャ３１２は、ＯＳ１０５３に含まれるモジュールである。このうち、ＧＤＩｔｏＸＰＳ変換モジュール３０７およびフィルタパイプラインマネージャ３１２は、プリンタドライバ１０５２に含まれているが、ＯＳ１０５３から提供されているプリンタドライバ１０５２専用のモジュールという位置づけである。
【００１８】
ＧＤＩ（Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）とは、プリンタの印刷イメージの生成を行うグラフィックスコンポーネントである。ＧＤＩｔｏＸＰＳ変換モジュール３０７は、ＧＤＩで描画されたデータをＸＰＳデータへ変換する機能を有する。フィルタパイプラインマネージャ３１２は、ＸＰＳ印刷パスの特徴であるフィルタ印刷処理の管理を行うモジュールである。ポートモニタ３１９は、デバイスにアクセスするプリントマネージャ３１８とプリンタドライバ間で通信を制御することができ、プリンタドライバは、ポートモニタ３１９を経由して印刷処理を行う。
【００１９】
プリンタドライバ１０５２は、フィルタパイプラインマネージャ３１２のレイアウトフィルタ３１４とレンダラーフィルタ３１５、およびデバイスアプリ３１０を含む。デバイスアプリ３１０は、プリンタドライバ１０５２の情報処理装置へのインストール処理に連動して、情報処理装置にインストールされる。
【００２０】
アプリケーション１０５１は、ＧＤＩ印刷アプリケーション（以下、ＧＤＩアプリ）３０１およびＸＰＳ印刷アプリケーション（以下、ＸＰＳアプリ）３０２を含む。ＧＤＩアプリ３０１は、ＯＳ１０５３が用意するＧＤＩを使用して印刷を行うアプリケーションである。ＸＰＳアプリ３０２は、ＸＰＳスプールファイル３０６を直接使用して印刷を行うアプリケーションである。
【００２１】
ユーザは、キーボード１０３１やポインティングデバイス１０３２等の入力装置を使用して、出力装置のモニタ１０４１に映し出されたアプリケーション１０５１から印刷処理を指示する。このアプリケーション１０５１は、ＧＤＩアプリ３０１もしくはＸＰＳアプリ３０２を指す。印刷処理は、「プリンタの選択」、「印刷設定データの作成」、「描画データの変換」という３つの処理を順番に実行されることで実現される。以下、印刷処理の流れを説明する。
【００２２】
まず、印刷したいプリンタ１０４２の選択をする。アプリケーション１０５１は、ユーザによるアプリケーション１０５１の画面を介した操作に基づいて、印刷したいプリンタ１０４２を選択する。ユーザから見るとプリンタ１０４２の選択は、印刷を実行するプリンタ１０４２に対応したプリンタドライバ１０５２を選択することと同義である。プリンタドライバ１０５２の選択には、例えば、不図示のプリントキューを利用する。
【００２３】
次に、印刷設定データを作成する。印刷設定データは、印刷処理に関する各機能の設定値等を含むデータであり、印刷処理に利用される。印刷設定データには、例えば、出力する用紙サイズの情報（例えば「Ａ４」）、両面印刷の指定、カラーと白黒、給紙段の指定等の印刷に必要な設定値が含まれる。印刷設定データの作成の際、アプリケーション１０５１は、印刷設定データ用のメモリ領域をＲＡＭ１０２２に確保する。そして、アプリケーション１０５１は、プリンタドライバ１０５２のコンフィグモジュール３０８を介して、印刷設定データを作成し、作成した印刷設定データをＲＡＭ１０２２に確保した領域に格納する。
【００２４】
ＧＤＩアプリ３０１では、印刷設定データとしてバイナリのＤＥＶＭＯＤＥ構造体３０３を用いる。ＸＰＳアプリ３０２では、印刷設定データとしてマークアップ言語のＸＭＬ（ｅＸｔｅｎｓｉｖｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）で記載されたプリントチケット３０４を用いる。ＤＥＶＭＯＤＥ構造体３０３は、ＯＳ１０５３が定義する標準領域とプリンタドライバ１０５２が独自で定義する拡張領域とを含む。プリントチケット３０４は、ＸＭＬ形式で記述された印刷設定データである。プリントチケット３０４では、名前空間によって標準領域と拡張領域との記載が分かれている。アプリケーション１０５１は、ＤＥＶＭＯＤＥ構造体３０３もしくはプリントチケット３０４の内容を書き換えることで印刷設定を変更する。
【００２５】
印刷設定データがＤＥＶＭＯＤＥ構造体３０３で表されている場合、印刷設定データの標準領域は、仕様が外部に公開されている。そのため、ＧＤＩアプリ３０１は、直接、印刷設定データの標準領域の内容を変更する。印刷設定データのプリンタ１０４２に依存した拡張領域は、プリンタドライバ１０５２のみに詳細な仕様が把握されている。そのため、デバイスアプリ３１０は、ユーザインターフェースを介したユーザの操作に基づいて、印刷設定データの拡張領域の内容を変更する。
【００２６】
印刷設定データがプリントチケット３０４で表されている場合、設定値がＸＭＬ形式で記述されているので、ＸＰＳアプリ３０２は、全ての設定値を直接変更することができる。しかし、印刷設定データの拡張領域は、プリンタドライバ１０５２ごとの独自定義であるため、プリンタ１０４２によって仕様が異なり、詳細な仕様まではＸＰＳアプリ３０２により把握されない。そのため、デバイスアプリ３１０は、ユーザインターフェースを介したユーザの操作に基づいて、印刷設定データの拡張領域の設定値を変更する。
【００２７】
印刷設定データには機種固有の情報も含まれているので、コンフィグモジュール３０８は、機種依存ファイル３０９を利用して、印刷設定データを作成する。機種依存ファイル３０９は、ＧＰＤ（Ｇｅｎｅｒｉｃ  Ｐｒｉｎｔｅｒ  Ｄｅｓｃｒｉｐｔｉｏｎ）と呼ばれる印刷設定定義ファイルを指し、プリンタ（機種）ごとの設定に関する情報（機種依存情報）が定義されている。機種依存ファイル３０９は、後述の図４に示すようにテキストベースで記載されている。機種依存ファイル３０９には、印刷設定データに含まれる各機能の設定値と、印刷設定データに含まれる各機能の設定値の無効な組み合わせの情報、すなわち「禁則情報」を記載することができる。禁則情報に記載されている設定値の組み合わせは、設定が禁止されている無効な組み合わせである。禁則情報に記載されていない設定値の組み合わせは、許可されている組み合わせである。ユーザが印刷設定を変更することによって、機種依存ファイル３０９に記載された無効な組み合わせになった場合、プリンタドライバ１０５２は、定義された禁則に従い、優先順位が最も低い機能を使用しないように強制的に設定を変更する。このように印刷設定の無効な組み合わせが指定された際に行われる無効な組み合わせを解消するような設定の変更処理を禁則処理と呼ぶ。ここで、各機能の設定値の無効な組み合わせとは、プリンタ１０４２の機能として提供できないものの他に、意図的にユーザに使用してほしくない項目も含まれる。
【００２８】
デバイスアプリ３１０は、プリンタドライバ１０５２に含まれるが、プリンタドライバ１０５２とは別のプログラムとしてインストールされる。デバイスアプリ３１０は、ＤＥＶＭＯＤＥ構造体３０３もしくはプリントチケット３０４を使用して、プリンタドライバ１０５２と印刷設定データをやりとりする。デバイスアプリ３１０は、コンフリクトエンジン３１０１を含む。コンフリクトエンジン３１０１は、印刷設定データの各機能に無効な組み合わせの設定値が設定された場合、無効ではない組み合わせの設定値が設定されている印刷設定データを作成する。印刷設定データに含まれる各機能の設定値の無効な組み合わせの情報が機種依存ファイル３０９に記載されているので、コンフリクトエンジン３１０１は、ユーザインターフェースを表示する前に、機種依存ファイル３０９を読み込む。プリンタドライバ１０５２は、ユーザインターフェースを介したユーザの操作に基づいて、ＤＥＶＭＯＤＥ構造体３０３もしくはプリントチケット３０４で表されたプリンタ１０４２に依存した設定を変更する。印刷設定データは印刷処理ごとに必要となるので、印刷を実行するたびに、アプリケーション１０５１は、印刷設定データを作成する。
【００２９】
プリンタドライバ１０５２は、プリンタ１０４２のオプション機器やユーザごとの環境設定等を、ＯＳ１０５３のレジストリデータベース３０５またはプロパティバッグ３１７に保存する。ＯＳ１０５３のプリントマネージャ３１８は、印刷設定データのデフォルト値を、レジストリデータベース３０５に保存する。レジストリデータベース３０５およびプロパティバッグ３１７は、補助記憶装置１０５に保存される。
【００３０】
最後に、描画データの変換処理を行う。印刷設定データが確定したら、アプリケーション１０５１は、ユーザインターフェースを介したユーザの操作に基づいて、プリンタ１０４２に印刷処理を指示する。
【００３１】
アプリケーション１０５１は、ＧＤＩアプリ３０１を介して印刷処理の指示をする場合、ＧＤＩｔｏＸＰＳ変換モジュール３０７に対して、描画データを送信する。ＧＤＩｔｏＸＰＳ変換モジュール３０７は、ＸＰＳスプールファイル３０６を作成する。ＸＰＳスプールファイル３０６を作成する際、ＧＤＩｔｏＸＰＳ変換モジュール３０７は、コンフィグモジュール３０８を呼び出し、印刷設定データをＤＥＶＭＯＤＥ構造体３０３からプリントチケット３０４に変換する。ＧＤＩｔｏＸＰＳ変換モジュール３０７は、印刷設定データの変換の際に、ＤＥＶＭＯＤＥ−プリントチケット変換モジュール３０８１を使用する。ＤＥＶＭＯＤＥ−プリントチケット変換モジュール３０８１は、プロパティバッグ３１７の情報を読み書きできるので、デバイスアプリ３１０が保存したデータを参照して、印刷設定データを変換することもできる。
【００３２】
アプリケーション１０５１は、ＸＰＳアプリ３０２を介して印刷処理の指示をする場合、ＸＰＳスプールファイル３０６の生成方法には二通りある。一つは、ＸＰＳアプリ３０２自らが、ＸＰＳスプールファイル３０６を生成する方法である。もう一つは、ＯＳ１０５３が、ＸＰＳアプリ３０２からの描画命令に応じてＸＰＳスプールファイル３０６を生成する方法である。
【００３３】
アプリケーション１０５１がＧＤＩアプリ３０１を介して印刷処理の指示をする場合、ＸＰＳアプリ３０２を介して印刷処理の指示をする場合、どちらの場合であっても、ＸＰＳスプールファイル３０６は、印刷処理の途中で生成される。このように、Ｖ４プリンタドライバであるプリンタドライバ１０５２を用いた印刷処理では、印刷の際に必ず描画データに基づくＸＰＳスプールファイル３０６が生成される点が特徴である。
【００３４】
印刷処理は、ＸＰＳスプールファイル３０６がプリントフィルタパイプライン３１１内のフィルタに受け渡されることで行われ、それぞれのフィルタがＸＰＳスプールファイル３０６に加工処理を施し、後続のフィルタに渡していくことで処理が進む。最終的に、ＸＰＳスプールファイル３０６は、プリントフィルタパイプライン３１１の各フィルタ処理により印刷ジョブに変換され、プリンタ１０４２に送信される。プリンタ１０４２は、印刷ジョブを解釈可能であり、送信された印刷ジョブを解釈することで印刷ジョブに基づく印刷処理を実行する。
【００３５】
プリントフィルタパイプライン３１１は、生成されたＸＰＳスプールファイル３０６を取得し、複数のフィルタの処理を実行する。本実施形態においてプリントフィルタパイプライン３１１は、レイアウトフィルタ３１４およびレンダラーフィルタ３１５の処理を行う。なお、プリントフィルタパイプライン３１１に含まれるフィルタは、プリンタドライバ１０５２の構成によって、数や種類が異なる。例えば、プリントフィルタパイプライン３１１は、レイアウトフィルタ３１４、レンダラーフィルタ３１５の２つのフィルタに加えて、更に、印刷ジョブを暗号化するための暗号化フィルタ等を含んでいてもよい。プリントフィルタパイプライン３１１内のそれぞれのフィルタは、独自のデータをプロパティバッグ３１７に保存することができる。また、プリントフィルタパイプライン３１１内のそれぞれのフィルタは、プロパティバッグ３１７から、ＯＳ１０５３の情報や、他のフィルタのデータを取得することもできる。
【００３６】
フィルタコンフィギュレーションファイル３１６は、プリントフィルタパイプライン３１１の含むフィルタの数や処理を行うフィルタの順番を制御する。フィルタパイプラインマネージャ３１２は、フィルタコンフィギュレーションファイル３１６に従って、レイアウトフィルタ３１４、レンダラーフィルタ３１５の順に、それぞれのフィルタに処理を実行させる。
【００３７】
レイアウトフィルタ３１４は、倍率の変更や製本の面付けレイアウト、スタンプなどレイアウトに関する処理を行う。レンダラーフィルタ３１５は、入力されたＸＰＳスプールファイル３０６をレンダリングしてページ記述言語（以下、ＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）とする）に変換する。また、レンダラーフィルタ３１５は、プリントチケット３０４の印刷設定データの標準領域の設定を、プリンタジョブ言語（以下、ＰＪＬ（Ｐｒｉｎｔｅｒ  Ｊｏｂ  Ｌａｎｇｕａｇｅ）とする）に変換する。レンダラーフィルタ３１５は、後続のフィルタが存在する場合、ＰＤＬとＰＪＬとをまとめて印刷ジョブとして、後続のフィルタにストリームデータとして渡す。レンダラーフィルタ３１５は、後続のフィルタが存在しない場合、変換したＰＤＬとＰＪＬとをまとめて印刷ジョブとして、フィルタパイプラインマネージャ３１２に渡す。
【００３８】
フィルタパイプラインマネージャ３１２は、渡された印刷ジョブを、印刷処理のスケジュール管理を行うプリントマネージャ３１８に送信する。プリントマネージャ３１８は、送信された印刷ジョブを次々とキュー（待ち行列）に登録する。プリントマネージャ３１８は、プリンタ１０４２と通信して、プリンタ１０４２が印刷できる状態になり次第、ポートモニタ３１９を介して、印刷ジョブをキューに登録した順にプリンタ１０４２に送信する。
【００３９】
以上のように、プリンタドライバ１０５２の主な役目は、描画データ及び印刷設定データを印刷ジョブに変換することである。情報処理装置は、プリンタドライバ１０５２により変換された印刷ジョブをプリンタ１０４２に送信することで、プリンタ１０４２に対して印刷処理の指示を行う。
【００４０】
なお、本実施形態では、印刷処理を例としているため、プリンタドライバの処理について説明したが、本実施形態の処理は、ＦＡＸ送信処理の際にも適用することができる。その場合、プリンタドライバ１０５２は、レンダラーフィルタ３１５の代わりにＦＡＸデータを作成するＦＡＸフィルタを含み、ＦＡＸ機器に送信するＦＡＸドライバとなる。
【００４１】
図３は、印刷設定処理のフローチャートである。印刷設定処理に係るアプリケーション１０５１とデバイスアプリ３１０のプログラムは、補助記憶装置１０５に記憶されており、ＲＡＭ１０２２に読み出されＣＰＵ１０１によって実行される。また、本実施形態において、アプリケーション１０５１はＧＤＩアプリ３０１の一つである、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄ（商標登録）を例に説明する。
【００４２】
まず、Ｓ１１０１で、アプリケーション１０５１は、ユーザの操作により印刷設定画面をモニタ１０４１に表示し、印刷設定処理を開始する。
Ｓ１１０２で、アプリケーション１０５１は、印刷設定画面におけるユーザの入力を受け付ける。ユーザが印刷設定画面において印刷設定を変更した場合は、再びＳ１１０２に戻る。ユーザが印刷設定画面においてデバイスアプリ３１０を起動した場合は、Ｓ１１０７に進む。ユーザが印刷設定画面において印刷実行を指示した場合、Ｓ１１０３に進む。
【００４３】
Ｓ１１０３で、アプリケーション１０５１は、印刷設定が不整合であるか否かを判定する。本実施形態において、印刷設定が不整合であるか否かは、印刷設定が禁則情報に該当するか否かで判定される。印刷設定が機種依存ファイル３０９に記載の禁則情報に該当する場合は、印刷設定が不整合であると判定され、Ｓ１１０４に進む。一方、現在の印刷設定が不整合ではないと判断した場合、Ｓ１１０６に進み、アプリケーション１０５１の印刷設定処理は終了する。
【００４４】
なお、詳しくは後述するが、アプリケーション１０５１が判定を行える禁則情報は、機種依存ファイル３０９に記載の禁則情報のうち、アプリケーション１０５１が解釈可能な特定の禁則条件を含む禁則情報に限られている。そのため、特定の禁則条件を含む禁則情報に対応する印刷設定が不整合となっていない場合は、印刷設定がプリンタ１０４２の禁則に該当する状態となっていたとしても、アプリケーション１０５１は印刷設定が不整合な状態になっていることを判断できない。すなわち、現在設定されている印刷設定が機種依存ファイル３０９に定義されている禁則情報に合致する場合でも、Ｓ１１０３にて不整合な印刷設定と判断できず、デバイスアプリ３１０が起動されず禁則処理が行われない場合があった。そこで、本実施形態では、アプリケーション１０５１が解釈できなかった禁則情報を解釈できる記載に変更し、Ｓ１１０３にて不整合な印刷設定として判断できるようにする。Ｓ１１０３にて不整合な印刷設定と判断されることで、デバイスアプリ３１０で禁則処理を行うことができるようになる。
【００４５】
Ｓ１１０４で、アプリケーション１０５１は、エラー画面をモニタ１０４１に表示する。エラー画面には、例えば、現在の印刷設定が競合エラーであることを示すメッセージとデバイスアプリ３１０の起動を促すメッセージとをモニタ１０４１に表示する。
Ｓ１１０５で、アプリケーション１０５１は、エラー画面におけるユーザの入力を受け付ける。ユーザがデバイスアプリ３１０を起動した場合は、Ｓ１１０７に進む。一方、ユーザがデバイスアプリ３１０を起動せず、不整合な印刷設定のまま印刷を実行することを選択した場合は、アプリケーション１０５１の印刷設定処理は終了する。
【００４６】
アプリケーション１０５１でユーザによりデバイスアプリ３１０の起動が指示されると、印刷設定処理はアプリケーション１０５１からデバイスアプリ３１０に移行する。Ｓ１１０７で、デバイスアプリ３１０は、印刷設定処理を開始する。
Ｓ１１０８で、デバイスアプリ３１０は、印刷設定の禁則処理を行う。禁則処理を行うことにより、不整合な印刷設定に設定されていた場合でも、不整合のない印刷設定に変更することができる。
【００４７】
Ｓ１１０９で、デバイスアプリ３１０は、ユーザの入力を受け付ける。ユーザが印刷設定を変更した場合は、Ｓ１１０８に戻り、再び禁則処理が行われる。一方、ユーザが印刷設定を変更せずに印刷設定を終了した場合は、Ｓ１１１０に進む。
Ｓ１１１０で、デバイスアプリ３１０は、デバイスアプリ３１０の印刷設定処理を終了し、アプリケーション１０５１の印刷設定処理へ移行する。
【００４８】
図４および図５は、機種依存ファイル３０９の一例を示す図である。機種依存ファイル３０９の１つであるＧＰＤの例を示す。機種依存ファイル３０９は、印刷設定データに含まれる機能（Ｆｅａｔｕｒｅ）の定義と禁則情報とを含む。図４および図５の機種依存ファイル３０９では、機能４５１（Ｄｕｐｌｅｘ）に両面印刷の機能が定義されている。また、機能４１１（ＦｕｎｃｔｉｏｎＡ）、機能４２１（ＦｕｎｃｔｉｏｎＢ）にそれぞれ、機能Ａ、機能Ｂの機能が適宜されている。さらに、機能４３１（Ｃｏｌｌａｔｅ）に部単位の機能が、機能４４１（Ｂｉｎｄｉｎｇ）に製本印刷の機能が定義されている。
【００４９】
機種依存ファイル３０９に定義されている各機能には、それぞれ設定値候補（オプション、Ｏｐｔｉｏｎ）が定義されており、設定値候補の中からいずれか１つが選択されることで、印刷設定データ内のその機能の設定値が決定される。例えば、機能４５１（Ｄｕｐｌｅｘ）には両面印刷印刷のオプションとして、３つのオプションが定義されている。この３つのオプションは、両面印刷を行わないオプション４５３（ＮＯＮＥ）、長辺綴じでの両面印刷を行うオプション４５４（ＶＥＲＴＩＣＡＬ）、短編綴じでの両面印刷を行うオプション（ＨＯＲＩＺＯＮＴＡＬ）である。
【００５０】
機種依存ファイル３０９の各機能には、初期状態で設定される設定値候補（デフォルト値、ＤｅｆａｕｌｔＯｐｔｉｏｎ）を定義することも可能である。情報処理装置が機種依存ファイル３０９を読み込んだ後、何の操作も行っていない状態では、印刷設定データ内の各機能の設定値は、デフォルト値となる。機能４５１（Ｄｕｐｌｅｘ）にはデフォルト値として、長辺綴じでの両面印刷を行うオプション４５４（ＶＥＲＴＩＣＡＬ）が定義されている。
【００５１】
機種依存ファイル３０９に定義されている各機能には、優先順位（ＣｏｎｆｌｉｃｔＰｒｉｏｒｉｔｙ）が設定されている。機能の優先順位は、数値の小さいものほど高く、数値が大きいものほど低い。機能４５１（Ｄｕｐｌｅｘ）には優先順位の数値として「６０００」が設定されている。また、機能４２１（ＦｕｎｃｔｉｏｎＢ）には優先順位の数値として「２１０００」が設定されており、機能４５１（Ｄｕｐｌｅｘ）と機能４２１（ＦｕｎｃｔｉｏｎＢ）が競合した場合には、数値の小さい機能４５１（Ｄｕｐｌｅｘ）の方が優先される。
【００５２】
機種依存ファイル３０９には、機能の定義に加え、禁則情報が定義されている。禁則情報は、機能と設定値候補との組（例えばＤｕｐｌｅｘとＶＥＲＴＩＣＡＬとの組）を複数含むリストとして機種依存ファイル３０９内に定義されている。図５に示される機種依存ファイル３０９には、禁則情報４０１〜禁則情報４０３が定義されている。禁則情報４０１には、機能４３１のオプション４３４と、機能４１１のオプション４１４が無効な組み合わせとして定義されている。禁則情報４０２には、機能４５１のオプション４５４と、機能４２１のオプション４２４が無効な組み合わせとして定義されている。禁則情報４０３には、機能４５１のオプション４５５と、機能４２１のオプション４２４が無効な組み合わせとして定義されている。
【００５３】
印刷設定データの機能の設定値の組み合わせが、禁則情報に記載された組み合わせと同一であった場合、その組み合わせは、無効な組み合せである。以後、禁則情報に含まれる機能と設定値候補との組（例えば、Ｄｕｐｌｅｘ．ＶＥＲＴＩＣＡＬ）を禁則条件と呼ぶ。印刷設定データの各機能に設定された設定値の組み合わせが、禁則情報に記載された無効な組み合わせであった場合、デバイスアプリ３１０は、優先順位が低い機能の設定値を他のデフォルト値の設定値に変更する処理を行う。例えば、印刷設定データに、禁則情報４０２に記載されている機能４５１のオプション４５４と機能４２１のオプション４２４が設定されていた場合、デバイスアプリ３１０は、優先順位が低い機能４２１のオプションをデフォルト値に変更する。
【００５４】
アプリケーション１０５１は、Ｓ１１０３で印刷設定が不整合か否かを判定する。この際、アプリケーション１０５１は、特定の禁則条件が禁則情報に含まれている場合に、印刷設定が不整合であると判定する。これは、アプリケーション１０５１の例であるＭｉｃｒｏｓｏｆｔ  Ｗｏｒｄ（商標登録）では、「特定の禁則条件が禁則情報に含まれていること」によって、アプリケーション１０５１側で禁則情報の解釈が可能となるからである。特定の禁則条件には、例えば、「Ｄｕｐｌｅｘ．ＶＥＲＴＩＣＡＬ」や「Ｄｕｐｌｅｘ．ＨＯＲＩＺＯＮＴＡＬ」が該当する。そのため、禁則情報に特定の禁則条件が含まれている禁則情報４０２および禁則情報４０３はアプリケーション１０５１側で解釈可能あり、アプリケーション１０５１は、禁則情報と印刷設定が合致した場合は不整合な印刷設定と判断する。一方、禁則情報に特定の禁則条件が含まれていない禁則情報４０１はアプリケーション１０５１側で解釈できないため、アプリケーション１０５１は、禁則情報と印刷設定が合致した場合でも不整合な印刷設定と判断できない。そこで、本実施形態では、特定の禁則条件が含まれていない禁則情報であっても、アプリケーション１０５１で不整合な印刷設定と判断できるようにする。
【００５５】
禁則情報４０１をアプリケーション１０５１に解釈させるための方法について、図６（Ａ）を用いて説明する。図６（Ａ）は、第１実施形態を説明するための禁則情報の一例である。なお、第１実施形態の機種依存ファイル３０９は、図５の機種依存ファイル３０９の禁則情報４０１を、図６（Ａ）に置き換えたファイルとなる。
【００５６】
まず、禁則情報４０１をアプリケーション１０５１で解釈可能にするために、禁則情報４０１の禁則条件の組み合わせに特定の禁則条件を追加する。禁則情報４０１に特定の禁則条件を追加したのが、禁則情報５０２および禁則情報５０３である。禁則情報５０２には、「Ｄｕｐｌｅｘ．ＶＥＲＴＩＣＡＬ」が追加され、禁則情報５０３には、「Ｄｕｐｌｅｘ．ＨＯＲＩＺＯＮＴＡＬ」が追加されている。禁則情報５０２および禁則情報５０３には、禁則情報をアプリケーション１０５１で解釈させるための特定の禁則条件が含まれている。そのため、禁則情報５０２もしくは禁則情報５０３に合致する印刷設定となった時、アプリケーション１０５１側で不整合な印刷設定と判断することが可能である。
【００５７】
次に、追加した禁則条件がプリンタドライバ１０５２の禁則処理に影響を与えるかをチェックする。禁則情報４０１を禁則情報５０２および禁則情報５０３に置き換えた場合、元の禁則情報と意味が異なっている。禁則情報４０１では、機能４５１のオプションによらず、機能４３１のオプション４３４と機能４１１のオプション４１４は常に無効な組み合わせであった。しかし、禁則情報４０１を禁則情報５０２および禁則情報５０３に置き換えた場合は、機能４５１のオプション４５３（Ｄｕｐｌｅｘ．ＮＯＮＥ）が設定されてても、機能４３１のオプション４３４と機能４１１のオプション４１４が無効な組み合わせとならない。
【００５８】
そこで、禁則情報４０１の置き換えがプリンタドライバ１０５２の禁則処理に影響を与えないようにするために、元の禁則情報４０１と全く同じ禁則情報を機種依存ファイル３０９に禁則情報５０１として追加する。したがって、禁則情報４０１は禁則情報５０１〜５０３に置き換えられる。禁則情報５０２および禁則情報５０３は、禁則情報５０１に記述されている禁則条件を全て含んでおり、禁則情報５０２または禁則情報５０３に合致する印刷設定の場合、必ず禁則情報５０１にも合致する。禁則情報５０２または禁則情報５０３に合致する印刷設定の場合、禁則条件の少ない禁則情報５０１が動作する仕様となっており、禁則情報５０２または禁則情報５０３は無効な禁則情報として扱われる。以下、禁則情報５０２および禁則情報５０３のように、他の禁則情報の存在により、意味を持たなくなってしまう禁則情報のことを包含された禁則と呼ぶ。
【００５９】
禁則情報５０２や禁則情報５０３のような包含された禁則は、禁則処理において意味を持たないが、アプリケーション１０５１において、印刷設定が禁則状態にあるかどうか判断する場合に使用される。元の禁則情報４０１を禁則情報５０１〜５０３に置き換えることで、元の禁則情報４０１から禁則情報の意味を変えずに、禁則情報５０２および禁則情報５０３をアプリケーション１０５１に解釈させることができる。そのため、Ｓ１１０３にて、図４および図５の記載では不整合と判断されない印刷設定が、図６（Ａ）のように記載することで不整合と判断されるようになる。これにより、デバイスアプリ３１０の起動を促すことができ、デバイスアプリ３１０にて禁則処理を行うことができる。また、デバイスアプリ３１０が行う禁則処理も従来と全く同じ処理を行うことができる。
【００６０】
本実施形態では、アプリケーション１０５１の例として、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄ（商標登録）を挙げたが、これに限られるものではなく、機種依存ファイル３０９の禁則情報を解釈できるアプリケーションであればよい。また、本実施形態では、特定の禁則条件の例として、「Ｄｕｐｌｅｘ．ＶＥＲＴＩＣＡＬ」および「Ｄｕｐｌｅｘ．ＨＯＲＩＺＯＮＴＡＬ」を例に挙げたが、これに限られるものではなく、アプリケーション１０５１で解釈できる禁則条件であればよい。また、禁則情報の定義方法はＭｉｃｒｏｓｏｆｔ（商標登録）が定義した記述方法がいくつか存在する。本実施形態では行頭に「＊ＩｎｖａｌｉｄＣｏｍｂｉｎａｔｉｏｎ」を記述する形式で禁則情報を定義しているが、その他の定義方法(例えば、行頭に「＊Ｃｏｎｓｔｒａｉｎｔｓ」を記述する形式)でもよい。
【００６１】
以上説明したように、本実施形態によると、アプリケーション１０５１で解釈できない禁則情報に、アプリケーション１０５１で解釈可能な特定の禁則条件を追加することで、アプリケーション１０５１側で印刷設定の禁則をより高精度に判定することができる。
【００６２】
（第２実施形態）
第１実施形態では、他の禁則に包含された禁則情報（禁則情報５０２および禁則情報５０３）が機種依存ファイル３０９に追加されてしまう。機種依存ファイル３０９の記載はベンダーに依存するが、ベンダーによっては他の禁則に包含される禁則情報の記載を許していない可能性がある。他の禁則に包含される禁則情報の記載が許されない場合、第１実施形態が適用できない場合がある。そのため、本実施形態では、第１実施形態とは異なる、禁則情報４０１をアプリケーション１０５１に解釈させるための方法を、図６（Ｂ）を用いて説明する。図６（Ｂ）は、第２実施形態を説明するための禁則情報の一例である。なお、第２実施形態の機種依存ファイル３０９は、図５の機種依存ファイル３０９の禁則情報４０１を、図６（Ｂ）に置き換えたファイルとなる。
【００６３】
本実施形態では、禁則情報６０１〜６０３のように、特定の禁則条件に該当する機能の全オプションを禁則条件に追加する。具体的には、禁則情報４０１に、特定の禁則条件「Ｄｕｐｌｅｘ．ＶＥＲＴＩＣＡＬ」に該当する機能４５１（Ｄｕｐｌｅｘ）の全オプションを追加している。オプション４５３（Ｎｏｎｅ）を追加したものが禁則情報６０１、オプション４５４（ＶＥＲＴＩＣＡＬ）を追加したものが禁則情報６０２、オプション４５５（ＨＯＲＩＺＯＮＴＡＬ）を追加したものが禁則情報６０３である。
【００６４】
このように、機能の全オプションが禁則条件に追加されている場合、該当機能の設定値によらず、残りの禁則条件が現在の印刷設定に合致しているかで、現在の印刷設定が無効な組み合わせかどうか決まる。つまり、禁則情報６０１〜６０３は元の禁則情報４０１と同じ意味となる。そのため、本実施形態においても、元の禁則情報４０１から禁則情報の意味を変えずに、禁則情報６０２および禁則情報６０３をアプリケーション１０５１に解釈させることができる。
【００６５】
以上説明したように、本実施形態では、アプリケーション１０５１で解釈できない禁則情報に、アプリケーション１０５１で解釈可能な特定の禁則条件の印刷機能のすべての設定値をそれぞれ追加する。そのため、アプリケーション１０５１側で印刷設定の禁則をより高精度に判定することができる。
【００６６】
（第３実施形態）
本実施形態では、アプリケーション１０５１が解釈可能な禁則条件を加えるための他の機種依存ファイル３０９について図６（Ｃ）および図６（Ｄ）を用いて説明する。図６（Ｃ）および図６（Ｄ）は、第３実施形態を説明するための禁則情報の一例である。
まず、図６（Ｃ）に示される禁則情報９０１、禁則情報９０２が機種依存ファイル３０９に記述されているとする。禁則情報９０１には、機能４４１のオプション４４４と、機能４５１のオプション４５３が無効な組み合わせとして定義されている。禁則情報９０２には、機能４４１のオプション４４４と、機能４１１のオプション４１４が無効な組み合わせとして定義されている。
【００６７】
禁則情報９０１は、機能４４１がオプション４４４の場合には、機能４５１はオプション４５４またはオプション４５５になることと同義である。したがって、禁則情報９０２は、機能４４１のオプション４４４と、機能４１１のオプション４１４と、機能４５１のオプション４５４またはオプション４５５の組み合わせに置き換えることができる。禁則情報９０２をこのように置き換えたものが、図６（Ｄ）の禁則情報１００２および禁則情報１００３であり、図６（Ｃ）の禁則情報を置き換えたものが図６（Ｄ）の禁則情報である。図６（Ｄ）の禁則情報１００２および禁則情報１００３は、アプリケーション１０５１が解釈可能な条件を含んでいるため、アプリケーション１０５１側で禁則処理が可能である。このように、本実施形態では、禁則情報９０１に基づいて禁則情報９０２を限定してアプリケーション１０５１で解釈可能な条件に置き換えることで、アプリケーション１０５１側で禁則処理を可能にすることができる。
【００６８】
以上説明したように、本実施形態では、アプリケーション１０５１で解釈できない禁則情報に、アプリケーション１０５１で解釈可能な特定の禁則条件のすべてをそれぞれ追加する。そのため、アプリケーション１０５１側で印刷設定の禁則をより高精度に判定することができる。
【００６９】
（第４実施形態）
第１実施形態から第３実施形態は、デバイスアプリ３１０でコンフリクトエンジン３１０１を通して機種依存ファイル３０９の禁則情報を解釈していた。しかしながら、プリンタドライバによっては、機種依存ファイル３０９の禁則情報を使用せずに、デバイスアプリ３１０側で独自に禁則情報を持っている場合もある。本実施形態では、デバイスアプリ３１０が独自に持つ禁則情報で禁則処理を行うケースについて図６（Ｅ）を用いて説明する。図５（Ｅ）は、第３実施形態を説明するための禁則情報の一例である。なお、第３実施形態の機種依存ファイル３０９は、図５の機種依存ファイル３０９の禁則情報４０１を、図６（Ｅ）に置き換えたファイルとなる。
【００７０】
本実施形態では機種依存ファイル３０９の禁則情報はデバイスアプリ３１０側で使用されていないため、機種依存ファイル３０９の禁則情報をアプリケーション１０５１に禁則処理を行ってもらう目的でのみ記述することができる。第１実施形態から第３実施形態では、元の禁則情報から意味を変えないように禁則条件を追加する必要があったが、本実施形態の場合は、元の禁則の意味を考慮する必要がなく、アプリケーション１０５１側で解釈できる禁則情報のみを記載すればよい。そのため、禁則情報４０１を、アプリケーション１０５１が解釈できる特定の禁則条件を含む禁則情報７０１および禁則情報７０２に置き換えるだけでよい。
【００７１】
（第５実施形態）
第１実施形態から第４実施形態は、「特定の禁則条件に該当する機能」をプリンタドライバ１０５２がサポートしている前提の実施形態であった。しかしながら、「特定の禁則条件に該当する機能」をプリンタドライバ１０５２がサポートしていない場合もある。本実施形態では、「特定の禁則条件に該当する機能」をプリンタドライバ１０５２がサポートしていない場合における機種依存ファイル３０９について説明する。
【００７２】
本実施形態における、アプリケーション１０５１が解釈できるが、プリンタドライバ１０５２がサポートしていない特定の禁則条件を「ＦｕｎｃｔｉｏｎＣ．Ｏｎ」とする。また、「ＦｕｎｃｔｉｏｎＣ．Ｏｎ」以外の禁則条件（例えば、ＦｕｎｃｔｉｏｎＣ．Ｏｆｆ等）は特定の禁則条件に該当しないこととする。アプリケーション１０５１に解釈させたい禁則情報を図５の禁則情報４０１とすると、禁則情報４０１は図７（Ａ）禁則情報１４０４に置き換えられ、さらに、機種依存ファイル３０９には機能１４０１が追加される。
【００７３】
図７（Ａ）は、本実施形態の機種依存ファイル３０９の一部を示す図である。まず、禁則情報４０１をアプリケーション１０５１に解釈させるための条件となる禁則判定用の機能１４０１を機種依存ファイル３０９に定義する。機能１４０１のサポートするオプション１４０３は、アプリケーション１０５１が解釈可能な特定の禁則条件に合致するオプションのみサポートする。したがって、機能１４０１は、１つのオプション（設定値）のみを有する。また、機能１４０１は禁則情報をアプリケーション１０５１に解釈させるためのみに使用するため、禁則処理時にオプションの変更の対象になるべきではない。そのため、機能１４０１の優先度１４０２は他の機能に比べて高くなるよう、ＣｏｎｆｌｉｃｔＰｒｉｏｒｉｔｙに他の機能に比べ小さい値を設定する。
【００７４】
禁則情報をアプリケーション１０５１が解釈できるように、機能１４０１のオプション１４０３を禁則情報４０１の組み合わせに追加して、禁則情報１４０４とする。アプリケーション１０５１が解釈可能な特定の禁則条件を機種依存ファイル３０９に記述することで、プリンタドライバ１０５２が「特定の禁則条件に該当する機能」をサポートしていない場合でも、アプリケーション１０５１で禁則情報を確認することができる。なお、本実施形態では機能１４０１はアプリケーション１０５１に禁則情報を解釈させる目的のみで存在しているため、デバイスアプリ３１０は機能１４０１をＵＩに表示しない方がよい。
【００７５】
（第６実施形態）
第５実施形態の機種依存ファイル３０９の一部を示す図７（Ａ）を図７（Ｂ）に置き換えたものを第６実施形態とする。本実施形態では、禁則情報をアプリケーション１０５１に解釈させるための機能をユーザに公開し、ユーザが該機能の設定値を切り替えることで、アプリケーション１０５１側で禁則処理を行うかどうかを選択できるようにする方法を説明する。なお、本実施形態は第５実施形態との差分について説明し、特に説明がない部分においては第５実施形態と同様とする。
【００７６】
まず、禁則情報４０１をアプリケーション１０５１に解釈させるための条件となる禁則判定用の機能１５０１を機種依存ファイル３０９に定義する。機能１５０１のオプションは、アプリケーション１０５１側で解釈可能なオプション１５０３とアプリケーション１０５１側で解釈不可能なオプション１５０４の両方をサポートする。本実施形態では機能１５０１をユーザに公開し、ユーザは機能１５０１の２つのオプションをデバイスアプリ３１０から切り替えることで、アプリケーション１０５１側で禁則処理を行うか、行わないかを選択することができる。すなわち、アプリケーション１０５１側で禁則処理を行う場合には、アプリケーション１０５１側で解釈可能なオプション１５０３を選択する。一方、アプリケーション１０５１側で禁則処理を行わない場合は、アプリケーション１０５１側で解釈できないオプション１５０４を選択する。
【００７７】
禁則情報１５０５および禁則情報１５０６は、機能１５０１のオプションが異なる以外は同じ禁則情報である。また、禁則情報１５０５と禁則情報１５０６を合わせると、機能１５０１の全てのオプションを網羅している。そのため、禁則情報１５０５と禁則情報１５０６は元の禁則情報４０１と同じ意味となる。この考え方は、第２実施形態で説明したものと同じである。そのため、デバイスアプリ３１０における禁則処理は、本実施形態の適用前と適用後で挙動が一切変わらない。
一方、アプリケーション１０５１は、禁則情報１５０６を解釈することができないため、印刷設定が禁則情報１５０５に合致した時のみ禁則状態と判断し、禁則処理を行う。これは、機能１５０１がオプション１５０３の時はアプリケーション１０５１側の禁則処理が行われ、機能１５０１がオプション１５０４の時はアプリケーション１０５１で禁則処理が行われないことを意味する。本実施形態によれば、ユーザはデバイスアプリ３１０の禁則処理に影響を与えることなく、デバイスアプリ３１０から機能１５０１の設定を変更し、アプリケーション１０５１側で禁則情報を解釈するかどうかを選択することができる。
【００７８】
（第７実施形態）
機種依存ファイル３０９の禁則情報は、項目数が多くなりすぎると、プリンタドライバ１０５２がインストールできなくなる現象が判明している。そのため、機種依存ファイル３０９の禁則情報は不必要に増やすべきではない。また、機種依存ファイル３０９は「＊Ｄｅｆｉｎｅ」や「＊Ｉｆｄｅｆ」等のプリプロセッサ指示文を使用することで、アプリケーション１０５１に読み込ませる記述を制限することができる。本実施形態では、プリプロセッサ指示文を使用することで、アプリケーション１０５１に読み込ませる禁則情報を減らす。第１実施形態の禁則情報の例を表す図６（Ａ）を、図８に置き換えたものを第７実施形態とする。なお、本実施形態のように記述してアプリケーション１０５１に読み込ませる禁則情報を減らすことは、第１実施形態から第６実施形態のいずれにも適用することができる。また、本実施形態の説明で用いるプリプロセッサ指示文の使い方は、Ｃ言語等の一般的なプログラミング言語の使い方と同様である。
【００７９】
機種依存ファイル３０９は「＊Ｄｅｆｉｎｅ」によって、任意の文字列をシンボルとして定義することができるが、本実施形態では、「＊Ｄｅｆｉｎｅ」によるシンボル定義は行っていない。そのため、＊Ｉｆｄｅｆ行８１１に記述されている文字列「ＰＲＩＮＴＥＲＥＸＴＥＮＳＩＯＮ」はシンボルとして定義されていない。そのため、＊Ｉｆｄｅｆ行８１１と＊Ｅｌｓｅ行８２１の間にある禁則情報８０１は、アプリケーション１０５１には解釈されない。一方、＊Ｅｌｓｅ行８２１と＊Ｅｎｄｉｆ行８３１の間にある、禁則情報８０２および禁則情報８０３は、アプリケーション１０５１に解釈される。このように、アプリケーション１０５１が解釈できる禁則情報と、解釈できない禁則情報を分けて記述し、解釈できない禁則情報をアプリケーション１０５１に公開しないため、アプリケーション１０５１に読み込ませる禁則情報の項目数を削減することができる。
【００８０】
また、デバイスアプリ３１０側から見ると、禁則情報８０２および禁則情報８０３は不要な情報である。デバイスアプリ３１０側では機種依存ファイル３０９を自由に解釈することができるため、図８のように記述することで、デバイスアプリ３１０は、プリプロセッサ指示文の情報を元に禁則情報８０１のみ適用することもできる。このように本実施形態では、アプリケーション１０５１やプリンタドライバ１０５２に解釈させる禁則情報を減らしつつ、第１実施形態と同様の禁則処理を行うことができる。また、本実施形態では、プリプロセッサ指示文による記述の例を説明したが、これに限られるものではない。例えば、アプリケーション１０５１で解釈する必要のない禁則情報をコメントアウトし、プリンタドライバ１０５２側でコメントアウトされた禁則情報を解釈対象とするようにしてもよい。
【００８１】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００８２】
以上、本発明の好ましい実施形態について説明したが、本発明は、これらの実施形態に限定されず、その要旨の範囲内で種々の変形および変更が可能である。
【図１】
2019144814.tif 000003
【図２】
2019144814.tif 000004
【図３】
2019144814.tif 000005
【図４】
2019144814.tif 000006
【図５】
2019144814.tif 000007
【図６】
2019144814.tif 000008
【図７】
2019144814.tif 000009
【図８】
2019144814.tif 000010