(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-26
(45)【発行日】2024-08-05
(54)【発明の名称】情報処理装置、制御方法及びプログラム
(51)【国際特許分類】
G06F 3/12 20060101AFI20240729BHJP
【FI】
G06F3/12 332
G06F3/12 353
G06F3/12 305
(21)【出願番号】P 2024063310
(22)【出願日】2024-04-10
(62)【分割の表示】P 2023020521の分割
【原出願日】2018-06-29
【審査請求日】2024-04-11
【早期審査対象出願】
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100126240
【氏名又は名称】阿部 琢磨
(74)【代理人】
【識別番号】100223941
【氏名又は名称】高橋 佳子
(74)【代理人】
【識別番号】100159695
【氏名又は名称】中辻 七朗
(74)【代理人】
【識別番号】100172476
【氏名又は名称】冨田 一史
(74)【代理人】
【識別番号】100126974
【氏名又は名称】大朋 靖尚
(72)【発明者】
【氏名】鈴木 慎也
【審査官】佐賀野 秀一
(56)【参考文献】
【文献】米国特許出願公開第2003/0184782(US,A1)
【文献】特開2016-058041(JP,A)
【文献】特開2015-114764(JP,A)
【文献】特開2012-014634(JP,A)
【文献】特開2016-118983(JP,A)
【文献】特開2010-072679(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/09- 3/12
B41J 29/00- 29/70
H04N 1/00
(57)【特許請求の範囲】
【請求項1】
複数の製造元の画像処理装置で印刷可能な印刷データを生成し、前記複数の製造元の画像処理装置へ前記印刷データを送信できるソフトウェアの機能をサポートするアプリケーションプログラムであって、
コンピュータに、
前記ソフトウェアにより前記アプリケーションプログラムを介さずに画像処理装置から取得される第1の能力情報に含まれない能力情報を含む、第2の能力情報を画像処理装置から取得させることを特徴とするアプリケーションプログラム。
【請求項2】
前記第1の能力情報に対応する設定値は前記ソフトウェアにより提供される印刷設定画面で設定可能であり、
前記第2の能力情報に対応する設定値は前記印刷設定画面で設定できないことを特徴とする請求項1に記載のアプリケーションプログラム。
【請求項3】
前記第1の能力情報は、前記ソフトウェアによりInternetPrintingProtocolに従った通信により取得されることを特徴とする請求項1に記載のアプリケーションプログラム。
【請求項4】
前記コンピュータに、さらに、
前記第2の能力情報に対応する設定値を設定可能な印刷設定画面を表示させることを特徴とする請求項1に記載のアプリケーションプログラム。
【請求項5】
前記第1の能力情報は所定のプロトコルで定義され、前記第2の能力情報は前記所定のプロトコルで定義されていない能力情報を含むことを特徴とする請求項1に記載のアプリケーションプログラム。
【請求項6】
前記所定のプロトコルはInternetPrintingProtocolであることを特徴とする請求項5に記載のアプリケーションプログラム。
【請求項7】
前記ソフトウェアは、アプリケーションの出力する描画データから中間データを生成する機能を有することを特徴とする請求項1に記載のアプリケーションプログラム。
【請求項8】
前記ソフトウェアは、前記中間データから印刷データを生成する機能を有することを特徴とする請求項7に記載のアプリケーションプログラム。
【請求項9】
前記中間データは、XPSデータであることを特徴とする請求項7に記載のアプリケーションプログラム。
【請求項10】
前記印刷データは、PDFまたはPWG-Raster形式のデータであることを特徴とする請求項8に記載のアプリケーションプログラム。
【請求項11】
前記第2の能力情報は、針を使用せずに印刷物を綴じる針なし綴じ機能、または、セキュアプリント機能に対応する能力情報を含むことを特徴とする請求項1に記載のアプリケーションプログラム。
【請求項12】
複数の製造元の画像処理装置で印刷可能な印刷データを生成し、前記複数の製造元の画像処理装置へ前記印刷データを送信できるソフトウェアと、前記ソフトウェアの機能をサポートするアプリケーションプログラムと、を有する情報処理装置の制御方法であって、
前記アプリケーションプログラムを実行することにより、前記ソフトウェアにより前記アプリケーションプログラムを介さずに画像処理装置から取得される第1の能力情報に含まれない能力情報を含む、第2の能力情報を画像処理装置から取得させることを特徴とする制御方法。
【請求項13】
前記第1の能力情報に対応する設定値は前記ソフトウェアにより提供される印刷設定画面で設定可能であり、
前記第2の能力情報に対応する設定値は前記印刷設定画面で設定できないことを特徴とする請求項12に記載の制御方法。
【請求項14】
前記第1の能力情報は、前記ソフトウェアによりInternetPrintingProtocolに従った通信により取得されることを特徴とする請求項12に記載の制御方法。
【請求項15】
前記第2の能力情報に対応する設定値を設定可能な印刷設定画面を表示させることを特徴とする請求項12に記載の制御方法。
【請求項16】
前記第1の能力情報は所定のプロトコルで定義され、前記第2の能力情報は前記所定のプロトコルで定義されていない能力情報を含むことを特徴とする請求項12に記載の制御方法。
【請求項17】
前記所定のプロトコルはInternetPrintingProtocolであることを特徴とする請求項16に記載の制御方法。
【請求項18】
前記ソフトウェアは、アプリケーションの出力する描画データから中間データを生成する機能を有することを特徴とする請求項12に記載の制御方法。
【請求項19】
前記ソフトウェアは、前記中間データから印刷データを生成する機能を有することを特徴とする請求項18に記載の制御方法。
【請求項20】
前記中間データは、XPSデータであることを特徴とする請求項18に記載の制御方法。
【請求項21】
前記印刷データは、PDFまたはPWG-Raster形式のデータであることを特徴とする請求項19に記載の制御方法。
【請求項22】
前記第2の能力情報は、針を使用せずに印刷物を綴じる針なし綴じ機能、または、セキュアプリント機能に対応する能力情報を含むことを特徴とする請求項12に記載の制御方法。
【請求項23】
複数の製造元の画像処理装置で印刷可能な印刷データを生成し、前記複数の製造元の画像処理装置へ前記印刷データを送信できるソフトウェアと、前記ソフトウェアの機能をサポートするアプリケーションプログラムと、を有し、
前記アプリケーションプログラムを実行することにより、前記ソフトウェアにより前記アプリケーションプログラムを介さずに画像処理装置から取得される第1の能力情報に含まれない能力情報を含む、第2の能力情報を画像処理装置から取得することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、印刷装置と通信する情報処理装置、制御方法、及びプログラムに関するものである。
【背景技術】
【0002】
プリンタドライバを利用し、印刷装置に対して印刷データを送信する構成が一般に知られている。情報処理装置には、基本ソフトウェアであるオペレーティングシステム(OS)がインストールされており、プリンタドライバはそのOSの規定するプリントアーキテクチャに従って構成され、OSから呼び出されて動作する。印刷装置を提供するベンダは、OSの仕様に適合するプリンタドライバを提供する。OSとプリンタドライバは、協働して出力先の印刷装置を用いて印刷を行う機能を実現する。
【0003】
ところで、OSとしてMicrosoft(登録商標)のWindows(登録商標)8より前のバージョンを利用する場合、プリンタドライバは、V3プリンタドライバと呼ばれるアーキテクチャで構成される。
【0004】
また、Windows8.1以降において、V4プリンタドライバと呼ばれるアーキテクチャが登場している。V4プリンタドライバは、セキュリティ性が重視されているため、プリンタドライバそのものの拡張性がV3プリンタドライバと比較して低下している。このような拡張性の低下を補うため、印刷装置を提供するベンダは、プリンタドライバの機能を補助するための専用のアプリケーションを提供することができる。このアプリケーションはUWP Device Apps(Universal Windows Platform Device Apps)と呼ばれる。UWP Device Appsは、ストアアプリケーション(UWP)から印刷を行う際のユーザエクスペリエンスを高めることができる。また、V4プリンタドライバには、ベンダ独自の印刷設定を行うための印刷設定アプリケーションであるPrinterExtensionを紐付けることができる。
【0005】
また、従来、機能が異なる複数種類の印刷装置を制御するためのプリンタドライバとしてユニバーサルプリンタドライバと称されるプリンタドライバが知られている(特許文献1)。当該プリンタドライバでは、機種やモデル毎に個々の印刷装置に好適な操作画面を表示することができる。
【0006】
更に、プリンタドライバを使用せずに、印刷装置に対して印刷データを送信できるようにすることが考えられている。例えば、Ubuntu(登録商標)17.04では、OSのデフォルト機能として、IPP Everyware(登録商標)に対応する印刷装置に対して印刷データを送信する仕組みが搭載されている。IPP Everywareは、様々な印刷装置を使用した印刷を可能とする一連の規格であり、業界団体などで規格の策定や普及活動が行われている。
【先行技術文献】
【特許文献】
【0007】
【発明の概要】
【発明が解決しようとする課題】
【0008】
特許文献1に開示されているようなユニバーサルプリンタドライバは、ベンダ毎に提供されることが一般的である。従って、同じベンダが販売している機能が異なる複数種類の印刷装置については、1つのユニバーサルプリンタドライバで対応することができた。しかしながら、異なるベンダの印刷装置を1つのユニバーサルプリンタドライバで対応することは困難であった。これは、ベンダ毎に各々異なる通信方式、PDL(ページ記述言語)やJDL(ジョブ記述言語)で印刷データのやりとりを行っているため、統一することが難しいといった事情に起因する。また、印刷設定項目に関してもベンダ毎に設定項目が異なっていたり、同じような設定項目であっても解釈が違うなどの事情があり、1つのユニバーサルプリンタドライバで対応することが困難であった。
【0009】
前述したように、IPP Wverywareなどに代表されるIPPに準拠する仕組みを使用した共通のプリンタドライバやプリントクライアントを提供することが考えられる。しかしながら、IPPに準拠する共通のプリンタドライバでは、ベンダが独自に提供する機能を利用することができないという問題がある。
【0010】
本発明は上述の問題点の少なくとも1つを鑑みなされたものである。本発明は、所定の印刷プロトコルに則する印刷ジョブを生成するプリンタドライバ又はプリントクライアントを用いて印刷を行う場合であっても、複数のベンダの印刷装置が提供する拡張機能を適切に利用できる仕組みを提供することを目的の1つとする。また、プリンタドライバは、所定の印刷プロトコルに則するクラスドライバとして実現し、ベンダ毎の拡張は、サンドボックス化された仮想環境上で動作する拡張アプリケーションが実現することにより、セキュリティと利便性を両立することを目的の1つとする。また、当該拡張アプリケーションによって、ベンダ毎の拡張機能を反映した印刷を行えるようにすることを目的の1つとする。
【課題を解決するための手段】
【0011】
上記の少なくとも1つの目的を達成するために本発明のプログラムは、複数の製造元の画像処理装置で印刷可能な印刷データを生成し、前記複数の製造元の画像処理装置へ前記印刷データを送信できるソフトウェアの機能をサポートするアプリケーションプログラムであって、コンピュータに、前記ソフトウェアにより前記アプリケーションプログラムを介さずに画像処理装置から取得される第1の能力情報に含まれない能力情報を含む、第2の能力情報を画像処理装置から取得させることを特徴とする。
【発明の効果】
【0012】
本発明の1つの側面としては、複数のベンダの印刷装置に対応するプリンタドライバ又はプリントクライアントを用いて印刷を行う場合であっても、ベンダ毎の拡張機能を適切に利用できるようになる。また、本発明の1つの側面としては、ドライバは、所定の印刷プロトコルに則するクラスドライバとして実現し、ベンダ毎の拡張は、サンドボックス化された環境で動作する拡張アプリケーションが実現するため、セキュリティと利便性を両立できるようになる。また、本発明の別の側面としては、所定の印刷プロトコルに則する印刷ジョブを生成するプリンタドライバのための拡張アプリケーションを提供することで、当該アプリケーションを介してベンダ毎の印刷設定を反映した印刷を行えるようになる。
【図面の簡単な説明】
【0013】
【
図2】クライアントコンピュータ100のハードウェア構成の一例を示す図である。
【
図3】クライアントコンピュータ100のソフトウェア構成の一例を示す図である。
【
図4】印刷設定に関する情報の一例を示す図である。
【
図5】印刷システムにおける処理手順の一例を説明する模式図である。
【
図6】クライアントコンピュータ100の制御の一例を説明するフローチャートである。
【
図7】プリンタ200の制御の一例を説明するフローチャートである。
【
図8】クライアントコンピュータ100の表示部に表示される画面の一例を示す図である。
【
図9】クライアントコンピュータ100の表示部に表示される画面の一例を示す図である。
【
図10】印刷システムにおける処理手順の一例を説明する模式図である。
【
図11】クライアントコンピュータ100の制御の一例を説明するフローチャートである。
【
図12】クライアントコンピュータ100の制御の一例を説明するフローチャートである。
【
図14】変形例における拡張設定の一例を説明するための図である。
【発明を実施するための形態】
【0014】
以下、本発明を実施するための実施形態について図面を用いて説明する。なお、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせのすべてが発明の解決手段に必須のものとは限らない。
【0015】
<第1の実施形態>
まず
図1を用いて、本発明に係る印刷システムの構成を説明する。本実施形態に係る印刷システムは、クライアントコンピュータ100、プリンタ200a~cを含む。ネットワーク300上には、クライアントコンピュータ100、プリンタ200a~cが互いに通信可能に接続されている。なお、デバイス間の通信の形態は無線ネットワークを介した通信であってもよいし、有線ネットワークを介した通信であってもよい。また、無線ネットワークを介した通信の場合、IEEE802.11に準拠するアクセスポイントを介した無線通信であってもよいし、Wi-Fi Direct(登録商標)などの直接無線通信であってもよい。また、本実施形態では、印刷システムの一例として上記の構成を説明するが、これに限定されるものではない。1つ以上の通信装置と印刷とがネットワークを介して通信可能に接続されていればよい。
【0016】
本実施形態では印刷ジョブを受信してシートに画像を印刷する印刷装置の一例として単機能のプリンタ200a~cを説明するが、これに限定されるものではない。印刷機能とスキャン機能を有するMFP(Multi Function Peripheral)などの装置であってもよい。
【0017】
本実施形態では、説明のためプリンタ200a~cは異なるベンダにより製造されているものとする。プリンタ200a~cは、IPP(Internet PrintingProtocol)に則する印刷ジョブをクライアントコンピュータ100などから受信し、当該印刷ジョブに基づいてシートに画像を印刷することができる。
【0018】
また、プリンタ200a~cはIPPとは異なる形式の印刷ジョブを受信し、解釈する機能も有している。例えば、プリンタ200aは、LIPS(登録商標、LBP Image Processing System)形式に則するPDL(Page Description Language)データを含む印刷ジョブを解釈することができる。更に、プリンタ200aは、PCL(登録商標、Printer Command Language)形式に則するPDLデータを含む印刷ジョブを解釈することができる。なお、LIPS形式は、UFR(登録商標、Ultra Fast Rendering)形式とも呼ばれる。また、プリンタ200bは、PCL(登録商標、Printer Command Language)形式に則するPDLデータを含む印刷ジョブを解釈することができる。その一方で、LIPS(UFR)形式の印刷ジョブには対応していない。プリンタ200cは、インクジェットプリンタであり、ESC/P(Epson Standard Code for Printer)に則する印刷ジョブを解釈することができる。しかしながら、PCL形式やLIPS形式の印刷ジョブには対応していない。このように、プリンタの製造元のベンダが異なると、当然ながらサポートするPDLの種類が異なってくる。また、同じプリンタであっても、使用するPDLの種別によっては、サポートする機能に多少の差異がある。なお、各プリンタが解釈できるPDLの種類は一例である。プリンタが解釈可能なPDLの形式は、PCL、LIPS、ESC/P、RPCS(Refined Printing Command Stream)、PS(Post Script)、ART(Advanced Rendering Tools)などの形式であってもよい。また、SPDL2(Sharp Printer Description Language2)などの形式であってもよい。また、上述のPDLに基づき派生した形式などであってもよい。各プリンタは上述のPDL形式、又は上述のPDL形式に基づき派生したPDL形式のうち、少なくとも1つの方式をサポートしているものとする。
【0019】
続けて、情報処理装置の一例であるクライアントコンピュータ100について説明する。本実施形態では、クライアントコンピュータ100がPC(Personal Computer)である場合を例示しているがこれに限定されるものではない。タブレット端末や、ヘッドマウントディスプレイとコンピュータが組み込まれたウェアラブルコンピュータなどの端末であっても良い。
【0020】
クライアントコンピュータ100は、ネットワーク300上のプリンタ200a~cと互いに通信することができる。また、クライアントコンピュータ100は、印刷対象のデータに基づき印刷ジョブを生成し、各プリンタへ送信することができる。
【0021】
クライアントコンピュータ100のハードウェア構成について
図2を用いて説明する。
図2は、クライアントコンピュータ100のハードウェア構成の一例を示すブロック図である。
【0022】
CPU(Central Processing Unit)101は、制御部120全体の動作を制御するプロセッサである。制御部120は、メモリであるROM(Read Only Memory)1021、RAM(Random Access Memory)1022、ストレージ105によって構成され、各部はシステムバス107により接続されている。また、制御部120は、入出力デバイスを接続するためのインタフェース(I/F)103、104や、ネットワークを介して外部装置と通信するための通信I/F106も備えている。
【0023】
RAM1022は揮発性メモリであり、ワークエリア、ROM1021及びストレージ105に格納された各種制御プログラムを展開するための一時記憶領域として用いられる。
【0024】
ROM1021は不揮発性メモリであり、コンピュータのブートプログラムなどが格納されている。ストレージ105はRAM1022と比較して大容量な不揮発性のフラッシュメモリやHDD(Hard Disk Drive)である。ストレージ105には、コンピュータ100全体を制御するためのOS(Operating System)1053や、OS1053上で動作する各種アプリケーション1051のプログラムが格納されている。また、IPP等の所定の印刷プロトコルに則する印刷ジョブを生成する共通プリンタドライバ1054や、共通プリンタドライバ1054と連携するデバイスアプリ1052a~bのプログラムが格納されている(詳細は後述する)。
【0025】
アプリケーション1051や、デバイスアプリ1052a~bなどの各種アプリケーションは、CD-ROMやUSBメモリあるいはネットワーク300を経由してコンピュータ100にインストールすることができる。
【0026】
CPU101はRAM1022上に展開したOSのプログラムや各アプリケーションのプログラムを実行し、コンピュータ100の制御を行う。このように、CPU101、ROM1021、RAM1022、ストレージ105等のハードウェアは、いわゆるコンピュータを構成している。
【0027】
なお、クライアントコンピュータ100は、1つのCPU101が後述するフローチャートに示す各処理を実行するものとするが、他の態様であっても構わない。例えば、複数のプロセッサが協働して後述するフローチャートに示す各処理を実行するようにすることもできる。
【0028】
入力I/F103は、キーボード108や、ポインティングデバイス109と制御部120を接続する。キーボード108やポインティングデバイス109は、ユーザの指示を受け付ける受付部として機能する。受付部は画面上に表示されるキーなどの表示アイテムの選択を検知することができる。出力I/F104は、情報を表示するモニタ110と、制御部120を接続する。モニタ110は、情報を表示する表示部として機能する。なお、クライアントコンピュータ100がタブレット端末などの場合、受付部と表示部を兼ねるタッチパネルディスプレイを介してユーザに対する情報の表示や、操作の受け付けを行うものとする。この場合、ユーザは指などのオブジェクトを用いてタッチ操作を行うことで、クライアントコンピュータ100に所望の操作指示を入力することができる。
【0029】
通信I/F106は、ネットワーク300上の印刷装置などの外部装置や、クラウド上のサーバなどと通信を行うためのインタフェースである。
【0030】
<コンピュータ100のソフトウェア構成>
図3は、本実施形態におけるクライアントコンピュータ100のソフトウェア構成の一例を示す図である。OS1053は、コンピュータ100全体の制御を行うシステムソフトウェアである。ここでは一例としてWindows(登録商標)10以降のOSがインストールされているものする。
【0031】
OS1053は、プリンタドライバを使用して印刷を行うための印刷アーキテクチャ10531を提供する。印刷アーキテクチャ10531は、XPS形式のデータをスプールデータとして使用し、当該スプールデータをプリンタドライバによって印刷データ(PDL)に変換する、いわゆるV4印刷アーキテクチャである。
【0032】
ところで、コンピュータにインストール可能なプリンタドライバとしてユニバーサルプリンタドライバと称されるドライバがある。また、Ubuntu(登録商標)17.04などのOSでは、OSのデフォルト機能として、IPP Everyware(登録商標)に対応する印刷装置に対して印刷データを送信する仕組みが搭載されている。IPP Everywareは、様々な印刷装置を使用した印刷を可能とする一連の規格であり、業界団体などで規格の策定や普及活動が行われている。
【0033】
前述したユニバーサルプリンタドライバは、ベンダ毎に提供されることが一般的である。従って、同じベンダが販売している機能が異なる複数種類の印刷装置については、従来から1つのユニバーサルプリンタドライバで対応することができる。しかしながら、異なるベンダの印刷装置を1つのユニバーサルプリンタドライバで対応することは困難である。これは、ベンダ毎に各々異なる通信方式、PDLやJDL(ジョブ記述言語)で印刷ジョブのやりとりを行っているため、統一することが難しいといった事情に起因する。また、印刷設定項目に関してもベンダ毎に設定項目が異なっていたり、同じような設定項目であっても解釈が違うなどの事情があり、1つのユニバーサルプリンタドライバで対応することが困難である。
【0034】
ここで、Windowsなどの環境においても、ベンダが提供するV3形式やV4形成のプリンタドライバを個別にインストールせずに印刷を実行できる仕組みを提供することができれば、ユーザにとっての利便性を高めることができると想定される。
【0035】
これを鑑み、本実施形態では、所定の印刷プロトコルの仕組みを使用した共通プリンタドライバをWindows環境で実現する。以降、所定の印刷プロトコルが、一般的に用いられているIPPである場合を例として説明する。
【0036】
ここで、IPPに準拠する共通のプリンタドライバを単純に実装した場合を考える。この場合、IPPに準拠する印刷属性と、IPPに則するPDLを含む印刷ジョブを生成し、プリンタに送信することとなる。この場合、IPPでは定義されていない、ベンダが独自に提供する機能(例えば、針を使用せずに印刷物を綴じる針なし綴じ機能や、印刷装置のストレージに印刷データを留め置くボックス保存機能など)を利用できないという問題がある。
【0037】
そこで、本実施形態では、IPPに則する共通プリンタドライバから、ベンダ毎の特定の機能を利用するための拡張アプリケーションを呼び出せるようにし、ベンダ毎の拡張機能を提供できるようにする。以下、具体的な仕組みについて説明する。
【0038】
図3の説明に戻り、クライアントコンピュータ100には、プリンタドライバとして、複数ベンダのプリンタをサポートする共通プリンタドライバ1054がインストールされている。当該共通プリンタドライバ1054は、OS1053の標準機能として組み込まれたクラスドライバであってもよいし、別途ユーザがコンピュータ100に対してインストールしたユニバーサルプリンタドライバであってもよい。
【0039】
印刷アーキテクチャ10531は、GDItoXPS変換モジュール307、共通プリンタドライバ1054、OS標準印刷UI部305、プリントマネージャ318、デバイス通信部319で構成される。なお、共通プリンタドライバとは異なるプリンタドライバ(例えば、ベンダが提供する機種専用のプリンタドライバなど)をインストールすることも可能である。
【0040】
<共通プリンタドライバ1054を用いる印刷処理>
まず、共通プリンタドライバ1054を用いる印刷処理について説明する。デスクトップアプリ301は、「Win32/64アプリケーション」や「.NETアプリケーション」などである。UWPアプリ302は、OS1053上で動作するUWP(Universal Windows Platform)アプリケーションである。UWPアプリケーションは、Windowsストアを通して配布されるアプリケーションであり、デスクトップアプリ301や、印刷アーキテクチャ10531とは異なる実行環境で動作する。UWPアプリは個別のサンドボックス内(仮想環境上)で動作し、システム領域へのアクセスや、利用可能なAPIに制限が行われている。即ち、デスクトップアプリや、デバイスドライバと比較して、装置内のリソースへのアクセス権限が低い。そのため、デスクトップアプリケーションやドライバプログラムなどに比べて、システムへの影響を与える可能性が低いといった特徴がある。
【0041】
これらのデスクトップアプリ301や、UWPアプリ302は、印刷アーキテクチャ10531と協働してコンテンツ(例えば、文書や、画像など)の印刷を行うことができる。
【0042】
デスクトップアプリ301は、プリンタの印刷イメージの生成を行うグラフィックスコンポーネントであるGDI(Graphics Device Interface)を利用して印刷を行う。GDIを利用して印刷する場合、デスクトップアプリ301は、OS1053のモジュールであるGDItoXPS変換モジュール307に対してGDI描画データを送信する。モジュール307は、GDI描画データをXPSスプールファイルに変換する。変換したXPSスプールファイルは、領域306に一時的に格納される。一方、UWPアプリ302から印刷する場合は、UWPアプリ自身がXPSファイルが生成する方法と、OS1053がUWPアプリからの描画命令に応じてXPSファイルを生成する方法の2通りがある。いずれかの方法で、生成されたXPSファイルは、領域306に転送され、一時的に格納される。
【0043】
ユーザはキーボード108やタッチパネル/マウスなどに代表されるポインティングデバイス109などといった入力装置を使用して、出力装置のモニタ110に映し出されたデスクトップアプリ301、もしくはUWPアプリ302から印刷処理を実行する。ここでは、UWPアプリ302から印刷を行う場合を例に説明する。
図8は、UWPアプリ302から印刷を行う場合に表示される画面の一例であり、OS1053により提供される、モダンプリントダイアログと呼ばれる設定画面(ユーザインタフェース)の一例である。UWPアプリ302を介して印刷指示が行われると、CPU101は、プリントダイアログをモニタ110上に表示する。ユーザは領域801を選択して印刷に用いるプリンタを選択したり、領域804の各項目を選択して印刷設定を変更したりすることができる。また、ユーザは、印刷キー803を使用して、印刷指示を行うことができる。ここでは、共通プリンタドライバ1054に対応するプリンタがユーザにより選択されている場合を例に説明する。その他の設定キー802は、詳細な印刷設定を行う場合に使用するキーである。当該キーが選択されたことを検知すると、OSは、OS標準印刷UI部305を起動し、図示省略のIPPに則する印刷設定画面(ユーザインタフェース)を表示する。
【0044】
印刷設定を変更するユーザ操作を検知すると、OS1053は、共通プリンタドライバ1054の標準印刷設定部308を呼び出す。標準印刷設定部308は、標準印刷機能定義ファイル群309の中から選択されたプリンタに対応する定義ファイルを参照する。また、参照した定義ファイルに基づき、現在の印刷設定を示す標準設定データ(303や304)及び選択されたプリンタの印刷能力を示すPrintCapabitiesを作成する。
【0045】
標準印刷機能定義ファイルは、IPPプリンタの探索時などにプリンタから取得される属性情報に基づき生成されたプリンタの能力を示す定義ファイルである。従って、標準印刷機能定義ファイル群309には、プリンタ毎に異なる別ファイルが記憶される。
【0046】
続けて定義ファイルの生成について説明する。選択中のプリンタに対応する定義ファイルがストレージに記憶されていない場合、共通プリンタドライバ1054は、プリンタに能力情報の問い合わせを行う。共通プリンタドライバ1054は、プリントマネージャ318、デバイス通信部319を介して、プリンタへ能力を問い合わせる。プリントマネージャ318は、後述する印刷ジョブの制御機能に加え、IPPに対応するプリンタの探索や、プリンタ能力の取得を行うことができる。具体的には、プリンタ能力の取得は、RFC2911で既定されたプリンタ属性要求操作(Get-Printer-Attributes Operations)によって行われる。まず、プリントマネージャ318は、Get-Printer-Attributes Requestをプリンタ200に対して送信する。当該リクエストの応答として、プリンタ200の属性情報が得られる。プリンタ属性要求操作により得られるプリンタの能力情報は、例えば、「両面」や「カラー印刷」が可能かどうかなどの、標準的な印刷設定の能力情報などである。ここで、プリンタ属性要求操作により取得できる能力(属性)はIPPで既定されている属性に関するサポート情報である。従って、ベンダ固有の機能情報(針なし綴じ機能や、ボックス印刷機能など)は、IPPのプリンタ属性要求操作では取得することができない。取得された属性情報は、標準印刷設定部308に転送される。標準印刷設定部308は、IPPを用いて取得した属性情報に基づいて、定義ファイルを生成しストレージ105に記憶する。
【0047】
印刷設定の説明に戻り、デスクトップアプリ301では現在の印刷設定を示す標準設定データとしてバイナリのDEVMODE303が用いられる。また、UWPアプリ302ではマークアップ言語であるXMLで記載されたPrintTicket304が用いられる。このDEVMODE303もしくはPrintTicket304は、IPPに則した印刷ジョブに反映すべき印刷設定を保持する標準設定データである。
【0048】
図4(A)、(B)は、PrintCapabilies及び、PrintTicketを説明するための図である。いずれも印刷アーキテクチャで既定された規則に則ったXML形式のファイルであり、
図4(A)に例示するファイル400は、PrintCapabiliesの一例を示している。ファイル400には、使用可能な印刷設定項目と、当該印刷設定項目に対して設定可能な設定値の組み合わせが列挙されている。アプリケーションや、OSが提供する印刷設定のためのユーザインタフェースは、当該ファイル400に基づき印刷設定画面を構成することができる。なお、ここでは紙面の都合上一部の設定を例示しているが、これに限定されるものではない。その他IPPに準拠する属性情報に基づく印刷設定項目や後処理の設定項目を含んでいても良い。
【0049】
一方、
図4(B)に例示するファイル401は、PrintTicket304の一例であり、現在の印刷設定が列挙される。アプリケーション1051やOS1053が提供する印刷設定のためのユーザインタフェースは、PrintTicket304を書き換えることで印刷設定を変更することができる。
【0050】
また、OS標準印刷UI部305は、選択されたプリンタに対応するPrintCapabilitiesに記述された情報に基づき、印刷設定のための画面(ユーザインターフェース)を提供する。
【0051】
ユーザによる印刷指示が行われたことを検知すると、OS又はアプリケーションはXPSスプールファイルを生成する。生成されたXPSスプールファイルは、標準印刷処理部312に渡される。標準印刷処理部312は、受け取ったXPSスプールファイルをレンダリングしてIPPに則するPDLデータに変換する。IPPに則するPDLデータは、例えば、PDF(Portable Document Format)又はPWG-Raster形式のデータである。
【0052】
更に標準印刷処理部312は、XPSスプールファイルに含まれるPrintTicket304に指定された設定内容に基づき、IPPに則する印刷属性情報を生成する。
【0053】
PDLデータと、IPPに則する印刷属性情報は、印刷処理のスケジュール管理を行うプリントマネージャ318で管理される。プリントマネージャ318は、PDLデータと、IPPに則する印刷属性情報に基づきIPPに則する印刷ジョブを生成し、キュー(待ち行列)に生成した印刷ジョブを登録する。プリンタ200が印刷できる状態になったら、キューに登録した順にデバイス通信部319を介して、IPPに則する印刷ジョブを送信する。このようにして、アプリケーションからの印刷データをIPPに則するPDLデータに変換することが共通プリンタドライバ1054の主な役目である。
【0054】
上記の処理では、IPPの仕様として規定済みの能力しか対応できず、プリンタ200a~cが提供する様々な機能に対応することができない。そこで、本実施形態では、拡張アプリケーションであるデバイスアプリ1052が、別の通信方式を利用し、詳細な能力情報取得を利用することで、標準印刷設定以外の拡張印刷設定を扱うことを可能とする。
【0055】
デバイスアプリ1052a~bは、共通プリンタドライバ1054とは別のアプリケーションであり、UWPのプラットフォーム上で動作するアプリケーションである。このアプリケーションは、IPPをベースとした共通プリンタドライバによる印刷をベースにしつつ、必要に応じてプリンタ200の備える機能をより柔軟に利用可能にするためのアプリケーションである。このアプリケーションはサンドボックス化されたUWPの実行環境で動作することになる。従って、当該アプリケーションがハングアップやエラーを起こしたとしても、システム全体に与える影響を小さくすることができる。
【0056】
ここでは、プリンタ200aに対応するデバイスアプリケーションとしてデバイスアプリ1052aがインストールされている場合を例示する。また、ここでは、プリンタ200bに対応するデバイスアプリケーションとしてデバイスアプリ1052bがインストールされている場合を例示する。一方、プリンタ200cに対するデバイスアプリケーションはインストールされていない。
【0057】
従って、ユーザが共通プリンタドライバの出力先としてプリンタ200c選択した場合、拡張印刷設定の処理はスキップされ、IPPに準拠する印刷が行われる。また、拡張アプリケーションによる拡張印刷設定を必要としないユーザも一定数存在する。これを鑑み、共通プリンタドライバ1054は、プリンタ毎に、拡張印刷設定を起動するか否かの設定を設定記憶部320に記憶する。当該設定はユーザ操作により設定変更することができるものとする。
【0058】
標準印刷処理部312は、拡張アプリケーションのインストール状況や、設定記憶部320に記憶された設定に基づき、デバイスアプリを起動するか否かを判断する。
【0059】
デバイスアプリ1052は、印刷時起動アプリ部10521、拡張印刷設定部10522、印刷ジョブ生成部10525、デバイスアプリ通信部10524で構成される。印刷時起動アプリ部10521は、印刷時に呼び出されるモジュールであり、拡張印刷設定部10522やデバイスアプリ通信部10524、印刷ジョブ生成部10525を管理する。デバイスアプリ1052は、プリンタに紐づいている。デバイスアプリ1052は、印刷直後にプレビューを表示する機能や、印刷設定変更を促すユーザインタフェースを表示する機能などを提供することができる。本実施形態では、標準印刷処理部312においてPDL変換が行われた後にデバイスアプリが提供する画面が呼び出されることを想定しているがこれに限定されるものではない。拡張印刷設定部10522は、IPPに則する印刷設定と比較してより詳細な印刷設定を行うことができる拡張ユーザインタフェースを表示する機能を有する。デバイスアプリ通信部10524は、デバイスアプリ1052の各モジュールがプリンタ200と通信するための機能を有する。デバイスアプリ通信部10524は、特定の通信方式や特定の制御方式を用いてプリンタ200の情報を取得する。特定の通信方式は例えば、WSD(Web Services for Devices)プロトコルや、SNMP(Simple Network Management Protocol)である。また、ベンダ独自のプロトコルを用いた通信方式であってもよい。また、ジョブ制御言語や、プリンタ制御言語で定義された制御コマンドを用いて、プリンタの情報を取得することもできる。例えば、PJL(Printer Job Language)、PostScript、CPCA(Common Peripheral Controlling Architecture)で定義されたコマンドを用いて、プリンタに情報を要求してもよい。また、その他、NPAP(Network Printing Alliance Protocol)を用いてプリンタから情報を取得することもできる。
【0060】
印刷ジョブ生成部10525は、PDL変換処理や拡張された印刷設定を印刷ジョブに反映する機能を有する。
【0061】
例えば、デバイスアプリ1052aの印刷ジョブ生成部10525は、IPPに則する印刷ジョブに含まれるPDLデータをLIPS形式(UFR形式)に変換する機能を有する。また、デバイスアプリ1052bの印刷ジョブ生成部10525は、IPPに則する印刷ジョブに含まれるPDLデータをPCL形式に変換する機能を有する。なお、デバイスアプリ1052で変換するPDLの形式は一例であり、これに限定されるものではない。PCL、RPCS、PS、ART、SPDL2形式などに変換してもよい。なお、PDLデータの変換処理は必ずしも必要ではない。例えば、プリンタ200a~cがPDFのダイレクトプリントに対応している場合は、変換処理をスキップすることもできる。
【0062】
続けて、印刷を実行する際のデータ処理の概要について
図5を用いて説明する。
図5は、ユーザが印刷を行う場合のデータの流れを説明する概略図である。
【0063】
まず、アプリケーション1051は標準印刷設定部308を利用してPrintTicket形式やDEVMODE形式で設定された標準設定データを取得する。標準印刷設定部308は、定義ファイル群309から選択プリンタに対応する定義ファイルを取得し、当該定義ファイルに基づき現在の印刷設定を示す標準設定データを生成する。標準設定データは、アプリケーション1051や、OSによって表示される印刷設定を変更するための画面(ユーザインタフェース)を介して適宜変更される。アプリケーションは、印刷開始指示を受け付けると、標準印刷設定部308で取得した標準設定とXPSスプールファイルを標準印刷処理部312へ渡す。
【0064】
標準印刷処理部312は、受信したXPSスプールファイルをIPPに則するPDLに変換する。また、現在の印刷設定を示す標準設定データに基づき、IPPに則する印刷属性を生成する。続いて、共通プリンタ150は、変換したPDLと、IPPの属性情報に基づき印刷ジョブを生成しデバイスアプリ1052へ渡す。なお、デバイスアプリを使用しないと判断した場合、鎖線で示すように、IPPに則する印刷ジョブをそのままプリンタに送信する。
【0065】
続けて、デバイスアプリ1052は、プリンタ200から取得した拡張設定を示す能力情報からIPPでは定義されていない設定項目を含む拡張設定画面(ユーザインタフェース)を生成し、モニタ110に表示する。
【0066】
ここでは説明のため、プリンタ200aに対応するデバイスアプリ1052aを例に説明する。
【0067】
図8は、デバイスアプリ1052aがモニタ110に表示する印刷設定画面の一例を示している。901は標準印刷設定の一例を示しており、902はデバイス能力情報に基づく拡張印刷設定の一例を示している。902に表示されている拡張印刷設定の「ボックス印刷」、「セキュアプリント」、「針なし綴じ」は各ベンダ独自の仕様で動作する印刷設定の一例である。ユーザは、拡張設定画面を介して、IPPでは策定されていない仕様に基づく印刷設定を行うことができる。OKキー903は、印刷設定を反映して印刷を開始するためのキーである。
【0068】
デバイスアプリ1052aは、OKキー903が選択されたことを検知すると、拡張設定画面を介してなされた設定に基づき、印刷ジョブに付与するジョブ属性である拡張設定を生成する。続いてデバイスアプリ1052aは、PDLとジョブ属性を含む印刷ジョブをプリンタ200aへ送信する。この場合、例えば、印刷ジョブに含まれるジョブ属性はCPCAのコマンドで表現し、PDLデータはLIPS形式(UFR)形式で表現することができる。
【0069】
最後に、プリンタ200は、IPPに則する印刷ジョブや、ベンダ独自の形式の印刷ジョブを受信し、当該印刷ジョブに基づいてシートに画像を印刷する。
【0070】
続けて、具体的な制御について
図6及び
図7のフローチャートを用いて説明する。
【0071】
<クライアントコンピュータ100の制御>
まず、クライアントコンピュータ100の動作について説明する。
図6は、クライアントコンピュータ100の制御を示すフローチャートである。
図6のフローチャートに示す各動作(ステップ)は、CPU101がROM1021又はストレージ105に記憶された各制御モジュールを実現するためのプログラムをRAM1022に読み出し、実行することにより実現される。なお、フローチャートで示す各処理は、アプリケーション1051、OS1053、デバイスアプリ1052のモジュールやソフトウェアコンポーネントが協働して実現するものとする。またデータ送信、情報の入出力などの一部の処理は、各I/Fと協働して実現される。各処理を実現する主体となるプログラムを明確にするため、ソフトウェアコンポーネントやアプリケーションなどを主語として記載するものとする。
【0072】
図6のフローチャートは、使用するプリンタとして、共通プリンタドライバ1054に対応するプリンタが指定され、ユーザから印刷のための指示を受け付けたことに応じて実行される各処理を示している。
【0073】
ステップS601において、アプリケーション1051はユーザによってコモンプリントダイアログの印刷キー803が押下されたことを検知する。ステップS602において、アプリケーション1051は描画データを生成し、OS1053に描画データを渡す。
【0074】
ステップS603において、OS1053は、XPSスプールファイルを生成する。なお、デスクトップアプリ301からの印刷の場合、OSは、GDItoXPS変換モジュール307を用いてXPSスプールファイルを生成する。
【0075】
ステップS604において、印刷アーキテクチャ10531と、共通プリンタドライバ1054は協働して、印刷ジョブを生成する。標準印刷処理部312は、XPSスプールファイルをIPPに則するPDLに変換する。また、ジョブに設定すべき印刷設定を示す標準設定に基づいて、IPPに則する印刷属性を生成する。また、プリントマネージャ318は、PDLとIPPに則する印刷属性とに基づき、印刷ジョブを生成する。
【0076】
続けて、ステップS605において、OS1053はデバイスアプリを使用するか否かを判断する。具体的には、まず、出力先として選択されているプリンタ(以降、選択プリンタと呼ぶ)に対応するデバイスアプリが存在するかどうかを判断する。選択プリンタに対応するデバイスアプリが存在しない場合、処理をS616へ進める。一方、選択プリンタに対応するデバイスアプリが存在する場合、OS1053は、更に拡張アプリ設定記憶部320を参照し、選択プリンタに対するデバイスアプリを起動するか否かを判断する。具体的には、選択プリンタのIDなどに基づき、拡張アプリ設定記憶部320に記憶されたプリンタ毎の設定を参照する。IDに基づき参照した設定がデバイスアプリを起動しない設定を示している場合、処理をS616に進める。一方、IDに基づき参照した設定がデバイスアプリを起動する設定を示している場合、処理をS606に進める。
【0077】
S616において、OS1053は、IPPに則する印刷ジョブを選択プリンタに送信する。送信が完了すると一連の処理を終了する。
【0078】
一方、ステップS606において、OS1053は選択プリンタに対応するデバイスアプリ1052を起動して、IPPに則する印刷ジョブをデバイスアプリ1052へ渡す。また、このとき、選択プリンタを一意に識別するための情報や選択プリンタと通信するための情報(例えば、IPアドレスなど)も渡されるものとする。
【0079】
ステップS607において、デバイスアプリ1052の印刷時起動アプリ部10521はOS1053に渡された印刷ジョブ及び選択プリンタに関する情報を受信する。ステップS608において、デバイスアプリ1052の印刷時起動アプリ部10521は印刷ジョブを解析する。
【0080】
ステップS609において、デバイスアプリ1052の印刷時起動アプリ部10521は、選択プリンタの能力情報が記憶されているかどうか(拡張能力を取得済みであるか)判断する。選択プリンタの能力情報が記憶されている場合は、処理をS613に進め、選択プリンタの能力情報が記憶されていない場合は、処理をS610に進める。
【0081】
ステップS610において、デバイスアプリ通信部10524は選択プリンタ200に対して能力情報を問い合わせる。デバイスアプリ1052のデバイスアプリ通信部10524は、選択プリンタ200に対して前述した特定の通信方式や特定の制御コマンドを用いて能力情報を要求する。ステップS611において、デバイスアプリ通信部10524は、S610で送信した要求の応答としてデバイス能力情報を受信する。また当該受信した能力情報と、選択プリンタの識別子を関連付けた情報をデバイスアプリ1052からアクセスできる共有の記憶領域に記憶する。この処理により、次回以降はデバイス能力情報の取得処理を省略することができるようになる。ここで記憶されるデバイス能力情報は、IPPのプリンタ属性要求操作(Get-Printer-Attributes Operations)で取得できる属性情報(能力情報)よりも詳細な設定項目を含んでいるものとする。
【0082】
続いて、ステップS613において、デバイスアプリ1052の拡張印刷設定部10522は印刷ジョブの解析結果と、デバイス能力情報に基づき、
図9で例示した拡張印刷設定UIを表示する。
【0083】
ステップS614において、デバイスアプリ1052の拡張印刷設定部10522はユーザ操作に基づく印刷設定の変更指示を受け付ける。
図9で例示したように、拡張印刷設定画面(UI)では、IPPでは既定されていない印刷設定902を設定することができる。
【0084】
ステップS615において、デバイスアプリ1052の印刷ジョブ生成部10525は拡張印刷設定に基づき、選択プリンタが受信可能なコマンドに変換した印刷ジョブを生成する。例えば、選択プリンタがプリンタ200aであり、デバイスアプリが1052aである場合、ジョブ属性をCAPAで定義し、PDLをLIPS(UFR)に変換した印刷ジョブを生成する。また、例えば、選択プリンタがプリンタ200bであり、デバイスアプリが1052bである場合、ジョブ属性をJPLで定義し、PDLをPCLに変換した印刷ジョブを生成する。S617において、デバイスアプリ通信部10524は、選択プリンタに対し、S615で生成した印刷ジョブを送信する。デバイスアプリ通信部10524は、プリンタ200と直接接続し、WSDプロトコルやベンダ独自のプロトコルを用いたジョブ制御を行い、印刷を実行させる。
【0085】
なお、本実施例では、デバイスアプリ1052のデバイスアプリ通信部10524がプリンタ200に対して直接印刷ジョブを送信する場合を例示しているがこれに限定されるものではない。例えば、OSが提供するプリントマネージャ318及びデバイス通信部319を介して、印刷ジョブを送信してもよい。この場合、PDLの変換は行わず、印刷属性のみをベンダ拡張を含む設定に書き換える。即ち、印刷ジョブ生成部10525は、OSから受け取ったPDLについては変換を行わず、パススルーし、拡張された印刷設定を示す文字列情報やバイナリデータを含む印刷ジョブを生成する。当該変換した印刷ジョブは、プリントマネージャ318に再投入され、プリンタ200に送信される。
【0086】
<プリンタ200の制御>
続いて、プリンタ200の制御について説明する。
図7は、プリンタ200の制御を示すフローチャートである。のフローチャートに示す各動作(ステップ)は、印刷装置のプロセッサがメモリに記憶された各制御モジュールを実現するためのプログラムを実行することにより実現される。
図7のフローチャートはプリンタ200が起動したことに応じて実行されるものとする。
【0087】
ステップS701において、プリンタ200のプロセッサは、外部装置から能力情報の取得要求を受け付けたか否かを判断する。外部装置から能力情報の取得要求を受け付けた場合は、処理をS702に進め、外部装置から能力情報の取得要求を受け付けていない場合は、処理をS703に進める。ステップS702において、プリンタ200のプロセッサは、要求に対する応答として、デバイスの能力を示す情報を返信する。ここでは、取得要求がIPPのGet-Printer-Attributesリクエストであれば、IPPで使用できる能力を示す属性情報を返信する。一方、
図6のS610で説明したデバイスアプリからの取得要求であれば、IPPで使用できる能力を示す属性情報と比較して、詳細な能力を示すデバイス能力情報を返信する。
【0088】
続いて、ステップS704において、プリンタ200のプロセッサは、外部装置から印刷ジョブを受信したか否かを判断する。外部装置から印刷ジョブを受信した場合は、処理をS705に進め、外部装置から印刷ジョブを受信していない場合は、処理をS703に進める。
【0089】
ステップS703において、プリンタ200のプロセッサは、シャットダウンの指示を受け付けたか否かを判断する。シャットダウンの指示を受け付けた場合は、一連の処理を終了する。一方、シャットダウンの指示を受け付けていない場合は、S701の処理に戻り、外部装置から送信される要求や印刷ジョブを待ち受ける。
【0090】
以上、説明したように、本実施形態では、所定の印刷プロトコルに則する印刷ジョブを生成するプリンタドライバ又はプリントクライアントを用いて印刷を行う場合であっても、複数のベンダの印刷装置が提供する拡張機能を適切に利用できるようになる。また、プリンタドライバは、所定の印刷プロトコルに則するクラスドライバとして実現し、ベンダ毎の拡張は、サンドボックス化された環境で動作する拡張アプリケーションが実現することができる。従って、セキュリティと利便性を両立することができる。更に、当該拡張アプリケーションによって、ベンダの独自資産(例えば、ベンダ独自のPDLやJDL)を活用した印刷が行えるようになる。また、拡張アプリケーションが提供されていない場合や、ユーザが拡張アプリケーションによる印刷設定を望まない場合には、拡張アプリケーションを敢えて起動しないようにすることができる。従って、簡易的な印刷を好むユーザと、詳細な印刷設定を行いたいユーザの両方に対応することができる。
【0091】
<第2の実施形態>
第1の実施形態では、共通プリンタドライバ1054でPDLを生成した後に、デバイスアプリ1052を用いて印刷設定を拡張する場合を例示した。第2の実施形態では、印刷指示を行う前にも、ベンダ独自の印刷設定画面による印刷設定を行えるようにする仕組みを提供する。
【0092】
なお、第2の実施形態におけるハードウェア構成やソフトウェア構成は第1の実施形態と同様であるため省略する。
【0093】
まず、第2の実施形態における、印刷を実行する際のデータ処理の概要を
図10を用いて説明する。
図10は、ユーザが印刷を行う場合のデータの流れを説明する概略図である。
【0094】
アプリケーション1051は第1の実施形態と同様に、OS標準印刷設定部208を利用して標準設定データを取得する。
【0095】
アプリケーション1051から呼び出されたプリントダイアログなどから詳細印刷を行うための「その他の設定」キー802が押下された場合に、OSの印刷アーキテクチャ10531は、対応するデバイスアプリを起動させる。
【0096】
OSにより起動されたデバイスアプリ1052は、選択プリンタから取得した能力情報に基づき拡張設定を生成する。また、デバイスアプリ1052は、OS標準印刷設定部208から渡された標準設定データ(PrintTicket)と、プリンタ200から取得した能力情報から得た拡張設定を利用して、
図9と同等の印刷設定を行える画面(ユーザインタフェース)を表示する。なお、当該印刷設定を行える画面には、印刷条件に基づき出力される出力物の体裁を示すイラスト等を表示することもできる。当該イラストは、ユーザが印刷設定を変更する度に適宜生成され、どのような出力になるかをユーザに通知することができる。また、当該印刷設定を行える画面を介して、お気に入りの印刷設定等を登録することもできる。お気に入りの印刷設定は、デバイスアプリ1052の共有データ領域に記憶される。ユーザは図示省略のリスト等からお気に入りの印刷設定を呼び出すための表示アイテムを選択し、印刷設定に反映することができる。
【0097】
ユーザによって印刷設定が変更され、OKキーが選択されたことを検知すると、デバイスアプリ1052は、デバイスアプリ1052が所有する共有データ領域に拡張設定の情報を格納し、OS標準印刷設定部208には標準設定を渡す。OS標準印刷設定部208は、プリンタ200で提供可能な拡張設定の情報を知らないため、拡張設定の情報を渡しても未知の設定と判断してしまい正しく制御できない。そのため、デバイスアプリ1052は拡張設定を共有データ領域に一時保持しておく。印刷時に別プロセスで起動されるデバイスアプリ1052が共有データ領域に保持された拡張設定を読み込むことにより、OS1053に対して拡張設定を制御させることなく、拡張印刷設定機能を提供することができる。
【0098】
具体的な制御について
図11乃至
図12のフローチャートを用いて説明する。
図11乃至
図12は、クライアントコンピュータ100の制御を示すフローチャートである。
図6のフローチャートに示す各動作(ステップ)は、CPU101がROM1021又はストレージ105に記憶された各制御モジュールを実現するためのプログラムをRAM1022に読み出し、実行することにより実現される。なお、
図11のフローチャートは、アプリケーション1051が提供するユーザインタフェースを介して印刷の意思表示を示すユーザ操作がなされたことに応じて実行される。
【0099】
ステップS1101において、アプリケーション1051は、印刷の意思表示を示すキーの選択を受け付ける。ステップS1102において、アプリケーション1051は、
図8で例示したようなコモンプリントダイアログを表示する。ステップS1103において、アプリケーションS1103は、詳細印刷のためのキーの選択を受け付ける。詳細印刷のためのキーは、例えば、「その他の印刷」キー802である。当該キーの押下を受け付けると、アプリケーション1051は、OS1053にプリンタドライバ及びプリンタを特定する情報と、詳細印刷画面の要求を送信する。
【0100】
ステップS1104において、OS1053は、受信したプリンタドライバ及び選択されたプリンタを特定する情報に基づき、事前の印刷設定にデバイスアプリを使用するか否かを判断する。選択されたプリンタに対応するデバイスアプリがない場合は、S1105に処理を進める。一方、選択されたプリンタに対応するデバイスアプリがある場合は、更に、デバイスアプリを起動するか否かを拡張アプリ設定記憶部320に基づき判断する。当該判断は、S605と同様の判断であるため説明は省略する。デバイスアプリを起動すると判断すると、処理をS1108に進め、起動しないと判断すると、処理をS1105に進める。
【0101】
ステップS1105において、OS1053は、PrintCapablitiesとPrintTicketに基づきOSの標準印刷設定画面を表示する。当該設定画面では、IPPで取得できる属性に基づく印刷設定を行うことができる。なお、デスクトップアプリから詳細な印刷設定の指示がなされた場合、DEVMODEとPrintTikectを相互変換するAPIを使用して、PrintTikectに変換して、現在の印刷設定を解釈するものとする。
【0102】
ステップS1106において、OS1053は、ユーザ操作に基づく印刷設定の変更指示を受け付ける。ステップS1107において、OS1053は、S1105において、標準設定データ(DEVMODE若しくはPrintTikect)を更新する。更新が完了すると、処理をS1117に進める。
【0103】
一方、ステップS1108において、OS1053は、選択プリンタに対応するデバイスアプリを起動し、デバイスアプリに印刷ジョブに設定すべき印刷設定データ(標準設定データ)を渡す。なお、標準設定データがDEVMODEで記載されている場合、PrintTicketへ変換したデータを渡す。
【0104】
ステップS1109において、起動されたデバイスアプリは、PrintTicketで記載された印刷設定情報を受信する。S1110~S1112では、第1の実施形態のS609~S611と同様の拡張設定の取得処理が行われる。
【0105】
ステップS1113において、デバイスアプリは、受信した印刷設定情報と、デバイス能力から拡張印刷設定UIを表示する。ステップS1114において、デバイスアプリは、ユーザ操作に基づく印刷設定の変更指示を受け付ける。ステップS1115において、デバイスアプリは、印刷設定情報であるPrintTicketを更新する。続けてS1116において、S1115で更新した拡張設定を含むPrintTikectをデバイスアプリからアクセスできる共有領域に一時保存する。S1106の処理が完了すると、S1117に進む。なお、デバイスアプリは、OSに返す印刷属性情報には、拡張設定を敢えて除いた標準設定データを返却する。
【0106】
ステップS1117において、アプリケーション1051は、OS標準機能又はデバイスアプリ1052によって更新された標準設定データに基づきコモンプリントダイアログを再表示する。ステップS1118において、アプリケーション1051はコモンプリントダイアログの印刷ボタンの選択操作を受け付ける。選択操作を受け付けると、印刷設定に関する一連の処理は終了する。続けて、
図12の印刷処理が行われる。
【0107】
図12は、第1の実施形態における
図6のフローチャートに代えて実行されるフローチャートである。
図6との差分は、S613の処理に代えて、S1301の処理が実行される点である。
【0108】
S601~S611は第1の実施形態と同様の処理であるため省略する。なお、S606で起動するデバイスアプリのプロセスと、S1108で起動するデバイスアプリのプロセスは別プロセスとなる。従って、デバイスアプリがアクセスできる共通の保存領域を介して拡張設定を含むPrintTicketをやり取りする。
【0109】
S1301において、デバイスアプリ1052は、受信したIPPに則する印刷ジョブの属性と、デバイスアプリ1052がアクセスできる保存領域内に記憶された拡張設定を含むPrintTicketに基づき、拡張印刷設定UIを表示する。なお、ここで表示される拡張印刷設定UIには、デバイスアプリ1052の共有データ領域に記憶されたお気に入り設定を呼び出すための表示アイテムなどが表示するようにしてもよい。この場合、ユーザは、印刷指示後に表示される印刷設定画面においても、事前登録されたお気に入り設定を使用できるようになる。表示が完了すると処理をS614に進める。以降の処理は第1の実施形態と同様である。
【0110】
以上説明したように本実施形態では、印刷を開始する前の事前設定にも対応できるようになるといった効果を奏することができる。
【0111】
<変形例>
第2の実施形態では、拡張設定を共有データ領域に格納する場合を例示したが、拡張設定をデバイスアプリに受け渡す方法はこれに限定されるものではない。例えば、IPPに則する標準設定に対してベンダが拡張可能な領域(以下、ベンダ拡張領域と呼ぶ)が定義された場合、その領域を利用して第2の実施形態と同様の処理を行うことが可能である。本処理について
図13の模式図を用いて説明する。
【0112】
まず、アプリケーション1051は標準印刷設定部308を利用してIPPに即する情報である標準設定データを取得する。プリントダイアログを介して詳細印刷の指示を受け付けると、OS1053は、デバイスアプリ1052を起動する。デバイスアプリ1052は、OS標準印刷設定部208から渡された標準設定データ(PrintTicket)と、プリンタ200から取得した能力情報から得た拡張設定を利用して、
図9に例示した拡張設定UIを表示する。ユーザによって
図9のOKボタンを押下されると、デバイスアプリ1052は、PrintTicketに、ベンダ拡張の情報を記載する。例えば、
図14の1401のように、プリンタ200が利用可能な拡張設定を表す文字列を記載し、OS1053に渡す。ベンダ拡張領域に対しては、IPPに既定された仕様に基づくように記載される。従って、IPPに則する標準プリンタドライバ1054においても適切に取り扱えるデータである。標準印刷処理部312は、PrintTicketに記載されたベンダ拡張の情報を、そのままIPPに則する印刷ジョブのベンダ拡張領域を示す属性に記載する。そのため、印刷時に動作するデバイスアプリ1052までベンダ拡張領域に記載された拡張設定情報を伝えることができ、この情報を利用して拡張設定変更機能を提供することが可能となる。
【0113】
また、別の変形例として、ベンダ拡張領域などを使用しない例も考えられる。例えば、標準印刷処理部312とプリントマネージャ318は、PrintTicketの中から、IPPに則した属性のみを含むIPPに則する印刷ジョブを生成する。一方で、デバイスアプリを起動する際に、IPPに則する印刷ジョブに加えて、
図14で例示した拡張設定を含むPrintTicketをデバイスアプリに引き渡す。この場合、デバイスアプリは、IPPに則する印刷設定は破棄し、受信したPrintTicketと、独自に取得したデバイス能力情報に基づき拡張UIを表示すればよい。
【0114】
また、第2の実施形態の変形例として、デバイスアプリ1052を使用した印刷開始前の拡張印刷設定処理を受け付けている場合に、印刷指示後の拡張印刷設定UIによる設定処理(S1311及びS1312)をスキップするよう制御することもできる。
【0115】
<その他の実施形態>
本発明は、上述の各実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASICやFPGA)によっても実現可能である。
【符号の説明】
【0116】
100 クライアントコンピュータ
200 印刷装置
101 CPU
1054 共通プリンタドライバ
1053 OS