以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
<システム構成>
まず、本実施形態に係る情報処理システム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は、画像形成装置(画像処理装置)20、サーバ装置30等とネットワーク等を介して接続され、画像形成装置20に印刷(画像処理)を要求するプリンタドライバを実行する情報処理装置である。
クライアント装置10は、例えば、図2のCPU106でプログラムを実行することにより、デスクトップアプリ321、OS302、UI部305、描画部333、ランゲージモニタ601、ポートモニタ602、処理情報記憶部603、1つ以上の連携プログラム604、及び複数の処理実行部605等を実現している。このうち、デスクトップアプリ321、OS302、UI部305、及び描画部333は、図4に示すデスクトップアプリ321、OS302、UI部305、及び描画部333に対応している。
ランゲージモニタ601は、例えば、図2のCPU106等で実行されるDLL(Dynamic Link Library)等によって実現され、双方向通信に対応する画像形成装置20から、例えば、印刷状態等を示す状態情報を受信する。
ポートモニタ602は、例えば、図2のCPU106等で実行されるDLL等によって実現され、プリンタポートの種類(USB、TCP/IP等)に合わせて、印刷データの出力処理を行う。
連携プログラム604は、例えば、図2のCPU106等で実行され、クライアント装置10で実行されるプリンタドライバ303と連携して、例えば、印刷データ(描画データ)の変更処理、読出処理、転送処理等の様々な拡張機能を提供するプログラムである。
連携プログラム604は、例えば、クライアント装置10にインストールされたとき等に、クライアント装置10のプログラム領域606に複数の処理実行部605を配置(例えばコピー)する。また、連携プログラム604は、複数の処理実行部605の各々が実行する処理に関する処理情報を、処理情報記憶部603に記憶する。
処理実行部605は、例えば、図2のCPU106で実行されるDLL等によって実現されるプラグインであり、描画部333等からの制御に従って、例えば、印刷データの変更処理、読出処理、又は転送処理等の様々な拡張機能を実行する。
処理情報記憶部(記憶部)603は、例えば、図5の独自記憶領域500や、QueuePropertyBag420等によって実現され、複数の処理実行部605の各々が実行する処理に関する情報である処理情報を記憶する。独自記憶領域500の一例としては、例えば、通常のWindowsアプリケーションで使用されるレジストリHKLM(HKEY_LOCAL_MACHINE)等が用いられる。
続いて、いくつかの実施形態を例示して、クライアント装置10の具体的な機能構成と、処理の流れについて説明する。
[第1の実施形態]
図7は、第1の実施形態に係る描画部、UI部及び連携プログラムの機能構成図である。
(描画部の機能構成)
描画部333は、例えば、図2のCPU106で実行されるプログラム(プリンタドライバ303)によって実現され、設定情報取得部711、描画データ生成部712、処理情報取得部713、及び要求部714等を含む。
設定情報取得部711は、例えば、デスクトップアプリ321から渡されるPrintTicketや、図5のPropertyBag400に等に含まれる印刷設定情報を取得する。また、設定情報取得部711は、デスクトップアプリ321からOS302を介して渡される、印刷処理の対象となる論理プリンタを指定する情報を取得する。
描画データ生成部712は、設定情報取得部711が取得した印刷設定情報に基づいて、印刷の対象となるデータを、画像形成装置20で処理可能な印刷データ(描画データ)に変換する。
処理情報取得部713は、指定された論理プリンタに対応する処理情報を、処理情報記憶部603から取得する。第1の実施形態では、処理情報記憶部603には、論理プリンタAの記憶領域751a、論理プリンタBの記憶領域751b、・・・等の論理プリンタの各々に対応する記憶領域(例えば、QueuePropertyBag420等)が含まれる。処理情報取得部713は、例えば、印刷処理の対象となる論理プリンタとして、論理プリンタAが指定されている場合、論理プリンタAの記憶領域751aから処理情報を取得する。なお、処理情報の例については、図8、9を用いて後述する。
要求部714は、処理情報取得部713が取得した処理情報に基づいて、複数の処理実行部605のうち、少なくとも1つの処理実行部605に処理の実行を要求する。
(連携プログラムの機能構成)
クライアント装置10は、例えば、図2のCPU106で連携プログラム604を実行することにより、処理情報管理部721、配置部722、及び処理部723等を実現している。
配置部722は、例えば、連携プログラム604がクライアント装置10にインストールされたとき等に、様々な拡張機能を実行する複数の処理実行部605−1〜605−3を、クライアント装置のプログラム領域606に配置する。例えば、配置部722は、プリンタドライバ303の描画部333からアクセス可能なプログラム領域606に、複数の処理実行部605−1〜605−3をコピーして、プリンタドライバ303の描画部333からアクセスできるようにする。
なお、以下の説明の中で、複数の処理実行部605−1〜605−3のうち、任意の処理実行部605を示す場合、「処理実行部605」を用いる。また、図に示す処理実行部605の数は一例であり、処理実行部605の数は2つ以上の他の数であっても良い。
処理情報管理部721は、複数の処理実行部605−1〜605−3が実行する処理のうち、描画部333が実行を要求する処理に関する処理情報を、論理プリンタ毎の記憶領域に保存する。
処理部723は、連携プログラム604で実行する様々な処理、例えば、連携プログラム604の設定処理、ログの収集処理、他の連携プログラムとの調整処理等を実行する。
(処理実行部の機能構成)
処理実行部605は、例えば、図2のCPU106で実行されるプログラム(DLL等)によって実現され、処理制御部731、及び処理部732等を含む。
処理部732は、例えば、印刷データに変更を加える変更処理(第1の処理)、印刷データから情報を読出する読出処理(第2の処理)、及び印刷データを転送する転送処理(第3の処理)等の処理を実行する。
処理制御部731は、描画部333からの処理要求を受付し、受付した処理要求に従って処理部732に処理を実行させる。
処理実行部605が実行する処理の例を表1に示す。
表1に示すように、処理実行部605が実行する処理は、例えば、変更(Modifi)、読出(Read)、又は転送(Transfer)の3つの処理種別に分けられる。
処理種別が「変更(Modify)」の処理(以下、変更処理と呼ぶ)は、処理内容として印刷データの変更を行う処理、例えば、カラー→モノクロ変換処理、認証処理、プレビュー処理、ユーザ名のマスク処理等が含まれる。
処理種別が「読出(Read)」の処理(以下、読出処理と呼ぶ)は、処理内容として印刷データの参照(情報の取得)を行う処理、例えば、ログ収集処理、課金予測処理等が含まれる。
処理種別「転送(Transfer)」の処理(以下、転送処理と呼ぶ)は、処理内容として、印刷データの転送を行う処理、例えば、共有フォルダへの保存処理、クラウドへのアップロード処理、プリンタドライバ303への印刷データの返却処理等が含まれる。
図8、9は、第1の実施形態に係る処理情報の例を示す図である。
図8(a)は、変更処理の処理情報810の一例のイメージを示している。変更処理の処理情報810には、処理実行部605の名前を示す情報811、処理実行部605が格納されたパスを示す情報(パス情報)812、及び処理実行部605の処理種別を示す情報813等が含まれている。図8(a)に示すように、変更処理の処理情報810の処理種別を示す情報813には、「modify」の文字列が含まれる。
また、図8(b)は、読出処理の処理情報820の一例のイメージが示されており、読出処理の処理情報820の処理種別を示す情報には、「read」の文字列が含まれている。同様に、図8(c)は、転送処理の処理情報830の一例のイメージが示されており、転送処理の処理情報830の処理種別を示す情報には、「transfer」の文字が含まれている。
図9(a)は、直列に実行する処理情報910の一例のイメージを示している。図11(a)に示されるように、直列に実行される複数の処理情報(変更処理912、913)は、例えば、角括弧1111内にカンマ「,」を介して列記される。
また、図11(b)は、並列に実行する処理情報920の一例のイメージを示している。図11(b)に示されるように、並列に実行される複数の処理情報(読出処理922、924)の各々は、角括弧921、923で閉じられて、カンマ「,」を介して列記される。
このように、処理情報には、複数の処理に関する処理情報が含まれていても良い。また、処理情報には、直列に実行する情報と並列に実行する処理情報とが混在しているものであっても良い。
図7に戻り機能構成の説明を続ける。
(UI部の機能構成)
UI部305は、例えば、図4に示すように、ストアデバイスアプリ304や、プリンタドライバ303の拡張設定部313等を含み、プリンタドライバ303に関する設定を行う設定画面を表示させて、利用者による設定操作を設定情報に反映させる。また、本実施形態に係るUI部305は、連携機能設定部741を含む。
連携機能設定部741は、論理プリンタ毎の記憶領域に記憶された処理情報に対応する複数の処理の中から、論理プリンタで実行する処理を選択する設定画面を表示させて、利用者による設定操作を受付する。
連携機能設定部741は、例えば、論理プリンタのアイコンを右クリックしたときに表示されるコンテキストメニューに表示される操作の一覧等から呼び出され、例えば、図10に示すような設定画面を、表示装置102等に表示させる。
図10は、第1の実施形態に係る設定画面の例を示す図である。
図10(a)は、連携機能設定部741が表示する拡張機能の設定画面1010の例を示している。拡張機能の設定画面1010には、連携プログラム604に関する設定を行うための「ソリューション連携」ボタン1011が含まれる。利用者は、「ソリューション連携」ボタン1011を選択することにより、例えば、図10(b)に示すような拡張機能の選択画面1020を表示させることができる。
図10(b)に示す拡張機能の選択画面1020には、複数の処理実行部605で実行可能な処理の一覧1021が表示され、利用者は各処理のチェックボックス1022により、処理を実行するか否かを選択することができる。図10(b)の例では、処理の名前が「データ監視」、「クラウド転送」の処理が実行され、「個人認証」の処理が実行されないように設定されていることが示されている。
このように、本実施形態では、利用者は、図10(b)に示すような拡張機能の選択画面1020を用いて、複数の処理実行部605が実行する処理のうち、実行する処理を、論理プリンタ毎に選択することができる。
(デスクトップアプリの機能構成)
デスクトップアプリ321は、例えば、文書作成、プレゼンテーション、ウェブブラウザ、メールクライアント等の一般的なアプリケーションである。デスクトップアプリ321は、例えば、図11に示すような印刷操作の受付画面1100を、表示装置102等の表示部に表示させて、印刷処理の要求とともに、印刷処理における論理プリンタの指定を受け付ける受付部761を有している。
図11は、第1の実施形態に係る印刷操作の受付画面の例を示す図である。図11に示す印刷操作の受付画面1100は、デスクトップアプリ321において、ユーザが印刷を行うときに表示される表示画面の一例である。
図11に示す印刷操作の受付画面1100において、利用者は、論理プリンタの一覧1102を表示させるためのボタン1101を選択して、論理プリンタの一覧を表示させて、印刷を行う論理プリンタを選択することができる。また、利用者は、印刷ボタン1103を選択することにより、印刷処理の要求を行うことができる。受付部761は、印刷操作の受付画面1100において、利用者によって入力された論理プリンタの指定と、印刷処理の要求とを受付する。
<処理の流れ>
続いて、第1の実施形態に係る情報処理方法の処理の流れについて説明する。
(印刷処理の例)
図12は、第1の実施形態に係る印刷処理の例を示すフローチャートである。この処理は、利用者が、図11に示すような印刷操作の受付画面1100に印刷操作を行ったときに、クライアント装置10で実行される印刷処理の例を示している。
ステップS1201において、デスクトップアプリ321の受付部761が、利用者による印刷処理の要求、及び論理プリンタを指定する操作を受付すると、プリンタドライバ303の描画部333は、ステップS1202以降の処理を実行する。なお、例えば、図11に示す印刷操作の受付画面1100において、論理プリンタの指定操作を行わずに印刷ボタン1103が選択された場合、既定の論理プリンタが選択されたものとして処理を実行する。
ステップS1202において、描画部333は、デスクトップアプリ321から、OS302を介して、印刷設定情報、及び論理プリンタを指定する情報を取得する。例えば、設定情報取得部711は、デスクトップアプリ321から渡される印刷の設定情報であるPrintTicket等から印刷設定情報を取得する。
ステップS1203において、描画部333の描画データ生成部712は、設定情報取得部711が取得した印刷設定情報に従って、印刷の対象となるデータを、画像形成装置20で印刷可能な印刷データに変換する。
ステップS1204において、描画部333の処理情報取得部713は、処理情報記憶部603に含まれる、指定された論理プリンタに対応する記憶領域(例えば、論理プリンタAの記憶領域751a)に、処理情報があるかを判断する。例えば、処理情報取得部713は、指定された論理プリンタの情報を記憶するQueuePropertyBag420等に、図8、9に示す処理情報が記憶されているかを判断する。
指定された論理プリンタに対応する記憶領域に処理情報がない場合、処理情報取得部713は、処理をステップS1208に移行させる。一方、指定された論理プリンタに対応する記憶領域に処理情報がある場合、処理情報取得部713は、処理をステップS1205に移行させる。
ステップS1205に移行すると、処理情報取得部713は、指定された論理プリンタに対応する記憶領域(例えば、論理プリンタAの記憶領域751a等)から、処理情報を取得する。
ステップS1206に移行すると、描画部333の要求部714は、処理情報取得部713が取得した処理情報に従って、処理実行部605に処理を要求する。
例えば、処理情報が、図8(a)に示すような変更処理の処理情報810である場合、要求部714は、処理実行部605が格納されたパスを示す情報812に従って、処理実行部605の一例である「Aplugin.dll」に変更処理の実行を要求する。
また、例えば、処理情報が、図9(a)に示すような直列に実行する処理情報910である場合、要求部714は、「Aplugin.dll」に第1の変更処理を要求し、変更処理が完了した後、「Bplugin.dll」に第2の変更処理を要求する。
さらに、処理情報が、図9(b)に示すような並列に実行する処理情報920である場合、要求部714は、「1plugin.dll」に第1の変更処理を要求し、第1の変更処理と並行して、「2plugin.dll」に第2の変更処理を要求する。
なお、ステップS1204、S1205の処理は、ステップS1203の処理と並行して行われるものであっても良い。
また、ステップS1204〜S1206の処理は、ステップS1203で印刷データを生成する前に行われるものであっても良い。例えば、印刷データを生成する前に、印刷設定情報の変更を行う処理実行部605に処理の実行を要求するもの等であっても良い。
さらに、ステップS1204〜S1206の処理は、印刷データの生成中に、例えば、1ページの印刷データの生成が終わる度に複数回実行する等、図12に示す処理とは異なるタイミングで実行されるものであっても良い。
ステップS1207において、描画部333は、印刷を実行する印刷データ(描画データ)があるかを判断する。
例えば、ステップS1206において、処理実行部605から描画部333に印刷データが返却されない場合、一例として、処理実行部605により、印刷データがサーバ装置30に転送された場合、描画部333は、印刷を実行する印刷データがないと判断する。この場合、描画部333は、処理を終了させる。
一方、ステップS1206において、処理実行部605から描画部333に印刷データが返却された場合、描画部333は、印刷を実行する印刷データがあると判断する。この場合、描画部333は、ステップS1208において、印刷データ(描画データ)を画像形成装置20に出力する。
上記の処理により、プリンタドライバ303の描画部333は、複数の処理実行部605を用いて、印刷データに様々な処理(拡張機能)を実行させることができるようになる。
このように、本実施形態によれば、V4プリンタドライバ、又は同様の制限を有するプリンタドライバ303において、利用者の利便性を維持しつつ、プリンタドライバ303に独自の拡張機能を容易に追加することができるようになる。
また、本実施形態によれば、プリンタドライバ303の再インストールやアップデート等を行うことなく、プリンタドライバ303に独自の拡張機能を容易に追加することができるようになる。なお、従来のV3プリンタドライバでは、ポートモニタを変更することにより、複数の拡張機能を利用することは可能であったが、異なるタイミングで導入された複数の拡張機能を利用することはできなかった。
さらに、本実施形態によれば、1つのプリンタドライバ303に対して複数の論理プリンタを作成した際に、論理プリンタ毎に異なる拡張機能を組み合わせて実行することが可能となる。
[第2の実施形態]
第2の実施形態では、処理情報記憶部603が、論理プリンタ毎の記憶領域(論理プリンタAの記憶領域751a、論理プリンタBの記憶領域751b等)に加えて、プリンタドライバの記憶領域を有する場合の例について説明する。
<機能構成>
図13は、第2の実施形態に係る描画部、UI部、及び連携プログラムの機能構成図である。図13に示す処理情報記憶部603には、図7に示す第1の実施形態に係る処理情報記憶部603に含まれる論理プリンタ毎の記憶領域に加えて、プリンタドライバの記憶領域1301が含まれている。なお、他の機能構成は、図7に示した第1の実施形態に係る機能構成と同様なので、ここでは第1の実施形態に係る機能構成との相違点を中心に説明を行う。
プリンタドライバの記憶領域1301は、例えば、図5の独自記憶領域500等によって実現され、複数の処理実行部605の各々が共通に実行する処理の処理情報を記憶する。独自記憶領域500の一例として、前述したように、通常のWindowsアプリケーションで使用されるレジストリHKLM等が用いられる。
プリンタドライバの記憶領域1301に記憶された処理情報は、同じプリンタドライバ303に対応する全ての論理プリンタに反映されるので、利用者は、1つのプリンタドライバ303に対応する論理プリンタの各々に設定を行う手間を省くことができる。
また、プリンタドライバ303の記憶領域1301は、プリンタドライバ303毎に存在し、処理情報もプリンタドライバ303毎に記憶される。従って、1つのプリンタドライバ303の記憶領域1301に記憶された処理情報は、1つのプリンタドライバ303に対応する、新たに作成される論理プリンタにも自動的に適用される。
<処理の流れ>
図14は、第2の実施形態に係る印刷処理の流れを示すフローチャートである。なお、図14のステップS1201〜1203、及びステップS1206〜S1208の処理は、図12に示す第1の実施形態に係る印刷処理と同様なので、ここでは第1の実施形態との相違点を中心に説明を行う。
ステップS1401において、描画部333の処理情報取得部713は、処理情報記憶部603に含まれる、プリンタドライバ303に対応するプリンタドライバの記憶領域1301に、処理情報があるかを判断する。
プリンタドライバの記憶領域1301に処理情報がない場合、処理情報取得部713は、処理をステップS1403に移行させる。一方、プリンタドライバの記憶領域1301に処理情報がある場合、処理情報取得部713は、処理をステップS1402に移行させる。
ステップS1402に移行すると、処理情報取得部713は、プリンタドライバの記憶領域1301から、処理情報を取得する。
ステップS1403に移行すると、描画部333の処理情報取得部713は、処理情報記憶部603に含まれる、指定された論理プリンタに対応する記憶領域(例えば、論理プリンタAの記憶領域751a等)に、処理情報があるかを判断する。
指定された論理プリンタに対応する記憶領域に処理情報がない場合、処理情報取得部713は、処理をステップS1405に移行させる。一方、指定された論理プリンタに対応する記憶領域に処理情報がある場合、処理情報取得部713は、処理をステップS1404に移行させる。
ステップS1404に移行すると、処理情報取得部713は、指定された論理プリンタに対応する記憶領域から、処理情報を取得する。
ステップS1405に移行すると、処理情報取得部713は、実行する処理情報があるかを判断する。例えば、ステップS1402、S1404のいずれかで処理情報を取得している場合、実行する処理情報があると判断する。
実行する処理情報がない場合、処理情報取得部713は、処理をステップS1208に移行させる。一方、実行する処理情報がある場合、処理情報取得部713は、処理をステップS1206に移行させる。
図14に示す印刷処理により、プリンタドライバ303は、プリンタドライバの記憶領域1301に記憶された処理情報と、論理プリンタ毎の記憶領域に記憶された処理情報とに基づいて、処理実行部605に処理を要求することができるようになる。
[第3の実施形態]
第3の実施形態では、処理情報記憶部603への処理情報の保存処理について説明する。
<機能構成>
図15は、第3の実施形態に係る描画部、UI部、及び連携プログラムの機能構成図である。
図15に示す処理情報記憶部603には、プリンタドライバの記憶領域1301、論理プリンタ毎の記憶領域751、及び連携プログラムの記憶領域1510が含まれる。
このうち、プリンタドライバの記憶領域1301は、図13に示す第2の実施形態に係るプリンタドライバの記憶領域1301に対応している。また、論理プリンタ毎の記憶領域751は、図13に示す第2の実施形態に係る論理プリンタAの記憶領域751a、論理プリンタBの記憶領域751b、・・・に対応している。
新たに追加された連携プログラムの記憶領域1501は、例えば、連携プログラム604によって使用されるレジストリHKLM等によって実現され、連携プログラム604が管理する処理実行部605の処理情報を記憶する。
また、図15に示すインストーラ1520は、連携プログラム604、又はプリンタドライバ303を、クライアント装置10にインストールするときに、図2のCPU106によって実行されるプログラムである。なお、連携プログラム604をインストールするインストーラ1520と、プリンタドライバ303をインストールするインストーラ1520は、異なるプログラムであっても良いし、同じプログラムであっても良い。
インストーラ1520は、インストール部1521、及び連携機能設定部1522を含む。
インストール部1521は、連携プログラム604、又はプリンタドライバ303を、クライアント装置10にインストールする。例えば、インストール部1521は、連携プログラム604をクライアント装置10のHDD108等に保存して、実行できるようにOS302に登録する。或いは、インストール部1521は、プリンタドライバ303をクライアント装置10のHDD108等に保存して、実行できるようにOS302に登録する。
連携機能設定部1522は、インストール部1521が、連携プログラム604又はプリンタドライバ303を、クライアント装置10にインストールするときに、連携機能の設定を受け付けるための設定画面を表示して、利用者の設定操作を受付する。
なお、図15に示す他の機能構成は、図13に示す第2の実施形態に係る機能構成と同様である。
<処理の流れ>
(連携プログラムのインストール処理)
図16は、第3の実施形態に係る連携プログラムのインストール処理の例を示すフローチャートである。この処理は、インストーラ1520が、連携プログラム604をクライアント装置10にインストールするときに、インストーラ1520及び連携プログラム604が実行する処理の例を示している。
ステップS1601において、インストーラ1520のインストール部1521は、連携プログラム604をクライアント装置10にインストールする。
ステップS1602において、連携プログラム604の配置部722は、処理実行部605を、プログラム領域606に配置する。例えば、配置部722は、複数の処理実行部605−1〜605−3を、プログラム領域606(例えば、C:\ProgramFiles 等のディレクトリ)にコピーする。
ステップS1603において、連携プログラム604の処理情報管理部は、プログラム領域606に配置された複数の処理実行部605−1〜605−3が実行する処理に関する処理情報を、連携プログラムの記憶領域1510(例えば、レジストリHKLM等)に保存する。
ステップS1604において、インストーラ1520の連携機能設定部1522は、クライアント装置10にプリンタドライバ303がインストールされているかを判断する。
クライアント装置10にプリンタドライバ303がインストールされていない場合、連携機能設定部1522は、処理を終了させる。一方、クライアント装置10にプリンタドライバ303がインストールされている場合、連携機能設定部1522は、処理をステップS1605に移行させる。
ステップS1605に移行すると、インストーラ1520の連携機能設定部1522は、例えば、図17(a)に示すような、論理プリンタ(プリンタアイコン)の一覧を、表示装置102等に表示させる。
図17(a)は、論理プリンタの一覧1711を表示する表示画面1710の一例のイメージを示している。表示画面1710には、クライアント装置10にインストールされている論理プリンタの一覧1711が表示されている。利用者は、論理プリンタの一覧1711の中から、カーソル1712を移動させて1つの論理プリンタ(例えば、論理プリンタB)を選択し、「選択」ボタン1713を選択することにより、連携機能の設定を行う論理プリンタを選択することができる。また、利用者は、表示画面1710の「設定終了」ボタン1714を選択することにより、連携機能の設定を終了させることができる。
ステップS1606において、インストーラ1520の連携機能設定部1522は、例えば、図17(a)に示すような表示画面1710において、論理プリンタが選択されたか(「選択」ボタン1713が選択された)を判断する。
論理プリンタが選択されていない場合、連携機能設定部1522は、処理をステップS1607に移行させる。一方、論理プリンタが選択された場合、連携機能設定部1522は、処理をステップS1608に移行させる。
ステップS1607に移行すると、インストーラ1520の連携機能設定部1522は、例えば、図17(a)に示すような表示画面1710において、「設定終了」ボタン1714が選択されたかを判断する。
「設定終了」ボタン1714が選択された場合、連携機能設定部1522は、処理を終了させる。一方、「設定終了」ボタン1714が選択されていない場合、連携機能設定部1522は、処理をステップS1605に戻して、論理プリンタの一覧1711の表示を継続させる。
ステップS1608に移行すると、インストーラ1520の連携機能設定部1522は、例えば、図17(b)に示すような連携機能の設定画面1720を、表示装置102等に表示させる。
図17(b)は、連携機能の設定画面1720の一例のイメージを示している。連携機能の設定画面1720には、論理プリンタの一覧1711の中から選択された論理プリンタ(例えば、論理プリンタB)の複数の処理実行部605が実行する処理の名前1721の一覧が表示されている。また、設定画面1720には、処理毎に、各論理プリンタに共通に連携するか否かを設定するための設定欄1722、及び論理プリンタ毎に連携するか否かを設定するための設定欄1723が設けられている。
ステップS1609において、インストーラ1520の連携機能設定部1522は、例えば、図17(b)に示すような連携機能の設定画面1720に対する設定操作を受付する。
ステップS1610において、連携プログラム604の処理情報管理部721は、プリンタドライバ303と連携する処理の処理情報を、プリンタドライバの記憶領域1301に記憶する。図17(b)の例では、「ログ収集」処理は、各論理プリンタに共通に連携する設定が選択されている。この場合、処理情報管理部721は、「ログ収集」処理に関する処理情報を、図15のプリンタドライバの記憶領域1301に記憶する。
ステップS1611において、連携プログラム604の処理情報管理部721は、論理プリンタと連携する処理の処理情報を、論理プリンタ毎の記憶領域751に記憶する。図17(b)の例では、「クラウド転送」の処理は、論理プリンタ毎に連携する設定が選択されている。この場合、処理情報管理部721は、「クラウド転送」処理に関する処理情報を、論理プリンタ毎の記憶領域751の各々に記憶する。
ステップS1611の処理が終了すると、連携プログラム604は、ステップS1605に戻って、同様の処理を再び実行する。
(プリンタドライバのインストール処理)
図18は、第3の実施形態に係るプリンタドライバのインストール処理の例を示すフローチャートである。この処理は、インストーラ1520が、プリンタドライバ303をクライアント装置10にインストールするときに、インストーラ1520及び連携プログラム604が実行する処理の例を示している。
ステップS1801において、インストーラ1520のインストール部1521は、プリンタドライバ303をクライアント装置10にインストールする。
ステップS1802において、インストーラ1520の連携機能設定部1522は、クライアント装置10に連携プログラム604がインストールされているかを判断する。
クライアント装置10に連携プログラム604がインストールされていない場合、連携機能設定部1522は、処理を終了させる。一方、クライアント装置10に連携プログラム604がインストールされている場合、連携機能設定部1522は、処理をステップS1803に移行させる。
ステップS1803に移行すると、インストーラ1520の連携機能設定部1522は、図15の連携プログラムの記憶領域1510から、処理情報を取得する。この処理情報には、例えば、図16のステップS1603で保存された処理情報等が含まれる。
ステップS1804において、インストーラ1520の連携機能設定部1522は、例えば、図17に示すような設定画面を、表示装置102等に表示させる。
ステップS1805において、インストーラ1520の連携機能設定部1522は、例えば、図17に示すような設定画面に対する設定操作を受付する。
ステップS1806において、連携プログラム604の処理情報管理部721は、プリンタドライバ303と連携する処理の処理情報を、プリンタドライバの記憶領域1301に記憶する。
ステップS1807において、連携プログラム604の処理情報管理部721は、論理プリンタと連携する処理の処理情報を、論理プリンタ毎の記憶領域751に記憶する。
このように、インストーラ1520は、プリンタドライバ303がインストールされていないクライアント装置10、及びプリンタドライバ303がインストールされているクライアント装置10のいずれにも連携プログラム604をインストールすることができる。また、インストーラ1520は、連携プログラム604がインストールされていないクライアント装置10、及び連携プログラム604がインストールされているクライアント装置10のいずれにもプリンタドライバ303をインストールすることができる。つまり、本実施形態によれば、クライアント装置10における、プリンタドライバ303のライフサイクルと、連携プログラム604のライフサイクルとは一致していなくても良い。
このライフサイクルとは、クライアント装置10にプログラムがインストールされるタイミング、アンインストールされるタイミング、インストールされている期間等を示すものとする。つまり、本実施形態によれば、クライアント装置10に、プリンタドライバ303がインストール又はアンインストールされるタイミングと、連携プログラム604がインストール又はアンインストールされるタイミングとが、異なるタイミングであっても良い。
なお、上記の各処理により、図17(b)に示すような設定画面1720(第1の設定画面)で、各論理プリンタに共通に連携する設定が選択された処理は、プリンタドライバ303における論理プリンタの各々において、共通に実行される。
また、図17(b)に示すような設定画面1720(第1の設定画面)で、論理プリンタ毎に連携する設定が選択された処理は、図10(b)に示すような拡張機能の選択画面1020(第2の設定画面)で、論理プリンタ毎に連携するか否かを選択することができる。
なお、連携機能設定部1522は、第1の設定画面を表示させる第1の連携機能設定部の一例である。また、連携機能設定部741は、第2の設定画面を表示させる第2の連携機能設定部の一例である。
[第4の実施形態]
第4の実施形態では、クライアント装置10が、複数の処理実行部605が実行する処理の実行順序を決定する決定部を有する場合の例について説明する。
<機能構成>
図19は、第4の実施形態に係る描画部、UI部、及び連携プログラムの機能構成の一例を示す図である。
図19に示す処理情報記憶部603には、プリンタドライバの記憶領域1301、及び論理プリンタ毎の記憶領域751が含まれる。このうち、プリンタドライバの記憶領域1301は、図13に示す第2の実施形態に係るプリンタドライバの記憶領域1301に対応している。また、論理プリンタ毎の記憶領域751は、図13に示す第2の実施形態に係る論理プリンタAの記憶領域751a、論理プリンタBの記憶領域751b、・・・に対応している。
また、図19に示す描画部333には、図13に示す第2の実施形態に係る描画部333の機能構成に加えて、決定部1901が含まれている。
第1〜3の実施形態では、処理情報記憶部603に記憶される処理情報が、例えば、図8に示すように単独の処理情報、又は、図9に示すように予め実行順序が定められている処理情報であるものとして説明を行った。しかし、処理情報記憶部603には、予め実行順序が定められていない複数の処理情報が記憶されているものであっても良い。
決定部1901は、処理情報記憶部603に記憶された複数の処理情報に基づいて、複数の処理実行部605が実行する処理の実行順序を決定する。例えば、決定部1901は、表2に示すような実行順序、及び実行方法の情報に従って、複数の処理実行部605が実行する処理の実行順序を決定する。
表2の例では、変更処理の実行順序は、読出処理及び転送処理より前であることが定められている。これは、読出処理では、変更処理を実行した後の情報を読み出しする必要があり、転送処理では、変更処理を実行した後の印刷データを転送する必要があるためである。また、変更処理の実行方法は直列に実行すること、すなわち、複数の処理を順次に実行することが定められている。これは、印刷データに全ての変更を反映させるためには、印刷データに対して順次に処理を実行する必要があるためである。
また、表2の例では、読出処理の実行順序は、転送処理より前であり、変更処理より後であることが定められている。これは、読出処理は、変更処理を実行した後の情報を読み出しする必要があり、転送処理が行われると印刷データが削除されてしまう恐れがあるためである。また、読出処理の実行方法は、並列又は直列に実行すること、すなわち、複数の処理を並行して処理できることが定められている。これは、読出処理では、印刷データが変更されないので、複数の情報を並行して読出しても問題がないためである。
さらに、表2の例では、転送処理の実行順序は、変更処理及び読出処理より後であることが定められている。これは、転送処理では、変更、読出が行われた印刷データを転送する必要があるためである。また、転送処理の実行方法は、並列又は直列に実行すること、すなわち、複数の処理を並行して処理できることが定められている。これは、転送処理では、印刷データの内容が変更されないので、複数の転送先に並行して印刷データを送信しても問題がないためである。
また、図19に示すように、クライアント装置10は、複数の連携プログラム604−1、604−2を実行することができる。
上記以外の各機能構成は、図13に示す第2の実施形態に係る各機能構成と同様である。
<処理の流れ>
(印刷処理)
図20は、第4の実施形態に係る印刷処理の例を示すフローチャートである。なお図20のステップS1201〜1203、及びステップS1206〜S1208の処理は、図12に示す第1の実施形態に係る印刷処理と同様である。また、図20のステップS1401〜ステップS1405の処理は、図14に示す第2の実施形態に係る印刷処理と同様である。ここでは第1の実施形態、及び第2の実施形態との相違点を中心に説明を行う。
図20のステップS1405において、実行する処理情報があると判断された場合、ステップS2001において、描画部333の決定部1901は、取得した処理情報に基づいて、処理の実行順序を決定する。
(実行順序の決定処理)
図21は、第4の実施形態に係る実行順序の決定処理の例を示すフローチャートである。この処理は、図20のステップS2001で実行される処理の実行順序を決定する処理の一例を示している。
ステップS2101において、描画部333の決定部1901は、図20のステップS1401〜S1404で、処理情報取得部713が取得した処理情報の中に、変更処理があるかを判断する。例えば、決定部1901は、図8(a)に示すように、処理種別を示す情報813に「modify」の文字列を含む変更処理の処理情報810があるかを判断する。
なお、処理情報取得部713が取得した処理情報には、ステップS1402で、プリンタドライバの記憶領域1301から取得した処理情報と、ステップS1404で、現在選択されている論理プリンタ毎の記憶領域751から取得した処理情報とが含まれる。
ステップS1402に移行すると、処理情報取得部713は、プリンタドライバの記憶領域1301から、処理情報を取得する。
ステップS1403に移行すると、描画部333の処理情報取得部713は、処理情報記憶部603に含まれる、指定された論理プリンタに対応する記憶領域(例えば、論理プリンタAの記憶領域751a等)に、処理情報があるかを判断する。
指定された論理プリンタに対応する記憶領域に処理情報がない場合、処理情報取得部713は、処理をステップS1405に移行させる。一方、指定された論理プリンタに対応する記憶領域に処理情報がある場合、処理情報取得部713は、処理をステップS1404に移行させる。
ステップS1404に移行すると、処理情報取得部713は、指定された論理プリンタに対応する記憶領域から、処理情報を取得する。
変更処理がない場合、決定部1901は、処理をステップS2103に移行させる。一方、変更処理がある場合、決定部1901は、処理をステップS2102に移行させる。
ステップS2102に移行すると、決定部1901は、処理情報取得部713が取得した処理情報に含まれる変更処理を、他の処理種別(読出処理、転送処理)より前に実行するように実行順序を決定する。また、決定部1901は、複数の変更処理がある場合、複数の変更処理を直列に(順次に)実行するように、複数の変更処理の実行順序を決定する。なお、複数の変更処理の実行順序は、一例として、処理情報取得部713が取得した順序に従って決定する。
ステップS2103に移行すると、描画部333の決定部1901は、処理情報取得部713が取得した処理情報の中に、読出処理があるかを判断する。例えば、決定部1901は、図8(b)に示すように、処理種別を示す情報に「read」の文字列を含む読出処理の処理情報820があるかを判断する。
読出処理がない場合、決定部1901は、処理をステップS2105に移行させる。一方、読出処理がある場合、決定部1901は、処理をステップS2104に移行させる。
ステップS2104に移行すると、決定部1901は、処理情報取得部713が取得した処理情報に含まれる読出処理を、変更処理の後に実行するように処理順序を決定する。また、決定部1901は、複数の読出処理がある場合、複数の読出処理を並列又は直列に実行するように、複数の読出処理の実行順序を決定する。
好ましくは、決定部1901は、複数の読出処理がある場合、複数の読出処理を並列に(並行して)実行するように、複数の読出処理の実行順序を決定する。
ステップS2105に移行すると、描画部333の決定部1901は、処理情報取得部713が取得した処理情報の中に、転送処理があるかを判断する。例えば、決定部1901は、図8(c)に示すように、処理種別を示す情報に「transfer」の文字列を含む転送処理の処理情報830があるかを判断する。
転送処理がない場合、決定部1901は、処理を終了させる。一方、転送処理がある場合、決定部1901は、処理をステップS2106に移行させる。
ステップS2106に移行すると、決定部1901は、処理情報取得部713が取得した処理情報に含まれる転送処理を、他の処理種別の処理(変更処理、読出処理)の後に実行するように処理順序を決定する。また、決定部1901は、複数の転送処理がある場合、複数の転送処理を並列又は直列に実行するように、複数の転送処理の実行順序を決定する。
好ましくは、決定部1901は、複数の転送処理がある場合、複数の転送処理を並列に(並行して)実行するように、複数の読出処理の実行順序を決定する。
上記の処理により、複数の処理実行部605が実行する処理の実行順序が決定される。
(別の一例)
図22は、第4の実施形態に係る描画部、UI部、及び連携プログラムの機能構成の別の一例を示す図である。図22に示す機能構成は、図15に示す第3の実施形態に係る機能構成に対応しており、連携プログラム604に決定部1901が含まれている。
また、図22に示すように、クライアント装置10は、複数の連携プログラム604−1、604−2を実行することができる。
図22において、連携プログラム604の決定部1901は、例えば、図16のステップS1607、S1608において、処理情報管理部721が、処理情報を処理情報記憶部603に記憶するときに、図21に示すような実行順序の決定処理を実行する。
また、連携プログラム604の決定部1901は、例えば、図18のステップS1806、S1807において、処理情報管理部721が、処理情報を処理情報記憶部603に記憶するときに、図21に示すような実行順序の決定処理を実行する。
なお、例えば、インストーラ1520が、クライアント装置10に連携プログラム604−2をインストールするときに、既にクライアント装置10に連携プログラム604−1がインストールされている場合がある。このような場合、決定部1901は、処理情報記憶部603に記憶されている連携プログラム604−1の処理情報と、連携プログラム604−2の処理情報とを組み合わせて、図21に示すような実行順序の決定処理を実行する。
(利用シーンの一例)
図23は、一実施形態に係る利用シーンの一例について説明するための図である。図23において、クライアント装置10には、2台の画像形成装置20−1、20−2が接続されているものとする。
論理プリンタA2301は、プリンタドライバ303を用いて、画像形成装置20−1でモノクロ印刷を行うための論理プリンタであるものとする。また、論理プリンタBは、プリンタドライバ303を用いて、画像形成装置20−3でカラー印刷を行うための論理プリンタであるものとする。
連携プログラム604−1は、プリンタドライバ303と連携して、ログ収集を行うためのプログラムであり、クライアント装置10のプログラム領域に、ログ収集を実行する処理実行部605−1を配置しているものとする。また、連携プログラム604−2は、プリンタドライバ303と連携して、ユーザ認証を行うためのプログラムであり、クライアント装置10のプログラム領域に、ユーザ認証を実行する処理実行部605−2を配置しているものとする。
上記の構成において、クライアント装置10の利用者(又は管理者)は、プリンタドライバ303の全ての論理プリンタでログ収集を行いたい場合、処理実行部605−1の処理情報であるログ収集の処理情報2311を、プリンタドライバの記憶領域1301に保存する。例えば、利用者は、図17(b)に示すような連携機能の設定画面1720を用いて、「ログ収集」に対応する、「各論理プリンタに共通に連携するか否かを設定するための設定欄1723」を選択する。これにより、利用者は、論理プリンタ毎に設定を行わなくても、プリンタドライバ303の全ての論理プリンタでログ収集を行うことができるようになる。
また、クライアント装置10の利用者は、カラー印刷を行うときに、認証を行って印刷の可否を決定したい場合、処理実行部605−2の処理情報であるユーザ認証の処理情報2312を、論理プリンタBの記憶領域751bに保存する。例えば、利用者は、図10(b)に示すような拡張機能の選択画面1020において、「個人認証」に対応するチェックボックス1022を選択する。これにより、利用者は、論理プリンタB2302を用いてカラー印刷を行うときに、選択的に認証処理を実行させることができるようになる。
[第5の実施形態]
第1〜4の実施形態により、V4プリンタドライバであるプリンタドライバ303に、利用者の利便性を維持しつつ、独自の拡張機能を容易に追加することができるようになる。このとき、プリンタドライバ303に追加された拡張機能の設定を、どのように行うかという課題がある。
例えば、V3プリンタドライバでは、前述したように、拡張機能を実現するベンダ独自のポートモニタを利用して独自の拡張機能を実現していた。この場合、ユーザは、例えば、図24に示すようなポートモニタの設定画面2400を用いて、独自の拡張機能の設定を行うことができる。
しかし、ポートモニタの設定画面2400は、ポートモニタに対して予め組み込まれた機能について設定を行うものであり、例えば、異なるタイミングで導入された他の拡張機能の設定を行うことはできないという問題がある。
そこで、第5の実施形態では、プリンタドライバ303に追加された拡張機能の設定を行う好適な方法の例について説明する。
<機能構成>
(クライアント装置の機能構成)
図25は、第5の実施形態に係るクライアント装置の機能構成図である。本実施形態に係るクライアント装置10のUI部305は、処理情報記憶部603に記憶された処理情報に基づいて、処理実行部605が実行する拡張機能の設定画面を表示するデバイス設定表示部2501を有している。
図26は、第5の実施形態に係る処理実行部605の機能構成の例を示す図である。本実施形態に係る処理実行部605は、処理制御部731、処理部732に加えて、設定画面情報管理部2601、設定部2602、及び設定値管理部2603等を有している。
設定画面情報管理部2601は、処理実行部605が実行する拡張機能の設定画面を表示するための情報(以下、設定画面情報と呼ぶ)を、所定の記憶領域(例えば、ファイル、レジストリ等)に記憶して管理する。
設定画面情報には、デバイス設定表示部2501が、拡張機能の設定画面を構築するために用いる情報や、設定画面への操作に対する処理を定義する情報等が含まれる。例えば、設定画面情報には、操作ボタンの配置情報、操作イベントハンドラ、アイコン、用語情報、ヘルプ情報等が含まれる。
設定値管理部2603は、処理実行部605が実行する拡張機能の設定値を、所定の記憶領域(例えば、ファイル、レジストリ等)に記憶して管理する。また、本実施形態に係る処理部732は、設定値管理部2603が管理する設定値に従って、処理実行部605が実行する拡張機能を実行する。
上記の構成により、設定部2602は、UI部305のデバイス設定表示部2501からの要求に応じて、設定画面情報管理部2601が管理する設定画面情報を、デバイス設定表示部2501に提供する。また、設定部2602は、デバイス設定表示部2501から通知されるイベント通知(例えば、ユーザによる操作通知等)を受付し、受付した操作内容に応じて、設定値管理部2603が管理する設定値を変更する。
一方、図25に示すUI部305のデバイス設定表示部2501は、処理情報記憶部603に記憶された処理情報を用いて、プログラム領域606に記憶された1つ以上の処理実行部605を特定し、特定した処理実行部605から設定画面情報を取得する。また、デバイス設定表示部2501は、取得した設定画面情報を用いて、1つ以上の処理実行部605が実行する拡張機能の設定を行う設定画面(拡張機能の設定画面)を表示する。
デバイス設定表示部2501は、表示した設定画面において、処理実行部605に対する操作を受付すると、受付した操作内容を示すイベント通知を、処理実行部605に通知する。また、デバイス設定表示部2501は、表示した設定画面において、UI部305に対する操作(例えば、終了操作等)を受付すると、デバイス設定表示部2501で対応する処理を実行する。
なお、図24に示す第5の実施形態に係るクライアント装置10の上記以外の機能構成は、例えば、図6に示す一実施形態に係るクライアント装置10と同様である。
<処理の流れ>
続いて、第5の実施形態に係る情報処理方法の処理の流れについて説明する。
(デバイス設定画面の表示処理)
図27は、第5の実施形態に係るデバイス設定画面の表示処理の例を示すシーケンス図である。この処理は、UI部305のデバイス設定表示部2501が、処理情報記憶部603に記憶された処理情報に基づいて、処理実行部605が実行する拡張機能の設定画面を表示する処理の例を示している。
なお、図27に示す処理の開始時点において、クライアント装置10のプログラム領域606には、処理実行部605a〜605cが記憶されており、処理情報記憶部603には、処理実行部605a〜605cの処理情報が記憶されているものとする。
ステップS2701において、アプリケーション301は、例えば、ユーザの操作等に応じて、デバイス設定画面の表示を要求する設定画面の表示要求を、OS302に通知する。
ステップS2702において、OS302は、アプリケーション301から通知された設定画面の表示要求を、UI部305に通知する。なお、UI部305は、アプリケーション301がデスクトップアプリ321である場合、プリンタドライバ303の拡張設定部313であり、アプリケーション301がストアアプリ311である場合、ストアデバイスアプリ304である。
ステップS2703において、UI部305は、例えば、図28(a)に示すようなデバイス設定画面2810を、クライアント装置10の表示装置102等に表示させる。本実施形態に係るデバイス設定画面2810には、拡張設定画面の表示操作を受付する「デバイスの拡張設定」ボタン2811が含まれる。ユーザは、デバイス設定画面2810に含まれる「デバイスの拡張設定」ボタン2811を選択することにより、拡張設定画面の表示操作を行うことができる。
ステップS2704において、UI部305が、デバイス設定画面2810において、拡張設定画面の表示操作を受付すると、UI部305のデバイス設定表示部2501は、ステップS2705以降の処理を実行する。
なお、ステップS2701〜S2704の処理は、拡張設定画面の表示操作を受付する処理の一例である。別の一例として、ユーザは、図28(b)に示すような、OS302のコントロールパネルのデバイスとプリンタ画面2820等から、拡張設定画面の表示操作を行うこともできる。
例えば、OS302のシェル拡張機能により、論理プリンタ(プリンタアイコン)2821を右クリックしたときに表示されるメニュー2822に、「デバイスの拡張設定」の項目2823を追加する。ユーザは、この「デバイスの拡張設定」の項目2823を選択することにより、拡張設定画面の表示操作を行うものであっても良い。
ステップS2705、S2706において、UI部305のデバイス設定表示部2501は、処理情報記憶部603に記憶された処理情報を取得する。この処理情報には、例えば、図8に示す処理情報810のように、処理実行部605が格納されたパスを示す情報(パス情報)812が含まれる。
好ましくは、処理情報記憶部603に記憶された処理情報には、処理実行部605が拡張機能の設定画面を有しているか否かを示す情報が含まれる。
なお、処理実行部605が実行する拡張機能には、拡張機能の設定画面を有する拡張機能と、拡張機能の設定画面を有していない拡張機能とがある。拡張機能の設定画面を有する拡張機能の例を、表3に示す。
表3に示す拡張機能「印刷データ解析」のうち、課金予測、印刷プレビュー等の処理は、ダイアログ等の拡張機能の設定画面を表示させて、ユーザによる設定値の入力や、確認操作等を受付することができる。
例えば、課金予測の処理では、両面、集約、カラー等の設定状態と、印刷に要するコスト等を表示するダイアログを、表示装置102に表示させて、ユーザに対して設定値の妥当性の判断を促し、必要に応じて設定値の変更を受付することができる。
また、表3に示す拡張機能「印刷データ変更」のうち、認証情報の追加、カラー→グレースケール変換、PDF変換等の処理は、ダイアログ等の拡張機能の設定画面を表示させて、ユーザによる設定値の入力や、確認操作等を受付することができる。
例えば、認証情報の追加の処理では、認証情報の入力欄と、認証情報の追加を行うか否かを設定するチェックボックス等を表示するダイアログを、表示装置102に表示させて、ユーザに対して設定を促し、入力された設定値を受付することができる。
さらに、表3に示す拡張機能「印刷データの転送」のうち、外部サーバへの印刷データの転送等の処理は、ダイアログ等の拡張機能の設定画面を表示させて、ユーザによる設定値の入力や、確認操作等を受付することができる。
例えば、外部サーバへの印刷データの転送等の処理では、転送先のサーバ情報(サーバ名、IPアドレス等)等を表示するダイアログを、表示装置102に表示させて、ユーザによる設定値の入力や、確認操作等を受付することができる。
ステップS2707において、UI部305のデバイス設定表示部2501は、取得した処理情報を用いて、プログラム領域606に記憶された処理実行部605を特定する。
好ましくは、デバイス設定表示部2501は、取得した処理情報を用いて、プログラム領域606に記憶された処理実行部605a〜605cのうち、拡張機能の設定画面を有する処理実行部605を特定する。
ステップS2708〜S2713において、UI部305のデバイス設定表示部2501は、処理実行部605a〜605cから、処理実行部605が実行する拡張機能の設定画面を表示するための設定画面情報を取得する。
好ましくは、UI部305のデバイス設定表示部2501は、プログラム領域606に記憶された処理実行部605a〜605cのうち、拡張機能の設定画面を有する処理実行部605から、設定画面情報を取得する。ここでは、一例として、処理実行部605a、605cが、拡張機能の設定画面を有しており、処理実行部605bは、拡張機能の設定画面を有していないものとして、以下の説明を行う。
ステップS2708において、UI部305のデバイス設定表示部2501は、処理実行部605aに対して、設定画面情報の取得を要求する。
ステップS2709において、処理実行部605aの設定部2602は、設定画面情報の要求を受付すると、設定画面情報管理部2601が管理する設定画面情報を取得する。
ステップS2710において、処理実行部605aの設定部2602は、取得した設定画面情報を、UI部305に送信する。
同様に、ステップS2711において、UI部305のデバイス設定表示部2501は、処理実行部605cに対して、設定画面情報の取得を要求する。
ステップS2712において、処理実行部605cの設定部2602は、設定画面情報の要求を受付すると、設定画面情報管理部2601が管理する設定画面情報を取得する。
ステップS2713において、処理実行部605cの設定部2602は、取得した設定画面情報を、UI部305に送信する。
ステップS2714において、UI部305のデバイス設定表示部2501は、例えば、図29に示すようなデバイスの拡張設定画面2900を、表示装置102等に表示させる。本実施形態に係るデバイスの拡張設定画面2900には、プログラム領域608に記憶された処理実行部605が実行する拡張機能の設定を行うためのボタン、例えば、図29の「ポートの構成」ボタン2901が含まれる。ユーザは、例えば、図29に示すデバイスの拡張設定画面2900から、「ポートの構成」ボタン2901を選択することにより、拡張機能の設定操作を行うことができる。
ステップS2715において、UI部305のデバイス設定表示部2501は、拡張機能の設定操作を受付すると、ステップS2716以降の処理を実行する。
ステップS2716において、UI部305のデバイス設定表示部2501は、例えば、図30(a)に示すような、拡張機能の選択画面3000を、表示装置102等に表示させる。
図30(a)の例では、拡張機能の選択画面3000には、「名前」、「説明」、「連携する」等項目が表示されている。「名前」は、プログラム領域608に記憶された処理実行部605a〜605cの名前等を示す情報である。「説明」は、処理実行部605a〜605cが実行する拡張機能の概要を示すユーザ向けの情報である。「連携する」には、処理実行部605a〜605cが実行する拡張機能を利用するか否かを設定するチェックボックス3001や、拡張機能の設定を行うための設定ボタン3002、3003等が含まれる。
図30(a)に示す拡張機能の選択画面3000において、ユーザは、例えば、チェックボックス3001を選択状態とすることにより、対応する拡張機能を利用することができる。ここで設定された情報は、例えば、論理プリンタに対応する記憶領域であるQueuePropertyBag420等に記憶される。
また、ユーザは、拡張機能「データ監視」に対応する設定ボタン3002を選択することにより、例えば、図30(b)に示すようなデータ監視機能の設定画面3010を表示させることができる。また、ユーザは、拡張機能「クラウド転送」に対応する設定ボタン3003を選択することにより、例えば、図30(c)に示すようなクラウド転送機能の設定画面3020を表示させることができる。
なお、UI部305のデバイス設定表示部2501は、拡張機能の設定画面を有する処理実行部605が1つである場合、拡張機能の選択画面3000の表示を省略して、拡張画面の設定画面を、表示装置102等に表示させるものであっても良い。
ステップS2717において、UI部305のデバイス設定表示部2501は、例えば、図30(a)に示すような拡張機能の選択画面3000により、ユーザによる拡張機能の選択操作を受付する。
ステップS2712において、UI部305のデバイス設定表示部2501は、選択された拡張機能の設定画面を、表示装置102等に表示させる。
上記の処理により、UI部305は、プリンタドライバ303に追加された1つ以上の拡張機能の設定画面を表示させて、ユーザによる設定操作を受付することができるようになる。
(拡張機能の設定処理)
図31は、第5の実施形態に係る拡張機能の設定処理の例を示すシーケンス図である。なお、図31に示す処理の開始時点において、図26に示すデバイス設定画面の表示処理により、処理実行部605aに対応する拡張機能の設定画面、例えば、図30(b)に示すデータ監視の設定画面3010が、表示装置102等に表示されているものとする。
ステップS3101において、UI部305のデバイス設定表示部2501は、例えば、データ監視の設定画面3010に対するユーザの設定操作を受付する。
ステップS3102において、UI部305のデバイス設定表示部2501は、受付した操作の操作対象を特定する。例えば、デバイス設定表示部2501は、受付した操作が、処理実行部605aが実行するデータ監視機能の設定操作であるか、UI部305に対する操作(例えば、設定終了操作等)であるかを特定する。
ここでは、ステップS3101において、データ監視の設定画面3010に対する設定操作が行われているので、デバイス設定表示部2501は、受付した操作が、データ監視機能の設定操作であると判断し、ステップS3103の処理を実行する。
ステップS3103において、UI部305のデバイス設定表示部2501は、受付した操作内容を含むイベント通知を、処理実行部605aに通知する。
例えば、デバイス設定表示部2501は、図30(b)に示すデータ監視の設定画面3010において、入力されたポート名とIPアドレスとを含むイベント通知を、処理実行部605aに通知する。
ステップS3104において、処理実行部605aの設定部2602は、イベント通知に含まれる操作内容を受付し、ステップS3105において、イベント通知を受付したことを示す応答メッセージをUI部305に通知する。
同様にして、ユーザは、処理実行部605cに対応する拡張機能の設定画面、例えば、図30(c)に示すクラウド転送の設定画面3020を表示させて、転送サーバ名、転送サーバアドレス等の設定値を設定することができる。
ステップS3106において、UI部305のデバイス設定表示部2501は、例えば、ユーザによる設定終了操作を受付する。
ステップS3107において、UI部305のデバイス設定表示部2501は、受付した操作の操作対象を特定する。ここでは、ステップS3106において、設定終了操作が行われているので、デバイス設定表示部2501は、UI部305に対する操作であると判断し、ステップS3108以降の処理を実行する。
ステップS3108において、UI部305のデバイス設定表示部2501は、設定処理が終了したことを示す終了通知を、処理実行部605aに送信する。
ステップS3109において、処理実行部605aの設定部2602は、終了通知を受付すると、例えば、ステップS3104等で受付した操作内容に応じた設定値を、設定値管理部2603が管理する設定値に反映させる(記憶させる)。例えば、設定部2602は、ステップS3104で受付したイベント通知に含まれていたポート名、IPアドレス等の情報を、設定値管理部2603が管理する設定値に反映させる。
ステップS3110において、処理実行部605aの設定部2602は、設定処理を終了したことを示す応答メッセージを、UI部305に送信する。
同様にして、ステップS3111において、UI部305のデバイス設定表示部2501は、設定処理が終了したことを示す終了通知を、処理実行部605cに送信する。
ステップS3112において、処理実行部605cの設定部2602は、終了通知を受付すると、受付した操作内容に応じた設定値を、設定値管理部2603が管理する設定値に反映させる(記憶させる)。
ステップS3112において、処理実行部605cの設定部2602は、設定処理を終了したことを示す応答メッセージを、UI部305に送信する。
上記の処理により、UI部305は、プリンタドライバ303に追加された1つ以上の拡張機能の設定画面を表示させて、ユーザによる設定内容を処理実行部605が実行する処理に反映させることができるようになる。
(印刷処理)
図32は、第5の実施形態に係る印刷処理の例を示すシーケンス図である。この処理は、図31に示した拡張機能の設定処理で設定された設定値を用いて、処理実行部605が拡張機能を実行する場合の印刷処理の例を示している。
なお、図32に示す印刷処理の開始時点において、例えば、図30(a)に示すような拡張機能の選択画面3000により、処理実行部605aが実行する拡張機能と、処理実行部605cが実行する拡張機能の連携が有効に設定されているものとする。また、処理実行部605bが実行する拡張機能の連携は無効に設定されているものとする。
ステップS3201において、アプリケーション301は、例えば、ユーザの印刷操作等に応じて、OS302に印刷処理を要求する。
ステップS3202において、OS302は、アプリケーション301からの印刷処理の要求に応じて、プリンタドライバ303の描画部333に印刷命令を通知する。
ステップS3203において、描画部333の描画データ生成部712は、OS302からの印刷命令に応じて、印刷データを生成する。
ステップS3204、S3205において、描画部333の処理情報取得部713は、処理情報記憶部603から、処理情報を取得する。
ステップS3206において、描画部333の要求部714は、拡張機能を実行させる処理実行部605を特定する。例えば、要求部714は、図30(a)に示すような拡張機能の選択画面3000により、QueuePropertyBag420等に記憶された情報に基づいて、拡張機能を実行させる処理実行部605を特定する。ここでは、処理実行部605aが実行する拡張機能と、処理実行部605cが実行する拡張機能を実行させるものとして、以下の説明を行う。
ステップS3207において、描画部333の要求部714は、処理実行部605aに、印刷データに対する所定の処理(例えば、データ監視機能)を要求する。
ステップS3208において、処理実行部605aの処理部732は、設定値管理部2603が管理する設定内容(設定値)を取得する。
ステップS3209において、処理実行部605aの処理部732は、取得した設定内容に従って、所定の処理を実行し、ステップS3210において、処理が完了したことを示す完了通知を、描画部333に送信する。
同様にして、ステップS3211において、描画部333の要求部714は、処理実行部605cに、印刷データに対する所定の処理(例えば、クラウド転送機能)を要求する。
ステップS3212において、処理実行部605cの処理部732は、設定値管理部2603が管理する設定内容(設定値)を取得する。
ステップS3213において、処理実行部605cの処理部732は、取得した設定内容に従って、所定の処理を実行し、ステップS3214において、処理が完了したことを示す完了通知を、描画部333に送信する。
上記の処理により、クライアント装置10は、例えば、図31に示した拡張機能の設定処理で設定された設定値を用いて、処理実行部605が拡張機能を実行する印刷処理を実行することができるようになる。
なお、本実施形態は、第1〜4の実施形態と組み合わせて実施することができる。例えば、図32に示す印刷処理に、第1〜4の実施形態に係る印刷処理を適用することができる。
以上、本発明の各実施形態によれば、V4プリンタドライバ、又は同様の制限を有するプリンタドライバ303において、利用者の利便性を維持しつつ、プリンタドライバ303に独自の拡張機能を容易に追加することができるようになる。