(57)【特許請求の範囲】
【請求項１】
同じ印刷装置に対する第１種類のプリンタドライバと第２種類のプリンタドライバとを有し、第１種類のアプリケーションから出力された描画データを第１種類のプリンタドライバが処理可能な第１形式の描画データに変換するための第１描画変換部と、第２種類のアプリケーションから出力された描画データを第２種類のプリンタドライバが処理可能な第２形式の描画データに変換するための第２描画変換部と、前記第１描画変換部から出力された第１形式の描画データを第２形式の描画データに変換する第１変換部と、前記第２描画変換部から出力された第２形式の描画データを第１形式の描画データに変換する第２変換部とが動作するコンピュータにより実行されるプログラムであって、
出力先として呼び出されたプリンタドライバが前記第１種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第２種類のアプリケーションであることにより、前記第２変換部が前記第２形式の描画データを前記第１形式の描画データに変換する必要がある場合、前記第２変換部が前記第２形式の描画データを前記第１形式の描画データに変換する必要のない前記第２種類のプリンタドライバが使用されるように制御し、
出力先として呼び出されたプリンタドライバが前記第２種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第１種類のアプリケーションであることにより、前記第１変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要がある場合、前記第１変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要のない前記第１種類のプリンタドライバが使用されるように制御する制御手段としてコンピュータを機能させるためのプログラム。
【請求項２】
前記制御手段は、出力先として呼び出されたプリンタドライバが前記第１種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第２種類のアプリケーションであることにより、前記第２変換部が前記第２形式の描画データを前記第１形式の描画データに変換する必要がある場合、前記第２種類のプリンタドライバに対して初期化命令を発行し、前記第２種類のプリンタドライバから戻されるドライバハンドルを前記出力元のアプリケーションに通知し、
出力先として呼び出されたプリンタドライバが前記第２種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第１種類のアプリケーションであることにより、前記第１変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要がある場合、前記第１種類のプリンタドライバに対して初期化命令を発行し、前記第１種類のプリンタドライバから戻されるドライバハンドルを前記出力元のアプリケーションに通知することを特徴とする請求項１に記載のプログラム。
【請求項３】
利用者により入力される印刷設定を、印刷設定情報として保存する印刷設定保存手段としてコンピュータを更に機能させ、
前記制御手段は、出力先として呼び出されたプリンタドライバが前記第１種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第２種類のアプリケーションであることにより、前記第２変換部が前記第２形式の描画データを前記第１形式の描画データに変換する必要がある場合、前記印刷設定情報に含まれるプリンタドライバの識別名を、前記第２種類のプリンタドライバの識別名に変更し、
出力先として呼び出されたプリンタドライバが前記第２種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第１種類のアプリケーションであることにより、前記第１変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要がある場合、前記印刷設定情報に含まれるプリンタドライバの識別名を、前記第１種類のプリンタドライバの識別名に変更することを特徴とする請求項１に記載のプログラム。 
【請求項４】
前記第１種類のアプリケーションは、Ｗｉｎ３２アプリケーションであり、前記第２種類のアプリケーションは、ＷｉｎＦＸアプリケーションであり、前記第１描画変換部はＧＤＩであり、前記第２描画変換部はＷＰＦであることを特徴とする請求項１乃至３のいずれか１項に記載のプログラム。
【請求項５】
前記第１種類のプリンタドライバ、および、前記第２種類のプリンタドライバは印刷データを生成することを特徴とする請求項１乃至４のいずれか１項に記載のプログラム。 
【請求項６】
同じ印刷装置に対する第１種類のプリンタドライバと第２種類のプリンタドライバとを有し、第１種類のアプリケーションから出力された描画データを第１種類のプリンタドライバが処理可能な第１形式の描画データに変換するための第１描画変換部と、第２種類のアプリケーションから出力された描画データを第２種類のプリンタドライバが処理可能な第２形式の描画データに変換するための第２描画変換部と、前記第１描画変換部から出力された第１形式の描画データを第２形式の描画データに変換する変換部とが動作するコンピュータにより実行されるプログラムであって、
出力先として呼び出されたプリンタドライバが前記第２種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第１種類のアプリケーションであることにより、前記変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要がある場合、前記変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要のない前記第１種類のプリンタドライバが使用されるように制御する制御手段としてコンピュータを機能させるためのプログラム。
【請求項７】
同じ印刷装置に対する第１種類のプリンタドライバと第２種類のプリンタドライバとを有し、第１種類のアプリケーションから出力された描画データを第１種類のプリンタドライバが処理可能な第１形式の描画データに変換するための第１描画変換部と、第２種類のアプリケーションから出力された描画データを第２種類のプリンタドライバが処理可能な第２形式の描画データに変換するための第２描画変換部と、前記第１描画変換部から出力された第１形式の描画データを第２形式の描画データに変換する第１変換部と、前記第２描画変換部から出力された第２形式の描画データを第１形式の描画データに変換する第２変換部とが動作する情報処理装置であって、
出力先として呼び出されたプリンタドライバが前記第１種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第２種類のアプリケーションであることにより、前記第２変換部が前記第２形式の描画データを前記第１形式の描画データに変換する必要がある場合、前記第２変換部が前記第２形式の描画データを前記第１形式の描画データに変換する必要のない前記第２種類のプリンタドライバが使用されるように制御し、
出力先として呼び出されたプリンタドライバが前記第２種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第１種類のアプリケーションであることにより、前記第１変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要がある場合、前記第１変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要のない前記第１種類のプリンタドライバが使用されるように制御する制御手段を備えることを特徴とする情報処理装置。
【請求項８】
前記制御手段は、出力先として呼び出されたプリンタドライバが前記第１種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第２種類のアプリケーションであることにより、前記第２変換部が前記第２形式の描画データを前記第１形式の描画データに変換する必要がある場合、前記第２種類のプリンタドライバに対して初期化命令を発行し、前記第２種類のプリンタドライバから戻されるドライバハンドルを前記出力元のアプリケーションに通知し、
出力先として呼び出されたプリンタドライバが前記第２種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第１種類のアプリケーションであることにより、前記第１変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要がある場合、前記第１種類のプリンタドライバに対して初期化命令を発行し、前記第１種類のプリンタドライバから戻されるドライバハンドルを前記出力元のアプリケーションに通知することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
利用者により入力される印刷設定を、印刷設定情報として保存する印刷設定保存手段としてコンピュータを更に機能させ、
前記制御手段は、出力先として呼び出されたプリンタドライバが前記第１種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第２種類のアプリケーションであることにより、前記第２変換部が前記第２形式の描画データを前記第１形式の描画データに変換する必要がある場合、前記印刷設定情報に含まれるプリンタドライバの識別名を、前記第２種類のプリンタドライバの識別名に変更し、
出力先として呼び出されたプリンタドライバが前記第２種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第１種類のアプリケーションであることにより、前記第１変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要がある場合、前記印刷設定情報に含まれるプリンタドライバの識別名を、前記第１種類のプリンタドライバの識別名に変更することを特徴とする請求項７に記載の情報処理装置。
【請求項１０】
前記第１種類のアプリケーションは、Ｗｉｎ３２アプリケーションであり、前記第２種類のアプリケーションは、ＷｉｎＦＸアプリケーションであり、前記第１描画変換部はＧＤＩであり、前記第２描画変換部はＷＰＦであることを特徴とする請求項７乃至９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記第１種類のプリンタドライバ、および、前記第２種類のプリンタドライバは印刷データを生成することを特徴とする請求項７乃至１０のいずれか１項に記載の情報処理装置。
【請求項１２】
同じ印刷装置に対する第１種類のプリンタドライバと第２種類のプリンタドライバとを有し、第１種類のアプリケーションから出力された描画データを第１種類のプリンタドライバが処理可能な第１形式の描画データに変換するための第１描画変換部と、第２種類のアプリケーションから出力された描画データを第２種類のプリンタドライバが処理可能な第２形式の描画データに変換するための第２描画変換部と、前記第１描画変換部から出力された第１形式の描画データを第２形式の描画データに変換する変換部とが動作する情報処理装置であって、
出力先として呼び出されたプリンタドライバが前記第２種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第１種類のアプリケーションであることにより、前記変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要がある場合、前記変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要のない前記第１種類のプリンタドライバが使用されるように制御する制御手段を備えることを特徴とする情報処理装置。
【請求項１３】
同じ印刷装置に対する第１種類のプリンタドライバと第２種類のプリンタドライバとを有し、第１種類のアプリケーションから出力された描画データを第１種類のプリンタドライバが処理可能な第１形式の描画データに変換するための第１描画変換部と、第２種類のアプリケーションから出力された描画データを第２種類のプリンタドライバが処理可能な第２形式の描画データに変換するための第２描画変換部と、前記第１描画変換部から出力された第１形式の描画データを第２形式の描画データに変換する第１変換部と、前記第２描画変換部から出力された第２形式の描画データを第１形式の描画データに変換する第２変換部とが動作する情報処理装置の制御方法であって、
情報処理装置の制御手段が、出力先として呼び出されたプリンタドライバが前記第１種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第２種類のアプリケーションであることにより、前記第２変換部が前記第２形式の描画データを前記第１形式の描画データに変換する必要がある場合、前記第２変換部が前記第２形式の描画データを前記第１形式の描画データに変換する必要のない前記第２種類のプリンタドライバが使用されるように制御し、
出力先として呼び出されたプリンタドライバが前記第２種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第１種類のアプリケーションであることにより、前記第１変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要がある場合、前記第１変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要のない前記第１種類のプリンタドライバが使用されるように制御する制御工程を有することを特徴とする情報処理装置の制御方法。
【請求項１４】
前記制御手段は、出力先として呼び出されたプリンタドライバが前記第１種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第２種類のアプリケーションであることにより、前記第２変換部が前記第２形式の描画データを前記第１形式の描画データに変換する必要がある場合、前記第２種類のプリンタドライバに対して初期化命令を発行し、前記第２種類のプリンタドライバから戻されるドライバハンドルを前記出力元のアプリケーションに通知し、
出力先として呼び出されたプリンタドライバが前記第２種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第１種類のアプリケーションであることにより、前記第１変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要がある場合、前記第１種類のプリンタドライバに対して初期化命令を発行し、前記第１種類のプリンタドライバから戻されるドライバハンドルを前記出力元のアプリケーションに通知することを特徴とする請求項１３に記載の情報処理装置の制御方法。
【請求項１５】
前記情報処理装置の印刷設定手段が、利用者により入力される印刷設定を、印刷設定情報として保存する印刷設定保存工程をさらに有し、
前記制御工程では、出力先として呼び出されたプリンタドライバが前記第１種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第２種類のアプリケーションであることにより、前記第２変換部が前記第２形式の描画データを前記第１形式の描画データに変換する必要がある場合、前記印刷設定情報に含まれるプリンタドライバの識別名を、前記第２種類のプリンタドライバの識別名に変更し、
出力先として呼び出されたプリンタドライバが前記第２種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第１種類のアプリケーションであることにより、前記第１変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要がある場合、前記印刷設定情報に含まれるプリンタドライバの識別名を、前記第１種類のプリンタドライバの識別名に変更することを特徴とする請求項１３に記載の情報処理装置の制御方法。
【請求項１６】
前記第１種類のアプリケーションは、Ｗｉｎ３２アプリケーションであり、前記第２種類のアプリケーションは、ＷｉｎＦＸアプリケーションであり、前記第１描画変換部はＧＤＩであり、前記第２描画変換部はＷＰＦであることを特徴とする請求項１３乃至１５のいずれか１項に記載の情報処理装置の制御方法。
【請求項１７】
前記第１種類のプリンタドライバ、および、前記第２種類のプリンタドライバは印刷データを生成することを特徴とする請求項１３乃至１６のいずれか１項に記載の情報処理装置の制御方法。
【請求項１８】
同じ印刷装置に対する第１種類のプリンタドライバと第２種類のプリンタドライバとを有し、第１種類のアプリケーションから出力された描画データを第１種類のプリンタドライバが処理可能な第１形式の描画データに変換するための第１描画変換部と、第２種類のアプリケーションから出力された描画データを第２種類のプリンタドライバが処理可能な第２形式の描画データに変換するための第２描画変換部と、前記第１描画変換部から出力された第１形式の描画データを第２形式の描画データに変換する変換部とが動作する情報処理装置の制御方法であって、
前記情報処理装置の制御手段が、出力先として呼び出されたプリンタドライバが前記第２種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第１種類のアプリケーションであることにより、前記変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要がある場合、前記変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要のない前記第１種類のプリンタドライバが使用されるように制御する制御工程を備えることを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえば異なる複数のグラフィクスエンジンを用いて印刷処理等をおこえる情報処理装置および情報処理装置におけるプリンタドライバ変更方法とプログラムに関するものである。
【背景技術】
【０００２】
ホストコンピュータで実行されるアプリケーションから画像やテキストを印刷装置にて印刷するために、オペレーティングシステムは図３に示すような構成を取るのが一般的である。すなわち、アプリケーション１０１はグラフィクスエンジン１０３に対して描画データを渡し、その描画データはグラフィクスエンジン１０３にて加工されてからプリンタドライバ１０４に渡される。プリンタドライバは印刷装置に対する印刷データ（一般的にはＰＤＬ：Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）を生成する。その印刷データはスプーラ１０５に格納された後、印刷装置１５００に送られる。
【０００３】
特にグラフィクスエンジン１０３は、アプリケーション１０１で作成された描画データの解像度を変換したり、プリンタドライバ１０４の処理能力に合わせてシミュレート処理等といった描画データの加工を行う。これによって、アプリケーション１０１とプリンタドライバ１０４とが互いに非依存な関係で動作することが出来る。グラフィクスエンジン１０３は、通常ＯＳ（オペレーティングシステム）１０２の一部として提供される。
【０００４】
一方、グラフィクスエンジン１０３は必ずしも一つであるとは限らず、二つ以上のグラフィクスエンジンが共存する構成（ＯＳ）が存在する。
【０００５】
例えば、２００５年に米国シアトルにてＷｉｎＨＥＣ  ２００５というハードウェアエンジニアリングカンファレンスがマイクロソフト社によって開催された。この場にて、Ｍｉｃｒｏｓｏｆｔの新しいＯＳ（Ｗｉｎｄｏｗｓ（登録商標）Ｖｉｓｔａなる名称を持つ。）は、図１に示すような２つのグラフィクスエンジンが共存する構成になることが紹介された（非特許文献１）。
【０００６】
従来のマイクロソフト社のプリンティングシステムは、Ｗｉｎ３２  ＡＰＩというＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を使用するアプリケーション（以後Ｗｉｎ３２アプリケーションと記述）により、ＧＤＩ（Ｇｒａｐｈｉｃ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）と呼ばれるグラフィクスエンジンを使用する。そしてＧＤＩから呼び出されるプリンタドライバ（以後ＧＤＩプリンタドライバと記述）によって、描画データから印刷データを作成する、というものであった。この印刷処理フローを本実施形態ではＧＤＩプリントパスという。
【０００７】
Ｗｉｎｄｏｗｓ（登録商標）Ｖｉｓｔａでは、従来のＧＤＩプリントパスに加え、ＸＰＳプリントパスという新しい印刷処理フローが追加される。ＸＰＳプリントパスでは、ＷｉｎＦｘ  ＡＰＩというＡＰＩを使用するアプリケーション（以後ＷｉｎＦｘアプリケーションと記述）によりＷＰＦ（Windows（登録商標） Presentation Foundation）と呼ばれるグラフィクスエンジンを使用する。そしてＷＰＦグラフィクスエンジンにより、ＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）形式の描画データを、プリンタドライバ（以後ＸＰＳプリンタドライバ）に渡し、プリンタドライバが印刷データに変換する。
【０００８】
さらにこのＧＤＩとＷＰＦといったグラフィクスエンジンは、互いに連携することが出来る。この連携によりＷｉｎ３２アプリケーションからＸＰＳプリンタドライバに描画データを渡すことが出来たり、ＷｉｎＦｘアプリケーションからＧＤＩプリンタドライバに描画データを渡すことが出来るようになる。
【０００９】
この連携のために、ＧＤＩプリンタドライバを用いてＷｉｎＦｘアプリケーションから印刷を行う場合、描画データは、ＷＰＦグラフィックエンジンでＸＰＳ形式の描画データに変換され、さらにＸＰＳ形式からＥＭＦ形式の描画データに変換される。変換された描画データはＥＭＦスプールファイルに格納された後、ＧＤＩドライバにて印刷データへの変換が行われる。
【００１０】
また、ＸＰＳプリンタドライバを用いてＷｉｎ３２アプリケーションから印刷を行う場合、描画データは、ＧＤＩグラフィックエンジンでＥＭＦ形式の描画データに変換され、さらにＥＭＦ形式からＸＰＳ形式の描画データに変換される。変換された描画データは、ＸＰＳスプールファイルに格納された後、ＸＰＳプリンタドライバにて印刷データへ変される。
【００１１】
このようにＷｉｎｄｏｗｓ（登録商標）ＶＩＳＴＡにおいては４つの印刷処理フローが用意される。これにより、ＧＤＩプリンタドライバあるいはＸＰＳプリンタドライバのどちらか一方を用意すれば、Ｗｉｎ３２アプリケーションおよびＷｉｎＦｘアプリケーション両方からの印刷処理に対応することが出来る。
【非特許文献１】マイクロソフトコーポレーション、「Advances in Windows（登録商標） Printing:TWPR05001_WinHEC05.ppt」、［オンライン］、平成１６年５月７日、［平成１７年２月２８日検索］、インターネット、＜ＵＲＬ：http://www.microsoft.com/whdc/device/print/default.mspx＞
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、ＸＰＳ形式とＥＭＦ形式とは異なるため、描画データ形式の変換には、印刷品質や機能、印刷速度等の点で課題が存在する。
【００１３】
例えばＥＭＦ形式でサポートされているＲＯＰ演算（ラスターオペレーション処理演算）のような論理演算を含む描画データは、ＸＰＳ形式ではサポートされていない。そのため、米国マイクロソフト社が決定する仕様によっては、論理演算を含む描画データに対しては、ＧＤＩ→ＸＰＳ変換モジュールで変換する際に論理演算情報が欠落してしまうおそれがある。ＸＰＳプリンタドライバには論理演算情報が削除された描画データが渡される場合、Ｗｉｎ３２アプリケーションにおいて意図された出力結果をＸＰＳプリンタドライバで作成することが出来なくなる可能性がある。
【００１４】
逆にＸＰＳ形式においてサポートされている高度なグラフィクス描画データは、ＥＭＦ形式においてサポートされていない。そのため、そのような描画データに対してはＸＰＳ→ＧＤＩ変換モジュールで変換する際に、フラッタリングと呼ばれる局所的なビットマップ化が行われる。その場合、グラフィクスデータがビットマップデータに変換されてしまうことにより、ＧＤＩプリンタドライバでは元のオブジェクト属性が判断出来なくなってしまい、オブジェクト属性に応じた出力結果を作成することが出来ない。すなわち、データ形式の変換により出力される画像品質が劣化する。例えば、プリンタドライバでＮページ印刷を行う場合、ビットマップ化されたデータを縮小して配置するため、グラフィクスの描画オブジェクトを縮小するサイズで描画する場合に比べて画質が低下してしまう。
【００１５】
また、例えばＸＰＳ形式においてサポートされる電子署名情報は、ＥＭＦ形式においてはサポートされていない。またＥＭＦ形式においてサポートされる、アプリケーションからの情報を直接ＧＤＩプリンタドライバに伝える処理は、ＸＰＳ形式においてはサポートされていない。そのため、ＸＰＳ形式からＥＭＦ形式へ、あるいはその逆の変換が行われる場合、変換元の形式の描画データに、変換後の形式ではサポートされない機能を使用する命令が含まれていると、その機能が遂行されることはない。すなわち、この様な場合には、実現できない機能が存在する。
【００１６】
また、ＧＤＩ→ＸＰＳ変換やＸＰＳ→ＧＤＩ変換等の処理が発生することにより、処理のオーバーヘッドが生じ、変換が不要な処理径路に較べると印刷処理速度が劣化してしまうおそれがある。
【００１７】
以上のように、データ形式の変換が行われると、品質面、機能面、速度面の何れの点においても問題が生じる。そのため、データ形式の変換が行われるような印刷処理径路を避けることが望ましい。
【００１８】
そのために、同じ印刷装置に対するＸＰＳプリンタドライバとＧＤＩプリンタドライバの両者をコンピュータにインストールしておいても、使用するプリンタドライバの選択は利用者に任されている。すなわち、Ｗｉｎｄｏｗｓ（登録商標）ＶＩＳＴＡにおけるグラフィクスエンジンは、データ形式の変換が必要ない処理径路の選択を動的に行うことはない。さらに、一般の利用者の多くは、アプリケーションがＷｉｎ３２アプリケーションなのかＷｉｎＦｘアプリケーションなのかを意識したり、印刷処理フローが４通りあることを認識していない。そのため、ひとつのプリンタドライバをデフォルトのプリンタドライバとしていったん選択してしまうと、アプリケーションの種類に関わらず選択したプリンタドライバが使用される。このように、印刷処理径路において、ＧＤＩ→ＸＰＳ変換やＸＰＳ→ＧＤＩ変換というデータ形式の変換を避けることは困難であると予想される。
【００１９】
本発明は上記従来例に鑑みてなされたもので、上記課題を解決することを目的とする。さらに、本発明は、一つのプリンタに対して複数のプリンタドライバが利用可能な場合に、選択されているプリンタドライバがいずれであるかに関わらず、アプリケーションが使用するグラフィクスエンジンに対応したプリンタドライバを使用して印刷を実行できる情報処理装置および情報処理装置におけるプリンタドライバ変更方法とプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２０】
上記目的を達成するために本発明は以下の構成を備える。すなわち、同じ印刷装置に対する第１種類のプリンタドライバと第２種類のプリンタドライバとを有し、第１種類のアプリケーションから出力された描画データを第１種類のプリンタドライバが処理可能な第１形式の描画データに変換するための第１描画変換部と、第２種類のアプリケーションから出力された描画データを第２種類のプリンタドライバが処理可能な第２形式の描画データに変換するための第２描画変換部と、前記第１描画変換部から出力された第１形式の描画データを第２形式の描画データに変換する第１変換部と、前記第２描画変換部から出力された第２形式の描画データを第１形式の描画データに変換する第２変換部とが動作するコンピュータにより実行されるプログラムであって、出力先として呼び出されたプリンタドライバが前記第１種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第２種類のアプリケーションであることにより、前記第２変換部が前記第２形式の描画データを前記第１形式の描画データに変換する必要がある場合、前記第２変換部が前記第２形式の描画データを前記第１形式の描画データに変換する必要のない前記第２種類のプリンタドライバが使用されるように制御し、出力先として呼び出されたプリンタドライバが前記第２種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第１種類のアプリケーションであることにより、前記第１変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要がある場合、前記第１変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要のない前記第１種類のプリンタドライバが使用されるように制御する制御手段としてコンピュータを機能させる。
【００２１】
あるいは同じ印刷装置に対する第１種類のプリンタドライバと第２種類のプリンタドライバとを有し、第１種類のアプリケーションから出力された描画データを第１種類のプリンタドライバが処理可能な第１形式の描画データに変換するための第１描画変換部と、第２種類のアプリケーションから出力された描画データを第２種類のプリンタドライバが処理可能な第２形式の描画データに変換するための第２描画変換部と、前記第１描画変換部から出力された第１形式の描画データを第２形式の描画データに変換する変換部とが動作するコンピュータにより実行されるプログラムであって、
出力先として呼び出されたプリンタドライバが前記第２種類のプリンタドライバであり、かつ、出力元のアプリケーションが前記第１種類のアプリケーションであることにより、前記変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要がある場合、前記変換部が前記第１形式の描画データを前記第２形式の描画データに変換する必要のない前記第１種類のプリンタドライバが使用されるように制御する制御手段としてコンピュータを機能させる。
【発明の効果】
【００２２】
本発明により、一つのプリンタに対して複数のプリンタドライバが利用可能な場合に、選択されているプリンタドライバがいずれであるかに関わらず、アプリケーションが使用するグラフィクスエンジンに対応したプリンタドライバを使用して印刷を実行できる。
【発明を実施するための最良の形態】
【００２３】
［実施形態１］
＜コンピュータの構成＞
本発明に係る印刷制御装置の一実施形態について説明する。印刷制御装置はコンピュータ（情報処理装置）により実現されている。そのコンピュータのソフトウエア構成例を示す。コンピュータのハードウエア構成は、通常の汎用コンピュータと同様に、ＣＰＵ、メモリ、ユーザインターフェースデバイス（キーボードやディスプレイ等）、ファイル記憶装置などから構成される。
【００２４】
図１は、複数のグラフィクスエンジンが共存する例として、Ｗｉｎｄｏｗｓ（登録商標）ＶＩＳＴＡにおける印刷処理フローおよび印刷処理のためのソフトウエアコンポーネントを示す。Ｗｉｎｄｏｗｓ（登録商標）ＶＩＳＴＡにおいて、アプリケーションは、第１種類のアプリケーションであるＷｉｎ３２アプリケーション（２０１）と第２種類のアプリケーションであるＷｉｎＦｘアプリケーション（２１１）の２種類に区別される。グラフィクスエンジンは、第１描画変換部であるＧＤＩ（２０２）と第２描画変換部であるＷＰＦ（２１２）の２つがＯＳ（１０２）上に存在する。ここでＷｉｎ３２アプリケーション（２０１）は、ＧＤＩ（２０２）に対して第１描画データであるＧＤＩ関数を渡し、ＷｉｎＦｘアプリケーション（２１１）はＷＰＦ（２１２）に対して第２描画データであるＷＰＦ  ＡＰＩ形式データを渡す。また、プリンタダライバは、第１種類のプリンタドライバであるＧＤＩプリンタドライバ（２０３）と第２種類のプリンタドライバであるＸＰＳプリンタドライバ（２１３）の２種類に区別される。ＧＤＩプリンタドライバ（２０３）はＧＤＩ（２０２）から描画データを受け取り印刷装置１５００に対する印刷データに変換する。ＸＰＳプリンタドライバ（２１３）はＷＰＦ（２１２）から描画データを受け取り印刷装置１５００に対する印刷データに変換する。プリンタドライバで作成された印刷データは、スプーラ（１０５）を経て印刷装置（１５００）に送信される。
【００２５】
ここで、Ｗｉｎ３２アプリケーション（２０１）からＧＤＩ（２０２）を経由してＧＤＩプリンタドライバ（２０３）で印刷データを作成する印刷処理フローをＧＤＩプリントパスと呼ぶ。ＷｉｎＦｘアプリケーション（２１１）からＷＰＦ（２１２）を経由してＸＰＳプリンタドライバ（２１３）で印刷データを作成する印刷処理フローをＸＰＳプリントパスと呼ぶ。ここで、ＧＤＩプリントパスとＸＰＳプリントパスを、ストレートプリントパスと総称する。ただし、印刷処理フローはＧＤＩプリントパスとＸＰＳプリントパスだけでなく、Ｗｉｎ３２アプリケーション（２０１）からＧＤＩ（２０２）を経てＸＰＳプリンタドライバ（２１３）で印刷データを作成する印刷処理フローが存在する。またＷｉｎＦｘアプリケーション（２１１）からＷＰＦ（２１２）を経てＧＤＩプリンタドライバ（２０３）で印刷データを作成する印刷処理フローも存在する。これらのパスは、ＧＤＩ→ＸＰＳ変換部３０２およびＸＰＳ→ＧＤＩ変換部３１２により、データ形式を変換することで実現される。ここで、各グラフィックエンジンでお互いのデータ形式に変換するプリントパスを、クロスプリントパスと総称する。
【００２６】
図２を用いて印刷処理フローの説明を行う。図２は、Ｗｉｎｄｏｗｓ（登録商標）ＶＩＳＴＡにおける、２つのグラフィクスエンジン共存の仕組みを示す。Ｗｉｎｄｏｗｓ（登録商標）ＶＩＳＴＡにおける印刷処理フローとしてはフロー３５１、３５２、３５３、３５４の４種類が存在する。
【００２７】
印刷処理フロー３５１は、ＧＤＩプリントパスを示している。Ｗｉｎ３２アプリケーション２０１から渡される描画データは、ＧＤＩ２０２にてＥＭＦ（Ｅｎｈａｎｃｅｄ  Ｍｅｔａｆｉｌｅ）形式でＥＭＦスプールファイルとして格納される。その後ＧＤＩプリンタドライバ２０３にて印刷データへの変換が行われる。
【００２８】
印刷処理フロー３５４は、Ｗｉｎｄｏｗｓ（登録商標）ＶＩＳＴＡで追加されるＸＰＳプリントパスを示している。ＷｉｎＦｘアプリケーション２１１から渡される描画データは、ＷＰＦ２１２にてＸＰＳスプールファイル３１１に格納され、その後ＸＰＳプリンタドライバ２１３にて印刷データへの変換が行われる。
【００２９】
印刷処理フロー３５２は、ＷｉｎＦｘアプリケーション２１１からのデータをＧＤＩプリンタドライバ２０３で印刷する場合の印刷処理フローを示している。ＷｉｎＦｘアプリケーション２１１から渡される描画データは、ＷＰＦ２１２を経由してＸＰＳ→ＧＤＩ変換モジュール３１２にてＥＭＦ形式の描画データに変換される。変換された描画データはＥＭＦスプールファイルに格納された後、ＧＤＩドライバ２０３にて印刷データへの変換が行われる。
【００３０】
印刷処理フロー３５３は、Ｗｉｎ３２アプリケーション２０１からＸＰＳプリンタドライバ２１３で印刷する場合の処理フローを示している。Ｗｉｎ３２アプリケーション２０１から渡される描画データは、ＧＤＩ２０２を経由してＧＤＩ→ＸＰＳ変換モジュール３０２にてＸＰＳ形式の描画データに変換される。変換された描画データは、ＸＰＳスプールファイル３１１に格納された後、ＸＰＳプリンタドライバ２１３にて印刷データへ変される。
【００３１】
図４は、本実施形態のコンピュータを含むプリンタ制御システムの構成を説明するブロック図である。なお特に断らない限り、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、ＬＡＮ，ＷＡＮ等のネットワークを介して接続が為され処理が行われるシステムであっても本発明を適用できる。
【００３２】
図４において、ホストコンピュータ３０００は、ＲＯＭ３のプログラム用ＲＯＭあるいは外部メモリ１１に記憶された文書処理プログラム等に基づいて図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理を実行するＣＰＵ１を備え、システムバス４に接続される各デバイスをＣＰＵ１が総括的に制御する。
【００３３】
また、このＲＯＭ３のプログラム用ＲＯＭあるいは外部メモリ１１には、ＣＰＵ１の制御プログラムであるオペレーティングシステムプログラム（以下ＯＳ）等を記憶し、ＲＯＭ３のフォント用ＲＯＭあるいは外部メモリ１１には上記文書処理の際に使用するフォントデータ等を記憶し、ＲＯＭ３のデータ用ＲＯＭあるいは外部メモリ１１には上記文書処理等を行う際に使用する各種データを記憶する。
【００３４】
ＲＡＭ２は、ＣＰＵ１の主メモリ、ワークエリア等として機能する。キーボードコントローラ（ＫＢＣ）５は、キーボード９や不図示のポインティングデバイスからのキー入力を制御する。ＣＲＴコントローラ（ＣＲＴＣ）６は、ＣＲＴディスプレイ（ＣＲＴ）１０の表示を制御する。ディスクコントローラ（ＤＫＣ）７は、ハードディスク（ＨＤ）、フレキシブルディスク（ＦＤ）等の外部メモリ１１とのアクセスを制御する。外部メモリ１１には、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、プリンタ制御コマンド生成プログラム（以下プリンタドライバ）等が記憶される。本発明に係るプリンタドライバも外部メモリ１１に保存される。
【００３５】
プリンタコントローラ（ＰＲＴＣ）８は、所定の双方向性インターフェース２１を介してプリンタ１５００に接続されて、プリンタ１５００との通信制御処理を実行する。なお、ＣＰＵ１は、例えばＲＡＭ２上に設定された表示情報ＲＡＭへのアウトラインフォントの展開（ラスタライズ）処理を実行し、ＣＲＴ１０上でのＷＹＳＩＷＹＧを可能としている。
【００３６】
また、ＣＰＵ１は、ＣＲＴ１０上の不図示のマウスカーソル等で指示されたコマンドに基づいて登録された種々のウインドウを開き、種々のデータ処理を実行する。ユーザは印刷を実行する際、印刷の設定に関するウインドウを開き、プリンタの設定や、印刷モードの選択を含むプリンタドライバに対する印刷処理方法の設定を行える。
【００３７】
プリンタ１５００において、プリンタＣＰＵ１２は、ＲＯＭ１３のプログラム用ＲＯＭに記憶された制御プログラム等あるいは外部メモリ１４に記憶された制御プログラム等に基づいて、システムバス１５に接続される印刷部（プリンタエンジン）１７に出力情報としての画像信号を出力する。
【００３８】
また、このＲＯＭ１３のプログラムＲＯＭには、ＣＰＵ１２の制御プログラム等を記憶する。ＲＯＭ１３のフォント用ＲＯＭには上記出力情報を生成する際に使用するフォントデータ等を記憶し、ＲＯＭ１３のデータ用ＲＯＭにはハードディスク等の外部メモリ１４がないプリンタの場合には、ホストコンピュータ上で利用される情報等を記憶している。
【００３９】
ＣＰＵ１２は入力部１８を介してホストコンピュータとの通信処理が可能となっており、プリンタ内の情報等をホストコンピュータ３０００に通知可能に構成されている。ＲＡＭ１９は、ＣＰＵ１２の主メモリやワークエリア等として機能するＲＡＭでる。ＲＡＭ１９は、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。なお、ＲＡＭ１９は、出力情報展開領域、環境データ格納領域、ＮＶＲＡＭ等に用いられる。前述したハードディスク（ＨＤ）、ＩＣカード等の外部メモリ１４は、メモリコントローラ（ＭＣ）２０によりアクセスを制御される。
【００４０】
外部メモリ１４は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。また、操作パネル１８には、操作のためのスイッチおよびＬＥＤ表示器等が配されている。また、前述した外部メモリは１個に限らず、少なくとも１個以上備え、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを複数接続できるように構成されていてもよい。さらに、図示しないＮＶＲＡＭを有し、操作パネル１５０１からのプリンタモード設定情報を記憶するようにしてもよい。
【００４１】
＜ドライバの詳細な構成＞
図５は、本実施形態に関わるＧＤＩプリンタドライバ２０３とＸＰＳプリンタドライバ２１３の構成を示す。図５では、アプリケーションおよびグラフィクスエンジンについては記載を省略し、ひとつのものであるかのように示した。もちろん、図１に示すように、プリンタドライバは、グラフィクスエンジンからそれぞれ対応した描画データを入力する。本実施形態においては、印刷装置（１５００）に対し、ＧＤＩプリンタドライバ（２０３）とＸＰＳプリンタドライバ（２１３）の両者がＯＳ（１０２）にインストールされている。すなわち、ＧＤＩプリンタドライバ２０３とＸＰＳプリンタドライバ２１３は、同一のプリンタを出力先とする関係にある。
ＧＤＩプリンタドライバ（２０３）は、ＧＤＩ  ＵＩ（ユーザインターフェースの略称）ドライバ（５０１）とＧＤＩグラフィクスドライバ（５０２）より構成される。ＧＤＩ  ＵＩドライバ（５０１）は、プリンタドライバのユーザインターフェースの表示や、ユーザから入力された印刷設定情報をレジストリに保存する。ＧＤＩグラフィクスドライバ（５０２）は、グラフィクスエンジン（１０３）から対応する描画データ（ＤＤＩ関数：Ｄｅｖｉｃｅ  Ｄｒｉｖｅｒ  Ｉｎｔｅｒｆａｃｅ）を受け取り、ＧＤＩ  ＵＩドライバ（５０１）で保存された印刷設定情報に応じて描画データから印刷データを作成する。
【００４２】
ＸＰＳプリンタドライバ（５１１）は、ＸＰＳ  ＵＩドライバ（５１１）とＸＰＳグラフィクスドライバ（５１２）より構成される。ＸＰＳ  ＵＩドライバ（５１１）は、プリンタドライバのユーザインターフェースの表示や、ユーザから入力された印刷設定情報をレジストリに保存する。ＸＰＳグラフィクスドライバ（５１２）は、グラフィクスエンジン（１０３）から対応する描画データ（ＸＰＳデータ）を受け取り、ＸＰＳ  ＵＩドライバ（５１１）で保存された印刷設定情報に応じて描画データから印刷データを作成する。
【００４３】
ここではＧＤＩ  ＵＩドライバ（５０１）とＸＰＳ  ＵＩドライバ（５１１）は異なったコンポーネントとして記述しているが、両者の機能やインターフェースを所有した形で一つの共通ＵＩドライバとして存在してもよい。その場合、ＧＤＩプリンタドライバ（２０３）は共通ＵＩドライバとＧＤＩグラフィクスドライバ（５０２）により構成され、ＸＰＳ  プリンタドライバ（２１３）は共通ＵＩドライバとＸＰＳグラフィクスドライバ（５１２）により構成されることになる。
【００４４】
図６は、本実施形態に関わるＧＤＩプリンタドライバとＸＰＳプリンタドライバの両者がインストールされている状況において、プリンタの状態を示すウインドウの例である。図６に示すように、一つの印刷装置（例としてプリンタＡ）に対して、ＧＤＩプリンタドライバ（２０３）が「プリンタＡ（ＧＤＩ）」として登録されている。また、同時に同じプリンタＡに対して、ＸＰＳプリンタドライバ（２１３）が「プリンタＡ（ＸＰＳ）」として登録されている。このように、一つの印刷装置に対して、ＧＤＩプリンタドライバ（２０３）とＸＰＳプリンタドライバ（２１３）という２つのプリンタドライバが共存している。なお米国マイクロソフト社ウインドウズ（登録商標）ＯＳでは、デフォルトのプリンタドライバを選択することができる。デフォルトとして選択されたプリンタドライバは、そのことを示す情報が、オペレーティングシステムからアクセス可能に記憶される。アプリケーションから印刷を行う際には、印刷が指示されると、通常はアプリケーションにおける印刷設定のユーザインターフェースが表示される。そしてそのアプリケーションのユーザインターフェースの中で、利用者は、プリンタドライバを選択することができる。特に選択がされないと、デフォルトのプリンタドライバが選択され、そのプリンタドライバを用いて印刷が行われる。図６では、デフォルトのプリンタドライバとして「プリンタＡ（ＸＰＳ）」２１３が選択されている。
【００４５】
＜ＵＩドライバの構成及び動作＞
図７は本発明の特徴を最もよくあらわす図面であり、第１実施形態におけるＵＩドライバ５０１およびＵＩドライバ５１１の構成を示すものである。なお、以下の説明では、ＵＩドライバも、プリンタドライバと区別せず、プリンタドライバと同じ符号を付して説明する。第１実施形態においては、ＧＤＩグラフィクスドライバ（５０２）およびＸＰＳグラフィクスドライバ（５１２）は特別な処理を行う訳ではなく、一般的なグラフィクスドライバの挙動と同様である。ＧＤＩ  ＵＩドライバ（２０３）およびＸＰＳ  ＵＩドライバ（２１３）あるいは共通ＵＩドライバ（以後、まとめてＵＩドライバと記述する。）においては、本実施形態に特徴的な処理が実行される。
【００４６】
図７において、本実施形態におけるＵＩドライバ５０１，５１１は、アプリケーション（２０１，２１１）やグラフィクスエンジン（２０２，２１２）からドライバ初期化指示を受ける。ＵＩドライバ５０１，５１１では、それに対して、アプリケーション情報取得部（７０３）で、ＵＩドライバを呼び出しているアプリケーション（２０１，２１１）がＷｉｎ３２アプリケーション（２０１）とＷｉｎＦｘアプリケーション（２１１）のいずれであるかの情報取得を行う。
【００４７】
本実施形態におけるＵＩドライバは、アプリケーション（２０１，２１１）やグラフィクスエンジン（２０２，２１２）からドライバ初期化指示を受ける。ＵＩドライバ５０１，５１１では、それに対して、アプリケーション情報取得部（７０３）により、ＵＩドライバを呼び出しているアプリケーション（１０１）の名称を取得する。また、そのアプリケーションが、Ｗｉｎ３２アプリケーション（２０１）とＷｉｎＦｘアプリケーション（２１１）のいずれであるかの情報（すなわちアプリケーションの種類情報）も取得する。本実施形態においては、Ｗｉｎ３２  ＡＰＩにて提供されているＧｅｔＭｏｄｕｌｅＦｉｌｅＮａｍｅ関数等を用いることで、ＵＩドライバを呼び出すプロセス名（実行ファイル名称）を取得できる。また、ＵＩドライバを呼んでいるアプリケーションが、Ｗｉｎ３２アプリケーション（２０１）とＷｉｎＦｘアプリケーション（２１１）のいずれかであるかは、以下のように判定できる。すなわち、前述の関数で取得した名称の実行ファイルが所持しているヘッダ部から、実行ファイルがインポートしているＤＬＬ（Ｄｙｎａｍｉｃ  Ｌｉｎｋ  Ｌｉｂｒａｒｙ）を取得する。そして、そのインポートしているＤＬＬの中にＷｉｎＦｘアプリケーションに固有のモジュールが存在するか否かを判定する。たとえばＷｉｎＦｘに固有のモジュール名を予め表化して記憶しておき、その表から取得したモジュール名を検索し、ヒットすればＷｉｎＦｘ固有と判定できる。
【００４８】
このようにＷｉｎ３２アプリケーション（２０１）とＷｉｎＦｘアプリケーション（２１１）のいずれかを判断している。このほか、例えばＯＳがアプリケーションの種類を伝達するＡＰＩを提供しているのであればそれを利用してアプリケーションの種類情報を獲得できる。あるいは、ＵＩドライバにて、プロセス名（実行ファイル名称）に関連づけて、アプリケーション名称や、そのアプリケーションがＷｉｎ３２アプリケーションかＷｉｎＦｘアプリケーションかを示す種類情報を格納したアプリケーションテーブルを保存する方法も採用できる。この方法では、アプリケーションテーブルの保守のために、保守用のユーザインターフェースを表示し、利用者の入力によりそのアプリケーションテーブルを更新できることが望ましい。ＵＩドライバは、ＧｅｔＭｏｄｕｌｅＦｉｌｅＮａｍｅ関数等を用いることで、ＵＩドライバを呼び出すプロセス名を取得し、そのプロセス名でアプリケーションテーブルを検索する。ヒットすれば、該当するプロセス名に対応付けられたアプリケーション名が、ＵＩドライバを呼びだしたアプリケーションの名称である。また、該当するプロセス名に対応付けられたアプリケーションの種類が、ＵＩドライバを呼びだしたアプリケーションの種類である。
【００４９】
あるいは次のような方法でアプリケーションの種類を判定できる。Ｗｉｎ３２アプリケーションは、ＵＩドライバに対して印刷設定情報をＤｅｖｍｏｄｅという形式で取得しようとする。一方ＷｉｎＦｘアプリケーションはＵＩドライバに対して印刷設定情報をプリントチケットという形式で取得しようとする。ＵＩドライバはどちらの形式でも印刷設定情報を作成することが出来る。そこでこの取得要求を元にアプリケーションの種類がいずれかを判断することもできる。
【００５０】
次に、アプリ・ドライバ判断部（７０４）にて、アプリケーションとアプリケーションが呼び出しているＵＩドライバの組合わせが適切であるかどうかを判断する。この判断基準に関しては、図８に後述する。適切であるとは、アプリケーションが使用するグラフィックエンジンとプリンタドライバとが整合していることである。すなわち、グラフィックエンジンから出力される描画データの形式を変換（たとえばＥＭＦ←→ＸＰＳ）する必要がないことである。アプリケーションが使用するグラフィックエンジンはアプリケーションの種類に応じて決まっている。したがって、アプリケーションの種類情報と、アプリケーションで選択されたプリンタドライバとが分かれば、適切であるか判定できる。アプリケーションの種類は上述した要領で取得できる。選択されているプリンタドライバは、その選択の情報が所定領域に保存されていればそれを参照することで特定できる。また、使用するプリンタドライバの情報（識別子等）が、印刷を行うアプリケーションプログラムからグラフィックエンジンに渡され、ＵＩドライバで参照できれば、それを参照することもできる。そしてプリンタドライバの識別子が参照できれば、それがＸＰＳプリンタドライバであるか、ＧＤＩプリンタドライバであるか（すなわちプリンタドライバの種類）は判定できる。たとえば、予めプリンタドライバの名称と、その種類情報とを対応付けたテーブルを作成して保存し、それを参照することでプリンタドライバの種類を判定できる。なお、適切であることを、同じ種類のアプリケーションとプリンタドライバとの組み合わせであると表現することもある。この同じ種類であるか否かの判定は、データ形式の変換の必要性を判定するためにグラフィックエンジンも行う必要があるので、それと同じ判定基準を採用することもできる。
【００５１】
アプリ・ドライバ判断部（７０４）にて不適切と判断された場合、適切ドライバ初期化指示部（７０５）にて、ストレートパスとなる適切なＵＩドライバに対して初期化指示を出す。適切なＵＩドライバとは、最初にユーザにより選択されたプリンタドライバの出力先のプリンタと同一の出力先に設定されているプリンタドライバであり、かつ、ストレートパスとなるプリンタドライバのことである。ここで、ＧＤＩプリンタドライバは、出力先が同一のＸＰＳプリンタドライバが情報処理装置内にインストールされているか予め認識しているものとする。また、同様に、ＸＰＳプリンタドライバは、出力先が同一のＧＤＩプリンタドライバが情報処理装置内にインストールされているか予め認識しているものとする。また、ＵＩドライバが共通ＵＩドライバである場合は、ＧＤＩグラフィクスドライバとＸＰＳグラフィクスドライバがあるかは、当然認識しているはずである。ここでは、ＧＤＩ  ＵＩドライバとＸＰＳ  ＵＩドライバは、それぞれ別のＵＩドライバモジュール構成であるとして説明している。
そして、初期化指示に応じて初期化処理を行ったＵＩドライバからドライバハンドルを受け取る。ＵＩドライバからのドライバハンドルはドライバハンドル返却部（７０７）により受信される。ドライバハンドル返却部（７０７）は、受け取ったドライバハンドルを、ＵＩドライバに対して初期化指示を発行したアプリケーション（２０１，２１１）やグラフィクスエンジン（２０２，２１２）に送信する（引き渡す）。
【００５２】
なお本実施形態では、ひとつのプリンタに対するドライバは２組ある。そのため一方のドライバが適切でないと判定された場合には、他方のドライバが適切なドライバとして選択される。もちろん、後述する図８のテーブル等を用いて、適切なＵＩドライバを選択することもできる。また、初期化処理とは、たとえばメモリの確保やドライバハンドルの応答などが含まれる。ドライバハンドルとは、ドライバを固有に識別するための識別名である。このハンドルにより、ＵＩドライバとプリンタドライバとが特定できる。
【００５３】
さて一方アプリ・ドライバ判断部（７０４）にて適切と判断された場合は、そのままドライバ初期化部（７０６）でＵＩドライバの初期化を行う。初期化処理で生成したドライバハンドルをドライバハンドル返却部（７０７）にて初期化指示を出したアプリケーションまたはグラフィクスドライバに応答する。
【００５４】
ＵＩドライバからドライバハンドルの引渡を受けたアプリケーションまたはグラフィクスエンジンは、引き渡されたドライバハンドルで特定されるＵＩドライバを起動して、ユーザに印刷設定の入力を許す。また、ＵＩドライバからドライバハンドルの引渡を受けたアプリケーションまたはグラフィクスエンジンは、引き渡されたドライバハンドルで特定されるプリンタドライバに対して、描画データの出力を行うため、ストレートプリントパスとなる適切なプリンタドライバが、印刷データの変換すなわち印刷ジョブの生成を行う。このように、起動要求を受けたＵＩドライバが、印刷を行うアプリケーションに対して、そのアプリケーションに適切なドライバハンドルを引き渡すことで、高品質の結果が得られる印刷処理を迅速に行うことが出来る。
【００５５】
なお、ユーザが印刷設定を行うために、ドライバの初期化指示と共にＵＩ表示指示がＵＩドライバに渡される場合がある。その場合には、アプリ・ドライバ判断部（７０４）にて、アプリケーションとプリンタドライバとの組み合わせが適切と判断されれば、ＵＩ表示部（７０１）にてＵＩダイアログを表示する。ユーザは印刷設定変更を表示されたＵＩを介してＵＩ設定部（７０２）で行う。一方、アプリ・ドライバ判断部（７０４）にて不適切と判断されれば、適切ドライバ初期化指示部（７０５）にて、適切ドライバに対してドライバ初期化指示とともに、ＵＩ表示指示も発行する。こうして、利用者は適切なドライバでの印刷設定変更を行うことができる。
【００５６】
図８は、ＵＩドライバにおけるアプリ・ドライバ判断部で行う判断条件の一例を示したものである。図８の基準テーブルには、Ｗｉｎ３２アプリケーション（２０１）から印刷する際にＧＤＩプリンタドライバ（２０３）が選択されていれば適切であると判断される。このため該当する欄には「適切」と登録されている。これは、Ｗｉｎ３２アプリケーション（２０１）による印刷時にはＧＤＩグラフィクスエンジン（２０２）が利用され、ＧＤＩプリンタドライバ（２０３）ではＧＤＩグラフィクスドライバ（５０２）にてストレートプリントパスとして印刷処理が行われるためである。また、Ｗｉｎ３２アプリケーション（２０１）から印刷する際に、ＸＰＳ  ＵＩドライバ（５１１）が選択されていれば不適切と判断される。このため該当する欄には「不適切」とであると登録されている。これは、Ｗｉｎ３２アプリケーション（２０１）による印刷時にはＧＤＩグラフィクスエンジンが利用され、ＸＰＳプリンタドライバ（２１３）ではＸＰＳグラフィクスドライバ（５１２）にてクロスプリントパスとして印刷処理が行われるためである。
【００５７】
同様に、ＷｉｎＦｘアプリケーション（２１１）からの印刷時にＸＰＳプリンタドライバ（２１３）が選択されていれば、適切であると判断される。これは、ＷｉｎＦＸアプリケーション（２１１）による印刷時にはＷＰＦグラフィクスエンジン（２１２）が利用され、ＸＰＳプリンタドライバ（２１３）では、ＸＰＳグラフィクスドライバ（５１２）にてストレートプリントパスとして印刷処理が行われるためである。また、ＷｉｎＦＸアプリケーション（２１１）からの印刷する際に、ＧＤＩ  ＵＩドライバ（５０１）が選択されていれば不適切と判断される。これは、ＷｉｎＦＸアプリケーション（２１１）による印刷時にはＷＰＦグラフィクスエンジン（２１２）が利用されて、ＸＰＳ→ＧＤＩ変換（３１２）が行われ、ＧＤＩプリンタドライバ（２０３）ではＧＤＩグラフィクスドライバ（５０２）にてクロスプリントパスとして印刷処理が行われるためである。そのため該当する項目には判断に応じた値が登録されている。
【００５８】
なお図８のテーブルのプリンタドライバ２０３，２１３の欄に対応するドライバハンドルを記述しておけば、アプリケーションに対して適切なドライバハンドルを図８のテーブルから取得することができる。
【００５９】
図９は、第１実施形態におけるＵＩドライバのシーケンス図である。図９（Ａ）において、アプリケーションから初期化指示およびＵＩ表示指示９０１が渡されると、アプリ・ドライバ判断部（７０４）は、当該ドライバが、初期化指示を与えたアプリケーションに対して適切なドライバであるか判定する（９０２）。適切でないと判断されると、適切ドライバ初期化指示部（７０５）は、そのアプリケーションに対して適切なＵＩドライバに対して初期化指示およびＵＩ表示指示を発行する（９０３）。初期化指示を受けたＵＩドライバはプリンタドライバ（グラフィックドライバ）の初期化処理を行い（９０４）、ドライバハンドルを初期化指示の発行元（すなわちＵＩドライバ）に戻す。ドライバハンドル返却部７０７は戻されたドライバハンドルをさらにアプリケーションに戻す。アプリケーションはそのドライバハンドルに対応するプリンタドライバを用いて印刷処理を行う。こうして適切なグラフィクスドライバによって印刷が行われ、処理フロー３５２や処理フロー３５３のいわゆるクロスプリントパスを避けることが出来る。
【００６０】
一方図９（Ｂ）においては、初期化指示およびＵＩ表示指示９１１をＵＩドライバが受け取る。アプリ・ドライバ判断部（７０４）により、当該ＵＩドライバは、初期化指示の発行元アプリケーションに対して適切か判定される（９１２）。図９（Ｂ）では適切なドライバと判断されている。この場合、初期化指示を受けたＵＩドライバは対応するグラフィックドライバの初期化処理を行い（９１３）、初期化指示の発行元すなわちアプリケーションにドライバハンドルを戻す（９１４）。アプリケーションはそのドライバハンドルに対応するプリンタドライバを用いて印刷処理を行う。こうして適切なグラフィクスドライバによって印刷が行われ、処理フロー３５２や処理フロー３５３のいわゆるクロスフローを避けることが出来る。
【００６１】
＜ＵＩドライバによる処理手順＞
図１０は第１実施形態におけるＵＩドライバ５０１，５１１に初期化指示（初期化命令と同じ）が渡されたときのＵＩドライバの処理フローを示したフローチャートである。ユーザがアプリケーション（２０１，２１１）から印刷する際に、プリンタドライバの印刷設定の指示を、アプリケーション（２０１，２１１）を操作することで行う。アプリケーションは指定されたプリンタドライバのＵＩドライバに対して、初期化指示およびＵＩ表示指示を発行する。図１０は初期化命令を受け取った際のＵＩドライバによる処理である。
【００６２】
まずＵＩドライバが初期化指示を受信すると（Ｓ１０−１）、ＵＩドライバはそれ自身を呼び出したアプリケーションの名称（実行ファイル名）を取得する。取得した名称を元に、呼び出したアプリケーションがＷｉｎ３２アプリケーションかＷｉｎＦｘアプリケーションかという、アプリケーションの種類を示す情報（種類情報）を取得する（Ｓ１０−２）。この処理は図７において説明した通りである。ＵＩドライバは、取得したアプリケーションの種類情報に基づいて、アプリケーションに対してＵＩドライバを含むプリンタドライバが適切か否かを判断する（Ｓ１０−３）。この判定は、たとえば図８のテーブルを用いて行う。適切でないと判断された際には、適切なドライバに初期化命令を発行する（Ｓ１０−５）。そして、適切なドライバから戻されるドライバハンドルを受信し、そのドライバハンドルをアプリケーションに返す（Ｓ１０−６）。
【００６３】
ステップＳ１０−３にて、呼び出し元のアプリケーションに対してプリンタドライバが適切であると判断された場合、ＵＩドライバは自身のドライバの初期化を行い、そこで作成したドライバハンドルをアプリケーションに返す（Ｓ１０−４）。
【００６４】
なお、他のプリンタドライバから初期化指示を受けたプリンタドライバも、図１０の手順で動作する。本実施形態ではプリンタドライバは２種類なので、他のＵＩドライバから初期化指示を受けたＵＩドライバによる図１０の手順では、」ステップＳ１０−３の判定により必ず「適切」と判定される。またこの場合ドライバハンドルの返信先は、初期化指示の送信元であるＵＩドライバとなる。
【００６５】
ＵＩドライバからドライバハンドルを受信したアプリケーションあるいはグラフィクスエンジンは、ドライバハンドルで特定されるプリンタドライバ（グラフィックドライバ）を用いて印刷データを生成し、プリンタに送信する。プリンタドライバを用いるとは、グラフィクスエンジンから出力される描画データを、そのプリンタドライバに引き渡してＰＤＬあるいはＸＭＬ等で記述された所定形式の印刷データに変換させることである。
【００６６】
以上の処理により、アプリケーションが実際に印刷を行う際に適切なグラフィクスドライバを用いて印刷処理が行われる。すなわち、グラフィックエンジンが出力するデータを、プリンタドライバが処理可能な形式のデータへと変換する必要がなくなる。これによって、一つのプリンタに対して複数のプリンタドライバが利用可能な場合に、選択されているプリンタドライバがいずれであるかに関わらず、アプリケーションが使用するグラフィクスエンジンに対応したプリンタドライバを使用して印刷を実行できる。その結果、印刷処理が迅速になり、またデータ変換に伴う情報の損失を防止でき、印刷品質を向上させることができる。
【００６７】
［第２実施形態］
第１実施形態は、アプリケーションから印刷設定のためのＵＩ表示を行う際に、同時にプリンタドライバの初期化が行われるプリントシステムである。しかしながら、これは必ずしも全てのプリントシステムにて成立するわけではない。ＯＳの仕様によっては、ＵＩドライバに対して印刷設定等のためのＵＩ表示を行う際にはプリンタドライバの初期化処理を行わない場合も想定される。初期化指示は、実際に印刷処理を行う時に、プリンタドライバのグラフィクスドライバに対して発行される。このようなプリントシステムでは、ＵＩドライバに対して初期化指示が発行されないために、ＵＩドライバが第１実施形態の図１０に示す処理を行っても、アプリケーションが用いるドライバを切り替えることはできない。そこで本実施形態では、ＵＩドライバは、ＵＩ表示指示に対して、適切なドライバへと切り替えるための処理を行う。なお、以下に説明する事項以外の、システム構成等は、第１実施形態と共通するので説明を省略する。
【００６８】
図１１は第２実施形態の特徴を最もよくあらわす図面であり、第２実施形態におけるＵＩドライバの構成を示す。第２実施形態においては、ＵＩドライバがドライバの初期化を行なわないプリントシステム構成である。そのため、第１実施形態における図７と比較すると、適切ドライバ初期化部（７０７）、ドライバ初期部（７０６）、ドライバハンドル返却部（７０７）が無い。代わりに、適切ドライバ名称変更部（１１０１）とドライバ名称返却部（１１０２）が追加されている。
【００６９】
第２実施形態においても、ＧＤＩグラフィクスドライバ（５０２）およびＸＰＳグラフィクスドライバ（５１２）は特別な処理を行う訳ではなく、一般的なグラフィクスドライバの挙動と同様である。一方ＧＤＩ  ＵＩドライバ（２０３）およびＸＰＳ  ＵＩドライバ（２１３）あるいは共通ＵＩドライバ（以後、まとめてＵＩドライバと記述）においては、第２実施形態に特徴的な処理が行われる。
【００７０】
第２実施形態におけるＵＩドライバは、アプリケーション（２０１，２１１）やグラフィクスエンジン（２０２，２１２）から設定変更指示を受けると、ＵＩ表示部（７０１）においてＵＩ表示を行なう。ＵＩ設定部（７０２）は、ユーザにより入力された印刷設定を保存する。その後アプリケーション情報取得部（７０３）は、当該ＵＩドライバを呼び出しているアプリケーション（２０１，２１１）がＷｉｎ３２アプリケーション（２０１）とＷｉｎＦｘアプリケーション（２１１）のいずれであるかの情報取得を行う。このアプリケーション情報取得部（７０３）およびアプリ・ドライバ判断部（７０４）による判断処理は第１実施形態と同様である。
【００７１】
アプリ・ドライバ判断部（７０４）にて不適切と判断された場合、ＵＩドライバの適切ドライバ名称変更部（１１０１）で、適切なドライバの名称をアプリケーションに渡す。その方法として、本実施形態では、アプリケーションに対してＵＩドライバから渡される印刷設定情報（ＧＤＩ  ＵＩドライバではＤｅｖｍｏｄｅ、ＸＰＳ  ＵＩドライバではプリントチケット）を用いる。すなわち、適切ドライバ名称変更部（１１０１）は、印刷設定情報に適切なドライバの名称を格納し、ドライバ名称返却部（１１０２）により、その印刷設定情報をアプリケーションに渡す。
【００７２】
アプリケーションは引き渡された印刷設定情報からドライバ名称を取得する。そして、そのドライバ名称を持つプリンタドライバを用いてアプリケーションは印刷を行う。こうすることで、処理フロー３５２や処理フロー３５３を避けることが出来る。
【００７３】
一方アプリ・ドライバ判断部（７０４）にて適切と判断された場合は、特になにも行なわず、通常通りに、ＵＩ表示指示を受けたＵＩドライバが、すでに印刷設定情報に格納されているドライバ名称を変更せずに、印刷設定情報をアプリケーションに渡す。
【００７４】
図１２は、第２実施形態におけるＵＩドライバのシーケンスを示したものである。アプリケーションからＵＩ表示指示がＵＩドライバに渡される。アプリ・ドライバ判断部（７０４）により不適切なドライバと判断されると、ＵＩドライバは適切ドライバ名称変更部（１１０１）にて印刷設定情報内のドライバ名称を適切なドライバ名称に変更する。そしてＵＩ表示部（７０１）およびＵＩ設定部（７０２）におけるユーザのＵＩ設定を含めた印刷設定情報をアプリケーションに返却する。アプリケーションはその印刷設定情報内のドライバ名称に対して印刷初期化処理、印刷処理を行う。
【００７５】
図１３は第２実施形態におけるＵＩドライバに印刷設定ＵＩ表示命令が渡されたときのＵＩドライバの処理フローを示したフローチャートである。ユーザがアプリケーション（２０１，２１１）から印刷する際に、プリンタドライバの印刷設定を、アプリケーション（２０１，２１１）に対して指示する。それに応じてアプリケーションは、指定されたプリンタドライバのＵＩドライバにＵＩ表示命令を発行する。図１３はその命令を受けたＵＩドライバにより実行される。
【００７６】
ＵＩドライバは、ＵＩ表示命令を受け取り（Ｓ１３−１）、ＵＩダイアログ表示を行って、ユーザからの印刷設定変更の入力を受け付ける（Ｓ１３−２）。そしてユーザが入力した印刷設定値を印刷設定情報に格納する（Ｓ１３−３）。
【００７７】
そして、ＵＩドライバ自身を呼び出したアプリケーションの名称（実行ファイル名）を取得する。その名称を基に、呼び出したアプリケーションがＷｉｎ３２アプリケーションかＷｉｎＦｘアプリケーションかの種類情報を取得する（Ｓ１３−４）。これは第１実施形態と同様の処理である。ＵＩドライバは取得したアプリケーション種類情報に基づいて、アプリケーションに対して、ＵＩドライバを含むプリンタドライバが適切か否かを判断する（Ｓ１３−５）。適切でないと判断された際には、印刷設定情報内のドライバ名称項目を適切なドライバ名称に変更する（Ｓ１３−６）。変更したドライバ名称を含む印刷設定情報をアプリケーションに返却する（Ｓ１３−７）。
【００７８】
適切であると判断されると（Ｓ１３−５）、ＵＩドライバはＳ１３−３で作成した印刷設定情報をそのままアプリケーションに返却する（Ｓ１３−８）。
【００７９】
適切なドライバ名は、たとえば図８のテーブルにおいて、プリンタドライバの種類を登録した欄に、その名称も対応付けて登録しておくことで得られる。たとえば、取得したアプリケーション種別に対して「適切」と定義されているドライバ名を検索する。得られたドライバ名が、そのアプリケーションに対して適切なドライバ名である。このドライバ名で、印刷設定情報内のドライバ名を置換する。アプリケーションは印刷設定情報内のドライバ名称を持つプリンタドライバに対して印刷初期化命令を発行し、そのプリンタドライバを用いて印刷処理を行う。そのため、印刷処理フロー３５２や３５３を避けることが出来る。
【００８０】
このようにして、本実施形態では、アプリケーションがＵＩドライバに対して初期化命令を発行しない場合にも、アプリケーションが使用するドライバを適切なドライバに切り替えることができる。このため、グラフィックエンジンが出力するデータを、プリンタドライバが処理可能な形式のデータへと変換する必要がない。その結果、印刷処理が迅速になり、またデータ変換に伴う情報の損失を防止でき、印刷品質を向上させることができる。
【００８１】
［第３実施形態］
第２実施形態においては、アプリケーションが、ＵＩドライバが変更した印刷設定情報のドライバ名称を基に、印刷初期化や印刷処理を行う場合においては実現できる。しかし、例えば、アプリケーションが、ＵＩドライバを呼び出したときに用いたドライバ名称をローカル領域に格納し、印刷処理時にも、その保存されたドライバ名称のドライバを用いる場合もある。この場合、ＵＩドライバはアプリケーションが使用するドライバを変更できない。
【００８２】
そこで第３実施形態においては、図１４に示すように、グラフィクスドライバ１４０１は、ＧＤＩ２０２からの印刷データとＷＰＦ２１２からの印刷データの両方を、ＧＤＩインターフェースとＸＰＳインターフェースとで受け取ることができる。したがってＵＩドライバもひとつであり、いずれのインターフェースが用いられる場合でも、ひとつのＵＩドライバが起動される。そしてＯＳが認識しているドライバ属性（ＧＤＩドライバあるいはＸＰＳドライバのいずれかを示す種別情報）を変更する。すなわち、アプリケーションにより使用するドライバとして選択されているプリンタドライバのドライバ属性が、オペレーティングシステムからアクセス可能に保存されている。そしてそのドライバ属性情報に応じて、グラフィクスエンジンにより出力されたデータ形式の変換が必要か否かが決定されている。
【００８３】
図１５は、本実施形態における、ドライバ属性を変更する構成の模式図である。本実施形態では、そのオペレーティングシステムが参照するドライバの属性情報を、ＵＩドライバ１５０４によって書き替える。すなわち、アプリケーション１５０１から初期化命令を受けたＵＩドライバ１５０２は、アプリケーションの種類情報を第１実施形態と同じ方法で取得する。そして、オペレーティングシステムが保持管理するドライバ属性情報１５０５を読み、アプリケーションの種類情報と対比して、適切か否か判定する。この判定のためには図８のテーブルを用いることができる。ただし、プリンタドライバの欄には、ドライバ属性情報が登録される。適切であればそのまま処理を続行する。適切でなければ、オペレーティングシステムが参照するドライバ属性情報１５０５を、適切なプリンタドライバのドライバ属性の値に変更する。
【００８４】
図１６はＵＩドライバによる処理手順である。初期化命令を受けたＵＩドライバは、ステップＳ１６０１でオペレーティングシステムが参照するドライバ属性を取得する。ステップＳ１６０２でアプリケーション種類情報を取得する。ステップＳ１６０３でアプリケーションの種別情報とドライバ属性情報とが整合（一致）するか判定する。整合しなければオペレーティングシステムの参照するドライバ属性を、アプリケーションに整合するドライバのドライバ属性に書き替える。
【００８５】
このように本実施形態においては、ＯＳが認識している情報（レジストリ、ファイルの有無等）を取得して、適切な場合はそのままＵＩドライバの処理を行い、不適切であった場合は、ＯＳのドライバ属性を示す情報を変更する。このため、グラフィックエンジンが出力するデータを、プリンタドライバが処理可能な形式のデータへと変換する必要がない。その結果、印刷処理が迅速になり、またデータ変換に伴う情報の損失を防止でき、印刷品質を向上させることができる。
【図面の簡単な説明】
【００８６】
【図１】複数のグラフィクスエンジンが共存する例として、Ｗｉｎｄｏｗｓ（登録商標）ＶＩＳＴＡにおける印刷処理フローおよび印刷処理に対するコンポーネントを示す図である。
【図２】Ｗｉｎｄｏｗｓ（登録商標）ＶＩＳＴＡにおける、２つのグラフィクスエンジン共存の仕組みを示す図である。
【図３】一般的な印刷処理フローおよび印刷処理に対するコンポーネントを示す。
【図４】本実施形態の印刷制御装置およびその制御方法とプリンタドライバが適用される情報処理システムの構成の一例を示すブロック図である。
【図５】本実施形態に関わるＧＤＩプリンタドライバとＸＰＳプリンタドライバの構成を示す図である。
【図６】本実施形態に関わるＧＤＩプリンタドライバとＸＰＳプリンタドライバの両者がインストールされている状況を示す図である。
【図７】本実施形態におけるＵＩドライバの構成を示す図である。
【図８】ＵＩドライバにおける  アプリ・ドライバ判断部で行う判断条件を示した図である。
【図９】第１実施形態におけるＵＩドライバのシーケンスを示した図である。
【図１０】第１実施形態におけるＵＩドライバに初期化指示命令が渡されたときのＵＩドライバの処理フローを示したフローチャートである。
【図１１】第２実施形態におけるＵＩドライバの構成を示す図である。
【図１２】第２実施形態におけるＵＩドライバのシーケンスを示した図である。
【図１３】第２実施形態におけるＵＩドライバに印刷設定ＵＩ表示命令が渡されたときのＵＩドライバの処理フローを示したフローチャートである。
【図１４】第３実施形態におけるドライバの構成を示した図である。
【図１５】第３実施形態におけるドライバの構成を示した図である。
【図１６】第３実施形態における、印刷命令を受けたＵＩドライバの処理フローチャートであるである。
【図１】
0004651112.tif 000002
【図２】
0004651112.tif 000003
【図３】
0004651112.tif 000004
【図４】
0004651112.tif 000005
【図５】
0004651112.tif 000006
【図６】
0004651112.tif 000007
【図７】
0004651112.tif 000008
【図８】
0004651112.tif 000009
【図９】
0004651112.tif 000010
【図１０】
0004651112.tif 000011
【図１１】
0004651112.tif 000012
【図１２】
0004651112.tif 000013
【図１３】
0004651112.tif 000014
【図１４】
0004651112.tif 000015
【図１５】
0004651112.tif 000016
【図１６】
0004651112.tif 000017