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