以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
<システム構成>
まず、本実施形態に係る情報処理システム1のシステム構成について、図1を用いて説明する。図1は、一実施形態に係る情報処理システム1の一例のシステム構成を示す図である。
図1に示すように、本実施形態に係る情報処理システム1は、1台以上のクライアント装置10と、1台以上の画像形成装置20と、サーバ装置30とを含み、これら装置はLAN(Local Area Network)等のネットワークNを介して互いに通信可能に接続されている。
クライアント装置10は、例えばPC(パーソナルコンピュータ)、スマートフォン、タブレット端末等である。クライアント装置10は、例えば、ユーザからの印刷指示を受け付けて、印刷対象データから印刷データを作成した上で、印刷データを画像形成装置20に送信する。又は、クライアント装置10は、例えば、ユーザからの印刷指示を受け付けて、印刷対象データをサーバ装置30に送信する。
なお、印刷対象データとは、例えば、画像データや文書データ等の印刷可能な電子データである。また、印刷データとは、例えば、印刷対象データを、画像形成装置20が印刷可能なPDL(Page Description Language)形式に変換した電子データである。
画像形成装置20は、例えばプリンタ、印刷機能を備えたMFP(Multifunction Peripheral)等である。画像形成装置20は、クライアント装置10又はサーバ装置30から受信した印刷データを印刷する。
サーバ装置30は、例えばPC等である。サーバ装置30は、例えば、クライアント装置10から受信した印刷対象データから印刷データを作成して、作成した印刷データを画像形成装置20に送信する。
また、サーバ装置30は、ファイルサーバとして機能しても良い。すなわち、サーバ装置30は、例えば、クライアント装置10から受信した印刷データを記憶しておき、画像形成装置20からの要求に応じて、記憶した印刷データを要求元の画像形成装置20に送信しても良い。
なお、以降では、1台以上のクライアント装置10について、各々を区別するときは、「クライアント装置10−1」、「クライアント装置10−2」等と表す。同様に、1台以上の画像形成装置20について、各々を区別するときは、「画像形成装置20−1」、「画像形成装置20−2」等と表す。
<ハードウェア構成>
次に、本実施形態に係る情報処理システム1に含まれるクライアント装置10、画像形成装置20、及びサーバ装置30のハードウェア構成について、図2及び図3を用いて説明する。
≪クライアント装置10及びサーバ装置30≫
図2は、一実施形態に係るクライアント装置10及びサーバ装置30の一例のハードウェア構成を示す図である。なお、クライアント装置10及びサーバ装置30は、同様のハードウェア構成を有しているため、以降では、クライアント装置10のハードウェア構成について説明する。
図2に示すように、本実施形態に係るクライアント装置10は、入力装置101と、表示装置102と、外部I/F103と、RAM(Random Access Memory)104とを有する。また、クライアント装置10は、ROM(Read Only Memory)105と、CPU(Central Processing Unit)106と、通信I/F107と、HDD(Hard Disk Drive)108とを有する。これらのハードウェアは、バスBで互いに接続されている。
入力装置101は、キーボードやマウス、タッチパネル等を含み、ユーザが各操作信号を入力するのに用いられる。表示装置102は、ディスプレイ等を含み、クライアント装置10による処理結果を表示する。なお、入力装置101及び表示装置102の少なくとも一方は、必要なときにクライアント装置10に接続して利用する形態であっても良い。
通信I/F107は、クライアント装置10をネットワークNに接続するインタフェースである。クライアント装置10は、通信I/F107を介して通信を行うことができる。
HDD108は、プログラムやデータを格納している不揮発性の記憶装置である。HDD108に格納されるプログラムやデータには、クライアント装置10全体を制御する基本ソフトウェアであるOS(Operating System)、OS上において各種機能を提供するアプリケーションソフトウェア等がある。
なお、クライアント装置10は、HDD108に代え、記憶媒体としてフラッシュメモリを用いるドライブ装置(例えばソリッドステートドライブ:SSD)を有して良い。また、HDD108は、格納しているプログラムやデータを所定のファイルシステムやDBにより管理している。
外部I/F103は、外部装置とのインタフェースである。外部装置には、記録媒体103a等がある。クライアント装置10は、外部I/F103を介して記録媒体103aの読み取りや書き込みを行うことができる。記録媒体103aには、フレキシブルディスク、CD、DVD、SDメモリカード、USBメモリ等がある。
ROM105は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。ROM105には、OS設定、ネットワーク設定等のプログラムやデータ、及びクライアント装置10の起動時に実行されるBIOS(Basic Input/Output System)が格納されている。RAM104は、プログラムやデータを一時保持する揮発性の半導体メモリである。
CPU106は、ROM105やHDD108等の記憶装置からプログラムやデータをRAM104上に読み出し、当該プログラムやデータに基づく処理を実行することで、クライアント装置10全体の制御やその他の機能を実現する演算装置である。
本実施形態に係るクライアント装置10及びサーバ装置30は、図2に示すハードウェア構成を有することにより、後述するような各種処理を実現できる。
≪画像形成装置20≫
図3は、一実施形態に係る画像形成装置20の一例のハードウェア構成を示す図である。
図3に示すように、本実施形態に係る画像形成装置20は、コントローラ201と、操作パネル202と、外部I/F203と、通信I/F204と、プロッタ205を有する。また、コントローラ201は、CPU211と、RAM221と、ROM231と、NVRAM241と、HDD251とを有する。
ROM231は、各種プログラムやデータを格納している不揮発性の半導体メモリである。RAM221は、プログラムやデータを一時保持する揮発性の半導体メモリである。NVRAM241は、例えば設定情報等を格納している。また、HDD251は、各種プログラムやデータを格納している不揮発性の記憶装置である。
CPU211は、ROM231やNVRAM241、HDD251等からプログラムやデータ、設定情報等をRAM221上に読み出し、当該プログラムやデータに基づく処理を実行することで、画像形成装置20全体の制御やその他の機能を実現する演算装置である。
操作パネル202は、ユーザからの入力を受け付ける入力部と、表示を行う表示部とを有する。外部I/F203は、外部装置とのインタフェースである。外部装置には、記録媒体203a等がある。画像形成装置20は、外部I/F203を介して記録媒体203aの読み取りや書き込みを行うことができる。なお、記録媒体203aには、例えば、ICカード、フレキシブルディスク、CD、DVD、SDメモリカード、USBメモリ等がある。
通信I/F204は、画像形成装置20をネットワークNに接続するインタフェースである。画像形成装置20は、通信I/F204を介して通信を行うことができる。プロッタ205は、印刷データを印刷する印刷装置である。
本実施形態に係る画像形成装置20は、図3に示すハードウェア構成を有することにより、後述するような各種処理を実現できる。
<クライアント装置10のソフトウェア構成>
次に、本実施形態に係るクライアント装置10のソフトウェア構成について、図4を用いて説明する。図4は、クライアント装置10の一例のソフトウェア構成を示す図である。
図4に示すように、本実施形態に係るクライアント装置10は、アプリケーション301と、OS302と、プリンタドライバ303と、ストアデバイスアプリ304とを有する。
アプリケーション301は、例えば文書作成ソフト、画像閲覧・編集ソフト、ブラウザ等、ユーザの印刷指示に応じて、OS302に印刷の指示(要求)を行うことができるアプリケーションソフトである。アプリケーション301には、ストアアプリ311と、デスクトップアプリ321とが含まれる。
ストアアプリ311は、例えば、Windows(登録商標)8/WindowsRT及びそれ以降のバージョンのWindowsOSにアプリケーションを提供する「Windowsストア」から、入手可能なアプリケーションである。ストアアプリ311では、「ストアアプリ UI」が用いられる。なお、Windows8及びWindows8.1では、OS302によって提供される「Modern UI」又は「Metro UI」とも称されるUIからストアアプリ311が呼び出される。
一方、デスクトップアプリ321は、例えば、Windows7以前のバージョンのWindowsOSにおいても使用可能なアプリケーションである。
OS302は、Windows8/WindowsRT及びそれ以降のバージョンのWindowsOSである。
プリンタドライバ303は、例えば、Version4プリンタドライバ(以降では、「V4プリンタドライバ」と表す。)である。V4プリンタドライバとは、Windows8/WindowsRTから採用されたアーキテクチャに基づくプリンタドライバである。以降では、プリンタドライバ303を「V4プリンタドライバ303」とも表す。
なお、Windows8以降のWindowsOSでは、Windows2000からWindows7で使用されていたVersion3プリンタドライバ(以降では、「V3プリンタドライバ」と表す。)に加えて、V4プリンタドライバも使用可能である。
プリンタドライバ303は、拡張設定部313と、設定制御部323と、描画部333とを含む。
拡張設定部313は、プリンタ拡張とも称され、デスクトップアプリ321から印刷を行う場合に、ベンダ独自の印刷設定画面を表示する。
設定制御部323は、禁則スクリプトとも称され、例えば、印刷設定の組み合わせが正当であるか否かを検証する。拡張設定部313は、例えば、設定制御部323により正当でないと検証された印刷設定の組み合わせを非表示にすること等ができる。
また、設定制御部323は、アプリケーション301やOS302等からの要求に応じて、プリンタドライバ303が設定可能な機能の情報を示すPrintCapabilityを返信する。更に、設定制御部323は、アプリケーション301やOS302等からの要求に応じて、プリンタドライバ303に設定されている各種機能の設定値をDevmodePropertyBagから取得し、取得した設定値を示すPrintTicketを返信する。また、PrintTicketで示された設定値をDevmodePropertyBagに保存する。
なお、OS302に返信されたPrintCapabilityやPrintTicketは、例えば、拡張設定部313が表示する印刷設定画面における各機能の現在値の表示、選択肢の表示等に利用される。
描画部333は、アプリケーション301において印刷指示が行われた印刷対象データから印刷データを作成する。
ストアデバイスアプリ304は、ストアアプリ311から印刷を行う場合に、ベンダ独自の印刷設定画面を表示する。なお、ストアデバイスアプリ304は、ストアアプリ311と同様に、「Windowsストア」から入手可能なアプリケーションである。
デスクトップアプリ321から印刷を行う場合、プリンタドライバ303は、拡張設定部313により表示された印刷設定画面で設定された設定内容に基づいて、印刷データを作成することができる。一方で、ストアアプリ311から印刷を行う場合、プリンタドライバ303は、ストアデバイスアプリ304により表示された印刷設定画面で設定された設定内容に基づいて、印刷データを作成することができる。
拡張設定部313及びストアデバイスアプリ304は、ベンダ独自の印刷設定画面を表示するUI部305を構成する。
<V4プリンタドライバ303及びストアデバイスアプリ304がアクセス可能な記憶領域>
次に、V4プリンタドライバ303及びストアデバイスアプリ304がアクセス可能な記憶領域について、図5を用いて説明する。図5は、V4プリンタドライバ303及びストアデバイスアプリ304がアクセス可能な記憶領域について説明するための図である。
図5に示すように、拡張設定部313、設定制御部323、描画部333、及びストアデバイスアプリ304は、PropertyBag400と呼ばれる記憶領域にアクセスすることができる。なお、このような記憶領域へのアクセスは、OS302によって提供されるAPI(Application Programming Interface)を用いて行うことができる。
図5に示すように、PropertyBag400には、DriverPropertyBag410と、QueuePropertyBag420と、UserPropertyBag430とが含まれる。
DriverPropertyBag410は、V4プリンタドライバ303を作成するときに決定された構成情報等を記憶する記憶領域である。拡張設定部313、設定制御部323、描画部333、及びストアデバイスアプリ304は、DriverPropertyBag410から各種情報の読み出しが可能である。一方で、拡張設定部313、設定制御部323、描画部333、及びストアデバイスアプリ304は、DriverPropertyBag410に対して、情報の書き込みを行うことはできない。
QueuePropertyBag420は、論理プリンタ(プリンタアイコン)毎の設定情報等を記憶する記憶領域である。拡張設定部313及びストアデバイスアプリ304は、QueuePropertyBag420に対して、各種情報の読み出し及び書き込みが可能である。また、設定制御部323及び描画部333は、QueuePropertyBag420に対して、各種情報の読み出しが可能である。
なお、論理プリンタとは、例えば、OS302のプリンタフォルダ等にプリンタアイコンとして表示される仮想的なプリンタである。例えば、クライアント装置10の利用者は、1つの画像形成装置20に対して、設定情報(例えば、用紙サイズや向き、印刷品質等)が異なる複数の論理プリンタを作成することができる。
UserPropertyBag430は、論理プリンタ毎に、ユーザ毎の設定情報等を記憶する記憶領域である。拡張設定部313、設定制御部323、及びストアデバイスアプリ304は、UserPropertyBag430に対して、各種情報の読み出し及び書き込みが可能である。
また、拡張設定部313及び描画部333は、更に、独自記憶領域500に対して、各種情報の読み出し及び書き込みが可能である。
独自記憶領域500は、例えばレジストリやファイル等を用いて実現され、PropertyBag400とは異なる記憶領域である。独自記憶領域500は、V4プリンタドライバ303を提供するベンダ等によって定義される。
ストアデバイスアプリ304は、OS302の課す制約により、PropertyBag400以外の記憶領域に対してアクセスすることはできない。また、設定制御部323は、上述したDevmodePropertyBag及びPropertyBag400以外の記憶領域に対してアクセスすることはできない。すなわち、ストアデバイスアプリ304及び設定制御部323は、独自記憶領域500に対して、各種情報の読み出しや書き込み等を行うことができない。
このことは、ストアアプリ311に課されている制約と同様であり、例えば、ストアデバイスアプリ304及び設定制御部323が、OS302が使用するレジストリ等を変更し、OS302の動作に悪影響を与えることを防ぐためである。このような技術は、「サンドボックス」等と称されている。
<機能構成>
図6は、一実施形態に係るクライアント装置10の機能構成の例を示す図である。
クライアント装置(情報処理装置)10は、OS302、インストーラ610、プリンタドライバ303、及びストアデバイスアプリ304等のプログラムを実行する情報処理装置である。なお、図6に示すOS302、プリンタドライバ303、及びストアデバイスアプリ304は、図4に示すOS302、プリンタドライバ303、及びストアデバイスアプリ304に対応している。
インストーラ610は、クライアント装置10にV4プリンタドライバであるプリンタドライバ303をインストールして、クライアント装置10でプリンタドライバ303を利用できるようにするインストール用のプログラムである。
設定情報記憶部630は、印刷に関する設定情報を制御するスクリプト(禁則スクリプト等)を利用して、設定情報を管理するプリンタドライバ303のスクリプトから利用可能な記憶領域(例えば、PropertyBag400)である。
変更情報記憶部620は、設定情報記憶部630とは異なる記憶領域であり、印刷に関する設定情報の既定値を、管理者等の要望に応じて変更するための情報である変更情報A621を記憶する。ここで、印刷に関する設定情報の既定値の一例を表1に示す。
表1は、プリンタドライバ303の印刷に関する設定情報の既定値の一例を示している。
表1の例では、プリンタドライバ303は、用紙サイズ、カラー設定、両面、集約、用紙種類等の設定項目を有しており、設定項目毎に選択肢と、デフォルトの設定値である既定値とが記憶されている。本実施形態では、プリンタドライバ303は、例えば、表1に示すような設定情報の既定値を保持しているものとする。
本実施形態では、クライアント装置10を管理する管理者等は、変更情報A621を変更情報記憶部620に格納して、インストーラ610を実行することにより、表1に示す設定情報の既定値をカスタマイズ(変更)することができる。
なお、設定情報の既定値のカスタマイズとは、プリンタドライバ303がクライアント装置10にインストールされたときの設定情報の既定値を、情報処理システム1の管理者等が変更することを示す。例えば、プリンタドライバ303がインストール済のクライアント装置10を利用する際に、印刷の設定情報を変更する操作等は、カスタマイズには含まれない。
設定情報の既定値のカスタマイズには、例えば、既定のカラー設定を「カラー」から「白黒」に変更する既定値の変更、カラー設定の選択肢を「白黒」のみに限定する印刷設定の限定や、固定化等が含まれる。
また、V4プリンタドライバでは、設定情報の既定値のカスタマイズを行う場合、設定制御部323とUI部305とに対して、それぞれ、カスタマイズの処理が行われる。
(インストーラの機能構成)
インストーラ610は、インストール部611、変更情報取得部612、変更情報保存部613、状態情報管理部614、及び設定情報変更部615等を含む。
クライアント装置10は、例えば、図2のCPU106でインストーラ610を実行することにより、インストール部611、変更情報取得部612、変更情報保存部613、状態情報管理部614、及び設定情報変更部615等を実現している。
インストール部611は、クライアント装置10にプリンタドライバ303をインストールする一連の処理のうち、一般的なV4プリンタドライバのインストール処理を実行する。なお、インストール部611が実行するV4プリンタドライバのインストール処理については後述する。
変更情報取得部612は、変更情報記憶部620に記憶された変更情報A621を取得(読み出し)する。
変更情報保存部613は、変更情報取得部612が取得した変更情報A621を、設定情報記憶部630に保存する。なお、設定情報記憶部630に記憶される変更情報は、変更情報記憶部620に記憶された変更情報A621と同じ情報で良いが、ここでは、変更情報記憶部620に記憶された変更情報A621と区別するため、変更情報B631と表すものとする。
状態情報管理部614は、設定情報記憶部630に含まれる状態情報632を管理する。状態情報632のイメージを表2に示す。
表2に示すように、状態情報632は、現在の状態が、「無効」状態(第1の状態)であるか、「有効」状態(第2の状態、所定の状態)であるかを示す情報である。状態情報632は、通常は「無効」状態(設定値0)となっており、設定情報記憶部630に記憶した変更情報B631を、設定情報に反映させるとき(例えば、インストーラ610の動作中等)に、「有効」(設定値1)に設定される。
一例として、状態情報管理部614は、変更情報保存部613が、変更情報を設定情報記憶部630に記憶した後、設定情報記憶部630に含まれる状態情報632を「無効」状態から「有効」状態に変更する。
別の一例として、状態情報管理部614は、インストール部611が、前述したインストール処理を開始するとき(例えば、インストール処理を開始する前)に、設定情報記憶部630に含まれる状態情報632を「無効」状態から「有効」状態に変更する。
また、状態情報管理部614は、変更情報B631を反映した設定情報が設定情報の既定値として設定された後、設定情報記憶部630に含まれる状態情報632を「無効」状態に設定する。
設定情報変更部615は、変更情報B631を反映した設定情報を、設定情報の既定値として設定する。例えば、設定情報変更部615は、OS302で用意されているAPIを用いて、設定制御部323が変更情報B631を反映して作成した設定情報を、設定情報の既定値として設定(保存)する。
(プリンタドライバの機能構成)
プリンタドライバ303は、印刷に関する設定情報を制御するスクリプト(禁則スクリプト等)を利用して設定情報を管理するプリンタドライバ(V4プリンタドライバ、又は同様のアーキテクチャのプリンタドライバ)である。プリンタドライバ303は、図4で前述したように、拡張設定部313、設定制御部323、及び描画部333を含む。
クライアント装置10は、例えば、図2のCPU106で、プリンタドライバ303を実行することにより、拡張設定部313、設定制御部323、及び描画部333等を実現している。
設定制御部323は、印刷に関する設定情報を制御するスクリプト(禁則スクリプト等)を利用して、印刷に関する設定情報を管理する。設定制御部323は、設定情報管理部641、設定能力情報管理部642、及び排他設定制御部643を含む。
設定情報管理部641は、Devmodeと呼ばれる形式(第1の形式)の設定情報(第1の設定情報)と、PrintTicketと呼ばれる形式(第2の形式)の設定情報(第2の設定情報)とを、スクリプトを用いて相互に変換する。
本実施形態に係る印刷に関する設定情報には、Devmode形式の第1の設定情報と、PrintTicket形式の第2の設定情報とが含まれる。
Devmode形式の第1の設定情報は、DEVMODE構造体と呼ばれるバイナリ形式の設定情報である。設定情報の既定値は、このDEVMODE構造体に記憶される。
PrintTicket形式の第2の設定情報は、PrintSchemaと呼ばれる仕様に基づく印刷設定をXML(Extensible Markup Language)形式で表現する設定情報である。
V4プリンタドライバは、基本的にPrintTicket形式の設定情報を用いて処理を行うが、アプリケーション301によって、Devmode形式で印刷の設定を行う場合と、PrintTicket形式で印刷の設定を行う場合とがある。したがって、V4プリンタドライバは、基本的に、Devmode形式の設定情報からPrintTicket形式の設定情報を作成する機能と、PrintTicket形式の設定情報からDevmode形式の設定情報を作成する機能とを有している。なお、以下の説明の中で、Devmode形式の設定情報からPrintTicket形式の設定情報を作成する処理、及びPrintTicket形式の設定情報からDevmode形式の設定情報を作成する処理を含めて、設定情報を作成すると表現する場合がある。
さらに、本実施形態に係るプリンタドライバ303の設定情報管理部641は、状態情報632が、「有効」状態を示す場合、変更情報B631を用いて(反映させて)設定情報を作成する。また、設定情報管理部641は、状態情報632が、「無効」状態を示す場合、変更情報B631を用いないで(反映させないで)設定情報を作成する。
したがって、設定情報管理部641は、例えば、プリンタドライバ303のインストール作業中等には、変更情報B631の変更内容を設定情報に変更できるようになり、通常の使用時には、利用者が変更した設定情報等に影響を与えない。
設定能力情報管理部642は、プリンタドライバ303で設定可能な設定値を示す設定能力情報を管理する。プリンタドライバ303で設定可能な設定値には、例えば、用紙サイズ(A4、Letter、B5等)、両面(しない、長辺綴じ、短辺綴じ等)、集約(しない、2in1、4in1等)等が含まれる。
設定能力情報管理部642は、例えば、アプリケーション301、又はOS302から、プリンタドライバ303の設定能力情報の取得要求を受け付けた場合、取得要求の要求元に設定能力情報を提供する。
好ましくは、設定能力情報管理部642は、設定情報記憶部630に記憶された変更情報B631の変更内容を、設定能力情報に反映する。
排他設定制御部643は、PrintTicket形式の設定情報の中に、同時に設定することができない排他関係にある設定値が含まれている場合に、排他関係を解消するように設定値を変更する。
例えば、PrintTicket形式の設定情報に、用紙サイズ「B5」、給紙トレイ「トレイ2」が設定されており、トレイ2の用紙サイズが「A4」である場合、排他設定制御部643は、例えば、給紙トレイを「自動選択」に自動的に変更する。
拡張設定部313は、図4のデスクトップアプリ321から印刷を行う際に表示されるプリンタドライバ303の設定画面を表示する。拡張設定部313は、設定画面表示部651、設定変更部652、及び変更情報反映部653を含む。
設定画面表示部651は、プリンタドライバ303の印刷設定の設定画面を、表示装置102等に表示させる。
設定変更部652は、設定画面表示部651が表示させた印刷設定の設定画面を用いて、利用者が印刷設定を変更した場合、変更された設定を設定情報に反映する。
変更情報反映部653は、設定情報記憶部630に記憶されている変更情報B631を取得し、設定画面表示部651が表示する設定画面に反映させる。
ストアデバイスアプリ304は、図4のストアアプリ311から印刷を行う際に表示されるプリンタドライバ303の設定画面を表示する。ストアデバイスアプリ304は、設定画面表示部661、設定変更部662、及び変更情報反映部663を含む。なお、設定画面表示部661、設定変更部662、及び変更情報反映部663の機能は、拡張設定部313の拡張設定部313は、設定画面表示部651、設定変更部652、及び変更情報反映部653と同様である。
<V4プリンタドライバの基本的な処理の流れ>
本実施形態に係るプリンタドライバ303の処理について説明する前に、一般的なV4プリンタドライバの基本的な処理の概要について説明する。
(インストール処理)
図7は、一実施形態に係るV4プリンタドライバのインストール処理の例を示すシーケンス図である。この処理は、一般的なV4プリンタドライバのインストール時における設定制御部の処理の例を示している。なお、図7に示すインストーラ720は、一般的なV4プリンタドライバのインストーラであり、設定制御部730は、一般的なV4プリンタドライバの設定制御部であるものとする。
ステップS701において、例えば、利用者の操作等に応じて、インストーラ720は、V4プリンタドライバのインストールを要求するインストール要求を、OS302に通知する。
ステップS702において、OS302は、Devmode形式の設定情報からPrintTicket形式の設定情報への変換を、V4プリンタドライバの設定制御部730に要求する。
ステップS703において、設定制御部730は、Devmode構造体に記憶されたDevmode形式の設定情報から、PrintTicket形式の設定情報を作成する。
ステップS704において、設定制御部730は、作成したPrintTicket形式の設定情報を含む完了通知を、OS302に通知する。
ステップS705において、OS302は、通知されたPrintTicket形式の設定情報の排他処理を、設定制御部730に要求する。
ステップS706において、設定制御部730は、設定情報の排他処理を実行する。例えば、設定情報の中から同時に設定できない項目を抽出し、設定を変更する。
ステップS707において、設定制御部730は、排他処理をしたPrintTicket形式の設定情報を含む完了通知を、OS302に通知する。
ステップS708において、OS302は、PrintTicket形式の設定情報からDevmode形式の設定情報への変換を、設定制御部730に要求する。
ステップS709において、設定制御部730は、PrintTicket形式の設定情報から、Devmode形式の設定情報を作成する。
ステップS710において、設定制御部730は、作成したDevmode形式の設定情報を、Devmode構造体に保存する。
ステップS711において、設定制御部730は、完了通知をOS302に通知する。
ステップS712において、OS302は、インストールの完了通知をインストーラ720に通知する。
上記の処理により、クライアント装置10にインストールされたV4プリンタドライバの設定情報は、排他処理が行われ、設定情報の既定値として設定される。
(設定情報の設定処理)
図8は、一実施形態に係るV4プリンタドライバにおける設定情報の設定処理の例を示すシーケンス図である。この処理は、一般的なV4プリンタドライバにおける設定情報の設定処理の例を示している。
ステップS801において、利用者が、アプリケーション301に対して、印刷の設定操作を行う。
ステップS802において、アプリケーション301は、利用者による設定要求操作を受け付けると、ステップS803において、印刷設定の表示要求をOS302に通知する。
ステップS804において、OS302は、Devmode形式の設定情報からPrintTicket形式の設定情報への変換を、V4プリンタドライバの設定制御部730に要求する。
ステップS805において、設定制御部730は、Devmode構造体に記憶されたDevmode形式の設定情報を読み出す。
ステップS806において、Devmode形式の設定情報から、PrintTicket形式の設定情報を作成する。なお、ステップS806の処理は、図7のステップS703の処理に対応している。
ステップS807において、設定制御部730は、作成したPrintTicket形式の設定情報を含む完了通知を、OS302に通知する。
ステップS808において、OS302は、設定制御部730に設定能力情報(PrintCapabilities)の作成を要求する。
ステップS809において、設定制御部730は、PrintCapabilities形式の設定能力情報を作成する。
ステップS809において、設定制御部730は、作成したPrintCapabilities形式の設定能力情報を含む完了通知を、OS302に通知する。
ステップS811において、OS302は、UI部305に設定画面の表示を指示する。この設定画面の表示の指示には、PrintTicket形式の設定情報と、PrintCapabilities形式の設定能力情報とが含まれる。
なお、UI部305は、アプリケーション301が、ストアアプリ311の場合は、ストアデバイスアプリ304であり、アプリケーション301が、デスクトップアプリ321である場合は、拡張設定部313である。
ステップS812において、UI部305は、現在の設定値であるPrintTicket形式の設定情報と、設定可能な設定値を示すPrintCapabilities形式の設定能力情報とを用いて、設定情報の設定画面を表示装置102等に表示させる。
ステップS813において、利用者は、設定情報の変更操作(変更操作)を行う。
ステップS814において、UI部305は、利用者の設定操作に応じてPrintTicket形式の設定情報を変更する。
ステップS815において、UI部305は、変更されたPrintTicket形式の設定情報を含む完了通知を、OS302に通知する。
ステップS816において、OS302は、変更されたPrintTicket形式の設定情報から、Devmode形式の設定情報への変換を要求する。
ステップS817において、設定制御部730は、変更されたPrintTicket形式の設定情報から、Devmode形式の設定情報を作成する。
ステップS818において、設定制御部730は、作成したDevmode形式の設定情報を、保存する。なお、ステップS817、S818の処理は、図7のステップS709、S710の処理に対応している。
ステップS819、S820において、設定制御部730から、OS302、アプリケーション301に完了通知が通知される。
(印刷処理)
図9は、一実施形態に係るV4プリンタドライバにおける印刷処理の概要を示すシーケンス図である。この処理は、一般的なV4プリンタドライバにおける印刷処理の概要のイメージを示している。実際の印刷時には、これ以外にも様々な処理が実行される。なお、描画部920は、一般的なV4プリンタドライバの描画部を示すものとする。
ステップS901において、アプリケーション301は、利用者の印刷操作を受け付けると、ステップS902において、印刷要求をOS302に通知する。
ステップ903において、OS302は、Devmode形式の設定情報からPrintTicket形式の印刷情報への変換を要求する。
ステップS904において、設定制御部730は、Devmode形式の設定情報を読み出しする。
ステップS905において、設定制御部730は、Devmode形式の設定情報から、PrintTicket形式の設定情報を作成する。
ステップS806において、設定制御部730は、作成したPrintTicket形式の設定情報を含む完了通知を、OS302に通知する。
ステップS907において、OS302は、印刷対象データから印刷データの生成を要求する描画命令を描画部920に通知する。この通知には、例えば、PrintTicket形式の設定情報が含まれる。
ステップS908において、描画部920は、印刷データを生成し、ステップS909において、生成した印刷データをOS302に通知する。
ステップS910において、OS302は、描画部920から受け付けた印刷データを画像形成装置20に送信する。
ステップS911において、画像形成装置20は、印刷データの印刷を実行し、印刷が完了すると、ステップS912において、完了通知をOS302に通知する。
図7から9に示すように、V4プリンタドライバの設定情報は、Devmode形式で保存されており、V4プリンタドライバの処理はPrintTicket形式で行われる。したがって、V4プリンタドライバでは、例えば、図7のステップS703、S709に示すような設定情報の作成処理が頻繁に実行される。
<処理の詳細>
続いて、本実施形態に係るクライアント装置10、インストーラ610、及びプリンタドライバ303による情報処理方法の流れについて説明を行う。
[第1の実施形態]
図10Aは、第1の実施形態に係るプリンタドライバのインストール処理の例を示すフローチャートである。なお、図10Aに示す処理の開始時点において、設定情報記憶部630の状態情報632は、既定の状態である「無効」状態に設定されているものとする。
なお、状態情報632は、現在の状態が、変更情報B631を用いた設定情報の作成を禁止する「無効」状態(第1の状態)であるか、変更情報B631を用いた設定情報の作成を許可する「有効」状態(第2の状態、所定の状態)であるかを示している。
前述したように、状態情報632は、通常は「無効」状態(設定値0)となっており、設定情報記憶部630に記憶した変更情報B631を、設定情報に反映させるとき(例えば、インストーラ610の動作中等)に、「有効」(設定値1)に設定される。
設定制御部730は、状態情報632が「有効」であるか、「無効」であるかを参照することにより、変更情報B631を設定情報に反映させて良いか否かを判断することができる。これにより、設定制御部730は、状態情報632が「無効」状態である場合、変更情報B631の設定情報への反映を行わないので、例えば、ユーザが意図的に変更した設定情報に対して、変更情報B631を反映させないように制御することができる。本実施形態では、インストール時に変更情報を反映させた後に、インストーラ610の状態情報管理部614がこの状態情報632を「無効」に設定することにより、この制御を実現している。
ステップS1001において、インストーラ610のインストール部611は、クライアント装置10にプリンタドライバ303をインストールし、例えば、図7に示すようなV4プリンタドライバのインストール処理を開始させる。
ステップS1002において、プリンタドライバ303の設定制御部323は、OS302によって呼び出され、設定情報記憶部630の状態情報632が、「有効」状態であるか、「無効」状態であるかを判断する。
状態情報632が「有効」状態である場合、設定制御部323は、処理をステップS1008に移行させる。一方、状態情報632が「無効」状態である場合、設定制御部323は、処理をステップS1003に移行させる。
ここでは、前述したように状態情報632が「無効」状態に設定されているので、設定制御部323は、処理をステップS1003に移行させる。
ステップS1003に移行すると、プリンタドライバ303の設定制御部323は、変更情報を用いないで(反映させないで)設定情報を作成する。例えば、設定制御部323は、図7のステップS703〜S710の処理を実行する。このステップS1003により、図7に示す一般的なV4プリンタドライバのインストール処理が完了する。
ステップS1004において、インストーラ610の変更情報取得部612は、変更情報記憶部620から、変更情報A621を取得する。なお、変更情報取得部612は、変更情報記憶部620に変更情報A621が記憶されていない場合、例えば、処理を終了させる。
ステップS1005において、インストーラ610の変更情報保存部613は、変更情報取得部612が取得した変更情報A621を、設定情報記憶部630に保存する。このとき、設定情報記憶部630に保存された変更情報を、以下の説明の中で、変更情報B631と呼ぶ。この変更情報B631は、ステップS1008において、設定情報を作成するときに用いられる。
なお、設定情報記憶部630に保存された変更情報B631の保存場所は、ステップS1001においてプリンタドライバ303をインストールしたときの論理プリンタ名(プリンタアイコン名)から特定することができる。
ステップS1006において、インストーラ610の状態情報管理部614は、設定情報記憶部630の状態情報632を、「無効」状態から「有効」状態に変更する。なお、状態情報管理部614は、ステップS1003、S1004の処理を実行する前に、設定情報記憶部630の状態情報632を、「無効」状態から「有効」状態に変更するものであっても良い。要するに、状態情報管理部614は、変更情報保存部613が変更情報A621を設定情報記憶部630に保存するときに、設定情報記憶部630に含まれる状態情報632を「有効」状態(所定の状態)に設定するものであれば良い。
ステップS1007において、インストーラ610の設定情報変更部615は、プリンタドライバ303に、設定情報の取得を要求する。これにより、OS302は設定制御部323を呼び出すようになる。
ステップS1002において、プリンタドライバ303の設定制御部323は、設定情報記憶部630の状態情報632が、「有効」状態であるか、「無効」状態であるかを判断する。
ここでは、ステップS1006において、状態情報632は「有効」に設定されているので、設定制御部323は、処理をステップS1008に移行させる。
ステップS1008に移行すると、プリンタドライバ303の設定制御部323は、設定情報記憶部630に記憶された変更情報B631を用いて(反映させて)、設定情報を作成する。
図11は、第1の実施形態に係る変更前の設定情報のイメージを示す図である。図11に示す変更前の設定情報1100には、カラー設定1101、用紙サイズ1102、両面1130、用紙種類1104、及び集約1105の設定情報が含まれている。
変更前の設定情報1100では、表1に示すように、カラー設定1101が「カラー("psk:Color")」、用紙サイズ1102が「A4("psk:ISOA4")、両面1130が「しない("psk:none")」に設定されている。また、変更前の設定情報1100では、用紙種類1104が「普通紙("psk:Plain")」、集約1105が「しない("xsd:integer">1)」に設定されている。
図12は、第1の実施形態に係る変更情報のイメージを示す図である。図12に示す変更情報1200において、「item name」は、各機能(機能の名称)を示している。例えば、「item name="mediatype"」は用紙設定、「item name="duplex"」は両面、「item name="colorbw"」はカラー/モノクロ設定、「item name="layout"」を示している。
また、「default」は、既定の設定値(デフォルト値)を指定された値に変更することを示している。例えば、「item name="mediatype" default="special"」は、用紙設定のデフォルト値を、特殊紙に設定することを示している。
さらに、「hidden」は、プリンタドライバ303のUI画面に設定項目を表示しないことを示している。例えば、「item name="duplex" hidden="yes"1」は、UI画面に、両面の設定項目を表示しないことを示している。
また、「fixvalue」は、設定値を指定された値に固定して、設定値の変更を許可しないことを示している。例えば、「item name="colorbw" fixvalue="blackandwhite"」は、カラー/モノクロ設定の設定値を、モノクロに固定することを示している。
さらに、「pickone」は、設定項目の選択肢を、「pickone name」で指定された選択肢のみに制限することを示している。例えば、「item name="layout" pickone name="2pagepersheet" pickone name="4pagepersheet"」は、集約の設定値の選択肢を、2in1と4in1に限定することを示している。
図12の例では、変更情報1200には、「用紙種類(mediatype)の既定値を特別紙(special)に設定する」変更情報1201、「両面(duplexx)のUI表示をしない(hidden"yes")に設定する」変更情報1202が含まれている。さらに、変更情報1200には、「カラー/モノクロ設定(colorbw)を、モノクロ固定(fixvalue="blackandwhite")に設定する」変更情報1203、「集約(layout)の選択肢を、2in1/4in1("2pagespersheet" / "4pagespersheet")に限定する」変更情報1204等が含まれている。
なお、「hidden」は、プリンタドライバ303のUI画面にその機能を表示しないことを示すものであり、その機能を利用できないようにするためのものではない。したがって、図12に示す変更情報1200の例では、プリンタドライバ303のUI画面では両面設定の設定値を変更することはできないが、アプリケーション301から設定情報を用いて両面設定の設定値を変更して印刷することは可能である。
これに対して「fixvalue」は、設定値を固定することを示すものであり、アプリケーション301からの設定の変更も禁止される。
図13は、第1の実施形態に係る変更情報を反映した設定情報のイメージを示す図である。図13に示す変更情報を反映した設定情報1300は、図11に示す変更前の設定情報1100から、図12に示す変更情報1200により、カラー設定1301、用紙種類1302、及び集約1303の設定が変更されている。
例えば、図13に示す変更情報を反映した設定情報1300では、カラー設定1301は、「カラー("psk:Color")」から「白黒("psk:Monochrome")」に変更されている。また、用紙種類1302が、「普通紙("psk:Plain")」から「特別紙("ns0000:Special")」に変更されている。さらに、集約1303が、「しない("xsd:integer">1)」から、「2in1("xsd:integer">2)」に変更されている。
なお、図12に示す変更情報1200のうち、「両面(duplexx)のUI表示をしない(hidden"yes")に設定する」変更情報1202は、UIに関する変更情報なので、設定情報1300には反映されていない。
このように、図10AのステップS1008において、プリンタドライバ303の設定制御部323は、変更前の設定情報1100に対して、変更情報1200を用いて(反映させて)、変更後の設定情報1300を作成する。
ステップS1009において、インストーラ610の設定情報変更部615は、プリンタドライバ303の設定制御部323が、変更情報B631を反映して作成した設定情報を、プリンタドライバ303の設定情報の既定値として設定する。例えば、設定情報変更部615は、OS302によって提供される、プリンタドライバ303のデフォルト設定を変更するAPIに、変更情報B631を反映した作成した設定情報を渡すことにより、プリンタドライバ303の設定情報の既定値を変更する。
ステップS1010において、インストーラ610の状態情報管理部614は、設定情報記憶部630の状態情報632を、「無効」状態に設定する。
(インストール処理のシーケンス図)
図10B、10Cは、第1の実施形態に係るプリンタドライバのインストール処理の例を示すシーケンス図である。この処理は、図10Aに示したプリンタドライバのインストール処理に対応している。
ステップS1021において、インストーラ610のインストール部611は、クライアント装置10(OS302)にプリンタドライバ303をインストールする。この処理は、図9のステップS1001の処理に対応している。
ステップS1022において、OS302は、Devmode形式の設定情報からPrintTicket形式の設定情報への変換を、プリンタドライバ303の設定制御部323に要求する。例えば、OS302は、予め用意されたAPI(convertDevModeToPrintTicket)等を用いて、DEVMODE形式の設定情報からPrintTicket形式の設定情報への変換を要求する。
ステップS1023において、設定制御部323は、設定情報記憶部630から状態情報632を取得する。このとき、状態情報632は「無効」に設定されているものとする。
ステップS1024において、設定制御部323は、設定情報記憶部630から変更情報B631を取得する。このとき、設定情報記憶部630には、変更情報B631が記憶されていないものとする。
ステップS1025において、設定制御部323は、DevmodePropertyBagから、Devmode形式の設定情報を読出する。
なお、DevmodePropertyBagは、OS302によって管理されている記憶領域である。例えば、設定制御部323は、DevmodePropertyBagから、DEVMODE構造体に記憶された、プリンタドライバ303のDevmode形式の設定情報を取得することができる。また、設定制御部323が、DevmodePropertyBagに記憶されたDevmode形式の設定情報に変更を加えると、その変更内容が、OS302によってDEVMODE構造体に反映される。
ステップS1026において、設定制御部323は、読出したDevmode形式の設定情報から、PrintTicket形式の設定情報を作成する。
ステップS1027において、設定制御部323は、作成したPrintTicket形式の設定情報を含む完了通知を、OS302に通知する。
ステップS1028において、OS302は、通知されたPrintTicket形式の設定情報の排他処理を、設定制御部323に要求する。例えば、OS302は、予め用意されたAPI(ValidatePrintTicket)を用いて、PrintTicket形式の設定情報の排他処理を、設定制御部730に要求する。
ステップS1029において、設定制御部323は、設定情報の排他処理を実行する。例えば、設定制御部323は、PrintTicket形式の設定情報の中から、利用可能でない設定項目や設定値を、変更、又は削除して、利用可能な設定情報を作成する。
ステップS1030において、設定制御部323は、排他処理を行ったPrintTicket形式の設定情報を含む完了通知を、OS302に通知する。なお、以下の説明の中で、ステップS1028〜S1030の処理を、「設定情報の排他処理1061」と呼ぶ場合がある。
ステップS1031において、OS302は、PrintTicket形式の設定情報からDevmode形式の設定情報への変換を、設定制御部323に要求する。例えば、OS302は、予め用意されたAPI(converPrintTicketToDevmode)等を用いて、PrintTicketの設定情報からDEVMODE形式の設定情報への変換を要求する。
ステップS1032において、設定制御部323は、PrintTicketから設定情報を抽出し、ステップS1033において、設定制御部323は、抽出した設定情報をDevmodePropertyBagに保存する。
ステップS1034において、設定制御部323は、OS302に完了通知を通知する。なお、以下の説明の中で、ステップS1031〜S1034の処理を、「Devmode形式への変換処理1062」と呼ぶ場合がある。
ステップS1035において、OS302は、DevmodePropertyBagの変更内容を、DEVMODE構造体に反映し、ステップS1036において、インストーラ610に完了通知を通知する。なお、上記のステップS1022〜S1036の処理は、図10AのステップS1003の処理に対応している。
続いて、図10CのステップS1037において、インストーラ610の変更情報取得部612は、変更情報記憶部620から、変更情報A621を読出する。なお、この処理は、図10AのステップS1004の処理に対応している。
ステップS1038において、インストーラ610の変更情報保存部613は、変更情報取得部612が読出した変更情報A621を、設定情報記憶部630に記憶する。以後、設定情報記憶部630に記憶された変更情報を、変更情報記憶部620に記憶された変更情報A621と区別するため、変更情報B631と呼ぶ。なお、この処理は、図10AのステップS1005の処理に対応している。
ステップS1039において、インストーラ610の状態情報管理部614は、設定情報記憶部630の状態情報632を「有効」(所定の状態)に設定する。なお、この処理は、図10AのステップS1006の処理に対応している。
ステップS1040において、インストーラ610の設定情報変更部615は、OS302に対して、Devmode形式の設定情報の取得を要求する。なお、この処理は、図10AのステップS1007の処理に対応している。
ステップS1041において、OS302は、Devmode形式の設定情報の取得要求に応じて、Devmode形式の設定情報からPrintTicket形式の設定情報への変換を、プリンタドライバ303の設定制御部323に要求する。例えば、OS302は、予め用意されたAPI(convertDevModeToPrintTicket)等を用いて、DEVMODE形式の設定情報からPrintTicket形式の設定情報への変換を要求する。
ステップS1042において、設定制御部323は、設定情報記憶部630から状態情報632を取得する。このとき、状態情報632は、ステップS1039において「有効」に設定されている。
ステップS1043において、設定制御部323は、設定情報記憶部630から変更情報B631を取得する。このとき、設定情報記憶部630には、ステップS1038において、変更情報B631が記憶されている。
ステップS1044において、設定制御部323は、DevmodePropertyBagから、設定情報を読出する。
ステップS1045において、設定制御部323は、ステップS1044で読出した設定情報に、ステップS1043で取得した変更情報を反映させて、PrintTicket形式の設定情報を作成する。なお、この処理は、図10AのステップS1008の処理に対応している。
ステップS1046において、設定制御部323は、作成したPrintTicket形式の設定情報を含む完了通知を、OS302に通知する。
ステップS1047において、OS302、及び設定制御部323は、図10BのステップS1028〜S1030に示すような設定情報の排他処理1061を実行する。
ステップS1048において、OS302、及び設定制御部323は、図10BのステップS1031〜S1034に示すようなDevmode形式への変換処理1062を実行する。
ステップS1049において、OS302は、Devmode形式の設定情報を含む完了通知をインストーラ610に通知する。
ステップS1050において、インストーラ610の設定情報変更部615は、完了通知に含まれているDevmode形式の設定情報を、プリンタドライバ303の設定情報の既定値として設定する。例えば、設定情報変更部615は、OS302によって提供される所定のAPIを用いて、設定情報の既定値の設定を要求する。なお、この処理は、図10AのステップS1009の処理に対応している。
ステップS1051において、OS302は、設定情報の既定値の設定を完了したことを示す完了通知をインストーラ610に通知する。
ステップS1052において、インストーラ610の状態情報管理部614は、設定情報記憶部630の状態情報632を、「無効」状態に設定する。なお、この処理は、図10AのステップS1010の処理に対応している。
上記の処理により、V4プリンタドライバ303のインストール時等に、変更情報記憶部620に記憶した変更情報A621を、プリンタドライバ303の設定情報の既定値に容易に反映させることができるようになる。
なお、図10Aに示す処理では、ステップS1001〜S1003で、例えば、図7に示すV4プリンタドライバのインストール処理が完了した後、すぐに、ステップS1004以降で、変更情報の反映処理を実行している。ただし、この処理は、一例であり、ステップS1004以降の変更情報の反映処理は、V4プリンタドライバのインストールが終了した後、任意のタイミングで実行させることができる。
[第2の実施形態]
図14は、第2の実施形態に係るプリンタドライバのインストール処理の例を示すフローチャートである。第1の実施形態では、例えば、図7に示すようなV4プリンタドライバのインストールが終了した後で、設定情報記憶部630に記憶された変更情報B631を、設定情報の既定値に反映させていた。
第2の実施形態では、V4プリンタドライバのインストール処理の中で、設定情報記憶部630に記憶された変更情報B631を、設定情報の既定値に反映させる場合の例について説明を行う。
図14は、第2の実施形態に係るプリンタドライバのインストール処理の例を示すフローチャートである。なお、本実施形態においても、図14に示す処理の開始時点において、設定情報記憶部630の状態情報632は、既定の状態である「無効」状態に設定されているものとする。
ステップS1401において、インストーラ610の変更情報取得部612は、変更情報記憶部620から、変更情報A621を取得する。
ステップS1402において、インストーラ610の変更情報保存部613は、変更情報取得部612が取得した変更情報A621を、設定情報記憶部630に保存する。
このとき、変更情報保存部613は、変更情報取得部612が取得した変更情報A621を、設定情報記憶部630に保存するために、これからインストールするプリンタドライバ303の論理プリンタ名(プリンタアイコン名)を推定する。
例えば、設定情報記憶部630がQueuePropertyBag420である場合、QueuePropertyBag420は具体的には以下のレジストリである。
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Print\Printers\(論理プリンタ名)\QueueProperties
このレジストリ(QueuePropertyBag420)は、本来はプリンタドライバ303をインストールするときに自動的に作成されるものであるが、インストール前に作成した場合でも、レジストリの内容をインストール時に読出すことが可能である。ただし、このレジストリの(論理プリンタ名)の部分は、OS302によってインストール時に変更されるので、変更情報保存部613は、この(論理プリンタ名)の部分を推定する必要がある。
例えば、OS302がWindowsである場合、既に存在する倫理プリンタ名(例えば、「○○ Printer Driver」)でプリンタドライバ303をインストールすると、以下に示すように、論理プリンタ名が変更される。
日本語OSの場合:「○○ Printer Driver (コピー1)」
英語OSの場合:「○○ Printer Driver (Copy 1)」
このとき、変更される論理プリンタ名の変更ルールは、OS302によって異なるので、インストーラ610の変更情報保存部613は、プリンタドライバ303をインストールする環境に合わせて、(論理プリンタ名)の部分を推定(特定)する。また、変更情報保存部613は、変更情報取得部612が取得した変更情報A621を、例えば、推定した論理プリンタ名に対応するレジストリ等に保存する。
このとき、設定情報記憶部630に保存された変更情報を、以下の説明の中で、変更情報B631と呼ぶ。
ステップS1403において、インストーラ610の状態情報管理部614は、設定情報記憶部630の状態情報632を、「有効」状態に変更する。
ステップS1404において、インストーラ610のインストール部611は、クライアント装置10にプリンタドライバ303をインストールし、例えば、図7に示すようなV4プリンタドライバのインストール処理を開始させる。
なお、状態情報管理部614は、ステップS1404の処理の実行した後に、ステップS1403の処理を実行するものであっても良い。要するに、状態情報管理部614は、インストール部611がプリンタドライバ303のインストールを開始するときに、設定情報記憶部630に含まれる状態情報632を「有効」状態(所定の状態)に設定するものであれば良い。
ステップS1405において、プリンタドライバ303の設定制御部323は、OS302によって呼び出され、設定情報記憶部630の状態情報632が、「有効」状態であるか、「無効」状態であるかを判断する。
状態情報632が「有効」状態である場合、設定制御部323は、処理をステップS1406に移行させる。一方、状態情報632が「無効」状態である場合、設定制御部323は、処理をステップS1407に移行させる。
ここでは、ステップS1403において、状態情報632が「有効」状態に設定されているので、設定制御部323は、処理をステップS1406に移行させる。
なお、設定制御部323は、例えば、図8示す設定情報の変更処理、又は図9に示す印刷処理等でも、OS302に呼び出されるので、ステップS1405に示す判断処理、及びステップS1407に示す変更情報を反映しない設定情報の設定処理が、必要になる。これは、利用者が意図的に変更した設定情報を、変更情報で変更してしまうことを防止するためである。
ステップS1406に移行すると、プリンタドライバ303の設定制御部323は、設定情報記憶部630に記憶された変更情報B631を用いて(反映させて)設定情報を作成する。例えば、設定制御部323は、図7に示すV4プリンタドライバのインストール処理のステップS703からS710の処理を実行する。また、設定制御部323は、ステップS703でDevmode形式の設定情報から、PrintTicket形式の設定情報を作成する際に、変更情報B631を用いて(反映させて)設定情報を作成する。なお、設定情報への変更情報への反映方法は、図11〜13を用いて説明した第1の実施形態と同様である。
この処理により、変更情報B631を用いて作成された設定情報が、プリンタドライバ303の設定情報の既定値として、Devmode形式の設定情報で保存される。
ステップS1408において、インストーラ610の状態情報管理部614は、設定情報記憶部630の状態情報632を、「無効」状態に設定する。
上記の処理により、例えば、図7に示すようなV4プリンタドライバのインストール処理中に、変更情報を、プリンタドライバ303の設定情報の既定値に反映させることができるようになる。
<変更情報の設定能力情報への反映>
第1、2の実施形態では、変更情報を、プリンタドライバ303の設定情報の既定値に反映する処理の例について説明を行った。
さらに、プリンタドライバ303の設定制御部323は、設定情報記憶部630に記憶された変更情報B631を、プリンタドライバ303で設定可能な設定値を示す設定能力情報に反映する設定能力情報管理部642を有している。ここでは、設定能力情報管理部642による、変更情報B631の設定能力情報への反映について、具体的な一例を示して説明する。
図15は、一実施形態に係る変更前の設定能力情報のイメージを示す図である。設定能力情報1500は、プリンタドライバ303が設定可能な印刷設定値の一覧を、XML形式のデータで表す情報である。
図15に示す設定能力情報1500は、プリンタドライバ303の設定能力情報のうち、集約(psk:JobNUpAllDocumentsContiguously)に関する設定項目1501を抜粋したものである。
プリンタドライバ303は、集約に関する設定項目1501の既定値として、図15に示すように、「集約しない(1/1)」1502、「2in1」1503、「4in1」1504、及び「9in1」の4つの選択肢を有している。
一方、図12に示す変更情報1200には、「集約(layout)の選択肢を、2in1/4in1("2pagespersheet" / "4pagespersheet")に限定する」変更情報1204が含まれている。
この場合、設定能力情報管理部642は、図15に示す設定能力情報1500に、図12に示す変更情報1200を反映して、図16に示すような変更後の設定能力情報1600を作成する。
なお、図15に示す設定能力情報1500、及び図16に示す設定能力情報1600は、PrintCapabilities形式の設定能力情報である。
図16は、一実施形態に係る変更情報を反映した設定能力情報のイメージを示す図である。図16に示す変更後の設定能力情報1600では、集約に関する設定項目1501の選択肢が、「2in1」1503、及び「4in1」1504の2つに変更されている。
上記のように、プリンタドライバ303の設定制御部323に含まれる設定能力情報管理部642は、設定情報記憶部630に記憶された変更情報B631を、プリンタドライバ303の設定能力情報に反映させる。したがって、アプリケーション301は、設定能力情報を参照し、変更情報B631によって変更されたプリンタドライバ303の設定能力情報を認識することができるようになる。
<変更情報の設定画面への反映>
プリンタドライバ303の拡張設定部313は、設定情報記憶部630に記憶された変更情報B631を、拡張設定部313が表示させる印刷の設定情報の設定画面に反映させる変更情報反映部653を有している。
また、ストアデバイスアプリ304は、設定情報記憶部630に記憶された変更情報B631を、ストアデバイスアプリ304が表示させる印刷の設定情報の設定画面に反映させる変更情報反映部663を有している。
なお、ストアデバイスアプリ304の変更情報反映部663の処理内容は、拡張設定部313の変更情報反映部653の処理内容と同様なので、ここでは、拡張設定部313の変更情報反映部653について説明を行う。
図17は、一実施形態に係る設定画面のイメージを示す図である。
図17(a)は、プリンタドライバ303の拡張設定部313に含まれる設定画面表示部651が、表示させる設定画面1710の一例のイメージを示している。図17(a)のに示す変更前の設定画面1710には、用紙サイズ1711、カラー設定1712、両面1713、集約1714、及び用紙種類1715の設定項目が含まれる。また、各設定項目の既定値が黒丸で示されている。例えば、用紙サイズ1711の既定値は「A4」、カラー設定1712の既定値は「カラー」、両面1713の既定値は「しない」、集約1714の既定値は「しない」、用紙種類1715の既定値は「普通紙」に設定されている。
一方、図12に示す変更情報1200には、「用紙種類(mediatype)の既定値を特別紙(special)に設定する」変更情報1201、「両面(duplexx)のUI表示をしない(hidden"yes")に設定する」変更情報1202が含まれている。
さらに、変更情報1200には、「カラー/モノクロ設定(colorbw)を、モノクロ固定(fixvalue="blackandwhite")に設定する」変更情報1203、「集約(layout)の選択肢を、2in1/4in1("2pagespersheet" / "4pagespersheet")に限定する」変更情報1204等が含まれている。
この場合、変更情報反映部653は、例えば、図17(a)に示されるような変更前の設定画面1710に、図12に示すような変更情報1200を反映し、設定画面表示部651に、図17(b)に示すような変更後の設定画面1720を表示させる。
例えば、図17(b)に示す変更後の設定画面1720において、用紙種類1715の既定値は、「用紙種類(mediatype)の既定値を特別紙(special)に設定する」変更情報1201が反映され、「特別紙」に変更されている。
また、変更後の設定画面1720では、カラー設定1712の設定値は、「カラー/モノクロ設定(colorbw)を、モノクロ固定(fixvalue="blackandwhite")に設定する」変更情報1203が反映され、モノクロに固定されている。
さらに、変更後の設定画面1720では、「両面(duplexx)のUI表示をしない(hidden"yes")に設定する」変更情報1202が反映され、変更前の設定画面1710に表示されていた両面1713の設定項目が非表示となっている。
さらにまた、変更後の設定画面1720において、集約1714の設定項目は、「集約(layout)の選択肢を、2in1/4in1("2pagespersheet" / "4pagespersheet")に限定する」変更情報1204が反映され、選択肢が2in1/4in1のみとなっている。
上記のように、プリンタドライバ303の拡張設定部313に含まれる変更情報反映部653は、設定情報記憶部630に記憶された変更情報B631を、拡張設定部313が表示する設定情報の設定画面に反映させることができる。
同様に、ストアデバイスアプリ304に含まれる変更情報反映部663は、設定情報記憶部630に記憶された変更情報B631を、ストアデバイスアプリ304が表示する設定情報の設定画面に反映させることができる。
なお、図6に示すクライアント装置10の機能構成は一例である。例えば、インストーラ610に含まれる各機能構成の少なくとも一部は、プリンタドライバ303に含まれていても良い。
また、クライアント装置10は、プリンタドライバ303がインストールされる情報処理装置の一例である。プリンタドライバ303がインストールされる情報処理装置は、例えば、図1に示すサーバ装置30等であっても良い。
[第3の実施形態]
第1、2の実施形態では、インストーラ610の状態情報管理部614は、状態情報632を設定情報記憶部630に記憶して管理していた。第3の実施形態では、インストーラ610の状態情報管理部614が、状態情報をPrintTicket(設定情報)に設定する場合の例について説明する。
<機能構成>
図18は、第3の実施形態に係るクライアント装置の機能構成の例を示す図である。第3の実施形態に係るクライアント装置10の機能構成は、基本的に図6に示す一実施形態に係るクライアント装置10の機能構成と同様である。
ただし、第3の実施形態では、インストーラ610の状態情報管理部614は、現在の状態を示す状態情報を、設定情報記憶部630ではなく、メモリ1801上のPrintTicket1802の中に設定する。
メモリ1801は、例えば、クライアント装置10のRAM104、HDD108等によって実現される記憶領域である。
OS管理領域1803は、例えば、クライアント装置10のRAM104、HDD108等によって実現される記憶領域のうち、OS302が管理する記憶領域(例えば、レジストリ等)である。OS302は、例えば、OS管理領域1803に記憶されるDEVMODE構造体(以下、DEVMODEと呼ぶ)1804に設定情報の既定値(デフォルト値)を記憶して管理する。これは、第1、2の実施形態でも同様である。
<処理の流れ>
続いて、第3の実施形態に係る情報処理方法の処理の流れについて説明する。
(インストール処理のシーケンス図)
図19A、19Bは、第3の実施形態に係るプリンタドライバのインストール処理の例を示すシーケンス図である。なお、ここでは、図19A、19Bに示す処理のうち、図10B、10Cに示した第1の実施形態に係るプリンタドライバのインストール処理と同様の処理に対する詳細な説明は省略し、第1の実施形態との相違点を中心に説明を行う。
ステップS1901において、インストーラ610のインストール部611は、クライアント装置10のOS302にプリンタドライバ303をインストールする。
ステップS1902において、OS302は、Devmode形式の設定情報からPrintTicket形式の設定情報への変換を、プリンタドライバ303の設定制御部323に要求する。
ステップS1903において、設定制御部323は、設定情報記憶部630から変更情報B631を取得する。このとき、設定情報記憶部630には、変更情報B631が記憶されていないものとする。
ステップS1904において、設定制御部323は、DevmodePropertyBagから、Devmode形式の設定情報を読出する。
ステップS1905において、設定制御部323は、読出したDevmode形式の設定情報から、PrintTicket形式の設定情報(以下、「PrintTicket」と呼ぶ)を作成する。
ステップS1906において、設定制御部323は、作成したPrintTicketを含む完了通知を、OS302に通知する。
ステップS1907において、OS302は、通知されたPrintTicketの排他処理を、設定制御部323に要求する。
ステップS1908において、設定制御部323は、設定情報の排他処理を実行する。例えば、設定制御部323は、PrintTicketの中から、利用可能でない設定項目や設定値を、変更、又は削除して、利用可能な設定情報を作成する。
ステップS1909において、設定制御部323は、排他処理を行ったPrintTicketを含む完了通知を、OS302に通知する。
ステップS1910において、OS302は、PrintTicketからDevmode形式の設定情報への変換を、設定制御部323に要求する。
ステップS1911において、設定制御部323は、PrintTicketから、状態情報を取得する。このとき、PrintTicketには、状態情報が含まれていないか、「無効」状態を示す状態情報が含まれているものとする。
ステップS1912において、設定制御部323は、PrintTicketから設定情報を抽出し、ステップS1913において、設定制御部323は、抽出した設定情報をDevmodePropertyBagに保存する。
ステップS1914において、設定制御部323は、OS302に完了通知を通知する。
ステップS1915において、OS302は、DevmodePropertyBagの変更内容を、DEVMODE1804に反映し、ステップS1916において、インストーラ610に完了通知を通知する。なお、以下の説明の中で、ステップS1911〜S1915の処理を、「設定情報の更新処理1940」と呼ぶ場合がある。
続いて、図19BのステップS1917において、インストーラ610の変更情報取得部612は、変更情報記憶部620から、変更情報A621を読出する。
ステップS1918において、インストーラ610の変更情報保存部613は、変更情報取得部612が読出した変更情報A621を、設定情報記憶部630に記憶する。以後、設定情報記憶部630に記憶された変更情報を、変更情報B631と呼ぶ。
続いて、インストーラ610は、PrintTicketに、「有効」状態であることを示す状態情報を設定するために、ステップS1919〜S1926の処理を実行する。
ステップS1919において、インストーラ610の状態情報管理部614は、OS302に対して、PrintTicket形式の設定情報の取得を要求する。例えば、状態情報管理部614は、予め定められたAPI(PTConvertDevModeToPrintTicket)等を用いて、OS302にPrintTicket形式の設定情報の取得を要求する。
ステップS1920において、OS302は、PrintTicket形式の設定情報の取得要求に応じて、Devmode形式の設定情報からPrintTicket形式の設定情報への変換を、設定制御部323に要求する。
ステップS1921において、設定制御部323は、設定情報記憶部630から変更情報B631を取得する。このとき、設定情報記憶部630には、ステップS1918において、変更情報B631が記憶されている。
ステップS1922において、設定制御部323は、DevmodePropertyBagから、設定情報を読出する。
ステップS1923において、設定制御部323は、ステップS1922で読出した設定情報に、ステップS1921で取得した変更情報B631を反映させて、PrintTicket形式の設定情報(PrintTicket)を作成する。このとき、設定制御部323は、変更情報B631のうち、デフォルト値の変更以外の変更を、PrintTicketに反映させる。
図20は、一実施形態に係る変更情報の種類について説明するための図である。図20に示すように、変更情報には、「デフォルト値の変更」、「UIの非表示」、「設定値の固定」、「設定値の制限」等の種類がある。
「デフォルト値の変更」は、設定情報の既定値の変更を指示するための情報であり、例えば、図12に示す変更情報1200において、「devicesettings」の「default="special"」等の設定が「デフォルト値の変更」に該当する。この情報により、図12に示す変更情報1200の例では、「item name="mediatype"」(用紙種類)のデフォルト値が「special」(特殊紙)に変更される。
「UIの非表示」は、UIで表示しないことを指示するための情報であり、例えば、図12に示す変更情報1200において、「devicesettings」の「hidden="yes"」等の設定が、「UIの非表示」に該当する。この情報により、図12に示す変更情報1200の例では、「item name="duplex"」(両面)の設定項目が、UIに表示されなくなる。
「設定値の固定」は、設定値を固定することを指示するための情報であり、例えば、図12に示す変更情報1200において、「featurelock」の「fixvalue="blackandwhite"」等の設定が、「設定値の固定」に該当する。この情報により、図12に示す変更情報1200の例では、「item name="colorbw"」(カラー設定)の設定値が、「fixvalue="blackandwhite"」(モノクロ)に固定される。
「設定値の制限」は、設定値を制限することを指示するための情報であり、図12に示す変更情報1200において、「featurelock」の「pickone name="2pagespersheet"」、及び「pickone name="4pagespersheet"」等の設定が、「固定値の制限」に該当する。この情報により、図12に示す変更情報の例では、「item name="layout"」(集約)の選択肢が、「pickone name="2pagespersheet"」(2in1)、「pickone name="4pagespersheet"」(4in1)に制限される。
また、図20の「○」は、変更情報の設定を反映させることを示しており、「−」は、変更情報の設定を反映させないことを示している。例えば、「PrintTicket -> DEVMODE変換 状態情報が有効のとき」には、変更情報のうち、「デフォルト値の変更」、「設定値の固定」、及び「設定値の制限」が設定情報に反映される。また、「PrintTicket -> DEVMODE変換 状態情報が無効のとき」には、変更情報のうち、「設定値の固定」、及び「設定値の制限」が、設定情報に反映される。さらに、「PrintCapabilities を作成するとき」には、変更情報のうち、「設定値の固定」、及び「設定値の制限」が、設定情報に反映される。
また、UI部がUIを表示するときには、変更情報のうち、「UIの非表示」、「設定値の固定」、及び「設定値の制限」がUI画面の表示に反映されることが示されている。
ここで、図19Bに戻り、シーケンス図の説明を続ける。
ステップS1924において、設定制御部323は、作成したPrintTicketを含む完了通知を、OS302に通知する。ステップS1925において、OS302は、受付したPrintTicketを含む完了通知をインストーラ610に通知する。
ステップS1926において、インストーラ610の状態情報管理部614は、「有効」状態(所定の状態)であることを示す状態情報を、PrintTicket(設定情報)に設定する。
図21は、第3の実施形態に係るPrintTicketの例を示す図である。図21は、「有効」状態(所定の状態)であることを示す状態情報2101が設定されたPrintTicket2100の一例を示している。
図21に示す状態情報2101において、「ns0000:JobCustomSettingFlag」の部分が設定の名前を表し、「ns0000:On」の部分が「有効」状態を示す設定値を表している。なお、図21に示すPrintTicket2100のうち、状態情報2101以外の部分は、ステップS1923で作成されたPrintTicket形式の設定情報の一例である。
このように、本実施形態では、状態情報管理部614は、変更情報保存部613が変更情報を設定情報記憶部630に保存するとき(インストール時等)に、「有効」状態(所定の状態)を示す状態情報をPrintTicket(設定情報)に設定する。
ここで、再び図19Bに戻り、シーケンス図の説明をさらに続ける。
ステップS1927において、インストーラ610の設定情報変更部615は、OS302にDevmode形式の設定情報の取得を要求する。この設定情報の取得の要求には、「有効」状態であることを示す状態情報2101を含むPrintTicket2100が含まれる。
ステップS1928において、OS302は、PrintTicketから、Devmode形式の設定情報への変換を、設定制御部323に要求する。
ステップS1929において、設定制御部323は、PrintTicketから状態情報を取得する。このとき、状態情報は「有効」状態に設定されている。
ステップS1930において、設定制御部323は、設定情報記憶部630から変更情報B631を取得する。
ステップS1931において、設定制御部323は、PrintTicketから設定情報を抽出する。
ステップS1932において、設定制御部323は、抽出した設定情報に、変更情報(デフォルト値の変更を含む)を反映させて、DevmodePropertyBagに保存する。例えば、設定制御部323は、変更情報のうち、図20に示す「デフォルト値の変更」、「設定値の固定」、及び「設定値の制限」の情報を、設定情報に反映させる。
ステップS1933において、設定制御部323は、必要に応じて変更情報の妥当性を解決する。妥当性を解決する処理には、例えば、変更情報の中にサポートされていない機能や、デフォルト設定としてサポートされていない情報が含まれている場合に、その情報を無視(デフォルト設定を変更しない)処理等が含まれる。また、妥当性を解決する処理には、例えば、変更情報のデフォルト値として同時に選択できない2つの設定値が設定されていた場合に、一方の設定値を有効にする、或いは両方の設定値を無効にする等の処理が含まれる。このように、妥当性を解決する処理には、設定制御部323は、通常の動作では選択されない変更情報が含まれていた場合に、どのように変更情報を適用するかを決定する処理が含まれる。
ステップS1934において、設定制御部323は、Devmode形式の設定情報を含む完了通知をOS302に通知し、ステップS1935において、OS302は、通知された完了通知をインストーラ610に通知する。
ステップS1936において、インストーラ610の設定情報変更部615は、完了通知に含まれているDevmode形式の設定情報を、プリンタドライバ303の設定情報の既定値として設定する。例えば、設定情報変更部615は、OS302によって提供される所定のAPIを用いて、OS302に設定情報の既定値の設定を要求する。
ステップS1937において、OS302は、Devmode形式の設定情報を設定情報の既定値に設定し、設定が完了したことを示す完了通知をインストーラ610に通知する。
なお、本実施形態では、メモリ1801に一時的に記憶されるPrintTicket1802に、「有効」状態であることを示す状態情報を設定するため、状態情報を「無効」状態に戻す処理は不要になる。
以上、本実施形態においても、V4プリンタドライバのインストール時等に、外部の記憶領域に記憶された変更情報を、プリンタドライバの設定情報の既定値に容易に反映させることができるようになる。
(設定情報の設定処理)
図22は、一実施形態に係る設定情報の設定処理の例を示すシーケンス図である。この処理は、第1〜3の実施形態に係るプリンタドライバのインストール処理により、クライアント装置10にプリンタドライバ303がインストールされた後に実行される処理の一例を示している。
ステップS2201において、アプリケーション301は、ユーザの印刷の設定操作等に応じて、印刷設定の表示要求をOS302に通知する。
ステップS2202において、OS302は、Devmode形式の設定情報からPrintTicket形式の設定情報への変換を、プリンタドライバ303の設定制御部323に要求する。
ステップS2203において、設定制御部323は、DevmodePropertyBagから、Devmode形式の設定情報を読出する。
ステップS2204において、設定制御部323は、設定情報記憶部630から変更情報B631を取得する。
ステップS2205において、設定制御部323は、読出した設定情報に、取得した変更情報を反映してPrintTicket形式の設定情報(PrintTicket)を作成する。このとき、設定制御部323は、図20に示すように、変更情報のうち、「設定値の固定」、及び「設定値の制限」に係る情報を反映したPrintTicketを作成する。
ステップS2206において、設定制御部323は、作成したPrintTicketを含む完了通知を、OS302に通知する。
ステップS2207において、OS302は、設定制御部323に設定能力情報(PrintCapabilities)の作成を要求する。
ステップS2108において、設定制御部323は、設定情報記憶部630から変更情報B631を取得する。
ステップS2209において、設定制御部323は、取得した変更情報を反映したPrintCapabilities形式の設定能力情報(以下、「PrintCapabilities」と呼ぶ)を作成する。例えば、設定制御部323は、図20に示すように、変更情報のうち、「設定値の固定」、及び「設定値の制限」に係る情報を反映したPrintCapabilitiesを作成する。
ステップS2210において、設定制御部323は、作成したPrintCapabilitiesを含む完了通知を、OS302に通知する。
ステップS2211において、OS302は、UI部305に設定画面の表示を指示する。この設定画面の表示の指示には、PrintTicket(設定情報)と、PrintCapabilities(設定能力情報)とが含まれる。
なお、UI部305は、アプリケーション301が、ストアアプリ311の場合は、ストアデバイスアプリ304であり、アプリケーション301が、デスクトップアプリ321である場合は、拡張設定部313である。
ステップS2212において、UI部305は、設定情報記憶部630から、変更情報B631を取得する。
ステップS2213において、UI部305は、PrintTicketと、PrintCapabilitiesと、変更情報のうちの「UIの非表示」、「設定値の固定」、及び「設定値の制限」とを用いて、設定情報の設定画面を表示装置102に表示させる。これにより、例えば、図17(b)に示すような設定画面1720が、表示装置102に表示される。
ステップS2214において、UI部305は、利用者による設定操作(設定情報の変更操作)を受付する。
ステップS2215において、UI部305は、利用者の設定操作をPrintTicket形式の設定情報に反映させる。
ステップS2216において、UI部305は、変更されたPrintTicketを含む完了通知を、OS302に通知する。
ステップS2217において、OS302は、変更されたPrintTicketから、Devmode形式の設定情報への変換を、設定制御部323に要求する。
ステップS2218において、設定制御部323、及びOS302は、図19AのステップS1911〜S1915に示すような設定情報の更新処理1940を実行する。
このように、本発明の各実施形態に係るプリンタドライバ303は、設定情報記憶部630に記憶された変更情報B631を反映させて、PrintTicket形式の設定情報を作成することができる。また、プリンタドライバ303は、設定情報記憶部630に記憶された変更情報B631を反映させて、PrintCapabilities形式の設定能力情報を作成することができる。さらに、UI部305は、設定情報記憶部630に記憶された変更情報B631を反映させて、UI画面(設定画面)を表示装置102に表示させることができる。
以上、本発明の実施形態によれば、V4プリンタドライバにおいて、インストール時等に、外部の記憶領域に記憶された設定データを読み込んで、プリンタドライバの設定情報の既定値に容易に反映させることができるようになる。