(57)【要約】【課題】プリンタドライバの機能拡張に応じた中間データの加工処理の拡張性を向上させること。【解決手段】情報処理装置は、印刷設定情報に基づいて生成される中間コマンドを含む中間データに対して第一の加工処理を行う基本加工手段と、  前記基本加工手段が対応していない拡張中間コマンドに関して前記中間データに対して第二の加工処理を行う拡張加工手段とを有する。【選択図】図４
2011257975.tif 000002
【特許請求の範囲】
【請求項１】
印刷設定情報に基づいて生成される中間コマンドを含む中間データに対して第一の加工処理を行う基本加工手段と、
前記基本加工手段が対応していない拡張中間コマンドに関して前記中間データに対して第二の加工処理を行う拡張加工手段とを有する情報処理装置。
【請求項２】
前記拡張加工手段は、前記中間データに含まれている、前記拡張中間コマンドに関して、前記第二の加工処理を行う請求項１記載の情報処理装置。
【請求項３】
前記拡張加工手段は、前記拡張中間コマンドを前記中間データに対して付加する請求項１又は２記載の情報処理装置。
【請求項４】
前記基本加工手段は、前記第一の加工処理の内容を設定させるための第一の設定画面を表示させる基本表示制御手段を有し、
前記拡張加工手段は、前記第二の加工処理の内容を設定させるための第二の設定画面を表示させる拡張表示制御手段を有し、
前記基本表示制御手段は、前記第二の設定画面の表示を前記拡張表示制御手段に実行させるための表示部品を前記第一の設定画面に表示させる請求項１乃至３いずれか一項記載の情報処理装置。
【請求項５】
前記基本表示制御手段は、前記拡張加工手段が有る場合は、前記表示部品を操作可能な状態で表示させ、前記拡張加工手段が無い場合は、前記表示部品を操作不能な状態で表示させる又は前記表示部品を表示させない請求項４記載の情報処理装置。
【請求項６】
コンピュータを、
印刷設定情報に基づいて生成される中間コマンドを含む中間データに対して第一の加工処理を行う基本加工手段として機能させ、
前記基本加工手段は、前記基本加工手段が対応していない拡張中間コマンドに関して前記中間データに対して第二の加工処理を行う拡張加工手段に、前記中間データに含まれている該拡張中間コマンドに関する加工処理を実行させる中間データ加工プログラム。
【請求項７】
前記拡張加工手段は、前記中間データに含まれている、前記拡張中間コマンドに関して、前記第二の加工処理を行う請求項６記載の中間データ加工プログラム。
【請求項８】
前記拡張加工手段は、前記拡張中間コマンドを前記中間データに対して付加する請求項６又は７記載の中間データ加工プログラム。
【請求項９】
前記基本加工手段は、前記第一の加工処理の内容を設定させるための第一の設定画面を表示させる基本表示制御手段を有し、
前記拡張加工手段は、前記第二の加工処理の内容を設定させるための第二の設定画面を表示させる拡張表示制御手段を有し、
前記基本表示制御手段は、前記第二の設定画面の表示を前記拡張表示制御手段に実行させるための表示部品を前記第一の設定画面に表示させる請求項６乃至８いずれか一項記載の中間データ加工プログラム。
【請求項１０】
前記基本表示制御手段は、前記拡張加工手段が有る場合は、前記表示部品を操作可能な状態で表示させ、前記拡張加工手段が無い場合は、前記表示部品を操作不能な状態で表示させる又は前記表示部品を表示させない請求項９記載の中間データ加工プログラム。
【請求項１１】
請求項６乃至１０いずれか一項記載の中間データ加工プログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、中間データ加工プログラム、及び記録媒体に関し、特に印刷データに関する中間データを加工する情報処理装置、中間データ加工プログラム、及び記録媒体に関する。
【背景技術】
【０００２】
プリンタドライバは、印刷設定をプリンタが解釈可能な印刷コマンド（ＰＪＬ（Printer Job Language）等）に変換する。従来、印刷設定から印刷コマンドへの変換の過程において、中間コマンドによって構成される中間データを生成するプリンタドライバが知られている（例えば、特許文献１）。中間データは、プリンタの機種等に対する依存度が低い。したがって、中間データに対して加工を行うプログラムモジュール（以下、「フィルタ」という。）を作成することにより、プリンタの機種等に対して依存度の低い加工処理を、印刷処理の途中に対して組み込むことができる。
【０００３】
図１は、フィルタが組み込まれたプリンタドライバの例を示す図である。同図において、プリンタドライバ５１０は、前処理部５１１、フィルタ５１２、及び後処理部５１３を含む。
【０００４】
前処理部５１１、例えば、Ｗｉｎｄｏｗｓ（登録商標）においてＤＤＩ（Device Driver Interface）と呼ばれるインタフェースを介して、印刷要求を受け付け、ＤＥＶＭＯＤＥ構造体に基づいて中間データを生成する。前処理部５１１は、生成された中間データをフィルタ５１２に入力する。
【０００５】
フィルタ５１２は、中間データに対して予め設定された加工処理を実行し、加工処理後の中間データを後処理部５１３に入力する。例えば、フィルタ５１２が、通常の業務においてカラー印刷を許可しないことを目的として管理者等によってインストールされたものである場合、フィルタ５１２は、カラーモードに対する中間コマンドの内容を強制的にモノクロ設定に書き換える。
【０００６】
後処理部５１３は、入力された中間データを印刷データに変換する。当該印刷データは、非図示のプリンタに転送されて印刷される。
【０００７】
このように、フィルタは、中間データの段階において、予め実装されている加工処理を実行する。
【０００８】
他方において、印刷コマンドは、プリンタの機能拡張に応じて拡張されうる。この場合、プリンタドライバは、プリンタの拡張機能に対応するために機能拡張される必要がある（例えば、特許文献２）。具体的には、プリンタの拡張機能に対応する設定項目を受け付け可能なように、ユーザインタフェースが拡張される必要がある。また、当該設定項目に対応した印刷コマンドを印刷データに出力可能とされる必要がある。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
プリンタドライバが機能拡張された場合、フィルタについても当該機能拡張に対応させたい場合がある。例えば、拡張機能に対応する中間コマンドが中間データに含まれている場合、当該中間データに対して所定の加工を行ったり、所定の文字列が含まれている中間データに対して、拡張機能に対応した中間コマンドを追加したりといったような加工処理をフィルタに組み込みたい場合である。
【００１０】
しかしながら、フィルタが予定している中間コマンドは、フィルタの実装内容に応じて固定的に定まる。したがって、従来、拡張機能に対応する中間コマンドにフィルタが対応するためには、フィルタのソースコードを変更し、新たにコンパイルする必要があった。そうすると、ユーザは、古いフィルタをアンインストールし、新しいフィルタをインストールするといった作業を行わなければならなかった。
【００１１】
本発明は、上記の点に鑑みてなされたものであって、プリンタドライバの機能拡張に応じた中間データの加工処理の拡張性を向上させることのできる情報処理装置、中間データ加工プログラム、及び記録媒体の提供を目的とする。
【課題を解決するための手段】
【００１２】
そこで上記課題を解決するため、情報処理装置は、印刷設定情報に基づいて生成される中間コマンドを含む中間データに対して第一の加工処理を行う基本加工手段と、
前記基本加工手段が対応していない拡張中間コマンドに関して前記中間データに対して第二の加工処理を行う拡張加工手段とを有する。
【００１３】
このような情報処理装置では、プリンタドライバの機能拡張に応じた中間データの加工処理の拡張性を向上させることができる。
【発明の効果】
【００１４】
プリンタドライバの機能拡張に応じた中間データの加工処理の拡張性を向上させることができる。
【図面の簡単な説明】
【００１５】
【図１】フィルタが組み込まれたプリンタドライバの例を示す図である。
【図２】本発明の実施の形態における印刷システムの構成例を示す図である。
【図３】本発明の実施の形態における情報処理装置のハードウェア構成例を示す図である。
【図４】本発明の実施の形態の情報処理装置のソフトウェア構成例を示す図である。
【図５】中間データの例を示す図である。
【図６】フィルタ及びフィルタプラグインの機能構成例を示す図である。
【図７】第一の印刷処理の処理手順を説明するための図である。
【図８】第一の印刷処理における地紋時集約プラグインに対するフィルタ処理定義の例を示す図である。
【図９】第二の印刷処理の処理手順を説明するための図である。
【図１０】第二の印刷処理におけるマル秘時地紋プラグインに対するフィルタ処理定義の例を示す図である。
【図１１】第三の印刷処理の処理手順を説明するための図である。
【図１２】第三の印刷処理における集約時蓄積無効化プラグインに対するフィルタ処理定義の例を示す図である。
【図１３】印刷処理におけるフィルタ処理の処理手順を説明するためのフローチャートである。
【図１４】フィルタプラグイン情報記憶部の構成例を示す図である。
【図１５】印刷処理におけるフィルタプラグイン処理の処理手順を説明するためのフローチャートである。
【図１６】フィルタ処理定義の設定処理の処理手順を説明するためのシーケンス図である。
【図１７】フィルタ設定画面の一例を示す図である。
【図１８】フィルタプラグイン設定画面の一例を示す図である。
【図１９】ドライバプラグインの一部としてフィルタプラグインが実装された場合の情報処理装置のソフトウェア構成例を示す図である。
【発明を実施するための形態】
【００１６】
以下、図面に基づいて本発明の実施の形態を説明する。図２は、本発明の実施の形態における印刷システムの構成例を示す図である。同図の印刷システム１において、一台以上の情報処理装置１０及び一台以上のプリンタ２０は、ＬＡＮ（Local Area Network）等のネットワーク（有線又は無線の別は問わない。）を介して通信可能とされている。
【００１７】
情報処理装置１０は、ユーザによる文書データの印刷指示に応じ、当該文書データに対応する印刷データをプリンタ２０に送信するコンピュータである。
【００１８】
プリンタ２０は、情報処理装置１０より転送される印刷データに基づいて印刷ジョブを実行する画像形成装置である。なお、印刷機能の他に、スキャン機能又はコピー機能等を有する複合機がプリンタ２０の代わりに用いられてもよい。
【００１９】
図３は、本発明の実施の形態における情報処理装置のハードウェア構成例を示す図である。図３の情報処理装置１０は、それぞれバスBで相互に接続されているドライブ装置１００と、補助記憶装置１０２と、メモリ装置１０３と、ＣＰＵ１０４と、インタフェース装置１０５と、表示装置１０６と、入力装置１０７とを有する。
【００２０】
情報処理装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００２１】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従って情報処理装置１０に係る機能を実現する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１０６はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１０７はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
【００２２】
図４は、本発明の実施の形態の情報処理装置のソフトウェア構成例を示す図である。同図において、情報処理装置１０は、アプリケーション１１、ＧＤＩ１２、プリンタドライバ１３、フィルタ１４、フィルタ設定部１５、ドライバプラグイン１６、及び一以上のフィルタプラグイン１７等を含む。
【００２３】
アプリケーション１１は、例えば、ユーザによる対話的な操作に応じ、印刷対象とされる文書データを生成するプログラムである。ＧＤＩ１２は、いわゆるＧＤＩ（Graphic Device Interface）であり、非図示のＯＳ（例えば、Ｗｉｎｄｏｗｓ（登録商標））によって提供されるグラフィック関数の集合である。アプリケーション１１は、印刷指示の入力に応じ、ＧＤＩ１２を介して、プリンタドライバ１３への印刷要求を入力する。例えば、ＧＤＩ１２は、プリンタドライバ１３が備えるＤＤＩ（Device Driver Interface）と呼ばれるインタフェースを介して、アプリケーション１１からの印刷要求をプリンタドライバ１３に入力する。
【００２４】
プリンタドライバ１３は、ＤＤＩの呼び出しに応じ、印刷設定情報に応じた印刷データを生成する。すなわち、アプリケーション１１による文書データは、ＧＤＩ１２を介してプリンタドライバ１３によって印刷データに変換される。印刷データとは、プリンタ２０が解釈可能なデータをいい、ＰＪＬ（Printer Job Language）によって記述された印刷コマンド（ジョブ制御コマンド）や描画データ等を含む。プリンタドライバ１３によって生成された印刷データは、例えば、非図示のスプーラ、ポートモニタ等を経て、プリンタ２０に送信される。
【００２５】
同図において、プリンタドライバ１３は、ドライバＵＩ部１３１、前処理部１３２、中間コマンド生成部１３３、後処理部１３４、及び印刷コマンド生成部１３５等を含む。
【００２６】
ドライバＵＩ部１３１は、アプリケーション１１からの要求に応じ、印刷設定ダイアログを表示させる。印刷設定ダイアログは、印刷設定情報を設定させるための画面である。印刷設定情報は、印刷属性情報又は印刷条件とも呼ばれる情報であり、印刷態様に関する設定項目及びその設定値の集合によって構成される。ＯＳとしてＷｉｎｄｏｗｓ（登録商標）が採用されている場合、印刷設定ダイアログを介して設定された印刷設定情報は、ＤＥＶＭＯＤＥ構造体としてメモリ装置１０３に記録される。
【００２７】
前処理部１３２は、アプリケーション１１からＧＤＩ１２経由でＤＥＶＭＯＤＥ構造体を受け取り、中間コマンド生成部１３３によって生成される中間データをフィルタ１４へ入力する。
【００２８】
中間コマンド生成部１３３は、前処理部１３２からＤＥＶＭＯＤＥ構造体を受け取り、予め実装されている変換規則（変換ロジック）に従ってＤＥＶＭＯＤＥ構造体を中間コマンドに変換し、変換後の中間コマンドを含む中間データを生成する。なお、中間コマンドとは、プリンタ２０の機種に対して中立的な（非依存の）形式によって、ＤＥＶＭＯＤＥ構造体の内容（すなわち、印刷設定情報の内容）を表現するコマンドである。中間データは、１以上の中間コマンドの集合である制御データと、印刷対象の文書データ内容を示す描画データとを含むデータである。
【００２９】
図５は、中間データの例を示す図である。同図において、中間データＤ１は、制御データＤ１１及び描画データＤ１２を含む。
【００３０】
制御データＤ１１は、＠ｉＰＪＬによって始まる、１以上の中間コマンドが含まれている。例えば、中間コマンドｃ１は、２ページを１ページに集約する集約印刷（以下、「２ｉｎ１印刷」という。）の実行命令を示す。中間コマンドｃ２は、地紋印刷の実行命令を示す。中間コマンドｃ３は、印刷データのプリンタ２０内への蓄積命令を示す。
【００３１】
描画データＤ１２は、描画要素が文字列である場合についての例示である。すなわち、Ｓｔｒｉｎｇ  Ｄａｔａ｛｝の表記において、｛｝内の記述は、文字列の内容を示す。具体的には、配列形式によって、［０］〜［１０］において一文字ずつ文字コード等が記述されている。同図では、「ＲｅｆｒｅｓｈＣｏｐｙ」という文字列に関する記述が示されている。描画要素としては、図形及び画像等も含まれうる。
【００３２】
なお、図５に示される中間データＤ１の形式は、あくまでも例示である。本実施の形態の有効性は、中間データの形式には依存しない。
【００３３】
図４に戻る。後処理部１３４は、フィルタ１４から中間データを受け取り、印刷データの生成を印刷コマンド生成部１３５に実行させる。
【００３４】
印刷コマンド生成部１３５は、後処理部１３４から中間データを受け取り、予め実装されている変換規則（変換ロジック）に従って中間データ内の中間コマンドを印刷コマンドに変換し、変換後の印刷コマンドを含む印刷データを生成する。
【００３５】
フィルタ１４は、中間データを加工する。すなわち、フィルタ１４は、前処理部１３２より中間データを受け付け、当該中間データに対して加工処理を施す。本実施の形態において、加工処理とはデータ形式の変換を伴わない処理をいう。したがって、フィルタ１４によって出力されるデータは、中間データである。フィルタ１４より出力される加工後の中間データは、後処理部１３４に入力される。
【００３６】
フィルタ１４による加工処理の内容は、フィルタ設定部１５を用いて設定される、フィルタ１４の処理内容の定義情報（以下、「フィルタ処理定義」という。）に依存する。フィルタ処理定義は、中間データに対する条件（以下、「フィルタ条件」という。）と、フィルタ条件が満たされた場合に中間データに対して実行される加工内容とを含む。当該加工内容には、例えば、中間コマンドの追加、変更、若しくは削除、又は中間データ内の描画データの加工等が含まれうる。
【００３７】
ドライバプラグイン１６は、プリンタドライバ１３に対するプラグインである。すなわち、ドライバプラグイン１６は、プリンタドライバ１３の機能拡張を行うプログラムである。具体的には、ドライバプラグイン１６は、プリンタ２０の機能拡張等に応じて、拡張機能に対応した設定項目や拡張機能に対応する印刷コマンドに関する処理を実行する。なお、本実施の形態において、拡張機能に対応した設定項目を「拡張項目」といい、拡張前の基本機能に対応した設定項目を「基本項目」という。また、拡張機能に対応する印刷コマンドを「拡張印刷コマンド」といい、基本機能に対応する印刷コマンドを「基本印刷コマンド」という。
【００３８】
ドライバプラグイン１６は、ドライバプラグインＵＩ部１６１、プラグイン前処理部１６２、及びプラグイン後処理部１６３等を含む。ドライバプラグインＵＩ部１６１は拡張項目に対する設定値の入力を受け付けるためのユーザインタフェース（以下、「拡張設定画面」という。）を生成する。ドライバプラグインＵＩ部１６１は、拡張設定画面を介して入力される、拡張項目に対する設定値をＤＥＶＭＯＤＥ構造体に記録する。なお、ドライバプラグインＵＩ部１６１は、例えば、ドライバＵＩ部１３１が表示させる印刷設定ダイアログに配置される所定のボタンが押下された際に、ドライバＵＩ部１３１によって呼び出される。ドライバプラグインＵＩ部１６１は、ドライバＵＩ部１３１からの呼び出しに応じ、拡張設定画面を表示させる。当該所定のボタンは、例えば、ドライバＵＩ部１３１が、ドライバプラグイン１６のインストールの有無を確認し、インストールされている場合に、印刷設定ダイアログに配置される。
【００３９】
プラグイン前処理部１６２は、ＤＥＶＭＯＤＥ構造体内において拡張項目に関する設定内容を、中間コマンドに変換する。当該中間コマンドは、拡張機能に対応した中間コマンドである。すなわち、プリンタ２０の機能拡張に応じて、中間コマンドについても拡張される。なお、本実施の形態において、拡張機能に対応した中間コマンドを「拡張中間コマンド」といい、基本機能に対応した中間コマンドを「基本中間コマンド」という。
【００４０】
例えば、中間コマンド生成部１３３は、自らが処理可能な範囲でＤＥＶＭＯＤＥ構造体を中間コマンドに変換した後、当該ＤＥＶＭＯＤＥ構造体を指定してプラグイン前処理部１６２を呼び出す。プラグイン前処理部１６２は、指定されたＤＥＶＭＯＤＥ構造体内において拡張項目に対応する拡張中間コマンドを生成する。当該拡張中間コマンドは、中間コマンド生成部１３３によって生成された中間データの最後に付加される。なお「自ら（中間コマンド生成部１３３）が処理可能な範囲」とは、基本項目の範囲をいう。したがって、当該範囲には、拡張項目は含まれない。中間コマンド生成部１３３は、機能強化前の基本機能に基づいて実装されており、拡張項目に関する処理については予定していないからである。したがって、中間コマンド生成部１３３では、既存の状態では、拡張項目に関して拡張中間コマンドへの変換は実行できないのである。
【００４１】
プラグイン後処理部１６３は、拡張中間コマンドを拡張印刷コマンドに変換する。例えば、印刷コマンド生成部１３５は、自らが処理可能な範囲（基本中間コマンドの範囲）で中間コマンドを印刷コマンドに変換した後、中間データを指定してプラグイン後処理部１６３を呼び出す。プラグイン後処理部１６３は、指定された中間データ内に含まれている拡張中間コマンドを拡張印刷コマンドに変換する。当該拡張印刷コマンドは、印刷コマンド生成部１３５によって生成された印刷コマンドと共に印刷データに含められる。
【００４２】
なお、複数種類のドライバプラグイン１６が情報処理装置１０に含まれていてもよい。
【００４３】
フィルタプラグイン１７は、フィルタ１４に対するプラグインである。すなわち、フィルタプラグイン１７は、フィルタ１４の機能拡張を行うプログラムである。具体的には、フィルタプラグイン１７は、拡張中間コマンドに関して中間コマンドの加工処理を実行する。拡張中間コマンドに関する中間コマンドの加工処理とは、拡張中間コマンドの内容がフィルタ条件とされている場合や、フィルタ条件が満たされた場合の処理内容として拡張中間コマンドを出力する場合等が挙げられる。
【００４４】
それぞれ異なる加工処理を行う複数のフィルタプラグイン１７が情報処理装置１０に含まれていてもよい。同図には、３つのフィルタプラグイン１７が含まれている例が示されている。複数のフィルタプラグイン１７が情報処理装置１０に含まれている場合、各フィルタプラグイン１７は、例えば、チェーン構造で論理的に接続される。当該チェーン構造において、フィルタプラグイン１７間の呼び出し関係が形成される。
【００４５】
フィルタ１４及びフィルタプラグイン１７について更に詳細に説明する。図６は、フィルタ及びフィルタプラグインの機能構成例を示す図である。
【００４６】
同図において、フィルタ１４は、フィルタＵＩ部１４１及びフィルタ処理部１４２等を含む。また、フィルタプラグイン１７は、フィルタプラグインＵＩ部１７１及びフィルタプラグイン処理部１７２等を含む。また、同図には、図４では省略されていた、フィルタ処理定義記憶部１８及びフィルタプラグイン情報記憶部１９についても示されている。
【００４７】
フィルタＵＩ部１４１は、フィルタ処理定義を設定させるための画面（以下、「フィルタ設定画面」）を表示させ、フィルタ設定画面に対する設定内容（すなわち、フィルタ処理定義）をフィルタ処理定義記憶部１８に記録する。フィルタ処理定義記憶部１８は、補助記憶装置１０２を用いて、フィルタ処理定義を記憶する。
【００４８】
フィルタ処理部１４２は、フィルタ処理定義に基づいて、基本中間コマンドに関して中間データの加工処理を実行する。
【００４９】
フィルタプラグインＵＩ部１７１は、フィルタプラグイン１７に関するフィルタ処理定義を設定させるための画面を表示させる。フィルタプラグイン処理部１７２は、拡張中間コマンドに関して中間データの加工処理を実行する。
【００５０】
フィルタプラグイン情報記憶部１９は、補助記憶装置１０２を用いて、情報処理装置１０にインストールされているフィルタプラグイン１７の属性情報を記憶する。
【００５１】
続いて、図３及び図４を用いて説明したソフトウェア（プログラム）が情報処理装置１０に実行させる印刷処理の概要について、３つの具体例を用いて説明する。
【００５２】
図７は、第一の印刷処理の処理手順を説明するための図である。同図では、ドライバプラグイン１６として地紋プラグイン１６ａがインストールされ、フィルタプラグイン１７として地紋時集約プラグイン１７ａがインストールされている状態が示されている。
【００５３】
地紋プラグイン１６ａは、地紋印刷機能に対応したドライバプラグイン１６である。地紋印刷とは、背景に地紋が印刷される印刷形態をいう。地紋時集約プラグイン１７ａは、地紋印刷が実行される場合に、２ｉｎ１印刷を強制させるためのフィルタプラグイン１７である。
【００５４】
まず、印刷設定情報の設定時において、ドライバＵＩ部１３１が表示させている印刷設定ダイアログの所定のボタンが押下されると、地紋プラグイン１６ａのドライバプラグインＵＩ部１６１ａは、地紋印刷をするか否かを設定させるための地紋印刷設定画面を表示させる。地紋印刷設定画面において、地紋印刷をすることが設定されると、ドライバプラグインＵＩ部１６１ａは、ＤＥＶＭＯＤＥ構造体において地紋印刷に対応するメンバ変数「ＪＩＭＯＮ」に対して「ＯＮ」を設定する（Ｓ１１）。なお、メンバ変数「ＪＩＭＯＮ」に対する「ＯＮ」の設定は、図中において「ＪＩＭＯＮ：ＯＮ」として表記されている。
【００５５】
その後、印刷設定ダイアログを介して印刷の実行指示が入力されると、プリンタドライバ１３の前処理部１３２には、メンバ変数「ＪＩＭＯＮ」に対して「ＯＮ」が設定されたＤＥＶＭＯＤＥ構造体が入力される（Ｓ１２）。
【００５６】
当該ＤＥＶＭＯＤＥ構造体は、前処理部１３２から中間コマンド生成部１３３を経て、地紋プラグイン１６ａのプラグイン前処理部１６２ａに入力される。なお、プラグイン前処理部１６２ａにＤＥＶＭＯＤＥ構造体が入力される前に、中間コマンド生成部１３３によって、基本項目に関する設定内容が中間コマンドに変換され、当該中間コマンドを含む中間データが生成される。
【００５７】
続いて、地紋プラグイン１６ａのプラグイン前処理部１６２ａは、ＤＥＶＭＯＤＥ構造体において地紋印刷機能に対する設定内容「ＪＩＭＯＮ：ＯＮ」を中間コマンド（以下、「地紋印刷中間コマンド」という。）に変換する（Ｓ１３）。本実施の形態おいて、地紋印刷中間コマンドは、「＠ｉＰＪＬ  ＳＥＴ  ＪＩＭＯＮ＝ＯＮ」と表記される。なお、地紋印刷中間コマンドは、拡張中間コマンドである。
【００５８】
その後、地紋印刷中間コマンドを含む中間データは、前処理部１３２によってフィルタ１４に入力される。フィルタ１４は、基本印刷中間コマンドに関して、フィルタ処理定義記憶部１８に記録されているフィルタ処理定義に基づいて加工処理を行う。続いて、フィルタ１４は、地紋時集約プラグイン１７ａに対して加工後の中間データを入力する。
【００５９】
地紋時集約プラグイン１７ａのフィルタプラグイン処理部１７２ａは、フィルタ処理定義記憶部１８に記録されているフィルタ処理定義の中で、自らに対応するフィルタ処理定義に基づいて、拡張中間コマンドに関して、中間データに対する加工処理を実行する。
【００６０】
図８は、第一の印刷処理における地紋時集約プラグインに対するフィルタ処理定義の例を示す図である。同図に示されるフィルタ処理定義において、「フィルタ条件」には、「＠ｉＰＪＬ  ＳＥＴ  ＪＩＭＯＮ＝ＯＮ」が設定されている。また、「加工内容」には、「追加：＠ｉＰＪＬ  ＳＥＴ  ＮＵＰ＝２ＩＮ１」が設定されている。したがって、当該フィルタ処理定義は、「＠ｉＰＪＬ  ＳＥＴ  ＪＩＭＯＮ＝ＯＮが設定されている場合には、＠ｉＰＪＬ  ＳＥＴ  ＮＵＰ＝２ＩＮ１を追加する」という処理内容を示す。これは、「地紋印刷を行う場合は、２ｉｎ１印刷を行う」ということを意味する。
【００６１】
地紋時集約プラグイン１７ａのフィルタプラグイン処理部１７２ａは、図８に示されるフィルタ処理定義がフィルタ処理定義記憶部１８に含まれており、かつ、当該フィルタ処理定義に設定されているフィルタ条件が満たされる場合、当該フィルタ処理定義における加工内容によって示される加工を中間データに対して行う（Ｓ１４）。ここでは、中間データには、「＠ｉＰＪＬ  ＳＥＴ  ＪＩＭＯＮ＝ＯＮ」の中間コマンドが含まれている。したがって、フィルタプラグイン処理部１７２ａは、中間データの制御データの末尾に、「＠ｉＰＪＬ  ＳＥＴ  ＮＵＰ＝２ＩＮ１」を追加する。
【００６２】
地紋時集約プラグイン１７ａのフィルタプラグイン処理部１７２ａによって加工された中間データは、フィルタ１４に返却され、後処理部１３４に入力される。後処理部１３４は、当該中間データを印刷コマンド生成部１３５に入力する。
【００６３】
印刷コマンド生成部１３５は、基本中間コマンドに関して、基本印刷コマンドへの変換を実行する（Ｓ１５）。例えば、集約印刷機能が基本機能である場合、集約印刷機能に対応する中間コマンド「＠ｉＰＪＬ  ＳＥＴ  ＮＵＰ＝２ＩＮ１」は、基本中間コマンドである。したがって、印刷コマンド生成部１３５は、「＠ｉＰＪＬ  ＳＥＴ  ＮＵＰ＝２ＩＮ１」を基本印刷コマンド「＠ＰＪＬ  ＳＥＴ  ＮＵＰ＝２ＩＮ１」に変換する。なお、本実施の形態において、中間コマンドと印刷コマンドとは、アットマーク（＠）後のキーワード（「ｉＰＪＬ」、「ＰＪＬ」）が異なるだけであるが、これは、便宜的なものである。
【００６４】
続いて、印刷コマンド生成部１３５は、中間データを地紋プラグイン１６ａのプラグイン後処理部１６３ａに入力する。プラグイン後処理部１６３ａは、自らが解釈可能な地紋印刷中間コマンドについて、印刷コマンドへの変換を実行する（Ｓ１６）。例えば、「＠ｉＰＪＬ  ＳＥＴ  ＪＩＭＯＮ＝ＯＮ」が印刷コマンド「＠ＰＪＬ  ＳＥＴ  ＪＩＭＯＮ＝ＯＮ」に変換される。
【００６５】
印刷コマンド生成部１３５及びプラグイン後処理部１６３ａによって変換された印刷データは、後処理部１３４を経てプラインタ２０に送信される。
【００６６】
このように、図７では、地紋印刷が行われる場合は、ユーザによって集約印刷が設定されていなくても、集約印刷が強制的に実行される。
【００６７】
図９は、第二の印刷処理の処理手順を説明するための図である。図９中、図７と同一部分には同一符号を付し、その説明は省略する。
【００６８】
同図では、フィルタプラグイン１７としてマル秘時地紋プラグイン１７ｂがインストールされた状態が示されている。マル秘時地紋プラグイン１７ｂは、文書データに「マル秘」という文字列が含まれている場合に、地紋印刷を強制させるためのフィルタプラグイン１７である。
【００６９】
なお、ドライバプラグイン１６については、第一の印刷処理と同様に、地紋プラグイン１６ａがインストールされていることとする。したがって、地紋プラグイン１６ａに関する説明は適宜省略する。また、図７と重複する処理手順についても適宜省略する。
【００７０】
図９では、地紋プラグイン１６ａのドライバプラグインＵＩ部１６１ａが表示させる地紋印刷設定画面において、地紋印刷は行わないことが設定されたこととする。この場合、ドライバプラグインＵＩ部１６１ａは、ＤＥＶＭＯＤＥ構造体において地紋印刷に対応するメンバ変数「ＪＩＭＯＮ」に対して「ＯＦＦ」を設定する（Ｓ２１）。したがって、プリンタドライバ１３の前処理部１３２には、メンバ変数「ＪＩＭＯＮ」に対して「ＯＮ」が設定されたＤＥＶＭＯＤＥ構造体が入力される（Ｓ２２）。
【００７１】
その後、図７において説明した処理手順と同様の処理手順を経て、ＤＥＶＭＯＤＥ構造体が地紋プラグイン１６ａのプラグイン前処理部１６２ａに入力される。プラグイン前処理部１６２ａは、ＤＥＶＭＯＤＥ構造体において地紋機能に対する設定内容「ＪＩＭＯＮ：ＯＦＦ」を地紋印刷中間コマンドに変換する（Ｓ２３）。ここでは、地紋印刷は行わないことを示す「＠ｉＰＪＬ  ＳＥＴ  ＪＩＭＯＮ＝ＯＦＦ」に変換される。
【００７２】
その後、図７において説明した処理手順と同様の処理手順を経て、中間データがマル秘時地紋プラグイン１７ｂのフィルタプラグイン処理部１７２ｂに入力される。フィルタプラグイン処理部１７２ｂは、フィルタ処理定義記憶部１８に記録されているフィルタ処理定義の中で、自らに対応するフィルタ処理定義に基づいて、拡張中間コマンドに関して、中間データに対する加工処理を実行する。
【００７３】
図１０は、第二の印刷処理におけるマル秘時地紋プラグインに対するフィルタ処理定義の例を示す図である。同図に示されるフィルタ処理定義において、「フィルタ条件」には、「描画データに文字列「マル秘」が有る」が設定されている。また、「加工内容」には、「追加：＠ｉＰＪＬ  ＳＥＴ  ＪＩＭＯＮ＝ＯＮ」が設定されている。したがって、当該フィルタ処理定義は、「描画データに文字列「マル秘」が有る場合には、＠ｉＰＪＬ  ＳＥＴ  ＪＩＭＯＮ＝ＯＮを追加する」という処理内容を示す。これは、「（中間データの）描画データに文字列「マル秘」が含まれている場合は、地紋印刷を行う」ということを意味する。
【００７４】
マル秘時地紋プラグイン１７ｂのフィルタプラグイン処理部１７２ｂは、図１０に示されるフィルタ処理定義がフィルタ処理定義記憶部１８に含まれており、かつ、当該フィルタ処理定義に設定されているフィルタ条件が満たされる場合、当該フィルタ処理定義における加工内容によって示される加工を中間データに対して行う（Ｓ２４）。したがって、中間データの描画データに文字列「マル秘」が含まれているとすると、フィルタプラグイン処理部１７２ｂは、中間データの制御データの末尾に、「＠ｉＰＪＬ  ＳＥＴ  ＪＩＭＯＮ＝ＯＮ」を追加する。なお、中間データに基づいて生成される印刷データにおいて、同じ印刷コマンドが複数含まれている場合、後に記述されている方が有効とされる。したがって、中間データの制御データに、「＠ｉＰＪＬ  ＳＥＴ  ＪＩＭＯＮ＝ＯＦＦ」が含まれている場合に、当該制御データの末尾に「＠ｉＰＪＬ  ＳＥＴ  ＪＩＭＯＮ＝ＯＮ」が追加されると、実質的に前者の中間コマンドは、後者の中間コマンドに変更されたことになる。但し、フィルタプラグイン処理部１７２ｂは、中間コマンドの重複を確認し、同一の中間コマンドが存在する場合は、新たな設定値によって、当該中間コマンドの記載を置き換える（変更する）ようにしてもよい。
【００７５】
その後、図７において説明した処理手順と同様の処理手順を経て、中間データは、地紋プラグイン１６ａのプラグイン後処理部１６３ａに入力される。プラグイン後処理部１６３ａは、自らが解釈可能な地紋印刷中間コマンドについて、印刷コマンドへの変換を実行する（Ｓ２５）。すなわち、「＠ｉＰＪＬ  ＳＥＴ  ＪＩＭＯＮ＝ＯＮ」が印刷コマンド「＠ＰＪＬ  ＳＥＴ  ＪＩＭＯＮ＝ＯＮ」に変換される。
【００７６】
印刷コマンド生成部１３５及びプラグイン後処理部１６３ａによって変換された印刷データは、後処理部１３４を経てプラインタ２０に送信される。
【００７７】
このように、図９では、文字列「マル秘」が含まれる文書について印刷が行われる場合は、ユーザによって地紋印刷が設定されていなくても、地紋印刷が強制的に実行される。
【００７８】
続いて、図１１は、第三の印刷処理の処理手順を説明するための図である。同図では、ドライバプラグイン１６としてデータ蓄積プラグイン１６ｃがインストールされ、フィルタプラグイン１７として集約時蓄積無効化プラグイン１７ｃがインストールされている状態が示されている。
【００７９】
データ蓄積プラグイン１６ｃは、データ蓄積機能に対応したドライバプラグイン１６である。データ蓄積機能とは、プリンタ２０が、受信した印刷データをプリンタ２０の不揮発性の記憶装置に保存する機能をいい、第三の印刷処理において拡張機能に該当する。集約時蓄積無効化プラグイン１７ｃは、２ｉｎ１印刷が実行される場合に、データ蓄積機能を強制的に無効化させるためのフィルタプラグイン１７である。
【００８０】
まず、印刷設定情報の設定時において、ドライバＵＩ部１３１が表示させている印刷設定ダイアログを介して２ｉｎ１印刷を行うことが設定されると、ドライバＵＩ部１３１は、ＤＥＶＭＯＤＥ構造体において集約数に対応するメンバ変数「ＮＵＰ」に「２」を設定する（Ｓ３１）。続いて、印刷設定ダイアログの所定のボタンが押下されると、データ蓄積プラグイン１６ｃのドライバプラグインＵＩ部１６１ｃは、データ蓄積するか否かを設定させるための蓄積設定画面を表示させる。蓄積設定画面においてデータ蓄積をすることが設定されると、ドライバプラグインＵＩ部１６１ｃは、ＤＥＶＭＯＤＥ構造体においてデータ蓄積に対応するメンバ変数「ＤＡＴＡＳＴＯＲＥ」に対して「ＯＮ」を設定する（Ｓ３２）。
【００８１】
その後、印刷設定ダイアログを介して印刷の実行指示が入力されると、プリンタドライバ１３の前処理部１３２には、メンバ変数「ＮＵＰ」に対して「２」が設定され、かつ、メンバ変数「ＤＡＴＡＳＯＴＲＥ」に対して「ＯＮ」が設定されたＤＥＶＭＯＤＥ構造体が入力される（Ｓ３３）。
【００８２】
当該ＤＥＶＭＯＤＥ構造体は、前処理部１３２によって中間コマンド生成部１３３に入力される。中間コマンド生成部１３３は、ＤＥＶＭＯＤＥ構造体において基本項目に対応するメンバ変数に関して中間コマンドへの変更を実行する。例えば、２ｉｎ１印刷の設定内容に関して中間コマンド「＠ｉＰＪＬ  ＳＥＴ  ＮＵＰ＝２ＩＮ１」への変換が実行される（Ｓ３４）。続いて、中間コマンド生成部１３３は、ＤＥＶＭＯＤＥ構造体をデータ蓄積プラグイン１６ｃのプラグイン前処理部１６２ｃに入力する。
【００８３】
データ蓄積プラグイン１６ｃのプラグイン前処理部１６２ｃは、ＤＥＶＭＯＤＥ構造体においてデータ蓄積機能に対する設定内容「ＤＡＴＡＳＴＯＲＥ：ＯＮ」を中間コマンド（以下、「データ蓄積中間コマンド」という。）に変換する（Ｓ３４）。本実施の形態おいて、データ蓄積中間コマンドは、「＠ｉＰＪＬ  ＳＥＴ  ＤＡＴＡＳＴＯＲＥ」と表記される。なお、データ蓄積中間コマンドは、拡張中間コマンドである。
【００８４】
その後、データ蓄積中間コマンド等を含む中間データは、図７において説明した処理手順と同様の処理手順を経て、集約時蓄積無効化プラグイン１７ｃのフィルタプラグイン処理部１７２ｃに入力される。フィルタプラグイン処理部１７２ｃは、フィルタ処理定義記憶部１８に記録されているフィルタ処理定義の中で、自らに対応するフィルタ処理定義に基づいて、拡張中間コマンドに関して、中間データに対する加工処理を実行する。
【００８５】
図１２は、第三の印刷処理における集約時蓄積無効化プラグインに対するフィルタ処理定義の例を示す図である。同図に示されるフィルタ処理定義において、「フィルタ条件」には、「＠ｉＰＪＬ  ＳＥＴ  ＮＵＰ＝２ＩＮ１」が設定されている。また、「加工内容」には、「削除：＠ｉＰＪＬ  ＳＥＴ  ＤＡＴＡＳＴＯＲＥ」が設定されている。したがって、当該フィルタ処理定義は、「＠ｉＰＪＬ  ＳＥＴ  ＮＵＰ＝２ＩＮ１で設定されている場合には、＠ｉＰＪＬ  ＳＥＴ  ＤＡＴＡＳＴＯＲＥを削除する」という処理内容を示す。これは、「２ｉｎ１印刷を行う場合は、データ蓄積は行わない」ということを意味する。
【００８６】
集約時蓄積無効化プラグイン１７ｃのフィルタプラグイン処理部１７２ｃは、図１２に示されるフィルタ１４内容がフィルタ処理定義記憶部１８に含まれており、かつ、当該フィルタ処理定義に設定されているフィルタ条件が満たされる場合、当該フィルタ処理定義における加工内容によって示される加工を中間データに対して行う（Ｓ３６）。したがって、データ蓄積中間コマンド「＠ｉＰＪＬ  ＳＥＴ  ＤＡＴＡＳＴＯＲＥ」が中間データより削除される。ここで、データ蓄積中間コマンドを、変更ではなく削除するのは、データ蓄積中間コマンドは、当該コマンドの有無によってデータ蓄積機能の有効又は無効を示す中間コマンドだからである。本実施の形態において、各フィルタプラグイン１７には、拡張中間コマンドだけではなく、中間データの全てが入力される。また、フィルタプラグイン１７は、自らが加工後の中間データの全てを出力する。そうすることにより、フィルタプラグイン１７による中間コマンドの削除が可能とされている。
【００８７】
その後、図７において説明した処理手順と同様の処理手順を経て、中間データは、印刷コマンド生成部１３５に入力される。印刷コマンド生成部１３５は、基本中間コマンドである「＠ｉＰＪＬ  ＳＥＴ  ＮＵＰ＝２ＩＮ１」を、印刷コマンド「＠ＰＪＬ  ＳＥＴ  ＮＵＰ＝２ＩＮ１」に変換する（Ｓ３７）。中間データは、データ蓄積プラグイン１６ｃのプラグイン後処理部１６３ｃにも入力されるが、図１１の例では、拡張中間コマンドは削除されてしまっている。したがって、プラグイン後処理部１６３ｃによる変換処理は実行されない。
【００８８】
印刷コマンド生成部１３５によって変換された印刷データは、後処理部１３４を経てプラインタ２０に送信される。
【００８９】
このように、図１１では、２ｉｎ１印刷が実行される場合は、ユーザによってデータ蓄積機能が設定されていても、データ蓄積機能は強制的に無効化される。
【００９０】
続いて、印刷処理におけるフィルタ１４の処理内容について、更に詳細に説明する。図１３は、印刷処理におけるフィルタ処理の処理手順を説明するためのフローチャートである。
【００９１】
ステップＳ１０１において、フィルタ１４のフィルタ処理部１４２は、前処理部１３２より中間データの入力を受け付ける。続いて、フィルタ処理部１４２は、基本中間コマンドに関するフィルタ処理定義（以下、「基本フィルタ処理定義」という。）をフィルタ処理定義記憶部１８より取得する（Ｓ１０２）。基本フィルタ処理定義とは、拡張中間コマンドに関する記述が、フィルタ条件及び加工内容の双方に含まれていないフィルタ処理定義をいう。
【００９２】
基本フィルタ処理定義が取得された場合（Ｓ１０３でＹｅｓ）、フィルタ処理部１４２は、取得された基本フィルタ処理定義の中で、フィルタ条件が満たされるものの有無を中間データを参照して判定する（Ｓ１０４）。フィルタ条件が満たされる基本フィルタ処理定義が有る場合（Ｓ１０４でＹｅｓ）、フィルタ処理部１４２は、当該基本フィルタ処理定義の加工内容によって示される加工処理を中間データに対して実行する（Ｓ１０５）。すなわち、中間データの制御データ内の中間コマンドについて、追加、変更、又は削除が実行される。または、中間データの描画データを加工対象とする加工内容が定義されている場合、描画データに対して加工が実行される。なお、印刷対象の文書データが複数ページである場合、全ページについて加工処理が行われる。すなわち、１ページごとにフィルタ１４及び各フィルタプラグイン１７による加工処理がループするのではなく、フィルタ１４ごと、フィルタプラグイン１７ごとに、全ページに対する加工処理が一括して行われる。
【００９３】
続いて、フィルタ処理部１４２は、フィルタプラグイン情報記憶部１９を参照して、フィルタプラグイン１７の有無を判定する（Ｓ１０６）。
【００９４】
図１４は、フィルタプラグイン情報記憶部の構成例を示す図である。同図において、フィルタプラグイン情報記憶部１９は、情報処理装置１０にインストールされているフィルタプラグイン１７ごとに、名前、ＵＩ部、及び処理部等の項目を記憶する。名前は、フィルタプラグイン１７の名前である。ＵＩ部は、情報処理装置１０をフィルタプラグインＵＩ部１７１として機能させるためのプログラムファイル（例えば、ＤＬＬ（Dynamic Link Library））のファイル名である。処理部は、情報処理装置１０をフィルタプラグイン処理部１７２として機能させるためのプログラムファイルのファイル名である。同図では、地紋時集約プラグインについて、ＵＩ部及び処理部に対して同じファイル名が登録されている例が示されているが、それぞれが異なっていてもよい。ＵＩ部及び処理部が同じプログラムファイルに含まれる場合、フィルタプラグインＵＩ部１７１とフィルタプラグイン処理部１７２とは、例えば、同一のプログラムファイル内において異なる関数又はメソッドとして実装される。
【００９５】
フィルタプラグイン情報記憶部１９は、明示的にテーブル等として形成されなくてもよい。例えば、インストールされたフィルタプラグイン１７のプログラムファイルが所定のフォルダ内に保存される場合、当該フォルダ自体がフィルタプラグイン情報記憶部１９として機能する。すなわち、当該フォルダ内のファイル名の一覧は、フィルタプラグイン１７の一覧情報となる。なお、フィルタプラグイン情報記憶部１９の内容は、フィルタプラグイン１７のインストール又はアンインストールによって更新される。
【００９６】
フィルタプラグイン１７が存在する（インストールされている）場合、すなわち、フィルタプラグイン情報記憶部１９に、少なくとも一つのレコードが登録されている場合（Ｓ１０６でＹｅｓ）、フィルタ処理部１４２は、先頭のフィルタプラグイン１７のフィルタプラグイン処理部１７２を呼び出す（Ｓ１０７）。すなわち、当該フィルタプラグイン１７のフィルタプラグイン処理部１７２に中間データが入力される。先頭のフィルタプラグイン１７とは、フィルタプラグイン１７の順序関係において先頭のフィルタプラグイン１７をいう。フィルタプラグイン１７の順序関係は、任意に定められてよい。例えば、フィルタプラグイン情報記憶部１９における記録順であってもよい。
【００９７】
続いて、中間データの入力先のフィルタプラグイン１７によって中間データの加工処理（フィルタプラグイン処理）が実行される（Ｓ１０８）。なお、フィルタプラグイン１７がインストールされていない場合（Ｓ１０６でＮｏ）、ステップＳ１０７及びＳ１０８は実行されない。
【００９８】
ステップＳ１０６でＮｏの場合、又はステップＳ１０８に続いて、フィルタ処理部１４２は、加工後の中間データを出力する（Ｓ１０９）。出力された中間データは、後処理部１３４に入力される。
【００９９】
続いて、ステップＳ１０８の詳細について説明する。図１５は、印刷処理におけるフィルタプラグイン処理の処理手順を説明するためのフローチャートである。なお、同図の処理手順は、各フィルタプラグイン１７が共通に実行するものである。但し、ステップＳ２０５の具体的な処理内容（加工内容）については、フィルタプラグイン１７ごとに異なりうる。
【０１００】
ステップＳ２０１において、呼び出されたフィルタプラグイン１７のフィルタプラグイン処理部１７２は、中間データの入力を受け付ける。続いて、フィルタプラグイン処理部１７２は、当該フィルタプラグイン１７が対応する拡張中間コマンドに関するフィルタ処理定義（以下、「拡張フィルタ処理定義」という。）をフィルタ処理定義記憶部１８より取得する（Ｓ２０２）。拡張フィルタ処理定義とは、拡張中間コマンドに関する記述が、フィルタ条件及び加工内容の少なくともいずれか一方に含まれているフィルタ処理定義をいう。
【０１０１】
該当する拡張フィルタ処理定義が取得された場合（Ｓ２０３でＹｅｓ）、フィルタプラグイン処理部１７２は、取得された拡張フィルタ処理定義の中で、フィルタ条件が満たされるものの有無を中間データを参照して判定する（Ｓ２０４）。フィルタ条件が満たされる拡張フィルタ処理定義が有る場合（Ｓ２０４でＹｅｓ）、フィルタプラグイン処理部１７２は、当該拡張フィルタ処理定義の加工内容によって示される加工処理を中間データに対して実行する（Ｓ２０５）。すなわち、中間データの制御データ内の中間コマンドについて、追加、変更、又は削除が実行される。または、中間データの描画データを加工対象とする加工内容が定義されている場合、描画データに対して加工が実行される。なお、印刷対象の文書データが複数ページである場合、全ページについて加工処理が行われる。
【０１０２】
続いて、フィルタプラグイン処理部１７２は、フィルタプラグイン情報記憶部１９を参照して、次のフィルタプラグイン１７の有無を判定する（Ｓ２０６）。次のフィルタプラグイン１７が存在する（インストールされている）場合（Ｓ２０６でＹｅｓ）、フィルタプラグイン処理部１７２は、次のフィルタプラグイン１７のフィルタプラグイン処理部１７２を呼び出す（Ｓ２０７）。すなわち、当該フィルタプラグイン１７のフィルタプラグイン処理部１７２に中間データが入力される。続いて、次のフィルタプラグイン１７によって加工処理（図１５に示されるフィルタプラグイン処理）が実行される（Ｓ２０８）。その後、次のフィルタプラグイン１７より中間データが出力されると、フィルタプラグイン処理部１７２は、当該中間データを、呼び出し元のフィルタ１４又はフィルタプラグイン１７に出力する（Ｓ２０９）。なお、次のフィルタプラグイン１７が無い場合（Ｓ２０６でＮｏ）、ステップＳ２０７及びＳ２０８は実行されない。
【０１０３】
続いて、フィルタ処理定義の設定処理について説明する。図１６は、フィルタ処理定義の設定処理の処理手順を説明するためのシーケンス図である。
【０１０４】
ユーザによって、フィルタ設定部１５が起動されると、フィルタ設定部１５は、フィルタ１４のフィルタＵＩ部１４１を呼び出す（Ｓ３０１）。なお、本実施の形態において、フィルタ設定部１５は、ＥＸＥファイルのように、一つのプロセスとして起動されるプログラムであり、フィルタ１４は、ＤＬＬのように、プロセス内で呼び出されるプログラムであるとする。但し、各部の実装形態については、所定のものに限定されない。
【０１０５】
続いて、フィルタＵＩ部１４１は、フィルタ設定画面を表示装置１０６に表示させる（Ｓ３０２）。
【０１０６】
図１７は、フィルタ設定画面の一例を示す図である。同図において、フィルタ設定画面６００は、キーワードシート６１０、基本シート６２０、編集シート６３０、仕上げシート６４０、その他シート６５０、及び印刷品質シート６６０等、複数のシート（画面）を含む。
【０１０７】
基本シート６１０は、フィルタ処理定義におけるフィルタ条件等を設定させるためのシートであり、タイトル設定領域６１１、検知文字列設定領域６１２、プリンタ条件設定領域６１３，検索範囲設定領域６１４、及びプラグインボタン６１５等を含む。
【０１０８】
タイトル設定領域６１１は、フィルタ処理定義のタイトルを入力させるための領域である。図８、図１０、及び図１２等では省略されているが、各フィルタ処理定義には、それぞれタイトルが設定されうる。
【０１０９】
検知文字列設定領域６１２は、中間データ内に所定の文字列が含まれていることをフィルタ条件とする場合に、検索対象とする文字列等を設定させるための領域である。例えば、テキストボックス６１２ａは、中間データの描画データ内において検知対象とする文字列を設定させるためのテキストボックスである。テキストボックス６１２ｂは、ジョブ名に対して検知対象とする文字列を設定するためのテキストボックスである。
【０１１０】
プリンタ条件設定領域６１３は、印刷先のプリンタをフィルタ条件とする場合に、プリンタ名を選択させるための領域である。
【０１１１】
検索範囲設定領域６１４は、検知文字列設定領域６１２において設定された文字列の検索範囲（すべてのページ又は特定のページ）を設定させるための領域である。
【０１１２】
プラグインボタン６１５は、フィルタプラグイン１７がインストールされている場合に、当該フィルタプラグイン１７に関するフィルタ処理定義を設定させるための画面（以下、「フィルタプラグイン設定画面」という。）を表示させるためのボタン（表示部品）である。すなわち、フィルタＵＩ部１４１は、フィルタプラグイン情報記憶部１９を参照して、少なくとも一つのフィルタプラグイン１７がインストールされている場合は、プラグインボタン６１５を操作可能な状態で表示させ、フィルタプラグイン１７が一つもインストールされていない場合は、プラグインボタン６１５を非表示とする。または、フィルタプラグイン１７が一つもインストールされていない場合、プラグインボタン６１５は、グレイアウトされた状態で（すなわち、操作不能な状態で）表示されてもよい。また、フィルタプラグイン１７が複数存在する場合、それぞれに対応するプラグインボタン６１５を表示させてもよいし、メニュー等、複数の選択肢からの選択に適した表示部品おいて、各フィルタプラグイン１７を選択肢として表示させるようにしてもよい。
【０１１３】
なお、同図では、基本項目に関するフィルタ条件（例えば、２ｉｎ１が設定されていることに関するフィルタ条件）を設定する領域は省略されている。
【０１１４】
一方、基本シート６２０等では、キーワードシート６１０におけるフィルタ条件に合致した場合の印刷態様が設定される。当該印刷態様の設定は、例えば、印刷設定ダイアログにおいて設定される内容とほぼ同様の内容である。したがって、図８等では、フィルタ処理定義を簡略化して示したが、一つのフィルタ条件に対して、複数の加工内容が設定されうる。
【０１１５】
フィルタ設定画面６００において、少なくともキーワードシート６１０に対する設定が行われ、プラグインボタン６１５が押下されると、フィルタＵＩ部１４１は、押下されたプラグインボタンに対応するフィルタプラグイン１７のフィルタプラグインＵＩ部１７１を呼び出す（Ｓ３０３）。
【０１１６】
呼び出されたフィルタプラグインＵＩ部１７１は、当該フィルタプラグイン１７のフィルタプラグイン設定画面を表示装置１０６に表示させる（Ｓ３０４）。
【０１１７】
図１８は、フィルタプラグイン設定画面の一例を示す図である。同図は、地紋時集約プラグイン１７ａに対するフィルタプラグイン設定画面７００が例示されている。フィルタプラグイン設定画面７００は、地紋印刷時に集約を実行するか否かを選択させるためのチェックボタン７１０を有する。チェックボタン７１０がチェックされた場合、地紋印刷時に集約を実行するという加工内容が設定されたこととなる。この場合のフィルタ条件は、フィルタ設定画面６００の基本シート６１０において設定されたものとなる。但し、フィルタプラグイン設定画面７００において、個別にフィルタ条件が設定可能とされてもよい。特に、拡張機能をフィルタ条件とする場合（すなわち、拡張中間コマンドに対する設定をフィルタ条件とする場合）、フィルタプラグイン設定画面において独自のフィルタ条件を設定可能とするとよい。
【０１１８】
フィルタプラグイン設定画面における設定が終了し（Ｓ３０５）、フィルタ設定画面６００において保存が指示されると（「ＯＫボタン」が押下されると）、フィルタＵＩ部１４１は、フィルタ設定画面６００及びフィルタプラグイン設定画面における設定内容をフィルタ処理定義記憶部１８に記録する（Ｓ３０６）。一回の操作（図１６の処理手順の一回の実行）によって、一つのフィルタ処理定義が生成される。
【０１１９】
なお、本実施の形態では、フィルタ１４に関するフィルタ処理定義と、フィルタプラグイン１７に関するフィルタ処理定義とを混在させてフィルタ処理定義記憶部１８に記録する例について説明したが、フィルタ１４及び各フィルタプラグイン１７に対するフィルタ処理定義が区別されて保存されてもよい。区別の仕方は所定の形態に限定されない。それぞれが異なるファイル（テーブル）に記録されてもよいし、一つのファイル（テーブル）内において、フィルタ処理定義ごとに、フィルタ１４又は各フィルタプラグイン１７の識別情報が付加されてもよい。
【０１２０】
上述したように、本実施の形態によれば、プリンタドライバ１３の機能拡張に応じて、フィルタプラグイン１７によって中間データの加工処理を拡張させることができる。フィルタプラグイン１７は、フィルタ１４とは独立してインストール又はアンインストールが可能なプログラムであるため、機能拡張に応じて柔軟に構成を変更することができる。
【０１２１】
なお、本実施の形態では、プリンタドライバ１３の機能拡張の形態として、ドライバプラグイン１６を追加する例を示した。但し、フィルタプラグイン１７によって対応可能なプリンタドライバ１３の機能拡張の形態は所定のものに限定されない。例えば、プリンタドライバ１３のソースコードの変更によってプリンタドライバ１３の機能拡張が行われる場合において、フィルタプラグイン１７によって当該機能拡張に対する対応が行われてもよい。
【０１２２】
また、ドライバプラグイン１６によってプリンタドライバ１３の機能拡張が行われる場合、ドライバプラグイン１６の一部としてフィルタプラグイン１７が実装されてもよい。
【０１２３】
図１９は、ドライバプラグインの一部としてフィルタプラグインが実装された場合の情報処理装置のソフトウェア構成例を示す図である。同図では、ドライバプラグイン１６の中にフィルタプラグイン１７が含まれている例が示されている。例えば、ドライバプラグイン１６としてのＤＬＬの関数としてフィルタプラグイン１７が実装された例である。このような形態によれば、ドライバプラグイン１６をインストールすることで、フィルタ１４に関しても機能拡張を図ることができる。したがって、インストール作業等の作業負担を軽減することができる。
【０１２４】
なお、ドライバプラグイン１６やフィルタプラグイン１７の実装形態は、ＤＬＬに限定されない。実装に使用するプラグラム言語や、動作環境（ＯＳ（Operating System）等）に応じて、適宜適切な実装形態が選択されればよい。
【０１２５】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【０１２６】
１            印刷システム
１０          情報処理装置
１１          アプリケーション
１２          ＧＤＩ
１３          プリンタドライバ
１４          フィルタ
１５          フィルタ設定部
１６          ドライバプラグイン
１６ａ        地紋プラグイン
１６ｃ        データ蓄積プラグイン
１７          フィルタプラグイン
１７ａ        地紋時集約プラグイン
１７ｂ        マル秘時地紋プラグイン
１７ｃ        集約時蓄積無効化プラグイン
１８          フィルタ処理定義記憶部
１９          フィルタプラグイン情報記憶部
２０          プリンタ
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１０６        表示装置
１０７        入力装置
１３１        ドライバＵＩ部
１３２        前処理部
１３３        中間コマンド生成部
１３４        後処理部
１３５        印刷コマンド生成部
１４１        フィルタＵＩ部
１４２        フィルタ処理部
１６１        ドライバプラグインＵＩ部
１６２        プラグイン前処理部
１６３        プラグイン後処理部
１７１        フィルタプラグインＵＩ部
１７２        フィルタプラグイン処理部
Ｂ            バス
【先行技術文献】
【特許文献】
【０１２７】
【特許文献１】特開２００９−１４６３２１号公報
【特許文献２】特開２００８−９７５７４号公報
【図１】
2011257975.tif 000003
【図２】
2011257975.tif 000004
【図３】
2011257975.tif 000005
【図４】
2011257975.tif 000006
【図５】
2011257975.tif 000007
【図６】
2011257975.tif 000008
【図７】
2011257975.tif 000009
【図８】
2011257975.tif 000010
【図９】
2011257975.tif 000011
【図１０】
2011257975.tif 000012
【図１１】
2011257975.tif 000013
【図１２】
2011257975.tif 000014
【図１３】
2011257975.tif 000015
【図１４】
2011257975.tif 000016
【図１５】
2011257975.tif 000017
【図１６】
2011257975.tif 000018
【図１７】
2011257975.tif 000019
【図１８】
2011257975.tif 000020
【図１９】
2011257975.tif 000021