以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
<システム構成>
まず、本実施形態に係る情報処理システム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を返信する。また、設定制御部323は、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の設定情報を制御する設定制御部323から利用可能な記憶領域(例えば、PropertyBag400)である。
変更情報記憶部620は、設定情報記憶部630とは異なる記憶領域であり、プリンタドライバ303の設定情報を、管理者等の要望に応じて変更するための情報である変更情報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は、設定制御部323から、プリンタドライバ303の印刷に関する設定情報を取得し、取得した設定情報を、変更情報取得部612が取得した変更情報に従って変更する。
好ましくは、設定情報変更部613が設定制御部323から、PrintTicket形式(第1の形式)の設定情報(第1の設定情報)を取得する。PrintTicket形式の設定情報は、PrintSchemaと呼ばれる仕様に基づく印刷設定をXML(Extensible Markup Language)形式で表現する設定情報であり、内容の解釈、及び変更が容易である。
別の一例として、設定情報変更部613が設定制御部323から取得する設定情報は、DEVMODE形式(第2の形式)の設定情報(第2の設定情報)であっても良い。
ただし、DEVMODE形式の設定情報には、一般的に仕様が公開されている「Public」の設定情報と、ベンダ独自の形式で記述された「Private」の設定情報とがある。このうち、「Private」の設定情報は、外部モジュール(インストーラ610等)が内容を解釈し、変更することは、一般的に困難である。したがって、設定情報変更部613は、「Public」の設定情報のみをカスタマイズするとき等に、DEVMODE形式の設定情報を取得し、取得した設定情報を、変更情報取得部612が取得した変更情報に従って変更することが可能である。
ここでは、設定情報変更部613が設定制御部323から取得し、変更する設定情報が、PrintTicket形式の設定情報であるものとして以下の説明を行う。
設定情報設定部614は、設定情報変更部613が変更した設定情報に基づいて、プリンタドライバ303の設定情報の既定値を設定する。
例えば、設定情報変更部613が変更情報A621に従って変更したPrintTicket形式の設定情報は、プリンタドライバ303の設定制御部323によって、DEVMODE形式の変更後の設定情報に変換される。
設定情報設定部614は、設定制御部323によってDEVMODE形式の設定情報に変換された変更後の設定情報を、OS302で用意されているAPIを用いてプリンタドライバ303の設定情報の既定値として設定する。
変更情報保存部615は、変更情報取得部612が取得した変更情報A621を、設定情報記憶部630に保存する。なお、設定情報記憶部630に記憶される変更情報は、変更情報記憶部620に記憶された変更情報A621と同じ情報で良いが、ここでは、変更情報記憶部620に記憶された変更情報A621と区別するため、変更情報B631と表すものとする。
(プリンタドライバの機能構成)
プリンタドライバ303は、印刷に関する設定情報を制御するスクリプト(禁則スクリプト等)を利用して設定情報を管理するプリンタドライバ(V4プリンタドライバ、又は同様のアーキテクチャのプリンタドライバ)である。プリンタドライバ303は、図4で前述したように、拡張設定部313、設定制御部323、及び描画部333を含む。
クライアント装置10は、例えば、図2のCPU106で、プリンタドライバ303を実行することにより、拡張設定部313、設定制御部323、及び描画部333等を実現している。
設定制御部323は、印刷に関する設定情報を制御するスクリプト(禁則スクリプト等)を利用して、プリンタドライバ303の設定情報を管理する。設定制御部323は、設定情報管理部641、設定能力情報管理部642、及び排他設定制御部643を含む。
設定情報管理部641は、PrintTicket形式(第1の形式)の設定情報(第1の設定情報)と、DEVMODE形式(第2の形式)の設定情報(第2の設定情報)とを、スクリプトを用いて相互に変換する。
プリンタドライバ303の印刷に関する設定情報にはPrintTicket形式の設定情報と、DEVMODE形式の第2の設定情報とがある。
PrintTicket形式の設定情報は、前述したようにXML形式で表現される設定情報であり、例えば、文字列等で記載されている。
DEVMODE形式の設定情報は、DEVMODE構造体と呼ばれるバイナリ形式の設定情報である。設定情報の既定値は、このDEVMODE構造体に記憶され、管理されている。
V4プリンタドライバは、基本的にPrintTicket形式の設定情報を用いて様々な処理を行うが、アプリケーション301によって、Devmode形式で印刷の設定を行う場合と、PrintTicket形式で印刷の設定を行う場合とがある。したがって、V4プリンタドライバは、基本的に、DEVMODE形式の設定情報からPrintTicket形式の設定情報を作成する機能と、PrintTicket形式の設定情報からDevmode形式の設定情報を作成する機能とを有している。
設定能力情報管理部642は、プリンタドライバ303で設定可能な設定値を示す設定能力情報を管理する。プリンタドライバ303で設定可能な設定値には、例えば、用紙サイズ(A4、Letter、B5等)、両面(しない、長辺綴じ、短辺綴じ等)、集約(しない、2in1、4in1等)等が含まれる。
設定能力情報管理部642は、例えば、アプリケーション301、又はOS302からの要求に応じて、プリンタドライバ303が設定可能な機能の情報を示すPrintCapabilities形式の設定能力情報を提供する。
好ましくは、設定能力情報管理部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は、例えば、利用者の操作等に応じてOS302にV4プリンタドライバをインストールする。
ステップS702において、OS302は、V4プリンタドライバのDEVMODE形式の設定情報をPrintTicket形式の設定情報に変換する処理を、設定制御部730に要求する。例えば、OS302は、予め用意されたAPI(convertDevModeToPrintTicket)等を用いて、DEVMODE形式の設定情報からPrintTicket形式の設定情報への変換を要求する。
ステップS703において、設定制御部730は、DevmodePropertyBagから、V4プリンタドライバのDEVMODE形式の設定情報を読み出す。
なお、DevmodePropertyBagは、図5で説明したPropertyBag400とは異なり、V4プリンタドライバからは設定制御部323のみがアクセス可能な記憶領域である。DevmodePropertyBagはOS302によって管理され、設定制御部730は、DevmodePropertyBagを用いてDEVMODE構造体に記憶されたV4プリンタドライバの設定情報を読み出すことができる。
また、設定制御部730が、DevmodePropertyBagに記憶されたDEVMODE形式の設定情報に変更を加えると、その変更内容が、OS302によってDEVMODE構造体に反映される。
ステップS704において、設定制御部730は、読み出したDEVMODE形式の設定情報から、PrintTicket形式の設定情報を作成する。
ステップS705において、設定制御部730は、作成したPrintTicket形式の設定情報を含む完了通知を、OS302に通知する。
ステップS706において、OS302は、通知されたPrintTicket形式の設定情報の排他処理を、設定制御部730に要求する。例えば、OS302は、予め用意されたAPI(ValidatePrintTicket)を用いて、作成されたPrintTicket形式の設定情報の排他処理を、設定制御部730に要求する。
ステップS707において、設定制御部730は、設定情報の排他処理を実行する。例えば、設定制御部730は、PrintTicket形式の設定情報の中から同時に設定できない項目を抽出し、設定を変更する。
ステップS707において、設定制御部730は、排他処理をしたPrintTicket形式の設定情報を含む完了通知を、OS302に通知する。
ステップS709において、OS302は、V4プリンタドライバのPrintTicket形式の設定情報をDEVMODE形式の設定情報に変換する処理を、設定制御部730に要求する。例えば、OS302は、予め用意されたAPI(converPrintTicketToDevmode)等を用いて、PrintTicketの設定情報からDEVMODE形式の設定情報への変換を要求する。
ステップS710において、設定制御部730は、PrintTicketから設定情報を読み出す。
ステップS711において、設定制御部730は、読み出した設定情報をDevmodePropertyBagに保存する。
ステップS712において、設定制御部730は、完了通知をOS302に通知する。
ステップS713において、OS302は、DevmodePropertyBagに保存されたV4プリンタドライバの設定情報の変更内容を、DEVMODE構造体に反映させる。
ステップS714において、OS302は、インストールの完了通知をインストーラ720に通知する。
上記の処理により、クライアント装置10にインストールされたV4プリンタドライバの設定情報は、排他処理により設定内容の矛盾が解決された上で、プリンタドライバ303の設定情報の既定値として設定される。
V4プリンタドライバに含まれる拡張設定部313、設定制御部323、及び描画部333のうち、インストール時に動作するのは、図7に示すように設定制御部323のみである。
また、設定制御部323は、図5で前述した独自記憶領域500に相当する図6の変更情報記憶部620から情報を読み出しすることができない。したがって、従来の構成では、V4プリンタドライバは、変更情報記憶部620に記憶された変更情報A621を読み出すことができず、V4プリンタドライバの設定情報の既定値(デフォルト値)を変更することはできなかった。
(設定情報の変更処理)
図8は、一実施形態に係るV4プリンタドライバにおける設定情報の変更処理の例を示すシーケンス図である。この処理は、一般的なV4プリンタドライバにおいて、ユーザが印刷に関する設定情報を変更する場合の処理の例を示している。
ステップS801において、利用者が、アプリケーション301に対して、印刷の設定を変更するための設定要求操作を行う。
ステップS802において、アプリケーション301は、利用者による設定要求操作を受け付けると、ステップS803において、印刷設定(印刷に関する設定情報)の表示要求をOS302に通知する。
ステップS804において、OS302は、V4プリンタドライバのDevmode形式の設定情報からPrintTicket形式の設定情報への変換を、設定制御部730に要求する。
ステップS805において、設定制御部730は、DevmodePropertyBagから、V4プリンタドライバのDEVMODE形式の設定情報を読み出す。
ステップS806において、設定制御部730は、読み出したDEVMODE形式の設定情報から、PrintTicket形式の設定情報を作成する。
ステップS807において、設定制御部730は、作成したPrintTicket形式の設定情報を含む完了通知を、OS302に通知する。
ステップS808において、OS302は、設定制御部730に設定能力情報(PrintCapabilities)の作成を要求する。
ステップS809において、設定制御部730は、PrintCapabilities形式の設定能力情報を作成する。
ステップS810において、設定制御部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形式の設定情報に変換する処理を、設定制御部730に要求する。
ステップS817において、設定制御部730は、PrintTicketから設定情報を読み出す。
ステップS818において、設定制御部730は、読み出した設定情報をDevmodePropertyBagに保存する。
ステップS819において、設定制御部730は、完了通知をOS302に通知する。
ステップS820において、OS302は、DevmodePropertyBagに保存されたV4プリンタドライバの設定情報の変更内容を、DEVMODE構造体に反映させる。
ステップS821において、OS302は、設定の完了通知をインストーラ720に通知する。
(印刷処理)
図9は、一実施形態に係るV4プリンタドライバにおける印刷処理の概要を示すシーケンス図である。この処理は、一般的なV4プリンタドライバにおける印刷処理の概要のイメージを示している。実際の印刷時には、これ以外にも様々な処理が実行されるが、ここでは、主要な処理の流れの一例についてのみ説明する。なお、描画部920は、一般的なV4プリンタドライバの描画部を示すものとする。
ステップS901において、アプリケーション301は、利用者の印刷操作を受け付けると、ステップS902において、印刷要求をOS302に通知する。
ステップS903において、OS302は、V4プリンタドライバのDevmode形式の設定情報からPrintTicket形式の設定情報への変換を、設定制御部730に要求する。
ステップS904において、設定制御部730は、DevmodePropertyBagから、V4プリンタドライバのDEVMODE形式の設定情報を読み出す。
ステップS905において、設定制御部730は、読み出したDEVMODE形式の設定情報から、PrintTicket形式の設定情報を作成する。
ステップS906において、設定制御部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プリンタドライバでは、PrintTicket形式の設定情報からDEVMODE形式の設定情報の変換、及びDEVMODE形式の設定情報からPrintTicket形式の設定情報の変換が、頻繁に実行される。
<処理の詳細>
続いて、本実施形態に係るクライアント装置10、インストーラ610、及びプリンタドライバ303による情報処理方法の流れについて説明を行う。
[第1の実施形態]
図10は、第1の実施形態に係るプリンタドライバのインストール処理の例を示すフローチャートである。
ステップS1001において、インストーラ610のインストール部611は、クライアント装置10にプリンタドライバ303をインストールする。例えば、インストール部611は、図7に示すようなV4プリンタドライバのインストール処理を実行する。
ステップS1002において、インストーラ610の変更情報取得部612は、変更情報記憶部620から、変更情報A621を取得する。なお、変更情報取得部612は、変更情報記憶部620に変更情報A621が記憶されていない場合、例えば、処理を終了させる。
ステップS1003において、インストーラ610の設定情報変更部613は、プリンタドライバ303から、プリンタドライバ303の印刷に関する設定情報を取得する。ここでは、設定情報変更部613は、プリンタドライバ303から、PrintTicket形式の設定情報の取得するものとする。
ステップS1004において、インストーラ610の設定情報変更部613は、変更情報取得部612が取得した変更情報A621に従って、ステップS1003で取得したPrintTicket形式の設定情報を変更する。
図11は、第1の実施形態に係る変更前の設定情報のイメージを示す図である。図11に示す変更前の設定情報1100は、PrintTicket形式の設定情報の一例であり、カラー設定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には、「用紙種類(mediatype)の既定値を特別紙(special)に設定する」変更情報1201、「両面(duplexx)のUI表示をしない(hidden"yes")に設定する」変更情報1202が含まれている。さらに、変更情報1200には、「カラー/モノクロ設定(colorbw)を、モノクロ固定(fixvalue="blackandwhite")に設定する」変更情報1203、「集約(layout)の選択肢を、2in1/4in1("2pagespersheet" / "4pagespersheet")に限定する」変更情報1204等が含まれている。
なお、図12に示す変更情報1200は、図10のステップS1002において、変更情報取得部612が変更情報記憶部620から取得した、プリンタドライバ303の設定情報に関する変更情報A621の一例である。
図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には反映されていない。
図14は、第1の実施形態に係る対応情報の例を示す図である。例えば、図11に示すPrintTicket形式の設定情報1100に含まれるキー(例えば、機能名、選択肢等)と、図12に示す変更情報1200に含まれるキーは、必ずしも一致していない場合がある。
一例として、図11に示す変更前の設定情報1100では、用紙種類を示す機能名は「psk:PageMediaType」となっているが、図12に示す変更情報1200では、用紙種類を示す機能名は「mediatype」となっている。このような場合、インストーラ610の設定情報変更部613は、例えば、設定情報記憶部630等に記憶された、図14に示すような対応情報632を用いて、設定情報1100のキーと、変更情報1200のキーとを対応付けすることができる。
例えば、図14に示す対応情報632において、「psk:PageMediaType」というPrintTicketの名称("pt_name")1401は、「mediatype」という変更情報の名称("custom_name")1402に対応していることが示されている。
また、その選択肢("pickone")1403において、「ns0000:Special」というPrintTicketの名称1404は、「special」という変更情報の名称1405に対応していることが示されている。
例えば、このような対応情報632を用いて、インストーラ610の設定情報変更部613は、PrintTicket形式の設定情報1100のキーに基づいて、変更情報1200のキーを特定することができる。
なお、対応情報632を用いて、設定情報1100のキーと変更情報1200のキーとを対応付ける方法は一例である。例えば、設定情報1100のキーと、変更情報1200のキーとで同じ文字列を用いることにより、対応情報632を用いずに対応付けを行うものであっても良い。
このように、図10のステップS1004において、インストーラ610の設定情報変更部613は、変更情報取得部612が取得した変更情報A621に従って、ステップS1003で取得したPrintTicket形式の設定情報を変更する。
図10のステップS1005において、インストーラ610の設定情報変更部613は、プリンタドライバ303に、PrintTicket形式の変更後の設定情報から、DEVMODE形式の変更後の設定情報への変換を要求する。
ここで、DEVMODE形式の設定情報に変換する理由は、PrintTicket形式のままでプリンタドライバ303の設定情報の既定値を変更する方法が、(少なくとも現状では)OS302によって提供されていないためである。
また、前述したように、インストーラ601は、DEVMODE形式の「Private」の設定情報を変更することは困難なので、設定情報変更部613は、プリンタドライバ303を利用して、DEVMODE形式の設定情報への変換を行っている。
ステップS1006において、プリンタドライバ303の設定情報管理部641は、PrintTicket形式の設定情報(変更後)を、DEVMODE形式の設定情報(変更後)に変換する。この処理は、例えば、図7のステップS710、S711の処理に対応している。
ステップS1007において、インストーラ610の設定情報設定部614は、ステップS1007で変換されたDEVMODE形式の設定情報を用いて、プリンタドライバ303の設定情報の既定値を設定する。例えば、設定情報設定部614は、OS302によって提供される、プリンタドライバ303のプリンタの情報を変更するAPI(SetPrinter)に、既定値(デフォルト設定)の変更の指示とともに、DEVMODE形式の変更後の設定情報を渡す。これにより、設定情報設定部614は、プリンタドライバ303の設定情報の既定値を設定することができる。
このように、インストーラ610は、V4プリンタドライバ303のインストール時等に、変更情報記憶部620に記憶した変更情報A621を取得し(S1002)、プリンタドライバ303の設定情報の既定値を設定する(S1007)。これにより、V4プリンタドライバのインストール時等に、プリンタドライバ303の設定情報の既定値を変更することができるようになる。
なお、プリンタドライバ303の印刷情報のカスタマイズは、通常はインストール時に行いたいという要望が多い。したがって、図10に示す処理では、ステップS1002〜S1007に示すカスタマイズ処理を、プリンタドライバ303をインストールした直後に行っている。
ただし、これは一例であり、ステップS1002〜S1007に示すカスタマイズ処理は、ステップS1001のプリンタドライバ303のインストールの直後に限られず、プリンタドライバ303のインストール後、任意のタイミングで実行することができる。
図15は、第1の実施形態に係るプリンタドライバのインストール処理の別の一例を示すフローチャートである。図15に示す処理は、インストーラ610の設定情報変更部613が、プリンタドライバ303から、DEVMODE形式の設定情報を取得し、変更情報に従って設定情報を変更する場合の例を示している。
なお、図15のステップS1001、S1002、S1007の処理は、図10のステップS1001、S1002、S1007の処理と同様なので、ここでは図10に示す処理との相違点を中心に説明を行う。
ステップS1501において、インストーラ610の設定情報変更部613は、プリンタドライバ303から、プリンタドライバ303の印刷に関する設定情報を取得する。ここでは、設定情報変更部613は、プリンタドライバ303から、DEVMODE形式の設定情報の取得するものとする。
ステップS1502において、インストーラ610の設定情報変更部613は、変更情報取得部612が取得した変更情報A621に従って、ステップS11501で取得したDEVMODE形式の設定情報を変更する。
なお、前述したように、DEVMODE形式の設定情報のうち、「Private」の設定情報を変更することには困難を伴うので、例えば、変更情報A621には、「Public」の設定情報に関する変更情報のみが含まれているものとする。
このように、インストーラ610の設定情報変更部613は、プリンタドライバ303から、DEVMODE形式の設定情報を取得して、変更情報A621による変更を行うものであっても良い。
[第2の実施形態]
第2の実施形態では、プリンタドライバ303の設定情報のカスタマイズに加えて、印刷設定の設定画面や、印刷能力情報等に対してカスタマイズを行う場合の例について説明する。
(インストール処理)
図16は、第2の実施形態に係るプリンタドライバのインストール処理の例を示すフローチャートである。図16に示す処理のうち、ステップS1001〜S1007に示す処理は、図10に示す第1の実施形態に係るインストール処理と同様なので、ここでは、第1の実施形態に係る処理との相違点を中心に説明を行う。
ステップS1601において、インストーラ610の変更情報保存部615は、変更情報取得部612が取得した変更情報A621を、設定情報記憶部630に保存する。このとき、設定情報記憶部630に保存された変更情報を、以下の説明の中で、変更情報B631と呼ぶ。
上記の処理により、変更情報B631を、ストアデバイスアプリ304、プリンタドライバ303の拡張設定部313、設定制御部323、及び描画部333等から参照することができるようになる。なお、設定情報記憶部630に保存された変更情報B631の保存場所は、例えば、ステップS1001においてプリンタドライバ303をインストールしたときの論理プリンタ名(プリンタアイコン名)等から特定することができる。
(変更情報の設定画面への反映処理)
図6に示すように、プリンタドライバ303の拡張設定部313は、設定情報記憶部630に記憶された変更情報B631を、拡張設定部313が表示させる印刷の設定情報の設定画面に反映させる変更情報反映部653を有している。
また、ストアデバイスアプリ304は、設定情報記憶部630に記憶された変更情報B631を、ストアデバイスアプリ304が表示させる印刷の設定情報の設定画面に反映させる変更情報反映部663を有している。
なお、ストアデバイスアプリ304の変更情報反映部663の処理内容は、拡張設定部313の変更情報反映部653の処理内容と同様なので、ここでは、拡張設定部313の変更情報反映部653について説明を行う。
図17は、第2の実施形態に係る変更情報の設定画面への反映処理の例を示すフローチャートである。プリンタドライバ303の拡張設定部313に含まれる変更情報反映部663は、例えば、印刷設定を行う設定画面を表示させるときに、図17に示す処理を実行する。
なお、図17に示す処理において、PrintTicket形式の設定情報には、Nmax個の設定項目(機能名)が含まれており、変更情報反映部653は、N=1からN=Nmaxまで1項目ずつステップS1703〜S1710の処理を実行するものとする。
ステップS1701において、プリンタドライバ303の拡張設定部313に含まれる変更情報反映部653は、設定情報記憶部630に記憶された変更情報B631、及び対応情報632を読み出す。
ステップS1702において、変更情報反映部653は、変数N(Nは1以上の整数)を1に初期化する。
ステップS1703において、変更情報反映部653は、プリンタドライバ303のPrintTicket形式の設定情報におけるN番目の機能名を、例えば、図14に示すような対応情報632を用いて、変更情報B631の機能名に変換する。
ステップS1704において、変更情報反映部653は、ステップS1703で変換した機能名が、ステップS1701で読み出した変更情報B631に含まれるかを判断する。
変換した機能名が変更情報B631に含まれない場合、変更情報反映部653は、処理をステップS1709に移行させる。一方、変換した機能名が変更情報B631に含まれる場合、変更情報反映部653は、処理をステップS1705に移行させる。
ステップS1705に移行すると、変更情報反映部653は、変換した機能名に対応する設定項目が、UIを非表示にする設定項目であるかを判断する。
変換した機能名に対応する設定項目が、UIを非表示にする設定項目である場合、変更情報反映部653は、処理をステップS1706に移行させる。一方、変換した機能名に対応する設定項目が、UIを非表示にする設定項目でない場合、変更情報反映部653は、処理をステップS1707に移行させる。
ステップS1706に移行すると、変更情報反映部653は、変換した機能名に対応する設定項目を非表示に設定する。
ステップS1707に移行すると、変更情報反映部653は、変換した機能名に対応する設定項目が、選択肢を限定する設定項目であるかを判断する。
変換した機能名に対応する設定項目が、選択肢を限定する設定の設定項目でない場合、変更情報反映部653は、処理をステップS1909に移行させる。一方、変換した機能名に対応する設定項目が、選択肢を限定する設定の設定項目である場合、変更情報反映部653は、処理をステップS1908に移行させる。
ステップS1708に移行すると、変更情報反映部653は、変換した機能名に対応する設定項目のうち、限定(又は許可)されている選択肢以外の設定項目を非表示に設定する。
ステップS1709に移行すると、NがNmax未満であるかを判断する、言い換えると、PrintTicket形式の設定情報における全ての機能名についてステップS1703〜S1708の処理を実行したかを判断する。
NがNmax未満である場合、変更情報反映部653は、処理をステップS1710に移行させる。一方、NがNmax未満でない場合、変更情報反映部653は、処理をステップS1711に移行させる。
ステップS1710に移行すると、変更情報反映部653は、Nに1を加算して、ステップS1703〜S1708の処理を再び実行する。
ステップS1711に移行すると、拡張設定部313の設定画面表示部651は、変更情報B631が反映された設定画面を、表示装置102等に表示させる。
(設定画面の例)
図18は、第2の実施形態に係る設定画面のイメージを示す図である。
図18(a)は、プリンタドライバ303の拡張設定部313に含まれる設定画面表示部651が、表示装置102等に表示させる設定画面1810の一例のイメージを示している。図18(a)に示す変更前の設定画面1810には、例えば、用紙サイズ1811、カラー設定1812、両面1813、集約1814、及び用紙種類1815等の設定項目が含まれる。また、各設定項目の既定値が黒丸で示されている。例えば、用紙サイズ1811の既定値は「A4」、カラー設定1812の既定値は「カラー」、両面1813の既定値は「しない」、集約1814の既定値は「しない」、用紙種類1815の既定値は「普通紙」に設定されている。
また、例えば、図12に示す変更情報1200には、「用紙種類(mediatype)の既定値を特別紙(special)に設定する」変更情報1201、「両面(duplexx)のUI表示をしない(hidden"yes")に設定する」変更情報1202が含まれている。
さらに、変更情報1200には、「カラー/モノクロ設定(colorbw)を、モノクロ固定(fixvalue="blackandwhite")に設定する」変更情報1203、「集約(layout)の選択肢を、2in1/4in1("2pagespersheet" / "4pagespersheet")に限定する」変更情報1204等が含まれている。
したがって、変更情報反映部653は、例えば、図18(a)に示されるような変更前の設定画面1810に、図12に示すような変更情報1200を反映した場合、設定画面表示部651は、図18(b)に示すような変更後の設定画面1820を表示させる。
図18(b)に示す変更後の設定画面1820において、用紙種類1815の既定値は、図12に示す「用紙種類(mediatype)の既定値を特別紙(special)に設定する」変更情報1201が反映され、「特別紙」に変更されている。
また、変更後の設定画面1820において、図12に示す「両面(duplexx)のUI表示をしない(hidden"yes")に設定する」変更情報1202が反映され、変更前の設定画面1810に表示されていた両面1813の設定項目が非表示となっている。
さらに、変更後の設定画面1820において、集約1814の設定項目は、図12に示す「集約(layout)の選択肢を、2in1/4in1に限定する」変更情報1204が反映され、選択肢が2in1/4in1のみとなっている。
このように、プリンタドライバ303の拡張設定部313に含まれる変更情報反映部653は、設定情報記憶部630に記憶された変更情報B631を、拡張設定部313が表示する設定情報の設定画面に反映させることができる。
同様に、ストアデバイスアプリ304に含まれる変更情報反映部663は、設定情報記憶部630に記憶された変更情報B631を、ストアデバイスアプリ304が表示する設定情報の設定画面に反映させることができる。
(変更情報の設定能力情報への反映処理)
プリンタドライバ303の設定制御部323は、図6に示すように、設定情報記憶部630に記憶された変更情報B631を、プリンタドライバ303で設定可能な設定値を示す設定能力情報に反映する設定能力情報管理部642を有している。ここでは、設定能力情報管理部642による、変更情報B631の設定能力情報への反映する処理の例について説明する。
図19は、第2の実施形態に係る変更情報の設定能力情報への反映処理の例を示すフローチャートである。設定能力情報管理部642は、例えば、PrintCapabilities形式の設定能力情報を生成するときに、図19に示す処理を実行する。
なお、図19に示す処理において、PrintTicket形式の設定情報には、Nmax個の設定項目(機能名)が含まれており、設定能力情報管理部642は、N=1からN=Nmaxまで1項目ずつステップS1903〜S1910の処理を実行するものとする。
ステップS1901において、プリンタドライバ303の設定制御部323に含まれる設定能力情報管理部642は、設定情報記憶部630に記憶された変更情報B631、及び対応情報632を読み出す。
ステップS1902において、設定能力情報管理部642は、変数N(Nは1以上の整数)を1に初期化する。
ステップS1903において、設定能力情報管理部642は、プリンタドライバ303のPrintTicket形式の設定情報におけるN番目の機能名を、例えば、図14に示すような対応情報632を用いて、変更情報B631の機能名に変換する。
ステップS1904において、設定能力情報管理部642は、ステップS1903で変換した機能名が、ステップS1901で読み出した変更情報B631に含まれるかを判断する。
変換した機能名が変更情報B631に含まれない場合、設定能力情報管理部642は、処理をステップS1909に移行させる。一方、変換した機能名が変更情報B631に含まれる場合、設定能力情報管理部642は、処理をステップS1905に移行させる。
ステップS1905に移行すると、設定能力情報管理部642は、変換した機能名に対応する設定項目が、既定値を変更する設定項目であるかを判断する。
変換した機能名に対応する設定項目が既定値を変更する設定項目である場合、設定能力情報管理部642は、処理をステップS1906に移行させる。一方、変換した機能名に対応する設定項目が既定値を変更する設定項目でない場合、設定能力情報管理部642は、処理をステップS1907に移行させる。
ステップS1906に移行すると、設定能力情報管理部642は、変換した機能名に対応する設定項目の既定値を、変更情報に従って変更する。
ステップS1907に移行すると、設定能力情報管理部642は、変換した機能名に対応する設定項目が、選択肢を限定する情報であるかを判断する。
変換した機能名に対応する設定項目が、選択肢を限定する設定の設定項目でない場合、設定能力情報管理部642は、処理をステップS1909に移行させる。一方、変換した機能名に対応する設定項目が、選択肢を限定する設定の設定項目である場合、設定能力情報管理部642は、処理をステップS1908に移行させる。
ステップS1908に移行すると、設定能力情報管理部642は、変換した機能名に対応する設定項目のうち、限定(又は許可)されている選択肢以外の設定項目を無効に設定する。
ステップS1909に移行すると、NがNmax未満であるかを判断する。
NがNmax未満である場合、設定能力情報管理部642は、処理をステップS1910に移行させる。一方、NがNmax未満でない場合、設定能力情報管理部642は、処理をステップS1911に移行させる。
ステップS1910に移行すると、設定能力情報管理部642は、Nに1を加算して、ステップS1903〜S1908の処理を再び実行する。
ステップS1911に移行すると、設定能力情報管理部642は、変更情報B631が反映された設定能力情報を出力する。例えば、設定能力情報管理部642は、PrintCapabilities形式の設定能力情報の取得を要求するOS302、アプリケーション等に、変更情報B631が反映された設定能力情報を提供する。
図21は、第2の実施形態に係る変更前の設定能力情報のイメージを示す図である。設定能力情報2000は、プリンタドライバ303が設定可能な印刷設定値の一覧を、XML形式のデータで表す情報である。
図21に示す設定能力情報2000は、プリンタドライバ303の設定能力情報のうち、集約(psk:JobNUpAllDocumentsContiguously)に関する設定項目2001を抜粋したものである。
プリンタドライバ303は、集約に関する設定項目2001の既定値として、図20に示すように、「集約しない(1/1)」1502、「2in1」1503、「4in1」1504、及び「9in1」の4つの選択肢を有している。
一方、図12に示す変更情報1200には、「集約(layout)の選択肢を、2in1/4in1("2pagespersheet" / "4pagespersheet")に限定する」変更情報1204が含まれている。
この場合、設定能力情報管理部642は、図20に示す設定能力情報2000に、図12に示す変更情報1200を反映して、例えば、図21に示すような変更後の設定能力情報2100を作成する。
なお、図20に示す設定能力情報2000、及び図21に示す設定能力情報2100は、PrintCapabilities形式の設定能力情報である。
図21は、第2の実施形態に係る変更情報を反映した設定能力情報のイメージを示す図である。図21に示す変更後の設定能力情報2100では、集約に関する設定項目2001の選択肢が、「2in1」2003、及び「4in1」2004の2つに変更されている。
上記のように、プリンタドライバ303の設定制御部323に含まれる設定能力情報管理部642は、設定情報記憶部630に記憶された変更情報B631を、プリンタドライバ303の設定能力情報に反映させる。したがって、アプリケーション301は、設定能力情報を参照し、変更情報B631によって変更されたプリンタドライバ303の設定能力情報を認識することができるようになる。
なお、図6に示すクライアント装置10の機能構成は一例である。例えば、インストーラ610に含まれる各機能構成の少なくとも一部は、プリンタドライバ303に含まれていても良い。
また、クライアント装置10は、プリンタドライバ303がインストールされる情報処理装置の一例である。プリンタドライバ303がインストールされる情報処理装置は、例えば、図1に示すサーバ装置30等であっても良い。