(57)【要約】【課題】アプリケーションから基準となる印刷設定が渡されずにＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓが要求された場合も、印刷設定に基づく処理を行うことができる仕組みを提供する。【解決手段】印刷設定定義ファイルに記述した設定取得用の機能と禁則の定義に基づいて生成されるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを基に、取得したい機能の設定値を決定する。【選択図】  図９
2019128606.tif 000002
【特許請求の範囲】
【請求項１】
印刷ソフトウェアを備える情報処理装置であって、
設定定義情報に基づき、前記印刷ソフトウェアの機能情報を生成する生成部により生成される機能情報に対して編集を行う編集手段
を備え、
前記設定定義情報は、複数の設定値のいずれかを設定可能に定義された第１の機能と、前記第１の機能に対応し、前記複数の設定値それぞれと禁則関係にある設定値が定義された第２の機能とを含み、
前記編集手段は、
前記生成された機能情報において、前記第１の機能の現在の設定により禁則関係となっていると示されている設定値を前記第２の機能に定義されている設定値から特定し、
前記特定した設定値に基づいて、前記機能情報を編集することを特徴とする情報処理装置。
【請求項２】
前記設定定義情報は、前記第２の機能において、前記第１の機能の前記複数の設定値のいずれとも禁則関係とならない設定値が更に定義され、
当該禁則関係とならない設定値が前記第２の機能のデフォルト値として設定されることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記編集手段は、前記生成された機能情報から前記第２の機能に関する情報を削除することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
アプリケーションが前記印刷ソフトウェアの機能情報を要求する際に設定情報を送信した場合は、前記設定情報にて指定された値を用いて前記機能情報が生成され、前記アプリケーションが前記印刷ソフトウェアの機能情報を要求する際に前記設定情報を送信しない場合は、ユーザが設定したデフォルト値に基づいて前記機能情報が生成されることを特徴とする請求項１乃至３のいずれか一項に記載の情報処理装置。
【請求項５】
前記編集手段は、
アプリケーションから送信された設定情報を取得したか否かを判定し、
前記設定情報を取得したと判定した場合は、前記設定情報にて指定された値を用いて前記機能情報を編集し、
前記設定情報を取得していないと判定した場合は、前記生成された機能情報において、前記第２の機能に定義されている設定値のうち、前記第１の機能の現在の設定により禁則関係となっていると示されている設定値を特定し、前記特定した設定値に基づいて、前記機能情報を編集することを特徴とする請求項１乃至４のいずれか一項に記載の情報処理装置。
【請求項６】
前記印刷ソフトウェアは、Ｖ４プリンタドライバであることを特徴とする請求項１乃至５のいずれか一項に記載の情報処理装置。
【請求項７】
印刷ソフトウェアを備える情報処理装置の制御方法であって、
設定定義情報に基づき、前記印刷ソフトウェアの機能情報を生成する生成部により生成される機能情報に対して編集を行う編集工程
を有し、
前記設定定義情報は、複数の設定値のいずれかを設定可能に定義された第１の機能と、前記第１の機能に対応し、前記複数の設定値それぞれと禁則関係にある設定値が定義された第２の機能とを含み、
前記編集工程において、
前記生成された機能情報において、前記第１の機能の現在の設定により禁則関係となっていると示されている設定値を前記第２の機能に定義されている設定値から特定し、
前記特定した設定値に基づいて、前記機能情報を編集することを特徴とする情報処理装置の制御方法。
【請求項８】
コンピュータを、
設定定義情報に基づき、前記コンピュータが備える印刷ソフトウェアの機能情報を生成する生成部により生成される機能情報に対して編集を行う編集手段
として機能させ、
前記設定定義情報は、複数の設定値のいずれかを設定可能に定義された第１の機能と、前記第１の機能に対応し、前記複数の設定値それぞれと禁則関係にある設定値が定義された第２の機能とを含み、
前記編集手段は、
前記生成された機能情報において、前記第１の機能の現在の設定により禁則関係となっていると示されている設定値を前記第２の機能に定義されている設定値から特定し、
前記特定した設定値に基づいて、前記機能情報を編集することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびその制御方法、並びにプログラムに関する。
【背景技術】
【０００２】
近年、オペレーティングシステム（ＯＳ）の１つであるＭｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ（登録商標）において、Ｖ４プリンタドライバと呼ばれる新しいアーキテクチャで動作するプリンタドライバが導入されている。Ｖ４プリンタドライバは、ＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）文書を利用した印刷パスを利用している。このＸＰＳ印刷パスにおいて、印刷物の体裁を決定するために、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓと、ＰｒｉｎｔＴｉｃｋｅｔが利用される。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは、ＸＭＬ形式で記述された印刷機能情報であり、ＰｒｉｎｔＴｉｃｋｅｔは、ＸＭＬ形式で記述された印刷設定情報である。Ｖ４プリンタドライバは、ＧＰＤ（Ｇｅｎｅｒｉｃ  Ｐｒｉｎｔｅｒ  Ｄｅｓｃｒｉｐｔｉｏｎ）と呼ばれる、プリンタドライバの印刷設定の機能を定義する印刷設定定義ファイルを同梱している。このＧＰＤを含んだプリンタドライバをＯＳにインストールすることで、ユーザに対してＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓやＰｒｉｎｔＴｉｃｋｅｔを用いた印刷設定変更機能を提供することができる。
【０００３】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは特定の設定下における印刷機能情報であるため、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成には基準となる印刷設定が必要となる。基準となる印刷設定は、アプリケーションがＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓをプリンタドライバに要求する際にＰｒｉｎｔＴｉｃｋｅｔを渡すことで指定することができる。その一方、アプリケーションはＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓをプリンタドライバに要求する際に、ＰｒｉｎｔＴｉｃｋｅｔを指定しないことも可能である。指定されない場合、基準となる印刷設定として、ユーザによって変更可能なユーザデフォルト設定が使用される。アプリケーションから印刷する際にはユーザデフォルト設定がプリンタドライバの初期設定として使用される。
【０００４】
Ｖ４プリンタドライバでは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓやＰｒｉｎｔＴｉｃｋｅｔの生成はＯＳ提供のコンフィグレーションモジュールで行われる。加えて、コンフィグレーションモジュールで生成されたＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓやＰｒｉｎｔＴｉｃｋｅｔに対して、プリンタドライバ開発ベンダ独自の編集を行うための印刷設定編集モジュールを設けることも可能である。プリンタドライバ開発ベンダは印刷設定編集モジュールを実装することで数値や文字列等のパラメータに関する定義の追加など、コンフィグレーションモジュールが行うことのできない編集をＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに施すことができる（特許文献１等）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−２２５４８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
印刷設定編集モジュールは、コンフィグレーションモジュールが生成したＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの編集を行う。その際に、コンフィグレーションモジュールが生成したＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓと、アプリケーションが指定したＰｒｉｎｔＴｉｃｋｅｔが渡されてくる。印刷設定編集モジュールは、ＰｒｉｎｔＴｉｃｋｅｔを参照して、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの編集を行う。しかし、アプリケーションがＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓをプリンタドライバに要求する際にＰｒｉｎｔＴｉｃｋｅｔを指定しなかった場合、印刷設定編集モジュールにはＰｒｉｎｔＴｉｃｋｅｔが渡されてこない。印刷設定編集モジュールは、ＰｒｉｎｔＴｉｃｋｅｔが渡されてこないことで、適切にＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを編集できなくなるおそれがあった。
【課題を解決するための手段】
【０００７】
上記課題を解決するために本願発明は以下の構成を有する。すなわち、印刷ソフトウェアを備える情報処理装置であって、設定定義情報に基づき、前記印刷ソフトウェアの機能情報を生成する生成部により生成される機能情報に対して編集を行う編集手段を備え、前記設定定義情報は、複数の設定値のいずれかを設定可能に定義された第１の機能と、前記第１の機能に対応し、前記複数の設定値それぞれと禁則関係にある設定値が定義された第２の機能とを含み、前記編集手段は、前記生成された機能情報において、前記第１の機能の現在の設定により禁則関係となっていると示されている設定値を前記第２の機能に定義されている設定値から特定し、前記特定した設定値に基づいて、前記機能情報を編集する。
【発明の効果】
【０００８】
本発明により、印刷設定編集モジュールにおいてＰｒｉｎｔＣａｐａｂｉｌｉｔｅｓを適切に編集することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】印刷システムのハードウェア構成の例を示すブロック図。
【図２】印刷システムのソフトウェア構成を説明するための図。
【図３】ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成におけるデータの流れを説明するための図。
【図４】印刷設定定義ファイル（ＧＰＤ）の一部を示す図。
【図５】ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの記述例を示す図。
【図６】ＰｒｉｎｔＴｉｃｋｅｔの記述例を示す図。
【図７】ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの記述例を示す図。
【図８】ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成処理を示すフローチャート。
【図９】用紙サイズ設定の決定処理を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
【００１１】
＜第１実施形態＞
［ハードウェア構成］
図１は、印刷システムのハードウェア構成の例を示すブロック図である。図１において、ホストコンピュータ１０１は、情報処理装置の一例であり、入力インタフェース１１０、ＣＰＵ１１１、ＲＯＭ１１２、ＲＡＭ１１３、外部記憶装置１１４、出力インタフェース１１５、及び出力インタフェース１１６を有する。情報処理装置としては、例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などが該当する。入力インタフェース１１０には、キーボード１１８、ポインティングデバイス１１７などの入力デバイスが接続される。出力インタフェース１１５には、表示部１１９などの表示デバイスが接続される。なお、入力インタフェース、出力インタフェースそれぞれの数は、図１に示した構成に特に限定するものではない。
【００１２】
ＲＯＭ１１２は、不揮発性の記憶領域であり、初期化プログラムが格納される。外部記憶装置１１４は、不揮発性の記憶領域であり、アプリケーションプログラム群、ＯＳ、プリンタドライバ２０３、その他の各種のデータが格納される。ＲＡＭ１１３は、例えば、外部記憶装置１１４にストアされる各種のプログラムの実行の際のワークメモリとして使用される。なお、本実施形態では、ＣＰＵ１１１が、ＲＯＭ１１２に格納されたプログラムの手順に従って処理を行うことによって、ホストコンピュータ１０１における後述の機能及び後述するフローチャートに係る処理が実現される。印刷装置１０２は、出力インタフェース１１６を介して、ホストコンピュータ１０１と接続されている。ここでは、ホストコンピュータ１０１と印刷装置１０２が分かれて構成されているが、これらが一つの情報処理装置として構成されていても良い。なお、本実施形態では、プリンタドライバを単に印刷ソフトウェアと呼ぶこともある。なお、本実施形態ではプリンタドライバを用いて説明するが、印刷データを生成する印刷ソフトウェア（例えば、印刷アプリケーション）に本実施形態が適用されても良い。
【００１３】
［ソフトウェア構成］
図２は、本実施形態に係る印刷システムのソフトウェア構成を説明するための図である。印刷システムは、ＸＰＳファイルフォーマットをスプールデータとして使用し、印刷を行うシステムである。プリンタドライバ２０３は、印刷装置１０２に対して印刷指示を行うことができる。コンフィグレーションモジュール２１９、フィルタパイプラインマネージャ２２１は、プリンタドライバ２０３に含まれている。しかし、これらは、ホストコンピュータ１０１のＯＳから提供されている、プリンタドライバ２０３のモジュールという位置づけである。
【００１４】
コンフィグレーションモジュール２１９は、印刷設定定義ファイル２１３に基づき、ＰｒｉｎｔＴｉｃｋｅｔやＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成を行う。ＰｒｉｎｔＴｉｃｋｅｔは、印刷装置１０２の印刷処理におけるＸＭＬ形式で記述された設定情報である。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは、印刷装置１０２の印刷機能に関する機能情報である。具体的な記述例については後述する。印刷設定定義ファイル２１３は、ＧＰＤと呼ばれるテキストベースで記載されている設定定義情報を含むファイルである。さらに、印刷設定定義ファイル２１３には「禁則」の定義を記載することができる。例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）社が定義した記述法に基づき、ＩｎｖａｌｉｄＣｏｍｂｉｎａｔｉｏｎの項目に、同時に設定できない印刷設定の設定値を記載することで、ユーザに対して禁則機能を提供することができる。ここで、同時に設定できない印刷設定とは、デバイスの機能として提供できないものの他に、意図的にユーザに使用してほしくない項目なども含まれる。以下の説明においては、このように印刷設定定義ファイル２１３において、設定できない設定値に関する定義を「禁則」もしくは「禁則関係」と称する。なお、コンフィグレーションモジュール２１９は、ＰｒｉｎｔＴｉｃｋｅｔやＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成を行うため、生成部と呼ばれることもある。
【００１５】
また、コンフィグレーションモジュール２１９は、プリンタドライバ２０３が提供する印刷設定編集モジュール２１１を用いて印刷設定情報を編集することができる。印刷設定編集モジュール２１１は、ＣｏｎｓｔｒａｉｎｔＳｃｒｉｐｔと呼ばれる、ＪａｖａＳｃｒｉｐｔ（登録商標）言語で記載されたモジュールである。印刷設定編集モジュール２１１は、プリンタドライバ２０３によって格納されるデータが提供されるプロパティバッグ２１７を用いて印刷設定情報を編集する。
【００１６】
プロパティバッグ２１７とは、プリンタの機種依存情報として用いるためのＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇと呼ばれるデータ群と、プリントキューに関連づけられたＱｕｅｕｅＰｒｏｐｅｒｔｙＢａｇと呼ばれるデータ群が保持された領域を指す。ＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇは、以降、ＤＰＢと称し、ＱｕｅｕｅＰｒｏｐｅｒｔｙＢａｇは、以降、ＱＰＢと称する。ＤＰＢとＱＰＢは、ともにＯＳによって提供されている保存領域である。ＤＰＢは、ドライバパッケージ内に存在するプリンタ（印刷装置）の機種依存データであり、プリンタドライバ２０３のインストール後にＯＳ内の特定の領域に読取専用としてデータ群が保持される。ＱＰＢは、Ｋｅｙ−ＶａｌｕｅペアのＸＭＬ定義ファイルをＯＳに登録することで使用することが可能であり、Ｖａｌｕｅに関して一定の権限上で編集が可能である。また、印刷設定定義ファイル２１３であるＧＰＤにもＱＰＢの定義を記載することができる。
【００１７】
プリンタエクステンション２１５は、Ｖ４プリンタドライバにおいて、ユーザが印刷設定を行うためのベンダ独自のユーザインタフェースを提供するモジュールである。プリンタエクステンション２１５は、印刷に用いる用紙サイズや印刷方向、その他の属性を設定する機能を提供する。
【００１８】
図２における印刷システムにおいて、アプリケーション２０１が印刷を行う場合、まず印刷設定情報の作成を行う。ここでのアプリケーション２０１は、特に限定するものではなく、例えば、文書編集アプリケーションなどが挙げられる。アプリケーション２０１は、プリンタドライバ２０３のコンフィグレーションモジュール２１９を呼び出して、印刷設定情報を作成して格納する。また、アプリケーション２０１は、印刷設定情報の作成にプリンタエクステンション２１５を用いることができる。アプリケーション２０１は、ＤＥＶＭＯＤＥ構造体、もしくはＰｒｉｎｔＴｉｃｋｅｔの形式で印刷設定情報を保持している。
【００１９】
次に、アプリケーション２０１は、印刷データの生成を行う。作成した文書の各ページの印刷データは、ＯＳの印刷サポート機能を通じてＸＰＳスプールファイル２０５に一時的に蓄えられる。ＸＰＳスプールファイル２０５が生成されると、フィルタパイプラインマネージャ２２１に処理が渡される。フィルタパイプラインマネージャ２２１は、複数のフィルタを通すことで印刷が行われる仕組みで、フィルタコンフィグレーションファイル２２７の内容に従ってフィルタの数や順番が制御される。本実施形態におけるフィルタ群は、レイアウト処理部であるレイアウトフィルタ２２３と、印刷コマンド変換部である印刷コマンドフィルタ２２５とを含んで構成される。
【００２０】
レイアウトフィルタ２２３は、ＸＰＳスプールファイル２０５に格納されたＸＰＳドキュメントを入力とし、印刷設定情報に基づきページのレイアウト処理を行い、レイアウト済みのＸＰＳデータを出力する機能を有する。レイアウト処理とは、例えば複数のページを一つの用紙面に印刷する割り付け印刷や、一つのページを複数の用紙面に印刷するポスター印刷を含む。
【００２１】
印刷コマンドフィルタ２２５は、レイアウトフィルタ２２３の出力を入力とし、印刷設定情報に従い、ＸＰＳドキュメントを印刷装置１０２が解釈可能な印刷コマンドに変換し出力する機能を有する。印刷コマンドフィルタ２２５が入力のＸＰＳドキュメントを一度イメージデータに変換する場合、印刷コマンドフィルタ２２５は一般的にレンダフィルタと呼ばれる。レンダフィルタは、インクジェットプリンタに代表される廉価なラスタプリンタ用のプリンタドライバにおいて多く見られる。印刷コマンドフィルタ２２５がレンダフィルタとして動作する場合は、入力のＸＰＳドキュメントを一度イメージデータに変換する。その後、色空間の変換や二値化等の画像処理の過程を経て、ラスタプリンタが解釈可能な印刷コマンドに変換される。
【００２２】
ページプリンタに代表される高機能なプリンタにおいて、プリンタが解釈できる印刷コマンドの種類にＸＰＳが含まれる場合、印刷コマンドフィルタ２２５は、入力のＸＰＳドキュメントを編集してＸＰＳドキュメントを出力する。印刷コマンドフィルタ２２５にて処理する必要がなければ、入力のＸＰＳドキュメントをそのまま出力しても良いし、若しくは、印刷コマンドフィルタ２２５はプリンタドライバ２０３に含められなくても良い。
【００２３】
［ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成におけるデータの流れ］
図３は、アプリケーション２０１がＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを要求した際に、コンフィグレーションモジュール２１９がＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを返却するまでのデータの流れを示す図である。図３（ａ）では、アプリケーション２０１は、コンフィグレーションモジュール２１９にＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを要求する際に、基準となるＰｒｉｎｔＴｉｃｋｅｔを送信している。
【００２４】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは特定の設定下において設定可能な機能を示す情報である。例えば、用紙の種類にメディアＡ、メディアＢが存在し、メディアＡはフチなし印刷が可能であり、メディアＢはフチなし印刷が不可能であったとする。この場合、アプリケーション２０１が印刷設定ＵＩ（不図示）を提供する際に、メディアＢが選択された状態ではフチなし印刷を設定できないようにすることが望ましい。これをＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓで表現する場合、メディアＢが選択されていることを認識した上で、フチなし印刷が設定できないことを示す必要がある。そのためには用紙の種類に何が設定されているかなど、基準となる設定を示す情報が必要になる。アプリケーション２０１がＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを要求する際に渡すＰｒｉｎｔＴｉｃｋｅｔは基準となる設定を通知するために使用される。
【００２５】
まず、コンフィグレーションモジュール２１９は、印刷設定定義ファイル２１３に基づき、渡されたＰｒｉｎｔＴｉｃｋｅｔの設定を基準としてＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを生成する。前述の例では、印刷設定定義ファイル２１３に、用紙の種類にメディアＡ、メディアＢが存在することや、メディアＢでフチなし印刷ができないことが記載される。また、アプリケーション２０１から渡されたＰｒｉｎｔＴｉｃｋｅｔには、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ生成の基準となる設定、例えば、用紙の種類としてメディアＢが選択されている等、が記載されている。
【００２６】
次に、コンフィグレーションモジュール２１９は、印刷設定編集モジュール２１１を呼び出す。印刷設定編集モジュール２１１は、コンフィグレーションモジュール２１９が生成したＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに対して編集処理を行う。コンフィグレーションモジュール２１９は印刷設定定義ファイル２１３に基づいてＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを生成するので、印刷設定定義ファイル２１３に表現できない情報の追加は印刷設定編集モジュール２１１によって行われる。また、コンフィグレーションモジュール２１９は、印刷設定編集モジュール２１１にＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの編集を要求するにあたり、コンフィグレーションモジュール２１９の作成したＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓと、アプリケーション２０１が渡してきたＰｒｉｎｔＴｉｃｋｅｔを印刷設定編集モジュール２１１に渡す。
【００２７】
印刷設定編集モジュール２１１は、コンフィグレーションモジュール２１９から渡されたＰｒｉｎｔＴｉｃｋｅｔと、ＤＰＢに格納された機種依存情報などを基に、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの編集を行う。印刷設定編集モジュール２１１によって編集されたＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは、コンフィグレーションモジュール２１９を介して要求元のアプリケーション２０１に返却される。アプリケーション２０１は取得したＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを用いて印刷設定を行うＵＩの構築を行う。
【００２８】
図３（ｂ）では、アプリケーション２０１は、基準となるＰｒｉｎｔＴｉｃｋｅｔを渡さずにＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを要求する。この場合、コンフィグレーションモジュール２１９はユーザデフォルト設定３０１を基にＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを生成する。ユーザデフォルト設定３０１は、ユーザによってデフォルト値として指定された設定値であり、外部記憶装置１１４等に保持されている。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを生成したコンフィグレーションモジュール２１９は、印刷設定編集モジュール２１１を呼び出す。
【００２９】
印刷設定編集モジュール２１１は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの編集を行う。アプリケーション２０１からコンフィグレーションモジュール２１９にＰｒｉｎｔＴｉｃｋｅｔが渡されていない場合、印刷設定編集モジュール２１１にもＰｒｉｎｔＴｉｃｋｅｔは渡されない。また、印刷設定編集モジュール２１１は、ユーザデフォルト設定３０１も取得することができないため、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの編集に必要な基準となる印刷設定を取得することができない。そのため、印刷設定編集モジュール２１１は、ＰｒｉｎｔＴｉｃｋｅｔの情報が必要となる編集を行わないか、予め定義した固定の設定を基に編集処理を行うことになる。コンフィグレーションモジュール２１９がユーザデフォルト設定３０１に従いＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを生成できる。しかし、印刷設定編集モジュール２１１はユーザデフォルト設定３０１を用いずにＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの編集を行うことになる。その結果、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの内容に不整合が生じる可能性がある。そのため、アプリケーション２０１からＰｒｉｎｔＴｉｃｋｅｔが渡されてこないケースにおいても、編集に使用する機能についてユーザデフォルト設定３０１における設定値を印刷設定編集モジュール２１１が取得できるようにする必要がある。
【００３０】
［ファイル構成］
（印刷設定定義ファイル）
図４は、印刷設定定義ファイル（ＧＰＤ）の一部を示す図である。尚、ここでは本実施形態の説明に必要な情報のみが記載されているが、プリンタドライバ２０３でサポートする機能についても同様に記載される。ＧＰＤには、機能（Ｆｅａｔｕｒｅ）と、その機能で選択可能な項目（Ｏｐｔｉｏｎ）が記載される。１の機能（Ｆｅａｔｕｒｅ）に対し、１または複数の項目（Ｏｐｔｉｏｎ）が記載される。例えば、図４に示す例においては、機能の一例が用紙サイズ（ＰａｐｅｒＳｉｚｅ）であり、項目の一例がＡ４（Ａ４）、ユーザ定義サイズ（ＣＵＳＴＯＭＳＩＺＥ）の設定値である。
【００３１】
ＦｅａｔｕｒｅとＯｐｔｉｏｎには、それぞれ表示名称を記載することができる。記載された表示名称は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓにおいてＤｉｓｐｌａｙＮａｍｅとして使用される。表示名称の記載方法には、名称を直接指定する方法（Ｎａｍｅ）と、文字列データを格納したリソースファイルを用いて、対象の文字列と対応づけるためのＩＤを指定する方法（ｒｃＮａｍｅＩＤ）とがある。図４に示す例においては、機能（Ｆｅａｔｕｒｅ）が用紙サイズ（ＰａｐｅｒＳｉｚｅ）では、その機能と項目の表示名称はＩＤにて指定されている。また、印刷設定編集モジュール２１１が用紙サイズのユーザデフォルト設定を取得するために用いられる用紙サイズと対応した機能（ＰａｐｅｒＳｉｚｅＤｕｍｍｙ）では、その機能と項目の表示名称は直接指定されている。
【００３２】
ＧＰＤでは、前述のように禁則の定義を記載することができる。前述のＩｎｖａｌｉｄＣｏｍｂｉｎａｔｉｏｎの項目に、同時に設定できない印刷設定情報の設定値を記載することで、プリンタドライバ２０３は、ユーザに対して禁則機能を提供することができる。また、各ＯｐｔｉｏｎにＣｏｎｓｔｒａｉｎｔｓの項目を設け、同時に設定できない設定値を記載することでも、プリンタドライバ２０３は、ユーザに対して禁則機能を提供することができる。
【００３３】
図４のＧＰＤには、印刷設定に用いる用紙サイズ（ＰａｐｅｒＳｉｚｅ）と、印刷設定編集モジュール２１１が用紙サイズのユーザデフォルト設定を取得するために用いられる用紙サイズと対応した機能（ＰａｐｅｒＳｉｚｅＤｕｍｍｙ）が存在する。本実施形態において、ＰａｐｅｒＳｉｚｅ機能に対応して、ＰａｐｅｒＳｉｚｅＤｕｍｍｙ機能が定義されている。ＰａｐｅｒＳｉｚｅには、Ａ４とＣＵＳＴＯＭＳＩＺＥの２つのＯｐｔｉｏｎが存在する。定型サイズであるＡ４には、印刷可能領域の原点（ＰｒｉｎｔａｂｌｅＯｒｉｇｉｎ）と幅／高さ（ＰｒｉｎｔａｂｌｅＡｒｅａ）が記載されている。また、用紙外形を後から設定可能なユーザ定義サイズ（ＣＵＳＴＯＭＳＩＺＥ）には、設定可能なサイズの上限／下限（ＭａｘＳｉｚｅ／ＭｉｎＳｉｚｅ）や、印刷可能領域を決定するための情報が記載されている。ＰａｐｅｒＳｉｚｅにおいては、デフォルト設定（ＤｅｆａｕｌｔＯｐｔｉｏｎ）としてＡ４が指定されている。
【００３４】
ＰａｐｅｒＳｉｚｅＤｕｍｍｙには、ＰａｐｅｒＳｉｚｅが有するＯｐｔｉｏｎと対応したＯｐｔｉｏｎが設けられる。ＰａｐｅｒＳｉｚｅのＡ４とＰａｐｅｒＳｉｚｅＤｕｍｍｙのＩＳＯＡ４、ＰａｐｅｒＳｉｚｅのＣＵＳＴＯＭＳＩＺＥとＰａｐｅｒＳｉｚｅＤｕｍｍｙのＣｕｓｔｏｍＭｅｄｉａＳｉｚｅがそれぞれ対応したＯｐｔｉｏｎである。対応したＯｐｔｉｏｎは同時に設定できないように禁則の定義を記載する。図４の場合、ＰａｐｅｒＳｉｚｅＤｕｍｍｙのＯｐｔｉｏｎにおいて、Ｃｏｎｓｔｒａｉｎｔｓを記載し、設定できない対象を示している。禁則を定義しておくことでＧＰＤを基に生成されるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓにはＰａｐｅｒＳｉｚｅで設定されたＯｐｔｉｏｎに応じて、ＰａｐｅｒＳｉｚｅＤｕｍｍｙの対応したＯｐｔｉｏｎが設定できないことを示す情報が付加されるようになる。
【００３５】
加えて、ＰａｐｅｒＳｉｚｅＤｕｍｍｙには、ＰａｐｅｒＳｉｚｅの持つＯｐｔｉｏｎと対応していないＯｐｔｉｏｎを１つ記載する。図４のＧＰＤではＮｏｎｅと定義したＯｐｔｉｏｎがこれに該当する。このＯｐｔｉｏｎは、ＰａｐｅｒＳｉｚｅＤｕｍｍｙのデフォルト設定（ＤｅｆａｕｌｔＯｐｔｉｏｎ）とする。デフォルトとなるＯｐｔｉｏｎには禁則の定義を記載しない。ＧＰＤに記載した禁則の定義は双方向で適用される。つまり、ＰａｐｅｒＳｉｚｅのＣＵＳＴＯＭＳＩＺＥが設定された場合は、ＰａｐｅｒＳｉｚｅＤｕｍｍｙのＣｕｓｔｏｍＭｅｄｉａＳｉｚｅが設定できないようになる。一方、ＰａｐｅｒＳｉｚｅＤｕｍｍｙのＣｕｓｔｏｍＭｅｄｉａＳｉｚｅが設定されている場合は、ＰａｐｅｒＳｉｚｅのＣＵＳＴＯＭＳＩＺＥできないようになる。ＰａｐｅｒＳｉｚｅＤｕｍｍｙについても、ＧＰＤに記載したことで設定可能な機能として判断され、いずれか１つのＯｐｔｉｏｎが設定されることになる。ＰａｐｅｒＳｉｚｅＤｕｍｍｙに禁則の定義のないＯｐｔｉｏｎを設けないと、ＰａｐｅｒＳｉｚｅＤｕｍｍｙで設定されたＯｐｔｉｏｎに対応した用紙サイズが選択できないようになってしまうため、禁則の定義を記載しないＯｐｔｉｏｎが必要になる。
【００３６】
印刷設定編集モジュール２１１は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓにおけるＰａｐｅｒＳｉｚｅＤｕｍｍｙの状態を参照することでＰａｐｅｒＳｉｚｅの設定を決定する。つまり、印刷設定編集モジュール２１１は、ユーザデフォルト設定３０１の情報を取得できないが、ＰａｐｅｒＳｉｚｅＤｕｍｍｙの状態を参照することでユーザデフォルト設定における設定情報を取得することが可能となる。なお、図４のＧＰＤを基にコンフィグレーションモジュール２１９により生成されるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓについては図５を用いて説明する。また、印刷設定編集モジュール２１１が、図４のＧＰＤを基に生成されたＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓからＰａｐｅｒＳｉｚｅの設定を決定する処理については、図９を用いて後述する。
【００３７】
（ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ）
図５は、図４のＧＰＤに基づきコンフィグレーションモジュール２１９により生成されるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの一部の記述例を示す。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）で記述される。印刷設定定義ファイルで定義されたＦｅａｔｕｒｅ及びＯｐｔｉｏｎに対応して、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓでも、ＦｅａｔｕｒｅとＯｐｔｉｏｎが階層構造で表現される。また、それぞれＯｐｔｉｏｎの子要素として表示名称を表すＤｉｓｐｌａｙＮａｍｅがＰｒｏｐｅｒｔｙとして定義される。さらに、各Ｏｐｔｉｏｎには、ｃｏｎｓｔｒａｉｎｅｄ属性が記述される。ｃｏｎｓｔｒａｉｎｅｄ属性は、対象のＯｐｔｉｏｎが設定可能な状態であるかを示す。設定可能な場合、ｃｏｎｓｔｒａｉｎｅｄ属性には“Ｎｏｎｅ”が設定される。印刷設定定義ファイルに記述された禁則に従い、指定されたＰｒｉｎｔＴｉｃｋｅｔに基づく設定下で設定できない場合、ｃｏｎｓｔｒａｉｎｅｄ属性には他の設定と競合して設定できない旨を示す“ＰｒｉｎｔＴｉｃｋｅｔＳｅｔｔｉｎｇｓ”が設定される。図５では、これらの設定値が記述された例を示している。その他にも、現在のデバイスの状態によって設定できない旨を示す“ＤｅｖｉｃｅＳｅｔｔｉｎｇｓ”などの設定値がある。
【００３８】
ＧＰＤでＰａｐｅｒＳｉｚｅと記載した機能は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓではＰａｇｅＭｅｄｉａＳｉｚｅとして記載される。同様にＡ４、ＣＵＳＴＯＭＳＩＺＥと記載したＯｐｔｉｏｎは、それぞれＩＳＯＡ４、ＣｕｓｔｏｍＭｅｄｉａＳｉｚｅとして記載される。前記のようにＧＰＤとＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとの間で、ＦｅａｔｕｒｅやＯｐｔｉｏｎが異なる場合がある。このマッピングは定められたルールに従いコンフィグレーションモジュール２１９で行われるもので、一部の一般的な機能、及び設定項目についてのみ行われる。それ以外の機能や項目については、ＧＰＤで定義した名称がそのままＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓでも使用される。ＰａｇｅＭｅｄｉａＳｉｚｅの各Ｏｐｔｉｏｎには付加情報として用紙サイズの幅／高さ（ＭｅｄｉａＳｉｚｅＷｉｄｔｈ／ＭｅｄｉａＳｉｚｅＨｅｉｇｈｔ）が記載される。ＣｕｓｔｏｍＭｅｄｉａＳｉｚｅについてはユーザによって任意のサイズを指定することが可能であるため、用紙サイズの幅／高さは別項目で設定される。そのため、ＭｅｄｉａＳｉｚｅＷｉｄｔｈ／ＭｅｄｉａＳｉｚｅＨｅｉｇｈｔには、用紙サイズの幅／高さを設定する設定項目（ＰａｇｅＭｅｄｉａＳｉｚｅＭｅｄｉａＳｉｚｅＷｉｄｔｈ／ＰａｇｅＭｅｄｉａＳｉｚｅＭｅｄｉａＳｉｚｅＨｅｉｇｈｔ）が参照先として記載される。
【００３９】
ＧＰＤでＰａｐｅｒＳｉｚｅＤｕｍｍｙと記載した機能とＯｐｔｉｏｎはそのままの名称でＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに記載される。図４に示すように、ＰａｐｅｒＳｉｚｅＤｕｍｍｙＯｐｔｉｏｎには、ＧＰＤで記載したＮｏｎｅ、ＩＳＯＡ４、ＣｕｓｔｏｍＭｅｄｉａＳｉｚｅが存在する。図５において、ＰａｐｅｒＳｉｚｅＤｕｍｍｙのＣｕｓｔｏｍＭｅｄｉａＳｉｚｅは、ｃｏｎｓｔｒａｉｎｅｄ属性値が“ＰｒｉｎｔＴｉｃｋｅｔＳｅｔｔｉｎｇｓ”となっている。これはＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成の基準となる印刷設定において、ＰａｐｅｒＳｉｚｅにＣｕｓｔｏｍＭｅｄｉａＳｉｚｅが設定されていた場合、図４のＧＰＤに記載した禁則の定義に従いこのように表現される。例えば、ユーザデフォルト設定３０１においてＰａｐｅｒＳｉｚｅにＣｕｓｔｏｍＭｅｄｅｉａＳｉｚｅが設定されていた場合、ＰａｐｅｒＳｉｚｅＤｕｍｍｙのＣｕｓｔｏｍＭｅｄｉａＳｉｚｅは、ｃｏｎｓｔｒａｉｎｅｄ属性値が“ＰｒｉｎｔＴｉｃｋｅｔＳｅｔｔｉｎｇｓ”となる。なお、アプリケーションから渡されたＰｒｉｎｔＴｉｃｋｅｔのＰａｐｅｒＳｉｚｅにＣｕｓｔｏｍＭｅｄｅｉａＳｉｚｅが設定されていた場合も同様である。
【００４０】
（ＰｒｉｎｔＴｉｃｋｅｔ）
図６は、ＰｒｉｎｔＴｉｃｋｅｔの記述例を示す図である。ＰｒｉｎｔＴｉｃｋｅｔは、ＸＭＬで記述される。ＰｒｉｎｔＴｉｃｋｅｔには、機能（Ｆｅａｔｕｒｅ）毎に、設定項目（Ｏｐｔｉｏｎ）が記載される。また、選択形式ではない機能については、ＰａｒａｍｅｔｅｒＩｎｉｔやＰｒｏｐｅｒｔｙの形式で、任意の数値や文字列を設定することが可能である。
【００４１】
図６のＰｒｉｎｔＴｉｃｋｅｔでは、ＰａｇｅＭｅｄｉａＳｉｚｅの設定としてＣｕｓｔｏｍＭｅｄｉａＳｉｚｅが設定されている。ＣｕｓｔｏｍＭｅｄｉａＳｉｚｅはユーザが任意の用紙サイズを指定することを示す設定である。ここでは、ユーザが指定したサイズをＰａｇｅＭｅｄｉａＳｉｚｅＭｅｄｉａＳｉｚｅＷｉｄｔｈとＰａｇｅＭｅｄｉａＳｉｚｅＭｅｄｉａＳｉｚｅＨｅｉｇｈｔで設定している。図６のＰｒｉｎｔＴｉｃｋｅｔを基準としてＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを生成すると、図５のようにＰａｐｅｒＳｉｚｅＤｕｍｍｙのＣｕｓｔｏｍＭｅｄｉａＳｉｚｅは、ｃｏｎｓｔｒａｉｎｅｄ属性の値が“ＰｒｉｎｔＴｉｃｋｅｔＳｅｔｔｉｎｇｓ”となる。
【００４２】
（サイズ情報の例）
図７は、図６のＰｒｉｎｔＴｉｃｋｅｔを基に生成されたＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに記載されるサイズ情報の記述例を示す図である。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに記載されるサイズ情報（ＰａｇｅＩｍａｇｅａｂｌｅＳｉｚｅ）は、用紙サイズの幅／高さ（ＩｍａｇｅａｂｌｅＳｉｚｅＷｉｄｔｈ／ＩｍａｇｅａｂｌｅＳｉｚｅＨｅｉｇｈｔ）、印刷可能領域の幅／高さ（ＩｍａｇｅａｂｌｅＡｒｅａのＥｘｔｅｎｔＷｉｄｔｈ／ＥｘｔｅｎｔＨｅｉｇｈｔ）、及び、印刷可能領域の原点（ＩｍａｇｅａｂｌｅＡｒｅａのＯｒｉｇｉｎＷｉｄｔｈ／ＯｒｉｇｉｎＨｅｉｇｈｔ）で構成される。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓのＰａｇｅＩｍａｇｅａｂｌｅＳｉｚｅは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成の基となった印刷設定におけるＰａｇｅＭｅｄｉａＳｉｚｅの設定値と、ＧＰＤに記載された印刷可能領域の情報に基づいて決定する。アプリケーション２０１は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに含まれるＰａｇｅＩｍａｇｅａｂｌｅＳｉｚｅの情報に基づいて印刷データを生成することで、設定した用紙サイズに納まるレイアウトで印刷を行うことができる。
【００４３】
前述のように、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓのＰａｇｅＩｍａｇｅａｂｌｅＳｉｚｅは、ＧＰＤに記載された印刷可能領域の情報に基づいてコンフィグレーションモジュール２１９で生成される。しかし、ＰａｇｅＩｍａｇｅａｂｌｅＳｉｚｅをＧＰＤの記載で表現できない規則に基づいて決定したい場合、印刷設定編集モジュール２１１がＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを編集する必要がある。
【００４４】
例えば、図４のＧＰＤに記載されたユーザ定義用紙サイズの印刷可能領域の幅（ＣｕｓｔＰｒｉｎｔａｂｌｅＳｉｚｅＸ）は、設定された用紙の幅（ＰｈｙｓＰａｐｅｒＷｉｄｔｈ）から両端のマージンを引くことで決定するように記載されている。ここでは、左右のマージンがどちらも１２０と置いた場合、左右あわせて２４０のマージンを引くように記述されている。この場合、マージンの値は一定であるため、指定した用紙の幅に比例して印刷可能領域の幅が大きくなる。しかし、プリンタの印刷可能領域の幅に制限がある場合、用紙の幅を大きくしていくと印刷可能領域の幅がプリンタの印刷可能な範囲を超えてしまうことが考えられる。印刷可能領域の幅がプリンタの印刷可能領域を超過するサイズまで用紙の幅をサポートしたい場合、用紙サイズの幅が一定の値を超えている場合に印刷領域を固定する処理を行う必要がある。つまり、マージンの値を変動させる必要がある。
【００４５】
［処理フロー］
印刷設定編集モジュール２１１がＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの印刷可能領域情報を編集する処理について、図８を用いて説明する。図８の処理では、印刷設定編集モジュール２１１はＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ生成の基準となる印刷設定でユーザ定義サイズが指定されている場合に処理を行うため、印刷設定編集モジュール２１１が用紙サイズの設定を取得する必要がある。
【００４６】
図８は、印刷設定編集モジュール２１１における、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成処理を示すフローチャートである。この処理は、コンフィグレーションモジュール２１９が印刷設定定義ファイル２１３に基づき生成したＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに対して、例えば、プリンタドライバ２０３を提供するベンダ独自の処理を行うものである。図８の処理は、例えば、ＣＰＵ１１１がＲＯＭ１１２に記憶されたプログラムをＲＡＭ１１３に読み出して実行することにより実現される。なお、図８は、例えば、アプリケーション２０１がＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの取得をコンフィグレーションモジュール２１９に依頼した際に開始される。  
【００４７】
Ｓ８０１にて、印刷設定編集モジュール２１１は、編集対象のＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを取得する。取得されるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは、コンフィグレーションモジュール２１９が印刷設定定義ファイル２１３に基づき生成したものである。
【００４８】
Ｓ８０２にて、印刷設定編集モジュール２１１は、ＰａｇｅＭｅｄｉａＳｉｚｅの設定値を取得する。本工程におけるＰａｇｅＭｅｄｉａＳｉｚｅの設定値の決定処理について、図９を用いて説明する。
【００４９】
図９は、ＰａｇｅＭｅｄｉａＳｉｚｅの設定値の決定処理を示すフローチャートである。
Ｓ９０１にて、印刷設定編集モジュール２１１は、編集対象のＰｒｉｎｔＴｉｃｋｅｔを取得する。取得されるＰｒｉｎｔＴｉｃｋｅｔは、アプリケーション２０１が、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの要求時に渡してくるものである。なお、アプリケーション２０１が要求時にＰｒｉｎｔＴｉｃｋｅｔを渡さない場合、ここでは取得されないこととなる。
【００５０】
Ｓ９０２にて、印刷設定編集モジュール２１１は、ＰｒｉｎｔＴｉｃｋｅｔが存在するかを判定する。図３を用いて説明したように、アプリケーション２０１は、コンフィグレーションモジュール２１９に対して、ＰｒｉｎｔＴｉｃｋｅｔを渡さずにＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを要求することも可能である。アプリケーション２０１がＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを要求する際にＰｒｉｎｔＴｉｃｋｅｔを指定しない場合、印刷設定編集モジュール２１１は、ＰｒｉｎｔＴｉｃｋｅｔを取得することができない。ＰｒｉｎｔＴｉｃｋｅｔが存在すると判定された場合は（Ｓ９０２にてＹＥＳ）Ｓ９０３へ進む。ＰｒｉｎｔＴｉｃｋｅｔが存在しないと判定された場合は（Ｓ９０２にてＮＯ）Ｓ９０４へ進む。
【００５１】
Ｓ９０３は、アプリケーション２０１がＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを要求する際に基準となるＰｒｉｎｔＴｉｃｋｅｔを渡してきた場合の処理である（図３（ａ）の場合）。Ｓ９０３にて、印刷設定編集モジュール２１１は、ＰｒｉｎｔＴｉｃｋｅｔからＰａｇｅＭｅｄｉａＳｉｚｅの設定値を取得する。例えば、図６のＰｒｉｎｔＴｉｃｋｅｔが取得された場合、ＰａｇｅＭｅｄｉａＳｉｚｅの設定値はＣｕｓｔｏｍＭｅｄｉａＳｉｚｅとなる。また、各設定値は、幅（ＭｅｄｉａＳｉｚｅＷｉｄｔｈ）が“１７７８００”となり、高さ（ＭｅｄｉａＳｉｚｅＨｅｉｇｈｔ）が“２０３２００”となる。そして、本処理フローを終了し、図８のＳ８０３の処理へ進む。
【００５２】
Ｓ９０４からＳ９０７は、アプリケーション２０１がＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを要求する際に基準となるＰｒｉｎｔＴｉｃｋｅｔを渡してこなかった場合の処理である（図３（ｂ）の場合）。この場合、印刷設定編集モジュール２１１は、ＰｒｉｎｔＴｉｃｋｅｔから設定を取得することができないため、図４のＧＰＤに基づいて生成されたＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを用いて、ＰａｇｅＭｅｄｉａＳｉｚｅの設定値を決定する。
【００５３】
Ｓ９０４からＳ９０６は、印刷設定編集モジュール２１１が、図５のＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓのＰａｐｅｒＳｉｚｅＤｕｍｍｙに存在するＯｐｔｉｏｎ群から、Ｃｏｎｓｔｒａｉｎｅｄ属性の値が“ＰｒｉｎｔＴｉｃｋｅｔＳｅｔｔｉｎｇｓ”であるＯｐｔｉｏｎを探す処理である。
【００５４】
Ｓ９０４にて、印刷設定編集モジュール２１１は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓのＰａｐｅｒＳｉｚｅＤｕｍｍｙから未処理のＯｐｔｉｏｎを取得する。図５の例の場合、ＰａｐｅｒＳｉｚｅＤｕｍｍｙにおいて３つのＯｐｔｉｏｎが記述されており、上から順に処理が行われることとなる。
【００５５】
Ｓ９０５にて、印刷設定編集モジュール２１１は、Ｓ９０４で取得したＯｐｔｉｏｎのＣｏｎｓｔｒａｉｎｅｄ属性の値を確認する。
【００５６】
Ｓ９０６にて、印刷設定編集モジュール２１１は、Ｓ９０５にて確認したＣｏｎｓｔｒａｉｎｅｄ属性の値が“ＰｒｉｎｔＴｉｃｋｅｔＳｅｔｔｉｎｇｓ”であるか判定する。処理中のＯｐｔｉｏｎのＣｏｎｓｔｒａｉｎｅｄ属性の値が“ＰｒｉｎｔＴｉｃｋｅｔＳｅｔｔｉｎｇｓ”である場合は（Ｓ９０６にてＹＥＳ）Ｓ９０７に進む。処理中のＯｐｔｉｏｎのＣｏｎｓｔｒａｉｎｅｄ属性の値が“ＰｒｉｎｔＴｉｃｋｅｔＳｅｔｔｉｎｇｓ”でない場合は（Ｓ９０６にてＮＯ）Ｓ９０４に戻る。そして、印刷設定編集モジュール２１１は、Ｓ９０４からＳ９０６を繰り返すことでＣｏｎｓｔｒａｉｎｅｄ属性の値が“ＰｒｉｎｔＴｉｃｋｅｔＳｅｔｔｉｎｇｓ”のＯｐｔｉｏｎを特定する。
【００５７】
Ｓ９０７にて、印刷設定編集モジュール２１１は、取得したＯｐｔｉｏｎに対応したＰａｇｅＭｅｄｉａＳｉｚｅの設定値を、ユーザデフォルト設定で設定されているＰａｇｅＭｅｄｉａＳｉｚｅの設定値として決定する。そして、本処理フローを終了し、図８のＳ８０３の処理へ進む。
【００５８】
図３（ｂ）を用いて上述したように、コンフィグレーションモジュール２１９は、アプリケーション２０１からＰｒｉｎｔＴｉｃｋｅｔが渡されない場合、ユーザデフォルト設定に基づきＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成を行う。従って、ＧＰＤに記載された禁則の定義に基づく情報はコンフィグレーションモジュール２１９が生成したＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに反映されることとなる。そのため、ＰａｇｅＭｅｄｉａＳｉｚｅのユーザデフォルト設定に従ってＰａｐｅｒＳｉｚｅＤｕｍｍｙの各ＯｐｔｉｏｎのＣｏｎｓｔｒａｉｎｅｄ属性が設定される。これにより、印刷設定編集モジュール２１１は、ＰａｐｅｒＳｉｚｅＤｕｍｍｙを参照することでＰａｇｅＭｅｄｉａＳｉｚｅの設定値を決定することができる。従って、印刷設定編集モジュール２１１は、ＰｒｉｎｔＴｉｃｋｅｔが渡されてこない場合においても、該当設定項目のユーザデフォルト設定を決定することが可能となる。
【００５９】
Ｓ８０２（図９）の処理により、印刷設定編集モジュール２１１は、ＰａｇｅＭｅｄｉａＳｉｚｅの設定値を決定する。その後、Ｓ８０３にて、印刷設定編集モジュール２１１は、ＰａｇｅＭｅｄｉａＳｉｚｅの設定値がＣｕｓｔｏｍＭｅｄｉａＳｉｚｅかを判定する。ＰａｇｅＭｅｄｉａＳｉｚｅにＣｕｓｔｏｍＭｅｄｉａＳｉｚｅが設定されている場合は（Ｓ８０３にてＹＥＳ）Ｓ８０４に進む。ＰａｇｅＭｅｄｉａＳｉｚｅにＣｕｓｔｏｍＭｅｄｉａＳｉｚｅ以外が設定されている場合は（Ｓ８０３にてＮＯ）本処理フローを終了する。
【００６０】
Ｓ８０４にて、印刷設定編集モジュール２１１は、図７に示すＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓのＰａｇｅＩｍａｇｅａｂｌｅＳｉｚｅから印刷可能領域の幅を示すＥｘｔｅｎｔＷｉｄｔｈを取得する。
【００６１】
Ｓ８０５にて、印刷設定編集モジュール２１１は、プロパティバッグ２１７に含まれるＤＰＢから印刷装置における印刷領域の最大幅を取得する。
【００６２】
Ｓ８０６にて、印刷設定編集モジュール２１１は、Ｓ８０４で取得したＥｘｔｅｎｔＷｉｄｔｈと、Ｓ８０５で取得した印刷領域の最大幅を比較する。ＥｘｔｅｎｔＷｉｄｔｈの方が大きい場合は（Ｓ８０６にてＹＥＳ）Ｓ８０７へ進む。印刷領域の最大幅がＥｘｔｅｎｔＷｉｄｔｈ以上である場合（Ｓ８０６にてＮＯ）、編集の必要がないため、本処理フローを終了する。
【００６３】
Ｓ８０７にて、印刷設定編集モジュール２１１は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓのＥｘｔｅｎｔＷｉｄｔｈの値をＳ８０４にて取得した印刷領域の最大幅に変更する。
【００６４】
Ｓ８０８にて、印刷設定編集モジュール２１１は、ＥｘｔｅｎｔＷｉｄｔｈが小さくなったのに伴い、印刷可能領域の原点を示すＯｒｉｇｉｎＷｉｄｔｈを併せて修正する。そして、本処理フローを終了する。尚、印刷可能領域を中央合わせした場合などはＳ８０７の処理が必要になる。一方、原点は固定したまま右マージンを広げたい場合はＳ８０７の処理は不要となる。
【００６５】
図８の処理により、印刷設定編集モジュール２１１は、ＰｒｉｎｔＴｉｃｋｅｔが渡されてくるか否かに依らず、ＰｒｉｎｔＣａｐａｂｉｌｉｔｅｓにおける印刷可能領域の情報を適切に編集することが可能となる。本実施形態では、このとき、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成の基準となる印刷設定で、用紙サイズにユーザ定義用紙サイズが設定されているかを判断している。これによって、アプリケーション２０１は印刷可能領域外にデータを配置するようなことがなくなり、失敗印刷を防止することができる。
【００６６】
尚、ＰａｐｅｒＳｉｚｅＤｕｍｍｙについてはＧＰＤに記載されていることから設定可能な機能の一つとしてＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに記載される。しかし、ＰａｐｅｒＳｉｚｅＤｕｍｍｙは印刷設定編集モジュール２１１で参照した後は不要となる機能なので、印刷設定編集モジュール２１１によって、編集後のＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓから削除してしまってもよい。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓからＰａｐｅｒＳｉｚｅＤｕｍｍｙを削除することで、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを要求したアプリケーションがＰａｐｅｒＳｉｚｅＤｕｍｍｙの設定ＵＩを提供して設定値を変更することを防ぐことができる。また、ＧＰＤには各機能に対して設定ＵＩで表示すべきか否かの情報を記述することができる。ＰａｐｅｒＳｉｚｅＤｕｍｍｙはユーザが設定すべきでない機能なので、印刷設定編集モジュール２１１は、この機能に関し表示すべきでない項目としてＧＰＤに登録してもよい。
【００６７】
また、本実施形態では、設定を取得したい機能（ＰａｐｅｒＳｉｚｅ）の全てのＯｐｔｉｏｎに対して、設定取得用の機能（ＰａｐｅｒＳｉｚｅＤｕｍｍｙ）に対となるＯｐｔｉｏｎを設けている。しかし、設定取得用の機能には、取得したいＯｐｔｉｏｎと対となるＯｐｔｉｏｎだけあれば、所望の設定値を取得することは可能である。例えば、図８の処理を行う場合、ＰａｐｅｒＳｉｚｅがＣｕｓｔｏｍＭｅｄｉａＳｉｚｅか否かだけが判断できればよい。そのため、ＰａｐｅｒＳｉｚｅＤｕｍｍｙのＯｐｔｉｏｎには、デフォルト設定のＮｏｎｅとＣｕｓｔｏｍＭｅｄｉａＳｉｚｅだけを設けてもよい。この場合、ＰａｐｅｒＳｉｚｅに何が設定されているかは判断できなくなるが、ＣｕｓｔｏｍＭｅｄｉａＳｉｚｅが設定されているか否かについては判断可能であるため、図８の処理を行う上では十分である。このように、設定取得用の機能に設けるＯｐｔｉｏｎには、取得したい情報に応じて適切なものを設定すればよい。
【００６８】
本実施形態では用紙サイズに基づいた処理を例に説明したが、それ以外の設定に基づいた処理を印刷設定編集モジュール２１１で行うことも考えられる。その場合、図４に示した形で、取得したい設定に対応したＦｅａｔｕｒｅとＯｐｔｉｏｎをＧＰＤに定義しておくことで、ＧＰＤ記載の任意の設定項目について本実施形態の手法が適用できることは言うまでもない。
【００６９】
＜その他の実施形態＞
本発明は上述の実施形態の１以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７０】
１０２・・・印刷装置、２０１・・・アプリケーション、２０３・・・プリンタドライバ、２１１・・・印刷設定編集モジュール、２１３・・・印刷設定定義ファイル、２１５・・・プリンタエクステンション、２１７・・・プロパティバッグ、２１９・・・コンフィグレーションモジュール、３０１・・・ユーザデフォルト設定
【図１】
2019128606.tif 000003
【図２】
2019128606.tif 000004
【図３】
2019128606.tif 000005
【図４】
2019128606.tif 000006
【図５】
2019128606.tif 000007
【図６】
2019128606.tif 000008
【図７】
2019128606.tif 000009
【図８】
2019128606.tif 000010
【図９】
2019128606.tif 000011