(57)【要約】【課題】  より適切な表示機能を提供する技術を提供することを目的とする。【解決手段】  ＧＵＩを提供することが可能なＧＵＩアプリケーションのプログラムであって、コンピュータに、描画アプリケーションによる第１印刷要求に応じて、起動するステップと、前記描画アプリケーションにより生成された描画データに基づく中間データを取得するステップと、中間データを出力するステップと、を実行させ、前記ＧＵＩアプリケーションから出力された中間データを取得したプリンタドライバにより第２印刷要求が行われた場合、前記第２印刷要求に応じて、前記ＧＵＩアプリケーションが再び起動し、前記プリンタドライバによる前記第２印刷要求に応じて起動した前記ＧＵＩアプリケーションにより、所定の画面が提供される。【選択図】  図２
2020071816.tif 000002
【特許請求の範囲】
【請求項１】
ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を提供することが可能なＧＵＩアプリケーションのプログラムであって、
コンピュータに、
描画アプリケーションによる第１印刷要求に応じて、起動するステップと、
前記描画アプリケーションにより生成された描画データに基づく中間データを取得するステップと、
中間データを出力するステップと、
を実行させ、
前記ＧＵＩアプリケーションから出力された中間データを取得したプリンタドライバにより第２印刷要求が行われた場合、前記第２印刷要求に応じて、前記ＧＵＩアプリケーションが再び起動し、
前記プリンタドライバによる前記第２印刷要求に応じて起動した前記ＧＵＩアプリケーションにより、所定の画面が提供されることを特徴とするプログラム。
【請求項２】
前記中間データに基づいて前記プリンタドライバにより生成された印刷プレビュー画像を含む画面が、前記第２印刷要求に応じて再び起動した前記ＧＵＩアプリケーションにより、前記所定の画面として、提供されることを特徴とする請求項１に記載のプログラム。
【請求項３】
印刷設定を示す情報を取得するステップと、
前記印刷設定を示す情報の中に、所定の情報を追加するステップと、
をコンピュータにさらに実行させ、
前記印刷設定を示す情報の中に前記所定の情報が含まれている場合、前記プリンタドライバにより前記第２印刷要求が出力され、前記印刷設定を示す情報の中に前記所定の情報が含まれていない場合、前記プリンタドライバにより前記第２印刷要求は出力されないことを特徴とする請求項１又は２に記載のプログラム。
【請求項４】
前記ＧＵＩアプリケーションは、印刷プレビューの実行指示が前記取得した印刷設定を示す情報の中に含まれている場合、前記印刷設定を示す情報の中に、前記所定の情報を追加することを特徴とする請求項３に記載のプログラム。
【請求項５】
前記プリンタドライバにより、前記印刷プレビュー画像が生成され、前記生成された前記印刷プレビュー画像が前記中間データ内に格納される場合、前記生成された印刷プレビュー画像の格納情報が、前記中間データ内の印刷設定を示す情報に追加され、
前記ＧＵＩアプリケーションは、前記格納情報に基づいて、前記印刷プレビュー画像を取得することにより、前記印刷プレビュー画像を含む画面を提供することを特徴とする請求項２から４のいずれか１項に記載のプログラム。
【請求項６】
前記中間データに基づいて生成される印刷コマンドが送信された印刷装置のステータスを示す情報を含む画面が、前記第２印刷要求に応じて再び起動した前記ＧＵＩアプリケーションにより、前記所定の画面として、提供されることを特徴とする請求項１に記載のプログラム。
【請求項７】
前記プリンタドライバにより生成される前記印刷コマンドには、印刷ジョブの識別情報が含まれており、
前記第２印刷要求のために前記プリンタドライバにより生成される中間データには、前記印刷コマンドに含まれる前記印刷ジョブの識別情報と同じ情報が格納されることを特徴とする請求項６に記載のプログラム。
【請求項８】
前記印刷コマンドを受信した印刷装置から取得される前記印刷装置のステータスを示す情報には、前記印刷コマンドに含まれた前記印刷ジョブの識別情報と同じ情報が格納されることを特徴とする請求項７に記載のプログラム。
【請求項９】
前記第２印刷要求に応じて起動した前記ＧＵＩアプリケーションは、前記第２印刷要求のために前記プリンタドライバにより生成された中間データと、前記印刷装置から取得した前記ステータスを示す情報と、に基づいて、前記識別情報に対応する印刷ジョブが前記プリンタにおいて処理中かを判定し、
前記識別情報に対応する印刷ジョブが前記プリンタにおいて処理中の場合、前記ＧＵＩアプリケーションは、前記プリンタのステータスを示す情報を含む画面を提供することを特徴とする請求項８に記載のプログラム。
【請求項１０】
前記プリンタドライバのインストールに応じて、インターネットを介してＯＳによりＤｅｖｉｃｅ  Ｍｅｔａｄａｔａが取得され、
前記ＧＵＩアプリケーションは、前記取得されたＤｅｖｉｃｅ  Ｍｅｔａｄａｔａ内の記述に基づき、インターネットを介してアプリケーション配布システムから取得されることを特徴とする請求項１から９のいずれか１項に記載のプログラム。
【請求項１１】
前記Ｄｅｖｉｃｅ  Ｍｅｔａｄａｔａ内に記述されたデバイスの識別情報と前記ＧＵＩアプリケーションの識別情報とに基づき、前記プリンタドライバと前記ＧＵＩアプリケーションとが関連付けられることを特徴とする請求項１０に記載のプログラム。
【請求項１２】
前記ＧＵＩアプリケーションは、ＧＵＩを提供する機能を備えていないプリンタドライバが選択された場合に起動することを特徴とする請求項１から１１のいずれか１項に記載のプログラム。
【請求項１３】
前記プリンタドライバは、Ｖ４プリンタドライバであることを特徴とする請求項１から１２のいずれか１項に記載のプログラム。
【請求項１４】
前記中間データは、前記描画データと、Ｐｒｉｎｔ  Ｔｉｃｋｅｔと、を含むＸＰＳデータであることを特徴とする請求項１から１３のいずれか１項に記載のプログラム。
【請求項１５】
ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を提供することが可能なＧＵＩアプリケーションが動作可能な情報処理装置であって、
描画アプリケーションによる第１印刷要求に応じて、前記ＧＵＩアプリケーションを起動する起動手段と、
前記描画アプリケーションにより生成された描画データに基づく中間データを、前記ＧＵＩアプリケーションに取得させる取得手段と、
前記ＧＵＩアプリケーションから中間データを出力する出力手段と、
を備え、
前記ＧＵＩアプリケーションから出力された中間データを取得したプリンタドライバにより第２印刷要求が行われた場合、前記第２印刷要求に応じて、前記ＧＵＩアプリケーションが再び起動し、
前記プリンタドライバによる前記第２印刷要求に応じて起動した前記ＧＵＩアプリケーションにより、所定の画面が提供されることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム及び情報処理装置に関する。特に、ＧＵＩアプリケーションのプログラム及び情報処理装置に関する。
【背景技術】
【０００２】
印刷装置の制御用ソフトウェアとしてホストコンピュータにインストールされたプリンタドライバを利用し、ホストコンピュータに接続された印刷装置に対して印刷を行う構成が一般に知られる。ホストコンピュータには、基本ソフトウェアであるオペレーティングシステム（ＯＳ）がインストールされており、プリンタドライバはそのＯＳの規定する仕様に従って構成され、ＯＳから呼び出されて動作する。印刷装置を提供するベンダは、ＯＳの仕様に適合するプリンタドライバを提供することにより、そのＯＳを用いてプリンタに印刷を指示する手段を提供することができる。ＯＳとしてＭｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ（登録商標）８より前のバージョンを利用する場合、プリンタドライバは、Ｖ３プリンタドライバと呼ばれるアーキテクチャで構成される。Ｖ３プリンタドライバは、ユーザからの印刷要求が発生したタイミングでＧｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ（以下、「ＧＵＩ」又は、単に「ユーザインタフェース」とも呼ぶ）を表示する。このＧＵＩにより、何らかの操作をユーザに促すような機能を提供することができる。例えば、印刷要求が発生すると、Ｖ３プリンタドライバの構成物であるコンフィグレーションモジュールの規定のイベントが呼び出されるため、コンフィグレーションモジュールは、そのイベント処理の中でユーザインタフェースを表示することが可能である。
【０００３】
近年、Ｗｉｎｄｏｗｓ（登録商標）において、Ｖ４プリンタドライバと呼ばれる新しいアーキテクチャが登場した。Ｖ４プリンタドライバは、セキュリティ性が重視されているため、プリンタドライバそのもののカスタマイズ性は低下している。例えば、前述のコンフィグレーションモジュールはＯＳにより提供され、ベンダは、その動作をカスタマイズする設定ファイルやスクリプトファイルのみを提供可能である。このようなカスタマイズ性の低下を補うため、印刷装置を提供するベンダは、プリンタドライバの機能を拡張するための専用のアプリケーションを提供することができる。このアプリケーションとして、Ｗｉｎｄｏｗｓ  Ｓｔｏｒｅ  Ｄｅｖｉｃｅ  Ａｐｐ（ＷＳＤＡ）と呼ばれるアプリケーションがある。印刷装置を提供するベンダは、ＷＳＤＡを提供することで、描画データを印刷する際の印刷設定画面をカスタマイズすることができる（特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−１６４８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
このように、Ｖ４プリンタドライバは、セキュリティ性や利便性が向上している一方で、ＧＵＩを提供する機能を有していない等、プリンタドライバそのもののカスタマイズ性は低下している。よって、特許文献１のように、ＷＳＤＡを用いることにより、Ｖ４プリンタドライバのようにＧＵＩを提供する機能を有していないドライバが用いられる場合でも、印刷設定画面等のＧＵＩを提供することができる。しかしながら、従来のＷＳＤＡは、依然として表示機能に制限があった。また、プリンタドライバの機能を拡張するアプリケーションとして、Ｐｒｉｎｔｅｒ  Ｅｘｔｅｎｓｉｏｎｓ（ＰＥＸ）と呼ばれるアプリケーションもあるが、このＰＥＸもＷＳＤＡと同様の機能制限がある。本発明は、このような課題に鑑み、より適切な表示機能を提供する技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明のプログラムは、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を提供することが可能なＧＵＩアプリケーションのプログラムであって、コンピュータに、描画アプリケーションによる第１印刷要求に応じて、起動するステップと、前記描画アプリケーションにより生成された描画データに基づく中間データを取得するステップと、中間データを出力するステップと、を実行させ、前記ＧＵＩアプリケーションから出力された中間データを取得したプリンタドライバにより第２印刷要求が行われた場合、前記第２印刷要求に応じて、前記ＧＵＩアプリケーションが再び起動し、前記プリンタドライバによる前記第２印刷要求に応じて起動した前記ＧＵＩアプリケーションにより、所定の画面が提供される。
【発明の効果】
【０００７】
本発明により、より適切な表示機能を提供することが可能となる。
【図面の簡単な説明】
【０００８】
【図１】印刷システムのハードウェア構成を示すブロック図。
【図２】ドライバ印刷システムのブロック構成図。
【図３】印刷指示を行う場合の画面を説明するための模式図。
【図４】ＸＰＳの論理構造の概念図。
【図５】実施形態１のデータフローを示す図。
【図６】ＰｒｉｎｔＴｉｃｋｅｔに格納する指示情報の一例を示す図。
【図７】印刷プレビュー機能のユーザインタフェースの模式図。
【図８】実施形態１におけるＧＵＩアプリケーションのセットアップ処理のフローチャート。
【図９】実施形態１におけるＧＵＩアプリケーションのＵＩ処理のフローチャート。
【図１０】実施形態１におけるＧＵＩアプリケーションの終了処理のフローチャート。
【図１１】実施形態１におけるプリンタドライバ処理のフローチャート。
【図１２】実施形態２のデータフローを示す図。
【図１３】ＰｒｉｎｔＴｉｃｋｅｔに格納するジョブ識別情報の一例を示す図。
【図１４】印刷装置から取得するステータス情報の一例を示す図。
【図１５】ステータス報知機能のユーザインタフェースの模式図。
【図１６】実施形態２におけるＧＵＩアプリケーションのセットアップ処理のフローチャート。
【図１７】実施形態２におけるＧＵＩアプリケーションのＵＩ処理のフローチャート。
【図１８】実施形態２におけるＧＵＩアプリケーションの終了処理のフローチャート。
【図１９】実施形態２におけるプリンタドライバ処理のフローチャート。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１０】
なお、以下の各実施形態では、Ｐｒｉｎｔ  Ｗｏｒｋｆｌｏｗ  Ａｐｐｌｉｃａｔｉｏｎ（ＷＦＡ）と呼ばれるアプリケーションを用いて、より適切な機能を提供する。このＷＦＡは、ＧＵＩの提供が可能なＧＵＩアプリケーションであり、印刷要求に応じて起動するため、印刷時起動アプリケーションとも呼ぶ。ＧＵＩアプリケーションの詳細は後述する。
【００１１】
＜実施形態１＞
図１は、印刷システムのハードウェア構成を示すブロック図である。本図において、ホストコンピュータ１０１は、ＧＵＩアプリケーションが動作可能な情報処理装置の一例である。ホストコンピュータ１０１は、入力インタフェース１１０、ＣＰＵ１１１、ＲＯＭ１１２、ＲＡＭ１１３、外部記憶装置１１４、出力インタフェース１１５、及び入出力インタフェース１１６を有する。また、入力インタフェース１１０には、キーボード１１８、ポインティングデバイス１１７などの入力デバイスが接続され、出力インタフェース１１５には、表示部１１９などの表示デバイスが接続されている。
【００１２】
ＲＯＭ１１２には、初期化プログラムが格納され、外部記憶装置１１４には、アプリケーションプログラム群、オペレーティングシステム（ＯＳ）、プリンタドライバ、その他の各種のデータが格納されている。ＲＡＭ１１３は、外部記憶装置１１４にストアされる各種のプログラムの実行の際のワークメモリ等として使用される。
【００１３】
なお、本実施形態では、ＣＰＵ１１１が、ＲＯＭ１１２に格納されたプログラムの手順に従って処理を行うことによって、ホストコンピュータ１０１における後述の機能及び後述するフローチャートに係る処理が実現される。デバイスである印刷装置１０２は、入出力インタフェース１１６を介して、ホストコンピュータ１０１と接続されている。ここでは、ホストコンピュータ１０１と印刷装置１０２が分かれて構成されているが、これらが一つの情報処理装置として構成されていても良い。
【００１４】
＜ドライバ印刷システムのブロック構成＞
図２は、ドライバ印刷システムのブロック構成図である。ここでは、ＯＳとしてＭｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ（登録商標）８以降のＯＳを搭載したホストコンピュータ１０１を用い、Ｖ４プリンタドライバと呼ばれるアーキテクチャで動作する印刷システムを前提として説明する。なお、本実施形態のプリンタドライバとしては、プリンタベンダにより提供される印刷装置１０２の機種専用のプリンタドライバである機種別プリンタドライバを例として説明する。しかしながら、本実施形態のプリンタドライバは機種別プリンタドライバに限定されない。例えば、プリンタベンダにより提供される、該プリンタベンダの複数種類の印刷装置に対して対応可能な、共通プリンタドライバであってもよい。また、ＯＳと共にＯＳのパッケージ内の機能の１つとして提供されるドライバであり、複数ベンダにより提供される印刷装置に共通して利用可能なクラスドライバ（標準化された印刷方法を利用する標準プリンタドライバ）であってもよい。
【００１５】
ユーザがＵＷＰ（Ｕｎｉｖｅｒｓａｌ  Ｗｉｎｄｏｗｓ  Ｐｌａｔｆｏｒｍ）アプリケーション２０２から印刷を指示すると、ＯＳの機能である不図示のＭＰＤ（Ｍｏｄｅｒｎ  Ｐｒｉｎｔ  Ｄｉａｌｏｇ）により所定の画面が表示される。ＵＷＰアプリケーション２０２は、描画データ（ユーザにより入力された画像やテキスト等のオブジェクトを含むデータ）を生成するための描画アプリケーションである。ＭＰＤにより提供される画面は、印刷結果を画面上で確認できる印刷プレビュー機能と、基本的な印刷設定をユーザが選択可能な機能と、を有する。
【００１６】
図３に印刷設定時に表示される具体的な画面の例を示す。図３（Ａ）では、描画アプリケーションであるＵＷＰアプリケーションが提供する画面３０１において、印刷の指示がなされると、ＯＳのＭＰＤにより図３（Ｂ）に示す設定画面３０２が表示される。この設定画面３０２において、ユーザは、使用するドライバの選択を行うことができる。さらに、設定画面３０２において、基本的な印刷設定を指示することもできる。
【００１７】
さらに、ＭＰＤは、ユーザからの指示を受け、詳細な印刷設定をユーザが選択可能なＷｉｎｄｏｗｓ  Ｓｔｏｒｅ  Ｄｅｖｉｃｅ  Ａｐｐｌｉｃａｔｉｏｎ（以後、ＷＳＤＡ）２０７を起動する。具体的には、図３（Ｂ）の設定画面３０２において「その他の設定」ボタン３０３が指定されると、図３（Ｃ）に示すＷＳＤＡが提供する詳細設定画面３０４が表示される。この詳細設定画面３０４でユーザは更に詳細な印刷設定を指示することができる。ＷＳＤＡ２０７は印刷装置を提供するベンダ（以後、プリンタベンダ）が提供するプリンタドライバ２０１の機能を拡張するためのアプリケーションである。なお、図３（Ｃ）のＷＳＤＡが提供する詳細設定画面３０４内の右側に表示されている原稿画像のように見える画像は、ＷＳＤＡが元々備えているサンプル画像である。つまり、このサンプル画像は、ＵＷＰアプリケーションにより生成された描画データに基づくプレビュー画像ではなく、描画データが変わっても変化しないサンプル画像である。なお、図３（Ｂ）の設定画面に、印刷プレビュー機能のオンオフをユーザが設定可能な表示アイテムを設けてもよい。
【００１８】
ＷＳＤＡ２０７は、ＭＰＤから印刷設定を示す情報を受け取り、ユーザによる設定に応じてその設定情報を変更し、ＭＰＤに返却する。ここで、印刷設定を示す情報は、ＯＳの定義する書式に基づきＸＭＬ形式で記述されたものであり、ＰｒｉｎｔＴｉｃｋｅｔと呼ばれるデータ内に含まれる。ＷＳＤＡ２０７はＰｒｉｎｔＴｉｃｋｅｔを参照及び変更することができるが、描画データを参照することはできない。
【００１９】
なお、ＰｒｉｎｔＴｉｃｋｅｔは、選択されたプリンタドライバ２０１のコンフィグレーションモジュール２０８によって生成される。ＷＳＤＡ２０７は、コンフィグレーションモジュール２０８を呼び出すことで、ユーザの指定を反映したＰｒｉｎｔＴｉｃｋｅｔを生成（編集）する。また、コンフィグレーションモジュール２０８は、選択されたプリンタドライバ２０１で設定可能な機能と選択項目をＯＳの定義する書式に基づきＸＭＬ形式で記述したＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを生成する機能も有する。ＷＳＤＡ２０７や後述するＰＥＸ２０９は、このＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに記述された情報に基づきユーザインタフェースを提供する。また、後述するＧＵＩアプリケーション２０５は、ＯＳの機能を介して、コンフィグレーションモジュール２０８が生成したＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを取得することができる。
【００２０】
なお、図２では、コンフィグレーションモジュール２０８をプリンタドライバ２０１の機能として記載しているが、コンフィグレーションモジュール２０８は元々ＯＳの構成物である。ただし、Ｖ４プリンタドライバにおいては、ドライバ自体がコンフィグレーションモジュールを備えていないためＯＳの構成物であるコンフィグレーションモジュール２０８をドライバのコンフィグレーションモジュールとして利用する。プリンタベンダは、プリンタドライバ２０１に含まれる不図示のＧＰＤやＪａｖａｓｃｒｉｐｔ（登録商標）  Ｃｏｎｓｔｒａｉｎｔによって、コンフィグレーションモジュール２０８の動作をカスタマイズできる。
【００２１】
図３で示した印刷設定の後に、ＯＳのＭＰＤが提供する設定画面３０２において、「印刷」ボタンが指示されると、印刷要求がなされる。ＭＰＤ上でユーザにより印刷が指示されると、ＭＰＤから要求を受け、ＵＷＰアプリケーション２０２は印刷に必要な印刷データを生成する。この印刷データは、ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（以後、ＸＰＳ）という書式で記述されたＸＰＳ文書であり、ＸＰＳデータ又は中間データとも言う。本実施形態の印刷データは、前述のＰｒｉｎｔＴｉｃｋｅｔと、描画アプリケーションにより生成された描画データと、を有する。
【００２２】
ＵＷＰアプリケーション２０２が生成したＸＰＳ文書は、ＯＳのコンポーネントであるＧＵＩアプリランチャー２０４に渡される。ＧＵＩアプリランチャー２０４は、Ｄｅｖｉｃｅ  Ｍｅｔａｄａｔａ（以下、単にＭｅｔａｄａｔａとも呼ぶ）を介してプリンタドライバ２０１に関連付けられたＧＵＩアプリケーション２０５が存在し、かつ起動するように構成されているか判定する。ＧＵＩアプリケーション２０５が存在し、起動するよう構成されていると判定された場合、ＧＵＩアプリケーション２０５が起動する。なお、該当するＧＵＩアプリケーション２０５が存在しない場合は、ＧＵＩアプリランチャー２０４はＸＰＳ文書をスプールファイル２０６として格納する。
【００２３】
ここで、ＷＳＤＡ２０７とＧＵＩアプリケーション２０５の関係について説明する。ＷＳＤＡ２０７は、プリンタドライバの機能を拡張する拡張アプリケーションである。具体的には、ＷＳＤＡ２０７は、Ｖ４プリンタドライバのようにＧｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅを提供する機能を有していないドライバが選択された場合に、設定画面等のＧＵＩを提供することができる。しかしながら、ＷＳＤＡ２０７では、Ｖ３プリンタドライバのように、ユーザからの印刷要求が発生したタイミングでＧＵＩを表示することにより、何らかの操作をユーザに促すような機能を提供することができない。そこで、本実施形態では、ユーザからの印刷要求に応答して動作するＧＵＩアプリケーション２０５を用いる。なお、本明細書中では、Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅを、「ＧＵＩ」又は、単に「ユーザインタフェース」とも呼ぶ。
【００２４】
ＧＵＩアプリケーション２０５は、Ｐｒｉｎｔ  Ｗｏｒｋｆｌｏｗ  Ａｐｐｌｉｃａｔｉｏｎと呼ばれ、ＷＳＤＡ２０７と同様に、プリンタベンダが提供するプリンタドライバ２０１の機能を拡張するための拡張アプリケーションである。つまり、Ｖ４プリンタドライバのようにＧＵＩを提供する機能を有していないドライバが選択された場合に、ＯＳの指示に基づき、ＧＵＩを提供することができる。なお、ＧＵＩを提供する機能を有しているＶ３ドライバが選択された場合は、ＯＳは、ＧＵＩアプリランチャー２０４を起動せず、描画アプリケーションが生成したＸＰＳ文書をスプールファイル２０６として格納する。つまり、Ｖ３ドライバが選択された場合は、ＧＵＩアプリケーション２０５は起動せず、ＧＵＩを提供することもない。
【００２５】
なお、ＷＳＤＡ２０７とＧＵＩアプリケーション２０５は、どちらも、プリンタドライバ２０１の構成物の１つとして提供されるものではなく、単独のアプリケーションである。また、ＷＳＤＡ２０７とＧＵＩアプリケーション２０５とは、合わせて１つのアプリケーションとして構成可能であるが、便宜上、ここでは、従来のＷＳＤＡとの差異を説明するため、別々のアプリケーションとして説明する。
【００２６】
ＷＳＤＡ２０７とＧＵＩアプリケーション２０５は、通常、ＯＳが、不図示のアプリケーション配布システム（Ｍｉｃｒｏｓｏｆｔ（登録商標）が管理するサーバ）からインターネットを経由して取得する。また、プリンタベンダは、事前にＭｉｃｒｏｓｏｆｔ（登録商標）が管理するＭｅｔａｄａｔａ用サーバに、Ｍｅｔａｄａｔａを提供している。よって、適切なＷＳＤＡ２０７及びＧＵＩアプリケーション２０５がホストコンピュータ１０１に自動的にインストールされる。より詳細には、Ｍｅｔａｄａｔａ内には、デバイスである印刷装置のデバイス識別情報（Ｈａｒｄｗａｒｅ  ＩＤ）と、ＷＳＤＡ及びＧＵＩアプリケーションのソフトウェア識別情報（Ｉｄｅｎｔｉｔｙ  Ｎａｍｅ）とが記載されている。また、プリンタドライバのＩｎｆファイルには、デバイス識別情報（Ｈａｒｄｗａｒｅ  ＩＤ）が記載されている。よって、ＯＳは、プリンタドライバがインストールされると、デバイス識別情報を基に対応するＭｅｔａｄａｔａをダウンロードする。そして、ＯＳは、そのＭｅｔａｄａｔａ内を参照し、対応するデバイス識別情報（Ｈａｒｄｗａｒｅ  ＩＤ）に関連づけられたソフトウェア識別情報（Ｉｄｅｎｔｉｔｙ  Ｎａｍｅ）を特定し、対応するＷＳＤＡ及びＧＵＩアプリケーションを取得することができる。よって、プリンタドライバ２０１と、ＷＳＤＡ２０７及びＧＵＩアプリケーション２０５と、は関連づけられている。
【００２７】
ＧＵＩアプリケーション２０５は、ユーザから操作指示を受け付けるユーザインタフェースを表示することができる。また、印刷データであるＸＰＳ文書を受け取り、ＸＰＳ文書内のＰｒｉｎｔＴｉｃｋｅｔ及び描画データを編集することができる。なお、同じ拡張アプリケーションであるＷＳＤＡ２０７は、ユーザインタフェースを表示することはできるが、ＸＰＳ文書を取得することができず、ＸＰＳ文書内の描画データを参照、編集することはできない。
【００２８】
ＧＵＩアプリケーション２０５が必要に応じて編集したＸＰＳ文書を出力すると、ＯＳはそれをスプールファイル２０６として格納する。スプールファイル２０６が格納されると、ドライバ２０１内のフィルタパイプラインマネージャ（不図示）に処理が渡され、コンフィグレーションファイル（不図示）でフィルタの数や順番が制御される。フィルタパイプラインマネージャは、複数のフィルタを通すことで印刷が行われる仕組みである。本実施形態におけるフィルタ群は、レイアウト処理部であるレイアウトフィルタ２１１と、印刷コマンド変換部である印刷コマンドフィルタ２１２とを含んで構成される。なお、フィルタパイプラインマネージャは、プリンタドライバ２０１の機能として動作するが、フィルタパイプラインマネージャ自体は元々ＯＳの構成物である。ただし、Ｖ４プリンタドライバにおいては、ドライバ自体がフィルタパイプラインマネージャを備えていないためＯＳの構成物であるフィルタパイプラインマネージャをドライバの機能として利用する。
【００２９】
レイアウトフィルタ２１１は、スプールファイル２０６に格納されたＸＰＳ文書を入力とし、印刷設定情報に基づきページのレイアウト処理を行い、レイアウト済みのＸＰＳ文書を出力する機能を有する。レイアウト処理とは、例えば複数のページを一つの用紙面に印刷する割り付け印刷や、一つのページを複数の用紙面に印刷するポスター印刷を含む。
【００３０】
印刷コマンドフィルタ２１２は、レイアウトフィルタ２１１からの出力を入力とし、印刷設定情報に従い、中間データであるＸＰＳ文書を印刷装置１０２が解釈可能な印刷コマンドに変換し出力する機能を有する。印刷コマンドフィルタ２１２が入力のＸＰＳ文書を一度イメージデータに変換する場合、印刷コマンドフィルタ２１２は一般的にレンダフィルタと呼ばれる。レンダフィルタは、インクジェットプリンタに代表される廉価なラスタプリンタ用のプリンタドライバにおいて多く見られる。印刷コマンドフィルタ２１２がレンダフィルタとして動作する場合は、入力のＸＰＳ文書を一度イメージデータに変換する。その後、色空間の変換や二値化等の画像処理の過程を経て、ラスタプリンタが解釈可能な印刷コマンドに変換される。
【００３１】
ページプリンタに代表される高機能なプリンタにおいて、印刷装置１０２が解釈できる印刷コマンドの種類にＸＰＳが含まれる場合、印刷コマンドフィルタ２１２は、入力のＸＰＳ文書を編集してＸＰＳ文書を出力する。印刷コマンドフィルタ２１２にて処理する必要がなければ、入力のＸＰＳ文書をそのまま出力しても良いし、若しくは、印刷コマンドフィルタ２１２はプリンタドライバ２０１に含められなくても良い。以上が、ＵＷＰアプリケーション２０２からの印刷の基本処理である。
【００３２】
なお、描画アプリケーションがＷｉｎ３２アプリケーション等のＬｅｇａｃｙアプリケーション２０３の場合は、印刷設定を設定するために、ＷＳＤＡではなく、Ｐｒｉｎｔｅｒ  Ｅｘｔｅｎｓｉｏｎｓ２０９（以後、ＰＥＸ）を起動する。ＰＥＸ２０９は、コンフィグレーションモジュール２０８を経由して起動され、ユーザが印刷設定を指定可能なユーザインタフェースを提供することができる。ＰＥＸ２０９は、プリンタドライバ２０１と共にドライバパッケージ内の構成物として提供しても良いし、別で配布しても良い。ＷＳＤＡ２０７同様、ＰＥＸ２０９はＰｒｉｎｔＴｉｃｋｅｔを参照及び変更することができるが、ＸＰＳ文書を取得することができず、ＸＰＳ文書内の描画データを参照、編集することはできない。また、ＰＥＸ２０９は、Ｌｅｇａｃｙアプリケーション２０３上でユーザが指示した場合にのみ起動されるものであって、印刷時に必ず起動されるわけではない。Ｌｅｇａｃｙアプリケーション２０３で印刷が指示されると、Ｌｅｇａｃｙアプリケーション２０３は印刷データとしてＸＰＳ文書を生成する。そして、Ｌｅｇａｃｙアプリケーション２０３から出力されたＸＰＳ文書を、ＧＵＩアプリケーション２０５は取得して、出力する。以後の流れは、ＵＷＰアプリケーション２０２からの印刷処理時と同等であるため省略する。
【００３３】
＜ＸＰＳ文書（ＸＰＳドキュメント）の構成＞
ここで、ＸＰＳ文書について図４を用いて簡単に説明する。ＸＰＳ文書はＦｉｘｅｄＤｏｃｕｍｅｎｔＳｅｑｕｅｎｃｅ  （以下ＦＤＳ）をルートとするツリー構造になっている。ＦＤＳは複数のＦｉｘｅｄＤｏｃｕｍｅｎｔ（以下ＦＤ）を持ち、ＦＤは複数のＦｉｘｅｄＰａｇｅ（以下ＦＰ）を持つ。ＦＰはドキュメントのページの内容をＸＭＬ形式で記述しており、実際に表示または印刷される内容を含んでいる。ＦＤＳとＦＤとＦＰのそれぞれは、ＸＰＳパートと呼ばれることがある。ＦＰのページ内容で使用されるフォントや画像等の資源は複数のＦＰで共有することができる。また、ＦＤＳとＦＤとＦＰはそれぞれ印刷設定をＰｒｉｎｔＴｉｃｋｅｔで持つことができる。ここで各ＦＰを印刷する際に使用する印刷設定は、ＦＤＳのＰｒｉｎｔＴｉｃｋｅｔと、印刷対象ＦＰの親ＦＤのＰｒｉｎｔＴｉｃｋｅｔと、印刷対象ＦＰのＰｒｉｎｔＴｉｃｋｅｔをマージしたＰｒｉｎｔＴｉｃｋｅｔとなる。なお、ＦＤＳのＰｒｉｎｔＴｉｃｋｅｔを、ジョブのＰｒｉｎｔＴｉｃｋｅｔとも呼ぶ。
【００３４】
図４はＸＰＳドキュメントの論理構造を示したブロック図の一例である。ＸＰＳドキュメント４０１の論理構造はＦＤＳ４０２がルートとなるツリー構造となっている。ＦＤＳ４０２は子としてＦＤ４０３とＦＤ４０４を有する。ＦＤ４０３は子としてＦＰ４０５とＦＰ４０６を有する。ＦＤ４０４は子としてＦＰ４０７を有する。印刷設定を記述したＰｒｉｎｔＴｉｃｋｅｔについては、ＦＤＳ４０２がＰｒｉｎｔＴｉｃｋｅｔ４０８を保持している。また、ＦＤ４０３がＰｒｉｎｔＴｉｃｋｅｔ４０９を、ＦＰ４０５がＰｒｉｎｔＴｉｃｋｅｔ４１０を、ＦＤ４０４がＰｒｉｎｔＴｉｃｋｅｔ４１２をそれぞれ保持している。ここでは、ＦＤＳ４０２のＰｒｉｎｔＴｉｃｋｅｔ４０８が、ジョブのＰｒｉｎｔＴｉｃｋｅｔに対応する。ＦＤ４０３のＰｒｉｎｔＴｉｃｋｅｔ４０９、ＦＤ４０４のＰｒｉｎｔＴｉｃｋｅｔ４１２はそれぞれ、ドキュメントのＰｒｉｎｔＴｉｃｋｅｔに対応する。そして、その下の階層のＦＰ４０５のＰｒｉｎｔＴｉｃｋｅｔ４１０は、ページのＰｒｉｎｔＴｉｃｋｅｔに対応する。
【００３５】
また、図４では、ＦＰ４０６とＦＰ４０７はＰｒｉｎｔＴｉｃｋｅｔを保持していない。ここで例えばＦＰ４０５を印刷する際に使用するＰｒｉｎｔＴｉｃｋｅｔは、ＰｒｉｎｔＴｉｃｋｅｔ４０８とＰｒｉｎｔＴｉｃｋｅｔ４０９とＰｒｉｎｔＴｉｃｋｅｔ４１０とをマージしたＰｒｉｎｔＴｉｃｋｅｔとなる。また、ＰｒｉｎｔＴｉｃｋｅｔを保持していないＦＰ４０６とＦＰ４０７は、それぞれの上位の層のＰｒｉｎｔＴｉｃｋｅｔを使用する。例えば、ＦＰ４０６を印刷する際に使用するＰｒｉｎｔＴｉｃｋｅｔは、ＰｒｉｎｔＴｉｃｋｅｔ４０８とＰｒｉｎｔＴｉｃｋｅｔ４０９とをマージしたＰｒｉｎｔＴｉｃｋｅｔとなる。
【００３６】
なお、図４では、ＦＰ４０５とＦＰ４０６がフォントや画像等のリソース４１１を共有しており、ＦＰ５０７はフォントや画像等のリソース４１３を利用している。さらに、ＦＰ４０７は、サムネイル画像４１４を保持している。
【００３７】
＜データフロー＞
実施形態１では、ＧＵＩアプリケーション２０５は、印刷プレビュー機能を提供する。つまり印刷プレビュー画像を含む画面を提供する。印刷プレビュー機能において、印刷結果を正しく表示するには、プリンタドライバで行われるレイアウト処理結果を反映する必要がある。従って、印刷プレビュー用の画像の生成はプリンタドライバ２０１が行うことが望ましい。
【００３８】
しかしながら、ＧＵＩアプリケーションは、ユーザ指示に基づく描画アプリケーション５０１からの印刷要求を受けて起動し、印刷データであるＸＰＳ文書を出力したら終了する。その後、出力されたＸＰＳ文書はスプールファイルに格納され、プリンタドライバは処理を開始する。つまり、プリンタドライバの処理が開始される前に、ＧＵＩアプリケーションは終了しているため、プリンタドライバとＧＵＩアプリケーションが連携して動作することができない。つまり、ＧＵＩアプリケーション２０５はプリンタドライバ２０１が起動する前に終了し、プリンタドライバ２０１が生成した画像を受け取ることができないため、プリンタドライバが生成した画像を表示することができない。
【００３９】
そこで、本実施形態では、プリンタドライバ２０１が印刷要求を行うことによって、再度ＧＵＩアプリケーション２０５が起動することで、プリンタドライバが生成した画像を印刷プレビューで使用できるようにする。
【００４０】
図５は、実施形態１におけるデータフローを示す図であり、図５（ａ）は、１週目のドライバ処理までのデータフローを示す図である。描画アプリケーション５０１は、ユーザ指示に応じて、使用する印刷装置１０２に対応したプリンタドライバ２０１に対して印刷要求を行う。尚、描画アプリケーション５０１は、ＵＷＰアプリケーション２０２とＬｅｇａｃｙアプリケーション２０３の総称として使用する。描画アプリケーションによる印刷要求を受けて、ＧＵＩアプリランチャー２０４が、ＧＵＩアプリケーション２０５を起動する。
【００４１】
ＧＵＩアプリケーション２０５は、ＰｒｉｎｔＴｉｃｋｅｔを取得し、印刷プレビュー起動指示が有効であることを示す情報が存在するか確認する。図３（Ｂ）の設定画面において、印刷プレビュー機能をＯＮに設定した場合、印刷プレビュー起動指示が有効であることを示す情報が記述される。ＰｒｉｎｔＴｉｃｋｅｔ内に印刷プレビュー起動指示が有効であることを示す情報が含まれている場合、ＧＵＩアプリケーション２０５は、プリンタドライバに印刷プレビュー用画像の生成を指示するために、ＰｒｉｎｔＴｉｃｋｅｔを編集する。これにより、ＧＵＩアプリケーション２０５は、ＰｒｉｎｔＴｉｃｋｅｔに画像生成指示を示す情報を付加する。その後、編集後のＰｒｉｎｔＴｉｃｋｅｔを含むＸＰＳ文書を出力する。ＧＵＩアプリケーション２０５がＸＰＳ文書を出力すると、ＯＳはそれをスプールファイル２０６として格納する。スプールファイル２０６にＸＰＳ文書が格納されると、プリンタドライバ２０１が処理を開始する。
【００４２】
プリンタドライバ２０１は、ＰｒｉｎｔＴｉｃｋｅｔ内に、ＧＵＩアプリケーション２０５が格納した画像生成指示を示す情報が存在するか（つまり、ＰｒｉｎｔＴｉｃｋｅｔ内に画像生成指示を示す情報が記述されているか）を確認する。画像生成指示を示す情報が存在する場合、プリンタドライバ２０１は、ＸＰＳ文書内の描画データとＰｒｉｎｔＴｉｃｋｅｔに基づき画像を生成する。生成された画像は、印刷設定に応じたレイアウト処理が反映されている。その後、プリンタドライバ２０１は、生成した画像をＸＰＳ文書に格納する。加えて、プリンタドライバ２０１は、画像の格納情報をＰｒｉｎｔＴｉｃｋｅｔに追加する編集を行う。次に、プリンタドライバ２０１は、プリンタドライバ２０１自身に対して、生成したＸＰＳ文書を用いて印刷要求を発行する。プリンタドライバ２０１からの印刷要求に応じて、ＧＵＩアプリランチャー２０４が、ＧＵＩアプリケーション２０５を再度起動する。印刷要求を行った後、プリンタドライバ２０１は、処理中のジョブをキャンセルして、処理を終了する。
【００４３】
図５（ｂ）は、ＧＵＩアプリケーション２０５の２回目の起動以降のデータフローを示す図である。ＧＵＩアプリケーション２０５は、ＰｒｉｎｔＴｉｃｋｅｔを確認し、画像の格納情報が存在するかを判断する。画像の格納情報がＰｒｉｎｔＴｉｃｋｅｔに記述されている場合、ＧＵＩアプリケーション２０５は、ＸＰＳ文書内から画像データを取得する。ＧＵＩアプリケーション２０５は、取得した画像データを用いて印刷プレビュー画面を表示する。ＧＵＩアプリケーション２０５が印刷プレビュー機能を提供するために構成するユーザインタフェースの詳細については図７を用いて後述する。
【００４４】
ユーザは、印刷プレビュー画面により印刷結果のイメージを確認し、印刷開始、もしくは印刷キャンセルを指示する。印刷プレビュー画面において、ユーザによって印刷キャンセルが指示されると、ＧＵＩアプリケーション２０５は、ＯＳに対してキャンセル指示を出し、対応する印刷ジョブの処理を終了する。ユーザによって印刷開始が指示された場合、ＧＵＩアプリケーション２０５は、ＸＰＳ文書を出力する。出力するＸＰＳ文書のＰｒｉｎｔＴｉｃｋｅｔには、画像生成指示は含めない。
【００４５】
ＧＵＩアプリケーション２０５がＸＰＳ文書を出力すると、ＯＳはそれをスプールファイル２０６として格納し、再度プリンタドライバ２０１の処理が開始される。プリンタドライバ２０１は、ＸＰＳ文書に含まれるＰｒｉｎｔＴｉｃｋｅｔを確認し、画像生成指示を示す情報が含まれているかを確認する。２回目の処理でスプールファイルに格納されたＸＰＳ文書内のＰｒｉｎｔＴｉｃｋｅｔには画像生成指示を示す情報が記述されていない。よって、プリンタドライバ２０１は、ＸＰＳ文書に基づき、印刷装置１０２が解釈可能な印刷コマンドを生成し、印刷装置１０２に送信する。印刷装置１０２は、受信した印刷コマンドに従い印刷を行う。
【００４６】
＜ＰｒｉｎｔＴｉｃｋｅｔの内容＞
図６は、ＰｒｉｎｔＴｉｃｋｅｔに格納される指示情報の一例を示す図である。図６（ａ）は、印刷プレビュー起動指示（印刷プレビューの実行指示）を示す情報の一例である。図６（ａ）では、ＰｒｉｎｔＴｉｃｋｅｔ内において、印刷プレビュー機能に対応した「ＪｏｂＰｒｅｖｉｅｗ」という設定項目のＯｐｔｉｏｎに「ＯＮ」が記述されている。これは、印刷プレビュー機能起動指示が有効であることを示す。Ｏｐｔｉｏｎを「ＯＮ」にするには、ユーザは描画アプリケーション４０１から印刷要求を行う前に、ＷＳＤＡ２０７又はＰＥＸ２０９が提供する設定画面において、プレビュー機能をＯＮに設定する。これにより、コンフィギュレーションモジュール２０８が、図６（ａ）の「ＪｏｂＰｒｅｖｉｅｗ」という設定項目を含むＰｒｉｎｔＴｉｃｋｅｔを生成する。
【００４７】
図６（ｂ）は、ＧＵＩアプリケーション２０５が、プリンタドライバ２０１にプレビュー用画像生成を指示するための、プレビュー用画像生成指示の一例である。ＧＵＩアプリケーション２０５は、ＰｒｉｎｔＴｉｃｋｅｔ内に「ＣｒｅａｔｅＰｒｖＩｍａｇｅ」というＰｒｏｐｅｒｔｙを設け、Ｖａｌｕｅに「Ｒｅｑｕｅｓｔ」と設定することで、ＰｒｉｎｔＴｉｃｋｅｔ内に画像生成指示を示す情報を含めることができる。これにより、プリンタドライバにプレビュー用画像の生成を指示することができる。
【００４８】
図６（ｃ）は、プリンタドライバ２０１が、ＧＵＩアプリケーション２０５にプレビュー用画像を生成した旨を通知するための、プレビュー用画像格納情報の一例である。プリンタドライバ２０１は、プレビュー用画像生成指示と同じＰｒｏｐｅｒｔｙを使用し、Ｖａｌｕｅを「Ｃｒｅａｔｅｄ」とすることで、ＰｒｉｎｔＴｉｃｋｅｔ内に画像の格納情報を含めることができる。これにより、画像が格納されたことを、ＧＵＩアプリケーション２０５に通知することができる。
【００４９】
図７は、ＧＵＩアプリケーション２０５が提供する印刷プレビュー画面の一例である。表示アイテム７０１は、印刷プレビュー上で表示するページを変更するためのコントロールアイテムである。ユーザは、このコントールアイテムを利用して表示ページを変更できるし、また、現在の印刷データと印刷設定で発生する印刷の総ページ数を確認することもできる。表示アイテム７０２は、指定されているページの印刷結果のイメージを示す印刷プレビュー画像である。表示アイテム７０３は印刷を開始するためのボタンである。表示アイテム７０４はキャンセルボタンで、ユーザがこのボタンを押下すると、その後の印刷処理はキャンセルされる。
【００５０】
＜ＧＵＩアプリケーションのセットアップ処理＞
図８は、本印刷システムにおけるＧＵＩアプリケーション２０５のセットアップ処理のうち主要な処理フローを示した図である。以降、ＧＵＩアプリケーション２０５を、各処理の主体として説明することもあるが、実際には、対応するプログラムをＣＰＵ１１１が実行することで、対応する機能が実現されることになる。なお、全ての処理は必ずしも一つのプロセス上で逐次的に実行されるものではなく、一度ＯＳ側に処理が移り、再度ＯＳから呼び出されるようなケースもあり得る。あくまでＧＵＩアプリケーション２０５の主要な処理を、便宜的にわかりやすく示したフローである。
【００５１】
ＧＵＩアプリランチャー２０４は、印刷要求元の描画アプリケーションから出力されたＸＰＳ文書を受け取ると、印刷装置１０２に関連付けられたＧＵＩアプリケーション２０５を起動する。起動したＧＵＩアプリケーション２０５はまず初期化処理を行う。なお、前述の図３にて説明した印刷設定の後、ＯＳが提供する設定画面３０２において「印刷」ボタンが指示されると、印刷要求がなされ、描画アプリケーションからＸＰＳ文書が出力される。ＧＵＩアプリケーション２０５は、初期化処理において、図８に示されるセットアップ処理と、後述する図１０に示される編集及び終了処理を、ＯＳの規定するイベントハンドラとして登録する。ＧＵＩアプリケーション２０５が初期化処理を終了すると、ＯＳは、規定のイベントハンドラとして登録されたＧＵＩアプリケーション２０５のセットアップ処理を実行する。図８はそのセットアップ処理を示すものである。
【００５２】
まず、ＧＵＩアプリケーション２０５は、ＸＰＳ文書中に格納されたＰｒｉｎｔＴｉｃｋｅｔを取得する（Ｓ８０１）。ここで取得するＰｒｉｎｔＴｉｃｋｅｔはジョブのＰｒｉｎｔＴｉｃｋｅｔである。ＰｒｉｎｔＴｉｃｋｅｔは、図２で説明したとおり、印刷設定を示す情報を含むデータであり、ユーザにより指示された印刷設定に基づき、コンフィグレーションモジュール２０８によって生成される。ＰｒｉｎｔＴｉｃｋｅｔは、ＯＳの所定のＡＰＩを呼び出すことで取得することができる。
【００５３】
次に、ＧＵＩアプリケーション２０５は、ＰｒｉｎｔＴｉｃｋｅｔを参照し、ＰｒｉｎｔＴｉｃｋｅｔ内に、図６（ｃ）に示されるプレビュー用画像格納情報が存在するかを確認する（Ｓ８０２）。プレビュー用画像格納情報が存在する場合、ＧＵＩアプリケーション２０５は、要求された印刷ジョブに対する２回目の起動であるため、印刷プレビューの表示を行う。そのために、ＧＵＩアプリケーション２０５は、ＯＳの提供する規定のＡＰＩを呼び出して、ユーザインタフェースを表示することを指示する（Ｓ８０３）。プレビュー用画像格納情報が存在しない場合、ＧＵＩアプリケーション２０５は、要求された印刷ジョブに対する１回目の起動であるため、ユーザインタフェースの表示を指示することなく、処理を終了する。以上でＧＵＩアプリケーション２０５のセットアップ処理は終了である。
【００５４】
＜ＧＵＩアプリケーションのＵＩ処理＞
次にＧＵＩアプリケーションのＵＩ処理について説明する。Ｓ８０３のＵＩの表示指定が実行された場合、ＯＳは、ＧＵＩアプリケーション２０５のセットアップ処理が終了した後、ＧＵＩアプリケーション２０５のＵＩ処理を呼び出す。図９は、本印刷システムにおけるＧＵＩアプリケーション２０５のＵＩ処理のうち主要な処理フローを示した図である。なお、Ｓ８０３のＵＩの表示指定が実行されなかった場合、ＯＳは、図９に示されるＵＩ処理をスキップし、後述の編集及び終了処理を呼び出す。
【００５５】
以降、ＧＵＩアプリケーション２０５を、各処理の主体として説明することもあるが、実際には、対応するプログラムをＣＰＵ１１１が実行することで、対応する機能が実現されることになる。なお、全ての処理は必ずしも一つのプロセス上で逐次的に実行されるものではなく、一度ＯＳ側に処理が移り、再度ＯＳから呼び出されるようなケースもあり得る。あくまでＧＵＩアプリケーション２０５の主要な処理を、便宜的にわかりやすく示したフローである。
【００５６】
まず、ＧＵＩアプリケーション２０５は、ＯＳの所定のＡＰＩを利用してＸＰＳ文書を取得する（Ｓ９０１）。さらに、ＧＵＩアプリケーション２０５は、そのＸＰＳ文書を解析し、プリンタドライバが格納した画像をＸＰＳ文書内から取得する（Ｓ９０２）。次に、ＧＵＩアプリケーション２０５は、Ｓ９０２で取得した画像を印刷プレビュー画像として含む画面表示する。これにより、ＧＵＩアプリケーション２０５は、ユーザが印刷結果のイメージを確認するための印刷プレビュー機能を実現する。
【００５７】
ＧＵＩアプリケーション２０５は、表示された印刷プレビュー画像を含む画面において、ユーザからの入力を受け付ける（Ｓ９０４）。ユーザは、印刷プレビュー画像を見て印刷結果のイメージを確認し、所望のものである場合は印刷開始を指示し、所望のものでない場合はキャンセルを指示する。ＧＵＩアプリケーション２０５は、ユーザからの印刷開始、もしくはキャンセル指示を受けるとＵＩ処理を終了する。なお、以降の説明では、ユーザは印刷開始を指示したものとして説明を行う。ユーザがキャンセルを指示した場合、ＧＵＩアプリケーション２０５は、ＯＳに印刷ジョブがキャンセルされた旨を通知し、処理を終了する。
【００５８】
＜ＧＵＩアプリケーションの編集及び終了処理＞
次にＧＵＩアプリケーションの編集及び終了処理を説明する。図９のＧＵＩアプリケーション２０５のＵＩ処理が終了した後、ＯＳは、図１０のＧＵＩアプリケーション２０５の編集及び終了処理を呼び出す。なお、Ｓ８０３のＵＩの表示指示が実行されなかった場合は、ＯＳは、図９のＧＵＩアプリケーション２０５のＵＩ処理を呼び出すことなく、図１０の処理を呼び出す。
【００５９】
以降、ＧＵＩアプリケーション２０５を、各処理の主体として説明することもあるが、実際には、対応するプログラムをＣＰＵ１１１が実行することで、対応する機能が実現されることになる。また、全ての処理は必ずしも一つのプロセス上で逐次的に実行されるものではなく、一度ＯＳ側に処理が移り、再度ＯＳから呼び出されるようなケースもあり得る。あくまでＧＵＩアプリケーション２０５の主要な処理を、便宜的にわかりやすく示したフローである。
【００６０】
まず、ＧＵＩアプリケーション２０５は、ＸＰＳ文書中に格納されたＰｒｉｎｔＴｉｃｋｅｔを取得する（Ｓ１００１）。
【００６１】
次に、ＰｒｉｎｔＴｉｃｋｅｔを参照し、ＰｒｉｎｔＴｉｃｋｅｔ内に、図６（ｃ）に示されるプレビュー用画像格納情報が存在するかを確認する（Ｓ１００２）。プレビュー用画像格納情報が存在する場合、２回目の起動に対する終了処理であると判断し、Ｓ１００５に移り、ＸＰＳ文書を取得してそのまま出力する。
【００６２】
プレビュー用画像格納情報が存在しない場合、１回目の起動であると判断し、ＰｒｉｎｔＴｉｃｋｅｔ内に、図６（ａ）に示される、印刷プレビュー起動指示が有効であることを示す情報が存在するかを確認する（Ｓ１００３）。印刷プレビュー起動指示が有効であることを示す情報が存在する場合、ＧＵＩアプリケーション２０５は、プリンタドライバ２０１にプレビュー用画像生成を指示するために、ＰｒｉｎｔＴｉｃｋｅｔに画像生成指示を示す情報を記述する（Ｓ１００４）。印刷プレビュー起動指示が有効であることを示す情報が存在しない場合、Ｓ１００５に移り、ＸＰＳ文書を取得しそのまま出力する。
【００６３】
Ｓ１００５とＳ１００６は、ＸＰＳ文書の取得処理、及び出力処理である。ＧＵＩアプリケーション２０５は、プリンタドライバが処理を開始するために必ずＸＰＳ文書の出力処理を行う必要がある、ＧＵＩアプリケーション２０５は、ＯＳの所定のＡＰＩを利用してＸＰＳ文書を取得する（Ｓ１００５）。次に、ＧＵＩアプリケーション２０５は、ＯＳの所定のＡＰＩを利用して、Ｓ１００５で取得したＸＰＳ文書を出力する（Ｓ１００６）。ＸＰＳ文書の出力を終えると、ＧＵＩアプリケーション２０５は終了する。
【００６４】
＜プリンタドライバ処理＞
次にプリンタドライバ２０１の処理について説明する。Ｓ１００６においてＧＵＩアプリケーション２０５がＸＰＳ文書を出力することで、ＯＳはそれをスプールファイル２０６として格納し、プリンタドライバ２０１の処理が開始される。
【００６５】
図１１は、本印刷システムのプリンタドライバにおけるプリンタドライバの主要な処理フローを示した図である。以降、プリンタドライバ２０１を、各処理の主体として説明することもあるが、実際には、対応するプログラムをＣＰＵ１１１が実行することで、対応する機能が実現されることになる。なお、全ての処理は必ずしも一つのプロセス上で逐次的に実行されるものではなく、一度ＯＳ側に処理が移り、再度ＯＳから呼び出されるようなケースもあり得る。あくまでプリンタドライバ２０１の主要な処理を、便宜的にわかりやすく示したフローである。
【００６６】
まず、プリンタドライバ２０１は、スプールファイル２０６として格納されたＸＰＳ文書を取得する（Ｓ１１０１）。次に、プリンタドライバ２０１は、ＸＰＳ文書に格納されたＰｒｉｎｔＴｉｃｋｅｔから印刷設定値を取得する（Ｓ１１０２）。さらに、プリンタドライバ２０１は、取得した印刷設定値に基づき、ＸＰＳ文書がレイアウト済みであるかを判断する（Ｓ１１０３）。例えば、「ＣｒｅａｔｅＰｒｖＩｍａｇｅ」の「Ｃｒｅａｔｅｄ」が設定されている場合、１週目のドライバ処理が実施済みであるため、レイアウト処理も行われていると判断できる。
【００６７】
本実施形態では、プリンタドライバ２０１は、１回目のドライバ処理の場合、印刷プレビュー用の画像を生成するためにＸＰＳ文書のレイアウト処理を行う。そして、プリンタドライバ２０１は、そのＸＰＳ文書を用いて、印刷要求を発行する。つまり、プリンタドライバ２０１自身の印刷要求に基づき行われる２回目のドライバ処理では、レイアウト処理が既に行われたＸＰＳ文書がスプールされるため、レイアウト処理をスキップする必要がある。なお、プリンタドライバ２０１が、編集前のＸＰＳ文書を印刷要求に使用し、２回目のプリンタドライバ２０１の処理でレイアウト処理を行うことも可能である。
【００６８】
Ｓ１１０３でレイアウト処理が行われていないと判断した場合、プリンタドライバ２０１は、ＰｒｉｎｔＴｉｃｋｅｔに従い描画データのレイアウト処理を行う（Ｓ１１０４）。例えば、複数のページを一つの用紙面に印刷する割り付け印刷が設定されている場合、プリンタドライバ２０１は、ＸＰＳ文書内の描画データの複数のページを１つのページに配置するレイアウト処理を行う。
【００６９】
Ｓ１１０５では、プリンタドライバ２０１は、ＰｒｉｎｔＴｉｃｋｅｔ内に、図６（ｂ）で示されるプレビュー用画像生成指示を示す情報が存在するかを確認する。
【００７０】
Ｓ１１０５でプレビュー用画像生成指示を示す情報が存在すると判断された場合、プリンタドライバ２０１は、ＸＰＳ文書内のレイアウト処理済みの描画データの各ページからプレビュー用画像を生成する（Ｓ１１０６）。Ｓ１１０６では、例えば、モノクロ印刷の設定情報が含まれていた場合、それを反映したモノクロのプレビュー用画像を生成する。
【００７１】
次に、プリンタドライバ２０１は、生成した画像データをＸＰＳ文書に埋め込む（Ｓ１１０７）。つまり、生成したプレビュー用画像データを中間データ内に格納する。ＸＰＳ文書への埋め込む方法としては、各ページにサムネイルとして関連付ける方法などが考えられる。
【００７２】
次に、プリンタドライバ２０１は、ＰｒｉｎｔＴｉｃｋｅｔ内に、図６（ｃ）に示される、プレビュー用画像を格納した旨を示す画像格納情報を記載する（Ｓ１１０８）。ＧＵＩアプリケーション２０５は、前述のＳ８０１及びＳ１００２において、この画像格納情報を参照し、ＸＰＳ文書にプレビュー用画像が埋め込まれていることを判断することができる。
【００７３】
次に、プリンタドライバ２０１は、プレビュー用画像を含むＸＰＳ文書を用いて、プリンタドライバ２０１自身に印刷要求を行う（Ｓ１１０９）。プリンタドライバ２０１からの印刷要求をトリガーとして、ＧＵＩアプリケーション２０５が起動すると、ＧＵＩアプリケーション２０５の２回目の処理として、前述の図８〜図１０の処理が開始される。印刷要求を行うと、プリンタドライバ２０１は、処理中のジョブをキャンセルして、処理を終了する（Ｓ１１１０）。
【００７４】
Ｓ１１０４でプレビュー用画像生成指示を示す情報が存在しないと判断された場合、プリンタドライバ２０１は、取得したＸＰＳ文書に基づきプリンタが解釈可能な印刷コマンドを生成する（Ｓ１１１１）。
【００７５】
次に、プリンタドライバ２０１は、生成した印刷コマンドを印刷装置１０２に送信する（Ｓ１１１２）。印刷装置１０２は、受信した印刷コマンドに従い印刷を行う。
【００７６】
以上のように、本実施形態におけるＧＵＩアプリケーション２０５は、プリンタドライバ２０１から印刷要求を受けて２回目の起動をすることで、プリンタドライバとの連携が可能となっている。それにより、ＧＵＩアプリケーション２０５は、プリンタドライバが生成した画像を用いて印刷プレビューを実行することが可能となり、ユーザに正確な印刷結果のイメージを提供することが可能となる。
【００７７】
なお、本実施形態では、プリンタドライバ２０１が生成する印刷プレビュー用画像をＸＰＳ文書内に格納しているが、ＧＵＩアプリケーション２０５がアクセス可能な場所であればどこに格納してもよい。例えば、プリンタドライバ２０１は、生成した画像を任意の場所に格納して、格納場所をプレビュー画像格納情報内に記述してＧＵＩアプリケーション２０５に通知することも可能である。
【００７８】
＜実施形態２＞
次に実施形態２について説明する。実施形態２では、ＧＵＩアプリケーション２０５が、プリンタの状態を監視して、ステータス報知（通知）を行う方法について説明する。
【００７９】
以下の説明では、実施形態１と共通する部分については説明を省略する。特に、図１を用いて説明した印刷システムのハードウェア構成、及び図２を用いて説明したドライバ印刷システムの構成は実施形態１と同じである。また、図３を用いて説明した設定画面や、図４を用いて説明したＸＰＳ文書の構成についても実施形態１と同様であるため説明を省略する。以下では実施形態１と異なる部分を主に説明する。
【００８０】
ＧＵＩアプリケーション２０５において、印刷中のジョブについてステータス報知を行おうとすると、印刷装置１０２が印刷処理をしている間、ＧＵＩアプリケーション２０５が起動している必要がある。しかし、印刷装置１０２に印刷コマンドを送信するプリンタドライバ２０１は、ＧＵＩアプリケーション２０５が終了した後に動作するため、印刷装置が動作している時にはＧＵＩアプリケーション２０５は終了している。つまり、プリンタドライバ２０１はステータス報知を行うことができない。
【００８１】
そこで、本実施形態では、プリンタドライバ２０１は、ＧＵＩアプリケーション２０５を再度起動するために、プリンタドライバ２０１自身に印刷要求を行う。その際、プリンタドライバ２０１は、送信した印刷コマンドに付加したジョブ識別情報を印刷要求で使用するＸＰＳ文書に付加する。これにより、ＧＵＩアプリケーション２０５は、印刷装置にアクセスして、指定されたジョブ識別情報に対応したジョブのステータス報知を行う。
【００８２】
＜データフロー＞
図１２は、実施形態２におけるデータフローの一例を示した図である。描画アプリケーション５０１は、ユーザ指示に基づき、使用する印刷装置１０２に対応したプリンタドライバ２０１に対して印刷要求を行う。描画アプリケーション４０１による印刷要求を受けて、ＧＵＩアプリランチャー２０４が、ＧＵＩアプリケーション２０５を起動する。１回目の起動では、ＧＵＩアプリケーション２０５は、取得したＸＰＳ文書をそのまま出力する。ＧＵＩアプリケーション２０５がＸＰＳ文書を出力すると、ＯＳはそれをスプールファイル２０６として格納する。
【００８３】
スプールファイル２０６にＸＰＳ文書が格納されると、プリンタドライバ２０１が処理を開始する。プリンタドライバ２０１は、ＸＰＳ文書から印刷装置１０２が解釈可能な印刷コマンドを生成し、印刷コマンドを印刷装置１０２に送信する。印刷コマンドには、ジョブの識別情報が含まれる。印刷装置１０２は、ステータス取得要求を受けた場合、このジョブ識別情報と対応付けてステータス情報を返却する。ステータス情報の詳細については図１４を用いて後述する。印刷装置１０２は、受信した印刷コマンドに従い印刷処理を行う。
【００８４】
次に、プリンタドライバ２０１は、プリンタドライバ２０１自身に対して、印刷要求を発行する。その際、プリンタドライバ２０１は、印刷要求に使用するＸＰＳ文書のＰｒｉｎｔＴｉｃｋｅｔに、ジョブ識別情報を格納する。ＰｒｉｎｔＴｉｃｋｅｔに格納するジョブ識別情報については図１３を用いて後述する。プリンタドライバ２０１からの印刷要求に応じて、ＧＵＩアプリランチャー２０４が、ＧＵＩアプリケーション２０５を再度起動する。ＧＵＩアプリケーション２０５は、取得したＸＰＳ文書に格納されたＰｒｉｎｔＴｉｃｋｅｔを確認し、プリンタドライバが格納したジョブ識別情報を取得する。ＧＵＩアプリケーション２０５は、印刷装置１０２と通信を行い、ステータス情報を取得する。ＧＵＩアプリケーション２０５は、印刷装置１０２から取得したステータス情報に基づき、ＰｒｉｎｔＴｉｃｋｅｔから取得したジョブ識別情報に対応したジョブが、印刷装置１０２で処理中かを判断する。ＧＵＩアプリケーション２０５は、取得したジョブ識別情報に対応したジョブが印刷装置１０２において処理中の間、ステータス情報の表示を行う。ＧＵＩアプリケーション２０５は、取得したジョブ識別情報に対応したジョブの処理が印刷装置１０２において終了したと判断すると、ＧＵＩアプリケーション２０５の再起動のトリガーとなった印刷ジョブをキャンセルし、終了する。
【００８５】
図１３は、プリンタドライバ２０１がＰｒｉｎｔＴｉｃｋｅｔに格納するジョブ識別情報の一例を示す図である。図１３では、ジョブ識別情報をＧＵＩＤで定義し、文字列としてＰｒｉｎｔＴｉｃｋｅｔに格納している。図１３において、「０３３５ＢＤ２９−Ｃ３３２−７１４Ｂ−８１０Ｄ−０Ａ４５７０７００Ａ５Ｅ」の文字列がジョブ識別情報に対応する。プリンタドライバ２０１は、ジョブごとに異なるジョブ識別情報を生成し、印刷装置１０２に送信する印刷コマンド内に格納する。印刷装置１０２は、ステータス取得要求を受けた場合、処理中のジョブの情報をジョブ識別情報と対応付けて返却する。そして、プリンタドライバ２０１は、ＧＵＩアプリケーション２０５の起動のトリガーとなる印刷要求を行う際に、ＸＰＳ文書内のＰｒｉｎｔＴｉｃｋｅｔにジョブ識別情報を格納する。これにより、ＧＵＩアプリケーション２０５はステータス報知を行う対象となるジョブの識別情報を取得し、印刷装置１０２と通信して識別情報に対応したジョブのステータス報知が可能となる。
【００８６】
図１４は、印刷装置１０２から取得するステータス情報の一例を示す図である。印刷装置１０２は、外部からのステータス取得要求を受けると、ステータス情報を返却する。図１４では、印刷装置１０２が返却するステータス情報には、ジョブ識別情報１４０１、ジョブの状態情報１４０２、ジョブの名称１４０３、ジョブを発行したユーザ名１４０４、総ページ数情報１４０５、処理中のページ番号情報１４０６が含まれる。ＧＵＩアプリケーション２０５は、印刷装置１０２取得したステータス情報を含む画面を表示して、ユーザに通知する。
【００８７】
図１５は、ＧＵＩアプリケーション２０５が提供するステータス報知画面の一例である。図１５のステータス報知画面は、メッセージ表示部１５０１と、ジョブ情報表示部１５０２から構成される。メッセージ表示部１５０１は、印刷装置１０２から取得したステータス情報を基に、印刷装置１０２の状態を示すメッセージの表示を行う。ジョブ情報表示部１５０２は、印刷装置１０２から取得したステータス情報を基に、印刷装置１０２で実行中の印刷ジョブに関する情報を表示する。印刷ジョブに関する情報には、例えば、ジョブの名称、ジョブを発行したユーザの名称、ジョブの進捗状態などが含まれる。
【００８８】
＜ＧＵＩアプリケーションのセットアップ処理＞
図１６は、実施形態２におけるＧＵＩアプリケーション２０５のセットアップ処理のうち主要な処理フローを示した図である。以降、ＧＵＩアプリケーション２０５を、各処理の主体として説明することもあるが、実際には、対応するプログラムをＣＰＵ１１１が実行することで、対応する機能が実現されることになる。なお、全ての処理は必ずしも一つのプロセス上で逐次的に実行されるものではなく、一度ＯＳ側に処理が移り、再度ＯＳから呼び出されるようなケースもあり得る。あくまでＧＵＩアプリケーション２０５の主要な処理を、便宜的にわかりやすく示したフローである。
【００８９】
まず、ＧＵＩアプリケーション２０５は、ＸＰＳ文書中に格納されたＰｒｉｎｔＴｉｃｋｅｔを取得する（Ｓ１６０１）。
【００９０】
次に、ＰｒｉｎｔＴｉｃｋｅｔを参照し、ジョブ識別情報が存在するかを確認する（Ｓ１６０２）。ジョブ識別情報が存在する場合、ＧＵＩアプリケーション２０５は、プリンタドライバからの印刷要求であると判断し（つまり２回目の起動である）、ステータス報知を行うためにユーザインタフェースを表示することを指示する（Ｓ１６０３）。ＰｒｉｎｔＴｉｃｋｅｔ内にジョブ識別情報が存在しない場合、ＧＵＩアプリケーション２０５は、１回目の起動であるため、ユーザインタフェースの表示を指示することなく、セットアップ処理を終了する。
【００９１】
＜ＧＵＩアプリケーションのＵＩ処理＞
次にＧＵＩアプリケーションのＵＩ処理について説明する。Ｓ１６０３のＵＩの表示指定が実行された場合、ＯＳは、ＧＵＩアプリケーション２０５のセットアップ処理が終了した後、ＧＵＩアプリケーション２０５のＵＩ処理を呼び出す。なお、Ｓ１６０２のＵＩの表示指示が実行されなかった場合、ＯＳは、図１７に示されるＵＩ処理をスキップし、後述の編集及び終了処理を呼び出す。
【００９２】
図１７は、本印刷システムにおけるＧＵＩアプリケーション２０５のＵＩ処理のうち主要な処理フローを示した図である。以降、ＧＵＩアプリケーション２０５を、各処理の主体として説明することもあるが、実際には、対応するプログラムをＣＰＵ１１１が実行することで、対応する機能が実現されることになる。なお、全ての処理は必ずしも一つのプロセス上で逐次的に実行されるものではなく、一度ＯＳ側に処理が移り、再度ＯＳから呼び出されるようなケースもあり得る。あくまでＧＵＩアプリケーション２０５の主要な処理を、便宜的にわかりやすく示したフローである。
【００９３】
まず、ＧＵＩアプリケーション２０５は、ＸＰＳ文書中に格納されたＰｒｉｎｔＴｉｃｋｅｔを取得する（Ｓ１７０１）。ここで取得するＰｒｉｎｔＴｉｃｋｅｔはジョブのＰｒｉｎｔＴｉｃｋｅｔである。次に、ＧＵＩアプリケーション２０５は、ＰｒｉｎｔＴｉｃｋｅｔからジョブ識別情報を取得する（Ｓ１７０２）。なお、ジョブ識別情報の取得は、セットアップ処理でジョブ識別情報が存在するかを確認した際に併せて行い、ＵＩ処理においてもＧＵＩアプリケーション２０５がアクセス可能な場所に保存しておいてもよい。
【００９４】
次に、ＧＵＩアプリケーション２０５は、印刷装置１０２との通信を行い、ステータス情報を取得する（Ｓ１７０３）。ＧＵＩアプリケーション２０５は、取得したステータス情報を参照し、取得したジョブ識別情報に対応したジョブを印刷装置１０２が処理中か否かを判断する（Ｓ１７０４）。印刷装置１０２がジョブ識別情報に対応するジョブを処理中か否かの判断は、印刷装置１０２から取得したステータス情報に含まれるジョブ識別情報が、ＰｒｉｎｔＴｉｃｋｅｔに含まれるジョブ識別情報と一致するかを確認することで行うことができる。
【００９５】
印刷装置１０２がジョブ識別情報に対応したジョブを処理中の場合、ＧＵＩアプリケーション２０５は、印刷装置１０２から取得したステータス情報から、必要な情報を抽出して図１５に示す画面を表示する（Ｓ１７０５）。ＧＵＩアプリケーション２０５は、Ｓ１７０３からＳ１７０５を繰り返し、印刷装置１０２が当該ジョブの印刷処理を終了するまでステータス報知のＵＩ処理を続ける。Ｓ１７０４において、印刷装置１０２がジョブ識別情報に対応したジョブを処理中でないと判断された場合、ＧＵＩアプリケーション２０５は、ＵＩ処理を終了する。
【００９６】
＜ＧＵＩアプリケーションの編集及び終了処理＞
次にＧＵＩアプリケーションの編集及び終了処理を説明する。図１７のＧＵＩアプリケーション２０５のＵＩ処理が終了した後、ＯＳは、図１８のＧＵＩアプリケーション２０５の編集及び終了処理を呼び出す。なお、Ｓ１６０３のＵＩの表示指定処理が実行されなかった場合は、ＯＳは、図１７のＧＵＩアプリケーション２０５のＵＩ処理を呼び出すことなく、本処理を呼び出す。
【００９７】
以降、ＧＵＩアプリケーション２０５を、各処理の主体として説明することもあるが、実際には、対応するプログラムをＣＰＵ１１１が実行することで、対応する機能が実現されることになる。また、全ての処理は必ずしも一つのプロセス上で逐次的に実行されるものではなく、一度ＯＳ側に処理が移り、再度ＯＳから呼び出されるようなケースもあり得る。あくまでＧＵＩアプリケーション２０５の主要な処理を、便宜的にわかりやすく示したフローである。
【００９８】
まず、ＧＵＩアプリケーション２０５は、ＸＰＳ文書中に格納されたＰｒｉｎｔＴｉｃｋｅｔを取得する（Ｓ１８０１）。ここで取得するＰｒｉｎｔＴｉｃｋｅｔはジョブのＰｒｉｎｔＴｉｃｋｅｔである。
【００９９】
次に、ＧＵＩアプリケーション２０５は、ＰｒｉｎｔＴｉｃｋｅｔにジョブ識別情報が存在するかを確認する（Ｓ１８０２）。ジョブ識別情報が存在する場合、ＧＵＩアプリケーション２０５はステータス報知を行うために２回目の起動が行われたことになる。そのため、起動のトリガーとなった印刷要求は、実際に印刷を行う必要がないため、ＧＵＩアプリケーション２０５は、ジョブのキャンセルを指示する（Ｓ１８０３）。
【０１００】
ＰｒｉｎｔＴｉｃｋｅｔにジョブ識別情報が存在する場合、プリンタドライバからのステータス報知用の印刷要求ではなく、印刷が必要な１回目の印刷要求であると判断できる。そのため、ＧＵＩアプリケーション２０５は、ＸＰＳ文書の取得を行い（Ｓ１８０４）、取得したＸＰＳ文書を出力する（Ｓ１８０５）。ＧＵＩアプリケーション２０５がＸＰＳ文書を出力すると、ＯＳはそれをスプールファイル２０６として格納し、プリンタドライバ２０１が処理を開始する。
【０１０１】
＜プリンタドライバ処理＞
次にプリンタドライバ２０１の処理について説明する。図１９は、本印刷システムのプリンタドライバにおけるプリンタドライバの主要な処理フローを示した図である。図１９のプリンタドライバの処理は、図１８のＳ１８０５においてＧＵＩアプリケーション２０５が出力したＸＰＳ文書を、ＯＳがスプールファイル２０６として格納することにより、開始される。
【０１０２】
以降、プリンタドライバ２０１を、各処理の主体として説明することもあるが、実際には、対応するプログラムをＣＰＵ１１１が実行することで、対応する機能が実現されることになる。なお、全ての処理は必ずしも一つのプロセス上で逐次的に実行されるものではなく、一度ＯＳ側に処理が移り、再度ＯＳから呼び出されるようなケースもあり得る。あくまでプリンタドライバ２０１の主要な処理を、便宜的にわかりやすく示したフローである。
【０１０３】
まず、プリンタドライバ２０１は、スプールファイル２０６として格納されたＸＰＳ文書を取得する（Ｓ１９０１）。次に、プリンタドライバ２０１は、ＸＰＳ文書に付加されたＰｒｉｎｔＴｉｃｋｅｔから印刷設定値を取得する（Ｓ１９０２）。次に、プリンタドライバ２０１は、取得した印刷設定値に基づき、ＸＰＳ文書の編集を行う（Ｓ１９０３）。次に、プリンタドライバ２０１は、編集したＸＰＳ文書に基づき印刷装置１０２が解釈可能な印刷コマンドを生成する（Ｓ１９０４）。
【０１０４】
プリンタドライバ２０１が生成した印刷コマンドには、ジョブを特定するためのジョブ識別情報が含まれる。次に、プリンタドライバ２０１は、生成した印刷コマンドを印刷装置１０２に送信する（Ｓ１９０５）。印刷装置１０２は、受信した印刷コマンドに従い印刷処理を行う。
【０１０５】
次に、プリンタドライバ２０１は、ＧＵＩアプリケーション２０５の２回目の起動のトリガーとなる印刷要求に使用するＸＰＳ文書を生成する（Ｓ１９０６）。その際、ＸＰＳ文書に付加されるＰｒｉｎｔＴｉｃｋｅｔには、Ｓ１９０４で印刷コマンドに含めたジョブ識別情報を格納する。ＧＵＩアプリケーション２０５の再起動のトリガーとなる印刷要求で発生する印刷ジョブは、Ｓ１８０３においてＧＵＩアプリケーション２０５によりキャンセルされるため、ページデータなどは任意の内容でよい。
【０１０６】
次に、プリンタドライバ２０１は、生成したＸＰＳ文書を用いて、プリンタドライバ２０１自身に印刷要求を発行する。プリンタドライバ２０１からの印刷要求をトリガーとしてＧＵＩアプリケーションが起動し、２回目の処理が開始される。ＧＵＩアプリケーション２０５は、２回目の起動でステータス報知を行う。
【０１０７】
以上のように、本実施形態におけるＧＵＩアプリケーション２０５は、プリンタドライバ２０１から印刷要求を受けて２回目の起動をすることで、プリンタドライバが行う印刷処理との連携が可能となっている。これにより、ＧＵＩアプリケーション２０５は、印刷装置１０２の印刷処理の状態を示すステータス情報を取得して表示することにより、ステータス報知が可能となる。
【０１０８】
＜実施形態３＞
上述した各実施形態は、以下を実行することによっても実現される。すなわち、上記実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ（ＣＰＵ、ＧＰＵ、ＭＰＵ等）が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、上記した処理の全てをソフトウェアで実現する必要はなく、処理の一部または全部をＡＳＩＣ等のハードウェアで実現するようにしてもよい。また、ＣＰＵも１つのＣＰＵで全ての処理を行うものに限らず、複数のＣＰＵが適宜連携をしながら処理を行うものとしてもよい。
【０１０９】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤなどを用いることができる。
【０１１０】
また、前述した実施形態のプログラムコードの指示に基づき、コンピュータ上で稼動するＯｐｅｒａｔｉｎｇＳｙｓｔｅｍ（ＯＳ）などが処理の一部または全部を行ってもよい。
【０１１１】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれてもよい。そして、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ってもよい。
【符号の説明】
【０１１２】
１０２  印刷装置
１１９  表示部
２０１  プリンタドライバ
２０２  ＵＷＰアプリケーション
２０３  Ｌｅｇａｃｙアプリケーション
２０４  ＧＵＩアプリランチャー
２０５  ＧＵＩアプリケーション
２０６  スプールファイル
２０７  ＷＳＤＡ
２０８  コンフィグレーションモジュール
２０９  ＰｒｉｎｔｅｒＥｘｔｅｎｓｉｏｎｓ（ＰＥＸ）
【図１】
2020071816.tif 000003
【図２】
2020071816.tif 000004
【図３】
2020071816.tif 000005
【図４】
2020071816.tif 000006
【図５】
2020071816.tif 000007
【図６】
2020071816.tif 000008
【図７】
2020071816.tif 000009
【図８】
2020071816.tif 000010
【図９】
2020071816.tif 000011
【図１０】
2020071816.tif 000012
【図１１】
2020071816.tif 000013
【図１２】
2020071816.tif 000014
【図１３】
2020071816.tif 000015
【図１４】
2020071816.tif 000016
【図１５】
2020071816.tif 000017
【図１６】
2020071816.tif 000018
【図１７】
2020071816.tif 000019
【図１８】
2020071816.tif 000020
【図１９】
2020071816.tif 000021