(57)【要約】【課題】印刷出力時間を短縮するために、Ｖ４ドライバーモジュールで禁則解決処理を行わないことがある。その場合、禁則解決が行われずに出力されてしまう場合がある。ＧＤＩアプリケーションの場合、ＯＳが行うＧＤＩからＸＰＳへ変換する処理の際に禁則解決処理が行われるが、ＸＰＳアプリケーションの場合はアプリケーションの実装に依存する。例えば、「常に両面設定」が設定されている場合、アプリケーションが「片面印刷」設定を行い禁則解決処理せずに印刷した場合には、禁則解決処理がされていないＰｒｉｎｔＴｉｃｋｅｔがＶ４ドライバーモジュールに渡されるため「片面印刷」で出力されてしまう。【解決手段】Ｖ４ドライバーモジュールにおいて、印刷アプリケーションの種類に応じて禁則解決処理を行うかを判断し、最低限必要な禁則解決処理で動作する。【選択図】図６
2018180750.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置と印刷装置から構成されている情報処理方法において、
第１フィルタにて、ＸＰＳスプールファイルを受信し解析する手段と、
第１フィルタにて、禁則解決処理が必要かどうかの判断を行う手段と、
第１フィルタにて、禁則解決処理が必要かどうかの情報をプロパティバッグに保存する手段と、
第２フィルタにて、プロパティバッグの情報を取得する手段と、
第２フィルタにて、プロパティバッグの情報から禁則解決処理が必要かどうかの判断を行う手段と、
第２フィルタにて、ＰｒｉｎｔＴｉｃｋｅｔに対して禁則解決処理を行う手段と、を有することを特徴とする画像形成装置およびその制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、新しいアーキテクチャのプリンタードライバーにおける禁則解決処理を適切に行うための判断手段に関する。
【背景技術】
【０００２】
Ｍｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ８（登録商標）では、Ｖ４プリンタードライバーと呼ばれる新しいアーキテクチャで動作するプリンタードライバーが導入されている。Ｖ４プリンタードライバーは、Ｖ３プリンタードライバーのアーキテクチャとして提供されていたＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）プリンタードライバーの後継となるアーキテクチャであり、ＸＰＳ文書を利用した印刷パスを利用している。
【０００３】
このＸＰＳ印刷パスにおいて、印刷物の体裁を決定するために利用されるものがＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓと呼ばれるＸＭＬ形式で記述された印刷能力情報と、ＰｒｉｎｔＴｉｃｋｅｔと呼ばれるＸＭＬ形式で記述された印刷設定情報である。Ｖ４プリンタードライバーでは、ＧＰＤ（Ｇｅｎｅｒｉｃ  Ｐｒｉｎｔｅｒ  Ｄｅｓｃｒｉｐｔｉｏｎ）と呼ばれる印刷設定定義ファイルに印刷能力情報を記載し、このＧＰＤを含んだプリンタードライバーをＯＳ（Ｏｐｅｒａｔｉｏｎｇ  Ｓｙｓｔｅｍ）にインストールすることで、アプリケーションに対してＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓやＰｒｉｎｔＴｉｃｋｅｔを利用した印刷設定変更機能を提供することができる。
【０００４】
この印刷設定変更機能には、デバイスが同時に実行できない印刷設定を制御する「禁則」と呼ばれる機能が備わっている。例えば、「はがき」の用紙サイズに対して「両面印刷」ができないデバイスに対応したプリンタードライバーの場合、プリンタードライバーはユーザーに対してこれらの設定を同時に設定させない制御を行う必要がある。また、プリンタードライバーを利用して印刷を行うシステムを導入する企業の場合、システム管理者が一般ユーザーに対して、設定させたくない印刷設定を制御する場合がある。例えば、システム管理者はユーザーに対して、「片面印刷」を許容せず「常に両面設定」で印刷するように強制したい場合、プリンタードライバーは「両面設定」以外を設定できないように制御する必要がある。
【０００５】
また、印刷設定変更を行う際に、上記の禁則が発生する設定がされていた場合にはＰｒｉｎｔＴｉｃｋｅｔの禁則解決処理が必要になる。例えば、上記の「常に両面設定」が設定されている場合、ＰｒｉｎｔＴｉｃｋｅｔに「片面設定」が設定されていたとすると、「両面設定」に設定を丸める必要がある。また、禁則解決処理に関しては禁則が発生しない場合にもＰｒｉｎｔＴｉｃｋｅｔの精査のための処理に時間がかかり、印刷出力時間に影響を与えていることが判明している。そのため、Ｖ４ドライバーモジュールが禁則解決処理を行わないことにより印刷出力時間を短縮させることが可能である。
【０００６】
また、Ｖ４ドライバーを利用した印刷形態としてＧＤＩ（Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）を利用したアプリケーションからの印刷（ＧＤＩ印刷パス）とＸＰＳを利用したアプリケーションからの印刷（ＸＰＳ印刷パス）の２種類存在する。Ｖ４プリンタードライバーにおいて、ＧＤＩ印刷パスはＯＳがＧＤＩからＸＰＳへ変換処理を行うことによりＸＰＳデータを受信することができ、ＸＰＳ印刷パスはアプリケーションが生成したＸＰＳデータをそのまま受信して印刷処理を開始する形態となっている。
【０００７】
そこで、上記の印刷パスの違いをＵＩが判断し、ＰｒｉｎｔＴｉｃｋｅｔにその情報を付加し、印刷アプリケーションに応じてドライバー内部処理を切り替える手段が提供されている（特許文献１）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００７−２４９５８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
印刷出力時間を短縮するために、Ｖ４ドライバーモジュールで禁則解決処理を行わないことがある。その場合、禁則解決が行われずに出力されてしまう場合がある。ＧＤＩアプリケーションの場合、ＯＳが行うＧＤＩからＸＰＳへ変換する処理の際に禁則解決処理が行われるが、ＸＰＳアプリケーションの場合はアプリケーションの実装に依存する。例えば、「常に両面設定」が設定されている場合、アプリケーションが「片面印刷」設定を行い禁則解決処理せずに印刷した場合には、禁則解決処理がされていないＰｒｉｎｔＴｉｃｋｅｔがＶ４ドライバーモジュールに渡されるため「片面印刷」で出力されてしまう。
【課題を解決するための手段】
【００１０】
本発明に係る画像形成装置およびその制御方法は、
情報処理装置と印刷装置から構成されている情報処理方法において、
第１フィルタにて、ＸＰＳスプールファイルを受信し解析する手段と、
第１フィルタにて、禁則解決処理が必要かどうかの判断を行う手段と、
第１フィルタにて、禁則解決処理が必要かどうかの情報をプロパティバッグに保存する手段と、
第２フィルタにて、プロパティバッグの情報を取得する手段と、
第２フィルタにて、プロパティバッグの情報から禁則解決処理が必要かどうかの判断を行う手段と、
第２フィルタにて、ＰｒｉｎｔＴｉｃｋｅｔに対して禁則解決処理を行う手段と、を有することを特徴とする。
【発明の効果】
【００１１】
本発明に係る画像形成装置およびその制御方法によれば、Ｖ４ドライバーモジュールにて最低限必要な禁則解決処理で動作することにより、最適な印刷出力時間でユーザーの意図した出力結果を得ることができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態としての、コンピューターシステムのハードウェアとソフトウェアのブロック構成図を示す。
【図２】本発明の一実施形態としての、印刷処理システムのブロック構成図を示す。
【図３】本発明の一実施形態としての、印刷設定定義ファイル（ＧＰＤ）の一部を示す。
【図４】本発明の一実施形態としての、印刷能力情報であるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの一部を示す。
【図５】本発明の一実施形態としての、印刷設定情報であるＰｒｉｎｔＴｉｃｋｅｔの一部を示す。
【図６】本発明の一実施形態としての、レイアウトフィルタ２１４の処理に関するフローチャートを示す。
【図７】本発明の一実施形態としての、レンダラフィルタ２１５の処理に関するフローチャートを示す。
【図８】本発明の一実施形態としての、ＧＤＩアプリケーションから印刷した場合に生成されるＸＰＳデータの例を示す。
【図９】本発明の一実施形態としての、ＸＰＳアプリケーションから印刷した場合に生成されるＸＰＳデータの例を示す。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【実施例１】
【００１４】
図１は本発明の実施形態を示す一般的なコンピューターを用いたシステムのブロック構成図である。
【００１５】
ＣＰＵ１０１は主記憶装置１０２のＲＯＭ１０２１あるいはＲＡＭ１０２２あるいは補助記憶装置１０５に格納されたプログラムに従って装置全体の制御を行う。ＲＡＭ１０２２はＣＰＵ１０１が各種処理を行う際のワークエリアとしても使用される。本実施形態における各コンポーネントの処理はすべてＲＡＭ１０２に読み込んで動作する。補助記憶装置１０５はアプリケーション１０５１やプリンタードライバー１０５２、オペレーティングシステム１０５３等を記録する。
【００１６】
プリンタードライバー１０５２は、印刷機能を持つデバイスに対して、印刷指示を行うことができる。キーボード１０３１やマウス・タッチパネルなどに代表されるポインティングデバイス１０３２などの入力機器は、入力Ｉ／Ｆ１０３を通じて、ユーザーがコンピューターに対して各種指示を与えるためのデバイスである。出力Ｉ／Ｆ１０４は、データを外部に出力するためのインターフェースであり、モニタ１０４１やプリンター１０４２などの出力機器に対してデータを出力する。プリンター１０４２とは直接接続されるローカルＩ／Ｏのみならず、通信Ｉ／Ｆ１０６を通じて接続されるネットワーク１０６１を通して接続されていてもよい。また、１０７は共通データシステムバスで、Ｉ／Ｆやモジュール間でデータのやりとりを行う。
【００１７】
図２はドライバー印刷システムのブロック構成図である。
【００１８】
ドライバー印刷システムはＸＰＳファイルフォーマットをスプールデータとして使用し、印刷を行うシステムである。ドライバー印刷システムは、オペレーティングシステム１０５３上で動作している。プリントマネージャ２１８、ＧＤＩｔｏＸＰＳ変換モジュール２０７、フィルタパイプラインマネージャ２１２、ポートモニター２１９はオペレーティングシステム１０５３に含まれるモジュールである。ＧＤＩとはプリンターの印刷イメージの生成を行うグラフィックスコンポーネントであり、ＧＤＩｔｏＸＰＳ変換モジュール２０７は、ＧＤＩで描画されたデータをＸＰＳデータへ変換する機能を持つ。フィルタパイプラインマネージャ２１２は、ＸＰＳ印刷パスの特徴であるフィルタ印刷処理の管理を行うモジュールである。
【００１９】
ポートモニター２１９は、デバイスにアクセスするプリントマネージャ２１８とプリンター間で通信を制御することができプリンタードライバーはポートモニター２１９を経由して印刷処理を行う。ＧＤＩｔｏＸＰＳ変換モジュール２０７、コンフィグレーションモジュール２０８、フィルタパイプラインマネージャ２１２は、プリンタードライバー１０５２に含まれているが、オペレーティングシステム１０５３から提供されているプリンタードライバー１０５２のモジュールという位置づけである。コンフィグレーションモジュール２０８は、プリンタードライバーが提供する印刷設定編集モジュール２０８１を使用して印刷設定情報を編集することができ、印刷設定編集モジュール２０８１は、スクリプト言語、特にＪａｖａＳｃｒｉｐｔ（商標登録）で記載されたプログラムのことを指し、プリンタードライバーが提供するプロパティバッグ２０８２を利用して印刷設定情報を編集する。プロパティバッグ２０８２とは、プリンターの機種依存情報として利用するためのＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇと呼ばれるデータ群と、プリントキューに紐づいたＱｕｅｕｅＰｒｏｐｅｒｔｙＢａｇと呼ばれるデータ群が保持された領域を指す。
【００２０】
ＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇは、ドライバーパッケージ内に存在するプリンターの機種依存データであり、プリンタードライバーインストール後にオペレーティングシステム１０５３内の特定の領域に読み取り専用としてデータ群が保持される。Ｑｕｅｕｅ８ＰｒｏｐｅｒｔｙＢａｇは、Ｋｅｙ−Ｖａｌｕｅペアのｘｍｌ定義ファイルをオペレーティングシステム１０５３に登録することで利用することが可能であり、Ｖａｌｕｅに関して一定の権限上で編集が可能である。
【００２１】
プリンタードライバー１０５２とフィルタパイプラインマネージャ２１２の各フィルタは、図１の補助記憶装置１０５にプリンタードライバー１０５２として格納されている。ＧＤＩ印刷アプリケーション２０１とＸＰＳ印刷アプリケーション２０２は、図１の補助記憶装置１０５にアプリケーション１０５１として格納されている。ユーザーはキーボード１０３１やタッチパネル／マウスなどに代表されるポインティングデバイス１０３２などといった入力装置を使用して、出力装置のモニタ１０４１に映し出されたＧＤＩ印刷アプリケーション２０１（以下、ＧＤＩアプリと略す）、もしくはＸＰＳ印刷アプリケーションプログラム２０２（以下、ＸＰＳアプリと略す）から印刷処理を実行する。印刷処理はプリンターの選択、印刷設定の作成、描画データの変換と３つの処理を順番に行うことで実行する。
【００２２】
まずは、印刷したいプリンター１０４２の選択をする。ユーザーから見るとプリンター１０４２の選択は、印刷を実行するプリンター１０４２に対応したプリンタードライバー１０５２を選択することと同義である。１０５２の選択には、不図示のプリントキューを利用する。
【００２３】
次に印刷設定を作成する。印刷設定はまず、アプリケーション１０５１が印刷設定用のメモリ領域をＲＡＭ１０２２に確保する。そして、アプリケーション１０５１は、プリンタードライバー１０５２のコンフィギュレーションモジュール２０４を呼び出して、印刷設定データを作成して格納する。ＧＤＩアプリ２０１では印刷設定データとしてバイナリのＤＥＶＭＯＤＥ構造体２０３を用い、ＸＰＳアプリ２０２ではマークアップ言語のＸＭＬで記載されたＰｒｉｎｔＴｉｃｋｅｔ２０４を用いる。ＤＥＶＭＯＤＥ構造体２０３は、オペレーティングシステム１０５３が定義する標準領域とプリンタードライバーが独自で定義する拡張領域を持つ。ＰｒｉｎｔＴｉｃｋｅｔ２０４は、ＸＭＬ形式で記述された印刷設定情報で、標準領域と拡張領域は名前空間によって記載が分かれている。
【００２４】
ＰｒｉｎｔＴｉｃｋｅｔ２０４について標準領域に該当するオペレーティングシステムによって定義されたＰｒｉｎｔＳｃｈｅｍａのことをＰｕｂｌｉｃＳｃｈｅｍａと呼ぶこととする。ＰｒｉｎｔＴｉｃｋｅｔ２０４について拡張領域に該当するプリンタードライバーが独自で定義したＰｒｉｎｔＳｃｈｅｍａのことをＰｒｉｖａｔｅＳｃｈｅｍａと呼ぶこととする。印刷設定データには機種固有の情報も含まれているので、コンフィギュレーションモジュール２０８は、機種依存ファイル２０９を利用して、印刷設定データを作成する。このＤＥＶＭＯＤＥ構造体２０３もしくはＰｒｉｎｔＴｉｃｋｅｔ２０４が印刷設定を保持しており、アプリケーションが直接、値を書き換えることで印刷設定を変更する。
【００２５】
機種依存ファイル２０９は、ＧＰＤと呼ばれる印刷設定定義ファイルを指し、図３のようにテキストベースで記載されている。さらに、機種依存ファイル２０９には「禁則」の定義を記載することができる。例えば、Ｍｉｃｒｏｓｏｆｔ（商標登録）が定義した記述法に基づき、ＩｎｖａｌｉｄＣｏｍｂｉｎａｔｉｏｎの項目に、同時に設定できない印刷設定の情報を記載することで、ユーザーに対して禁則機能を提供することができる。ここで言うユーザーに同時に設定できない印刷設定とは、デバイスの機能として提供できないもののほかに、意図的にユーザーに使用してほしくない項目も含まれる。また、印刷設定編集モジュール２０８１にて禁則解決処理を実現することも可能である。ＤＥＶＭＯＤＥ構造体２０３からＰｒｉｎｔＴｉｃｋｅｔ２０４への変換処理の際に、任意の設定がされていた場合に特定の印刷設定をＰｒｉｎｔＴｉｃｋｅｔ２０４へ反映することで禁則処理を実現できる。
【００２６】
またこの機種依存ファイル２０９である印刷設定定義ファイルには、デバイスの能力やプリントキューに紐づくＱｕｅｕｅＰｒｏｐｅｒｔｙＢａｇの定義を記載することができる。図３のＡｄｍｉｎＩｎｆｏＡｌｗａｙｓＤｕｐｌｅｘ（３１０）に記載されたＦｅａｔｕｒｅＴｙｐｅにＰＲＩＮＴＥＲ＿ＰＲＯＰＥＲＴＹ（３１５）と記載することで、ここに記載された内容がＱｕｅｕｅＰｒｏｐｅｒｔｙＢａｇの定義となる。そのため、図３の最下部のようにＩｎｖａｌｉｄＣｏｍｂｉｎａｔｉｏｎの項目にＱｕｅｕｅＰｒｏｐｅｒｔｙＢａｇに定義される項目と印刷設定の禁則を記述することができ、ＱｕｅｕｅＰｒｏｐｅｒｔｙＢａｇと印刷設定の禁則を実現することも可能である。
【００２７】
図３のようにＧＰＤを定義した場合、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ４００（図４）およびＰｒｉｎＴｉｃｋｅｔ２０４（図５）がコンフィギュレーションモジュール２０８によって生成される。ＧＰＤに記載した内容とＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ４００やＰｒｉｎｔＴｉｃｋｅｔ２０４は１対１の関係で表現される。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ４００やＰｒｉｎｔＴｉｃｋｅｔ２０４は印刷設定編集モジュール２０８１やプリンターエクステンション２１０、ＧＤＩｔｏＸＰＳ編集モジュール２０７などの様々なモジュール間でやり取りを行うデータである。
【００２８】
これら禁則情報も含めたプリンター１０４２に依存した専用の設定は、プリンターエクステンション２１０が持つユーザーインターフェースで設定する。プリンターエクステンション２１０は、プリンタードライバー１０５２の一種ではあるが、別のアプリケーションとしてインストールを行う。プリンタードライバー１０５２は、ユーザーインターフェースの設定に従い、ＤＥＶＭＯＤＥ構造体２０３もしくはＰｒｉｎｔＴｉｃｋｅｔ２０４のプリンター１０４２に依存した設定を変更する。ＰｒｉｎｔＴｉｃｋｅｔ２０４は印刷設定がＸＭＬ形式で記述されているので、ＸＰＳアプリ２０２がすべての設定値を直接変更して書き換えることは容易だが、プリンターエクステンション２１０のユーザーインターフェースを使って設定変更してもかまわない。印刷設定は文書印刷のたびに作成するが、プリンター１０４２のオプション機器や、ユーザーごとの環境設定など設定を保持しておきたいものは、ユーザーインターフェースがオペレーティングシステムのレジストリデータベース２０５に保存する。レジストリデータベース２０５が使用できないときは、ユーザーインターフェースは、アプリケーションデータ２２０に設定を保存する。印刷設定のデフォルト値はオペレーティングシステムのプリントマネージャ２１８が、レジストリデータベース２０５に保存する。レジストリデータベース２０５や、アプリケーションデータ２２０は、補助記憶装置１０５に保存される。最後に描画データの変換を行う。
【００２９】
印刷設定が確定したら、ユーザーはアプリケーションから印刷処理を実行する。ＧＤＩアプリ２０１から印刷する場合は、プリンタードライバーの形態を取るＧＤＩｔｏＸＰＳ変換モジュール２０７に描画データが送られ、ＸＰＳスプールファイル２０６が作成される。このときＧＤＩｔｏＸＰＳ変換モジュール２０７はコンフィギュレーションモジュール２０８を呼び出し、印刷設定をＤＥＶＭＯＤＥ構造体２０３からＰｒｉｎｔＴｉｃｋｅｔ２０４に変換する。変換する際には、印刷設定編集モジュール２０８１が使用される。ＸＰＳアプリ２０２から印刷する場合は、ＸＰＳファイルをＸＰＳアプリ自身が生成するのと、オペレーティングシステムがＸＰＳアプリからの描画命令に応じてＸＰＳファイルを生成するのと２通りの方法がある。どちらの方法であっても、印刷の途中でＸＰＳスプールファイル２０６を生成する。
【００３０】
ＸＰＳスプールファイル２０６が生成されたら、プリントフィルタパイプライン２１１に処理が渡される。プリントフィルタパイプライン２１１は複数のフィルタを通すことで印刷が行われる仕組みで、フィルタコンフィギュレーションファイル２１６でフィルタの数や順番を制御する。プリントフィルタパイプライン２１１で動作するフィルタパイプラインマネージャ２１２はフィルタコンフィギュレーションファイル２１６に従って、この実施例ではレイアウトフィルタ２１４、レンダラフィルタ２１５の順に処理を行う。フィルタはプリンタードライバー１０５２の構成によって、数や種類が異なる。印刷処理はＸＰＳスプールファイル２０６をフィルタに受け渡すことで行われ、フィルタがそれぞれＸＰＳスプールファイル２０６を加工し次のフィルタに渡していくことで処理が進む。
【００３１】
レイアウトフィルタ２１４は、倍率の変更や製本の面付けレイアウトやスタンプなどレイアウトに関する処理を行う。レンダラフィルタ２１５では、ＸＰＳスプールファイル２０６をレンダリングしてＰＤＬ（ＰａｇｅＤｅｓｃｒｉｐｔｉｏｎＬａｎｇｕａｇｅ）に変換する。ＰＤＬデータは印刷処理のスケジュール管理を行うプリントマネージャ２１８で管理され、キュー（待ち行列）に印刷ジョブが次々と登録される。プリンター１０４２が印刷できる状態になったら、キューに登録した順にポートモニター２１９を通して送信する。このようにして、アプリケーションからの印刷データをＰＤＬデータに変換することがプリンタードライバーの主な役目であり、印刷処理が行われる。
【００３２】
フィルタパイプライン２１１は複数のフィルタを通じることで印刷が行われる仕組みだが、各フィルタ内でＰｒｉｎｔＴｉｃｋｅｔ２０４の禁則解決処理を行うかどうかは各フィルタの実装に依存する。ただし、印刷パスによっては各フィルタに到達される前に禁則解決処理がされているため、禁則解決処理が不要な場合がある。禁則解決処理に関しては、禁則が発生していない場合にもＰｒｉｎｔＴｉｃｋｅｔ２０４を精査するために処理時間がかかるため、不必要な禁則解決処理は避ける必要がある。そのため本実施形態では、各フィルタにて基本的に禁則解決処理を行わないことを想定し、特定の印刷パスでユーザーの意図しない出力がされてしまうことを避けるため、最低限の禁則解決処理でユーザーの意図した出力にするための手段について、図６、図７のフローチャートを用いて説明する。
【００３３】
まず、図６のフローチャートについて説明する。本フローチャートはＸＰＳスプールデータにアクセスする先頭のフィルタで行う処理について記載している。本実施形態ではレイアウトフィルタ２１４としているが、レイアウトフィルタ２１４より前方の当フローチャートの機能を持った単独のフィルタであっても構わない。本フローチャートの処理を行うモジュールはレイアウトフィルタ２１４であり、以下の説明において記載がない限り主語はレイアウトフィルタ２１４である。レイアウトフィルタ２１４は、補助記憶装置１０５からＲＡＭ１０２２にロードされ、ＣＰＵ１０１によって実行される。
【００３４】
ステップＳ６００において、フィルタパイプライン２１１によって呼び出されることにより、レイアウトフィルタ２１４の処理を開始する。
【００３５】
ステップＳ６０１において、フィルタパイプライン２１１から渡されるＸＰＳスプールファイル２０５を受信する。
【００３６】
ステップＳ６０２において、受信したＸＰＳスプールファイル２０５のデータを解析する。具体的には、受信したＸＰＳスプールファイル２０５がどのモジュールを通じて生成されたかの情報を抽出する。図８、図９は実際の受信したＸＰＳスプールファイル２０５のデータの一部である。ＸＰＳデータ内には生成したモジュールの情報が記載されており、例えば、８０１のような「Ｍｉｃｒｏｓｏｆｔ  ＸＰＳ  Ｄｏｃｕｍｅｎｔ  Ｃｏｎｖｅｒｔｅｒ  （ＭＸＤＣ）  Ｇｅｎｅｒａｔｅｄ」情報があれば、これはＧＤＩＴｏＸＰＳ変換が動作したと判断し、ＧＤＩアプリケーションからの印刷であると判断できる。また、９０１のような「Ｇｅｎｅｒａｔｅｄ  Ｂｙ：  Ｍｉｃｒｏｓｏｆｔ  Ｘｐｓ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ」という情報があれば、ＸＰＳアプリケーションがＷｉｎｄｏｗｓのＡＰＩを利用してＸＰＳ生成を行ったと判断でき、ＸＰＳアプリケーションからの印刷であると判断できる。
【００３７】
ステップＳ６０３において、上記解析結果をもとに禁則解決処理が必要かどうかを判断する。本実施形態では、ＸＰＳアプリケーションであると判断した場合に禁則解決処理が必要であると判断する。その場合ステップＳ６０４へ進む。禁則解決処理が必要でないと判断した場合には、ステップＳ６０５へ進む。
【００３８】
ステップＳ６０４において、プロパティバッグ２１７に禁則解決処理が必要である情報を保存し、ステップＳ６０５へ進む。
【００３９】
ステップＳ６０５において、レイアウトフィルタ２１４で行うレイアウト処理を行う。
【００４０】
ステップＳ６０６において、レイアウトフィルタ２１４の処理を終了する。
【００４１】
次に、図７のフローチャートについて説明する。本フローチャートは図６で示したフィルタの後続のフィルタが対象となる。本実施形態ではレンダラフィルタ２１５としているが、後続のフィルタであればどのフィルタで実現しても構わない。本フローチャートの処理を行うモジュールはレンダラフィルタ２１５であり、以下の説明において記載がない限り主語はレンダラフィルタ２１５である。レンダラフィルタ２１５は、補助記憶装置１０５からＲＡＭ１０２２にロードされ、ＣＰＵ１０１によって実行される。
【００４２】
ステップＳ７００において、フィルタパイプライン２１１によって呼び出されることにより、レンダラフィルタ２１５の処理を開始する。
【００４３】
ステップＳ７０１において、フィルタパイプライン２１１から渡されるＸＰＳスプールファイル２０６を受信する。フィルタパイプラインマネージャ２１２は、各フィルタの処理を管理しており、フィルタ間の処理は非同期で行われている。そのため、レイアウトフィルタ２１４の処理が終了していない場合にも、ＸＰＳスプールファイル２０６がレンダラフィルタ２１５に渡されることにより、レンダラフィルタ２１５の処理を進めることができる。
【００４４】
ステップＳ７０２において、プロパティバッグ２１７に保存された情報を取得する。
【００４５】
ステップＳ７０３において、プロパティバッグ２１７に保存された情報を参照し、禁則解決処理をする必要があるかを判断する。本実施形態では、プロパティバッグ２１７に情報が存在した場合に禁則解決処理が必要と判断する。もし禁則解決処理が必要と判断した場合には、ステップＳ７０４へ進む。禁則解決処理が必要ないと判断した場合は、ステップＳ７０５へ進む。
【００４６】
ステップＳ７０４において、禁則解決処理が必要と判断した場合、ＰｒｉｎｔＴｉｃｋｅｔ２０４に対して禁則解決処理を行う。ＸＰＳスプールファイル２０６には、複数のＰｒｉｎｔＴｉｃｋｅｔ２０４が付随している場合がある。例えば、ページ間で印刷設定が異なるような印刷データであれば、適用範囲がＰａｇｅの印刷設定に限定されたＰｒｉｎｔＴｉｃｋｅｔ２０４がページ毎に付随される。本実施形態では、その各ＰｒｉｎｔＴｉｃｋｅｔ２０４に対して禁則解決処理を行うこととする。そして、ステップＳ７０５へ進む。
【００４７】
ステップＳ７０５において、レンダリング処理（レンダリングしてＰＤＬに変換する処理）を行う。
【００４８】
ステップＳ７０６において、レンダラフィルタ２１５の処理を終了する。
【００４９】
上記処理によって、印刷アプリケーションの種類に応じて最低限必要な禁則解決処理で動作することにより、適切な禁則解決処理が行われ、印刷出力時間を短縮しつつユーザーが意図した印刷結果を得られることができる。
【符号の説明】
【００５０】
２０４  ＰｒｉｎｔＴｉｃｋｅｔ、２０６  ＸＰＳスプールファイル、
２１７  プロパティバッグ
【図１】
2018180750.tif 000003
【図２】
2018180750.tif 000004
【図３】
2018180750.tif 000005
【図４】
2018180750.tif 000006
【図５】
2018180750.tif 000007
【図６】
2018180750.tif 000008
【図７】
2018180750.tif 000009
【図８】
2018180750.tif 000010
【図９】
2018180750.tif 000011