(57)【要約】【課題】  Ｖ４プリンタードライバーを利用する印刷システムにおいてＰｒｉｎｔＴｉｃｋｅｔに対してユーザー設定に応じて動作しない機能などが記載されていることによって、印刷設定処理の負荷が大きくかかっている。その負荷の影響で印刷設定処理時間がかかってしまい、最終的に印刷開始時間の遅れが生じる懸念がある。【解決手段】  本発明は、例えば、ＸＭＬで記述された印刷設定情報で定義される複数の機能の中に、互いに関連する複数の機能が存在する場合に、互いに関連する複数の機能のいずれかが削減されるように、前記印刷設定情報の編集を行う編集手段を有することを特徴とする。【選択図】  図６
2018045577.tif 000002
【特許請求の範囲】
【請求項１】
ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）で記述された印刷設定情報を処理するＯＳ（オペレーティングシステム）が動作する情報処理装置であって、
前記印刷設定情報で定義される複数の機能の中で、互いに関連する複数の機能を探索する探索手段と、
前記印刷設定情報の中に互いに関連する複数の機能が存在する場合に、互いに関連する複数の機能のいずれかが削減されるように、前記印刷設定情報の編集を行う編集手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記編集手段は、前記印刷設定情報から、互いに関連する複数の機能のいずれかの機能を定義する記述を削除することで前記編集を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記編集手段は、互いに関連する複数の機能の一方の機能に対応する値が有効ではないことを示す場合に、前記印刷設定情報から、互いに関連する複数の機能の他方の機能を定義する記述を削除することで前記編集を行うことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記編集手段は、プリンタードライバーにより管理されるデフォルト設定と、前記印刷設定情報とにそれぞれ含まれる同じ機能に対する値が一致する場合には、前記印刷設定情報から一致する値をもつ機能を定義する記述を削除することを特徴とする請求項２または３に記載の情報処理装置。
【請求項５】
前記編集手段は、前記印刷設定情報において、互いに関連する複数の機能の一方の機能を定義する記述を他方の機能を定義する記述の中に含めることで前記編集を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記編集手段は、ＪａｖａＳｃｒｉｐｔにより実現されることを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）で記述された印刷設定情報を処理するＯＳ（オペレーティングシステム）が動作する情報処理装置における方法であって、
前記印刷設定情報で定義される複数の機能の中で、互いに関連する複数の機能を探索する探索工程と、
前記印刷設定情報の中に互いに関連する複数の機能が存在する場合に、互いに関連する複数の機能のいずれかが削減されるように、前記印刷設定情報の編集を行う編集工程と、
を有することを特徴とする方法。
【請求項８】
請求項１乃至５のいずれか１項に記載の手段としてコンピューターを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、新しいアーキテクチャのプリンタードライバーが動作する情報処理装置における印刷設定に係る処理負荷を軽減することで印刷パフォーマンスを向上する技術に関する。
【背景技術】
【０００２】
Ｍｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ８（登録商標）では、Ｖ４プリンタードライバーと呼ばれる新しいアーキテクチャで動作するプリンタードライバーが導入されている。Ｖ４プリンタードライバーは、従来のプリンタードライバーのアーキテクチャ（Ｖ３アーキテクチャ）として提供されていたＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）プリンタードライバーの後継となるアーキテクチャに従うプリンタードライバーである。また、Ｖ４プリンタードライバーは、ＸＰＳ文書での印刷パス（ＸＰＳ印刷パス）を利用している。
【０００３】
このＸＰＳ印刷パスにおいて、印刷物の体裁を決定するために利用されるものがＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓと呼ばれるＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式で記述された印刷能力情報と、ＰｒｉｎｔＴｉｃｋｅｔと呼ばれるＸＭＬ形式で記述された印刷設定情報である。Ｖ４プリンタードライバーでは、ＧＰＤ（Ｇｅｎｅｒｉｃ  Ｐｒｉｎｔｅｒ  Ｄｅｓｃｒｉｐｔｉｏｎ）と呼ばれる印刷設定定義ファイルに印刷能力情報を記載し、このＧＰＤを含んだプリンタードライバーをＯＳ（Ｏｐｅｒａｔｉｏｎｇ  Ｓｙｓｔｅｍ）にインストールすることで、アプリケーションに対してＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓやＰｒｉｎｔＴｉｃｋｅｔを利用した印刷設定の変更機能を提供することができる。
【０００４】
また、Ｖ４プリンタードライバーにはＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓやＰｒｉｎｔＴｉｃｋｅｔをＯＳ以外が編集するための機構も用意されている。この機能にて駆動されるモジュールを印刷設定編集モジュールと呼ぶこととする。プリンター開発ベンダーは、従来のＶ３アーキテクチャとは異なり、ＪａｖａＳｃｒｉｐｔ（商標登録）で実装される印刷設定編集モジュールを利用してＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓやＰｒｉｎｔＴｉｃｋｅｔを編集できる。また、印刷設定編集モジュールは、印刷設定間の矛盾を解決する禁則処理や、機能追加処理などを行うことができる。
【０００５】
また、この印刷設定編集モジュールに関して、印刷開始が遅れないようにするための従来技術（例えば、特許文献１）が存在する。Ｖ４プリンタードライバー及びＯＳによる印刷処理中に行われる印刷設定の編集処理に時間がかかると、印刷開始が遅れる問題が発生する。この問題に対して、特許文献１では、印刷設定編集モジュールの処理において、ＰｒｉｎｔＴｉｃｋｅｔのチェック用データ（キャッシュ）を生成し、次回以降の印刷設定編集モジュールの検証処理に関してはチェック用データを利用して行う。本処理によって印刷設定モジュールにおけるＰｒｉｎｔＴｉｃｋｅｔの読み込み処理の必要性が軽減されることにより、印刷設定の編集処理の高速化を図っている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１５−２１５６５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ここで、Ｖ４プリンタードライバーを利用する新しい印刷システムでは、一度の印刷処理の中の随所で、ＯＳによって、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓやＰｒｉｎｔＴｉｃｋｅｔに対しては、印刷設定間に矛盾がないか、ＸＭＬ形式の記述として問題ないか等、様々な検証処理が行われている。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ及びＰｒｉｎｔＴｉｃｋｅｔはＸＭＬ形式で記載されているため可読性が高いという特徴があるものの、文字列探索や編集処理に時間がかかる。
【０００８】
Ｖ３アーキテクチャでのＸＰＳプリンタードライバーの場合、ＣやＣ＋＋といった言語で処理できること、さらにはプリンター開発ベンダーが検証を含めたＰｒｉｎｔＴｉｃｋｅｔの生成を担うことができたため、それらのＯＳの処理などに起因して印刷設定の編集処理に時間がかかることがなかった。
【０００９】
一方、Ｖ４プリンタードライバーでは、ベンダーが利用できる編集モジュールがＪａｖａＳｃｒｉｐｔで実装された印刷設定編集モジュールだけである点、さらに、ＯＳによって上述の様々な検証処理が動作してしまうことに起因して、印刷設定の編集処理に大きく時間がかかってしまうことがわかった。
【００１０】
よって、印刷開始について更に改善するためには、上述の特許文献１のように印刷設定編集モジュールの処理を高速化するだけではなく、ＯＳが行う検証処理などによる処理時間を軽減する必要性があることがわかった。
【００１１】
ここで、ＯＳが行う検証の処理時間に影響する要因として、「機能数」が考えられる。ここでいう機能数とは、ユーザーに提供できる機能のことを指し、具体的にはＸＭＬ形式で記載されたＰｒｉｎｔＴｉｃｋｅｔのＲｏｏｔである＜ＰｒｉｎｔＴｉｃｋｅｔ＞の直下に存在する＜Ｆｅａｔｕｒｅ＞の数のことを指す。この機能数が多くなるにつれＯＳによるＰｒｉｎｔＴｉｃｋｅｔの検証に大きく時間がかかることが判明し、印刷設定編集モジュールの処理を最適化するだけでは印刷設定の全体的な処理時間の軽減を行うことができないことがわかった。
【００１２】
なお、プリンタードライバーとしては対応するプリンターがサポートする機能を最大限にユーザーに対して提供することが望まれるため、プリンタードライバーを提供する開発ベンダーは、これら多くの機能を提供しつつも、印刷設定情報の処理時間の軽減を行われることが求められる。
【課題を解決するための手段】
【００１３】
そこで、本発明は、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）で記述された印刷設定情報を処理するＯＳ（オペレーティングシステム）が動作する情報処理装置であって、前記印刷設定情報で定義される複数の機能の中で、互いに関連する複数の機能を探索する探索手段と、前記印刷設定情報の中に互いに関連する複数の機能が存在する場合に、互いに関連する複数の機能のいずれかが削減されるように、前記印刷設定情報の編集を行う編集手段と、を有することを特徴とする。
【発明の効果】
【００１４】
本発明により、Ｖ４プリンタードライバーを利用する印刷システムにおいて、ユーザーに最大限の機能を提供しつつ、印刷開始までの時間を改善し得る仕組みを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】情報処理装置のハードウェアの構成例を示すブロック図である
【図２】本発明の印刷処理システムにおけるモジュール構成例を示すブロック図である
【図３】実施例１における印刷設定定義ファイル（ＧＰＤ）の一部の例
【図４】実施例１における印刷能力情報であるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの一部の例
【図５】実施例１における印刷設定情報であるＰｒｉｎｔＴｉｃｋｅｔの一部の例
【図６】実施例１における印刷設定編集モジュールの処理を説明するためのフローチャートを示す
【図７】実施例１で、関連するＦｅａｔｕｒｅを削除したＰｒｉｎｔＴｉｃｋｅｔの例を示す
【図８】実施例１で、関連するＦｅａｔｕｒｅを一つにまとめたＰｒｉｎｔＴｉｃｋｅｔの例を示す
【図９】実施例１の応用例で挙げるＰｒｉｎｔＴｉｃｋｅｔの例を示す
【図１０】実施例２における印刷設定編集モジュールの処理を説明するためのフローチャートを示す
【図１１】実施例２でＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇに保存する情報の例を示す
【図１２】実施例２デフォルト設定から「印刷の向き」を「Ｌａｎｄｓｃａｐｅ」に変更した場合のＰｒｉｎｔＴｉｃｋｅｔの例を示す
【図１３】実施例２デフォルト設定の差分のみ表現したＰｒｉｎｔＴｉｃｋｅｔの例を示す
【発明を実施するための形態】
【００１６】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【００１７】
（実施例１）
図１は、情報処理装置のハードウェアの構成例を示すブロック図である。情報処理装置の一例としては、オペレーティングシステムやプリンタードライバーなど様々なソフトウェアプログラムが実行されるパーソナルコンピューターなどが挙げられる。
【００１８】
ＣＰＵ１０１は主記憶装置１０２のＲＯＭ１０２１あるいはＲＡＭ１０２２あるいは補助記憶装置１０５に格納されたプログラムに従って装置全体の制御を行う。ＲＡＭ１０２２はＣＰＵ１０１が各種処理を行う際のワークエリアとしても使用される。本実施形態における各コンポーネントの処理はすべてＲＡＭ１０２に読み込んで動作する。補助記憶装置１０５はアプリケーション１０５１やプリンタードライバー１０５２、オペレーティングシステム（ＯＳ）１０５３等を記録する。プリンタードライバー１０５２は、印刷機能を持つデバイスに対して、印刷指示を行うことができる。キーボード１０３１やマウス・タッチパネルなどに代表されるポインティングデバイス１０３２などの入力機器は、入力Ｉ／Ｆ１０３を通じて、ユーザーがコンピューターに対して各種指示を与えるためのデバイスである。出力Ｉ／Ｆ１０４は、データを外部に出力するためのインターフェースであり、モニタ１０４１やプリンター１０４２などの出力機器に対してデータを出力する。プリンター１０４２とは直接接続されるローカルＩ／Ｏのみならず、通信Ｉ／Ｆ１０６を通じて接続されるネットワーク１０６１を通して接続されていてもよい。また、１０７は共通データシステムバスで、Ｉ／Ｆやモジュール間でデータのやりとりを行う。
【００１９】
図２は、アプリケーション１０５１、プリンタードライバー１０５２、ＯＳ１０５３により実現される印刷処理印刷システムにおけるモジュール構成例を示すブロック図である。
【００２０】
本印刷処理システムは、ＸＰＳファイルフォーマットをスプールデータとして使用し、とくにプリンタードライバー１０５２としてＶ４プリンタードライバーを用いた印刷を行うシステムを想定している。印刷処理システムは、ＯＳ１０５３上で動作している。プリントマネージャ２１８、ＧＤＩｔｏＸＰＳ変換モジュール２０７、フィルタパイプラインマネージャ２１２、ポートモニター２１９はＯＳ１０５３に含まれるモジュールである。ＧＤＩ（Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）とはプリンターの印刷イメージの生成を行うグラフィックスコンポーネントであり、ＧＤＩｔｏＸＰＳ変換モジュール２０７は、ＧＤＩで描画されたデータをＸＰＳデータへ変換する機能を持つ。フィルタパイプラインマネージャ２１２は、ＸＰＳ印刷パスの特徴であるフィルタ印刷処理の管理を行うモジュールである。ポートモニター２１９は、デバイスにアクセスするプリントマネージャ２１８とプリンター間で通信を制御することができプリンタードライバーはポートモニター２１９を経由して印刷処理を行う。ＧＤＩｔｏＸＰＳ変換モジュール２０７、コンフィグレーションモジュール２０８、フィルタパイプラインマネージャ２１２は、プリンタードライバー１０５２に含まれているが、ＯＳ１０５３から提供されているプリンタードライバー１０５２のモジュールという位置づけである。
【００２１】
コンフィグレーションモジュール２０８は、プリンタードライバーが提供する印刷設定編集モジュール２０８１を使用して印刷設定情報を編集することができ、印刷設定編集モジュール２０８１は、スクリプト言語、特にＪａｖａＳｃｒｉｐｔ（商標登録）で記載されたプログラムのことを指し、プリンタードライバーが提供するプロパティバッグ２０８２を利用して印刷設定情報を編集する。プロパティバッグ２０８２とは、プリンターの機種依存情報として利用するためのＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇと呼ばれるデータ群と、プリントキューに紐づいたＱｕｅｕｅＰｒｏｐｅｒｔｙＢａｇと呼ばれるデータ群が保持された領域を指す。ＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇは、ドライバーパッケージ内に存在するプリンターの機種依存データであり、プリンタードライバーインストール後にＯＳ１０５３内の特定の領域に読み取り専用としてデータ群が保持される。ＱｕｅｕｅＰｒｏｐｅｒｔｙＢａｇは、Ｋｅｙ−Ｖａｌｕｅペアのｘｍｌ定義ファイルをＯＳ１０５３に登録することで利用することが可能であり、Ｖａｌｕｅに関して一定の権限上で編集が可能である。
【００２２】
プリンタードライバー１０５２とフィルタパイプラインマネージャ２１２の各フィルタは、図１の補助記憶装置１０５にプリンタードライバー１０５２として格納されている。本実施例ではアプリケーション１０５１の例として、ＧＤＩ印刷アプリケーション２０１とＸＰＳ印刷アプリケーション２０２との２つのプログラムを図示しており、図１の補助記憶装置１０５にそれぞれ格納されている。ユーザーは、キーボード１０３１やタッチパネル／マウスなどに代表されるポインティングデバイス１０３２などといった入力装置を使用して、出力装置のモニタ１０４１に映し出されたＧＤＩ印刷アプリケーション２０１（以下、ＧＤＩアプリと略す）、もしくはＸＰＳ印刷アプリケーションプログラム２０２（以下、ＸＰＳアプリと略す）から印刷処理を実行する。
【００２３】
印刷処理は、（１）プリンターの選択、（２）印刷設定の作成、（３）描画データの変換、の３つの処理を順番に行うことで実行される。
【００２４】
（１）まずは、印刷したいプリンター１０４２の選択をする。
ユーザーから見るとプリンター１０４２の選択は、印刷を実行するプリンター１０４２に対応したプリンタードライバー１０５２を選択することと同義である。１０５２の選択には、不図示のプリントキューを利用する。
【００２５】
（２）次に、印刷設定を作成する。
印刷設定はまず、アプリケーション１０５１が印刷設定用のメモリ領域をＲＡＭ１０２２に確保する。そして、アプリケーション１０５１は、プリンタードライバー１０５２のコンフィギュレーションモジュール２０４を呼び出して、印刷設定データを作成して格納する。ＧＤＩアプリ２０１では印刷設定データとしてバイナリのＤＥＶＭＯＤＥ構造体２０３を用い、ＸＰＳアプリ２０２ではマークアップ言語のＸＭＬで記載された印刷設定情報（ＰｒｉｎｔＴｉｃｋｅｔ）２０４を用いる。ＤＥＶＭＯＤＥ構造体２０３は、ＯＳ１０５３が定義する標準領域とプリンタードライバーが独自で定義する拡張領域を持つ。ＰｒｉｎｔＴｉｃｋｅｔ２０４は、ＸＭＬ形式で記述された印刷設定情報で、標準領域と拡張領域は名前空間によって記載が分かれている。ＰｒｉｎｔＴｉｃｋｅｔ２０４にいて標準領域に該当するオペレーティングシステムによって定義されたＰｒｉｎｔＳｃｈｅｍａのことをＰｕｂｌｉｃＳｃｈｅｍａと呼ぶこととする。ＰｒｉｎｔＴｉｃｋｅｔ２０４にいて拡張領域に該当するプリンタードライバーが独自で定義したＰｒｉｎｔＳｃｈｅｍａのことをＰｒｉｖａｔｅＳｃｈｅｍａと呼ぶこととする。印刷設定データには機種固有の情報も含まれているので、コンフィギュレーションモジュール２０８は、機種依存ファイル２０９を利用して、印刷設定データを作成する。このＤＥＶＭＯＤＥ構造体２０３もしくはＰｒｉｎｔＴｉｃｋｅｔ２０４が印刷設定を保持しており、アプリケーションが直接、値を書き換えることで印刷設定を変更する。機種依存ファイル２０９は、ＧＰＤと呼ばれる印刷設定定義ファイルを指し、図３のようにテキストベースで記載されている。図３では例として、「両面設定」、「スタンプ」および「スタンプテキストのフォントスタイル」を表す機能が記載されている。
【００２６】
ＧＰＤについて、具体的に説明する。ＧＰＤはＭｉｃｒｏｓｏｆｔが定義した記載方法に従って記述することで印刷設定機能を実現できる。例えば、「両面設定」を表わすＤｕｐｌｅｘというＦｅａｔｕｒｅを３０１のように定義する。特に、３１０のようにＰｒｉｎｔＳｃｈｅｍａＫｅｙｗｏｒｄＭａｐにオペレーティングシステムによって定義されたＰｒｉｎｔＳｃｈｅｍａの名称を記載することで、ＰｕｂｌｉｃＳｃｈｅｍａを扱うことができる。また、両面設定の設定項目であるＯｐｔｉｏｎとして、Ｎｏｎｅ（片面印刷（３０２））、ＶＥＲＴＩＣＡＬ（両面長辺とじ（３０３））、ＨＯＲＩＺＯＮＴＡＬ（両面短辺とじ（３０４））と定義することにより、ＯｎｅＳｉｄｅｄ、ＴｗｏＳｉｄｅｄＬｏｎｇＥｄｇｅ，ＴｗｏＳｉｄｅｄＳｈｏｒｔＥｄｇｅのＰｒｉｎｔＳｃｈｅｍａに割り当てられる。また、３１１のＤｅｆａｕｌｔＯｐｔｉｏｎに記載されたＯｐｔｉｏｎがデフォルト設定として動作する。
【００２７】
図３では、次に、３２０において、「スタンプ」を表すＰａｇａＷａｔｅｒＭａｒｋＰｒｉｎｔというＦｅａｔｕｒｅを定義している。「両面設定」の３１０のようにＰｒｉｎｔＳｃｈｅｍａＫｅｙｗｏｒｄＭａｐを定義しない場合は、３２０に記載された名称でＰｒｉｖａｔｅＰｒｉｎｔＳｃｈｅｍａとして定義される。
【００２８】
図３では、３３０において、同様の記載方法で「スタンプのフォントスタイル」についても定義する。「スタンプのフォントスタイル」という機能は、「スタンプ」印刷時の記載する文字列のスタイル（標準や斜体など）を設定する機能である。
【００２９】
上記のＧＰＤを定義した場合、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ４００（図４）およびＰｒｉｎＴｉｃｋｅｔ２０４（図５）が、コンフィギュレーションモジュール２０８によって生成される。ＧＰＤに記載した内容とＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ４００やＰｒｉｎｔＴｉｃｋｅｔ２０４は、１対１の関係で表現される。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ４００やＰｒｉｎｔＴｉｃｋｅｔ２０４は印刷設定編集モジュール２０８１やプリンターエクステンション２１０、ＧＤＩｔｏＸＰＳ編集モジュール２０７などの様々なモジュール間でやり取りを行うデータである。
【００３０】
プリンター１０４２に依存した専用の設定は、プリンターエクステンション２１０が持つユーザーインターフェースで設定することができる。プリンターエクステンション２１０は、プリンタードライバー１０５２の一種ではあるが、プリンタードライバー１０５２とは別のアプリケーション（プログラム）としてインストールを行う。プリンタードライバー１０５２は、そのユーザーインターフェースの設定に従い、ＤＥＶＭＯＤＥ構造体２０３もしくはＰｒｉｎｔＴｉｃｋｅｔ２０４における少なくともいずれかの設定の値を変更する。
【００３１】
ＰｒｉｎｔＴｉｃｋｅｔ２０４は、印刷設定がＸＭＬ形式で記述されているので、ＸＰＳアプリ２０２がすべての設定値を直接変更して書き換えることは容易だが、プリンターエクステンション２１０のユーザーインターフェースを使って設定変更してもかまわない。印刷設定は文書印刷のたびに作成するが、プリンター１０４２のオプション機器や、ユーザーごとの環境設定など設定を保持しておきたいものは、ユーザーインターフェースがＯＳ１０５３のレジストリデータベース２０５に保存する。レジストリデータベース２０５が使用できないときは、ユーザーインターフェースは、アプリケーションデータ２２０に設定を保存する。印刷設定のデフォルト値は、ＯＳ１０５３のプリントマネージャ２１８が、レジストリデータベース２０５に保存する。レジストリデータベース２０５や、アプリケーションデータ２２０は、補助記憶装置１０５に保存される。
【００３２】
（３）最後に描画データの変換を行う。
印刷設定が確定したら、ユーザーはアプリケーションが提供する画面を介して、印刷処理の開始を指示する。ＧＤＩアプリ２０１から印刷する場合は、プリンタードライバーの形態を取るＧＤＩｔｏＸＰＳ変換モジュール２０７に描画データが送られ、ＸＰＳスプールファイル２０６が作成される。このときＧＤＩｔｏＸＰＳ変換モジュール２０７はコンフィギュレーションモジュール２０８を呼び出し、印刷設定をＤＥＶＭＯＤＥ構造体２０３からＰｒｉｎｔＴｉｃｋｅｔ２０４に変換する。変換する際には、印刷設定編集モジュール２０８１が使用される。ＸＰＳアプリ２０２から印刷する場合は、ＸＰＳファイルをＸＰＳアプリ自身が生成するのと、ＯＳ１０５３がＸＰＳアプリ２０２からの描画命令に応じてＸＰＳファイルを生成するのと２通りの方法がある。どちらの方法であっても、印刷の途中でＸＰＳスプールファイル２０６を生成する。
【００３３】
ＸＰＳスプールファイル２０６が生成されたら、プリントフィルタパイプライン２１１に処理が渡される。プリントフィルタパイプライン２１１は複数のフィルタを通すことで印刷が行われる仕組みで、フィルタコンフィギュレーションファイル２１６でフィルタの数や順番を制御する。プリントフィルタパイプライン２１１で動作するフィルタパイプラインマネージャ２１２は、フィルタコンフィギュレーションファイル２１６に従って、この実施例では通信フィルタ２１３、レイアウトフィルタ２１４、レンダラフィルタ２１５の順に処理を行う。フィルタはプリンタードライバー１０５２の構成によって、数や種類が異なる。ここでの印刷処理は、フィルタのそれぞれが、ＸＰＳスプールファイル２０６を加工して次のフィルタに渡していくことで進むことになる。通信フィルタ２１３は、プリントマネージャ２１８およびポートモニターを経由してプリンター１０４２と通信する機能と、直接プリンター１０４２と通信する機能を持つ。レイアウトフィルタ２１４は、倍率の変更や製本の面付けレイアウトやスタンプなどレイアウトに関する処理を行う。レンダラフィルタ２１５では、ＸＰＳスプールファイル２０６をレンダリングしてＰＤＬ（ＰａｇｅＤｅｓｃｒｉｐｔｉｏｎＬａｎｇｕａｇｅ）に変換する。ＰＤＬデータは印刷処理のスケジュール管理を行うプリントマネージャ２１８で管理され、キュー（待ち行列）に印刷ジョブが次々と登録される。プリンター１０４２が印刷できる状態になったら、キューに登録した順にポートモニター２１９を通して送信する。
【００３４】
上記印刷フローにおいて、各モジュールでＰｒｉｎｔＴｉｃｋｅｔ２０４を扱っている。例えば、プリンターエクステンション２１０からの印刷設定の変更処理や、各フィルタ（通信フィルタ２１３、レイアウトフィルタ２１４、レンダラフィルタ２１５）による処理におけるＰｒｉｎｔＴｉｃｋｅｔ２０４の読み込み処理などが該当する。それらの処理の際には、必ず、コンフィグモジュール２０８を介して印刷設定編集モジュール２０８１が呼び出される。つまり、一度の印刷処理の中で、このような呼び出しが数十回行われることになる。そして、そのような呼び出し処理が行われるたびに、毎回、ＯＳ１０５３によるＰｒｉｎｔＴｉｃｋｅｔ２０４の検証処理などが動作してしまう。その処理に時間がかかってしまうと、プリンター１０４２での印刷開始が遅くなってしまう。
【００３５】
そこで、本発明では、ＯＳ１０５３によるＰｒｉｎｔＴｉｃｋｅｔ２０４の検証処理などを含む印刷設定の編集処理の負荷を軽減するために、印刷設定編集モジュール２０８１によるＰｒｉｎｔＴｉｃｋｅｔ２０４の自動的な編集処理を追加する。
【００３６】
図６で示すフローチャートを用いて、本実施例における特別な処理について詳細に説明する。本処理では、ＯＳ１０５３による検証などでは不要となる機能を（一時的に）ＰｒｉｎｔＴｉｃｋｅｔから削減する（後述のＳ６０６，Ｓ６０７）などして、ＯＳ１０５３による処理負荷の軽減を実現している。なお、本フローチャートの各処理を実行する主体は印刷設定編集モジュール２０８１であり、以下の説明において記載がない限り、各処理の主語は印刷設定編集モジュール２０８１である。印刷設定編集モジュール２０８１は、補助記憶装置１０５からＲＡＭ１０２２にロードされ、ＣＰＵ１０１によって実行される。
【００３７】
前提として、ＰｒｉｎｔＴｉｃｋｅｔ２０４には、互いに関連のある複数の機能が存在する。例えば、図３のＧＰＤの例を用いて説明した機能（Ｆｅａｔｕｒｅ）である、スタンプ（ＰａｇａＷａｔｅｒＭａｒｋＰｒｉｎｔ）３２０と、スタンプのフォントスタイル（ＰａｇａＷａｔｅｒＭａｒｋＰｒｉｎｔＦＯＮＴＳＴＹＬＥ）３３０とが該当する。スタンプのフォントスタイル３３０は、スタンプがオンのときにはじめて動作する機能である。よって、例えば、スタンプ機能がオフであった場合には、スタンプのフォントスタイル３３０に係るＰｒｉｎｔＴｉｃｋｅｔ２０４における記述は、ＯＳ１０５３による検証処理などでは不要な機能に対応する記述となり得る。以下、この考え方などを踏まえて、印刷設定編集モジュール２０８１による処理を説明する。
【００３８】
まず、コンフィグモジュール２０８の呼び出しに応じて、印刷設定編集モジュール２０８１による印刷設の定編集処理が開始される。
【００３９】
Ｓ６０１において、コンフィグモジュール２０８から渡されるＰｒｉｎｔＴｉｃｋｅｔ２０４を受信する。Ｓ６０２において、受信したＰｒｉｎｔＴｉｃｋｅｔ２０４内に定義されている複数のＦｅａｔｕｒｅの中の１つを、処理対象として取得する。
【００４０】
Ｓ６０３において、処理対象のＦｅａｔｕｒｅと関連性があるＦｅａｔｕｒｅをＰｒｉｎｔＴｉｃｋｅｔ２０４から探索する。本実施例では、関連性があるＦｅａｔｕｒｅを決定する例として、処理対象のＦｅａｔｕｒｅで定義された名称の全て（または一部）を用いた検索において、前方一致した名称をもつ別のＦｅａｔｕｒｅを関連性があると判定する。例えば、図５のＰｒｉｎｔＴｉｃｋｅｔ２０４の例でいうと、ＰａｇｅＷａｔｅｒｍａｒｋＰｒｉｎｔ５０２とＰａｇｅＷａｔｅｒｍａｒｋＰｒｉｎｔＦｏｎｔＳｔｙｌｅ５０３は前方一致するため、関連性があると判断できる。
【００４１】
また、関連性があると判断する条件を、プロパティバッグ２０８２内のＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇにあらかじめ記載しておき、印刷設定編集モジュール２０８１がＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇに記載された情報を参照し、探索してもよい。具体的には、関連するＦｅａｔｕｒｅ同士の組合せをＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇに予め登録しておくことになる。
【００４２】
なお、本実施例では、この関連性がある機能の探索の対象にＰｕｂｌｉｃＳｃｈｅｍａの機能を含めないようにする。後述の処理では、ＰｒｉｎｔＴｉｃｋｅｔ内のＰｒｉｎｔＳｃｈｅｍａの定義を変更する処理も含まれる。そのため、ＯＳ１０５３が定義しているＰｕｂｌｉｃＳｃｈｅｍａにまで、本処理を適用してしまうと、ＰｒｉｎｔＴｉｃｋｅｔ２０４を利用する一般のアプリケーションが正しくＰｒｉｎｔＴｉｃｋｅｔ２０４が扱えなくなる可能性がある。関連のある機能の探索対象をＰｒｉｖａｔｅＳｃｈｅｍａに限定することで、このような問題を未然に防止することができる。
【００４３】
Ｓ６０４において、関連のあるＦｅａｔｕｒｅが存在すると判断した場合にはＳ６０５に進み、存在しない場合にはＳ６０８へ進む。
【００４４】
Ｓ６０５において、Ｓ６０２で取得した処理対象のＦｅａｔｕｒｅの機能が有効（ＯＮ）か、否かを判断する。Ｓ６０５において、処理対象のＦｅａｔｕｒｅの機能が有効でないと判断した場合にはＳ６０６へ進み、有効であったと判断した場合にはＳ６０７へ進む。本実施例において、機能が有効であるとの判断として、取得したＦｅａｔｕｒｅにおけるＯｐｔｉｏｎの選択肢が「Ｎｏｎｅ」以外である場合に本機能が有効化されていると判断してもよい。また、機能が有効であるとの判断条件をＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇに記載しておき、印刷設定編集モジュール２０８１がＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇに記載された情報を取得し、その情報を基に判断してもよい。
【００４５】
Ｓ６０６において、処理対象のＦｅａｔｕｒｅと関連があると判断されたＦｅａｔｕｒｅを、ＰｒｉｎｔＴｉｃｋｅｔ２０４から削除する。この処理により、ＯＳ１０５３による検証などの処理対象となるＰｒｉｎｔＴｉｃｋｅｔ２０４内のＦｅａｔｕｒｅの数が削減されることになる。図７で、本処理後のＰｒｉｎｔＴｉｃｋｅｔ２０４を示す。
【００４６】
例えば、図５のＰｒｉｎｔＴｉｃｋｅｔ２０４の場合、「スタンプ」機能を表すＰａｇｅＷａｔｅｒｍａｒｋＰｒｉｎｔ５０２を取得した場合には、関連のある機能として、「スタンプのフォントスタイル」機能を表すＰａｇｅＷａｔｅｒｍａｒｋＰｒｉｎｔＦｏｎｔＳｔｙｌｅ５０３が見つかる。「スタンプのフォントスタイル」機能は、「スタンプ」機能が有効である際に利用される機能（印刷設定）である。例えば、「スタンプ」機能についてＰｒｉｎｔＴｉｃｋｅｔ２０４内で無効を表す「Ｎｏｎｅ」が指定されていた場合には、ＰａｇｅＷａｔｅｒｍａｒｋＰｒｉｎｔＦｏｎｔＳｔｙｌｅ５０３に係る記述は、検証する必要のないと考えられる。そのため、Ｓ６０６において、関連のある機能としてのＰａｇｅＷａｔｅｒｍａｒｋＰｒｉｎｔＦｏｎｔＳｔｙｌｅ５０３で示すＦｅａｔｕｒｅに係る記述は、ＰｒｉｎｔＴｉｃｋｅｔ２０４から削除される。
【００４７】
また、ここで機能の無効を表す選択肢が「Ｎｏｎｅ」という情報をＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇにあらかじめ記載しておき、印刷設定編集モジュール２０８１がＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇに記載された情報を取得し、その情報を基に判断してもよい。
【００４８】
Ｓ６０７において、ＰｒｉｎｔＴｉｃｋｅｔ内の処理対象のＦｅａｔｕｒｅと関連があると判断されたＦｅａｔｕｒｅの記述を、処理対象のＦｅａｔｕｒｅに係る記述の内部に再定義する。つまり、複数の関連するＦｅａｔｕｒｅを、１つのＦｅａｔｕｒｅにまとめるようにＰｒｉｎｔＴｉｃｋｅｔを編集する。Ｓ６０７の処理について、上述と同様に、「スタンプ」機能と「スタンプのフォントスタイル」機能とを例に挙げて説明する。「スタンプ」機能が有効である場合に「スタンプのフォントスタイル」機能が有効になる。ここでは、５０２の「スタンプ」機能が有効であることを表す「ＷａｔｅｒｍａｒｋＰｒｉｎｔ」が指定されていた場合を想定する。このような場合には、図５のＰｒｉｎｔＴｉｃｋｅｔ２０４内のＰａｇｅＷａｔｅｒｍａｒｋＰｒｉｎｔＦｏｎｔＳｔｙｌｅ５０３に係る記述が、図８の８０３で示すように、Ｆｅａｔｕｒｅ名がＰａｇｅＷａｔｅｒｍａｒｋＰｒｉｎｔ８０２に係る記述の内部に再定義されている。
【００４９】
ここで、ＯＳが行うＰｒｉｎｔＴｉｃｋｅｔに対する検証などの処理時間に影響する要因として、ＸＭＬ形式で記載されたＰｒｉｎｔＴｉｃｋｅｔのＲｏｏｔである＜ＰｒｉｎｔＴｉｃｋｅｔ＞の直下に存在する＜Ｆｅａｔｕｒｅ＞の数（機能数）の多さが挙げられる。このＳ６０７での再定義処理によれば、ＰｒｉｎｔＴｉｃｋｅｔのＲｏｏｔである＜ＰｒｉｎｔＴｉｃｋｅｔ＞の直下に存在する＜Ｆｅａｔｕｒｅ＞の数が減少するので、ＯＳによる処理負荷が削減することが見込める。
【００５０】
Ｓ６０８において、ＰｒｉｎｔＴｉｃｋｅｔ２０４に記載されたすべてのＦｅａｔｕｒｅに確認したかを判断し、すべてのＦｅａｔｕｒｅを確認していない場合にはＳ６０２に戻る。すべてのＦｅａｔｕｒｅを確認した場合には本処理を終了する。
【００５１】
なお、Ｓ６０６において関連のある機能に係る記述をＰｒｉｎｔＴｉｃｋｅｔから削除しているが、後述するＳ６０７の処理のように、ひとつのＦｅａｔｕｒｅとして再定義するＳ６０７と同等の処理でも良い。また、ＰｒｉｎｔＴｉｃｋｅｔ２０４からの削除については、Ｆｅａｔｕｒｅに係る記述をＰｒｉｎｔＴｉｃｋｅｔから消去する以外にも、コメントアウトなどして、ＰｒｉｎｔＴｉｃｋｅｔの解釈に際して認識されないようにすることで削除を行ってもよい。
【００５２】
以下に、実施例１を適用した場合の効果を具体的に説明するために、異なるモデルのプリンターのそれぞれについて、機能数と印刷設定編集処理にかかる処理時間の実験結果についてまとめた表（表１）を記載する。表中の「機能数」は、各モデルにおける、ＰｕｂｌｉｃＳｃｈｅｍａ及びＰｒｉｖａｔｅＳｃｈｅｍａで定義される機能の数を示す。また、「処理時間［Ｓ］」は、本実施例の未適用／適用のそれぞれの場合での、一度の印刷処理においてＭｉｃｒｏｓｏｆｔが提供するＯＳによるＰｒｉｎｔＴｉｃｋｅｔを処理する複数回の関数呼び出しによる合計の処理時間を示す。
【００５３】
なお、新しいアーキテクチャであるＶ４プリンタードライバーでは、現状、プリンターがサポートする全ての機能を提供するのではなく、一部の機能のみ提供するものが多い。一部の機能のみ提供する、つまり機能数が少ない場合には、表１で示すように、本実施例の適用の有無に関わらず処理時間が短い。しかし、Ｖ４プリンタードライバーで、今後登場する新たな機能などを含む全ての機能を提供するようになれば、ＰｒｉｎｔＴｉｃｋｅｔ内に定義されるＦｅａｔｕｒｅの数（「機能数」）が増加し、ＯＳによる合計の処理時間が増加していくことが想定される。
【００５４】
【表１】
2018045577.tif 000003
【００５５】
表１の実験値で示すように、Ｖ４プリンタードライバーを利用する印刷システムにおいて、本実施例における機能数の削減での印刷設定処理にかかる負荷軽減により、ユーザーに最大限の機能を提供しつつ、印刷装置側での印刷開始を早めることができる。また、実施例１を適用時の処理時間の欄に記載の「対象機能」は、前述の図６で示す処理によりＰｒｉｎｔＴｉｃｋｅｔ内のＰｒｉｖａｔｅＳｃｈｅｍａで定義された機能の中で、削減された機能の数を示している。
【００５６】
（応用例１）
上述の実施例１において、ＰｒｉｎｔＴｉｃｋｅｔ２０４の機能を削除（Ｓ６０６）および１つのＦｅａｔｕｒｅにまとめる（Ｓ６０７）ことにより、ＰｒｉｎｔＴｉｃｋｅｔを扱う他のアプリケーションとの互換性に問題が発生する場合が考えられる。例えば、従来のＶ４プリンタードライバーに対応していたアプリケーションは、上述の実施例１を実現した後のＶ４プリンタードライバーでは、Ｆｅａｔｕｒｅがそもそも存在しないのか、削除されてしまったのかが不明になる場合がある。
【００５７】
そこで、印刷設定編集モジュール２０９は、図６に示す処理後のＰｒｉｎｔＴｉｃｋｅｔに対して、ヒント情報をさらに記述することで、アプリケーション側の互換性問題を解決してもよい。具体的には、図９で示すように、削除対象となったＦｅａｔｕｒｅに係る記述を、９０１に示すように”Ｐｒｏｐｅｒｔｙ  ｎａｍｅ”として再定義して、ＰｒｉｎｔＴｉｃｋｅｔ内に残す。なお、前述した通り、ＯＳによるＰｒｉｎｔＴｉｃｋｅｔに対する検証処理は、主に、ＸＭＬ形式で記載されたＰｒｉｎｔＴｉｃｋｅｔのＲｏｏｔである＜ＰｒｉｎｔＴｉｃｋｅｔ＞の直下に存在する＜Ｆｅａｔｕｒｅ＞に対する処理になる。従って、本処理によって、ＯＳによる処理負荷はそこまで大きくなることはない。
【００５８】
（応用例２）
実施例１の処理（図６）を行うかどうかを外部から指定できるように、ＱｕｅｕｅＰｒｏｐｅｔｙＢａｇに、図６の処理を有効化するか否かを示す設定情報を持たせてもよい。
【００５９】
（実施例２）
実施例１においては、関連のある複数のＦｅａｔｕｒｅの中のいずれかを削減の対象としていたため、図６の処理が適用される機能（印刷設定）は限定されていた。そこで本実施形態では、ＰｒｉｎｔＴｉｃｋｅｔ内のそれ以外のＦｅａｔｕｒｅに関しても、削減対象とする手段について説明する。
【００６０】
Ｖ４プリンタードライバーを利用する印刷システムにおいて、ユーザーがアプリケーションから印刷を行う場合、プリンターエクステンション２１０が持つユーザーインターフェースで印刷設定を変更する場合がある。ただ、ユーザーは、一度の印刷指示を行う際に、多くの印刷設定を変更することは少なく、基本的にデフォルトの印刷設定（デフォルト設定）で印刷する場合が多い。また、変更した場合でも、よく利用される「両面設定」や「２ｉｎ１印刷」、「白黒印刷」といった一部のみの変更が多い。
【００６１】
一方で、ユーザーの設定変更が多い場合であっても、少ない場合であっても、ＸＭＬ形式で記載されたＰｒｉｎｔＴｉｃｋｅｔのＲｏｏｔである＜ＰｒｉｎｔＴｉｃｋｅｔ＞の直下に存在する＜Ｆｅａｔｕｒｅ＞の数（機能数）については変化がない。つまり、ユーザーの設定変更後に内部的に行われるＯＳ１０５３や印刷設定編集モジュール２０８１における印刷設定処理に関しては、設定変更の量に関わらず負荷が不変となる。当然ながら、デフォルト設定に含まれる印刷設定に対応するＦｅａｔｕｒｅは、何度も検証を行う必要は無いと考えられる。
【００６２】
そこで本実施例では、とくに、ＯＳ１０５３による印刷設定情報（ＰｒｉｎｔＴｉｃｋｅｔ）の検証などの処理負荷の軽減のために、ユーザーの設定変更後にデフォルト設定からの差異部分だけを表現した印刷設定情報を生成する仕組みについて説明する。
【００６３】
なお、本実施例におけるハードウェア構成やソフトウェア構成などは実施例１に示すものと同様であり、実施例１とは異なる処理を中心に、以下、説明を行う。
【００６４】
図１０のフローチャートを用いて、実施例２に特有な処理の詳細を説明する。本フローチャートの処理を行うモジュールは印刷設定編集モジュール２０８１であり、以下の説明において記載がない限り主語は印刷設定編集モジュール２０８１である。印刷設定編集モジュール２０８１は、補助記憶装置１０５からＲＡＭ１０２２にロードされ、ＣＰＵ１０１によって実行される。なお、本処理は、コンフィグモジュール２０８によって呼び出されることで開始される。
【００６５】
Ｓ１００１において、コンフィグモジュール２０８から渡されるＰｒｉｎｔＴｉｃｋｅｔを受信する。ここで取得されるＰｒｉｎｔＴｉｃｋｅｔには、ユーザーによる印刷設定変更があれば、その変更された設定値が反映されている。次に、Ｓ１００２において、プロパティバッグ２０８２内のＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇに保存されたプリンタードライバーのデフォルト設定を取得する。ドライバーのデフォルト設定は、Ｆｅａｔｕｒｅ名とデフォルトであるＯｐｔｉｏｎ名がＫｅｙ−Ｖａｌｕｅペアで保存されているデータ群である。
【００６６】
例えば、図１１に示すように「印刷の向き」を表すＦｅａｔｕｒｅである「ＰａｇｅＯｒｉｅｎｔａｔｉｏｎ」のデフォルト設定での値が「Ｐｏｒｔｒａｉｔ」、「両面設定」を表すＦｅａｔｕｒｅである「ＤｏｃｕｍｅｎｔＤｕｐｌｅｘ」のデフォルト設定での値が「ＯｎｅＳｉｄｅｄ」という情報が記載されているものとする。本実施例では、本データ群の表現方法をＫｅｙ−Ｖａｌｕｅペアで表現しているが、他の表現方法でもよい。印刷設定編集モジュール２０８１は、これらの情報により各Ｆｅａｔｕｒｅのデフォルト設定の値を保持しておく。
【００６７】
Ｓ１００３において、受信したＰｒｉｎｔＴｉｃｋｅｔ内に定義されている複数のＦｅａｔｕｒｅの中の１つを、処理対象として取得する。
【００６８】
Ｓ１００４において、ＰｒｉｎｔＴｉｃｋｅｔにおける処理対象のＦｅａｔｕｒｅの設定値と、Ｓ１００２で取得したデフォルト設定に含まれる対応する印刷設定（機能）の設定値とが、一致するかを判断する。一致すると判断した場合はＳ１００５へ進み、一致しない場合にはＳ１００６へ進む。
【００６９】
Ｓ１００５において、処理対象のＦｅａｔｕｒｅに係る記述を、ＰｒｉｎｔＴｉｃｋｅｔから削除する。
【００７０】
例えば、図１２で示すＰｒｉｎｔＴｉｃｋｅｔ１２００を受信した場合を想定する。まず、ＰｒｉｎｔＴｉｃｋｅｔ１２００の１つのＦｅａｔｕｒｅに係る記述で、ＤｏｃｕｍｅｎｔＤｕｐｌｅｘ１２０１のＯｐｔｉｏｎの値が「ＯｎｅＳｉｄｅｄ」となっている。また、図１１で示すデフォルト設定では、ＤｏｃｕｍｅｎｔＤｕｐｌｅｘのデフォルト設定の値が「ＯｎｅＳｉｄｅｄ」となっている。この場合には、Ｓ１００５の処理で互いの設定値が一致すると判断できるため、印刷設定編集モジュール２０８１がＰｒｉｎｔＴｉｃｋｅｔ１２００からＤｏｃｕｍｅｎｔＤｕｐｌｅｘ１２０１を示すＦｅａｔｕｒｅに係る記述を削除する。
【００７１】
また、図１２では、ＰｒｉｎｔＴｉｃｋｅｔ１２００内のＰａｇｅＯｒｉｅｎｔａｔｉｏｎ１２０２のＯｐｔｉｏｎの値が「Ｌａｎｄｓｃａｐｅ」となっている。ここで、図１１で示すデフォルト設定では、ＰａｇｅＯｒｉｅｎｔａｔｉｏｎのデフォルト設定の値が「Ｐｏｒｔｒａｉｔ」となっている。この場合には、Ｓ１００５の処理で互いの設定値が一致しないと判断できるため、印刷設定編集モジュール２０８１によるＰａｇｅＯｒｉｅｎｔａｔｉｏｎ１２０２を示すＦｅａｔｕｒｅに係る記述の削除処理は実行されない。
【００７２】
Ｓ１００６において、ＰｒｉｎｔＴｉｃｋｅｔ２０４に記載されたすべてのＦｅａｔｕｒｅに確認したかを判断し、すべてのＦｅａｔｕｒｅを確認していない場合にはＳ１００３に戻る。すべてのＦｅａｔｕｒｅを確認した場合には本処理を終了する。
【００７３】
例えば、ユーザーが「印刷の向き」をデフォルトの設定値である「Ｐｏｒｔｒａｉｔ」から「Ｌａｎｄｓｃａｐｅ」に設定変更した場合には、図１０で示す処理により、図１３で示すＰｒｉｎｔＴｉｃｋｅｔ１３００が生成されることになる。ＰｒｉｎｔＴｉｃｋｅｔ１３００では、ＤｏｃｕｍｅｎｔＤｕｐｌｅｘ１２０１を示すＦｅａｔｕｒｅに係る記述については削除されている。
【００７４】
また、実施例１と同様に、実施例２に係る図１０の処理（とくにＳ１００５）は、ＰｕｂｌｉｃＳｃｈｅｍａのＦｅａｔｕｒｅについては対象外としてもよい。これにより、ＰｒｉｎｔＴｉｃｋｅｔを扱うアプリケーションとの互換性を優先できる。
【００７５】
以下に、実施例２を適用した場合の効果を具体的に説明するために、異なるモデルのプリンターのそれぞれについて、機能数と印刷設定編集処理にかかる処理時間の実験結果についてまとめた表（表２）を記載する。表中の用語は、前述した表１と同様の意味である。
【００７６】
【表２】
2018045577.tif 000004
【００７７】
実施例１に比べて、実施例２ではＰｒｉｎｔＴｉｃｋｅｔ内で削減される機能数が非常に多くなるため、ＯＳ１０５３による検証処理を含む印刷設定処理にかかる負荷をより軽減することができる。
【００７８】
なお、本実施例では、デフォルト設定がＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇに保存されていることを想定しているが、プロパティバッグ２０８２内のＱｕｅｕｅＰｒｏｐｅｒｔｙＢａｇに保存されていてもよい。例えば、デフォルト設定をカスタマイズして利用するユーザーのために、プリンタードライバーのインストーラー（不図示）がデフォルト設定を変更したうえでインストールを実行する場合もある。その際にインストーラーは、ＱｕｅｕｅＰｒｏｐｅｔｙＢａｇに、上記のようにＫｅｙ−Ｖａｌｕｅペアでプリンタードライバーのデフォルト設定を保存しておく。上述のＳ１００２では、印刷設定編集モジュール２０８１は、ＱｕｅｕｅＰｒｏｐｅｔｙＢａｇに保存されたＫｅｙ−Ｖａｌｕｅペアのデータ群で示すデフォルト設定を取得し、それ以降の処理に適用する。
【００７９】
なお、本実施例を適用する場合には、様々なアプリケーション、並びにプリンタードライバーの各フィルタは、ＰｒｉｎｔＴｉｃｋｅｔから印刷設定変更の差分しか判断できなくなるため、デフォルト設定を参照できる必要がある。よって、ＷＳＤＡ（Ｗｉｎｄｏｗｓ  Ｓｔｏｒｅ  Ｄｅｖｉｃｅ  Ａｐｐｓ）やプリンターエクステンション２１０のようなＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇにアクセスできるモジュールの場合は、前述したＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇのＫｅｙ−Ｖａｌｕｅペアで保存されたデフォルト情報を用いて、ＵＩを形成する。一方で、通常のＧＤＩ印刷アプリケーション２０１やＸＰＳ印刷アプリケーション２０２がＰｒｉｎｔＴｉｃｋｅｔを扱う場合は、ＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇへのアクセスが不可能であるため、印刷設定能力情報であるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに記載されたデフォルト設定を参照する。
【００８０】
（応用例）
実施例１と実施例２に係る処理の両方を印刷設定編集モジュール２０８１により実行することが可能である。例えば、図１０で示す処理を適用したＰｒｉｎｔＴｉｃｋｅｔに対して、さらに図６で示す処理を適用することができる。
【００８１】
（他の実施例）
本発明は、上述した実施形態を適宜組み合わせることにより構成された装置あるいはシステムやその方法も含まれるものとする。
【００８２】
ここで、本発明は、上述した実施形態の機能を実現する１以上のソフトウェア（プログラム）を実行する主体となる装置あるいはシステムである。また、その装置あるいはシステムで実行される上述した実施形態を実現するための方法も本発明の一つである。また、そのプログラムは、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給され、そのシステム或いは装置の１以上のコンピュータ（ＣＰＵやＭＰＵ等）によりそのプログラムが読み出され、実行される。つまり、本発明の一つとして、さらにそのプログラム自体、あるいは該プログラムを格納したコンピュータにより読み取り可能な各種記憶媒体も含むものとする。また、上述した実施形態の機能を実現する回路（例えば、ＡＳＩＣ）によっても、本発明は実現可能である。
【符号の説明】
【００８３】
１０５１  アプリケーション
１０５２  プリンタードライバー
１０５２  オペレーティングシステム（ＯＳ）
２０８１  印刷設定編集モジュール
【図１】
2018045577.tif 000005
【図２】
2018045577.tif 000006
【図３】
2018045577.tif 000007
【図４】
2018045577.tif 000008
【図５】
2018045577.tif 000009
【図６】
2018045577.tif 000010
【図７】
2018045577.tif 000011
【図８】
2018045577.tif 000012
【図９】
2018045577.tif 000013
【図１０】
2018045577.tif 000014
【図１１】
2018045577.tif 000015
【図１２】
2018045577.tif 000016
【図１３】
2018045577.tif 000017