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