(57)【要約】【課題】ユーザの操作性の低下を防ぐ仕組みを提供する。【解決手段】印刷設定画面上のコントロールの内容が記述された情報を生成し、印刷設定画面上でのコントロールの操作に応じて、印刷設定画面の表示を更新する。操作が第１条件を満たす場合には、コントロールの内容が記述された情報の生成を要求し、該要求に応じて生成されたコントロールの内容が記述された情報に基づいて、印刷設定画面の表示を更新する。操作が第２条件を満たす場合には、コントロールの内容が記述された情報の生成を要求することなく、印刷設定画面の表示を更新する。【選択図】図９
2020166698.tif 000002
【特許請求の範囲】
【請求項１】
印刷設定画面上のコントロールの内容が記述された情報を生成する生成手段と、
前記印刷設定画面上でのコントロールの操作に応じて、前記印刷設定画面の表示を更新する更新手段と、を備え、
前記更新手段は、前記操作が第１条件を満たす場合には、前記コントロールの内容が記述された情報の生成を前記生成手段に要求し、該要求に応じて前記生成手段により生成された前記コントロールの内容が記述された情報に基づいて、前記印刷設定画面の表示を更新し、
前記操作が第２条件を満たす場合には、前記コントロールの内容が記述された情報の生成を前記生成手段に要求することなく、前記印刷設定画面の表示を更新する、
ことを特徴とする情報処理装置。
【請求項２】
前記生成手段による生成の要否が記述された更新情報を記憶する記憶手段、をさらに備え、
前記第１条件とは、前記操作に応じて前記生成手段による生成が必要であることが前記更新情報に記述されていることである、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第２条件とは、前記操作に応じて前記生成手段による生成が必要であることが前記更新情報に記述されていないことである、
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記記憶手段は、プロパティバッグであることを特徴とする請求項２又は３に記載の情報処理装置。
【請求項５】
前記生成手段は、前記印刷設定画面上でのコントロールの表示に関わる禁則が定義された定義ファイルに基づいて、前記コントロールの内容が記述された情報を生成することを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記生成手段は、前記コントロールの内容が記述された情報として、複数の情報の生成が可能であり、
前記更新手段は、前記複数の情報の少なくともいずれかの生成を前記生成手段に要求する、
ことを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記複数の情報は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ、ＰｒｉｎｔＴｉｃｋｅｔ、を含むことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記操作としての第１操作に応じて前記更新手段による更新が行われた結果、第１コントロールの表示が有効とされ、さらに、前記操作としての第２操作に応じて前記更新手段による更新が行われた結果、前記第１操作と前記第２操作の禁則により、前記第１コントロールの表示が無効となった場合において、
前記更新手段は、前記第２操作の後、前記操作としての第３操作が行われることにより前記禁則が解除されることを条件として、前記第１コントロールの表示を有効として前記印刷設定画面の表示を更新する、
ことを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記操作に関する情報を保持する保持手段、をさらに備えることを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記操作としての第１操作に応じて、前記更新手段が前記コントロールの内容が記述された第１情報の生成を前記生成手段に要求した場合、
前記第１操作の後、前記操作としての第２操作が行われると、前記更新手段が前記生成手段に要求することなく、前記コントロールの内容が記述された第２情報を生成する第２生成手段と、
前記生成手段により生成された前記第１情報と、前記第２生成手段により生成された前記第２情報とをマージ手段、をさらに備え、
前記更新手段は、前記マージ手段によりマージされて生成された前記コントロールの内容が記述された情報に基づいて、前記印刷設定画面の表示を更新する、
ことを特徴とする請求項１乃至９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記生成手段により前記第１情報が生成中であるか否かを判定する判定手段、をさらに備え、
前記第２生成手段は、前記判定手段により前記第１情報が生成中であると判定された場合、前記第２情報を生成する、
ことを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
情報処理装置において実行される情報処理方法であって、
印刷設定画面上のコントロールの内容が記述された情報を生成する生成工程と、
前記印刷設定画面上でのコントロールの操作に応じて、前記印刷設定画面の表示を更新する更新工程と、を有し、
前記更新工程では、前記操作が第１条件を満たす場合には、前記コントロールの内容が記述された情報の生成を前記生成工程に要求し、該要求に応じて前記生成工程において生成された前記コントロールの内容が記述された情報に基づいて、前記印刷設定画面の表示を更新し、
前記操作が第２条件を満たす場合には、前記コントロールの内容が記述された情報の生成を前記生成工程に要求することなく、前記印刷設定画面の表示を更新する、
ことを特徴とする情報処理方法。
【請求項１３】
印刷設定画面上のコントロールの内容が記述された情報を生成する生成手段、
前記印刷設定画面上でのコントロールの操作に応じて、前記印刷設定画面の表示を更新する更新手段、としてコンピュータを機能させるためのプログラムであって、
前記更新手段は、前記操作が第１条件を満たす場合には、前記コントロールの内容が記述された情報の生成を前記生成手段に要求し、該要求に応じて前記生成手段により生成された前記コントロールの内容が記述された情報に基づいて、前記印刷設定画面の表示を更新し、
前記操作が第２条件を満たす場合には、前記コントロールの内容が記述された情報の生成を前記生成手段に要求することなく、前記印刷設定画面の表示を更新する、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリンタドライバを有する情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
オペレーティングシステム（ＯＳ）としてＭｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ（登録商標）を搭載した計算機を用いた印刷システムがある。そのような印刷システムにおいて、アプリケーションプログラム（アプリケーション）等で生成された印刷データは、ＯＳ標準のデータ形式でスプールファイルに格納される。ＯＳは、印刷データを印刷するためにプリンタドライバを呼び出す。そして、プリンタドライバは、スプールファイルに格納された印刷データを読み取り、画像生成処理部により印刷イメージを作成し、さらに、プリンタが解釈可能な印刷コマンドに変換する。印刷コマンドはプリンタに送信され、プリンタは印刷コマンドを解釈し、記録媒体に像を形成することで印刷処理が実行される。
【０００３】
また、近年ではＷｉｎｄｏｗｓ（登録商標）において、Ｖ４プリンタドライバと呼ばれる新しいアーキテクチャで動作するプリンタドライバが導入されている。Ｖ４プリンタドライバは、Ｖ３プリンタドライバのアーキテクチャとして提供されていたＸＰＳ（ＸＭＬ Ｐａｐｅｒ Ｓｐｅｃｉｆｉｃａｔｉｏｎ）プリンタドライバの後継となるアーキテクチャであり、ＸＰＳ文書を利用した印刷パスを利用している。このＸＰＳ印刷パスにおいて、印刷物の体裁を決定するために利用されるものがＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓと呼ばれるＸＭＬ形式で記述された印刷機能情報と、ＰｒｉｎｔＴｉｃｋｅｔと呼ばれるＸＭＬ形式で記述された印刷設定情報である。Ｖ４プリンタドライバは、ＧＰＤ（Ｇｅｎｅｒｉｃ Ｐｒｉｎｔｅｒ Ｄｅｓｃｒｉｐｔｉｏｎ）と呼ばれる、プリンタドライバの印刷設定の機能を定義する印刷設定定義ファイルを同梱している。このＧＰＤを含んだプリンタドライバをＯＳにインストールすることで、ユーザに対してＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓやＰｒｉｎｔＴｉｃｋｅｔを用いた印刷設定変更機能を提供することができる。
【０００４】
さらに、Ｖ４プリンタドライバでは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓやＰｒｉｎｔＴｉｃｋｅｔの生成は、ＯＳ提供のコンフィグレーションモジュールで行われる。加えて、コンフィグレーションモジュールで生成されたＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓやＰｒｉｎｔＴｉｃｋｅｔに対して、プリンタドライバ開発ベンダ独自の編集を行うための印刷設定編集モジュールを設けることも可能である。プリンタドライバ開発ベンダは、印刷設定編集モジュールを実装することで数値や文字列等のパラメータに関する定義の追加などをＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに施すことができる（特許文献１）。なお、数値や文字列等のパラメータに関する定義の追加などはコンフィグレーションモジュールが行うことのできない編集に相当する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−２２５４８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
アプリケーションなどが印刷設定ＵＩを提供する際には、設定が変更される度にＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔを生成し、設定できないオプションは選択できないようにすることが望ましい。しかしながら、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔの生成には処理時間がかかる。印刷設定ＵＩで設定が変更される度に、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔを生成し、ＵＩ更新が完了するまで入力を受け付けられなくなると操作性が低下してしまう。
【０００７】
本発明の目的は、このような従来の問題点を解決することにある。上記の点に鑑み、本発明は、ユーザの操作性の低下を防ぐ情報処理装置、情報処理方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明に係る情報処理装置は、印刷設定画面上のコントロールの内容が記述された情報を生成する生成手段と、前記印刷設定画面上でのコントロールの操作に応じて、前記印刷設定画面の表示を更新する更新手段と、を備え、前記更新手段は、前記操作が第１条件を満たす場合には、前記コントロールの内容が記述された情報の生成を前記生成手段に要求し、該要求に応じて前記生成手段により生成された前記コントロールの内容が記述された情報に基づいて、前記印刷設定画面の表示を更新し、前記操作が第２条件を満たす場合には、前記コントロールの内容が記述された情報の生成を前記生成手段に要求することなく、前記印刷設定画面の表示を更新することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ユーザの操作性の低下を防ぐ仕組みを提供することができる。
【図面の簡単な説明】
【００１０】
【図１】印刷システムの構成を示す図である。
【図２】ドライバ印刷システムの構成を示す図である。
【図３】プリンタエクステンションの要求に応じたデータの流れを示す図である。
【図４】ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを示す図である。
【図５】ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを示す図である。
【図６】ＰｒｉｎｔＴｉｃｋｅｔを示す図である。
【図７】プリンタエクステンションの印刷設定を行うＵＩを示す図である。
【図８】ページレイアウトで表示されるアイコンを示す図である。
【図９】印刷設定更新処理を示すフローチャートである。
【図１０】印刷設定更新情報を示す図である。
【図１１】ＵＩ更新処理を示すフローチャートである。
【図１２】印刷設定更新処理を示すフローチャートである。
【図１３】ＵＩ更新処理を示すフローチャートである。
【図１４】印刷設定更新処理を示すフローチャートである。
【図１５】マージ処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【００１２】
［第１実施形態］
図１は、印刷システムのハードウェア構成を示すブロック図である。本図において、ホストコンピュータ１０１は、情報処理装置の一例であり、入力インタフェース１１０、ＣＰＵ１１１、ＲＯＭ１１２、ＲＡＭ１１３、外部記憶装置１１４、出力インタフェース１１５、及び入出力インタフェース１１６を有する。また、入力インタフェース１１０には、キーボード１１８、ポインティングデバイス１１７などの入力デバイスが接続され、出力インタフェース１１５には、表示部１１９などの表示デバイスが接続されている。
【００１３】
ＲＯＭ１１２には、初期化プログラムが格納され、外部記憶装置１１４には、アプリケーションプログラム群、ＯＳ、後述するプリンタドライバ２０３、その他の各種のデータが格納されている。例えば、ＲＡＭ１１３は、外部記憶装置１１４に記憶される各種のプログラムの実行の際のワークメモリとして使用される。なお、本実施形態では、例えば、ＣＰＵ１１１が、ＲＯＭ１１２に記憶されたプログラムの手順に従って処理を行うことによって、ホストコンピュータ１０１における後述の機能及び後述するフローチャートに係る処理が実現される。印刷装置１０２は、入出力インタフェース１１６を介して、ホストコンピュータ１０１と接続されている。ここでは、ホストコンピュータ１０１と印刷装置１０２が別の装置として構成されているが、これらが一つの情報処理装置（若しくは画像形成装置）として構成されていても良い。また、入出力インタフェース１１６は、有線や無線等、接続されるネットワーク媒体に応じた構成を有する。従って、ホストコンピュータ１０１と印刷装置１０２とは、有線や無線、若しくはそれらが混在したネットワークを介して相互に通信可能に接続される。
【００１４】
図２は、ドライバ印刷システムのブロック構成図である。ドライバ印刷システムは、ＸＰＳファイルフォーマットをスプールデータとして使用し、印刷を行うシステムである。プリンタドライバ２０３は、印刷装置１０２に対して印刷指示を行うことができる。コンフィグレーションモジュール２１９、フィルタパイプラインマネージャ２２１は、プリンタドライバ２０３に含まれている。本実施形態では、それらは、ホストコンピュータ１０１のＯＳから提供されている、プリンタドライバ２０３のモジュールとして構成される。
【００１５】
コンフィグレーションモジュール２１９は、印刷設定定義ファイル２１３に基づき、ＰｒｉｎｔＴｉｃｋｅｔやＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成を行う。印刷設定定義ファイル２１３は、ＧＰＤ（Ｇｅｎｅｒｉｃ  Ｐｒｉｎｔｅｒ  Ｄｅｓｃｒｉｐｔｉｏｎ）と呼ばれるテキストベースで記載されているファイルである。さらに、印刷設定定義ファイル２１３には「禁則」の定義を記載することができる。例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）が定義した記述法に基づき、ＩｎｖａｌｉｄＣｏｍｂｉｎａｔｉｏｎの項目に、同時に設定できない印刷設定の設定値を記載することで、ユーザに対して禁則機能を提供することができる。ここで、同時に設定できない印刷設定とは、デバイスの機能として提供できないもののほかに、意図的にユーザに使用してほしくない項目も含まれる。
【００１６】
また、コンフィグレーションモジュール２１９は、プリンタドライバ２０３が提供する印刷設定編集モジュール２１１を用いて印刷設定情報を編集することができる。印刷設定編集モジュール２１１は、ＣｏｎｓｔｒａｉｎｔＳｃｒｉｐｔと呼ばれる、ＪａｖａＳｃｒｉｐｔ言語で記載されたモジュールである。印刷設定編集モジュール２１１は、プリンタドライバ２０３によって記憶されるデータが提供されるプロパティバッグ２１７を用いて印刷設定情報を編集する。
【００１７】
プロパティバッグ２１７とは、プリンタの機種依存情報として用いるためのＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇと呼ばれるデータ群と、プリントキューに関連づけられたＱｕｅｕｅＰｒｏｐｅｒｔｙＢａｇと呼ばれるデータ群が保持された領域をいう。ＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇは、以降、ＤＰＢともいい、ＱｕｅｕｅＰｒｏｐｅｒｔｙＢａｇは、以降、ＱＰＢともいう。ＤＰＢとＱＰＢは、ともにＯＳによって提供されている保存領域である。ＤＰＢは、ドライバパッケージ内に存在するプリンタの機種依存データであり、プリンタドライバ２０３のインストール後にＯＳ内の特定の領域に読取専用としてデータ群が保持される。ＱＰＢは、Ｋｅｙ−ＶａｌｕｅペアのＸＭＬ定義ファイルをＯＳに登録することで使用することが可能であり、Ｖａｌｕｅに関して一定の権限上で編集が可能である。また、印刷設定定義ファイル２１３であるＧＰＤにもＱＰＢの定義を記載することができる。
【００１８】
プリンタエクステンション２１５は、Ｖ４プリンタドライバにおいて、ユーザが印刷設定を行うためのベンダ独自のユーザインタフェースを提供するモジュールである。プリンタエクステンション２１５は、印刷に用いる用紙サイズや印刷方向、その他の属性を設定する機能を提供する。
【００１９】
図２における印刷システムにおいて、アプリケーション２０１が印刷を行う場合、まず印刷設定情報の作成を行う。アプリケーション２０１は、プリンタドライバ２０３のコンフィグレーションモジュール２１９を呼び出して、印刷設定情報を作成して記憶する。また、アプリケーション２０１は、印刷設定情報の作成にプリンタエクステンション２１５を用いることができる。アプリケーション２０１は、ＤＥＶＭＯＤＥ構造体、もしくはＰｒｉｎｔＴｉｃｋｅｔの形式で印刷設定情報を保持している。
【００２０】
次に、アプリケーション２０１は、印刷データの生成を行う。作成した文書の各ページの印刷データは、ＯＳの印刷サポート機能を通じてＸＰＳスプールファイル２０５に一時的に蓄えられる。ＸＰＳスプールファイル２０５が生成されると、フィルタパイプラインマネージャ２２１に処理が渡される。フィルタパイプラインマネージャ２２１は、複数のフィルタを通すことで印刷が行われる仕組みで、フィルタコンフィグレーションファイル２２７でフィルタの数や順番が制御される。本実施形態におけるフィルタ群は、レイアウト処理部であるレイアウトフィルタ２２３と、印刷コマンド変換部である印刷コマンドフィルタ２２５とを含んで構成される。
【００２１】
レイアウトフィルタ２２３は、ＸＰＳスプールファイル２０５に格納されたＸＰＳドキュメントを入力とし、印刷設定情報に基づきページのレイアウト処理を行い、レイアウト済みのＸＰＳデータを出力する機能を有する。レイアウト処理とは、例えば複数のページを一つの用紙面に印刷する割り付け印刷や、一つのページを複数の用紙面に印刷するポスター印刷を含む。
【００２２】
印刷コマンドフィルタ２２５は、レイアウトフィルタ２２３の出力を入力とし、印刷設定情報に従い、ＸＰＳドキュメントを印刷装置１０２が解釈可能な印刷コマンドに変換し出力する機能を有する。印刷コマンドフィルタ２２５が入力のＸＰＳドキュメントを一度イメージデータに変換する場合、印刷コマンドフィルタ２２５は、一般的にレンダフィルタと呼ばれる。レンダフィルタは、例えば、インクジェットプリンタに代表される廉価なラスタプリンタ用のプリンタドライバにおいて構成される。印刷コマンドフィルタ２２５がレンダフィルタとして動作する場合は、入力のＸＰＳドキュメントを一度イメージデータに変換する。その後、色空間の変換や二値化等の画像処理の過程を経て、ラスタプリンタが解釈可能な印刷コマンドに変換される。例えばページプリンタに代表される高機能なプリンタにおいて、プリンタが解釈できる印刷コマンドの種類にＸＰＳが含まれる場合、印刷コマンドフィルタ２２５は、入力のＸＰＳドキュメントを編集してＸＰＳドキュメントを出力する。印刷コマンドフィルタ２２５にて処理する必要がない場合、入力のＸＰＳドキュメントをそのまま出力しても良い。また、印刷コマンドフィルタ２２５は、プリンタドライバ２０３に含んで構成されていなくても良い。
【００２３】
図３（ａ）は、プリンタエクステンション２１５が、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを要求した際に、コンフィグレーションモジュール２１９がＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを返却するまでのデータの流れを示す図である。コンフィグレーションモジュール２１９は、印刷設定定義ファイル２１３に基づき、渡されたＰｒｉｎｔＴｉｃｋｅｔの設定を基準としてＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを生成し、印刷設定編集モジュール２１１を呼び出す。印刷設定編集モジュール２１１は、コンフィグレーションモジュール２１９から渡されたＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔと、ＤＰＢに記憶された機種依存情報などを基に、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔを編集する。印刷設定編集モジュール２１１が編集したＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔは、コンフィグレーションモジュール２１９を通してプリンタエクステンション２１５へ返却される。
【００２４】
図３（ｂ）は、プリンタエクステンション２１５が、ＰｒｉｎｔＴｉｃｋｅｔを要求した際に、コンフィグレーションモジュール２１９がＰｒｉｎｔＴｉｃｋｅｔを返却するまでのデータの流れを示す図である。コンフィグレーションモジュール２１９は、印刷設定定義ファイル２１３に基づき、渡されたＰｒｉｎｔＴｉｃｋｅｔの設定を編集し、印刷設定編集モジュール２１１を呼び出す。印刷設定編集モジュール２１１は、コンフィグレーションモジュール２１９から渡されたＰｒｉｎｔＴｉｃｋｅｔと、ＤＰＢに格納された機種依存情報などを基に、ＰｒｉｎｔＴｉｃｋｅｔを編集する。印刷設定編集モジュール２１１が編集したＰｒｉｎｔＴｉｃｋｅｔは、コンフィグレーションモジュール２１９を通してプリンタエクステンション２１５へ返却される。ＰｒｉｎｔＴｉｃｋｅｔのみが要求された場合は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの編集処理が行われないため、処理速度が図３（ａ）の場合に比べると速くなる。
【００２５】
図４及び図５は、コンフィグレーションモジュール２１９が生成したＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの一部である。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは、ＸＭＬで記述される。印刷設定定義ファイルで定義されたＦｅａｔｕｒｅ及びＯｐｔｉｏｎに対応して、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓでも、ＦｅａｔｕｒｅとＯｐｔｉｏｎは、階層構造で表現される。また、それぞれＯｐｔｉｏｎの子要素として表示名称を表すＤｉｓｐｌａｙＮａｍｅがＰｒｏｐｅｒｔｙとして定義される。さらに、各Ｏｐｔｉｏｎには、ｃｏｎｓｔｒａｉｎｅｄ属性が記述される。ｃｏｎｓｔｒａｉｎｅｄ属性は、対象のＯｐｔｉｏｎが設定可能な状態であるかを示し、設定可能な場合はｃｏｎｓｔｒａｉｎｅｄ属性には“Ｎｏｎｅ”が設定される。印刷設定定義ファイルに記述された禁則に従い、指定されたＰｒｉｎｔＴｉｃｋｅｔに基づく設定下では設定できない場合は、ｃｏｎｓｔｒａｉｎｅｄ属性には他の設定と競合して設定できない旨を示す“ＰｒｉｎｔＴｉｃｋｅｔＳｅｔｔｉｎｇｓ”が設定される。その他に、現在のデバイスの状態によって設定できない旨を示す“ＤｅｖｉｃｅＳｔｔｉｎｇｓ”などの設定がある。
【００２６】
例えば、図４及び図５のＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓには、ＰａｇｅＭｅｄｉａＴｙｐｅのＯｐｔｉｏｎとしてＰｌａｉｎとＰｈｏｔｏＰａｐｅｒが、ＰａｇｅＢｏｒｄｅｒｌｅｓｓのＯｐｔｉｏｎとしてＮｏｎｅとＢｏｒｄｅｒｌｅｓｓが、ＰａｇｅＯｒｉｅｎｔａｔｉｏｎのＯｐｔｉｏｎとしてＬａｎｄｓｃａｐｅとＰｏｒｔｒａｉｔが、ＪｏｂＮＵｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙのＯｐｔｉｏｎとしてＮｏｎｅとＰａｇｅＰｅｒＳｈｅｅｔ＿２が、ＰａｇｅＰｏｓｔｅｒのＯｐｔｉｏｎとしてＮｏｎｅとＤｉｖｉｓｉｏｎ＿２が、ＤｏｃｕｍｅｎｔＣｏｌｌａｔｅのＯｐｔｉｏｎとしてＵｎｃｏｌｌａｔｅｄとＣｏｌｌａｔｅｄが記述されている。
【００２７】
図６は、ＰｒｉｎｔＴｉｃｋｅｔの一例を示す図である。ＰｒｉｎｔＴｉｃｋｅｔは、ＸＭＬで記述される。ＰｒｉｎｔＴｉｃｋｅｔには、機能（Ｆｅａｔｕｒｅ）毎に、設定項目（Ｏｐｔｉｏｎ）が記載される。例えば、図６のＰｒｉｎｔＴｉｃｋｅｔでは、ＰａｇｅＭｅｄｉａＴｙｐｅにＰｈｏｔｏＰａｐｅｒ、ＰａｇｅＢｏｒｄｅｒｌｅｓｓにＮｏｎｅ、ＰａｇｅＯｒｉｅｎｔａｔｉｏｎにＰｏｒｔｒａｉｔ、ＪｏｂＮＵｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙにＰａｇｅｓＰｅｒＳｈｅｅｔ＿２、ＰａｇｅＰｏｓｔｅｒにＮｏｎｅ、ＤｏｃｕｍｅｎｔＣｏｌｌａｔｅにＣｏｌｌａｔｅｄが設定されている。
【００２８】
図７は、プリンタエクステンション２１５の印刷設定を行うＵＩ（印刷設定画面）の一部を示す図である。印刷設定画面上の各コントロールに表示される内容は、コンフィグレーションモジュール２１９から返却されたＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔを用いて構築される。なお、本実施形態におけるコントロールとは、画面上でユーザにより操作される操作アイテムと呼ぶこともできる。
【００２９】
ドロップダウンリスト６０１は、用紙の種類を設定するためのコントロールである。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓのＰａｇｅＭｅｄｉａＴｙｐｅのＯｐｔｉｏｎであるＰｌａｉｎとＰｈｏｔｏＰａｐｅｒのＤｉｓｐｌａｙＮａｍｅを表示し、図７の場合、ＰｒｉｎｔＴｉｃｋｅｔのＰａｇｅＭｅｄｉａＴｙｐｅの設定値ＰｈｏｔｏＰａｐｅｒ（写真紙）が選択される。
【００３０】
チェックボックス６０２は、フチなし全面印刷の設定をするためのコントロールである。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓのＰａｇｅＢｏｒｄｅｒｌｅｓｓのＯｐｔｉｏｎであるＮｏｎｅとＢｏｒｄｅｒｌｅｓｓのｃｏｎｓｔｒａｉｎｅｄ属性がどちらもＮｏｎｅなので、表示は有効とされる。そして、図７の場合、ＰｒｉｎｔＴｉｃｋｅｔのＰａｇｅＢｏｒｄｅｒｌｅｓｓの設定値がＮｏｎｅなので、表示はオフとされる。
【００３１】
ラジオボタン６０３と、６０４は、印刷の向きの設定をするためのコントロールである。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓのＰａｇｅＯｒｉｅｎｔａｔｉｏｎのＯｐｔｉｏｎであるＬａｎｄｓｃａｐｅとＰｏｒｔｒａｉｔのＤｉｓｐｌａｙＮａｍｅをそれぞれ表示する。図７の場合、ＰｒｉｎｔＴｉｃｋｅｔのＰａｇｅＯｒｉｅｎｔａｔｉｏｎの設定値Ｐｏｒｔｒａｉｔ（縦）が選択される。
【００３２】
ドロップダウンリスト６０５は、ページレイアウト（割り付け印刷や分割印刷）を設定するためのコントロールである。割り付け印刷は、複数のページを１枚の用紙に割り当てて印刷し、分割印刷は、１ページを複数の用紙に分割して印刷する機能である。割り付け印刷と分割印刷は同時に設定できないため、ＧＰＤに禁則の定義が記載されている。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓのＪｏｂＮＵｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙのＯｐｔｉｏｎであるＮｏｎｅとＰａｇｅＰｅｒＳｈｅｅｔ＿２、およびＰａｇｅＰｏｓｔｅｒのＯｐｔｉｏｎであるＤｉｖｉｓｉｏｎ＿２のＤｉｓｐｌａｙＮａｍｅを表示する。図７の場合、ＰｒｉｎｔＴｉｃｋｅｔのＪｏｂＮＵｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙの設定値ＰａｇｅＰｅｒＳｈｅｅｔ＿２が選択される。
【００３３】
そして、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓのＤｉｖｉｓｉｏｎ＿２のｃｏｎｓｔｒａｉｎｅｄ属性が“ＰｒｉｎｔＴｉｃｋｅｔＳｅｔｔｉｎｇｓ”となっていることに着目する。この禁則は、ＰｒｉｎｔＴｉｃｋｅｔのＪｏｂＮＵｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙの設定がＰａｇｅＰｅｒＳｈｅｅｔ＿２になっていることが要因である。通常、ｃｏｎｓｔｒａｉｎｅｄ属性がＮｏｎｅ以外であれば、オプションを無効にする。しかしながら、本コントロールのように複数のＦｅａｔｕｒｅを１つのコントロールで設定する場合においては、そのＦｅａｔｕｒｅ間で発生する禁則は無視する必要がある。なぜなら、禁則を無視しなかった場合、２ｉｎ１印刷から２分割印刷に設定を変更する場合、一旦１ｉｎ１印刷を設定し、２分割印刷が有効になってから２分割印刷を設定しなければならず、ユーザビリティが低下するからである。
【００３４】
さらにドロップダウンリスト６０５には、レイアウトをより分かりやすくするためにオプションの先頭にアイコン６０６を表示する。一部のアイコンは、用紙の縦横比によって切り替わる。図８に、ページレイアウト６０５で表示するアイコンの説明をする。図８（ａ）は、縦長用紙の場合のアイコンの例で、横方向にページを配置する。図８（ｂ）は、横長用紙の場合のアイコンの例で、縦方向にページを配置する。ここでは、縦長用紙が選択されているとし、印刷の向きが縦なので図８（ａ）のアイコンを表示する。
【００３５】
チェックボックス６０７は、部単位で印刷する設定をするためのコントロールである。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓのＤｏｃｕｍｅｎｔＣｏｌｌａｔｅのＯｐｔｉｏｎであるＵｎｃｏｌｌａｔｅｄとＣｏｌｌａｔｅｄのｃｏｎｓｔｒａｉｎｅｄ属性がどちらもＮｏｎｅなので、表示は有効とされる。そして、図７の場合、ＰｒｉｎｔＴｉｃｋｅｔのＤｏｃｕｍｅｎｔＣｏｌｌａｔｅの設定値がＣｏｌｌａｔｅｄなので、表示はオンとされる。
【００３６】
以下、コントロールに対する一例の操作に基づいて、本実施形態の動作を説明する。
【００３７】
＜ケース１：ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ及びＰｒｉｎｔＴｉｃｋｅｔの生成なし、ＵＩ更新なし＞
部単位で印刷チェックボックス６０７がオフされると、プリンタエクステンション２１５は、ＰｒｉｎｔＴｉｃｋｅｔのＤｏｃｕｍｅｎｔＣｏｌｌａｔｅの設定値をＵｎｃｏｌｌａｔｅｄに編集し、図９の印刷設定更新処理を開始する。
【００３８】
図９は、プリンタエクステンション２１５が、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ、ＰｒｉｎｔＴｉｃｋｅｔおよびＵＩを更新する処理を示すフローチャートである。Ｓ８０１では、プリンタエクステンション２１５は、ＤＰＢに格納された印刷設定更新情報を取得する。
【００３９】
図１０は、印刷設定更新情報を示す図である。印刷設定更新情報は、印刷設定が変更された際、ＵＩの更新に伴う、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ、ＰｒｉｎｔＴｉｃｋｅｔの更新の要否を定義したリストである。Ｎａｍｅにはコントロール名が列挙され、ＵｐｄａｔｅＳｅｔｔｉｎｇｓには更新が必要なコントロール名が列挙される。更新が必要なコントロールがない場合は、ｎｕｌｌが記載される。ＩｓＮｅｅｄＣｏｍｍｉｔには、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ、ＰｒｉｎｔＴｉｃｋｅｔとも更新しない場合は０が記載される。また、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ、ＰｒｉｎｔＴｉｃｋｅｔとも更新する場合は１が記載される。また、ＰｒｉｎｔＴｉｃｋｅｔのみ更新する場合は２が記載される。リストに記載がなければ、ＵｐｄａｔｅＳｅｔｔｉｎｇｓ＝ｎｕｌｌ、ＩｓＮｅｅｄＣｏｍｍｉｔ＝０として動作する。
【００４０】
Ｓ８０２では、プリンタエクステンション２１５は、印刷設定更新情報に、Ｎａｍｅが一致するデータが存在するか否かを判定する。本例では、ＮａｍｅがＤｏｃｕｍｅｎｔＣｏｌｌａｔｅであるデータが存在するか否かを判定する。ここでは、図１０の印刷設定更新情報に、ＮａｍｅがＤｏｃｕｍｅｎｔＣｏｌｌａｔｅのデータは存在しないので、Ｓ８０４に進み、プリンタエクステンション２１５は、図１１のＵＩ更新処理を実行し、その後、図９の印刷設定更新処理を終了する。
【００４１】
図１１は、プリンタエクステンション２１５が、ＵＩを更新する処理を示すフローチャートである。Ｓ１００１では、プリンタエクステンション２１５は、ＤＰＢに記憶された印刷設定更新情報を取得する。Ｓ１００２では、印刷設定更新情報に、Ｎａｍｅが一致するデータが存在するか否かを判定する。本例では、ＮａｍｅがＤｏｃｕｍｅｎｔＣｏｌｌａｔｅであるデータが存在するか否かを判定する。ここでは、図１０の印刷設定更新情報に、ＮａｍｅがＤｏｃｕｍｅｎｔＣｏｌｌａｔｅのデータは存在しないので、Ｓ１００９に進み、プリンタエクステンション２１５は、印刷設定ＵＩが無効か否かを判定する。ここでは、印刷設定ＵＩは無効ではないので、図１１のＵＩ更新処理を終了する。
【００４２】
以上のように、本ケースでは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔの生成処理およびＵＩ更新処理は行われない。そのため、印刷設定ＵＩが無効になることがないので、ユーザは次のコントロールを操作することができ、操作性の高いＵＩを提供することができる。また、本ケースでは、部単位で印刷チェックボックス６０７がオフされる場合を説明した。しかし、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔの生成処理およびＵＩ更新処理が行われない場合であれば、他の操作が行われても上記の動作は同様に適用され得る。
【００４３】
＜ケース２：ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ及びＰｒｉｎｔＴｉｃｋｅｔの生成なし、ＵＩ更新あり＞
印刷の向きの横ラジオボタン６０４がオンされると、プリンタエクステンション２１５は、ＰｒｉｎｔＴｉｃｋｅｔのＰａｇｅＯｒｉｅｎｔａｔｉｏｎの設定値をＬａｎｄｓｃａｐｅに編集し、図９の印刷設定更新処理を開始する。
【００４４】
Ｓ８０１では、プリンタエクステンション２１５は、ＤＰＢに格納された印刷設定更新情報を取得する。本例では、Ｓ８０２では、プリンタエクステンション２１５は、印刷設定更新情報に、ＮａｍｅがＰａｇｅＯｒｉｅｎｔａｔｉｏｎであるデータが存在するか否かを判定する。ここでは、図１０の印刷設定更新情報に、ＮａｍｅがＰａｇｅＯｒｉｅｎｔａｔｉｏｎのデータが存在するので、Ｓ８０３に進み、プリンタエクステンション２１５は、該当するデータ内のＩｓＮｅｅｄＣｏｍｍｉｔの設定値が０か否かを判定する。ここでは、ＩｓＮｅｅｄＣｏｍｍｉｔの設定値は０なので、Ｓ８０４に進み、図１１のＵＩ更新処理を実行する。
【００４５】
図１１のＳ１００１では、プリンタエクステンション２１５は、ＤＰＢに格納された印刷設定更新情報を取得する。本例では、Ｓ１００２では、プリンタエクステンション２１５は、印刷設定更新情報に、ＮａｍｅがＰａｇｅＯｒｉｅｎｔａｔｉｏｎであるデータが存在するか否かを判定する。ここでは、図１０の印刷設定更新情報に、ＮａｍｅがＰａｇｅＯｒｉｅｎｔａｔｉｏｎのデータが存在するので、Ｓ１００３に進み、プリンタエクステンション２１５は、該当するデータ内のＵｐｄａｔｅＳｅｔｔｉｎｇｓを取得する。図１０に示すように、ＵｐｄａｔｅＳｅｔｔｉｎｇｓには、“ＰａｇｅＬａｙｏｕｔ”のみが列挙されているので、ページレイアウトコンボボックス６０５を更新する。
【００４６】
ページレイアウトコンボボックス６０５は前述のとおり割り付け印刷と分割印刷を含む。そのため、Ｓ１００４で、プリンタエクステンション２１５は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔからＪｏｂＮＵｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙとＰａｇｅＰｏｓｔｅｒの情報を取得する。そして、Ｓ１００５で、プリンタエクステンション２１５は、ドロップダウンリスト６０５と設定値を更新する。ただし、前述のとおりＪｏｂＮＵｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙとＰａｇｅＰｏｓｔｅｒ間で発生する禁則については無視される。Ｓ１００４とＳ１００５は、ＩｓＮｅｅｄＣｏｍｍｉｔが０（ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ、ＰｒｉｎｔＴｉｃｋｅｔとも更新しない）の場合は、実行しなくてもよい。
【００４７】
次に、Ｓ１００６では、プリンタエクステンション２１５は、アイコンがあるか否かを判定する。ページレイアウトコンボボックス６０５には、前述のとおりアイコンが表示されるので、Ｓ１００７に進み、プリンタエクステンション２１５は、印刷設定ＵＩを無効にしてアイコンを更新する。印刷の向きが横に変更された結果、図８（ｂ）のアイコンに切り替えられる。Ｓ１００７の処理は、ＩｓＮｅｅｄＣｏｍｍｉｔが０の場合でも実行される。
【００４８】
Ｓ１００８では、プリンタエクステンション２１５は、ＵｐｄａｔｅＳｅｔｔｉｎｇｓに列挙された全ての要素の更新が完了したか否かを判定する。全ての要素の更新が完了していないと判定された場合、Ｓ１００４からの処理を繰り返す。一方、全ての要素の更新が完了したと判定された場合、Ｓ１００９に進み、プリンタエクステンション２１５は、印刷設定ＵＩが無効か否かを判定する。ここでは、無効であるので、Ｓ１０１０に進み、印刷設定ＵＩを有効にし、その後、図１１のＵＩ更新処理を終了する。
【００４９】
以上のように、本ケースでは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔの生成処理は行われない。また、印刷設定ＵＩが無効になる時間は極めて短く、ユーザはほぼ待つことなく次のコントロールを操作することができる。その結果、操作性の高いＵＩを提供することができる。
【００５０】
また、本ケースでは、印刷の向きの横ラジオボタン６０４がオンされる場合を説明した。しかし、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔの生成処理が行われず、Ｓ１００７で印刷設定ＵＩが無効になる場合であれば、他の操作が行われても上記の動作は同様に適用され得る。
【００５１】
＜ケース３：ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成なし、ＰｒｉｎｔＴｉｃｋｅｔの生成あり、ＵＩ更新あり＞
フチなし印刷チェックボックス６０２がオンされると、プリンタエクステンション２１５は、ＰｒｉｎｔＴｉｃｋｅｔのＰａｇｅＢｏｒｄｅｒｌｅｓｓの設定値をＢｏｒｄｅｒｌｅｓｓに編集し、図９の印刷設定更新処理を開始する。
【００５２】
Ｓ８０１では、プリンタエクステンション２１５は、ＤＰＢに記憶された印刷設定更新情報を取得する。本例では、Ｓ８０２では、プリンタエクステンション２１５は、印刷設定更新情報に、ＮａｍｅがＰａｇｅＢｏｒｄｅｒｌｅｓｓであるデータが存在するか否かを判定する。ここでは、図１０の印刷設定更新情報に、ＮａｍｅがＰａｇｅＢｏｒｄｅｒｌｅｓｓのデータが存在するので、Ｓ８０３に進み、プリンタエクステンション２１５は、該当するデータ内のＩｓＮｅｅｄＣｏｍｍｉｔの設定値が０か否かを判定する。ＩｓＮｅｅｄＣｏｍｍｉｔの設定値は０ではないので、Ｓ８０５に進み、プリンタエクステンション２１５は、ＩｓＮｅｅｄＣｏｍｍｉｔの設定値が１か否かを判定する。ＩｓＮｅｅｄＣｏｍｍｉｔの設定値は２なので、Ｓ８０８に進み、プリンタエクステンション２１５は、コンフィグレーションモジュール２１９へ編集したＰｒｉｎｔＴｉｃｋｅｔを渡してＰｒｉｎｔＴｉｃｋｅｔを要求する。ＰｒｉｎｔＴｉｃｋｅｔの生成は非同期処理なので、ＰｒｉｎｔＴｉｃｋｅｔの生成の完了を待たず次の処理へ進む。Ｓ８０７では、プリンタエクステンション２１５は、印刷設定ＵＩを無効にして入力を受け付けないようにし、図９の印刷設定処理を終了する。
【００５３】
コンフィグレーションモジュール２１９でＰｒｉｎｔＴｉｃｋｅｔの生成が完了すると、プリンタエクステンション２１５へ完了イベントが通知される。プリンタエクステンション２１５は、完了イベントを受信すると、図１１のＵＩ更新処理を開始する。
【００５４】
Ｓ１００１では、プリンタエクステンション２１５は、ＤＰＢに格納された印刷設定更新情報を取得する。Ｓ１００２では、プリンタエクステンション２１５は、印刷設定更新情報に、ＮａｍｅがＰａｇｅＢｏｒｄｅｒｌｅｓｓであるデータが存在するか否かを判定する。ここでは、図１０の印刷設定更新情報に、ＮａｍｅがＰａｇｅＢｏｒｄｅｒｌｅｓｓのデータが存在するので、Ｓ１００３に進み、プリンタエクステンション２１５は、該当するデータ内のＵｐｄａｔｅＳｅｔｔｉｎｇｓを取得する。図１０に示すように、ＵｐｄａｔｅＳｅｔｔｉｎｇｓには“ＰａｇｅＬａｙｏｕｔ”のみが列挙されているので、ページレイアウトコンボボックス６０５を更新する。
【００５５】
ページレイアウトコンボボックス６０５は前述のとおり割り付け印刷と分割印刷を含む。Ｓ１００４でプリンタエクステンション２１５は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔからＪｏｂＮＵｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙとＰａｇｅＰｏｓｔｅｒの情報を取得する。そして、Ｓ１００５で、プリンタエクステンション２１５は、ドロップダウンリスト６０５と設定値を更新する。
【００５６】
ＪｏｂＮＵｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙとＰａｇｅＰｏｓｔｅｒ間で発生する禁則については無視するが、他の設定による禁則については従う。本ケースでは、フチなし印刷時は、割り付け印刷と分割印刷は設定できないので、ページレイアウトコンボボックス６０５を無効にし、設定値はＰｒｉｎｔＴｉｃｋｅｔに従って１ｉｎ１印刷に変更する。
【００５７】
次に、Ｓ１００６では、プリンタエクステンション２１５は、アイコンがあるか否かを判定する。ページレイアウトコンボボックス６０５には、前述のとおりアイコンが表示されるので、Ｓ１００７に進み、プリンタエクステンション２１５は、アイコンを更新する。１ｉｎ１印刷の場合、印刷の向きに依らず、図８（ｃ）のアイコンに切り替えられる。
【００５８】
Ｓ１００８では、プリンタエクステンション２１５は、ＵｐｄａｔｅＳｅｔｔｉｎｇｓに列挙された全ての要素の更新が完了したか否かを判定する。全ての要素の更新が完了していないと判定された場合、Ｓ１００４からの処理を繰り返す。一方、全ての要素の更新が完了したと判定された場合、Ｓ１００９に進み、プリンタエクステンション２１５は、印刷設定ＵＩが無効か否かを判定する。ここでは、無効であるので、Ｓ１０１０に進み、印刷設定ＵＩを有効にし、その後、図１１のＵＩ更新処理を終了する。
【００５９】
以上のように、本ケースでは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成処理は行われない。また、ＰｒｉｎｔＴｉｃｋｅｔ及びＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの両方を生成する場合に比べ、印刷設定ＵＩが無効になる時間を短くできる。その結果、操作性の高いＵＩを提供することができる。
【００６０】
また、本ケースでは、フチなし印刷チェックボックス６０２がオンされる場合を説明したが、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成処理が行われない場合であれば、他の操作が行われても上記の動作は同様に適用され得る。
【００６１】
＜ケース４：ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ及びＰｒｉｎｔＴｉｃｋｅｔの生成あり、ＵＩ更新あり＞
用紙の種類ドロップダウンリスト６０１で普通紙が選択されると、プリンタエクステンション２１５は、ＰｒｉｎｔＴｉｃｋｅｔのＰａｇｅＭｅｄｉａＴｙｐｅの設定値をＰｌａｉｎに編集し、図９の印刷設定更新処理を開始する。
【００６２】
Ｓ８０１では、プリンタエクステンション２１５は、ＤＰＢに格納された印刷設定更新情報を取得する。本例では、Ｓ８０２では、プリンタエクステンション２１５は、印刷設定更新情報に、ＮａｍｅがＰａｇｅＭｅｄｉａＴｙｐｅであるデータが存在するか否かを判定する。ここでは、図１０の印刷設定更新情報に、ＮａｍｅがＰａｇｅＭｅｄｉａＴｙｐｅのデータが存在するので、Ｓ８０３に進み、プリンタエクステンション２１５は、該当するデータ内のＩｓＮｅｅｄＣｏｍｍｉｔの設定値が０か否かを判定する。ＩｓＮｅｅｄＣｏｍｍｉｔの設定値は０ではないので、Ｓ８０５に進み、プリンタエクステンション２１５は、ＩｓＮｅｅｄＣｏｍｍｉｔの設定値が１か否かを判定する。ＩｓＮｅｅｄＣｏｍｍｉｔの設定値は１なので、Ｓ８０６に進み、プリンタエクステンション２１５は、コンフィグレーションモジュール２１９へ編集したＰｒｉｎｔＴｉｃｋｅｔを渡してＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔを要求する。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔの生成は非同期処理なので、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ及びＰｒｉｎｔＴｉｃｋｅｔの生成の完了を待たず次の処理へ進む。Ｓ８０７で、プリンタエクステンション２１５は、印刷設定ＵＩを無効にして入力を受け付けないようにし、図９の印刷設定処理を終了する。
【００６３】
コンフィグレーションモジュール２１９でＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ及びＰｒｉｎｔＴｉｃｋｅｔの生成が完了すると、プリンタエクステンション２１５へ完了イベントが通知される。プリンタエクステンション２１５は、完了イベントを受信すると、図１１のＵＩ更新処理を開始する。
【００６４】
Ｓ１００１では、プリンタエクステンション２１５は、ＤＰＢに格納された印刷設定更新情報を取得する。Ｓ１００２では、プリンタエクステンション２１５は、印刷設定更新情報に、ＮａｍｅがＰａｇｅＭｅｄｉａＴｙｐｅであるデータが存在するか否かを判定する。ここでは、図１０の印刷設定更新情報に、ＮａｍｅがＰａｇｅＭｅｄｉａＴｙｐｅのデータが存在するので、Ｓ１００３に進み、プリンタエクステンション２１５は、該当するデータ内のＵｐｄａｔｅＳｅｔｔｉｎｇｓを取得する。図１０に示すように、ＵｐｄａｔｅＳｅｔｔｉｎｇｓには、ＰａｇｅＢｏｒｄｅｒｌｅｓｓとＰａｇｅＬａｙｏｕｔが列挙されているので、フチなし印刷チェックボックス６０２とページレイアウトコンボボックス６０５を更新する。
【００６５】
Ｓ１００４では、プリンタエクステンション２１５は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔからＰａｇｅＢｏｒｄｅｒｌｅｓｓの情報を取得する。用紙の種類が普通紙の場合、フチなし印刷はできないので、Ｓ１００５で、プリンタエクステンション２１５は、フチなし印刷チェックボックス６０２を無効にし、フチなし印刷オフを設定する。
【００６６】
次に、Ｓ１００６では、プリンタエクステンション２１５は、アイコンがあるか否かを判定する。フチなし印刷チェックボックス６０２にはアイコンはないので、Ｓ１００８へ進む。Ｓ１００８で、プリンタエクステンション２１５は、ＵｐｄａｔｅＳｅｔｔｉｎｇｓに列挙された全ての要素の更新が完了したか否かを判定する。ここでは、次の要素ＰａｇｅＬａｙｏｕｔがあるので、Ｓ１００４へ戻る。
【００６７】
ページレイアウトコンボボックス５０５は前述のとおり割り付け印刷と分割印刷を含む。Ｓ１００４でプリンタエクステンション２１５は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔからＪｏｂＮＵｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙとＰａｇｅＰｏｓｔｅｒの情報を取得する。そして、Ｓ１００５で、プリンタエクステンション２１５は、ドロップダウンリスト６０５と設定値を更新する。ここでは、フチなし印刷がオフなので、プリンタエクステンション２１５は、ページレイアウトコンボボックス６０５を有効にし、設定値について、ＰｒｉｎｔＴｉｃｋｅｔに従って１ｉｎ１印刷を設定する。
【００６８】
次に、Ｓ１００６では、プリンタエクステンション２１５は、アイコンがあるか否かを判定する。ページレイアウトコンボボックス６０５には、前述のとおりアイコンが表示されるので、Ｓ１００７に進み、プリンタエクステンション２１５は、アイコンを更新する。１ｉｎ１印刷の場合、印刷の向きに依らず、図８（ｃ）のアイコンに切り替えられる。
【００６９】
Ｓ１００８では、プリンタエクステンション２１５は、ＵｐｄａｔｅＳｅｔｔｉｎｇｓに列挙された全ての要素の更新が完了したか否かを判定する。全ての要素の更新が完了したと判定された場合、Ｓ１００９に進み、プリンタエクステンション２１５は、印刷設定ＵＩが無効か否かを判定する。ここでは、無効であるので、Ｓ１０１０に進み、印刷設定ＵＩを有効にし、その後、図１１のＵＩ更新処理を終了する。
【００７０】
本ケースでは、用紙の種類ドロップダウンリスト６０１で普通紙が選択される場合を説明したが、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ及びＰｒｉｎｔＴｉｃｋｅｔの生成処理が行われる場合であれば、他の操作が行われても上記の動作は同様に適用され得る。
【００７１】
以上のように、本実施形態によれば、印刷設定更新情報に基づいて、コンフィグレーションモジュール２１９に対する、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔの生成の要求を制御する。つまり、ケース１及びケース２のように、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔを生成する必要がない条件を満たす場合には、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔの生成要求は行わない。なお、ケース１及びケース２のように、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔを生成する必要がない条件を満たす場合は、禁則がないか若しくは禁則があっても無視できる場合に相当する。そのような構成により、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔを生成することによってＵＩ更新が完了するまで入力を受け付けられなくなる事態を低減することができる。
【００７２】
［第２実施形態］
以下、第２実施形態について第１実施形態と異なる点について説明する。本実施形態では、コントロールに対する操作により生じる禁則を解消するために印刷設定が矯正されてしまった場合でも、その印刷設定が設定可能になった時点で、自動的に設定を戻すことができる。以下、一例として、ユーザにより順次行われる操作１、２、３に沿って、本実施形態を説明する。
【００７３】
＜操作１：フチなし印刷チェックボックス６０２をオン。ＰｒｉｎｔＴｉｃｋｅｔ生成あり、ＵＩ更新あり＞
フチなし印刷チェックボックス６０２がオンされると、プリンタエクステンション２１５は、ＰｒｉｎｔＴｉｃｋｅｔのＰａｇｅＢｏｒｄｅｒｌｅｓｓの設定値をＢｏｒｄｅｒｌｅｓｓに編集し、図１２の印刷設定更新処理を開始する。
【００７４】
図１２は、本実施形態における、プリンタエクステンション２１５が、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ、ＰｒｉｎｔＴｉｃｋｅｔおよびＵＩを更新する処理を示すフローチャートである。
【００７５】
Ｓ１１０１では、プリンタエクステンション２１５は、変更された印刷設定をメモリ領域に保存する。その際、保存された印刷設定は、後続する操作によって上書きされずに、一定期間、蓄積されていくものとする。本例では、フチなし印刷オンをメモリ領域へ保存する。Ｓ１１０２では、プリンタエクステンション２１５は、ＤＰＢに格納された印刷設定更新情報を取得する。Ｓ１１０３では、プリンタエクステンション２１５は、印刷設定更新情報に、Ｎａｍｅが一致するデータが存在するか否かを判定する。本例では、ＮａｍｅがＰａｇｅＢｏｒｄｅｒｌｅｓｓであるデータが存在するか否かを判定する。ここでは、図１０の印刷設定更新情報に、ＮａｍｅがＰａｇｅＢｏｒｄｅｒｌｅｓｓのデータが存在するので、Ｓ１１０４に進み、プリンタエクステンション２１５は、該当するデータ内のＩｓＮｅｅｄＣｏｍｍｉｔの設定値が０か否かを判定する。本例では、ＩｓＮｅｅｄＣｏｍｍｉｔの設定値は０ではないので、Ｓ１１０６に進み、プリンタエクステンション２１５は、ＩｓＮｅｅｄＣｏｍｍｉｔの設定値が１か否かを判定する。本例では、ＩｓＮｅｅｄＣｏｍｍｉｔの設定値は２なので、Ｓ１１０９に進み、プリンタエクステンション２１５は、コンフィグレーションモジュール２１９へ編集したＰｒｉｎｔＴｉｃｋｅｔを渡してＰｒｉｎｔＴｉｃｋｅｔを要求する。ＰｒｉｎｔＴｉｃｋｅｔの生成は非同期処理なので、ＰｒｉｎｔＴｉｃｋｅｔの生成の完了を待たず次の処理へ進む。Ｓ１１０８で、プリンタエクステンション２１５は、印刷設定ＵＩを無効にして入力を受け付けないようにし、図１２の印刷設定処理を終了する。
【００７６】
Ｓ１１０３でＮａｍｅが一致するデータが存在しないと判定された場合、Ｓ１１０５で、図１１のＵＩ更新処理が実行され、その後、図１２の処理を終了する。
【００７７】
コンフィグレーションモジュール２１９でＰｒｉｎｔＴｉｃｋｅｔの生成が完了すると、プリンタエクステンション２１５へ完了イベントが通知される。プリンタエクステンション２１５は、完了イベントを受信すると、図１３のＵＩ更新処理を開始する。
【００７８】
図１３は、本実施形態における、プリンタエクステンション２１５が、ＵＩを更新する処理を示すフローチャートである。Ｓ１２０１では、プリンタエクステンション２１５は、ＤＰＢに記憶された印刷設定更新情報を取得する。Ｓ１２０２では、プリンタエクステンション２１５は、印刷設定更新情報に、Ｎａｍｅが一致するデータが存在するか否かを判定する。本例では、ＮａｍｅがＰａｇｅＢｏｒｄｅｒｌｅｓｓであるデータが存在するか否かを判定する。ここでは、図１０の印刷設定更新情報に、ＮａｍｅがＰａｇｅＢｏｒｄｅｒｌｅｓｓのデータが存在するので、Ｓ１２０３に進み、プリンタエクステンション２１５は、該当するデータ内のＵｐｄａｔｅＳｅｔｔｉｎｇｓを取得する。図１０に示すように、ＵｐｄａｔｅＳｅｔｔｉｎｇｓには、“ＰａｇｅＬａｙｏｕｔ”のみが列挙されているので、ページレイアウトコンボボックス６０５を更新する。
【００７９】
Ｓ１２０２でＮａｍｅが一致するデータが存在しないと判定された場合、Ｓ１２１１へ進み、プリンタエクステンション２１５は、印刷設定ＵＩを有効にし、その後、図１３のＵＩ更新処理を終了する。
【００８０】
ページレイアウトコンボボックス６０５は前述のとおり割り付け印刷と分割印刷を含む。Ｓ１２０４でプリンタエクステンション２１５は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔからＪｏｂＮＵｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙとＰａｇｅＰｏｓｔｅｒの情報を取得する。そして、Ｓ１２０５で、プリンタエクステンション２１５は、Ｓ１１０１でメモリ領域に保存した印刷設定が設定可能か否かを判定する。ここでは、フチなし印刷のオンは設定可能な状態にあるので、Ｓ１２０７に進み、プリンタエクステンション２１５は、Ｓ１１０１でメモリ領域に保存した印刷設定を設定し（本例では、フチなし印刷オン）、ドロップダウンリスト６０５と設定値を更新する。
【００８１】
ＪｏｂＮＵｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙとＰａｇｅＰｏｓｔｅｒ間で発生する禁則については無視するが、他の設定による禁則については従う。フチなし印刷時は、割り付け印刷と分割印刷は設定できないので、ページレイアウトコンボボックス６０５を無効にし、設定値はＰｒｉｎｔＴｉｃｋｅｔに従って１ｉｎ１印刷に変更する。
【００８２】
次に、Ｓ１２０８では、プリンタエクステンション２１５は、アイコンがあるか否かを判定する。ページレイアウトコンボボックス６０５には、前述のとおりアイコンが表示されるので、Ｓ１２０９に進み、プリンタエクステンション２１５は、アイコンを更新する。１ｉｎ１印刷の場合、印刷の向きに依らず、図８（ｃ）のアイコンに切り替えられる。
【００８３】
Ｓ１２１０では、プリンタエクステンション２１５は、ＵｐｄａｔｅＳｅｔｔｉｎｇｓに列挙された全ての要素の更新が完了したか否かを判定する。全ての要素の更新が完了していないと判定された場合、Ｓ１２０４からの処理を繰り返す。一方、全ての要素の更新が完了したと判定された場合、Ｓ１２１１に進み、プリンタエクステンション２１５は、印刷設定ＵＩを有効にし、その後、図１３のＵＩ更新処理を終了する。
【００８４】
＜操作２：普通紙の選択。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ及びＰｒｉｎｔＴｉｃｋｅｔの生成あり、ＵＩ更新あり＞
操作１に続いて、用紙の種類ドロップダウンリスト６０１で普通紙が選択されると、プリンタエクステンション２１５は、ＰｒｉｎｔＴｉｃｋｅｔのＰａｇｅＭｅｄｉａＴｙｐｅの設定値をＰｌａｉｎに編集し、図１２の印刷設定更新処理を開始する。
【００８５】
本例では、Ｓ１１０１では、プリンタエクステンション２１５は、用紙の種類の設定である普通紙をメモリ領域へ保存する。Ｓ１１０２では、プリンタエクステンション２１５は、ＤＰＢに格納された印刷設定更新情報を取得する。Ｓ１１０３では、プリンタエクステンション２１５は、印刷設定更新情報に、ＮａｍｅがＰａｇｅＭｅｄｉａＴｙｐｅであるデータが存在するか否かを判定する。ここでは、図１０の印刷設定更新情報に、ＮａｍｅがＰａｇｅＭｅｄｉａＴｙｐｅのデータが存在するので、Ｓ１１０４に進み、プリンタエクステンション２１５は、該当するデータ内のＩｓＮｅｅｄＣｏｍｍｉｔの設定値が０か否かを判定する。ＩｓＮｅｅｄＣｏｍｍｉｔの設定値は０ではないので、Ｓ１１０６に進み、プリンタエクステンション２１５は、ＩｓＮｅｅｄＣｏｍｍｉｔの設定値が１か否かを判定する。ＩｓＮｅｅｄＣｏｍｍｉｔの設定値は１なので、Ｓ１１０７に進む。プリンタエクステンション２１５は、コンフィグレーションモジュール２１９へ編集したＰｒｉｎｔＴｉｃｋｅｔを渡してＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔを要求する。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔの生成は非同期処理なので、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔの生成の完了を待たず次の処理へ進む。Ｓ１１０８で、プリンタエクステンション２１５は、印刷設定ＵＩを無効にして入力を受け付けないようにし、図１２の印刷設定処理を終了する。
【００８６】
コンフィグレーションモジュール２１９でＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔの生成が完了すると、プリンタエクステンション２１５へ完了イベントが通知される。プリンタエクステンション２１５は、完了イベントを受信すると、図１３のＵＩ更新処理を開始する。
【００８７】
本例では、Ｓ１２０１では、プリンタエクステンション２１５は、ＤＰＢに格納された印刷設定更新情報を取得する。Ｓ１２０２では、プリンタエクステンション２１５は、印刷設定更新情報に、ＮａｍｅがＰａｇｅＭｅｄｉａＴｙｐｅであるデータが存在するか否かを判定する。ここでは、図１０の印刷設定更新情報に、ＮａｍｅがＰａｇｅＭｅｄｉａＴｙｐｅのデータが存在するので、Ｓ１２０３に進み、プリンタエクステンション２１５は、該当するデータ内のＵｐｄａｔｅＳｅｔｔｉｎｇｓを取得する。図１０に示すように、ＵｐｄａｔｅＳｅｔｔｉｎｇｓには、ＰａｇｅＢｏｒｄｅｒｌｅｓｓとＰａｇｅＬａｙｏｕｔが列挙されているので、フチなし印刷チェックボックス６０２とページレイアウトコンボボックス６０５を更新する。
【００８８】
Ｓ１２０４で、プリンタエクステンション２１５は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔからＰａｇｅＢｏｒｄｅｒｌｅｓｓの情報を取得する。そして、Ｓ１２０５で、プリンタエクステンション２１５は、Ｓ１１０１でメモリ領域に保存した印刷設定が設定可能か否かを判定する。フチなし印刷オンが設定されていれば、普通紙の選択はできないので設定可能でないと判定されてＳ１２０６に進み、プリンタエクステンション２１５は、フチなし印刷チェックボックス６０２を無効にし、フチなし印刷オフを設定する（禁則のため、設定の矯正）。
【００８９】
次に、Ｓ１２０８では、プリンタエクステンション２１５は、アイコンがあるか否かを判定する。フチなし印刷チェックボックス６０２にはアイコンはないので、Ｓ１２１０へ進む。Ｓ１２１０で、プリンタエクステンション２１５は、ＵｐｄａｔｅＳｅｔｔｉｎｇｓに列挙された全ての要素の更新が完了したか否かを判定する。ここでは、次の要素ＰａｇｅＬａｙｏｕｔがあるので、Ｓ１２０４へ戻る。
【００９０】
ページレイアウトコンボボックス６０５は前述のとおり割り付け印刷と分割印刷を含む。Ｓ１２０４でプリンタエクステンション２１５は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔからＪｏｂＮＵｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙとＰａｇｅＰｏｓｔｅｒの情報を取得する。そして、Ｓ１２０５で、プリンタエクステンション２１５は、Ｓ１１０１でメモリ領域に保存した印刷設定が設定可能か否かを判定する。上記のようにフチなし印刷オフが設定されたことにより、普通紙の選択が可能であるので、Ｓ１２０７に進み、プリンタエクステンション２１５は、ドロップダウンリスト６０５と設定値を更新する。ここでは、フチなし印刷がオフなので、プリンタエクステンション２１５は、ページレイアウトコンボボックス６０５を有効にし、設定値はＰｒｉｎｔＴｉｃｋｅｔに従って１ｉｎ１印刷を設定する。
【００９１】
次に、Ｓ１２０８では、プリンタエクステンション２１５は、アイコンがあるか否かを判定する。ページレイアウトコンボボックス６０５には、前述のとおりアイコンが表示されるので、Ｓ１２０９に進み、アイコンを更新する。１ｉｎ１印刷の場合、印刷の向きに依らず、図８（ｃ）のアイコンに切り替えられる。
【００９２】
Ｓ１２１０では、プリンタエクステンション２１５は、ＵｐｄａｔｅＳｅｔｔｉｎｇｓに列挙された全ての要素の更新が完了したか否かを判定する。ここでは、全ての要素の更新が完了したので、Ｓ１２１１に進み、プリンタエクステンション２１５は、印刷設定ＵＩを有効にし、その後、図１３のＵＩ更新処理を終了する。
【００９３】
＜操作３：写真紙の選択：ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ及びＰｒｉｎｔＴｉｃｋｅｔの生成あり、ＵＩ更新あり＞
操作２に続いて、用紙の種類ドロップダウンリスト６０１で写真紙が選択されると、プリンタエクステンション２１５は、ＰｒｉｎｔＴｉｃｋｅｔのＰａｇｅＭｅｄｉａＴｙｐｅの設定値をＰｈｏｔｏＰａｐｅｒに編集し、図１２の印刷設定更新処理を開始する。
【００９４】
本例では、Ｓ１１０１では、プリンタエクステンション２１５は、用紙の種類の設定である写真紙をメモリ領域へ保存する。Ｓ１１０２では、プリンタエクステンション２１５は、ＤＰＢに記憶された印刷設定更新情報を取得する。Ｓ１１０３では、プリンタエクステンション２１５は、印刷設定更新情報に、ＮａｍｅがＰａｇｅＭｅｄｉａＴｙｐｅであるデータが存在するか否かを判定する。ここでは、図１０の印刷設定更新情報に、ＮａｍｅがＰａｇｅＭｅｄｉａＴｙｐｅのデータが存在するので、Ｓ１１０４に進み、プリンタエクステンション２１５は、該当するデータ内のＩｓＮｅｅｄＣｏｍｍｉｔの設定値が０か否かを判定する。ＩｓＮｅｅｄＣｏｍｍｉｔの設定値は０ではないので、Ｓ１１０６に進み、プリンタエクステンション２１５は、ＩｓＮｅｅｄＣｏｍｍｉｔの設定値が１か否かを判定する。ＩｓＮｅｅｄＣｏｍｍｉｔの設定値は１なので、Ｓ１１０７に進む。プリンタエクステンション２１５は、コンフィグレーションモジュール２１９へ編集したＰｒｉｎｔＴｉｃｋｅｔを渡してＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔを要求する。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔの生成は非同期処理なので、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔの生成の完了を待たず次の処理へ進む。Ｓ１１０８で、プリンタエクステンション２１５は、印刷設定ＵＩを無効にして入力を受け付けないようにして、図１２の印刷設定処理を終了する。
【００９５】
コンフィグレーションモジュール２１９でＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔの生成が完了すると、プリンタエクステンション２１５へ完了イベントが通知される。プリンタエクステンション２１５は、完了イベントを受信すると、図１３のＵＩ更新処理を開始する。
【００９６】
本例では、Ｓ１２０１では、プリンタエクステンション２１５は、ＤＰＢに記憶された印刷設定更新情報を取得する。Ｓ１２０２では、プリンタエクステンション２１５は、印刷設定更新情報に、ＮａｍｅがＰａｇｅＭｅｄｉａＴｙｐｅであるデータが存在するか否かを判定する。ここでは、図１０の印刷設定更新情報に、ＮａｍｅがＰａｇｅＭｅｄｉａＴｙｐｅのデータが存在するので、Ｓ１２０３に進み、プリンタエクステンション２１５は、該当するデータ内のＵｐｄａｔｅＳｅｔｔｉｎｇｓを取得する。図１０に示すように、ＵｐｄａｔｅＳｅｔｔｉｎｇｓには、ＰａｇｅＢｏｒｄｅｒｌｅｓｓとＰａｇｅＬａｙｏｕｔが列挙されているので、フチなし印刷チェックボックス６０２とページレイアウトコンボボックス６０５を更新する。
【００９７】
Ｓ１２０４で、プリンタエクステンション２１５は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔからＰａｇｅＢｏｒｄｅｒｌｅｓｓの情報を取得する。そして、Ｓ１２０５で、プリンタエクステンション２１５は、Ｓ１１０１でメモリ領域に保存した印刷設定が設定可能か否かを判定する。「操作２」でフチなし印刷オフに設定されていても、写真紙の選択は可能であるので、Ｓ１２０７に進み、プリンタエクステンション２１５は、フチなし印刷チェックボックス６０２を有効にし、オンを設定する。つまり、「操作１」でフチなし印刷オンに設定された後、「操作２」で禁則によりフチなし印刷オフに矯正されるとする。この場合でも、操作３により禁則が解除されてフチなし印刷オンが可能になれば、且つ、従前のＳ１１０１でフチなし印刷オンが保存されていれば、設定をフチなし印刷オンに戻すことができる。
【００９８】
次に、Ｓ１２０８では、プリンタエクステンション２１５は、アイコンがあるか否かを判定する。フチなし印刷チェックボックス６０２にはアイコンはないので、Ｓ１２１０へ進む。Ｓ１２１０で、プリンタエクステンション２１５は、ＵｐｄａｔｅＳｅｔｔｉｎｇｓに列挙された全ての要素の更新が完了したか否かを判定する。ここでは、次の要素ＰａｇｅＬａｙｏｕｔがあるので、Ｓ１２０４へ戻る。
【００９９】
ページレイアウトコンボボックス５０５は前述のとおり割り付け印刷と分割印刷を含む。Ｓ１２０４でプリンタエクステンション２１５は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔからＪｏｂＮＵｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙとＰａｇｅＰｏｓｔｅｒの情報を取得する。そして、Ｓ１２０５で、プリンタエクステンション２１５は、Ｓ１１０１でメモリ領域に保存した印刷設定が設定可能か否かを判定する。写真紙の選択が可能であるので、Ｓ１２０７に進み、プリンタエクステンション２１５は、ドロップダウンリスト６０５と設定値を更新する。ここでは、フチなし印刷がオンなので、ページレイアウトコンボボックス６０５を無効にし、設定値はＰｒｉｎｔＴｉｃｋｅｔに従って１ｉｎ１印刷を設定する。
【０１００】
次に、Ｓ１２０８では、プリンタエクステンション２１５は、アイコンがあるか否かを判定する。ページレイアウトコンボボックス６０５には、前述のとおりアイコンが表示されるので、Ｓ１２０９に進み、アイコンを更新する。１ｉｎ１印刷の場合、印刷の向きに依らず、図８（ｃ）のアイコンに切り替えられる。
【０１０１】
Ｓ１２１０では、プリンタエクステンション２１５は、ＵｐｄａｔｅＳｅｔｔｉｎｇｓに列挙された全ての要素の更新が完了したか否かを判定する。ここでは、全ての要素の更新が完了したので、Ｓ１２１１へ進み、プリンタエクステンション２１５は、印刷設定ＵＩを有効にし、その後、図１３のＵＩ更新処理を終了する。
【０１０２】
以上のように、本実施形態では、コントロールに対する操作により生じる禁則を解消するために印刷設定が矯正されてしまった場合でも（操作２でのＳ１２０６）、その印刷設定が設定可能になった時点で、自動的に設定を戻すことが可能になる。さらに、本実施形態では、所定の種類の操作による印刷設定に基づいた処理を例に説明したが、他の操作による印刷設定についても同様に適用され得る。
【０１０３】
［第３実施形態］
以下、第３実施形態について第１及び第２実施形態と異なる点について説明する。以下、コントロールに対する操作の流れを一例として説明するが、以下の操作の流れに限定されるものではなく、他の操作の流れに対しても適用され得る。
【０１０４】
例えば、用紙の種類のコンボボックス６０１で「写真用紙」を選択し、ページレイアウトコンボボックス６０５で「２ｉｎ１印刷」を選択した状態で、フチなし印刷チェックボックス６０２がオンされたとする。この場合、プリンタエクステンション２１５は、ＰｒｉｎｔＴｉｃｋｅｔのＰａｇｅＢｏｒｄｅｒｌｅｓｓの設定値をＢｏｒｄｅｒｌｅｓｓに編集し、図１４の印刷設定更新処理を開始する。
【０１０５】
図１４は、本実施形態における、プリンタエクステンション２１５が、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ、ＰｒｉｎｔＴｉｃｋｅｔおよびＵＩを更新する処理を示すフローチャートである。
【０１０６】
Ｓ１３０１で、プリンタエクステンション２１５は、現在ＰｒｉｎｔＴｉｃｋｅｔ生成中か否かを判定する。ＰｒｉｎｔＴｉｃｋｅｔ生成中でないと判定された場合、Ｓ１３０２で、プリンタエクステンション２１５は、ＤＰＢに記憶された印刷設定更新情報を取得する。Ｓ１３０１でＰｒｉｎｔＴｉｃｋｅｔ生成中であると判定された場合、図１４の処理を終了する。ここでは、ＰｒｉｎｔＴｉｃｋｅｔの生成はまだ要求されていないので、Ｓ１３０２に進む。
【０１０７】
Ｓ１３０３では、プリンタエクステンション２１５は、印刷設定更新情報に、ＮａｍｅがＰａｇｅＢｏｒｄｅｒｌｅｓｓであるデータが存在するか否かを判定する。ここでは、図１０の印刷設定更新情報に、ＮａｍｅがＰａｇｅＢｏｒｄｅｒｌｅｓｓのデータが存在するので、Ｓ１３０４に進み、プリンタエクステンション２１５は、該当するデータ内のＩｓＮｅｅｄＣｏｍｍｉｔの設定値が０か否かを判定する。ＩｓＮｅｅｄＣｏｍｍｉｔの設定値は０ではないので、Ｓ１３０６に進み、プリンタエクステンション２１５は、ＩｓＮｅｅｄＣｏｍｍｉｔの設定が１か否かを判定する。ＩｓＮｅｅｄＣｏｍｍｉｔの設定値は２なので、Ｓ１３０９に進み、プリンタエクステンション２１５は、コンフィグレーションモジュール２１９へ編集したＰｒｉｎｔＴｉｃｋｅｔを渡してＰｒｉｎｔＴｉｃｋｅｔの生成を要求する。ＰｒｉｎｔＴｉｃｋｅｔの生成は非同期処理なので、ＰｒｉｎｔＴｉｃｋｅｔの生成の完了を待たず、図１４の印刷設定更新処理を終了する。
【０１０８】
Ｓ１３０６でＩｓＮｅｅｄＣｏｍｍｉｔの設定値が１と判定された場合、Ｓ１３０７において、プリンタエクステンション２１５は、コンフィグレーションモジュール２１９へ編集したＰｒｉｎｔＴｉｃｋｅｔを渡す。そしてＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ、ＰｒｉｎｔＴｉｃｋｅｔの生成を要求する。その場合も、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ、ＰｒｉｎｔＴｉｃｋｅｔの生成は非同期処理なので、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ、ＰｒｉｎｔＴｉｃｋｅｔの生成の完了を待たず、図１４の印刷設定更新処理を終了する。
【０１０９】
本実施形態によれば、ＰｒｉｎｔＴｉｃｋｅｔ生成中も印刷設定ＵＩを無効としない。つまり、印刷設定ＵＩは有効なままであるので、ユーザは続けてコントロールの操作が可能であり、操作性を向上させることができる。
【０１１０】
さらに、部単位で印刷チェックボックス６０７がオフされると、プリンタエクステンション２１５は、ＰｒｉｎｔＴｉｃｋｅｔのＤｏｃｕｍｅｎｔＣｏｌｌａｔｅの設定値をＵｎｃｏｌｌａｔｅｄに編集し、図１４の印刷設定更新処理を開始する。
【０１１１】
Ｓ１３０１で、プリンタエクステンション２１５は、現在ＰｒｉｎｔＴｉｃｋｅｔ生成中か否かを判定する。ここでは、上記で要求が行われたＰｒｉｎｔＴｉｃｋｅｔ生成の処理中であるので、ＰｒｉｎｔＴｉｃｋｅｔ生成中であると判定され、図１４の印刷設定更新処理を終了する。
【０１１２】
さらに、用紙の種類コンボボックス６０１で普通紙が選択されると、プリンタエクステンション２１５は、ＰｒｉｎｔＴｉｃｋｅｔのＰａｇｅＭｅｄｉａＴｙｐｅの設定値をＰｌａｉｎに編集し、図１４の印刷設定更新処理を開始する。
【０１１３】
Ｓ１３０１で、プリンタエクステンション２１５は、現在ＰｒｉｎｔＴｉｃｋｅｔ生成中か否かを判定する。ここでは、上記で要求が行われたＰｒｉｎｔＴｉｃｋｅｔ生成の処理中であるので、ＰｒｉｎｔＴｉｃｋｅｔ生成中であると判定され、図１４の印刷設定更新処理を終了する。
【０１１４】
そして、コンフィグレーションモジュール２１９でＰｒｉｎｔＴｉｃｋｅｔの生成が完了すると、プリンタエクステンション２１５は、完了イベントを受信し、図１５の更新後ＰｒｉｎｔＴｉｃｋｅｔマージ処理を開始する。
【０１１５】
図１５は、更新後ＰｒｉｎｔＴｉｃｋｅｔマージ処理を示すフローチャートである。
【０１１６】
Ｓ１４０１では、プリンタエクステンション２１５は、ＤＰＢに記憶された印刷設定更新情報を取得する。Ｓ１４０２で、プリンタエクステンション２１５は、コンフィグレーションモジュール２１９から渡された更新後ＰｒｉｎｔＴｉｃｋｅｔの印刷設定を読み込む。
【０１１７】
Ｓ１４０３では、プリンタエクステンション２１５は、Ｓ１４０２で読み込んだ印刷設定がＰｒｉｎｔＴｉｃｋｅｔに存在するか否かを判定する。存在すると判定された場合は、Ｓ１４０４に進み、プリンタエクステンション２１５は、保持しているＰｒｉｎｔＴｉｃｋｅｔと、更新後ＰｒｉｎｔＴｉｃｋｅｔの設定値とが一致するか否かを判定する。本例では、フチなし印刷時は割り付け印刷は設定できないので、ＪｏｂＮｕｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙの設定は、更新後ＰｒｉｎｔＴｉｃｋｅｔでは１ｉｎ１印刷となっている。一方、保持しているＰｒｉｎｔＴｉｃｋｅｔでは２ｉｎ１印刷なので、Ｓ１４０４で一致しないと判定され、Ｓ１４０５に進む。
【０１１８】
Ｓ１４０３でＰｒｉｎｔＴｉｃｋｅｔに存在しないと判定された場合、Ｓ１４０４で一致すると判定された場合には、他の印刷設定について、Ｓ１４０３からの処理を繰り返す。
【０１１９】
Ｓ１４０５では、プリンタエクステンション２１５は、印刷設定更新情報に、Ｎａｍｅが一致するデータが存在するか否かを判定する。ここでは、図１０の印刷設定更新情報に、ＮａｍｅがＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙのデータは存在しないので、Ｓ１４１０へ進む。Ｎａｍｅが一致するデータが存在すると判定された場合には、後述するようにＳ１４０６に進む。
【０１２０】
Ｓ１４１０では、プリンタエクステンション２１５は、保持しているＰｒｉｎｔＴｉｃｋｅｔの値は設定可能であるか否かを判定する。本例では、２ｉｎ１印刷が設定可能か否かを、更新後のＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに基づいて判定する。前述のとおりフチなし印刷時は割り付け印刷と分割印刷は設定できないので、２ｉｎ１印刷は設定可能でないと判定し、Ｓ１４１１に進み、プリンタエクステンション２１５は、ＰｒｉｎｔＴｉｃｋｅｔに更新後ＰｒｉｎｔＴｉｃｋｅｔの値を設定する。本例では、ＰｒｉｎｔＴｉｃｋｅｔの設定を、更新後ＰｒｉｎｔＴｉｃｋｅｔの値である１ｉｎ１印刷に変更する。Ｓ１４１０で設定可能でないと判定された場合には、他の印刷設定について、Ｓ１４０３からの処理を繰り返す。
【０１２１】
次に、他の印刷設定について、Ｓ１４０３からの処理を繰り返す。本例では、ＰｒｉｎｔＴｉｃｋｅｔ生成中に変更された用紙の種類についてＳ１４０３からの処理を行う。本例では、Ｓ１４０３で、Ｓ１４０２で読み込んだ印刷設定がＰｒｉｎｔＴｉｃｋｅｔに存在すると判定される。そして、更新後ＰｒｉｎｔＴｉｃｋｅｔでは写真用紙であり、保持しているＰｒｉｎｔＴｉｃｋｅｔでは普通紙であるので、Ｓ１４０４で一致しないと判定され、Ｓ１４０５に進む。
【０１２２】
Ｓ１４０５では、プリンタエクステンション２１５は、印刷設定更新情報に、ＮａｍｅがＰａｇｅＭｅｄｉａＴｙｐｅのデータが存在するか否かを判定する。ここでは、図１０の印刷設定更新情報に、ＮａｍｅがＰａｇｅＭｅｄｉａＴｙｐｅのデータが存在するので、Ｓ１４０６で該当するデータ内のＩｓＮｅｅｄＣｏｍｍｉｔの設定値が０か否かを判定する。ＩｓＮｅｅｄＣｏｍｍｉｔの設定値が０であれば、Ｓ１４１０へ進む。本例では、ＩｓＮｅｅｄＣｏｍｍｉｔの設定値は０ではないので、Ｓ１４０７に進み、プリンタエクステンション２１５は、ＩｓＮｅｅｄＣｏｍｍｉｔの設定値が１か否かを判定する。本例では、ＩｓＮｅｅｄＣｏｍｍｉｔの設定値は１なので、Ｓ１４０８に進む。プリンタエクステンション２１５は、コンフィグレーションモジュール２１９へＰｒｉｎｔＴｉｃｋｅｔを渡してＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔの生成を要求する。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔの生成は非同期処理なので、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔの生成の完了を待たず、図１５の処理を終了する。
【０１２３】
一方、Ｓ１４０７でＩｓＮｅｅｄＣｏｍｍｉｔの設定値が１でないと判定された場合、Ｓ１４０９に進み、プリンタエクステンション２１５は、コンフィグレーションモジュール２１９へＰｒｉｎｔＴｉｃｋｅｔを渡してＰｒｉｎｔＴｉｃｋｅｔの生成を要求する。ＰｒｉｎｔＴｉｃｋｅｔの生成は非同期処理なので、ＰｒｉｎｔＴｉｃｋｅｔの生成の完了を待たず、図１５の処理を終了する。
【０１２４】
上記のように図１５の処理を終了する場合には、マージ処理が中断されることになるが、Ｓ１４０２で再びコンフィグレーションモジュール２１９から渡された更新後ＰｒｉｎｔＴｉｃｋｅｔの印刷設定を読み込み、Ｓ１４０３以降の処理が行われる。以下、そのようなケースにおいて、ＰｒｉｎｔＴｉｃｋｅｔ生成中に変更された部単位印刷について、Ｓ１４０３からの処理が行われるとして説明する。
【０１２５】
本例では、Ｓ１４０３で、Ｓ１４０２で読み込んだ印刷設定がＰｒｉｎｔＴｉｃｋｅｔに存在すると判定される。そして、更新後ＰｒｉｎｔＴｉｃｋｅｔでは部単位印刷オンであり、保持しているＰｒｉｎｔＴｉｃｋｅｔでは部単位印刷オフであるので、Ｓ１４０４で一致しないと判定され、Ｓ１４０５に進む。
【０１２６】
本例では、Ｓ１４０５で、プリンタエクステンション２１５は、印刷設定更新情報に、ＮａｍｅがＤｏｃｕｍｅｎｔＣｏｌｌａｔｅのデータが存在するか否かを判定する。ここでは、図１０の印刷設定更新情報に、ＮａｍｅがＤｏｃｕｍｅｎｔＣｏｌｌａｔｅのデータは存在しないので、Ｓ１４１０に進み、プリンタエクステンション２１５は、部単位印刷オフが設定可能か否かを判定する。フチなし印刷時でも部単位印刷はオン、オフとも設定可能であるので、設定可能と判定される。本例では、更新後ＰｒｉｎｔＴｉｃｋｅｔの印刷設定の全てについて処理したことになるので、図１５のループを抜け、Ｓ１４１２に進む。
【０１２７】
Ｓ１４１２では、図１１のＵＩ更新処理を実行し、その後、図１５の処理を終了する。つまり、本実施形態では、更新後ＰｒｉｎｔＴｉｃｋｅｔと、コンフィグレーションモジュール２１９で生成中に操作が行われたＰｒｉｎｔＴｉｃｋｅｔとをマージし、そのマージ後のＰｒｉｎｔＴｉｃｋｅｔに基づいて、図１１のＵＩ更新処理が実行される。その結果、ユーザの操作性を低下させることなく、最新のＰｒｉｎｔＴｉｃｋｅｔに基づいて印刷設定ＵＩの更新処理が行われる。なお、本実施形態では、Ｓ１３０９でＰｒｉｎｔＴｉｃｋｅｔの生成が要求されるケースについて説明したが、Ｓ１３０７でＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔの生成が要求されるケースについても同様の効果が得られる。
【０１２８】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【０１２９】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【０１３０】
１０１  情報処理装置：  １０２  印刷装置：  １１１  ＣＰＵ：  ２０３  プリンタドライバ：  ２１３  印刷設定定義ファイル：  ２１５  プリンタエクステンション：  ２１７  プロパティバッグ：  ２１９  コンフィグレーションモジュール
【図１】
2020166698.tif 000003
【図２】
2020166698.tif 000004
【図３】
2020166698.tif 000005
【図４】
2020166698.tif 000006
【図５】
2020166698.tif 000007
【図６】
2020166698.tif 000008
【図７】
2020166698.tif 000009
【図８】
2020166698.tif 000010
【図９】
2020166698.tif 000011
【図１０】
2020166698.tif 000012
【図１１】
2020166698.tif 000013
【図１２】
2020166698.tif 000014
【図１３】
2020166698.tif 000015
【図１４】
2020166698.tif 000016
【図１５】
2020166698.tif 000017