(57)【要約】      （修正有）【課題】所定の印刷プロトコルに則する印刷ジョブを生成するプリンタドライバを用いて印刷ジョブを送信可能であり、かつ、所定の印刷プロトコルと異なる他の印刷プロトコルを用いる印刷装置にも適切に印刷ジョブを送信できる仕組みを提供する。【解決手段】情報処理装置は、所定の印刷プロトコルに従った印刷命令を生成するプリンタドライバと、所定の印刷プロトコルと異なる他の印刷プロトコルに従った印刷命令を生成するための１又は複数の拡張モジュールと、他の印刷プロトコルに従った印刷命令を生成するために使用する１又は複数のモジュールを示す情報を保持する保持手段と、プリンタドライバが取得した印刷データを、情報が示す１又は複数のモジュールが処理することによって得られる、他の印刷プロトコルに従った印刷命令を出力する出力手段とを有する。【選択図】図４
2020046741.tif 000002
【特許請求の範囲】
【請求項１】
データ生成アプリケーションから取得した印刷データに基づいて、所定の印刷プロトコルに従った印刷命令を生成するプリンタドライバと、
前記所定の印刷プロトコルと異なる他の印刷プロトコルに従った印刷命令を生成するための１又は複数の拡張モジュールと、
前記プリンタドライバに含まれる印刷命令生成モジュールと、前記１又は複数の拡張モジュールのうち、前記他の印刷プロトコルに従った印刷命令を生成するために使用する１又は複数のモジュールを示す情報を保持する保持手段と、
前記プリンタドライバが取得した印刷データを、前記情報が示す前記１又は複数のモジュールが処理することによって得られる、前記他の印刷プロトコルに従った印刷命令を出力する出力手段と
を有することを特徴とする情報処理装置。
【請求項２】
前記保持手段が保持する前記情報は、前記他の印刷プロトコルに従った印刷命令を生成するために前記１又は複数のモジュールを使用する順序を示す情報であることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記出力手段は、前記データ生成アプリケーションから取得した前記印刷データに基づいて、前記所定の印刷プロトコルに従った第１の印刷命令を出力可能であり、かつ、前記データ生成アプリケーションから取得した前記印刷データに基づいて、前記他の印刷プロトコルに従った印刷命令を出力可能であることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記出力手段は、前記印刷データに基づいて印刷を行う印刷装置が印刷処理に用いる印刷データの形式を示す情報に応じて、前記第１の印刷命令又は前記第２の印刷命令を出力することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記１又は複数の拡張モジュールは、前記情報に従い、前記プリンタドライバが前記所定の印刷プロトコルに従って生成した印刷命令に基づいて、前記他の印刷プロトコルに従った印刷命令を生成可能であり、
前記出力手段は、前記１又は複数の拡張モジュールが生成した、前記他の印刷プロトコルに従った印刷命令を出力することを特徴とする請求項１から４のうちいずれか１項に記載の情報処理装置。
【請求項６】
前記１又は複数の拡張モジュールは、前記情報に従い、前記プリンタドライバによる印刷命令の生成なしに、前記データ生成アプリケーションから出力された印刷データを用いて、前記他の印刷プロトコルに従った印刷命令を生成可能であり、
前記出力手段は、前記プリンタドライバが前記所定の印刷プロトコルに従って印刷命令を生成することなしに前記１又は複数の拡張モジュールが生成した、前記他の印刷プロトコルに従った印刷命令を出力可能であることを特徴とする請求項１から４のうちいずれか１項に記載の情報処理装置。
【請求項７】
前記情報処理装置にネットワークを介して接続される外部装置と通信する通信手段を有し、
前記出力手段は、前記外部装置が有する拡張モジュールであって、前記所定の印刷プロトコルと異なる他の印刷プロトコルに従った印刷命令を生成するための拡張モジュールが前記プリンタドライバが取得した印刷データを処理することによって得られる、前記他の印刷プロトコルに従った印刷命令を出力することを特徴とする請求項１から６のうちいずれか１項に記載の情報処理装置。
【請求項８】
前記印刷データに基づいて印刷を行う印刷装置が印刷処理に用いる印刷データの形式に応じた印刷命令を生成するための前記情報が前記保持手段に保持されていない場合には、前記出力手段は、前記所定の印刷プロトコルに従った印刷命令を出力することを特徴とする請求項４に記載の情報処理装置。
【請求項９】
前記所定の印刷プロトコルは、複数台の印刷装置に共通して実行可能な印刷命令の形式を規定する印刷プロトコルであり、
前記他の印刷プロトコルは、前記複数台の印刷装置のうち１台の印刷装置が実行可能な印刷命令の形式であって、かつ、前記複数台の印刷装置のうち他の１台の印刷装置が実行できない印刷命令の形式を示す印刷プロトコルであることを特徴とする請求項１から８のうちいずれか１項に記載の情報処理装置。
【請求項１０】
前記所定の印刷プロトコルはＩｎｔｅｒｎｅｔ  Ｐｒｉｎｔｉｎｇ  Ｐｒｏｔｏｃｏｌ（ＩＰＰ）であることを特徴とする請求項１から９のうちいずれか１項に記載の情報処理装置。
【請求項１１】
データ生成アプリケーションから取得した印刷データに基づいて、所定の印刷プロトコルに従った印刷命令を生成するプリンタドライバと、前記所定の印刷プロトコルと異なる他の印刷プロトコルに従った印刷命令を生成するための１又は複数の拡張モジュールと、前記プリンタドライバに含まれる印刷命令生成モジュールと、前記１又は複数の拡張モジュールのうち、前記他の印刷プロトコルに従った印刷命令を生成するために使用する１又は複数のモジュールを示す情報を保持する保持手段と、
を有する情報処理装置の制御方法であって、
前記プリンタドライバが取得した印刷データを、前記情報が示す前記１又は複数のモジュールが処理することによって得られる、前記他の印刷プロトコルに従った印刷命令を出力する出力ステップ
を有することを特徴とする制御方法。
【請求項１２】
データ生成アプリケーションから取得した印刷データに基づいて、所定の印刷プロトコルに従った印刷命令を生成するプリンタドライバと、前記所定の印刷プロトコルと異なる他の印刷プロトコルに従った印刷命令を生成するための１又は複数の拡張モジュールと、前記プリンタドライバに含まれる印刷命令生成モジュールと、前記１又は複数の拡張モジュールのうち、前記他の印刷プロトコルに従った印刷命令を生成するために使用する１又は複数のモジュールを示す情報を保持する保持手段と、
を有する情報処理装置に、
前記プリンタドライバが取得した印刷データを、前記情報が示す前記１又は複数のモジュールが処理することによって得られる、前記他の印刷プロトコルに従った印刷命令を出力する出力手順を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
印刷命令を生成する情報処理装置、情報処理装置の制御方法、及び、プログラムに関する。
【背景技術】
【０００２】
プリンタドライバを利用し、印刷装置に対して印刷ジョブを送信する構成が一般に知られている。情報処理装置には、基本ソフトウェアであるオペレーティングシステム（ＯＳ）がインストールされており、プリンタドライバはそのＯＳの規定するプリントアーキテクチャに従って構成され、ＯＳから呼び出されて動作する。印刷装置を提供するベンダは、ＯＳの仕様に適合するプリンタドライバを提供する。ＯＳとプリンタドライバは、協働して出力先の印刷装置を用いて印刷を行う機能を実現する。
【０００３】
ところで、ＯＳとしてＭｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ（登録商標）８．１以降のバージョンを利用する場合のプリンタドライバとして、Ｖ４プリンタドライバと呼ばれるアーキテクチャが登場している。Ｖ４プリンタドライバでは、印刷装置を提供するベンダが、プリンタドライバの機能を補助するための専用のアプリケーションを提供することができる。このアプリケーションはＵＷＰ  Ｄｅｖｉｃｅ  Ａｐｐｓ（Ｕｎｉｖｅｒｓａｌ  Ｗｉｎｄｏｗｓ  Ｐｌａｔｆｏｒｍ  Ｄｅｖｉｃｅ  Ａｐｐｓ）と呼ばれる。ＵＷＰ  Ｄｅｖｉｃｅ  Ａｐｐｓは、ストアアプリケーション（ＷｉｎｄｏｗｓストアアプリケーションもしくはＷＳＡ）から取得して、情報処理装置にインストールすることができる。また、Ｖ４プリンタドライバには、ベンダ独自の印刷設定を行うための印刷設定アプリケーションであるＰｒｉｎｔｅｒＥｘｔｅｎｓｉｏｎを紐付けることができる。
【０００４】
また、従来、機能が異なる複数種類の印刷装置を制御するためのプリンタドライバとしてユニバーサルプリンタドライバと称されるプリンタドライバが知られている（特許文献１）。当該プリンタドライバでは、モデル毎に個々の印刷装置に適切な描画データに加工して印刷ジョブを生成することができる。
【０００５】
特許文献１に開示されているようなユニバーサルプリンタドライバは、ベンダ毎に提供されることが一般的である。従って、同じベンダが提供している複数種類の印刷装置については、１つのユニバーサルプリンタドライバで対応することができた。しかしながら、異なるベンダが提供する印刷装置に１つのユニバーサルプリンタドライバで対応することは困難であった。ユニバーサルプリンタドライバがサポートするＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）の形式は１種類、多くても２種類である。一方、各ベンダがサポートするＰＤＬの形式はベンダ独自に進化してきたものであり、印刷装置の特色を最大限に発揮できるような形式になっているため多種多様である。中には特定のＰＤＬのデータ形式しか受け付けない印刷装置もあり、それ以外のデータ形式を送信してしまうと、エラーが発生したり、指示と異なるデータを印刷したりしてしまう場合がある。
【０００６】
そこで、ＩＰＰ  Ｅｖｅｒｙｗｈｅｒｅ（登録商標）（非特許文献１）などに代表されるＩＰＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｉｎｔｉｎｇ  Ｐｒｏｔｏｃｏｌ）に準拠する仕組みの使用が検討されている。すなわちＩＰＰを利用した共通のプリンタドライバやプリントクライアントを提供することが考えられている。ＩＰＰ  Ｅｖｅｒｙｗｈｅｒｅは、ベンダの違い等によらず、様々な印刷装置において印刷を可能とするための印刷プロトコルである。
【０００７】
例えば、Ｕｂｕｎｔｕ（登録商標）１７．０４では、ＯＳのデフォルト機能として、ＩＰＰ  Ｅｖｅｒｙｗｈｅｒｅ（登録商標）に対応する印刷装置に対して印刷ジョブを送信する仕組みが搭載されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−３０１３１２号公報
【非特許文献】
【０００９】
【非特許文献１】ＩＰＰ  Ｅｖｅｒｙｗｈｅｒｅ  Ｃａｎｄｉｄａｔｅ  Ｓｔａｎｄａｒｄ  ５１００．１４−２０１３，  Ｔｈｅ  Ｐｒｉｎｔｅｒ  Ｗｏｒｋｉｎｇ  Ｇｒｏｕｐ  ｈｔｔｐｓ：／／ｆｔｐ．ｐｗｇ．ｏｒｇ／ｐｕｂ／ｐｗｇ／ｃａｎｄｉｄａｔｅｓ／ｃｓ−ｉｐｐｅｖｅ１０−２０１３０１２８−５１００．１４．ｐｄｆ
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、ＩＰＰ等の印刷プロトコルに準拠する共通のプリンタドライバでは、ベンダが独自に提供する機能を利用することができない。あるいは、ベンダ独自のＰＤＬのデータを正しく出力できないという課題がある。
【００１１】
そこで本発明は、所定の印刷プロトコルを用いた、印刷装置の印刷形式の違いによらない印刷命令を出力可能であり、且つ、所定の印刷プロトコルと異なる固有の印刷プロトコルを用いた印刷命令を出力可能な情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明に係る情報処理装置は以下の構成を有する。すなわち、データ生成アプリケーションから取得した印刷データに基づいて、所定の印刷プロトコルに従った印刷命令を生成するプリンタドライバと、前記所定の印刷プロトコルと異なる他の印刷プロトコルに従った印刷命令を生成するための１又は複数の拡張モジュールと、前記プリンタドライバに含まれる印刷命令生成モジュールと、前記１又は複数の拡張モジュールのうち、前記他の印刷プロトコルに従った印刷命令を生成するために使用する１又は複数のモジュールを示す情報を保持する保持手段と、前記プリンタドライバが取得した印刷データを、前記情報が示す前記１又は複数のモジュールが処理することによって得られる、前記他の印刷プロトコルに従った印刷命令を出力する出力手段とを有する。
【発明の効果】
【００１３】
上記の構成によれば、情報処理装置は、ＩＰＰ等の所定の印刷プロトコルを利用可能な共通プリンタドライバを使用するので、印刷装置のベンダの違いによらない印刷命令を出力することができる。さらに上記の構成によれば、情報処理装置は、上記の所定の印刷プロトコルと異なる固有の印刷プロトコルを用いた印刷命令を出力することができる。従って、情報処理装置のユーザは、固有の印刷プロトコルを用いることにより利用可能となる、固有の印刷機能を利用することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】印刷システムの一例を示す図である。
【図２】コンピュータ１００のハードウェア構成の一例を示す図である。
【図３（ａ）】コンピュータ１００のソフトウェア構成の一例を示す図である。
【図３（ｂ）】コンピュータ１００のドライバのソフトウェア構成の詳細を示す図である。
【図３（ｃ）】コンピュータ１００のソフトウェア構成の詳細を示す図である。
【図４】（ａ）から（ｃ）フィルタパイプラインコンフィグ４００の一例を示す図である。
【図５】第１の実施形態におけるベンダ拡張ＩＮＦパッケージのインストール処理手順を説明するフローチャートである。
【図６】ベンダ拡張ＩＮＦパッケージの一例を説明する図である。
【図７】第１の実施形態における印刷命令生成処理を説明するフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための実施形態について図面を用いて説明する。なお、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせのすべてが発明の解決手段に必須のものとは限らない。
【００１６】
＜第１の実施形態＞
まず図１を用いて、本実施形態に係る印刷システムの構成を説明する。本実施形態に係る印刷システムは、コンピュータ１００、プリンタ２００ａ〜ｃを含む。ネットワーク３００上には、コンピュータ１００、プリンタ２００ａ〜ｃが互いに通信可能に接続されている。なお、デバイス間の通信の形態は無線ネットワークを介した通信であってもよいし、有線ネットワークを介した通信であってもよい。また、無線ネットワークを介した通信の場合、ＩＥＥＥ８０２．１１に準拠するアクセスポイントを介した無線通信であってもよいし、Ｗｉ−Ｆｉ  Ｄｉｒｅｃｔ（登録商標）などの直接無線通信であってもよい。また、本実施形態では、印刷システムの一例として上記の構成を説明するが、これに限定されるものではない。１つ以上の通信装置と印刷とがネットワークを介して通信可能に接続されていればよい。
【００１７】
本実施形態では印刷ジョブを受信してシートに画像を印刷する印刷装置の一例として単機能のプリンタ２００ａ〜ｃを説明するが、これに限定されるものではない。印刷機能とスキャン機能を有するＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）などの装置であってもよい。
【００１８】
本実施形態では、プリンタ２００ａ〜ｃは異なるベンダにより製造されている例について説明する。プリンタ２００ａ〜ｃは、ＩＰＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｉｎｔｉｎｇ  Ｐｒｏｔｏｃｏｌ）に則する印刷ジョブ（印刷命令）をコンピュータ１００から受信し、当該印刷ジョブに基づいてシートに画像を印刷する。
【００１９】
また、プリンタ２００ａ〜ｃはＩＰＰとは異なる形式の印刷ジョブを受信し、解釈する機能も有している。例えば、プリンタ２００ａは、ＬＩＰＳ（登録商標、ＬＢＰ  Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｙｓｔｅｍ）形式に則するＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）データを含む印刷ジョブを解釈することができる。更に、プリンタ２００ａは、ＰＣＬ（登録商標、Ｐｒｉｎｔｅｒ  Ｃｏｍｍａｎｄ  Ｌａｎｇｕａｇｅ）形式に則するＰＤＬデータを含む印刷ジョブを解釈することができる。なお、ＬＩＰＳ形式は、ＵＦＲ（登録商標、Ｕｌｔｒａ  Ｆａｓｔ  Ｒｅｎｄｅｒｉｎｇ）形式とも呼ばれる。また、プリンタ２００ｂは、ＰＣＬ形式に則するＰＤＬデータを含む印刷ジョブを解釈することができる。その一方で、ＬＩＰＳ（ＵＦＲ）形式の印刷ジョブには対応していない。プリンタ２００ｃは、インクジェットプリンタであり、ＥＳＣ／Ｐ（登録商標、Ｅｐｓｏｎ  Ｓｔａｎｄａｒｄ  Ｃｏｄｅ  ｆｏｒ  Ｐｒｉｎｔｅｒ）に則する印刷ジョブを解釈することができる。しかしながら、ＰＣＬ形式やＬＩＰＳ形式の印刷ジョブには対応していない。
【００２０】
このように、プリンタのベンダ（製造元）が異なると、サポートするＰＤＬの種類が異なる。また、同じプリンタであっても、使用するＰＤＬの種別によっては、サポートする機能に差異がある。なお、各プリンタが解釈できるＰＤＬの種類は一例である。プリンタが解釈可能なＰＤＬの形式は、ＰＣＬ、ＬＩＰＳ、ＥＳＣ／Ｐ、の他に、ＲＰＣＳ（登録商標、Ｒｅｆｉｎｅｄ  Ｐｒｉｎｔｉｎｇ  Ｃｏｍｍａｎｄ  Ｓｔｒｅａｍ）などの形式であってもよい。また、Ｐｏｓｔ  Ｓｃｒｉｐｔ（登録商標）、ＡＲＴ（Ａｄｖａｎｃｅｄ  Ｒｅｎｄｅｒｉｎｇ  Ｔｏｏｌｓ）などの形式であってもよい。また、ＳＰＤＬ２（Ｓｈａｒｐ  Ｐｒｉｎｔｅｒ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ２）などの形式であってもよい。また、上述のＰＤＬに基づき派生した形式などであってもよい。各プリンタは上述のＰＤＬ形式、又は上述のＰＤＬ形式に基づき派生したＰＤＬ形式のうち、少なくとも１つの方式をサポートしているものとする。
【００２１】
続けて、情報処理装置の一例であるコンピュータ１００について説明する。本実施形態では、コンピュータ１００がＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）である場合を例示しているがこれに限定されるものではない。タブレット端末や、ヘッドマウントディスプレイとコンピュータが組み込まれたウェアラブルコンピュータなどの端末であっても良い。
【００２２】
コンピュータ１００は、ネットワーク３００上のプリンタ２００ａ〜ｃと互いに通信することができる。また、コンピュータ１００は、印刷対象のデータに基づき印刷ジョブを生成し、各プリンタへ送信することができる。
【００２３】
コンピュータ１００のハードウェア構成について図２を用いて説明する。図２は、コンピュータ１００のハードウェア構成の一例を示すブロック図である。
【００２４】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１は、制御部１２０全体の動作を制御するプロセッサである。制御部１２０は、メモリであるＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０２２、ストレージ１０５を有し、各部はシステムバス１０７により接続されている。また、制御部１２０は、入出力デバイスを接続するためのインタフェース（Ｉ／Ｆ）１０３、１０４や、ネットワークを介して外部装置と通信するための通信Ｉ／Ｆ１０６も備えている。
【００２５】
ＲＡＭ１０２２は揮発性メモリであり、ワークエリア、ＲＯＭ１０２１及びストレージ１０５に格納された各種制御プログラムを展開するための一時記憶領域として用いられる。
【００２６】
ＲＯＭ１０２１は不揮発性メモリであり、コンピュータのブートプログラムなどが格納されている。ストレージ１０５はＲＡＭ１０２２と比較して大容量な不揮発性のフラッシュメモリやＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。ストレージ１０５には、コンピュータ１００全体を制御するためのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）１０５３や、ＯＳ１０５３上で動作する各種アプリケーション１０５１のプログラムが格納されている。また、ＩＰＰ等の所定の印刷プロトコルに則する印刷ジョブを生成する共通プリンタドライバ１０５４や、共通プリンタドライバ１０５４と連携する設定アプリケーション１０５２ａ〜ｃのプログラムが格納されている。以下、設定アプリケーション１０５２ａ〜ｃを総称して、設定アプリケーション１０５２と表記する場合がある。所定の印刷プロトコルは、プリンタ２００ａからｃに共通して実行可能な印刷命令の形式を規定する印刷プロトコルである。
【００２７】
アプリケーション１０５１や、設定アプリケーション１０５２などの各種アプリケーションは、ＣＤ−ＲＯＭやＵＳＢメモリあるいはネットワーク３００を経由してコンピュータ１００にインストールすることができる。
【００２８】
ＣＰＵ１０１はＲＡＭ１０２２上に展開したＯＳのプログラムや各アプリケーションのプログラムを実行し、コンピュータ１００の制御を行う。このように、ＣＰＵ１０１、ＲＯＭ１０２１、ＲＡＭ１０２２、ストレージ１０５等のハードウェアは、いわゆるコンピュータを構成している。
【００２９】
なお、コンピュータ１００は、１つのＣＰＵ１０１が後述するフローチャートに示す各処理を実行するものとするが、他の態様であっても構わない。例えば、複数のプロセッサが協働して後述するフローチャートに示す各処理を実行するようにすることもできる。
【００３０】
入力Ｉ／Ｆ１０３は、キーボード１０８や、ポインティングデバイス１０９と制御部１２０を接続する。キーボード１０８やポインティングデバイス１０９は、ユーザの指示を受け付ける受付部として機能する。受付部は画面上に表示されるキーなどの表示アイテムの選択を検知することができる。出力Ｉ／Ｆ１０４は、情報を表示するモニタ１１０と、制御部１２０を接続する。モニタ１１０は、情報を表示する表示部として機能する。なお、コンピュータ１００がタブレット端末などの場合、受付部と表示部を兼ねるタッチパネルディスプレイを介してユーザに対する情報の表示や、操作の受け付けを行うものとする。この場合、ユーザは指などのオブジェクトを用いてタッチ操作を行うことで、コンピュータ１００に所望の操作指示を入力することができる。
【００３１】
通信Ｉ／Ｆ１０６は、ネットワーク３００上の印刷装置などの外部装置や、クラウド上のサーバなどと通信を行うためのインタフェースである。
【００３２】
＜コンピュータ１００のソフトウェア構成＞
つぎに、本実施形態におけるコンピュータ１００のソフトウェア構成の一例を図３（ａ）（ｂ）及び図４を用いて説明する。
【００３３】
まず、コンピュータ１００における各ソフトウェアモジュールによるデータ処理の全体像について図３（ａ）及び（ｂ）を用いて説明する。
【００３４】
図３（ａ）に示す各モジュールは、不図時のＯＳ１０５３上で動作する。ＯＳ１０５３は、コンピュータ１００全体の制御を行うシステムソフトウェアである。ここでは一例としてＷｉｎｄｏｗｓ（登録商標）１０以降のＯＳがインストールされている例について説明する。
【００３５】
データ生成アプリケーション３０１、及び、データ生成アプリケーション３０２は、ユーザ操作に従って印刷データを生成して、出力する。データ生成アプリケーション３０１、及び、データ生成アプリケーション３０２は、例えば文書作成アプリケーションや、画像生成アプリケーションである。
【００３６】
ユーザはキーボード１０８やタッチパネル／マウスなどに代表されるポインティングデバイス１０９などといった入力装置を使用して、データ生成アプリケーション３０１又はデータ生成アプリケーション３０２を操作する。
【００３７】
本実施形態において、データ生成アプリケーション３０１は、印刷イメージの生成を行うグラフィックスコンポーネントであるＧＤＩ（Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）を利用して印刷を行うＧＤＩアプリケーションである。データ生成アプリケーションは、例えば、「Ｗｉｎ３２／６４アプリケーション」や「．ＮＥＴアプリケーション」などである。データ生成アプリケーション３０１は、印刷データとしてＧＤＩデータを出力する。
【００３８】
データ生成アプリケーション３０２は、ＯＳ１０５３上で動作する拡張アプリケーションである。データ生成アプリケーション３０２は、例えば、ＵＷＰ（Ｕｎｉｖｅｒｓａｌ  Ｗｉｎｄｏｗｓ  Ｐｌａｔｆｏｒｍ）アプリケーションである。ＵＷＰアプリケーションは、Ｗｉｎｄｏｗｓ（登録商標）ストアを通して配布されるアプリケーションであり、データ生成アプリケーション３０１とは異なる実行環境で動作する。異なる実行環境とは例えば、個別のサンドボックス内（仮想環境上）等である。
【００３９】
以下では、データ生成アプリケーション３０２は、印刷データとしてＸＰＳデータを生成する例について説明するが、これに限らず、ＸＰＳ以外のデータ形式の印刷データを生成することとしてもよい。
【００４０】
上述のデータ生成アプリケーション３０１や３０２は、一例にすぎず、データ生成アプリケーションは、印刷データをプリンタドライバに出力するアプリケーションであればよい。
【００４１】
変換モジュール３０７は、ＧＤＩアプリケーションであるデータ生成アプリケーション３０１から出力されたＧＤＩ描画データをＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）データに変換する。本実施形態では、変換モジュール３０７は、ＯＳ１０５３のモジュールとして構成される。
【００４２】
変換後のＸＰＳデータはスプール領域３０６にスプールされる。また、スプール領域３０６には、データ生成アプリケーション３０２から出力されたＸＰＳデータがスプールされる。本実施形態では、データ生成アプリケーション３０２がＸＰＳデータを生成して出力する例について説明するが、これに限らない。データ生成アプリケーション３０２はＸＰＳデータと異なるデータ形式のデータを出力し、ＯＳ１０５３がデータ生成アプリケーション３０２からの描画命令に応じてＸＰＳファイルを生成することとしてもよい。
【００４３】
共通プリンタドライバ１０５４及び拡張プリンタドライバ１０５５は、スプール領域３０６に保持された印刷データに基づいて、印刷ジョブ（印刷命令）を生成する。
【００４４】
共通プリンタドライバ１０５４は、アプリケーション１０５１から取得した印刷データに基づいて、所定の印刷プロトコルに従った印刷命令を生成するプリンタドライバである。図３（ｂ）に示す通り、共通プリンタドライバ１０５４は、印刷命令生成部（レンダリングフィルタ）３１２を有する。印刷命令生成部３１２は、ＸＰＳ形式のデータをＩＰＰに従った印刷命令に変換する印刷命令生成モジュールである。ＩＰＰは、ベンダが異なるプリンタ２００ａ、２００ｂ、及び、２００ｃのすべてのプリンタが解釈可能な印刷プロトコルである。共通プリンタドライバ１０５４は、複数の印刷生成部を有することとしてもよい。また、共通プリンタドライバ１０５４は、ＯＳ１０５３の標準機能として組み込まれたクラスドライバであってもよいし、別途ユーザがコンピュータ１００に対してインストールしたユニバーサルプリンタドライバであってもよい。
【００４５】
また図３（ｂ）に示す通り、拡張プリンタドライバ１０５５は、ＸＰＳ形式のデータを各プリンタに固有の印刷プロトコルに従った印刷ジョブに変換する印刷命令生成部（レンダリングフィルタ）１から６を有する。図３（ｂ）に示した印刷命令（ＬＩＰＳ）生成用モジュール群、印刷命令（ＰＣＬ）生成用モジュール群、及び、印刷命令（ＥＳＣ／Ｐ）生成用モジュール群はそれぞれ独立した拡張プリンタドライバ１０５５として構成されてもよい。あるいは、印刷命令（ＬＩＰＳ）生成用モジュール群、印刷命令（ＰＣＬ）生成用モジュール群、及び、印刷命令（ＥＳＣ／Ｐ）生成用モジュール群のうち複数のモジュール群を含む１つの拡張プリンタドライバ１０５５として構成されることとしてもよい。
【００４６】
印刷命令生成部１から６は、所定の印刷プロトコル（ＩＰＰ）と異なる他の印刷プロトコルに従った印刷命令を生成するための拡張モジュールである。他の印刷プロトコルは、複数台のプリンタ２００ａからｃのうち１台の印刷装置が実行可能な印刷命令の形式であって、他の１台の印刷装置が実行できない印刷命令の形式を示す印刷プロトコルである。図３（ｂ）の例において、印刷命令生成部１から２は、プリンタ２００ａが利用可能な固有の印刷プロトコル（例えば、ＬＩＰＳ（ＵＦＲ）形式）に従った印刷ジョブを生成するために用いられる。また、印刷命令生成部３から５は、プリンタ２００ｂが利用可能な固有の印刷プロトコル（例えば、ＰＣＬ形式）に従った印刷ジョブを生成するために用いられる。さらに、印刷命令生成部６は、プリンタ２００ｃが利用可能な固有の印刷プロトコル（例えば、ＥＳＣ／Ｐ形式）に従った印刷ジョブを生成するために用いられる。
【００４７】
フィルタパイプラインコンフィグ４００は、共通プリンタドライバ１０５４に含まれる１又は複数の印刷命令生成部、及び、拡張プリンタドライバ１０５５に含まれる１又は複数の印刷命令生成部のうち、印刷ジョブの生成に用いるモジュールの呼び出し順を示す。
【００４８】
図３（ｂ）では、ＬＩＰＳ対応機種用、ＰＣＬ対応機種用、及び、ＥＳＣ／Ｐ対応機種用のそれぞれのフィルタパイプラインコンフィグ４００を保持する例を示したが、いずれか１つのＰＤＬのみのフィルタパイプランコンフィグ４００を保持してもよい。フィルタパイプラインコンフィグ４００は、ストレージ１０５又は、ＲＯＭ１０２１等の記憶媒体に保持される。
【００４９】
スプール領域３０６から取得されたＸＰＳデータは、フィルタパイプラインコンフィグ４００によって特定される１又は複数の印刷命令制御部によって処理される。
【００５０】
例えば、フィルタパイプラインコンフィグ４００において、処理を実行すべき印刷命令生成部を指定することにより、コンピュータ１００は、ベンダに固有の印刷プロトコルに対応した印刷ジョブを出力することができる。
【００５１】
例えば、フィルタパイプラインコンフィグ４００において、印刷命令生成部３１２で処理を行った後に、印刷命令生成部１及び２で処理を行うように設定されている場合、ジョブ生成の流れは以下となる。すなわち、印刷命令生成部３１２は、ＸＰＳスプールファイルに基づいて、ＩＰＰに従った印刷命令を生成する。また、標準設定データに基づき、ＩＰＰに則する印刷属性を生成し、印刷命令に付加して、印刷ジョブを生成する。当該ジョブは、印刷命令生成部１に入力される。印刷命令生成部２において処理されたデータは、印刷命令生成部２に入力される。印刷命令生成部２では、ＬＩＰＳ（ＵＦＲ）に従った印刷ジョブを生成する。このようにして、プリンタ２００ａに固有の印刷プロトコル（ＬＩＰＳ（ＵＦＲ）形式）に従った印刷ジョブを生成することができる。
【００５２】
図３（ａ）の説明に戻る。共通プリンタドライバ１０５４及び拡張プリンタドライバ１０５５によって生成された印刷ジョブは、プリントマネージャ３１８に出力される。
【００５３】
また、共通プリンタドライバ１０５４、及び、拡張プリンタドライバ１０５５は、印刷設定アプリケーション１０５２ａからｃによる印刷設定を受け付ける。
【００５４】
印刷設定アプリケーション１０５２ａからｃは、ベンダごとに固有の印刷設定を行うための印刷設定アプリケーションである。本実施形態では、印刷アプリケーション１０５２ａからｃはそれぞれ、プリンタ２００ａからｃに固有の印刷設定を行うための印刷設定アプリケーションである。
【００５５】
印刷設定とは、例えば、針を使用せずに複数の印刷ページを綴じる針なし綴じ機能の使用や、所定の格納領域に記憶したデータを印刷するボックス印刷機能の使用についての設定などである。
【００５６】
そして、共通プリンタドライバ１０５４、及び、拡張プリンタドライバ１０５５は、受信した印刷設定と生成した印刷命令とを含む印刷ジョブをプリントマネージャ３１８に出力する。
【００５７】
プリントマネージャ３１８は、プリンタ２００の能力情報の取得や、印刷ジョブの送信制御を行う。プリントマネージャ３１８は、共通プリンタドライバ１０５４、あるいは、拡張プリンタドライバ１０５５から受信した印刷ジョブを、通信部３１９を介して、目的のプリンタ２００に送信する。
【００５８】
以上のようにして、コンピュータ１００は、アプリケーション１０５１が生成した印刷データに基づいて印刷ジョブを生成し、プリンタ２００に出力することができる。
【００５９】
上記の構成によれば、共通プリンタドライバ１０５４の印刷命令生成部３１２を用いて、ベンダによらずにプリンタ２００が解釈することができる印刷ジョブを生成することができる。また、拡張プリンタドライバ１０５５の印刷命令生成部１から６を用いることにより、ベンダ固有の印刷プロトコルに合った印刷ジョブを生成することができる。
【００６０】
次に、コンピュータ１００における各ソフトウェアモジュールによるデータ処理の詳細について図３（ｃ）を用いて説明する。図３（ａ）及び（ｂ）を用いて説明した内容については説明を省略する。
【００６１】
図３（ｃ）は、本実施形態におけるコンピュータ１００のソフトウェア構成の一例を示す図である。
【００６２】
ＯＳ１０５３は、プリンタドライバを使用して印刷を行うための印刷アーキテクチャ１０５３１を提供する。印刷アーキテクチャ１０５３１は、ＸＰＳ形式のデータをスプールデータとして使用し、当該スプールデータをプリンタドライバによって印刷データ（ＰＤＬ）に変換する、いわゆるＶ４印刷アーキテクチャである。
【００６３】
コンピュータ１００には、プリンタドライバとして、複数ベンダのプリンタをサポートする共通プリンタドライバ１０５４がインストールされている。本実施形態では、共通プリンタドライバ１０５４は、所定の印刷プロトコル（例えば、ＩＰＰ）に従った印刷データの処理を行う。当該共通プリンタドライバ１０５４は、ＯＳ１０５３の標準機能として組み込まれたクラスドライバであってもよいし、別途ユーザがコンピュータ１００に対してインストールしたユニバーサルプリンタドライバであってもよい。
【００６４】
印刷アーキテクチャ１０５３１は、変換モジュール３０７、共通プリンタドライバ１０５４、プリントマネージャ３１８、通信部３１９を含む。なお、共通プリンタドライバ１０５４とは異なるプリンタドライバ（例えば、ベンダが提供する機種専用のプリンタドライバなど）をインストールすることも可能である。
【００６５】
＜共通プリンタドライバ１０５４を用いる印刷処理＞
まず、共通プリンタドライバ１０５４を用いる印刷処理について説明する。データ生成アプリケーション３０１や、データ生成アプリケーション３０２は、印刷アーキテクチャ１０５３１と協働して印刷データ（例えば、文書や、画像など）を生成する。
【００６６】
アプリケーション１０５１を介して印刷指示が行われると、ＯＳ１０５３は、共通プリンタドライバ１０５４の標準印刷設定部３０８を呼び出す。標準印刷設定部３０８は、標準印刷機能の定義ファイル群３０９の中から選択されたプリンタに対応する定義ファイルを参照する。また、参照した定義ファイルに基づき、現在の印刷設定を示す標準設定データ（ＤＥＶＭＯＤＥ３０３やＰｒｉｎｔＴｉｃｋｅｔ３０４）及び選択されたプリンタの印刷能力を示すＰｒｉｎｔＣａｐａｂｉｔｉｅｓを生成する。
【００６７】
標準設定データは、アプリケーション１０５１や、ＯＳによって表示される印刷設定を変更するための画面（ユーザインタフェース）を介して適宜変更される。
【００６８】
図３（ｃ）に示す定義ファイル群３０９に含まれる定義ファイルは、ＩＰＰプリンタの探索時などにプリンタから取得される属性情報に基づき生成されたプリンタの能力を示す。定義ファイル群３０９には、プリンタ毎に異なる別ファイルが記憶される。
【００６９】
続けて定義ファイルの生成について説明する。選択中のプリンタに対応する定義ファイルがストレージに記憶されていない場合、共通プリンタドライバ１０５４は、プリンタに能力情報の問い合わせを行う。共通プリンタドライバ１０５４は、プリントマネージャ３１８、通信部３１９を介して、プリンタへ能力を問い合わせる。
【００７０】
プリントマネージャ３１８は、後述する印刷ジョブの制御機能に加え、ＩＰＰに対応するプリンタの探索や、プリンタ能力の取得を行うことができる。具体的には、プリンタ能力の取得は、ＲＦＣ２９１１で既定されたプリンタ属性要求操作（Ｇｅｔ−Ｐｒｉｎｔｅｒ−Ａｔｔｒｉｂｕｔｅｓ  Ｏｐｅｒａｔｉｏｎｓ）によって行われる。
【００７１】
まず、プリントマネージャ３１８は、Ｇｅｔ−Ｐｒｉｎｔｅｒ−Ａｔｔｒｉｂｕｔｅｓ  Ｒｅｑｕｅｓｔをプリンタ２００に対して送信する。当該リクエストの応答として、プリンタ２００の属性情報が得られる。プリンタ属性要求操作により得られるプリンタの能力情報は、例えば、「両面」や「カラー印刷」が可能かどうかなどの、標準的な印刷設定の能力情報などである。ここで、プリンタ属性要求操作により取得できる能力（属性）はＩＰＰで既定されている属性に関するサポート情報である。従って、ベンダ固有の機能情報（針なし綴じ機能や、ボックス印刷機能など）は、ＩＰＰのプリンタ属性要求操作では取得することができない。取得された属性情報は、標準印刷設定部３０８に転送される。標準印刷設定部３０８は、ＩＰＰを用いて取得した属性情報に基づいて、定義ファイルを生成しストレージ１０５に記憶する。
【００７２】
アプリケーション１０５１（データ生成アプリケーション３０１及びデータ生成アプリケーション３０２）は標準印刷設定部３０８が生成したＰｒｉｎｔＴｉｃｋｅｔ形式やＤＥＶＭＯＤＥ形式の設定データを取得する。データ生成アプリケーション３０１では現在の印刷設定を示す標準設定データとしてバイナリのＤＥＶＭＯＤＥ３０３が用いられる。また、データ生成アプリケーション３０２ではマークアップ言語であるＸＭＬで記載されたＰｒｉｎｔＴｉｃｋｅｔ３０４が用いられる。このＤＥＶＭＯＤＥ３０３もしくはＰｒｉｎｔＴｉｃｋｅｔ３０４は、ＩＰＰに則した印刷ジョブに反映すべき印刷設定を保持する標準設定データである。ただし、ＤＥＶＭＯＤＥ３０３およびＰｒｉｎｔＴｉｃｋｅｔ３０４は、標準設定データの一例であり、これに限定しなくてもよい。
【００７３】
ユーザによる印刷指示が行われたことを検知すると、ＯＳ１０５３又はアプリケーション１０５１はＸＰＳスプールファイルを生成する。生成されたＸＰＳスプールファイルは、印刷命令生成部３１２に渡される。印刷命令生成部３１２は、受け取ったＸＰＳスプールファイルをレンダリングしてＩＰＰに則するＰＤＬデータに変換する。ＩＰＰに則するＰＤＬデータは、例えば、ＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）又はＰＷＧ−Ｒａｓｔｅｒ形式のデータである。
【００７４】
更に印刷命令生成部３１２は、ＸＰＳスプールファイルに含まれるＰｒｉｎｔＴｉｃｋｅｔ３０４に指定された設定内容に基づき、ＩＰＰに則する印刷属性情報を生成する。ここで、ＩＰＰに則するＰＤＬデータおよびＰｒｉｎｔＴｉｃｋｅｔ３０４を正しく理解し、印刷ジョブを正しく出力できるのであれば、そのままプリンタ２００へ送信してもよい。つまり、共通プリンタドライバ１０５４は、印刷命令生成部３１２で処理した印刷ジョブをプリントマネージャ３１８へ送信し、通信部３１９を介してプリンタ２００に送信してもよい。
【００７５】
＜拡張プリンタドライバ１０５５による印刷処理＞
ＩＰＰに則するＰＤＬデータが正しく理解できずに、その印刷ジョブを正しく出力できないプリンタ２００に対しては、当該プリンタ２００が正しく出力できる印刷ジョブを生成する拡張プリンタドライバ１０５５が必要となる。
【００７６】
本実施形態に係る拡張プリンタドライバ１０５５は、ＩＰＰに則するＰＤＬデータを、出力先のプリンタ２００が正しく出力することが可能なベンダ独自のＰＤＬに変換する。
【００７７】
フィルタパイプラインコンフィグ４００は、共通プリンタドライバ１０５４並びに拡張プリンタドライバ１０５５が参照し、どの印刷命令生成部（以下、レンダリングフィルタという場合がある）をどのように使用するかを決定する手引書のようなものである。
【００７８】
レンダリングフィルタとは、印刷処理の最小単位である。共通プリンタドライバ、及び、拡張プリンタドライバは、単一もしくは複数のレンダリングフィルタを有する。
【００７９】
図４（ａ）、（ｂ）、（ｃ）はフィルタパイプラインコンフィグ４００を説明するための図である。いずれも印刷アーキテクチャで既定された規則に則ったＸＭＬ形式のファイルであり、レンダリングフィルタの呼び出し順と、インタフェースとインプット、アウトプットの形式を定義している。レンダリングフィルタを呼び出す共通プリンタドライバ１０５４や拡張プリンタドライバ１０５５は、定義された順番通り、かつ定義されたインタフェースを使って呼び出すようになっている。
【００８０】
図４（ａ）に例示するファイル４００ａは、フィルタパイプラインコンフィグ４００の一例を示している。ファイル４００ａは、３つのレンダリングフィルタ（印刷命令生成部）を定義している。
【００８１】
すなわち、最初に共通プリンタドライバ１０５４の印刷命令生成部３１２を呼び出し、次に拡張プリンタドライバ１０５５の印刷命令生成部１を呼び出し、さらに拡張プリンタドライバ１０５５の印刷命令生成部２を呼び出すように定義されている。
【００８２】
図４（ａ）において、共通プリンタドライバ１０５４の印刷命令生成部３１２は、“ＸＰＳ  ｔｏ  ＰＤＦ”として表されている。また、図４（ａ）において、拡張プリンタドライバ１０５５の印刷命令生成部１は、“Ｖｅｎｄｅｒ  Ｒｅｎｄｅｒｅｒ  ＰＤＬＡ”として表されている。さらに、図４（ａ）において、拡張プリンタドライバ１０５５の印刷命令生成部２は、“Ｖｅｎｄｅｒ  Ｒｅｎｄｅｒｅｒ  ＰＤＬＢ”として表されている。
【００８３】
拡張プリンタドライバ１０５５はフィルタパイプラインコンフィグ４００に記載されている順序でフィルタを呼び出し、最終的に生成されたＰＤＬデータをプリントマネージャ３１８に送信する。すなわち、フィルタパイプラインコンフィグ４００ａに定義しているフィルタの処理を全て完了したら、拡張プリンタドライバ１０５５は生成されたベンダ独自ＰＤＬと拡張印刷設定情報とを印刷ジョブとしてプリンタ２００に送信する。
【００８４】
ＰＤＬデータを受け取ったプリントマネージャ３１８は印刷ジョブを生成し、キュー（待ち行列）に生成した印刷ジョブを登録する。プリンタ２００が印刷できる状態になったら、キューに登録した順に通信部３１９を介して印刷ジョブを送信する。
【００８５】
設定アプリケーション１０５２は、印刷データのプレビューを表示する機能や、印刷設定変更を促すユーザインタフェースを表示する機能などを提供する。設定アプリケーション１０５２は、印刷アーキテクチャ１０５３１とは別のＵＷＰのプラットフォーム上で動作するアプリケーションである。このアプリケーションは、ＩＰＰをベースとした共通プリンタドライバ１０５４による印刷をベースにしつつ、必要に応じてプリンタ２００の備える機能をより柔軟に利用可能にするためのアプリケーションである。
【００８６】
設定アプリケーション１０５２はサンドボックス化されたＵＷＰの実行環境で動作する。従って、当該アプリケーションがハングアップやエラーを起こしたとしても、システム全体に与える影響を小さくすることができる。本実施形態では、本設定アプリケーション１０５２ａの拡張印刷設定部１０５２２を起動して拡張印刷設定を印刷ジョブに付加することを想定しているが、必ずしも拡張印刷設定を付加する必要はない。
【００８７】
ここでは、プリンタ２００ａに対応する設定アプリケーションとして設定アプリケーション１０５２ａがインストールされている場合を例示する。また、ここでは、プリンタ２００ｂに対応する設定アプリケーションとして設定アプリケーション１０５２ｂがインストールされている場合を例示する。さらに、プリンタ２００ｃに対応する設定アプリケーションとして１０５２ｃがインストールされている場合を例示する。
【００８８】
印刷命令生成部３１２は、拡張アプリケーションのインストール状況や、設定記憶部３２０に記憶された設定に基づき、設定アプリケーション１０５２を起動するか否かを判断する。
【００８９】
設定アプリケーション１０５２は、起動アプリ部１０５２１、拡張印刷設定部１０５２２、通信部１０５２３を含む。
【００９０】
起動アプリ部１０５２１は、印刷時に呼び出されるモジュールであり、拡張印刷設定部１０５２２や通信部１０５２３の起動や動作を制御する。
【００９１】
拡張印刷設定部１０５２２は、ＩＰＰに則する印刷設定と比較してより詳細な印刷設定を行うことができる拡張ユーザインタフェースを、モニタ１１０に表示させる。この拡張ユーザインタフェースは、ユーザがアプリケーション１０５１において印刷設定の開始指示あるいは印刷プレビュー指示を行ったタイミングで、モニタ１１０に表示される。
【００９２】
通信部１０５２３は、設定アプリケーション１０５２の各モジュールがプリンタ２００と通信するための機能を提供する。通信部１０５２３は、特定の通信方式や特定の制御方式を用いてプリンタ２００の情報を取得する。
【００９３】
特定の通信方式は例えば、ＷＳＤ（Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  ｆｏｒ  Ｄｅｖｉｃｅｓ）プロトコルや、ＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）である。また、ベンダ独自のプロトコルを用いた通信方式であってもよい。また、ジョブ制御言語や、プリンタ制御言語で定義された制御コマンドを用いて、プリンタの情報を取得することもできる。例えば、ＰＪＬ（Ｐｒｉｎｔｅｒ  Ｊｏｂ  Ｌａｎｇｕａｇｅ）、ＰｏｓｔＳｃｒｉｐｔ、ＣＰＣＡ（Ｃｏｍｍｏｎ  Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｎｔｒｏｌｌｉｎｇ  Ａｒｃｈｉｔｅｃｔｕｒｅ）で定義されたコマンドを用いて、プリンタに情報を要求してもよい。また、その他、ＮＰＡＰ（Ｎｅｔｗｏｒｋ  Ｐｒｉｎｔｉｎｇ  Ａｌｌｉａｎｃｅ  Ｐｒｏｔｏｃｏｌ）を用いてプリンタから情報を取得することもできる。
【００９４】
拡張プリンタドライバ１０５５の印刷命令生成部１から６は、必要に応じて、設定アプリケーション１０５２と通信し、拡張印刷設定を取得する。取得した拡張印刷設定に基づいて、ベンダ独自のＰＤＬデータに反映するができる。
【００９５】
＜拡張プリンタドライバ１０５５のインストール方法＞
次に、拡張プリンタドライバ１０５５のインストール方法について図５のフローチャートを用いて説明する。図５に示す処理は、ＣＰＵ１０１がＲＯＭ１０２１又はストレージ１０５に記憶された各制御モジュールを実現するためのプログラムをＲＡＭ１０２２に読み出し、実行することにより実現される。
【００９６】
まず拡張プリンタドライバ１０５５のインストールパッケージについて説明する。拡張プリンタドライバ１０５５のインストールパッケージは拡張ＩＮＦファイルの仕組みを利用する。拡張ＩＮＦファイルとは、Ｍｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ（登録商標）が定義する「Ｅｘｔｅｎｓｉｏｎ  ＩＮＦ」に従ったファイルである。ベースとなる基本ＩＮＦファイルに記載しているＨＷＩＤ、ＣＯＩＤと同じＩＤを定義した拡張ＩＮＦファイルを用意し、ベースとなる基本パッケージに追加したいモジュールを定義する。拡張ＩＮＦファイルを使用してインストールすることにより、基本ＩＮＦファイルに記載されているモジュールに上書き、もしくは追加インストールされるようになる。
【００９７】
図６はＬＩＰＳ対応の拡張プリンタドライバ１０５５をインストールするためのドライバパッケージ６００の例である。ドライバパッケージ６００は、拡張ＩＮＦファイル６０００、フィルタパイプラインコンフィグファイル、及び、印刷命令生成用のモジュール群を含む。
【００９８】
ベンダ拡張ＩＮＦファイル６０００は、対応する基本ＩＮＦファイルのＨＷＩＤ、及び、ＣＯＩＤ等を示す。基本ＩＮＦファイルは、共通プリンタドライバ１０５４のＩＮＦファイルである。
【００９９】
拡張ＩＮＦを使用して、拡張プリンタドライバ１０５５をインストール方法について説明する。まず、ＯＳ１０５３がインストール対象のＩＮＦファイルが拡張ＩＮＦかどうかを判断する（ステップＳ６０１）。
【０１００】
拡張ＩＮＦファイルではないと判断した場合は（ステップＳ６０１のＮｏ）、通常のＩＮＦインストールを行う（ステップＳ６０２）。
【０１０１】
拡張ＩＮＦファイルと判断した場合は（ステップＳ６０１のＹｅｓ）、ＨＷＩＤ、ＣＯＩＤを調べる。拡張ＩＮＦファイルに記載しているＨＷＩＤ、ＣＯＩＤと一致する基本ＩＮＦファイルを探索する（ステップＳ６０３）。
【０１０２】
探索した結果、ＨＷＩＤ、ＣＯＩＤを定義している基本ＩＮＦファイルが存在していなかった場合（ステップＳ６０３のＮｏ）、インストール処理を終了する。
【０１０３】
一方、探索した結果、ＨＷＩＤ、ＣＯＩＤを定義している基本ＩＮＦファイルが存在している場合（ステップＳ６０３のＹｅｓ）、基本ＩＮＦファイルのモジュールに印刷命令生成部１及び２のモジュールを拡張する処理を行う（ステップＳ６０４）。
【０１０４】
本実施形態の場合、パッケージ６００にあるフィルタパイプラインコンフィグファイルファイルを共通プリンタドライバが参照できる場所に配置する。もし、既にフィルタパイプラインコンフィグ４００が存在している場合は、そのファイルを上書きされる。あるいは、上書きをせずに、既存のフィルタパイプラインコンフィグ４００に追加する形で新たなフィルタパイプラインコンフィグ４００を記憶することとしてもよい。
【０１０５】
さらに、印刷命令生成部１から２を拡張プリンタドライバが参照できる場所に配置する。もし、既に同名のベンダ拡張印刷処理部モジュールが配置先に存在している場合は、そのファイルを上書きする。
【０１０６】
以上の手順により、拡張プリンタドライバ１０５５をコンピュータ１００にインストールすることができる。
【０１０７】
図６の例では、ＬＩＰＳ対応拡張プリンタドライバ１０５５のインストールの例について説明したが、ＬＩＰＳ、ＰＣＬ、及び、ＥＳＣ／Ｐなど、複数のＰＤＬに対応する拡張プリンタドライバ１０５５をインストールすることとしてもよい。
【０１０８】
＜印刷ジョブ生成フロー＞
本実施形態に係るコンピュータ１００による印刷ジョブの生成手順について図７を用いて説明する。図７は、コンピュータ１００の制御を示すフローチャートである。図７のフローチャートに示す各動作（ステップ）は、ＣＰＵ１０１がＲＯＭ１０２１又はストレージ１０５に記憶された各制御モジュールを実現するためのプログラムをＲＡＭ１０２２に読み出し、実行することにより実現される。なお、フローチャートで示す各処理は、アプリケーション１０５１、ＯＳ１０５３、共通プリンタドライバ１０５４、および拡張プリンタドライバ１０５５のモジュールやソフトウェアコンポーネントが協働して実現するものとする。またデータ送信、情報の入出力などの一部の処理は、各Ｉ／Ｆと協働して実現される。
【０１０９】
図７のフローチャートは、使用するプリンタとして、共通プリンタドライバ１０５４だけでは対応できないプリンタが指定されたため、事前にインストールしておいた拡張プリンタドライバ１０５５もさらに使用して印刷ジョブを生成する処理である。これらの処理はユーザから印刷のための指示を受け付けたことに応じて実行される。
【０１１０】
ステップＳ７０１において、アプリケーション１０５１は印刷ジョブの生成命令をユーザから受け付ける。例えばアプリケーション１０５１は、印刷ボタンキーが押下されることによって、印刷ジョブの生成命令を受け付ける。
【０１１１】
ステップＳ７０２において、アプリケーション１０５１は描画データを出力する。ステップＳ７０３において、ＯＳ１０５３は、出力された描画データに基づいてＸＰＳスプールファイルを生成する。なお、データ生成アプリケーション３０１からの印刷の場合、ＯＳ１０５３は、変換モジュール３０７を用いてＸＰＳスプールファイルを生成する。
【０１１２】
次にＯＳ１０５３は、コンピュータ１００に拡張印刷モジュールがインストールされているかを判定する（Ｓ７０４）。例えば、ＯＳ１０５３は、コンピュータ１００に、拡張ＩＮＦファイル６０００がインストールされている場合に、拡張印刷モジュールがインストールされていると判定することができる。拡張印刷モジュールとは、図６の例では印刷命令生成部１及び２である。あるいは、図３（ｂ）の例では、印刷命令生成部１から６である。
【０１１３】
拡張印刷モジュールがインストールされていないと判定された場合（Ｓ７０４でＮｏ）、共通ドライバ１０５４の印刷命令生成部３１２がＸＰＳスプールファイルを処理して、ＩＰＰに従った印刷命令を生成する（Ｓ７０５）。
【０１１４】
ステップＳ７０５において印刷命令生成部３１２は、ＸＰＳスプールファイルをＩＰＰに則するＰＤＬに変換する。また、ジョブに設定すべき印刷設定を示す標準設定に基づいて、ＩＰＰに則する印刷設定（印刷属性）を生成する。
【０１１５】
一方、拡張印刷モジュールがインストールされていると判定された場合（Ｓ７０４でＹＥＳ）、印刷アーキテクチャ１０５３１は、印刷ジョブを解析して、ジョブを実行するプリンタ２００の識別情報を特定する（Ｓ７０６）。
【０１１６】
続いて印刷アーキテクチャ１０５３１は、ステップＳ７０６において特定したプリンタ２００の識別情報に対応するフィルタパイプラインコンフィグを特定する特定処理を行う（Ｓ７０７）。プリンタの識別情報とフィルタパイプラインコンフィグは直接関連付けられていなくてもよい。例えば、プリンタの識別情報に基づいて使用すべき印刷プロトコルが特定され、特定された印刷プロトコルに対応する印刷命令を生成するためのフィルタパイプラインコンフィグを特定する、というように間接的に関連付けられていてもよい。例えば、指定されたプリンタ２００がＬＩＰＳに対応する場合、印刷アーキテクチャ１０５３１は、ＬＩＰＳに従った印刷命令を生成するために使用すべき１又は複数の印刷命令生成部を示すフィルタパイプラインコンフィグを特定する。このように、印刷を行う印刷装置が印刷処理に用いる印刷データの形式を示す情報に応じて、参照するフィルタパイプラインコンフィグを特定する。
【０１１７】
次に、印刷アーキテクチャ１０５３１は、ステップＳ７０７において、参照すべきフィルタパイプラインコンフィグ４００が特定されたか否かを判定する（Ｓ７０８）。参照すべきフィルタパイプラインコンフィグ４００が特定されなかった場合には、印刷アーキテクチャ１０５３１は、ステップＳ７０５に進み、共通ドライバによる印刷命令の生成を行う。参照すべきフィルタパイプラインコンフィグ４００が特定されない場合とは、例えば、印刷を実行するプリンタ２００に固有の印刷プロトコルに対応するフィルタパイプラインコンフィグ４００がコンピュータ１００に保持されていない場合等である。このように、印刷を行う印刷装置が印刷処理に用いる印刷データの形式に応じた印刷命令を生成するためのフィルタパイプラインコンフィグ４００が保持されていない場合には、コンピュータ１００は所定のプロトコルに従った印刷命令を出力する。
【０１１８】
参照すべきフィルタパイプラインコンフィグ４００が特定されなかった場合、印刷先として指定されたプリンタ２００に固有の印刷プロトコルでの印刷が実行されないことを示す通知を行うこととしてもよい。あるいは、共通印刷プロトコル（例えば、ＩＰＰ）により印刷が実行されることを示す通知を行うこととしてもよい。
【０１１９】
一方ステップＳ７０７において参照すべきフィルタパイプラインコンフィグが特定された場合には、印刷アーキテクチャ１０５３１は、特定したフィルタパイプラインコンフィグに従って印刷命令を生成する（Ｓ７０９）。すなわち、特定したフィルタパイプラインコンフィグによって指定された１又は複数の印刷命令生成部を、指定された順序で使用して、印刷命令を生成する。
【０１２０】
例えば、図４（ａ）に示したフィルタパイプラインコンフィグ４００ａを参照する場合、共通プリンタドライバ１０５４の印刷命令生成部３１２、拡張プリンタドライバ１０５５の印刷命令生成部１、印刷命令生成部２の順に印刷データを処理する。ここで印刷命令生成部１は図４（ａ）のＶｅｎｄｅｒ  Ｒｅｎｄｅｒｅｒ  ＰＤＬＡに相当する。また、印刷命令部２は、図４（ａ）のＶｅｎｄｅｒ  Ｒｅｎｄｅｒｅｒ  ＰＤＬＢに相当する。
【０１２１】
まず印刷命令生成部３１２によってＩＰＰに従った印刷データが生成される。また、印刷命令生成部３１２は、印刷ジョブに設定すべき印刷設定を示す標準設定に基づいて、ＩＰＰに則する印刷設定を生成する。
【０１２２】
次に、印刷命令生成部３１２によって生成された印刷データ、及び、印刷設定が、印刷命令生成部１に出力される。印刷命令生成部１及び印刷命令生成部２は、共通プリンタドライバ１０５４が所定の印刷プロトコル（例えば、ＩＰＰ）に従って生成した印刷命令に基づいて、他の印刷プロトコルに従った印刷命令を生成可能である。例えば、印刷命令生成部１及び印刷命令生成部２は、共通プリンタドライバ１０５４から受け取った印刷データからＬＩＰＳに対応した印刷命令を生成する。
【０１２３】
さらに、印刷命令生成部１及び印刷命令生成部２は、指定されたプリンタ２００に対応する設定アプリケーション１０５２ａから拡張印刷設定を取得する。印刷命令生成部１及び印刷命令生成部２は、印刷命令生成部３１２から受信した標準設定と、設定アプリケーション１０５２ａから取得した拡張印刷設定に基づいて、指定されたプリンタ２００に固有の印刷設定を生成する。
【０１２４】
そして、当該印刷設定を、生成した印刷命令とともにプリントマネージャ３１８に出力する。上記の例では、印刷命令生成部１、印刷命令生成部２、及び、設定アプリケーション１０５２ａが用いられる例について説明したが、指定されたプリンタ２００に応じて、上記以外の印刷命令生成部や設定アプリケーション１０５２が用いられる。
【０１２５】
ステップＳ７０５あるいはステップＳ７０９において印刷命令が生成されると、プリントマネージャ３１８は、生成された印刷命令と印刷設定とに基づいて印刷ジョブを生成する。そして、プリントマネージャ３１８は、生成した印刷ジョブを、通信部３１９を介して指定されたプリンタ２００に送信する（Ｓ７１０）。
【０１２６】
このようにプリントマネージャ３１８は、共通プリンタドライバ１０５４が取得した印刷データを、フィルタパイプラインコンフィグ４００が示す１又は複数のモジュールが処理することによって得られる、固有の印刷プロトコルに従った印刷命令を出力する。このようにして、プリントマネージャ３１８は、印刷を行う印刷装置が印刷処理に用いる印刷データの形式を示す情報に応じて、第１の印刷命令、または、第２の印刷命令を出力する。第１の印刷命令とは、所定のプロトコル（例えば、ＩＰＰ）に準拠した印刷命令であり、第２の印刷命令とは、所定の印刷プロトコルと異なる他の印刷プロトコルに従った印刷命令である。
【０１２７】
ステップＳ７０５において生成された印刷命令を出力する場合には、ＩＰＰに準拠した印刷命令が出力される。このように、プリントマネージャ３１８は、アプリケーション１０５１から取得した印刷データに基づいて、所定の印刷プロトコル（例えば、ＩＰＰ）に従った第１の印刷命令を出力可能である。
【０１２８】
ステップＳ７０９において生成された印刷命令を出力する場合には、アプリケーション１０５１から取得した印刷データに基づいて、所定の印刷プロトコルと異なる他の印刷プロトコルに従った印刷命令を出力可能である。
【０１２９】
上記の実施形態によれば、コンピュータ１００は、ＩＰＰ等の所定の印刷プロトコルを利用可能な共通プリンタドライバを使用するので、印刷装置のベンダの違いによらない印刷命令を出力することができる。さらに上記の実施形態によれば、コンピュータ１００は、上記の所定の印刷プロトコルと異なる固有の印刷プロトコルを用いた印刷命令を出力することができる。従って、ユーザは、固有の印刷プロトコルを用いることにより利用可能となる、固有の印刷機能を利用することが可能となる。
【０１３０】
＜第２の実施形態＞
第１の実施形態では、共通プリンタドライバ１０５４においてＩＰＰに則するＰＤＬを生成した後に、拡張プリンタドライバ１０５５を用いてベンダ独自ＰＤＬに変換して印刷命令を生成する例について説明したがこれに限らない。共通プリンタドライバ１０５４の印刷命令生成部３１２を仲介せずに、拡張プリンタドライバ１０５５の印刷命令生成を呼び出して印刷命令を生成することとしてもよい。
【０１３１】
本実施形態に係るハードウェア構成、ソフトウェア構成、及び、処理手順は実施形態１において説明した内容と同様であるため、説明を省略する。ただし、本実施形態に係る拡張プリンタドライバ１０５５は、ＩＰＰに則するＰＤＬではなく、アプリケーションが作成するＸＰＳデータを解釈し、ベンダ独自のＰＤＬデータに変換する機能を有する。
【０１３２】
アプリケーション１０５１は、ユーザから印刷開始指示を受け付けると、印刷設定とＸＰＳスプールファイルを共通プリンタドライバ１０５４へ渡す。
【０１３３】
ここで、図７のステップＳ７０７において、参照すべきフィルタパイプラインコンフィグとして、図４（ｂ）に示すフィルタパイプラインコンフィグ４００ｂが選択された例について説明する。
【０１３４】
フィルタパイプラインコンフィグ４００ｂは、印刷命令生成部１及び印刷命令生成部２のみ定義している。印刷命令生成部１は図４（ｂ）のＶｅｎｄｅｒ  Ｒｅｎｄｅｒｅｒ  ＰＤＬＡに相当する。また、印刷命令部２は、図４（ｂ）のＶｅｎｄｅｒ  Ｒｅｎｄｅｒｅｒ  ＰＤＬＢに相当する。
【０１３５】
共通プリンタドライバ１０５４はフィルタパイプラインコンフィグ４００ｂに従い、印刷命令生成部３１２を呼び出さずに、取得した印刷設定とＸＰＳスプールファイルを拡張プリンタドライバ１０５５へ渡す。
【０１３６】
拡張プリンタドライバ１０５５は、図７のステップＳ７０９において、フィルタパイプラインコンフィグ４００ｂに従い印刷命令生成部１及び印刷命令生成部２を用いて、ＸＰＳスプールファイルに基づき、印刷命令を生成する。また、拡張プリンタドライバ１０５５は、共通プリンタドライバ１０５４から取得した印刷設定と、拡張アプリケーション１０５２ａから取得した拡張印刷設定とに基づいて、指定されたプリンタ２００に固有の印刷設定を生成する。
【０１３７】
ステップＳ７０９において印刷命令が生成されると、プリントマネージャ３１８は、生成された印刷命令と印刷設定とに基づいて印刷ジョブを生成する。そして、プリントマネージャ３１８は、生成した印刷ジョブを、通信部３１９を介して指定されたプリンタ２００に送信する（Ｓ７１０）。
【０１３８】
本実施形態では、ＩＰＰに則する共通プリンタドライバの印刷命令生成部３１２を呼び出さずに、ベンダ毎の特定のＰＤＬを含む印刷ジョブを作成する。すなわち、拡張プリンタドライバ１０５５は、共通プリンタドライバ１０５４による印刷命令の生成なしに、所定の印刷プロトコル（例えばＩＰＰ）と異なる他の印刷プロトコルに従った印刷命令を生成可能である。拡張プリンタドライバ１０５５は、アプリケーション１０５１から出力された印刷データを用いて、他の印刷プロトコルに従った印刷命令を生成する。
【０１３９】
プリントマネージャ３１８は、共通プリンタドライバ１０５４が所定の印刷プロトコルに従って印刷命令を生成することなしに１又は複数の拡張モジュールが生成した、他の印刷プロトコルに従った印刷命令を出力可能である。従って、共通プリンタドライバを介する場合と比較して、印刷命令を生成するための処理量を減らすことができ、より効率的に印刷命令を生成することができる。
【０１４０】
＜第３の実施形態＞
第１の実施形態及び第２の実施形態では、コンピュータ１００にインストールされた拡張プリンタドライバ１０５５を用いてベンダ独自ＰＤＬに変換して印刷命令を生成する例について説明したがこれに限らない。コンピュータ１００とネットワークを介して接続された外部装置（例えば、クラウドサーバ）が有する印刷命令生成部を利用して印刷命令を生成することとしてもよい。
【０１４１】
本実施形態に係るハードウェア構成、ソフトウェア構成、及び、処理手順は実施形態１において説明した内容と同様であるため、説明を省略する。
【０１４２】
ただし、本実施形態に係る通信部３１９は、拡張プリンタドライバ１０５５の指示に従って、クライアントコンピュータとネットワークを介して接続された外部サーバと通信を行う。また、本実施形態では、拡張プリンタドライバ１０５５は、外部装置上にある印刷命令生成部８を用いて印刷命令の生成を行う。
【０１４３】
ここで、図７のステップＳ７０７において、参照すべきフィルタパイプラインコンフィグとして、図４（ｃ）に示すフィルタパイプラインコンフィグ４００ｃが選択された例について説明する。
【０１４４】
印刷命令生成部１は図４（ｃ）のＶｅｎｄｅｒ  Ｒｅｎｄｅｒｅｒ  ＰＤＬＡに相当する。また、印刷命令生成部２は、図４（ｃ）のＶｅｎｄｅｒ  Ｒｅｎｄｅｒｅｒ  ＰＤＬＢに相当する。さらに、印刷命令生成部８は図４（ｃ）のＶｅｎｄｅｒ  Ｒｅｎｄｅｒｅｒ  ＰＤＬＣに相当する。
【０１４５】
フィルタパイプラインコンフィグ４００ｃは外部装置上にある印刷命令生成部８を利用するためのＵＲＬを定義している。拡張プリンタドライバ１０５５は、通信部３１９を介して、この定義に従いクラウド領域にある印刷命令生成部８呼び出して、印刷命令を生成する。図４（ｃ）の例では、拡張プリンタドライバ１０５５は、印刷命令生成部１及び印刷命令生成部２を用いて処理を行った後に、処理後のデータを印刷命令生成部８に送る。そして、印刷命令生成部８によって処理された後の印刷データ（印刷命令）をプリントマネージャ３１８に送信する。
【０１４６】
プリントマネージャ３１８は、生成された印刷命令と印刷設定とに基づいて印刷ジョブを生成する。そして、プリントマネージャ３１８は、生成した印刷ジョブを、通信部３１９を介して指定されたプリンタ２００に送信する（Ｓ７１０）。
【０１４７】
上記の例では、印刷命令生成部１、２、及び、８を用いて印刷命令を生成する例について説明したが、これに限らない。印刷命令生成部１で処理を行う前に印刷命令生成部３１２によって処理を行うこととしてもよい。あるいは、印刷命令生成部８のみを用いてＸＰＳスプールデータから印刷命令を生成することとしてもよい。
【０１４８】
このようにして、本実施形態に係るプリントマネージャ３１８は、外部装置が有する拡張モジュールが、共通プリンタドライバ１０５４が取得した印刷データを処理することによって得られる、他の印刷プロトコルに従った印刷命令を出力する。外部装置が有する拡張モジュールは、所定の印刷プロトコルと異なる他の印刷プロトコルに従った印刷命令を生成するための拡張モジュールである。
【０１４９】
本実施形態によれば、クラウドなどの外部装置上の印刷命令生成部を利用して印刷命令を生成するので、コンピュータ１００にインストールされた印刷命令生成のみを用いる場合に比べて、拡張性をより向上させることができる。すなわち、コンピュータ１００だけでは生成できない種別のＰＤＬで記述された印刷命令を生成することが可能になる。
【０１５０】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１５１】
１００  クライアントコンピュータ
２００  プリンタ
１０１  ＣＰＵ
１０５４  共通プリンタドライバ
１０５５  拡張プリンタドライバ
４００  フィルタパイプラインコンフィグ
【図１】
2020046741.tif 000003
【図２】
2020046741.tif 000004
【図３（ａ）】
2020046741.tif 000005
【図３（ｂ）】
2020046741.tif 000006
【図３（ｃ）】
2020046741.tif 000007
【図４】
2020046741.tif 000008
【図５】
2020046741.tif 000009
【図６】
2020046741.tif 000010
【図７】
2020046741.tif 000011