(57)【特許請求の範囲】
【請求項１】
ＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）形式で記述されたＸＰＳファイルの記述データに、第１のフィルターの処理内容をＸＰＳ形式に従う記述により示す第１の記述を挿入する第１フィルター処理と、前記第１フィルター処理の後の記述データに、第２のフィルターの処理内容をＸＰＳ形式に従う記述により示す第２の記述を挿入する第２フィルター処理と、を行うフィルター処理部と、
前記第２フィルター処理の後の前記記述データを解釈して印刷装置が処理可能な印刷データへ変換する印刷データ生成部と、を備え、
前記フィルター処理部は、前記第１フィルター処理では、前記第１のフィルターに対応付けた識別情報とともに前記第１の記述を前記記述データへ挿入し、前記第２フィルター処理では、前記第２の記述を挿入する前記記述データ内の位置を前記識別情報に基づいて決定し、当該決定した位置へ前記第２の記述を挿入する、ことを特徴とする印刷制御装置。
【請求項２】
前記フィルター処理部は、前記第１フィルター処理を複数回繰り返すことにより、機能が互いに異なる複数の前記第１のフィルターのそれぞれについて、当該第１のフィルターに対応する前記第１の記述と前記識別情報とを前記記述データへ挿入することを特徴とする請求項１に記載の印刷制御装置。
【請求項３】
前記フィルター処理部は、前記第２フィルター処理では、前記第２のフィルターの機能に応じて、前記第２の記述を挿入すべき位置を示す前記識別情報を探索し、当該探索した識別情報に基づいて決定した位置へ前記第２の記述を挿入することを特徴とする請求項１または請求項２に記載の印刷制御装置。
【請求項４】
前記フィルター処理部は、前記第２のフィルターの機能が論理ページを処理単位とする機能であるか物理ページを処理単位とする機能であるかに応じて、探索対象とする前記識別情報を決定することを特徴とする請求項３に記載の印刷制御装置。
【請求項５】
前記識別情報は、前記第１のフィルターの機能を及ぼす描画をＸＰＳ形式に従う記述により定義するキャンバス要素に付す名前であることを特徴とする請求項１〜請求項４のいずれかに記載の印刷制御装置。
【請求項６】
前記第２フィルター処理の後の前記記述データに基づく画像をプレビュー表示させるプレビュー表示制御部を更に備え、
前記フィルター処理部は、前記プレビュー表示に応じて外部から入力される前記第２フィルター処理の再試行の指示に従って、実行済みの前記第２フィルター処理を取り消すとともに当該実行済みの第２フィルター処理で挿入した前記記述データ内の位置とは異なる位置へ前記第２の記述を挿入する、ことを特徴とする請求項１〜請求項４のいずれかに記載の印刷制御装置。
【請求項７】
印刷制御プログラムであって、
ＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）形式で記述されたＸＰＳファイルの記述データに、第１のフィルターの処理内容をＸＰＳ形式に従う記述により示す第１の記述を挿入する第１フィルター処理と、
前記第１フィルター処理の後の記述データに、第２のフィルターの処理内容をＸＰＳ形式に従う記述により示す第２の記述を挿入する第２フィルター処理と、
前記第２フィルター処理の後の前記記述データを解釈して印刷装置が処理可能な印刷データへ変換する印刷データ生成処理と、をコンピューターに実行させ、
前記第１フィルター処理では、前記第１のフィルターに対応付けた識別情報とともに前記第１の記述を前記記述データへ挿入し、前記第２フィルター処理では、前記第２の記述を挿入する前記記述データ内の位置を前記識別情報に基づいて決定し、当該決定した位置へ前記第２の記述を挿入する、ことを特徴とする印刷制御プログラム。
【請求項８】
ＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）形式で記述されたＸＰＳファイルの記述データに、第１のフィルターの処理内容をＸＰＳ形式に従う記述により示す第１の記述を挿入する第１フィルター処理と、前記第１フィルター処理の後の記述データに、第２のフィルターの処理内容をＸＰＳ形式に従う記述により示す第２の記述を挿入する第２フィルター処理と、を行うフィルター処理工程と、
前記第２フィルター処理の後の前記記述データを解釈して印刷装置が処理可能な印刷データへ変換する印刷データ生成工程と、を備え、
前記第１フィルター処理では、前記第１のフィルターに対応付けた識別情報とともに前記第１の記述を前記記述データへ挿入し、前記第２フィルター処理では、前記第２の記述を挿入する前記記述データ内の位置を前記識別情報に基づいて決定し、当該決定した位置へ前記第２の記述を挿入する、ことを特徴とする印刷制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷制御装置、印刷制御プログラムおよび印刷制御方法に関する。
【背景技術】
【０００２】
プリンタードライバーが、ＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）仕様で記述されたＸＰＳファイルを対象として、各印刷設定に対応した複数のフィルターを用いて処理することにより、各印刷設定を適用した印刷データを生成する構成が知られている（例えば、特許文献１参照）。ここで言うフィルターとは、特定の機能に特化したプログラムであり、一つのフィルターは、例えば、画像の回転機能、画像の拡大縮小機能、画像へのスタンプマークの重畳機能、Ｎｕｐ機能（一枚の媒体の一面にＮページ分の画像を割り付ける機能）等といった様々な機能のうちの一つを実現させる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０‐７９７９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＸＰＳファイルを対象として複数のフィルターによる処理を実行するプリンタードライバーは、複数のフィルターによるパイプライン（フィルターパイプライン）を構成し、フィルターパイプラインによりＸＰＳファイルを処理することで、各印刷設定を効率的に適用する。ここで、オペレーティングシステム（以下、ＯＳ）としての、Ｍｉｃｒｏｓｏｆｔ社（登録商標）が提供するＷｉｎｄｏｗｓ（登録商標）、において動作するＶｅｒｓｉｏｎ４プリンタードライバー（以下、Ｖ４プリンタードライバー）が知られている。ベンダーは、Ｖ４プリンタードライバーの構築に関してＭｉｃｒｏｓｏｆｔ社が定めたアーキテクチャーに基づいて、Ｖ４プリンタードライバーを作成し、市場に流通させる。このアーキテクチャーによると、フィルターパイプラインでは、ＸＰＳファイルを処理するフィルターの順序が予め固定的に決められている。このようにフィルターの処理順に制約があると、処理順が後であるフィルターによる処理へ、それよりも処理順が前であるフィルターによる処理の効果が及ばないことがある。そのため、各印刷設定を適用した印刷データに基づく出力結果が、ユーザーが期待する出力結果と異なることがあった。
【０００５】
本発明は上述の課題に鑑みてなされたものであり、複数のフィルターによる処理を施したときにより適切な出力結果を得ることが可能な印刷制御装置、印刷制御プログラムおよび印刷制御方法を提供する。
【課題を解決するための手段】
【０００６】
本発明の態様の一つは、印刷制御装置は、第１のフィルターの処理内容を示す第１の記述を、画像を表現するために所定の形式で記述された記述データへ挿入する第１フィルター処理と、当該第１フィルター処理の後に、当該記述データへ第２のフィルターの処理内容を示す第２の記述を挿入する第２フィルター処理と、を行うフィルター処理部と、前記第２フィルター処理の後の前記記述データを解釈して印刷装置が処理可能な印刷データへ変換する印刷データ生成部と、を備え、前記フィルター処理部は、前記第１フィルター処理では、前記第１のフィルターに対応付けた識別情報とともに前記第１の記述を前記記述データへ挿入し、前記第２フィルター処理では、前記第２の記述を挿入する前記記述データ内の位置を前記識別情報に基づいて決定し、当該決定した位置へ前記第２の記述を挿入する。
【０００７】
当該構成によれば、第２のフィルターの処理内容を示す第２の記述は、記述データへの挿入位置が、第１のフィルターの処理内容を示す第１の記述とともに挿入されている前記識別情報に基づいて決定される。これにより、第１のフィルターよりも処理順が後の第２のフィルターの処理へ、第１のフィルターによる処理の効果を及ぼすことができ、出力結果に対するユーザーの満足度が向上する。例えば、前記識別情報は、前記第１のフィルターの機能を及ぼす描画を定義するキャンバス要素に付す名前である。
【０００８】
本発明の態様の一つは、前記フィルター処理部は、前記第１フィルター処理を複数回繰り返すことにより、機能が互いに異なる複数の前記第１のフィルターのそれぞれについて、当該第１のフィルターに対応する前記第１の記述と前記識別情報とを前記記述データへ挿入するとしてもよい。
当該構成によれば、第２の記述を挿入可能な位置が第１のフィルターの数に応じて複数存在するため、最適な挿入位置を決定することができる。
【０００９】
本発明の態様の一つは、前記フィルター処理部は、前記第２フィルター処理では、前記第２のフィルターの機能に応じて、前記第２の記述を挿入すべき位置を示す前記識別情報を探索し、当該探索した識別情報に基づいて決定した位置へ前記第２の記述を挿入するとしてもよい。
当該構成によれば、第２のフィルターの機能に応じて、最適な挿入位置を容易に探索し、決定することができる。なお、前記フィルター処理部は、前記第２のフィルターの機能が論理ページを処理単位とする機能であるか物理ページを処理単位とする機能であるかに応じて、探索対象とする前記識別情報を決定するとしてもよい。
【００１０】
本発明の態様の一つは、前記第２フィルター処理の後の前記記述データに基づく画像をプレビュー表示させるプレビュー表示制御部を更に備え、前記フィルター処理部は、前記プレビュー表示に応じて外部から入力される前記第２フィルター処理の再試行の指示に従って、実行済みの前記第２フィルター処理を取り消すとともに当該実行済みの第２フィルター処理で挿入した前記記述データ内の位置とは異なる位置へ前記第２の記述を挿入する、としてもよい。
当該構成によれば、ユーザーにプレビュー表示を確認させ、場合によっては第２フィルター処理を再試行することで、最終的にユーザーが所望する出力結果を確実に得ることができる。
【００１１】
本発明の技術的思想は、印刷制御装置という物以外によっても実現される。例えば、本発明は、上述したような印刷制御装置の各部が実行する工程を含んだ方法（印刷制御方法）や、当該工程をハードウェア（コンピューター）に実行させるプログラム（印刷制御プログラム）や、当該プログラムを記憶したコンピューター読み取り可能な記憶媒体、といった各種カテゴリーにて実現されてもよい。
【図面の簡単な説明】
【００１２】
【図１】印刷制御装置の構成を例示するブロック図。
【図２】印刷制御処理を示すフローチャート。
【図３】ステップＳ１４０の詳細を示すフローチャート。
【図４】第１フィルター処理が複数回実行されたＸＰＳファイルの一部を例示する図。
【図５】第２フィルター処理が実行されたＸＰＳファイルの一部を例示する図。
【図６】本実施形態による効果の一例を説明するための図。
【図７】第２フィルター処理が実行されたＸＰＳファイルの一部の他の例を示す図。
【図８】変形例にかかる印刷制御処理を示すフローチャート。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら本発明の実施形態を説明する。
１．印刷制御装置の概略：
図１は、本実施形態にかかる印刷制御装置１０の構成を例示するブロック図である。印刷制御装置１０は、例えば、ＲＡＭ、ＲＯＭ、ＣＰＵ等を備えるＩＣやその他の記憶媒体等による制御部２０を備える。制御部２０は、ＲＯＭやその他の記憶媒体に記録されたプログラム（例えば、アプリケーション１３やプリンタードライバー１２等）に従った処理をＯＳ１１の下で実行することができる。ＯＳ１１が管理する環境下に、Ｖ４プリンタードライバーの一種であるプリンタードライバー（以下、ドライバー）１２がインストールされている。ドライバー１２は、本発明にかかる印刷制御プログラムの一例に該当する。ＯＳ１１は、Ｖ４プリンタードライバーが動作可能なＯＳを指しており、一例として、Ｗｉｎｄｏｗｓ８が挙げられる。
【００１４】
印刷制御装置１０は、図示しないインターフェースを備えており、印刷制御装置１０には当該インターフェースを介して入力部５０と表示部５１とプリンター５２とが接続される。入力部５０はユーザーの入力操作を受け付けるための入力装置であり、マウス、キーボード、タッチパネル、各種入力キー等が該当し得る。表示部５１は、制御部２０が出力する信号に応じて任意の画像を表示するディスプレイである。プリンター５２は制御部２０が出力する印刷データに基づいて印刷データが示す画像を印刷する印刷装置であり、本実施形態においては制御部２０が出力するレンダリング後の印刷データに基づいて印刷を実行する。
【００１５】
印刷制御装置１０は、例えば、ＰＣ（パーソナルコンピューター）、タブレット型端末、スマートフォン等といった、プリンター５２に対する制御装置となり得る様々な装置によって実現される。また、印刷制御装置１０に含まれる構成の一部（少なくとも制御部２０を含む構成）を指して、本発明にかかる印刷制御装置と把握してもよい。印刷制御装置１０、入力部５０、表示部５１およびプリンター５２は、それぞれが独立した製品であってもよいし、一体的に構成された一製品であってもよい。例えば、印刷制御装置１０、入力部５０および表示部５１はいずれも、プリンター５２の一部であるとしてもよい。この場合、プリンター５２を、印刷制御装置と称することができる。
【００１６】
アプリケーション１３は、入力部５０による操作内容を受け付けて文章やＣＧや写真等を要素として含み得る画像ファイル（例えば、ＸＰＳファイル）を生成する機能を制御部２０に実現させるモジュールである。ドライバー１２は、入力部５０による各印刷設定を受け付ける機能や、印刷設定の適用処理を行う機能を制御部２０に実現させるモジュールである。すなわち、アプリケーション１３の処理に基づいてユーザーが印刷実行指示を行うと、制御部２０は当該印刷実行指示にかかる印刷対象を示すＸＰＳファイルを処理対象として、ドライバー１２による処理を開始する。このようなＸＰＳファイルは、画像を表現するために所定の形式で記述された記述データ、の一例に該当する。
【００１７】
ドライバー１２は、各印刷設定に対応した複数のフィルターＦを備える。ＸＰＳファイルを対象とした処理において、複数のフィルターＦのうちいずれのフィルターＦを使用するかは、ユーザーによる印刷設定の指示に依存する。ただし、いずれのフィルターＦを使用する場合であっても、使用するフィルターＦ間における処理順序は予めドライバー１２が規定している。つまり、ドライバー１２は、ユーザーによる印刷設定の指示に応じて、そのとき使用すべき（有効化すべき）複数のフィルターＦによるフィルターパイプラインを、ＸＰＳファイルを対象とした処理に用いる。この意味で、ドライバー１２の機能の一部を指して、フィルターパイプラインマネージャー等と称することができる。
【００１８】
２．印刷制御処理の説明：
図２は、制御部２０がドライバー１２を実行することにより実現する、つまり制御部２０とドライバー１２とが協働して実現する印刷制御処理（印刷制御方法）をフローチャートにより示している。当該フローチャートは、アプリケーション１３により印刷対象を示すＸＰＳファイルが生成され、ユーザーが入力部５０を操作することにより当該印刷対象についての印刷実行指示を入力したタイミングで開始される。
【００１９】
ドライバー１２は、印刷対象を示すＸＰＳファイルをアプリケーション１３から入力し（ステップＳ１００）、かつ、印刷設定の内容を取得する（ステップＳ１１０）。ステップＳ１００で入力したＸＰＳファイルが表現する画像をオリジナル画像とも呼ぶ。ステップＳ１１０で取得する印刷設定の内容とは、ユーザーが印刷実行指示を入力する前に入力部５０を操作することにより入力した印刷設定である。例えば、ドライバー１２は、印刷実行指示の入力を受け付けるまでの過程で、印刷設定の入力を受け付けるための所定のユーザーインターフェース（ＵＩ）画面を表示部５１に表示させることにより、ユーザーに印刷設定の入力を促す。これにより、ＵＩ画面に対するユーザーの操作を通じて、印刷設定の内容を取得することができる。
【００２０】
次に、ドライバー１２は、複数のフィルターＦのうち、予め規定している処理順が現時点で最も先のフィルターＦを選択し（ステップＳ１２０）、当該選択したフィルターＦをフィルターパイプラインの中で有効化すべきか否かを、ステップＳ１１０で取得した印刷設定の内容に基づいて判定する（ステップＳ１３０）。ここでは、便宜上、フィルターＦを、フィルターＦｍとも表記する（図１参照）。数値ｍは、１〜Ｍの自然数（ただし、１＜Ｍ）のいずれか一つであり、数値ｍが小さいフィルターＦｍほど、処理順序が先のフィルターＦであることを意味する。ステップＳ１１０の後に最初に実行するステップＳ１２０では、必ずフィルターＦ１を選択する。それ以降のステップＳ１２０では、その時点で未選択のフィルターＦｍのうちｍが最小のものを選択する。ステップＳ１３０では、ドライバー１２は、選択した（直近のステップＳ１２０で選択した）フィルターＦｍが、ステップＳ１１０で取得した印刷設定のいずれかを実現するための機能を有するフィルターであれば、当該選択したフィルターＦｍを有効化すると判定し（ステップＳ１３０において“Ｙｅｓ”）、ステップＳ１４０へ進む。
【００２１】
一つの具体例として、ステップＳ１１０において、ドライバー１２は、画像の回転、画像の拡大／縮小、画像の左右反転、および、特定のスタンプマークの重畳、という印刷設定の内容を取得したと仮定する。複数のフィルターＦｍの中には、画像を９０°回転させる回転機能フィルター、画像を拡大／縮小する拡大縮小機能フィルター、画像を左右反転させる反転機能フィルター、特定のスタンプマークを縦向きで画像へ重畳するスタンプマーク重畳機能フィルター、等といった様々なフィルターＦｍが含まれている。特定のスタンプマークとは、例えば、“丸秘”、“社外秘”、“コピー禁止”等をユーザーへ伝えるためのマークや文字である。このような具体例に従えば、ステップＳ１３０では、ドライバー１２は、選択したフィルターＦｍが、回転機能フィルター、拡大縮小機能フィルター、反転機能フィルター、スタンプマーク重畳機能フィルター、のいずれかに該当する場合に、当該選択したフィルターＦｍを有効化すると判定する。逆に、選択したフィルターＦｍが、回転機能フィルター、拡大縮小機能フィルター、反転機能フィルター、スタンプマーク重畳機能フィルター、のいずれにも該当しない場合には、当該選択したフィルターＦｍを無効化すると判定する（ステップＳ１３０において“Ｎｏ”）。ステップＳ１３０において、フィルターＦｍの無効化と判定した場合は、ドライバー１２は、ステップＳ１４０へ進まずに、ステップＳ１５０へ進む。
【００２２】
ステップＳ１４０では、ドライバー１２は、前記入力したＸＰＳファイルへ、ステップＳ１３０で有効化すると判定したフィルターＦｍによる処理を行う。つまり、ステップＳ１３０で有効化すると判定したフィルターＦｍの処理内容を示す記述を、前記入力したＸＰＳファイル（記述データ）へ挿入するフィルター処理を行う。
【００２３】
ステップＳ１５０では、ドライバー１２は、処理順序が最後のフィルターＦｍ、つまりフィルターＦＭをステップＳ１２０で選択済みであるか否か判定し、未選択であれば（ステップＳ１５０において“Ｎｏ”）、ステップＳ１２０に戻り、上述したステップＳ１２０以降の処理を繰り返す。一方、処理順序が最後のフィルターＦＭをステップＳ１２０で選択済みであれば（ステップＳ１５０において“Ｙｅｓ”）、ドライバー１２は、ステップＳ１６０へ進む。
【００２４】
前記具体例に従えば、ステップＳ１５０において“Ｙｅｓ”と判定した時点で、前記入力したＸＰＳファイルへ、回転機能フィルター、拡大縮小機能フィルター、反転機能フィルター、スタンプマーク重畳機能フィルター、という４つのフィルターＦｍそれぞれによるフィルター処理が行われたことになる。ここでは、回転機能フィルター、拡大縮小機能フィルター、反転機能フィルター、スタンプマーク重畳機能フィルター、という順序で前記入力したＸＰＳファイルへのフィルター処理（フィルターＦｍの処理内容を示す記述の挿入）が行われたとする。
【００２５】
本実施形態では、前記具体例における回転機能フィルター、拡大縮小機能フィルター、反転機能フィルター、スタンプマーク重畳機能フィルターのうち、回転機能フィルター、拡大縮小機能フィルターおよび反転機能フィルターを、それぞれ第１のフィルターとも呼び、スタンプマーク重畳機能フィルターを、第２のフィルターとも呼ぶ。第２のフィルターは、基本的には、前記入力したＸＰＳファイルが表現するオリジナル画像へ、他の画像や文字等を追加、重畳する機能を有するフィルターである。第２のフィルターには、スタンプマーク重畳機能フィルターの他にも、ページの上端／下端にヘッダー／フッターを追加するヘッダーフッター追加機能フィルターや、画像へ特定の透かし画像を重畳する透かし重畳機能フィルター、等が含まれる。一方、第１のフィルターは、第２のフィルターに該当しないフィルターであり、回転機能フィルター、拡大縮小機能フィルター、反転機能フィルターの他、Ｎｕｐ機能を実現させるＮｕｐ機能フィルター等が該当する。
【００２６】
ドライバー１２が規定するフィルターＦｍ間の処理順序によれば、第２のフィルターの処理順は、第１のフィルターよりも後である。また、ステップＳ１４０において、第１のフィルターの処理内容を示す記述（第１の記述）を前記入力したＸＰＳファイルへ挿入するフィルター処理を、第１フィルター処理と呼び、第２のフィルターの処理内容を示す記述（第２の記述）を前記入力したＸＰＳファイルへ挿入するフィルター処理を、第２フィルター処理と呼ぶ。つまり、第１フィルター処理の後に、第２フィルター処理が行われる。このようなステップＳ１４０を実現する点で、制御部２０は、フィルター処理部として機能すると言える。
【００２７】
ステップＳ１４０における第１フィルター処理、第２フィルター処理それぞれについて、図３〜５を用いて更に詳しい説明を行う。
図３は、ステップＳ１４０の詳細を示すフローチャートである。図３〜５の説明に際しても前記具体例を用いる。ドライバー１２は、ステップＳ１４１（第１フィルター処理）では、第１のフィルターに対応付けた識別情報とともに、当該第１のフィルターの処理内容を示す第１の記述を、前記入力したＸＰＳファイルへ挿入する。ここで言う第１のフィルターの具体例は、上述の回転機能フィルター、拡大縮小機能フィルター、反転機能フィルターであり、ドライバー１２は、これら３つのフィルター毎の第１フィルター処理を上述したフィルター間の順序に従って繰り返す（有効化した第１のフィルターの数だけステップＳ１４１を繰り返す）。つまり、前記具体例を前提とした場合、第１フィルター処理を複数回繰り返すことにより、機能が互いに異なる複数の第１のフィルターのそれぞれについて、当該第１のフィルターに対応する第１の記述と前記識別情報とを、前記入力したＸＰＳファイルへ挿入する。
【００２８】
次に、ドライバー１２は、ステップＳ１４２（第２フィルター処理）では、第２のフィルターの処理内容を示す第２の記述を挿入する前記入力したＸＰＳファイル内の位置を、前記識別情報に基づいて決定し、当該決定した位置へ第２の記述を挿入する。ここで言う第２のフィルターの具体例は、上述のスタンプマーク重畳機能フィルターである。
【００２９】
図４は、前記複数回のステップＳ１４１（第１フィルター処理）が実行された時点でのＸＰＳファイル３０の一部を例示している。図４において、ＸＰＳファイル３０に含まれる記述のうち、符号ｄ０で示した箇所（記述範囲ｄ０）は、前記入力したＸＰＳファイルが有する記述（の一部）であり、前記入力したＸＰＳファイルが表現する１ページ分のオリジナル画像に相当する記述である。
【００３０】
記述範囲ｄ０を上下から挟む位置に挿入された記述ｄ１ｕ，ｄ１ｂは、前記具体例において処理順序が最も先の第１のフィルターである回転機能フィルターの処理内容を示す第１の記述の例である。記述ｄ１ｕ，ｄ１ｂは、フィルターの機能を及ぼす描画を定義するキャンバス要素（Canvas, /Canvas）を有している。キャンバス要素とは、ＸＰＳの仕様で定義されている、描画を一まとめにするための要素である。このようなキャンバス要素を用いた記述ｄ１ｕ，ｄ１ｂを記述範囲ｄ０の上下に挿入することにより、記述範囲ｄ０が表現する描画全体に回転機能フィルターによる回転の効果が及ぶ。また、記述ｄ１ｕは、Name="EP LandscapeFilter"という記述を含んでいる。当該Name="EP LandscapeFilter"は、回転機能フィルターの機能を及ぼす描画を定義するキャンバス要素に付した名前（キャンバス要素のネーム属性）である。このような名前は、第１のフィルター（回転機能フィルター）に対応付けた識別情報の一例である。
【００３１】
同様に、記述ｄ１ｕ〜ｄ１ｂの範囲を上下から挟む位置に挿入された記述ｄ２ｕ，ｄ２ｂは、前記具体例において処理順序が回転機能フィルターの次である拡大縮小機能フィルターの処理内容を示す第１の記述の例である。記述ｄ２ｕ，ｄ２ｂも同様にキャンバス要素（Canvas, /Canvas）を有している。キャンバス要素を用いた記述ｄ２ｕ，ｄ２ｂを記述ｄ１ｕ〜ｄ１ｂの範囲の上下に挿入することにより、回転機能フィルターによる回転の効果が及ぶ範囲全体に、拡大縮小機能フィルターによる拡大／縮小の効果が及ぶ。また、記述ｄ２ｕは、Name="EP ScalingFilter"という記述を含んでいる。当該Name="EP ScalingFilter"は、拡大縮小機能フィルターの機能を及ぼす描画を定義するキャンバス要素に付した名前（キャンバス要素のネーム属性）である。このような名前は、第１のフィルター（拡大縮小機能フィルター）に対応付けた識別情報の一例である。
【００３２】
同様に、記述ｄ２ｕ〜ｄ２ｂの範囲を上下から挟む位置に挿入された記述ｄ３ｕ，ｄ３ｂは、前記具体例において処理順序が拡大縮小機能フィルターの次である反転機能フィルターの処理内容を示す第１の記述の例である。記述ｄ３ｕ，ｄ３ｂも同様にキャンバス要素（Canvas, /Canvas）を有している。キャンバス要素を用いた記述ｄ３ｕ，ｄ３ｂを記述ｄ２ｕ〜ｄ２ｂの範囲の上下に挿入することにより、拡大縮小機能フィルターによる拡大／縮小の効果が及ぶ範囲全体に、反転機能フィルターによる左右反転の効果が及ぶ。また、記述ｄ３ｕは、Name="EP MirrorFilter"という記述を含んでいる。当該Name="EP MirrorFilter"は、反転機能フィルターの機能を及ぼす描画を定義するキャンバス要素に付した名前（キャンバス要素のネーム属性）である。このような名前は、第１のフィルター（反転機能フィルター）に対応付けた識別情報の一例である。
【００３３】
図５は、ステップＳ１４２（第２フィルター処理）が実行された時点でのＸＰＳファイル３０の一部を例示している。図５を図４と比較すれば判るように、ステップＳ１４２により、符号ｄ４で示した箇所（記述範囲ｄ４）が更に挿入された。
具体的には、ドライバー１２は、ステップＳ１４２において、ＸＰＳファイル３０の記述全体をＤＯＭ（Document Object Model）ツリー化し、当該ＤＯＭツリーにおいて、所望の識別情報（前記ネーム属性）を、SelectSingleNode関数とXPathとを使用して探索する。SelectSingleNode関数とは、ＤＯＭツリーのノードを探索するための関数であり、XPathとは、当該探索の条件を示す文字列である。
【００３４】
本実施形態では、ドライバー１２は、第２のフィルターの機能に応じて探索すべきネーム属性というものを、予め規定したポリシーに基づいて決定する。前記具体例のように、第２のフィルターがスタンプマーク重畳機能フィルターである場合、ドライバー１２は、処理順序が最も先の第１のフィルターである回転機能フィルターに対応付けたネーム属性を、探索すべきネーム属性と決定する。そして、ドライバー１２は、回転機能フィルターに対応付けたネーム属性、すなわち"EP LandscapeFilter"を探索する（ネーム属性"EP LandscapeFilter"を有するCanvasノードを探索する）。このような探索の結果、ドライバー１２は、スタンプマーク重畳機能フィルターの処理内容を示す第２の記述（記述範囲ｄ４）を挿入すべき位置を、当該探索したネーム属性"EP LandscapeFilter"を有するCanvasノードの直後の位置（記述ｄ１ｕと記述範囲ｄ０との間）に決定し、当該決定した位置へ記述範囲ｄ４を挿入する。このような位置へ記述範囲ｄ４を挿入することにより、記述範囲ｄ０が表現する描画に特定のスタンプマークを縦向きに重畳した結果全体に、回転機能フィルターによる回転の効果を及ぼし、さらに拡大縮小機能フィルターによる拡大／縮小の効果を及ぼし、さらに反転機能フィルターによる左右反転の効果を及ぼすことができる。
【００３５】
図２の説明に戻る。ステップＳ１６０では、ドライバー１２は、第１フィルター処理および第２フィルター処理を終えたＸＰＳファイル（ＸＰＳファイル３０）へ所定のレンダリングフィルターを適用することによりレンダリングを実行する。レンダリングにより、ＸＭＬフォーマットをベースとしている現在のデータを解釈して、ビットマップデータ化、色変換処理、ハーフトーン処理、並べ替え処理等を実行し、プリンター５２が印刷を実行可能な印刷データを生成する。このようなステップＳ１６０を実現する点で、制御部２０は、印刷データ生成部として機能すると言える。そして、ドライバー１２は、レンダリングにより生成した印刷データを、プリンター５２へ出力する（ステップＳ１７０）。これにより、プリンター５２は、当該印刷データに基づく印刷を実行する。
【００３６】
３．本実施形態の効果および補足説明：
図６は、本実施形態による効果の一例を説明するための図である。上段の図６Ａは、ユーザーが任意に指定したＸＰＳファイルに本実施形態を適用しなかった場合の従来例であり、下段の図６Ｂは、当該ＸＰＳファイルに本実施形態を適用した場合の例である。当該ＸＰＳファイルは、何らかのオリジナル画像（図６の例では“Ａ”という文字を略中央に有する画像）を表現している。図６では、説明を単純にするため、ユーザーが任意に印刷設定を入力した結果、第１のフィルターとしての回転機能フィルターおよび第２のフィルターとしてのスタンプマーク重畳機能フィルターが有効化されて当該ＸＰＳファイルへのフィルター処理が実行されたとする。このような前提において、本実施形態を適用しない従来例では、ＸＰＳファイルへ、回転機能フィルターによる処理内容を示す第１の記述がなされ、その後、スタンプマーク重畳機能フィルターによる処理内容を示す第２の記述がなされるだけである。そのため、従来例によれば、レンダリング後に、元の向きから９０°回転したオリジナル画像（天地方向が横向きとなった画像）上に特定のスタンプマーク（図６の例では、いわゆる“丸秘”マーク）が縦向きに重畳された状態の印刷結果が得られる（図６Ａ）。つまり、ＸＰＳファイルが表現する画像の天地方向とスタンプマークの天地方向とが異なった印刷結果が得られてしまう。このような結果は、ユーザーが期待するものとは言えない。
【００３７】
一方、本実施形態を適用した場合は、ＸＰＳファイルへの処理順が第１のフィルター（例えば、回転機能フィルター）よりも後である第２のフィルター（例えば、スタンプマーク重畳機能フィルター）によるフィルター処理の際に、その処理内容を示す第２の記述を挿入する位置を、先に処理内容を記述した第１のフィルターに対応付けて挿入した識別情報に基づいて決定する。そのため、第１のフィルターよりもフィルター処理の順序が後の第２のフィルターの処理へ第１のフィルターによる処理の効果を及ぼすことができるＸＰＳファイル内の位置へ、第２のフィルターによる処理内容を示す第２の記述を挿入することができる。これにより、フィルターＦｍ間の処理順序は変えられないという制約がある中で、例えば図６Ｂのように、レンダリング後、元の向きから９０°回転したオリジナル画像（天地方向が横向きとなった画像）上に当該回転の効果を同様に受けて天地方向が横向きとなった特定のスタンプマークが重畳された状態の印刷結果が得られ、印刷結果へのユーザーの期待に応えることができる。
【００３８】
上述したように、複数の有効化された第１のフィルター毎の第１フィルター処理の度に、第１のフィルターに対応付けた異なる識別情報（ネーム属性）をＸＰＳファイルへ挿入することにより（図３のステップＳ１４１および図４参照）、第２のフィルターによる処理内容を示す第２の記述を挿入可能な位置が複数存在することになる。ドライバー１２は、ステップＳ１４２（第２フィルター処理）では、第２のフィルターの機能に応じて、第２の記述を挿入すべき位置を示す識別情報（ネーム属性）を探索し、探索した識別情報に基づいて決定した位置へ第２の記述を挿入する。既に述べたように、ドライバー１２は、予め規定したポリシーに基づいて、第２のフィルターの機能に応じて探索すべきネーム属性を決定する。前記具体例のように、第２のフィルターがスタンプマーク重畳機能フィルターであれば、ドライバー１２は、スタンプマークの向きや大きさに回転、拡大／縮小、反転といった各第１のフィルターによる効果を及ぼすべきとのポリシーに基づき、処理順序が最も先の第１のフィルター（回転機能フィルター）に対応付けたネーム属性"EP LandscapeFilter"を、探索すべきネーム属性と決定する。
【００３９】
なおドライバー１２は、仮に、拡大縮小機能フィルターに対応付けたネーム属性"EP ScalingFilter"に基づいてスタンプマーク重畳機能フィルターの処理内容を示す第２の記述（記述範囲ｄ４）を挿入すべき位置を決定した場合には、この記述範囲ｄ４を、当該ネーム属性"EP ScalingFilter"を有するCanvasノードの直後の位置（記述ｄ２ｕと記述ｄ１ｕとの間）に挿入する。これにより、記述範囲ｄ０が表現する描画を９０°回転させた画像へ縦向きに特定のスタンプマークを重畳した結果全体に、拡大縮小機能フィルターによる拡大／縮小、および反転機能フィルターによる左右反転の効果を及ぼすことができる。また仮に、反転機能フィルターに対応付けたネーム属性"EP MirrorFilter"に基づいてスタンプマーク重畳機能フィルターの処理内容を示す第２の記述（記述範囲ｄ４）を挿入すべき位置を決定した場合には、この記述範囲ｄ４を、当該ネーム属性"EP MirrorFilter"を有するCanvasノードの直後の位置（記述ｄ３ｕと記述ｄ２ｕとの間）に挿入する。これにより、記述範囲ｄ０が表現する描画を９０°回転させ且つ拡大／縮小した画像へ縦向きに特定のスタンプマークを重畳した結果全体に、反転機能フィルターによる左右反転の効果を及ぼすことができる。
【００４０】
さらに、例えば第２のフィルターが透かし重畳機能フィルターである場合、ドライバー１２は、透かし画像に回転および拡大／縮小の効果は及ぼさないというポリシーに基づき、反転機能フィルターに対応付けたネーム属性を、探索すべきネーム属性と決定するとしてもよい。これにより、記述範囲ｄ０が表現する描画を９０°回転させ且つ拡大／縮小した画像へ透かし画像を重畳した結果全体に、反転機能フィルターによる左右反転の効果を及ぼすことができる。
【００４１】
また、ドライバー１２は、ステップＳ１４２（第２フィルター処理）では、第２のフィルターの機能が論理ページを処理単位とする機能であるか物理ページを処理単位とする機能であるかに応じて、探索対象とする識別情報（ネーム属性）を決定するとしてもよい。論理ページを処理単位とする機能とは、ＸＰＳファイルが定義する論理ページ毎に適用することが好ましい機能であり、スタンプマーク重畳機能は、その代表的な一例である。一方、物理ページを処理単位とする機能とは、物理上の１ページ（一枚の用紙）毎に適用することが望ましい機能であり、ヘッダーフッター追加機能は、その代表的な一例である。そして、ドライバー１２は、第２のフィルターの機能が論理ページを処理単位とする機能であれば、探索対象とする識別情報（ネーム属性）を第１のフィルター毎の複数の識別情報のいずれかから決定し、第２のフィルターの機能が物理ページを処理単位とする機能であれば、第１のフィルター毎の複数の識別情報のいずれも探索しない、というポリシー（論理／物理ページに関するポリシー）を有し得る。
【００４２】
図７は、ステップＳ１４２（第２フィルター処理）が実行された時点でのＸＰＳファイル３０の一部であって、図５とは異なる例を示している。図７を図４と比較すれば判るように、ステップＳ１４２により、符号ｄ５で示した箇所（記述範囲ｄ５）が更に挿入された。また、図７と図５を比較すると、図７には、記述範囲ｄ５が挿入されている一方で記述範囲ｄ４は存在せず、図５には、記述範囲ｄ４が挿入されている一方で記述範囲ｄ５は存在しない。このような図７は、ドライバー１２が、第２のフィルターとしてヘッダーフッター追加機能フィルターを有効化し、前記論理／物理ページに関するポリシーに基づいてステップＳ１４２を実行した結果を示している。前記論理／物理ページに関するポリシーに基づいたとき、ドライバー１２は、第２のフィルターがヘッダーフッター追加機能フィルターであれば、第１のフィルター毎の複数の識別情報（ネーム属性）のいずれも探索せず、通常の記載位置へ、ヘッダーフッター追加機能フィルターの処理内容を示す第２の記述（記述範囲ｄ５）を挿入する。ここで言う通常の記載位置とは、図７に示すように、直前のフィルター処理で挿入された記述（反転機能フィルターの処理内容を示す第１の記述である、記述ｄ３ｕ）の直上の位置である。このような位置へ記述範囲ｄ５を挿入することにより、記述範囲ｄ０が表現する描画に対する回転機能フィルターによる回転の効果、拡大縮小機能フィルターによる拡大／縮小の効果、および反転機能フィルターによる左右反転の効果、とは無関係に、ページ（物理ページ）の上端／下端にヘッダー／フッターを追加した印刷結果が得られる。
【００４３】
有効化された第１のフィルターにＮｕｐ機能フィルターが含まれる場合にも、前記論理／物理ページに関するポリシーを採用することによる好適な結果が生じ易い。ドライバー１２は、例えば、Ｎｕｐ機能フィルターによるフィルター処理を含む第１フィルター処理の後に、第２のフィルターとしてのスタンプマーク重畳機能フィルターによる第２フィルター処理を実行する場合に、当該ポリシーに基づき、上述の如く処理順序が最も先の第１のフィルターに対応する識別情報（ネーム属性）を探索し、ＸＰＳファイルにおける当該探索結果に従った位置へ第２の記述を挿入する。これにより、一枚の用紙（物理ページ）に割り付けられるＮページ（例えば２ページ）の論理ページそれぞれに特定のスタンプマークを重畳させた好適な印刷結果を得ることができる。一方、ドライバー１２は、例えば、Ｎｕｐ機能フィルターによるフィルター処理を含む第１フィルター処理の後に、第２のフィルターとしてのヘッダーフッター追加機能フィルターによる第２フィルター処理を実行する場合に、当該ポリシーに基づき、第１のフィルター毎の複数の識別情報のいずれも探索せず、ＸＰＳファイルにおける前記通常の記載位置へ第２の記述を挿入する。これにより、Ｎページ（例えば２ページ）の論理ページが割り付けられた一枚の用紙（物理ページ）の上端／下端にヘッダー／フッターを追加した好適な印刷結果を得ることができる。
【００４４】
４．変形例：
本発明は上述の実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば後述するような変形例を採用可能である。上述の実施形態に変形例を適宜組み合わせた構成も本発明の開示範囲に入る。
【００４５】
図８は、制御部２０がドライバー１２を実行することにより実現する、つまり制御部２０とドライバー１２とが協働して実現する印刷制御処理（印刷制御方法）であって、図２とは異なる例をフローチャートにより示している。図８のフローチャートは、図２と比較したとき、ステップＳ１５２，Ｓ１５４，Ｓ１５６を有する点で異なる。
【００４６】
ステップＳ１５２では、ドライバー１２は、第１フィルター処理および第２フィルター処理を終えたＸＰＳファイル（ＸＰＳファイル３０）に基づく画像を表示部５１にプレビュー表示させる。つまり、ドライバー１２は、ステップＳ１５０で“Ｙｅｓ”と判定した時点で得られているＸＰＳファイル３０を解釈して表示部５１に表示させるための所定フォーマットの画像データを生成し、当該画像データに基づく表示を表示部５１に実行させる。このようなプレビュー表示により、ユーザーは、オリジナル画像に対して第１フィルター処理および第２フィルター処理が施された状態の画像、つまり印刷直前の画像を確認することができる。このようなステップＳ１５２を実現する点で、制御部２０は、プレビュー表示制御部として機能すると言える。
【００４７】
ユーザーは、プレビュー表示を視認しながら、当該プレビューの結果を容認するか否かを、入力部５０を操作することにより制御部２０へ通知することができる。ドライバー１２は、プレビューの結果を容認する旨の通知があったことを入力部５０を介して認識したときに、再試行指示無しと判定し（ステップＳ１５４において“Ｎｏ”）、ステップＳ１６０へ進む。一方、プレビューの結果を容認しない旨の通知（ただし、印刷中止の通知を除く。）があったことを入力部５０を介して認識したときに、ドライバー１２は、再試行指示有りと判定し（ステップＳ１５４において“Ｙｅｓ”）ステップＳ１５６へ進む。
【００４８】
前記再試行指示有りの場合、ドライバー１２は、第２フィルター処理を再試行する（ステップＳ１５６）。第２フィルター処理の再試行とは、ステップＳ１４２（図３参照）で実行済みの第２フィルター処理を取り消すとともに、当該実行済みの第２フィルター処理で挿入したＸＰＳファイル３０内の位置とは異なる位置へ前記第２の記述を挿入する処理である。ステップＳ１４２で実行済みの第２フィルター処理を取り消すとは、ステップＳ１４２でＸＰＳファイル３０へ挿入した第２の記述（例えば、図５に示す記述範囲ｄ４）を削除することを指す。その上で、ドライバー１２は、当該削除した第２の記述を、別の位置へ挿入する。例えば、ステップＳ１４２の第２フィルター処理で第２の記述を挿入した位置が、回転機能フィルターに対応付けたネーム属性"EP LandscapeFilter"を探索した結果決定した位置（ネーム属性"EP LandscapeFilter"を有するCanvasノードの直後の位置）であるとする。その場合、前記別の位置には、拡大縮小機能フィルターに対応付けたネーム属性"EP ScalingFilter"を探索した結果決定される位置（ネーム属性"EP ScalingFilter"を有するCanvasノードの直後の位置）や、反転機能フィルターに対応付けたネーム属性"EP MirrorFilter"を探索した結果決定される位置（ネーム属性"EP MirrorFilter"を有するCanvasノードの直後の位置）や、前記通常の記載位置、が該当する。
【００４９】
ドライバー１２は、このような前記別の位置に関する複数の選択肢のいずれを採用して第２の記述を挿入するかを、ユーザーの指示に従って決定してもよいし、ユーザーの指示を仰ぐことなく自動的に（所定の判断基準に基づいて、あるいはランダムに）決定してもよい。このような第２フィルター処理の再試行の結果、前記別の位置に第２の記述を挿入したＸＰＳファイル３０が生成される。その後、ドライバー１２は、ステップＳ１５２へ戻り、最新の再試行を反映したＸＰＳファイル３０に基づくプレビュー表示を表示部５１に実行させる。このような変形例によれば、ユーザーは、プレビュー表示を確認しつつ第２フィルター処理を再試行させることができるので、真に得たい印刷結果を容易に得ることができる。なお当該変形例は、プレビュー表示（ステップＳ１５２）の後に、印刷設定をユーザーに再度させることにより、ステップＳ１１０からの処理を再度実行することを否定しない。
【符号の説明】
【００５０】
１０…印刷制御装置、１１…ＯＳ、１２…プリンタードライバー、１３…アプリケーション、２０…制御部、３０…ＸＰＳファイル、５０…入力部、５１…表示部、５２…プリンター、Ｆ，Ｆｍ…フィルター
【図１】
0006500654.tif 000002
【図２】
0006500654.tif 000003
【図３】
0006500654.tif 000004
【図４】
0006500654.tif 000005
【図５】
0006500654.tif 000006
【図６】
0006500654.tif 000007
【図７】
0006500654.tif 000008
【図８】
0006500654.tif 000009