以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
<システム構成>
まず、本実施形態に係る情報処理システム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は、画像形成装置20、サーバ装置30等とネットワークNを介して接続され、プリンタドライバ(印刷を制御するプログラム)を実行する情報処理装置である。
図6において、クライアント装置10は、アプリケーション(アプリケーションプログラム)301、OS302、プリンタドライバ303、印刷情報記憶部610、及び通信部620等を含む。このうち、アプリケーション301、OS302、及びプリンタドライバ303は、図4に示すアプリケーション301、OS302、及びプリンタドライバ303に対応している。
印刷情報記憶部610は、プリンタドライバ303から利用可能な記憶領域であり、プリンタドライバ303が印刷に用いる情報である印刷情報611を記憶する。印刷情報記憶部610は、例えば、PrintTicket、レジストリ、又は図5で説明したPropertyBag400、独自記憶領域500等で実現可能である。
好ましくは、印刷情報記憶部610は、QueuePropertyBag420、又はPrintTicket等で実現される。なお、PrintTicketは、アプリケーション301が、印刷(ジョブ)毎に作成し、プリンタドライバ303が印刷に用いる情報である印刷情報611を記憶する記憶領域である。
この印刷情報611には、例えば、アプリケーション301によって設定された印刷の設定情報、プリンタドライバ303が保持している既定(デフォルト)の設定情報、及び画像形成装置20の情報等が含まれる。
また、本実施形態に係る印刷情報611には、描画部333で生成する印刷データに関する所定の処理の実行情報612が含まれる。
この所定の処理には、例えば、印刷データをサーバ装置30にアップロードする処理、印刷データのプレビューを表示する処理、表示したプレビューに対して印刷設定の変更を受け付ける処理等の様々な処理が含まれる。
また、実行情報612は、例えば、プラグイン実行部603で実行する所定の処理の設定情報、プラグイン実行部603で実行するプラグイン、又はプラグインの取得先を示す参照情報等が含まれる。
通信部620は、クライアント装置10が、ネットワークNを介して、画像形成装置20、又はサーバ装置30等と通信するための手段であり、例えば、クライアント装置10で実行されるOS302、及び図2の通信I/F107等によって実現される。
プリンタドライバ303は、印刷を制御するプログラムであり、図4の説明で前述したように、拡張設定部313、設定制御部323、及び描画部333を含む。なお、本実施形態では、拡張設定部313、及び設定制御部323は、一般的なプリンタドライバの構成と同様で良いので、ここでは説明を省略する。
描画部333は、アプリケーション301において印刷指示が行われた印刷対象データから印刷データを作成する手段であり、例えば、描画制御部601、印刷情報取得部602、プラグイン実行部603、印刷データ生成部604等を含む。なお、描画部333は、例えば、フィルタパイプライン方式を採用するV4プリンタドライバの1つのフィルタモジュール等で実現される。
描画制御部601は、印刷を要求するアプリケーションが印刷を開始させたときに、OS302から送られてくる印刷要求(描画命令)に応じて、描画部333の描画処理を制御する。
印刷情報取得部602は、例えば、描画制御部601、又は印刷データ生成部604等の要求に応じて印刷情報記憶部610から、描画部333が印刷に用いる印刷情報611を取得する。
プラグイン実行部(処理実行部)603は、印刷情報記憶部610が記憶する印刷情報611に、描画部333で生成する印刷データに関する所定の処理の情報である実行情報612が含まれる場合、実行情報612に基づいて所定の処理を実行する。
一例として、プラグイン実行部603は、例えば、印刷データをサーバ装置30にアップロードする処理等の所定の処理を実行する機能を予め有している。また、実行情報612には、例えば、アップロード先のパス情報(宛先情報の一例)等、所定の処理を実行するために必要な設定情報等が含まれる。
別の一例として、実行情報612には、例えば、印刷データをサーバ装置30にアップロードする処理等の所定の処理を実現するためのスクリプト(又は実行ファイル等)や、スクリプトの取得先を示す参照情報等が含まれる。また、プラグイン実行部603は、所定の処理を実現するためのスクリプト(又は実行ファイル等)を実行する。
印刷データ生成部604は、印刷情報記憶部610が記憶する印刷情報611に基づいて、印刷対象データを、画像形成装置20で印刷可能な印刷データに変換する。
上記の構成により、プリンタドライバ303の描画部333は、印刷情報記憶部610に記憶する印刷情報611に所定の処理の実行情報612が含まれている場合、印刷データの生成処理に加えて、所定の処理を実行することができるようになる。
また、描画制御部601、印刷情報取得部602、プラグイン実行部603、及び印刷データ生成部604は、1つ以上のフィルタ(描画部333)を含むV4プリンタドライバにおける1つのフィルタの範囲内で提供される。
<処理の概要>
続いて、本実施形態に係るクライアント装置10、及び情報処理システム1による情報処理方法の処理の流れについて説明する。
(プリンタドライバの描画処理の概要)
図7は、一実施形態に係るプリンタドライバ303の描画処理の概要を示すフローチャートである。
ステップS701において、プリンタドライバ303の描画制御部601は、印刷を要求するアプリケーション301からの印刷要求に応じて、OS302から通知される印刷(描画)を要求する描画命令を受け付ける。
ステップS702において、描画制御部601は、印刷情報取得部602を用いて、印刷情報記憶部610から、印刷に用いる情報である印刷情報611を取得する。この印刷情報611には、例えば、アプリケーション301によって設定された印刷の設定情報、プリンタドライバ303が保持している既定の設定情報、画像形成装置20の情報、及び所定の処理の実行情報612等が含まれ得る。
ステップ703において、描画制御部601は、例えば、印刷データ生成部604に印刷データの生成を指示し、印刷データ生成部604は、印刷情報611に基づいて、印刷対象データを印刷データに変換する(印刷データを生成する)。
ステップS704において、描画制御部601(又は印刷データ生成部604)は、印刷情報記憶部610に記憶された印刷情報611に、所定の処理の実行情報612が含まれるか否かを判断する。
印刷情報記憶部610に記憶された印刷情報611に所定の処理の実行情報612が含まれない場合、描画制御部601(又は印刷データ生成部604)は、処理をステップS707に移行させる。一方、印刷情報記憶部610に記憶された印刷情報611に、所定の処理の実行情報612が含まれる場合、描画制御部601(又は印刷データ生成部604)は、処理をステップS705に移行させる。
ステップS705に移行すると、プラグイン実行部603は、所定の処理の実行情報612に基づいて、処理の処理(例えば、生成した印刷データをサーバ装置30にアップロードする処理等)を実行する。
ステップS706において、描画制御部601は、印刷を実行する印刷データがあるかを判断する。これは、例えば、ステップS705の実行した所定の処理が、印刷データをサーバ装置30にアップロードする処理である場合等、印刷データを印刷しなくても良い場合があるためである。
印刷を実行する印刷データがない場合、描画制御部601は、描画処理を終了させる。一方、印刷を実行する印刷データがある場合、描画制御部601は、処理をステップS707に移行させる。
ステップS707に移行すると、描画制御部601は、印刷データ生成部604が生成した印刷データを、OS302のスプーラ等に出力する。印刷データは、OS302により、通信部620を介して、画像形成装置20に送信される。
なお、図7に示す処理の流れは一例である。例えば、図7のステップS704、S705の処理は、ステップS703の前で行われるものであっても良い。
また、図7のステップS706の処理は省略可能である。例えば、印刷データがない場合、ステップS707において、印刷データは出力されないので、ステップS706の判断を行わずに、ステップS707の処理を実行するものであっても良い。
(情報処理システムの処理の例)
続いて、シーケンス図を用いて、本実施形態に係る情報処理システム1による情報処理方法の基本的な処理の流れについて、さらに詳しく説明する。
図8は、一実施形態に係る情報処理システムの処理の一例を示すシーケンス図である。
ステップS801において、アプリケーション301は、利用者による印刷操作を受け付けると、ステップS802において、OS302に印刷を要求する印刷要求を通知する。
ステップS803において、OS302は、アプリケーション301からの印刷要求を受け付けると、プリンタドライバ303に、印刷対象データの描画(印刷データの生成)を指示する描画命令を通知する。なお、プリンタドライバ303に通知された描画命令は、描画部333の描画制御部601によって受け付けられる。
ステップS804において、描画制御部601は、OS302から通知される描画命令を受け付けると、印刷情報取得部602に、印刷情報の取得を指示する。
ステップS805において、印刷情報取得部602は、印刷情報記憶部610に記憶された印刷情報を読み出す。ここでは、一例として、印刷情報取得部602は、印刷情報記憶部610に記憶された印刷情報611のうち、例えば、アプリケーション301によって保存された印刷の設定情報、プリンタドライバ303の既定の設定情報、及び画像形成装置20の情報等を読み出すものとする。
ステップS806において、印刷情報取得部602は、取得した印刷情報を、描画制御部601に出力する。
ステップS807において、描画制御部601は、印刷データ生成部604に、印刷データの生成を指示する。この指示には、例えば、ステップS806で取得した印刷情報等が含まれる。
ステップS808、S809において、印刷データ生成部604は、印刷対象データを記憶するOS302のスプーラから印刷対象データを取得する。
ステップS810において、印刷データ生成部604は、描画制御部601から通知された印刷情報に基づいて、印刷対象データを、画像形成装置20で印刷可能な印刷データに変換することにより、印刷データを生成する。
ステップS811、S812において、印刷データ生成部604は、印刷情報取得部602を用いて、印刷情報記憶部610に記憶された印刷情報611に含まれる実行情報612を取得する。ここでは、印刷情報611に、所定の処理の実行情報612が含まれているものとして、以下の説明を行う。
ステップS813において、印刷データ生成部604は、取得した実行情報612を用いて、プラグイン実行部603に、所定の処理(プラグイン)の実行を指示する。なお、実行情報612、及び所定の処理の具体的な例については、第1〜4の実施形態で後述する。
ステップS814において、プラグイン実行部603は、印刷データ生成部604から指示された所定の処理を実行し、所定の処理を終えると、ステップS815において、所定の処理の実行結果を通知する。
ステップS816、S617において、印刷データ生成部604は、印刷を実行する印刷データがある場合、生成した印刷データを、描画制御部601を介して、OS302のスプーラに出力する。
ステップS818において、OS302は、プリンタドライバ303から受け付けた印刷データを、通信部620を用いて、画像形成装置20に送信する。
ステップS819において、画像形成装置20は、クライアント装置10のOS302から受け付けた印刷データを印刷し、ステップS820において、印刷を完了したことを示す完了通知を、クライアント装置10のOS302に通知する。
ステップS821、S822、S823において、OS302が受け付けた完了通知は、プリンタドライバ303(描画制御部601)、及びアプリケーション301に通知される。
なお、図8に示す処理では、印刷データ生成部604が、プラグイン実行部603による所定の処理の実行を制御しているが、この制御は、描画制御部601が行うものであっても良い。
(別の一例)
図9は、一実施形態に係るシステムの処理の別の一例を示すシーケンス図である。なお、図9のステップS801〜S803、及びS807〜S810の処理は、図8に示す処理と同様なので、ここでは、図8に示す処理との相違点を中心に説明を行う。
ステップS901において、描画制御部601は、OS302から通知される描画命令を受け付けると、印刷情報取得部602に、印刷情報記憶部610に記憶された、所定の処理の実行情報612を含む印刷情報611の取得を指示する。
ステップS902において、印刷情報取得部602は、印刷情報記憶部610に記憶された、所定の処理の実行情報612を含む印刷情報611を読み出す。この印刷情報611には、例えば、アプリケーション301によって保存された印刷の設定情報、プリンタドライバ303の既定の設定情報、画像形成装置20の情報、及び所定の処理の実行情報612等が含まれる。
ステップS903において、印刷情報取得部602は、取得した印刷情報611を、描画制御部601に出力する。
ステップS904において、描画制御部601は、取得した印刷情報611に含まれる実行情報612を用いて、プラグイン実行部603に、所定の処理の実行を指示する。
ステップS905において、プラグイン実行部603は、描画制御部601から指示された所定の処理を実行し、所定の処理を終えると、ステップS906において、所定の処理の実行結果を通知する。
このように、描画制御部601が、プラグイン実行部603による所定の処理の実行を制御することにより、印刷データ生成部604が印刷データを生成した後とは異なるタイミングで、プラグイン実行部603に所定の処理を実行させることができるようになる。
ステップS807〜S810において、描画制御部601は、印刷データ生成部604に印刷データの生成を実行させて、ステップS907において、印刷データ生成部604から、生成された印刷データを取得する。
ステップS908において、例えば、図8のステップS817〜S823に示す印刷データの送信処理が実行される。
<処理の詳細>
続いて、具体的な実施形態を例示して、本実施形態に係るクライアント装置10、及び情報処理システム1による情報処理方法の処理の流れについて、詳細に説明する。
[第1の実施形態]
<機能構成>
図10は、第1の実施形態に係るクライアント装置10の機能構成の一例を示す図である。図10に示すクライアント装置10は、図6に示すクライアント装置10に示す印刷情報記憶部610として、図5で説明したPropertyBag400を利用する。なお、他の機能構成は、図6に示すクライアント装置10と同様である。
第1の実施形態では、プラグイン実行部603は、所定の処理の一例として、印刷データ生成部604が生成した印刷データを、ロケーションフリー印刷のファイルサーバであるサーバ装置30の所定のパスに送信する機能を、予め有しているものとする。
また、プラグイン実行部603が、印刷データを送信する宛先のパス情報は、印刷情報611に含まれる実行情報612によって、指定されるものとする。
さらに、印刷情報611は、PropertyBag400のQueuePropertyBag420に記憶されているものとする。
QueuePropertyBag420は、OS302が提供する機能(例えば、ポイントアンドプリント機能等)を利用して、プリンタドライバ303をクライアント環境に移行させるとき、設定情報等が引き継がれる。したがって、QueuePropertyBag420は、印刷情報611を記憶する印刷情報記憶部610として、好適である。
<処理の詳細>
図11は、第1の実施形態に係る情報処理システムの処理の一例を示すシーケンス図である。なお、図11のステップS801〜S810の処理は、図8に示す処理と同様なので、ここでは、図8に示す処理との相違点を中心に説明を行う。
ステップS1101、S1102において、印刷データ生成部604は、印刷情報取得部602を用いて、PropertyBag400に記憶された印刷情報611に含まれる実行情報612を取得する。本実施形態では、実行情報612には、プラグイン実行部603が、印刷データを送信するファイル保存先のパスを示す情報が含まれているものとする。図12(a)に、第1の実施形態に係る印刷情報611に含まれる実行情報612の一例のイメージを示す。
図12(a)の例では、QueuePropertyBag420に記憶された印刷情報611に、ファイルの保存先のパスを示す文字列1201が定義された実行情報612が含まれている。
このように、実行情報612は、実行情報612としてのキー1202と、実行情報である文字列とを組合せて、印刷情報611に記憶されている。
図11に戻り、シーケンス図の説明を続ける。
ステップS1103において、印刷データ生成部604は、取得した実行情報612に基づいて、プラグイン実行部603に、所定の処理の実行を指示する。この指示には、例えば、印刷データ、及び実行情報612等が含まれる。
ステップS1104、S1105において、プラグイン実行部603は、所定の処理1000の一例として、印刷データ生成部604が生成した印刷データを、サーバ装置30の所定のパスに送信する処理1000を実行する。
例えば、ステップS1104、S1005において、プラグイン実行部603は、OS302を介して、実行情報612に含まれるサーバ装置30のパス情報に従って、サーバ装置30に印刷データを送信する。
なお、図11に示す処理1000は、プラグイン実行部603が実行する所定の処理の一例である。プラグイン実行部603は、予め定められた処理を、実行情報612に含まれる設定情報に従って実行するものであれば良い。
ステップS1106、S1107において、プラグイン実行部603は、所定の処理1000の実行が完了すると、所定の処理が完了したことを示す完了通知を、印刷データ生成部604、描画制御部601等に通知する。
(別の一例)
図11に示す処理では、印刷情報記憶部610が、PropertyBag400のQueuePropertyBag420である場合の例について説明を行った。
ここでは、別の一例として、印刷情報記憶部610が、アプリケーション301が、印刷(ジョブ)毎に作成し、印刷情報611を記憶する記憶領域であるPrintTicketである場合の例について説明する。
<機能構成>
図13は、第1の実施形態に係るクライアント装置の機能構成の別の一例を示す図である。図13に示すクライアント装置10は、図6に示すクライアント装置10に示す印刷情報記憶部610として、PrintTicket1320を利用する。
この場合、例えば、図5で前述したプリンタドライバ303がアクセス可能な独自記憶領域500等に、既定(デフォルト)のPrintTicket1310を予め記憶しておく。この既定のPrintTicket1310には、実行情報612を含む既定の印刷情報1311が含まれる。
アプリケーション301は、印刷を要求する際に、独自記憶領域500に記憶された既定のPrintTicket1310を用いて、印刷対象データのPrintTicket1320を作成する。この処理により、アプリケーション301が、印刷毎に生成するPrintTicket1320に、独自記憶領域500に記憶した実行情報612が含まれるようになる。
<処理の流れ>
図14は、第1の実施形態に係るアプリケーションの印刷要求処理の一例を示すフローチャートである。
ステップS1401において、アプリケーション301は、例えば、利用者による印刷処理を受け付ける。
ステップS1402において、アプリケーション301は、所定の記憶領域(例えば、独自記憶領域500)に、既定のPrintTicket1310が記憶されているか否かを判断する。
所定の記憶領域に、既定のPrintTicket1310が記憶されていない場合、アプリケーション301は、ステップS1403において、通常通り、印刷の設定情報を含む、印刷対象データの印刷に用いるPrintTicketを作成する。
一方、所定の記憶領域に、既定のPrintTicket1310が記憶されている場合、アプリケーション301は、処理をステップS1404に移行させる。
ステップS1404に移行すると、アプリケーション301は、所定の記憶領域から、既定のPrintTicket1310を取得する。
ステップS1405において、アプリケーション301は、既定のPrintTicket1310に、印刷の設定情報を反映し、印刷対象データの印刷に用いるPrintTicket1320を作成する。
ステップS1406において、アプリケーション301は、印刷対象データと、作成したPrintTicket1320とを用いて、OS302に印刷を要求する。
この例では、図11に示すシーケンス図のステップS1101、S1102において、印刷情報取得部602は、PrintTicket1320に記憶された印刷情報611に含まれる実行情報612を取得すれば良い。他の処理は、前述した図11の処理と同様である。図12(b)に、第1の実施形態に係る印刷情報611に含まれる実行情報612の別の一例のイメージを示す。
図12(b)の例では、PrintTicket1320に記憶された印刷情報611に、ファイルの保存先のパスを示す文字列1201が定義された実行情報612が含まれている。
以上、本実施形態によれば、QueuePropertyBag420、又はPrintTicket1320に記憶された印刷情報611に含まれる実行情報612を用いて、プラグイン実行部603によるファイルの送信先を変更することができるようになる。
[第2の実施形態]
第1の実施形態では、プラグイン実行部603が、所定の処理を実行する機能を、予め有している場合の例について説明を行った。
第2の実施形態では、プラグイン実行部603は、実行情報612に含まれるスクリプト言語に従って処理を実行する場合の例について説明する。
スクリプト言語は、比較的単純なプログラムを記述するための、簡易的なプログラミング言語全般を示す。スクリプト言語は、一般的にインタプリタ方式を採用しており、言語を逐次に解釈して実行することができる。
本実施形態では、プラグイン実行部603は、スクリプト言語で作成されたプログラム(以下、スクリプトと呼ぶ)を実行する機能を有しているものとする。
また、本実施形態では、印刷情報記憶部610に記憶された印刷情報611に含まれる実行情報612には、スクリプト言語で記述されたスクリプトが記憶されているものとする。
<処理の流れ>
図15は、第2の実施形態に係る情報処理システムの処理の例を示すシーケンス図である。なお、図15のステップS801〜S810の処理は、図8に示す処理と同様なので、ここでは、図8に示す処理との相違点を中心に説明を行う。
ステップS1501、S1502において、印刷データ生成部604は、印刷情報取得部602を用いて、印刷情報記憶部610に記憶された印刷情報611に含まれる実行情報612を取得する。なお、印刷情報記憶部610は、前述したように、PropertyBag400(例えば、QueuePropertyBag420)、又はPrintTicket1320等を用いることができる。
図16、17は、第2の実施形態に係る実行情報のイメージを示す図である。
図16(a)は、第2の実施形態に係る印刷情報611に含まれる実行情報612の例1を示している。図16(a)の例では、QueuePropertyBag420(印刷情報記憶部610の一例)に記憶された印刷情報611には、プラグイン実行部603で実行するスクリプト1611が記述された実行情報612が含まれている。このように、印刷情報611に含まれる実行情報612には、例えば、プラグイン実行部603で実行するスクリプト1611が記述されている。
図16(b)は、第2の実施形態に係る印刷情報611に含まれる実行情報612の例2を示している。図16(b)の例では、QueuePropertyBag420(印刷情報記憶部610の一例)に記憶された印刷情報611には、プラグイン実行部603で実行するスクリプト1611の取得先を示す参照情報(リンク情報)1622が記述されている。このように、印刷情報611に含まれる実行情報612には、プラグイン実行部603で実行するスクリプトの取得先を示す参照情報が含まれているものであっても良い。
図17(a)は、第2の実施形態に係る印刷情報611に含まれる実行情報612の例3を示している。図17(a)に示すように、実行情報612を含む印刷情報611を記憶する印刷情報記憶部610は、PrintTicket1320であっても良い。この場合も同様に、実行情報612には、プラグイン実行部603で実行するスクリプト、又はプラグイン実行部603で実行するスクリプトの取得先を示す参照情報等が含まれる。
ここでは、一例として、実行情報612に、印刷データ生成部604が生成した印刷データを、サーバ装置30の所定のパスに送信する処理を実行させるスクリプトが保存されているものとする。ただし、この処理は、所定の処理の一例であり、本実施形態では、実行情報612に保存するスクリプトを変更することにより、プラグイン実行部603に、様々な処理を実行させることができる。
図15に戻り、シーケンス図の説明を続ける。
ステップS1503において、印刷データ生成部604は、取得した実行情報612に基づいて、プラグイン実行部603に、所定の処理の実行を指示する。この指示には、例えば、印刷データ、及び実行情報612(スクリプト)等が含まれる。
ステップS1504、S1505において、プラグイン実行部603は、印刷データ生成部604から通知された実行情報612に含まれる、所定の処理1500を実現するためのスクリプトを実行する。ここでは、プラグイン実行部603は、所定の処理1500の一例として、印刷データ生成部604が生成した印刷データを、サーバ装置30の所定のパスに送信する処理を実行する。
例えば、ステップS1504、S1505において、プラグイン実行部603は、スクリプトを実行することにより、OS302を介して、サーバ装置30に印刷データを送信する。なお、サーバ装置30のパス情報は、例えば、スクリプトに記述されているものとする。
なお、図15に示す所定の処理1500はあくまで一例である。プラグイン実行部603は、実行情報612に記述されたスクリプト、又は実行情報612に示されるリンク先から取得したスクリプトを、を実行するものであれば良い。
ステップS1106、S1107において、プラグイン実行部603は、所定の処理1500の実行が完了すると、例えば、所定の処理が完了したことを示す完了通知を、印刷データ生成部604、描画制御部601等に通知する。
上記の処理により、プリンタドライバ303の描画部333は、印刷情報記憶部610に記憶された印刷情報611に含まれる実行情報612に基づいて、様々な処理の実行することができるようになる。
なお、上記の説明では、プラグイン実行部603は、スクリプトを実行するものとして説明を行ったが、変形例として、プラグイン実行部603は、実行情報612に記述された参照情報に基づいて、EXE(Executable)ファイル等の実行ファイルを取得して実行するものであっても良い。
図17(b)は、第2の実施形態に係る実行情報の例4を示している。図17(b)の例では、印刷情報記憶部610に記憶された印刷情報611には、プラグイン実行部603が実行する実行ファイルの取得先のパスを示す参照情報1711が記述されている。
プラグイン実行部603は、参照情報1711に示されるパスから実行ファイルを取得し、実行する。
以上、本実施形態によれば、印刷情報記憶部610に記憶された印刷情報611に含まれる実行情報612に、所定の処理を実現するためのスクリプトや、参照情報等を記憶し、プリンタドライバ303に様々な処理を実行させることができる。
[第3の実施形態]
第1、2の実施形態では、プラグイン実行部603が実行する処理の一例として、印刷データをサーバ装置30に送信する処理について説明を行った。第3の実施形態では、プラグイン実行部603が実行する処理の別一例として、印刷データのプレビュー処理を行う場合の例について説明する。
なお、本実施形態では、プラグイン実行部603は、第2の実施形態と同様に、スクリプト言語で作成されたスクリプトを実行する機能を有しているものとする。
また、実行情報612には、印刷データ生成部604が生成した印刷データのプレビュー処理を行うスクリプトが記述されているものとして、以下の説明を行う。
<処理の流れ>
(情報処理システムの処理)
図18は、第3の実施形態に係る情報処理システムの処理の例を示す図である。なお、図18のステップS801〜S810の処理は、図8に示す処理と同様なので、ここでは、図8に示す処理との相違点を中心に説明を行う。
また、実行情報612に記述された、プラグイン実行部603で実行するスクリプト1611の記述内容以外の処理は、第2の実施形態と同様なので、詳細な説明は省略する。
ステップS1801、S1802において、印刷データ生成部604は、印刷情報取得部602を用いて、印刷情報記憶部610に記憶された印刷情報611に含まれる実行情報612を取得する。なお、本実施形態では、実行情報612には、プラグイン実行部603で実行するスクリプト1611として、印刷データのプレビュー用のスクリプトが記述されている。
ステップS1803において、印刷データ生成部604は、取得した実行情報612に基づいて、プラグイン実行部603に、所定の処理の実行を指示する。この指示には、例えば、印刷データ、及び実行情報612(プレビュー用のスクリプト)等が含まれる。
続いて、プラグイン実行部603は、印刷データ生成部604から通知された実行情報612に含まれる、プレビュー用のスクリプトを実行することにより、印刷データのプレビュー処理1800を実行する。
例えば、ステップS1804において、プラグイン実行部603は、拡張設定部313、設定制御部323、又はOS302のAPI等を利用して、印刷データを表示装置102にプレビュー表示させる。
ステップS1805において、プラグイン実行部603は、利用者の確認操作を受け付けると、ステップS1806において、実行結果(OK)を印刷データ生成部604に通知する。
ステップS1807において、印刷データ生成部604は、プラグイン実行部603から、実行結果(OK)を受け付けると、生成した印刷データを、描画制御部601に出力する。
ステップS1808において、例えば、図8のステップS817〜S823に示すような印刷データの送信処理が実行される。
(印刷データの生成処理)
図19は、第4の実施形態に係る印刷データ生成処理の例を示すフローチャートである。この処理は、例えば、図18のステップS807〜S809、S1801〜S1807で実行される印刷データの生成処理において、プレビュー表示の後に、印刷設定の変更を行う場合の処理の一例を示している。
ステップS1901において、印刷データ生成部604は、印刷対象データを取得する。この処理は、例えば、図18のステップS808、S809の処理に対応している。
ステップS1902において、印刷データ生成部604は、印刷対象データを画像形成装置20で印刷可能な印刷データに変換することにより、印刷データを生成する。この処理は、例えば、図18のステップS810の処理に対応している。
ステップS1903において、プラグイン実行部603は、生成された印刷データの印刷後のイメージを示す印刷プレビュー画面を、表示装置102等に表示させる。
ステップS1904において、表示させた印刷プレビュー画面に対して、利用者から受け付けた確認結果が「OK」である場合、プラグイン実行部603は、処理をステップS1907に移行させる。一方、利用者から受け付けた確認結果が「OK」でない場合、プラグイン実行部603は、処理をステップS1905に移行させる。
ステップS1905に移行すると、プラグイン実行部603は、印刷設定の変更画面を、表示装置102等に表示させる。
ステップS1906において、プラグイン実行部603は、利用者による印刷設定の変更操作を受け付けると、受け付けた変更を印刷の設定情報に反映し、処理をステップS1902に戻す。
なお、上記のステップS1903〜S1905の処理は、例えば、図18の印刷データのプレビュー処理1800に対応している。
ステップS1907に移行すると、印刷データ生成部604は、生成した印刷データを、例えば、描画制御部601等に出力する。
上記の処理により、クライアント装置10の利用者は、印刷データのプレビュー画面を確認し、必要に応じて、印刷の設定情報を変更することができるようになる。
このように、本実施形態に係るプリンタドライバ303は、印刷情報記憶部610に記憶されたスクリプトや、参照情報等に応じて、様々な処理を実行することができる。
以上、本発明の各実施形態によれば、V4プリンタドライバ、又は同様の制限を有するプリンタドライバにおいて、利用者の利便性を維持しつつ、プリンタドライバに独自の拡張機能を容易に追加することができるようになる。
[第5の実施形態]
<機能構成>
(クライアント装置の機能構成)
図20は、第5の実施形態に係るクライアント装置の機能構成図である。図20に示す第5の実施形態に係るクライアント装置10は、図6に示す一実施形態に係るクライアント装置10の機能構成に加えて、1つ以上の拡張プラグイン2001、及び連携アプリ2002を含む。
拡張プラグイン2001は、例えば、図2のCPU106で実行されるプログラム、例えば、DLL(Dynamic Link Library)、又は実行ファイル等によって実現される。拡張プラグイン2001は、描画部333のプラグイン実行部603からの制御に従って、例えば、印刷データの変更処理、読出処理、又は転送処理等の様々な拡張機能を実行する。
連携アプリ2002は、例えば、図2のCPU106等で実行され、拡張プラグイン2001を用いて拡張機能を実行するための情報を、実行情報612として印刷情報記憶部610に記憶する。例えば、連携アプリ2002は、クライアント装置10にインストールされると、クライアント装置10のプログラム領域(例えば、"C:\ProgramFiles\"等)に、1つ以上の拡張プラグイン2001を配置(コピー)する。また、連携アプリ2002は、プログラム領域に配置した1つ以上の拡張プラグイン2001を配置した場所を示すパス情報、プラグイン名等を含む実行情報612を、印刷情報記憶部610に記憶する。
印刷情報記憶部610は、例えば、図5の独自記憶領域500や、QueuePropertyBag420等によって実現され、1つ以上の拡張プラグイン2001に関する実行情報612を記憶する。例えば、独自記憶領域500の一例として、通常のWindowsアプリケーションで使用されるレジストリHKLM(HKEY_LOCAL_MACHINE)等を用いることができる。なお、独自記憶領域500以外に、OS302のポイントアンドプリント機能で情報が引き継がれる他の論理プリンタ毎の記憶領域(例えば、QueuePropertyBag420等)であっても良い。
本実施形態に係るプラグイン実行部(処理実行部)603は、印刷情報記憶部610に記憶された印刷情報611に実行情報612が含まれている場合、実行情報612に従って1つ以上の拡張プラグイン2001を呼び出すことにより、所定の処理を実行する。
なお、上記以外の機能構成については、例えば、図6に示す一実施形態に係るクライアント装置10の機能構成と同様で良い。
図21は、第5の実施形態に係るプラグイン実行部、及び拡張プラグインの機能構成図である。
(プラグイン実行部の機能構成)
プラグイン実行部(処理実行部)603は、実行制御部2101を有する。また、好ましくは、プラグイン実行部603は、出力制御部2102を有する。
実行制御部2101は、印刷情報記憶部610に実行情報612が記憶されている場合、実行情報612に従って、1つ以上の拡張プラグイン2001を呼出して、拡張プラグイン2001による拡張機能の実行を制御する。
出力制御部2102は、1つ以上の拡張プラグイン2001から、印刷データを含む出力要求(印刷要求)を受け付けると、印刷データを画像形成装置20等に出力する制御を行う。例えば、出力制御部2102は、受付した印刷データを、OS302のスプーラ等に出力する。
このように、プラグイン実行部603は、拡張プラグイン2001に対して、印刷データの出力要求を受付するためのインタフェース(出力制御部2102)を備えることができる。
(拡張プラグインの機能構成)
拡張プラグイン2001は、例えば、処理制御部2103、及び処理部2104を有する。また、好ましくは、拡張プラグイン2001は、出力要求部2105等を有する。
処理部2104は、処理制御部2103からの制御に従って、予め定められた処理(拡張機能)を実行する。なお、予め定められた処理には、例えば、印刷データに変更を加える変更処理、印刷データから情報を読出する読出処理、印刷データを転送する転送処理、又は認証処理等が含まれる。
処理制御部2103は、描画部333のプラグイン実行部603からの処理要求を受付し、受付した処理要求に従って、処理部2104に処理を実行させる。
出力要求部2105は、処理制御部2103が処理(例えば変更処理)を実行した印刷データを、画像形成装置20等に出力する場合、プラグイン実行部603の出力制御部2102に、印刷データの出力を要求する。
このように、拡張プラグイン2001は、描画部333に対して、印刷データの出力を要求することができる。
なお、例えば、拡張プラグイン2001にて印刷データの転送処理を行った場合等、クライアント装置10から画像形成装置20へ印刷データを出力することが不要である場合、拡張プラグイン2001は、出力要求を行わずに処理の終了の通知のみを行う。
<処理の流れ>
図22は、第5の実施形態に係る情報処理システムの処理の例を示すシーケンス図である。なお、OS302、描画制御部601、印刷データ生成部604、印刷情報取得部602等の処理は、第1〜4の実施形態と同様なので、ここでは詳細な説明は省略する。
ステップS2201において、OS302は、例えば、デスクトップアプリ321等からの印刷要求に応じて、プリンタドライバ303に、印刷対象データの描画(印刷データの生成)を指示する描画命令を通知する。なお、プリンタドライバ303に通知された描画命令は、描画部333の描画制御部601によって受け付けられる。
ステップS2202において、描画制御部601は、OS302から通知される描画命令を受け付けると、印刷情報取得部602に、印刷情報611の取得を指示する。
ステップS2203において、印刷情報取得部602は、印刷情報記憶部610に記憶された印刷情報611を読み出す。なお、ここでは、印刷情報611には、連携アプリ2002等によって記憶された1つ以上の拡張プラグイン2001が実行する処理に関する実行情報612が含まれているものとする。
ステップS2204において、印刷情報取得部602は、取得した印刷情報611を、描画制御部601に通知する。
ステップS2205において、描画制御部601は、印刷データ生成部604に、印刷データの生成を指示する。
ステップS2206、S2207において、印刷データ生成部604は、印刷対象データを記憶するOS302のスプーラ等から印刷対象データを取得する。
ステップS2208において、印刷データ生成部604は、印刷対象データを、画像形成装置20で印刷可能な印刷データに変換することにより、印刷データ1を生成する。
ステップS2209において、印刷データ生成部604は、生成した印刷データ1を描画制御部601に通知する。
ステップS2210において、描画制御部601は、ステップS2209で取得した印刷データ1と、ステップS2204で取得した印刷情報611に含まれる実行情報612とを含む実行指示をプラグイン実行部603に通知する。
ステップS2211〜S2216において、プラグイン実行部603は、実行指示に含まれる実行情報612に従って、1つ以上の拡張プラグイン2001を呼出して、処理を実行させる。
ここで、実行情報612の一例のイメージを図23に示す。図23の例では、実行情報2300は、第1の拡張プラグイン2302と、第2の拡張プラグイン2303とを含む配列2301で定義されている。各プラグインは、例えば、「name」、「path」、「ReadOnly」等の情報要素を含む。
「name」は、各プラグインの名前(プラグイン名)を示す情報である。「path」は、各プラグインにアクセスするためのパス情報である。「ReadOnly」は、各プラグインが、読出し専用の属性を有している(true)か、読出し専用の属性を有していないか(false)を示す情報である。
なお、図23に示す実行情報2300は、印刷情報記憶部610に記憶される実行情報612の一例である。実行情報612は、1つ以上の拡張プラグイン2001を呼出するための情報が含まれていれば良い。
プラグイン実行部603は、実行情報612に含まれるパス情報に従って、例えば、順次に拡張プラグイン2001を呼出することにより、各拡張プラグイン2001に処理を実行させる。
例えば、図22のステップS2211において、プラグイン実行部603の実行制御部2101は、第1の拡張プラグインであるプラグイン1を呼出し、プラグイン1に印刷データ1を通知する。このとき、プラグイン実行部603は、処理の要求元を特定するための情報である論理プリンタ名や、ジョブID等の情報も、拡張プラグイン2001(プラグイン1)に通知する。
ステップS2212において、プラグイン1の処理制御部2103は、予め定められた処理(例えば、印刷データ1をカラーからモノクロに変換する変更処理等)を、処理部2104に実行させる。
ステップS2213において、プラグイン1の処理制御部2103は、変更処理が実行された印刷データ2を含む完了通知を、プラグイン実行部603に通知する。
ステップS2214において、プラグイン実行部603の実行制御部2101は、第2の拡張プラグインであるプラグイン2を呼出し、プラグイン2に印刷データ2を通知する。
ステップS2215、S2216において、プラグイン2の処理制御部2103は、予め定められた処理(例えば、印刷データ2をサーバ装置30に転送し、印刷データ2を画像形成装置20に出力する処理等)を、処理部2104、及び出力要求部2105に実行させる。
これにより、例えば、ステップS2215において、プラグイン2の処理部2104は、印刷データ2をサーバ装置30に転送する処理を実行する。また、ステップS2216において、プラグイン2の出力要求部2105は、印刷データ2の出力(印刷)を描画部333に要求する。
ステップS2217において、プラグイン実行部603の出力制御部2102は、拡張プラグイン2001から、印刷データ2の出力要求を受付すると、印刷データ2の出力要求を描画制御部601に通知する。
ステップS2218、S2219において、描画部333の描画制御部601は、OS302を介して、画像形成装置20に印刷データ2を送信する。
ステップS2220において、画像形成装置20は、受信した印刷データ2の印刷を実行する。
上記の処理により、プリンタドライバ303は、プリンタドライバ303の外部にある1つ以上の拡張プラグイン2001を呼出して、拡張機能を実行させることができるようになる。また、プリンタドライバ303は、拡張プラグイン2001からの印刷データの出力を受付するインタフェースを有しているので、印刷データの出力を要する拡張機能を、拡張プラグイン2001に実行させることができるようになる。
[第6の実施形態]
<機能構成>
(クライアント装置の機能構成)
図24は、第6の実施形態に係るクライアント装置の機能構成図である。図24に示す第6の実施形態に係るクライアント装置10は、図20に示す第5の実施形態に係るクライアント装置10の機能構成に加えて、UI部305が図示されている。このUI部305は、図4に示すUI部305に対応しており、拡張設定部313、ストアデバイスアプリ304等が含まれる。
本実施形態に係るUI部305は、プラグイン実行部603からのUI表示要求に従って、設定画面や認証画面等の表示画面(UI)を表示装置102等に表示させて、ユーザの入力操作を受け付ける。なお、UI部305は、拡張設定部313、ストアデバイスアプリ304とは異なるアプリ(実行ファイル)等によって実現されるものであっても良い。
図25は、第6の実施形態に係るプラグイン実行部、及び拡張プラグインの機能構成図である。
(プラグイン実行部の機能構成)
図25に示す第6の実施形態に係るプラグイン実行部603は、図20に示す第5の実施形態に係るプラグイン実行部603の機能構成に加えて、UI制御部2501を含む。
UI制御部2501は、拡張プラグイン2001から、UI(ユーザインタフェース)の表示を要求するUI表示要求を受け付けると、UI表示要求に含まれるUI情報を用いて、例えば、設定画面や認証画面等の表示画面(UI)をUI部305に表示させる。また、UI制御部2501は、UI部305が受け付けた入力データを、要求元の拡張プラグイン2001に通知する。
このように、プラグイン実行部603は、拡張プラグイン2001に対して、UIの表示要求を受付するためのインタフェース(UI制御部2501)を有していることが望ましい。これにより、拡張プラグイン2001の各々でUIを表示させるためのUI表示機能を用意する必要がなくなると共に、1つの印刷処理の中で、複数の表示プロセスが実行されることを低減させることができる。ここで、UI表示機能とは、UIの画面を立ち上げるための実行ファイルである。
(拡張プラグインの機能構成)
図25に示す第6の実施形態に係る拡張プラグイン2001は、図20に示す第5の実施形態に係る拡張プラグイン2001の機能構成に加えて、UI呼出部2502を含む。
UI呼出部2502は、拡張プラグイン2001から、UIを表示する必要がある場合、プラグイン実行部603のUI制御部2501に、UIの表示を要求する。これにより、拡張プラグイン2001は、プラグイン実行部603のUI制御部2501を利用して、UIの表示を要求することができる。
<処理の流れ>
図26は、第6の実施形態に係る情報処理システムの処理の例を示すシーケンス図である。なお、図26のステップS2201〜S2210の処理は、図22に示す第5の実施形態に係る処理と同様なので、ここでは、第5の実施形態との相違点を中心に説明を行う。
ステップS2601〜S2608において、プラグイン実行部603は、実行指示に含まれる実行情報612に従って、1つ以上の拡張プラグイン2001を呼出して、処理を実行させる。ここでは、実行情報612に、UIを表示させる処理を含むプラグイン3の情報が含まれているものとして以下の説明を行う。
ステップS2601において、プラグイン実行部603の実行制御部2101は、プラグイン3を呼出し、プラグイン3に印刷データ1を通知する。これにより、プラグイン3の処理制御部2103は、予め定められた処理(例えば、UIを表示させて、入力された入力データを用いて印刷データを変更する変更処理等)を、処理部2104に実行させる。
ステップS2602において、プラグイン3の処理部2104は、UI呼出部2502を用いて、プラグイン実行部603にUIの表示を要求するUI表示要求を通知する。このUI表示要求には、例えば、UIを表示するためのUI情報が含まれる。なお、このUI情報には、例えば、画面のサイズやタイトル、画面に表示させる内容に関する情報等が含まれる。
ステップS2603において、プラグイン実行部603のUI制御部2501は、UI表示要求を受付すると、UI部305にUIの起動を要求し、UI情報を通知する。
ステップS2604において、UI部305は、受付したUI情報を用いてUIを表示し、ユーザによって入力される入力データを受付する。つまり、このUIで表示する表示内容は、拡張プラグイン2001において生成され、UIの表示はUI部305のプロセスにおいて行われる。
ステップS2605において、UI部305は、受付した入力データをプラグイン実行部603に通知する。
ステップS2606において、プラグイン実行部603のUI制御部2501は、UI部305から受付した入力データを、要求元のプラグイン3のUI呼出部2502に通知する。
ステップS2607において、プラグイン3の処理部2104は、UI呼出部2502が受付した入力データを用いて印刷データを変更する変更処理を実行し、印刷データ3を生成する。
ステップS2608において、プラグイン3の処理部2104は、出力要求部2105を用いて、印刷データ3の出力(印刷)を描画部333に要求する。
なお、上記に示すような変更処理を行う拡張プラグイン2001以外に、サーバ装置30等に印刷データの転送処理を行う拡張プラグイン2001にて、UIを表示することが考えられる。
この場合、UI部305は、ステップS2604において、転送処理を行うか否かの選択を表示したUIを表示し、ユーザによる選択操作を受付する。
UI部305が、転送処理を行うという選択を受付した場合、拡張プラグイン2001は、ステップS2607において、印刷データ3をサーバ装置30等に転送し、ステップS2608において、描画部333に、処理の終了の通知を行う。このとき、拡張プラグイン2001は、描画部333に印刷データ3の出力要求は行わない。
一方、UI部305が、転送処理を行わないという選択を受付した場合、拡張プラグイン2001は、ステップS2607において、特に処理を行わずに、ステップS2608において、印刷データ3の出力を描画部333に要求する。
このように、本実施形態によれば、プラグイン実行部603は、拡張プラグイン2001からのUI表示要求に応じて、UI部305にUIを表示させるUI制御部2501を有している。これにより、プリンタドライバ303は、拡張プラグイン2001に、UIを用いて入力された入力データを利用する様々な拡張処理を実行させることができるようになる。
また、本実施形態では、拡張プラグイン2001は、プラグイン実行部603のUI制御部2501を利用してUIを表示することができる。したがって、クライアント装置10に複数の拡張プラグイン2001を組み込む場合であっても、UI表示をするためのアプリケーション(実行ファイル)を、拡張プラグイン2001毎に配置することが不要となる。これにより、本実施形態に係るクライアント装置10によれば、印刷実行時において1回の印刷処理で、複数の表示プロセスが実行されることを低減させることができる。
[第7の実施形態]
第5、6の実施形態では、プラグイン実行部603は、印刷データが生成された後に、拡張プラグイン2001を用いて、拡張機能を実行させていた。しかし、これは一例であり、プラグイン実行部603は、他のタイミング、例えば、印刷処理の開始時や、終了時等に、拡張プラグイン2001を用いて、拡張機能を実行させるものであっても良い。
<処理の流れ>
図27は、第7の実施形態に係る情報処理システムの処理の例を示すシーケンス図である。この処理は、印刷処理の開始時に、拡張プラグイン2001を用いて拡張機能を実行する処理の一例を示している。なお、図27のステップS2201〜S2204、及びステップS2205〜S2210の処理は、図22に示す第5の実施形態の処理と同様なので、ここでは、第5の実施形態との相違点を中心に説明を行う。
また、ここでは、ステップS2204で取得する印刷情報に、例えば、図28に示すような実行情報2800が含まれているものとする。
図28に示す実行情報2800において、プラグインAの実行情報2801、及びプラグインBの実行情報2803には、図23で説明した「name」、「path」、及び「ReadOnly」の情報要素に加えて、「Timing」の情報要素が含まれている。
「Timing」は、各プラグインの実行タイミングを示す情報の一例であり、例えば、「Start」は、印刷処理の開始したときに拡張プラグイン2001を呼出することを示している。また「Page」は、印刷データを生成したときに拡張プラグイン2001を呼出することを示している。
例えば、図28のプラグインAの実行情報2801において、情報要素「Timing」2802には、「Start」が設定されているので、プラグインAは、印刷処理の開始時に呼出される。また、図29のプラグインBの実行情報2803において、情報要素「Timing」2804には、「Page」が設定されているので、プラグインBは、印刷データの生成時に呼出される。
図27のステップS2701において、描画制御部601は、印刷処理の開始時に呼出するプラグインの実行情報(実行情報A)をプラグイン実行部603に通知する。図28に示す実行情報2800の例では、プラグインAの実行情報2801が、プラグイン実行部603に通知される。
ステップS2702〜S2710において、プラグイン実行部603は、実行指示に含まれる実行情報Aに従って、プラグインAを呼出して処理を実行させる。ここでは、プラグインAが、UIを用いてユーザの認証処理を行うプラグインであるものとして、以下の説明を行う。
ステップS2702において、プラグイン実行部603の実行制御部2101は、プラグインAを呼出し、プラグインAに処理の実行を開始させる。
ステップS2703において、プラグインAの処理部2104は、UI呼出部2502を用いて、プラグイン実行部603にUIの表示を要求するUI表示要求を通知する。このUI表示要求には、例えば、認証画面を表示するためのUI情報が含まれる。
ステップS2704において、プラグイン実行部603のUI制御部2501は、UI表示要求を受付すると、UI部305にUIの起動を要求し、UI情報を通知する。
ステップS2705において、UI部305は、受付したUI情報を用いて認証画面のUIを表示し、ユーザによって入力される認証データ(例えばパスワード等)を受付する。
ステップS2706において、UI部305は、受付した認証データをプラグイン実行部603に通知する。
ステップS2707において、プラグイン実行部603のUI制御部2501は、UI部305から受付した認証データを、要求元のプラグインAのUI呼出部2502に通知する。
ステップS2708において、プラグインAの処理部2104は、UI呼出部2502が受付した認証データを用いて認証処理を実行する。
ステップS2709において、プラグインAの処理部2104は、描画部222のプラグイン実行部603に認証結果(図27の例では認証OK)を通知する。
ステップS2710において、プラグイン実行部603は、描画制御部601に認証結果を含む完了通知を通知する。
描画制御部601は、認証結果がOKである場合、ステップS2205以降の処理を実行させる。一方、描画制御部601は、認証結果がOKでない場合、例えば、印刷処理を終了させる。
このように、描画部333のプラグイン実行部603は、例えば、印刷処理の開始時に拡張プラグイン2001を呼出して、拡張機能を実行させることができる。
同様に、プラグイン実行部603は、印刷処理の終了時等に拡張プラグイン2001を呼出して、拡張機能を実行させるものであっても良い。この場合、例えば、図28に示す実行情報2800において、「Timing」の情報要素を「End」に設定する。
[第8の実施形態]
第1〜7の実施形態では、プリンタドライバ303の各機能がクライアント装置10に含まれるものとして説明を行った。
しかし、例えば、OS302のポイントアンドプリント機能を用いて印刷を行う場合等、プリンタドライバ303に含まれる機能構成は、クライアント装置10とサーバ装置30とに分散されて配置されるものであっても良い。本実施形態では、サーバ装置30で印刷データを生成するサーバサイドレンダリングを行う場合の処理の例について説明する。
<機能構成>
図29は、第8の実施形態に係る情報処理システムの機能構成図である。
本実施形態に係るクライアント装置10は、例えば、図24に示す第6の実施形態に係るクライアント装置10に含まれる機能構成のうち、デスクトップアプリ321、OS302(OS302−1)、プリンタドライバ303、UI部305等を含む。また、クライアント装置10側では、プリンタドライバ303に含まれる機能構成のうち、設定制御部323、及び拡張設定部313等を用いる。
一方、本実施形態に係るサーバ装置30は、例えば、図24に示す第6の実施形態に係るクライアント装置10に含まれる機能構成のうち、連携アプリ2002、OS302(OS302−2)、印刷情報記憶部610、プリンタドライバ303、及び1つ以上の拡張プラグイン2001等を含む。また、サーバ装置30側では、プリンタドライバ303に含まれる機能構成のうち、描画部333等を用いる。
なお、各部の機能は、例えば、図24に示す第6の実施形態に示す機能構成と同様である。
<処理の流れ>
図30は、第8の実施形態に係る情報処理システムの処理の例を示すシーケンス図である。本実施形態では、クライアント装置10でユーザによる印刷操作が行われ、サーバ装置30側で描画処理が行われる。この場合、サーバ装置30にインストールされたプリンタドライバ303の描画部333による描画処理は、基本的に第5〜7の実施形態と同様である。
ただし、サーバ装置30側の拡張プラグイン2001が、UIを表示させる処理を実行する場合、クライアント装置10側でUIを表示させる必要がある。ここでは、サーバ装置30側の拡張プラグイン2001が、クライアント装置10側でUIを表示させる場合の処理を中心に説明する。
ステップS3001において、クライアント装置10のOS302−1は、デスクトップアプリ321から印刷要求を受付する。この印刷要求には、例えば、印刷の設定情報であるPrintTicketが含まれる。また、PrintTicketには、例えば、クライアント装置10のIPアドレス、及び印刷要求に対応するUI部305のプロセスID等が含まれるものとする。なお、このPrintTicketは、例えば、デスクトップアプリ321が、OS302を介して、プリンタドライバ303にPrintTicketの取得を要求したときに、設定制御部323によって生成される。
ステップS3002、S3003において、OS302−1は、印刷データの生成を要求する描画命令を、サーバ装置30のOS302−2を介して、サーバ装置30の描画部333の描画制御部601に送信する。
ステップS3004において、描画制御部601は、描画命令を受け付けると、印刷情報取得部602に、印刷情報611の取得を指示する。
ステップS3005において、印刷情報取得部602は、印刷情報記憶部610に記憶された印刷情報611を読み出す。なお、ここでは、印刷情報611には、連携アプリ2002等によって記憶された1つ以上の拡張プラグイン2001が実行する処理に関する実行情報612が含まれているものとする。
ステップS3006において、印刷情報取得部602は、取得した印刷情報611を、描画制御部601に通知する。
ステップS3007において、描画制御部601は、印刷データ生成部604に、印刷データの生成を指示する。
ステップS3008、S3009において、印刷データ生成部604は、印刷対象データを記憶するOS302−2のスプーラ等から印刷対象データを取得する。
ステップS3010において、印刷データ生成部604は、印刷対象データを、画像形成装置20で印刷可能な印刷データに変換することにより、印刷データ1を生成する。
ステップS3011において、印刷データ生成部604は、生成した印刷データ1を描画制御部601に通知する。
ステップS3012において、描画制御部601は、印刷データ1、実行情報612、クライアント装置10のIPアドレス、プロセスID等を含む実行指示をプラグイン実行部603に通知する。
ステップS3013〜S3026において、プラグイン実行部603は、実行指示に含まれる実行情報612に従って、1つ以上の拡張プラグイン2001を呼出して、処理を実行させる。ここでは、実行情報612に、UIを表示させる処理を含むプラグイン3の情報が含まれているものとして以下の説明を行う。
ステップS3013において、プラグイン実行部603の実行制御部2101は、拡張プラグイン2001(プラグイン3)を呼出し、拡張プラグイン2001に印刷データ1を通知する。これにより、拡張プラグイン2001の処理制御部2103は、予め定められた処理(例えば、UIを表示させて、入力された入力データを用いて印刷データを変更する変更処理等)を、処理部2104に実行させる。
ステップS3014において、拡張プラグイン2001の処理部2104は、UI呼出部2502を用いて、プラグイン実行部603にUIの表示を要求するUI表示要求を通知する。このUI表示要求には、例えば、UIを表示するためのUI情報が含まれる。
ステップS3015において、プラグイン実行部603のUI制御部2501は、UI表示要求を受付すると、OS302−2を介して、クライアント装置10にUIの起動を要求するUI起動要求を送信する。このUI起動要求には、例えば、クライアント装置10のIPアドレス、プロセスID、及びUI情報等が含まれる。
別の一例として、プラグイン実行部603のUI制御部2501は、UI情報を含むUI起動要求を描画制御部601に通知するものであっても良い。この場合、描画制御部601は、クライアント装置10のIPアドレス、プロセスIDをUI起動要求に付加し、UI起動要求を、OS302−2を介して、クライアント装置10に送信する。
ステップS3016において、クライアント装置10のUI部305は、受付したUI情報を用いてUIを表示し、ユーザによって入力される入力データを受付する。
ステップS3017において、クライアント装置10のUI部305は、入力データを要求元のプラグイン実行部603に通知する。
ステップS3018において、プラグイン実行部603のUI制御部2501は、受付した入力データを、要求元の拡張プラグイン2001のUI呼出部2502に通知する。
ステップS3019において、拡張プラグイン2001の処理部2104は、UI呼出部2502が受付した入力データを用いて印刷データを変更する変更処理を実行し、印刷データ3を生成する。
ステップS3020において、拡張プラグイン2001の処理部2104は、出力要求部2105を用いて、印刷データ3の出力(印刷)を描画部333に要求する。
ステップS3021において、プラグイン実行部603の出力制御部2102は、受付した印刷データ3を含む出力要求を描画制御部601に通知する。
ステップS3022において、描画制御部601は、OS302−2に印刷データ3を通知することにより、例えば、図29の画像形成装置20により印刷が行われる。
このように、プリンタドライバ303の各機能構成は、クライアント装置10とサーバ装置30とに分散して配置されていても、クライアント装置10に配置されているときと同様に処理を実行することができる。
[第9の実施形態]
図31は、第9の実施形態に係る情報処理システムの機能構成図である。本実施形態では、OS302のポイントアンドプリント機能を用いて印刷を行う場合であって、クライアント装置10側で印刷データを生成するクライアントサイドレンダリングを行う場合の例について説明する。
この場合、クライアント装置10の機能構成は、例えば、図24に示す第6の実施形態に係るクライアント装置10と同様で良い。図31の例では、クライアント装置10は、サーバ装置30に接続された画像形成装置20を用いて、印刷を実行することができる。この場合、プリンタドライバ303の描画部333の処理は、図26に示す第6の実施形態の処理と同様である。
また、図31において、OS302のポイントアンドプリント機能を用いて、サーバ装置30からクライアント装置10にプリンタドライバ303をインストールすることができる。この場合、サーバ装置30の印刷情報記憶部610に記憶された印刷情報611、及び実行情報612は、クライアント装置10の印刷情報記憶部610に引き継がれる。
したがって、例えば、第1〜4の実施形態に示すように、プラグイン実行部603が、実行情報612(例えばスクリプト、宛先情報等)に従って処理を実行する場合、クライアント装置10は、そのまま拡張機能を利用することができる。