(57)【要約】      （修正有）【課題】オペレーティングシステムに印刷実行指示を出すアプリケーションの改変や印刷設定画面の操作を行わずに、そのアプリケーションの印刷設定を変更できるようにする。【解決手段】管理アプリケーション４０は、アプリケーション５０を起動し、印刷文書ファイルを与えるだけで文書ファイルをデフォルトの印刷設定で印刷させる印刷実行指示をＯＳ３０に行わせるともに、プリンタドライバ６０の描画ドライバ６３に対して拡張Ｉ／Ｆ部６２を介してアプリケーションの印刷設定を与えることにより、ユーザの意図を反映した印刷を行わせる。【選択図】図４
2015084213.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションに印刷指示を送出するアプリケーション管理手段と、
オペレーティングシステムで定義されたインタフェース手段を通して、前記アプリケーションからファイル及び印刷設定を伴う印刷実行指示を受け取り、印刷データを生成する印刷データ生成手段と、
前記インタフェース手段以外のインタフェース手段である拡張インタフェース手段と、
前記アプリケーション管理手段から前記拡張インタフェース手段を通して入力された印刷設定を保持する印刷設定保持手段と、
を有し、
前記印刷データ生成手段は、前記印刷設定保持手段に保持されている印刷設定を反映させた前記印刷データを生成する機能を有する情報処理装置。
【請求項２】
請求項１に記載された情報処理装置において、
前記印刷設定保持手段は、前記印刷データ生成手段とプリントデバイスとの間で双方向通信を行うための前記オペレーティングシステムに標準の双方向通信インタフェース手段を利用して構成されている、情報処理装置。
【請求項３】
請求項１に記載された情報処理装置において、
通信ネットワークを介して接続される他の情報処理装置からアクセス可能な共有記憶装置を有し、
前記アプリケーション管理手段は、前記他の情報処理装置により指定された前記共有記憶装置上のファイルの印刷実行指示の送出が可能な前記アプリケーションに対して印刷指示を出力する、情報処理装置。
【請求項４】
請求項３に記載された情報処理装置において、
前記アプリケーション管理手段は、前記他の情報処理装置により設定された印刷設定を前記拡張インタフェース手段に出力する、情報処理装置。
【請求項５】
請求項３に記載された情報処理装置において、
前記共有記憶装置にファイルが追加されたことを検知し、当該追加されたファイルを前記アプリケーション管理手段に転送するファイル監視手段を有し、
前記アプリケーション管理手段は、当該転送されたファイルの印刷実行指示の送出が可能な前記アプリケーションに対して印刷指示を送出する、情報処理装置。
【請求項６】
請求項４に記載された情報処理装置において、
前記他の情報処理装置に対し、所定単位で印刷設定を変更するためのインタフェースを提供する設定変更手段を有する、情報処理装置。
【請求項７】
請求項１に記載された情報処理装置において、
前記拡張インタフェース手段は、複数の独立した印刷設定を行う拡張インタフェース手段を動的に組み込む手段を有する、情報処理装置。
【請求項８】
アプリケーションに印刷指示を送出するアプリケーション管理手段と、
オペレーティングシステムで定義されたインタフェース手段を通して、前記アプリケーションからファイル及び印刷設定を伴う印刷実行指示を受け取り、印刷データを生成する印刷データ生成手段と、
前記インタフェース手段以外のインタフェース手段である拡張インタフェース手段と、
前記アプリケーション管理手段から前記拡張インタフェース手段を通して入力された印刷設定を保持する印刷設定保持手段と、
を有し、
前記印刷データ生成手段は、前記印刷設定保持手段に保持されている印刷設定を反映させた前記印刷データを生成する機能を有する情報処理システム。
【請求項９】
請求項８に記載された情報処理システムにおいて、
前記印刷データ生成手段と前記拡張インタフェース手段とが別の情報処理装置に設けられている、情報処理システム。
【請求項１０】
コンピュータを、請求項１に記載された情報処理装置のアプリケーション管理手段、印刷データ生成手段、拡張インタフェース手段、及び印刷設定保持手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、及びプログラムに関し、さらに詳しくは、アプリケーションの改変や印刷設定画面の操作を行わずに、アプリケーションの印刷設定を変更することのできる情報処理装置、情報処理システム、及びプログラムに関する。
【背景技術】
【０００２】
〈Windows（登録商標）プリントアーキテクチャ〉
図１８にWindows（登録商標）プリントアーキテクチャの概略を示す。Windows（登録商標）プリントアーキテクチャでは、プリンタドライバ６０は、アプリケーション５０が印刷実行指示を出したとき、印刷設定が格納されたDEVMODE構造体９０を受け取ることにより、集約、両面、ステープルなどといった印刷設定を反映させて描画データを生成し、プリンタ５に送信することで印刷を実行する。DEVMODE構造体は、アプリケーション５０が印刷実行指示を出した時にＯＳ（Operating System：オペレーティングシステム）のＧＤＩ（Graphics Device Interface）３１に渡され、それがプリンタドライバ６０に渡される。
【０００３】
印刷時にアプリケーション５０からプリンタドライバ６０にDEVMODE構造体９０が渡されることにより、アプリケーション５０は描画する領域などをプリンタ５の能力を把握しながら、描画命令をＧＤＩ３１に対して行える。これは、プリンタドライバ６０が印刷実行指示時に渡されたDEVMODE構造体９０と自身が繋がっているプリントデバイスであるプリンタ５の情報をもとに、ＧＤＩ３１に対して描画能力（描画可能な能力情報）を返却するからである。
【０００４】
ここで、Windows（登録商標）プリントアーキテクチャの仕組み上、アプリケーション５０は、印刷実行指示を出した時にしかDEVMODE構造体９０をプリンタドライバ６０に渡すことができない。また、アプリケーション５０が印刷に使用した印刷設定は、他のアプリケーション(別プロセス)や同一アプリケーション(同一プロセス)でも別スレッドからはアクセスすることができない。
【０００５】
また、プリンタドライバ６０は、プリンタフォルダで印刷設定画面（印刷ダイアログと呼ばれることがある）を開き、デフォルトの印刷設定(システムデフォルトのDEVMODE構造体)を決定することができる。この印刷設定はアプリケーションからＡＰＩ（Application Programming Interface）で取得することができる。
【０００６】
このとき、プリンタドライバ６０に対してはＧＤＩ３１から、印刷設定の命令がＤＤＩ（Device Drive Interface）で通知される。ＤＤＩはＩ／Ｆ（インタフェース）のみ定義されているので、ＤＤＩ内の実装方法（ＤＤＩで呼ばれた場合のプリンタドライバの処理）はプリンタドライバのメーカが設計できる。しかし、メーカが、プリンタドライバに独自にＩ／Ｆを定義したとしても、Windows（登録商標）系ＯＳはそのＩ／Ｆを知ることができないため、そのＩ／Ｆがコールされることはない。
【０００７】
〈DEVMODE構造体〉
図１９にDEVMODE構造体の一例を示す。図示のようにDEVMODE構造体は、Public領域とPrivate領域に分かれている。Public領域は、ＯＳ定義の領域なので、アプリケーションから変更することができる。Public領域には、「印刷方向」「用紙サイズ」などといった、どのようなプリンタドライバでも設定することが必要な項目が存在する。
【０００８】
Private領域はメーカ独自の領域であり、メーカやプリンタドライバ毎にどのような情報を格納するかを定義することができる。アプリケーションやWindows（登録商標）系ＯＳは、Private領域にどのような情報が格納されているかを知ることができないので、Private領域を変更するにはプリンタドライバのＵＩ（User Interface）ドライバがPrivate領域の設定を表示して、変更を受け付けるしか方法がない。Private領域には、「印刷方式」「認証」などといったメーカやプリンタ機種毎の特徴を持った設定項目が存在する。
【０００９】
〈DEVMODE構造体の参照〉
図２０は、プリンタドライバによるDEVMODE構造体の参照について説明するための図である。ユーザは、ＵＩドライバ６１が作成した用紙サイズや部数、両面印刷などの印刷条件を設定し、印刷を指示する。ユーザが印刷設定指示の操作を行うと、アプリケーション５０がＧＤＩコールを生成してDEVMODE構造体９０をＧＤＩ３１に送出する（印刷設定指示）。アプリケーション５０は、例えば文書作成プログラム（例．ＭＳ−Ｗｏｒｄ：登録商標）である。
【００１０】
ＧＤＩ３１は、アプリケーション５０からDEVMODE構造体９０を取得すると、ＤＤＩコールによりプリンタドライバの描画ドライバ６３を呼び出して、DEVMODE構造体９０を送出する（印刷実行指示）。描画ドライバ６３は、ＧＤＩ３１から取得したDEVMODE構造体を参照して、アプリケーション５０によって印刷指示された文書ファイルから、印刷設定を反映させた印刷データを作成し、スプーラに送出する。なお、印刷データには描画データ（例えばＰＤＬのデータ）と制御データ（例えばＰＪＬの印刷コマンド）が含まれる。即ち、ＵＩドライバ６１と描画ドライバ６３は、いずれもDEVMODE構造体９０を参照することができ、ＵＩドライバ６１はPrivate領域を表示したり、設定変更を受け付けたりすることができる。
【００１１】
上記のように、DEVMODE構造体９０は、ＵＩドライバ６１によって印刷設定が格納されたり、描画ドライバ６３によって印刷設定が参照されたりする。格納時・参照時、DEVMODE構造体を渡す起点になっているのはアプリケーション５０である。実際にはアプリケーション５０がメモリを確保し、ＯＳ３０を介してＵＩドライバ６１に渡し、その中身をＵＩドライバ６１が埋める。また、アプリケーション５０がＯＳ３０を介して印刷実行指示を行うと、描画ドライバ６３がDEVMODE構造体９０の中身を参照するようになっている。
【００１２】
〈プリンタドライバの拡張Ｉ／Ｆを用いたDEVMODE構造体へのアクセス〉
このように、Private領域を変更するには、プリンタドライバ６０が印刷設定画面を表示し、ユーザ操作を受け付けるしか方法がないため、ユーザの操作が必須となってしまう。
【００１３】
しかし、ユーザによる操作なしに、全自動で処理を完了させたい処理も存在する。例えば、このような処理として、帳票印刷やＤＭ（ダイレクトメール）をＦＡＸ送信する処理がある。このような処理において、印刷設定は変わらないのに、１つの帳票毎に又は１つの送信文書の度に、ユーザが印刷設定画面を操作してPrivate領域を変更しなければならないとすると、操作性が低下してしまう。
【００１４】
このため、ユーザの操作を伴わず、処理に適したアプリケーションにプリンタドライバのPrivate領域に格納される印刷設定を変更させたいという要求がある。
【００１５】
この要求に対し、メーカによっては、アプリケーションがプリンタドライバと直接、通信することができるように、プリンタドライバの拡張Ｉ／Ｆを提供している（例えば、特許文献１）。また、ユーザからの要求によっては処理に適したアプリケーションも開発する。
【００１６】
図２１は、拡張Ｉ／Ｆ部、アプリケーション、及び、DEVMODE構造体について説明するための図である。図２１におけるアプリケーション５１は、ユーザ側の処理に適したアプリケーション又は少なくとも拡張Ｉ／Ｆ部を呼び出せるアプリケーションである。
【００１７】
アプリケーション５１は、拡張Ｉ／Ｆ部６２を呼び出して印刷設定指示を送り、ＵＩドライバ６１によりDEVMODE構造体９０のPrivate領域の印刷設定を変更できる。描画ドライバ６３は、印刷実行指示を受けたとき、DEVMODE構造体９０のPrivate領域の印刷設定を参照する。このため、ユーザがアプリケーション５１で印刷実行指示を出した後、ユーザによる操作なしに処理を完了させることができる。
【００１８】
〈ＲＡＷスプールとＥＭＦスプール〉
Windows（登録商標）系ＯＳのプリントアーキテクチャとして、プリンタドライバの印刷では、ＲＡＷスプール形式とＥＭＦスプール形式といった２つのスプール形式が存在する。ＲＡＷスプール形式では、アプリケーションのプロセスで、アプリケーションからプリンタドライバが取得した文書データをプリンタが解釈可能なＲＡＷデータに変換する変換処理を行う。ユーザから見ると変換処理が完了するまでアプリケーションの操作ができない。
【００１９】
ＥＭＦスプール形式では、アプリケーションのプロセスで、アプリケーションからＯＳが取得した文書データをプリンタに依存しないＥＭＦデータ形式に変換しスプールする。そして、スプーラプロセスでスプールされたＥＭＦデータをプリンタドライバが、プリンタが解釈可能なＲＡＷデータに変換する変換処理を行う。ユーザから見ると、アプリケーションのプロセスでＥＭＦデータへの変換が終了した時点で、アプリケーションを操作できるようになる。
【００２０】
〈Point & Print〉
次に、プリンタドライバのインストール方式と、印刷開始後の印刷設定の関係について説明する。Windows（登録商標）系ＯＳのプリンタドライバではPoint & Printというインストール形式が存在する。
【００２１】
図２２は、Point & Printの概略について説明するための図である。通信ネットワーク２にプリンタ５、クライアントＰＣ７及びサーバＰＣ８が接続されている。クライアントＰＣ７及びサーバＰＣ８にＯＳ(サーバにはサーバ用)がインストールされている。クライアントＰＣ７は、このサーバＰＣ８をプリントサーバとして、プリンタ５に印刷要求を行うことができる。
【００２２】
このようなシステムでは、クライアントＰＣ７にはサーバＰＣ８と同じプリンタドライバ６０がインストールされている必要がある。しかし、通信ネットワーク２上の個々のクライアントＰＣに、管理者などがプリンタドライバをインストールするには多くの時間と労力を必要とする。
【００２３】
そのため、Point & Printではこの不都合を解決する手段として、サーバＰＣ８からクライアントＰＣ７にプリンタドライバをダウンロードしてインストールすることを可能にしている。これは、Windows（登録商標）系ＯＳ標準の機能である。なお、Point & Printでインストールしたプリンタドライバ６０にも、印刷時にはＲＡＷスプール形式とＥＭＦスプール形式が存在する。
【００２４】
Point & Printによりインストールされたプリンタドライバ６０は（ＥＭＦスプールの場合）、描画処理（レンダリングともいう、前述した描画ドライバ６３による処理）をクライアントＰＣ７が行うかサーバＰＣ８が行うかをユーザが変更することができる。クライアントＰＣ７側で描画処理を行うことを「クライアントサイドレンダリング」という。サーバＰＣ８側で描画処理を行う「サーバサイドレンダリング」という。
【００２５】
〈共有フォルダを監視して印刷を行うソリーション〉
共有フォルダを監視し、ファイルが追加されたことを検知して印刷を行うＩＴ−Ｂｏｘと呼ばれるソリーションがある。図２３はＩＴ−Ｂｏｘについて説明するための図である。
【００２６】
ＩＴ−ＢｏｘはWindows（登録商標） ＯＳを利用して構築される。ＩＴ−Ｂｏｘが導入されたサーバＰＣ８は管理アプリケーション４０及び共有フォルダ８５を備えている。管理アプリケーション４０は共有フォルダ８５を監視しており、ファイルが追加されたことを検知すると、追加されたファイルの印刷実行指示をＯＳに出力できるアプリケーションを起動させて印刷を行う。
【００２７】
この図では、管理アプリケーション４０は、クライアントＰＣ７により共有フォルダ８５にファイルａ ８６が追加されたことを検知し、ファイルａ ８６を読み込み、ファイルａ ８６の印刷実行指示をＯＳ３０に対して送出可能なアプリケーションａ ５０ａを起動させ、ファイルａ ８６を渡して印刷指示を出している。ファイルａ ８６が例えばdocファイルであれば、アプリケーションａ ５０ａとして、Word Viewer或いはMS-Wordなどが使われる。
【００２８】
アプリケーションａ ５０ａがＯＳ３０に印刷実行指示を出し、ＯＳがプリンタドライバ６０に印刷実行指示を出し、プリンタドライバ６０がプリンタ５に描画データを送信することで、プリンタ５により印刷が行われる。
【００２９】
大部分のOfficeアプリケーションでは、Officeアプリケーションに引数付でファイルを渡すことで印刷できることを利用して、このＩＴ−Ｂｏｘのソリューションが構築されている。このＩＴ−Ｂｏｘでは、共有フォルダ８５に追加されたファイルを外部のＰＣやスマートデバイスから参照し、プリンタ５で印刷を行うことが可能となる。ＩＴ−Ｂｏｘ内にインストールするプリンタドライバ６０のインストール形式は顧客環境によって変わる可能性がある。
【００３０】
このＩＴ−Ｂｏｘには、使用されるプリンタドライバ６０での印刷において、アプリケーションの印刷設定が変更できず、デフォルトの印刷設定のままで印刷されてしまうという問題がある。
【００３１】
管理アプリケーション４０はソリューション開発ベンダ独自のアプリケーションであるが、Office文書などを印刷するOfficeアプリケーションは他ベンダ開発のものなどで、改変しないもしくは改変できないものが使われている。管理アプリケーション４０は、そのOfficeアプリケーションに対して引数でOfficeファイルと印刷指示の出力しかできないため、印刷設定を変更することができない。
【００３２】
よって、共有フォルダ８５に転送されたファイルを他のＰＣやスマートデバイスから印刷をする時に、集約印刷や両面印刷など、他のＰＣやスマートデバイスのユーザの望む印刷設定で印刷することができない。
【００３３】
前述した拡張Ｉ／Ｆ部６２を用いてDEVMODE構造体へのアクセスを可能にしたプリンタドライバ（特許文献１）の場合、DEVMODE構造体に全ての設定項目を格納することが前提であるため、実際にプリンタドライバに対して印刷を指示するアプリケーションが、プリンタドライバの独自拡張Ｉ／Ｆ部６２を知っている必要がある。従って、ＩＴ−Ｂｏｘのような印刷をかけるトリガとなるアプリケーション（管理アプリケーション）と実際に印刷をかけるアプリケーションとが異なる場合、印刷設定を変更することができないという問題がある。
【００３４】
ここで、特許文献１に記載されたプリンタドライバでは、DEVMODE構造体に全ての設定項目を格納することが前提となる理由を説明する。図２１に示したように、プリンタドライバが独自に拡張した拡張Ｉ／Ｆ部６２を利用して、アプリケーション５１が印刷設定を変更する場合、(i)アプリケーション５１がプリンタドライバの拡張Ｉ／Ｆ部６２に対してDEVMODE構造体９０を入力し、(ii)印刷設定の変更を行った後のDEVMODE構造体９０を出力として受け取り、(iii)これを印刷開始時に描画ドライバ６３に渡すDEVMODE構造体９０とする、という処理が必要である。
【００３５】
つまり、拡張Ｉ／Ｆ部６２を用いた場合に、DEVMODE構造体９０以外に印刷設定を格納すると、アプリケーション５１は拡張Ｉ／Ｆ部６２からDEVMODE構造体９０以外の印刷設定を取得できないので、DEVMODE構造体９０に全ての印刷設定を格納する必要がある。
【００３６】
また、特許文献１に記載されたプリンタドライバでは、アプリケーションをユーザの処理に適したもの又は拡張Ｉ／Ｆ部６２を呼び出せるものに改変することが必要となる。
【００３７】
また、特許文献１に記載されたプリンタドライバには、特定のスプール形式のみや、ローカル環境へのインストール時のみだけでなく、ＲＡＷスプール、ＥＭＦスプールの両方とも同じようには動作することができないという問題がある。また、Point & Printでインストールされたプリンタドライバでは動作することができないという問題もある。
【００３８】
〈DEVMODE構造体以外のファイルやレジスタトリによる印刷設定の保持〉
DEVMODE構造体以外のファイルやレジストリや共有メモリ空間などに印刷設定を保持しておき、プリンタドライバ側でその設定を読み込むことで、外部から印刷設定の変更を可能にする方法を採用しているプリンタドライバも存在する。
【００３９】
図２４にその方法の一例を示す。図示のように、アプリケーション５２は、拡張Ｉ／Ｆ部６２を呼び出して印刷設定指示を送り、ＵＩドライバ６１によりDEVMODE構造体以外の設定格納領域９１に印刷設定を格納する。描画ドライバ６３は、ＯＳ３０から印刷実行指示を受けたとき、設定格納領域９１の印刷設定を参照する。
【００４０】
この方法によれば、DEVMODE構造体に印刷設定を格納しないという点では前述の問題点を解消するが、DEVMODE構造体を用いないことで別の問題が発生する。
【００４１】
以下の２つのケースである。
１．ＥＭＦスプールでの印刷シーケンス
２．Point & Printインストールしたプリンタドライバでの印刷シーケンス
【００４２】
まず１番目のケースにおける問題について説明する。上記の方法は、印刷時のＤＤＩコールシーケンスに依存しており、ＲＡＷスプールの時は実現可能である。しかし、スプール形式が異なると、ＯＳから呼ばれるＤＤＩコールシーケンスが変化する。即ち、ＥＭＦスプールには、ＯＳ内部の動作として、アプリケーションからの印刷データをＥＭＦデータに変換する処理と、ＥＭＦデータをプリンタが解釈可能なデータに変換する処理という、２回の変換処理シーケンスがある。
【００４３】
この２回の変換処理シーケンスのうち、ＥＭＦデータに変換する処理と、ＥＭＦデータをプリンタが解釈可能なデータに変換する処理では、プロセスが異なってしまう。プロセスの権限によってアクセス可能/不可能があるため、ファイルやレジストリの場所によっては、最終的にプリンタが解釈可能なデータ変換時に、拡張Ｉ／Ｆ部６２で設定した印刷設定を設定格納領域から取得できない可能性がある。最近のWindows（登録商標） 系ＯＳではセキュリティの観点から、権限が異なると全くアクセスできない場合もある。
【００４４】
次に２番目のケースにおける問題について説明する。上記の方法は、ローカル環境で、ユーザが使用するＰＣにプリンタドライバをインストールした時は実現可能である。しかし、Point & Printでインストールしたドライバでは実現できないことがある。
【００４５】
即ち、Point & Printでインストールしたドライバでは、ＵＩドライバ６１と描画ドライバ６３が動作する場所が異なるようにすることもできる。例えば、クライアントサイドレンダリングでは、ＵＩドライバ６１、描画ドライバ６３ともにクライアントＰＣ７側で動作し、サーバサイドレンダリングでは、ＵＩドライバ６１は、クライアントＰＣ側で動作し、描画ドライバ６３はサーバＰＣ８側で動作をする。
【００４６】
このサーバサイドレンダリングでは、そもそも動作するＰＣが物理的に別であるため、プリンタドライバ６０の拡張Ｉ／Ｆ部６２によってファイルやレジストリなどの設定格納領域９１に一時格納した印刷設定を、描画ドライバ６３が、最終的にプリンタ５が解釈可能なデータ変換時に取得できない。
【発明の概要】
【発明が解決しようとする課題】
【００４７】
本発明は、このような問題を解決するためになされたものであり、その目的は、オペレーティングシステムに印刷実行指示を出すアプリケーションの改変や印刷設定画面の操作を行わずに、そのアプリケーションの印刷設定を変更できるようにすることである。
【課題を解決するための手段】
【００４８】
本発明に係る情報処理装置は、アプリケーションに印刷指示を送出するアプリケーション管理手段と、オペレーティングシステムで定義されたインタフェース手段を通して、前記アプリケーションからファイル及び印刷設定を伴う印刷実行指示を受け取り、印刷データを生成する印刷データ生成手段と、前記インタフェース手段以外のインタフェース手段である拡張インタフェース手段と、前記アプリケーション管理手段から前記拡張インタフェース手段を通して入力された印刷設定を保持する印刷設定保持手段と、を有し、前記印刷データ生成手段は、前記印刷設定保持手段に保持されている印刷設定を反映させた前記印刷データを生成する機能を有する情報処理装置である。
【発明の効果】
【００４９】
本発明によれば、オペレーティングシステムに印刷実行指示を出すアプリケーションの改変や印刷設定画面の操作を行わずに、そのアプリケーションの印刷設定を変更することができる。
【図面の簡単な説明】
【００５０】
【図１】本発明の情報処理装置の実施形態を含む印刷システムの概略構成を示す図である。
【図２】図１におけるＰＣのハードウェア構成について説明するための図である。
【図３】図１におけるＰＣのソフトウェア構成について説明するための図である。
【図４】図３における管理アプリケーション、アプリケーション、プリンタドライバ、及びＯＳの関係について説明するための図である。
【図５】図３に示す各ソフトウェアの基本動作について説明するための図である。
【図６】複数の論理プリンタに対する印刷設定を保持する構成について説明するための図である。
【図７】ＩＴ−Ｂｏｘを利用した印刷の第１の例について説明するための図である。
【図８】印刷設定から印刷データの生成までの手順の第１の例を示すシーケンス図である。
【図９】Point & Print環境を備えた印刷システムについて説明するための図である。
【図１０】Point & Print環境でのランゲージモニタについて説明するための図である。
【図１１】ＩＴ−Ｂｏｘを利用した印刷の第２の例について説明するための図である。
【図１２】図１１における設定変更部により提供される印刷設定変更ＵＩの例を示す図である。
【図１３】印刷設定から印刷データの生成までの手順の第２の例を示すシーケンス図である。
【図１４】サポートしている機能の異なる複数のプリンタドライバを切り替えて印刷するケースについて説明するための図である。
【図１５】サポートしている機能の異なる複数のプリンタドライバから１つを選択し、印刷する場合の手順を示すシーケンス図である。
【図１６】新規機能を動的にシステムに組み入れる仕組みを持つ拡張Ｉ／Ｆを示す図である。
【図１７】新規機能用の拡張Ｉ／Ｆ部の追加用ＵＩの一例を示す図である。
【図１８】Windows（登録商標）プリントアーキテクチャの概略を示す図である。
【図１９】DEVMODE構造体の一例を示す図である。
【図２０】プリンタドライバによるDEVMODE構造体の参照について説明するための図である。
【図２１】拡張Ｉ／Ｆ部、アプリケーション、及び、DEVMODE構造体について説明するための図である。
【図２２】Point & Printの概略について説明する図である。
【図２３】ＩＴ−Ｂｏｘについて説明するための図である。
【図２４】DEVMODE構造体以外のファイルやレジストリや共有メモリ空間などに印刷設定を保持しておき、プリンタドライバ側でその設定を読み込むことで、外部から印刷設定の変更を可能にする方法について説明するための図である。
【発明を実施するための形態】
【００５１】
以下、本発明の実施形態について図面を参照して説明する。なお、以下に示す図面において、「背景技術」で示した図面と同一又は対応する部分には、「背景技術」で示した図面と同じ参照符号を付した。
【００５２】
〈印刷システムの概略構成〉
図１は、本発明の情報処理装置の実施形態を含む印刷システムの概略構成を示す図である。
【００５３】
この印刷システム１は、通信ネットワーク２に接続されたＰＣ（パーソナルコンピュータ）３、スマートデバイス４、及びプリンタ５を備えている。ＰＣ３が本発明の実施形態に係る情報処理装置であり、ＩＴ−Ｂｏｘが導入されている。
【００５４】
ＰＣ３は、ユーザの操作を受け付け、文書作成ソフトなどのアプリケーションが作成したファイルからプリンタドライバにより印刷データを生成し、通信ネットワーク２を通してプリンタ５に送信することで、ファイルの印刷を行うことができる。スマートデバイス４は、ＰＣ３に導入されたＩＴ−Ｂｏｘを通信ネットワーク２経由で利用することができる。プリンタ５は、インクジェット方式や電子写真方式などの作像部を備えていればよく、複合機であってもよい。
【００５５】
〈ＰＣのハードウェア構成〉
図２は、図１におけるＰＣのハードウェア構成について説明するための図である。
【００５６】
ＰＣ３は、それぞれバス１０で相互に接続されているＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、外部Ｉ／Ｆ１４、通信装置１５、入力装置１６、表示制御部１７及び記憶装置１８を有する。
【００５７】
ＣＰＵ１１は、ＯＳ３０、管理アプリケーション４０、アプリケーション５０、及び、プリンタドライバ６０を記憶装置１８から読み出して、ＲＡＭ１３を作業メモリにして各種処理を実行する。
【００５８】
ＲＯＭ１２にはＢＩＯＳや初期設定されたデータ、スタートプログラム等が記憶されている。ＲＡＭ１３は必要なデータを一時記憶する作業メモリ（主記憶メモリ）になる。
【００５９】
外部Ｉ／Ｆ１４はＵＳＢケーブル等のケーブルや、可搬型の記憶媒体１９を装着するインタフェースである。通信装置１５は、ＬＡＮカードやイーサネット（登録商標）カードであり、ＣＰＵ１１からの指示によりプリンタ５にパケットデータ（本実施形態では主に印刷データ）を送信する。
【００６０】
入力装置１６は、キーボード、マウスなど、ユーザの様々な操作指示を受け付けるユーザインターフェイスである。タッチパネルや音声入力装置を入力装置とすることもできる。
【００６１】
表示制御部１７は、アプリケーション５０が指示する画面情報に基づき所定の解像度や色数等でディスプレイ２０の描画を制御する。ディスプレイ２０は、液晶や有機ＥＬなどのＦＰＤ（Flat Panel Display）である。
【００６２】
記憶装置１８は、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発メモリを実体とし、ＯＳ３０、管理アプリケーション４０、アプリケーション５０、及びプリンタドライバ６０を記憶している。また、共有フォルダ（図示せず）が設けられている。記憶媒体１９は、例えば、ＳＤカードやＵＳＢメモリなど不揮発性のメモリである。
【００６３】
ＯＳ３０はWindows（登録商標）系ＯＳである。なお、ＯＳ３０としてはWindows（登録商標）系ＯＳが好適であるが、Windows（登録商標）系ＯＳと同等の機能を有するＯＳであればよい。
【００６４】
アプリケーション５０は、文書データの作成、編集、表示、管理などを行い、文書データの印刷処理が可能なアプリケーションであればどのようなものでもよい。例えば、文書作成ソフト、文書閲覧ソフト（文書ビューワ、文書リーダ）、ブラウザソフト、プレゼン資料作成ソフト等、種々のものがある。なお、文書データは、文字や記号、数値だけでなく、各種画像フォーマット（例．ＪＰＥＧ、ＴＩＦＦ）のデータを含む。
【００６５】
管理アプリケーション４０、プリンタドライバ６０、及び共有フォルダの詳細については後述する。
【００６６】
〈ＰＣのソフトウェア構成〉
図３は、ＰＣ３のソフトウェア構成、即ち記憶装置１８に記憶されているソフトウェアについて説明するための図である。
【００６７】
ＰＣ３は、管理アプリケーション４０、アプリケーション５０、プリンタドライバ６０、ランゲージモニタ（Language Monitor）７０、及び通信部８０を有する。このうち、ランゲージモニタ７０は、プリンタドライバ６０とプリントデバイスであるプリンタ５との間で双方向通信を行うための双方向通信インタフェース手段（ソフトウェア）としてWindows（登録商標）系ＯＳにより提供されているため、広義ではＯＳの一部である。この他のＧＤＩ、スプーラ、プリンタプロセッサなどは省略したが、ＯＳと共にＰＣ３にインストールされている。
【００６８】
管理アプリケーション４０は、共有記憶装置としての共有フォルダを監視し、共有フォルダにファイルが追加されたことを検知したとき、追加されたファイルの印刷処理（ＯＳに対する印刷実行指示の送出など）が可能なアプリケーションを起動させて追加されたファイルを渡し、印刷処理を実行させるためのプログラムである。管理アプリケーション４０は、アプリケーション管理手段及びファイル監視手段として機能する（アプリケーション管理手段及びファイル監視手段を兼用する）。
【００６９】
プリンタドライバ６０は、ＵＩドライバ６１と、拡張Ｉ／Ｆ部６２と、描画ドライバ６３を有する。また、ＵＩドライバ６１は表示部６４を有する。ＵＩドライバ６１の表示部６４は、ユーザがアプリケーション５０に対して文書の印刷操作を入力することで、印刷設定画面をディスプレイ２０に表示させる。
【００７０】
ユーザは、印刷設定画面に対し、部数や両面などといった設定、「集約」「製本」「変倍」等の設定を行うことができる。また、表示部６４は、ユーザが印刷開始指示を入力した後も、印刷設定画面をディスプレイ２０に表示して、印刷設定の変更を受け付けることができる。印刷設定は、DEVMODE構造体という構造体（データテーブル）に格納される。DEVMODE構造体はWindows（登録商標）系ＯＳ上で動作する各種のプリンタドライバ６０に対して印刷条件を共通に設定するためのメンバ変数が定義されたデータ構造である。DEVMODE構造体は、オペレーティングシステムで定義されたインタフェース手段としてのＧＤＩによりプリンタドライバ６０に渡される。
【００７１】
拡張Ｉ／Ｆ部６２は、DEVMODE構造体を介さずに直接印刷設定を受け取ることを可能にしたプリンタドライバ６０に独自のインタフェースである。つまり、拡張Ｉ／Ｆ部６２はオペレーティングシステムで定義されたインタフェース手段以外の拡張インタフェース手段である。本実施形態では、拡張Ｉ／Ｆ部６２は、管理アプリケーション４０からアプリケーション５０の印刷設定を受け取る。また、その印刷設定を印刷設定保持手段としてのランゲージモニタ７０が保持する。
【００７２】
印刷データ生成手段としての描画ドライバ６３は、DEVMODE構造体に含まれている印刷設定、及びランゲージモニタ７０に保持されている印刷設定を参照して、アプリケーション５０から送出された印刷実行指示に関わる文書ファイルから、印刷設定を反映させた印刷データを作成する。このとき、ランゲージモニタ７０に印刷設定が保持されている場合は、その印刷設定を使用し、保持されていない場合は、DEVMODE構造体に含まれている印刷設定を使用する。つまり、ランゲージモニタ７０に保持されている印刷設定を優先的に使用する。
【００７３】
ランゲージモニタ７０は、データ保持部７１と、通信部７２とを有する。このうち、通信部７２は、プリンタドライバ６０が通信部８０に印刷データを送信する際に、Windows（登録商標）プリントアーキテクチャとしての通信制御を行うものであり、Windows（登録商標）系ＯＳに標準の双方向通信インタフェース手段としての従来のランゲージモニタが有している。通信部７２は通信部８０を介してプリンタ５からのメッセージを受信することもできる。
【００７４】
これに対し、データ保持部７１は、本実施形態に特有のものであり、拡張Ｉ／Ｆ部６２から入力された印刷設定を記憶する。データ保持部７１は、従来のランゲージモニタの機能を利用してプリンタドライバ６０により実現される。このため、Windows（登録商標）系ＯＳの変更は必要ないか、あったとしても僅かである。データ保持部７１の詳細については後述する。
【００７５】
通信部８０は、通信ネットワーク２上のスマートデバイス４及びプリンタ５と通信を行う部分であり、ＴＣＰ／ＩＰなどのプロトコルに従う通信処理を実行する。
【００７６】
なお、図３では、拡張Ｉ／Ｆ部６２がＵＩドライバ６１から独立した構成となっているが、ＵＩドライバ６１が拡張Ｉ／Ｆ部６２を含む構成でもよい。
【００７７】
〈管理アプリケーション、アプリケーション、プリンタドライバ、及びＯＳの関係〉
図４は、管理アプリケーション４０、アプリケーション５０、プリンタドライバ６０、及びＯＳ３０の関係について説明するための図である。
【００７８】
管理アプリケーション４０がプリンタドライバ６０の拡張Ｉ／Ｆ部６２を使用することで、アプリケーション５０の印刷設定をプリンタドライバ６０に渡すことができる。アプリケーション５０は、管理アプリケーション４０から起動され、印刷対象の文書ファイルを渡されるだけで、ＯＳ３０に対して、文書ファイル及び印刷設定を伴う印刷実行指示を出すことができる。アプリケーション５０はデフォルトの印刷設定をＯＳ３０に渡しても、管理アプリケーション４０が拡張Ｉ／Ｆ部６２経由で渡した印刷設定を描画ドライバ６３が読み込むことで、スマートデバイス４のユーザの意図を反映した印刷が行える。
【００７９】
〈各ソフトウェアの基本動作〉
図５は、図３に示す各ソフトウェアの基本動作について説明するための図である。
管理アプリケーション４０は、プリンタドライバの拡張Ｉ／Ｆ部６２に印刷設定を含む設定指示を出し、拡張Ｉ／Ｆ部６２はその印刷設定をランゲージモニタ７０に保持させる。ここで、管理アプリケーション４０が拡張Ｉ／Ｆ部６２に指示する設定は、管理アプリケーション４０に対する外部デバイス（例えばスマートデバイス４）からの設定、特定のパスに保存された設定の取得、または固定値など、管理アプリケーション４０が知り得た設定であればどのような手段で取得したものでもよい。
【００８０】
また、管理アプリケーション４０は、印刷する文書ファイル毎にアプリケーションを選択し、起動させて文書ファイルを渡し、印刷指示を送出する。ここでは、アプリケーションａ ５０ａ及びアプリケーションｂ ５０ｂに印刷指示を出している。印刷する文書ファイルは、例えばスマートデバイス４からユーザにより指定される。
【００８１】
アプリケーションａ ５０ａ、アプリケーションｂ ５０ｂは、デフォルトの印刷設定のまま、ＯＳ３０に印刷実行指示を出す。ＯＳ３０は、描画ドライバ６３に印刷実行指示を出す。
【００８２】
描画ドライバ６３は、印刷実行指示とともにデフォルトの印刷設定のDEVMODEを受け取る。次いで、描画ドライバ６３は、ランゲージモニタ７０に対して、拡張Ｉ／Ｆ部６２によって設定された印刷設定を保持しているか否かを問い合わせ、保持している場合はその印刷設定を取得する。描画ドライバ６３は、ランゲージモニタ７０から印刷設定を取得した場合は、その印刷設定を反映させた印刷データを生成し、プリンタ５に送信する。ランゲージモニタ７０から印刷設定を取得しなかった場合は、DEVMODE構造体に格納されたデフォルトの印刷設定を反映させた印刷データを生成し、プリンタ５に送信する。
【００８３】
〈複数の論理プリンタに対する印刷設定の保持〉
一台のＰＣに複数の論理プリンタが登録されることがある。論理プリンタとは、Windows（登録商標）系ＯＳのプリンタフォルダに、プリンタのアイコンとして表示されている論理的なプリンタである。Windows（登録商標）系ＯＳは、１つのプリンタドライバに対して、複数の論理プリンタを作成することができる。論理プリンタは、アプリケーションからみた仮想的な出力先ともいえ、プリンタドライバが描画した印刷データは、ユーザが指定した論理プリンタに出力され、Windows（登録商標）系ＯＳが論理プリンタから物理プリンタに提供する。
【００８４】
論理プリンタには、１つずつ名前を付与することができ、ユーザなどが任意に付けたり、プリンタドライバのパッケージ名などから自動的に付与されたりする。各論理プリンタには、機能、共有の有無、スプール形式、オプション構成などを設定可能である。即ち、１つの物理的なプリンタの初期設定を変えることができる。
【００８５】
１台のＰＣに複数の論理プリンタが登録されている場合、論理プリンタ毎に印刷設定を設定することができればユーザの利便性が向上する。そのためには、これらの印刷設定を論理プリンタ毎に保持できればよいことになる。そこで、本実施形態では、拡張Ｉ／Ｆ部６２は、論理プリンタ名をキーにして、印刷設定をランゲージモニタ７０に登録する。即ち、論理プリンタ名に紐付けて印刷設定を登録する。
【００８６】
図６は、複数の論理プリンタに対する印刷設定を保持する構成について説明するための図である。この図は、アプリケーション５０がプリンタドライバの拡張Ｉ／Ｆ部６２を使用した例であり、ランゲージモニタ７０のデータ保持部７１に以下の印刷設定７１ａ、７１ｂが保持されている。
印刷設定７１ａ：アプリケーション５０が論理プリンタ名＝Ａに対して印刷設定ＡＢを設定
印刷設定７１ｂ：アプリケーション５０が論理プリンタ名＝Ｂに対して印刷設定ＭＮを設定
【００８７】
論理プリンタ名は、ユーザが出力先として指定している論理プリンタのＩＤなので、ＵＩドライバ６１及び描画ドライバ６３は、参照すべき論理プリンタ名を知ることができる。よって、ランゲージモニタ７０には、その論理プリンタ名で問い合わせることで、印刷設定を取得できる。同様に、拡張Ｉ／Ｆ部６２も論理プリンタ名の指定で動作しているので、その論理プリンタ名で設定データをランゲージモニタ７０に保持させることができる。
【００８８】
〈ＩＴ−Ｂｏｘを利用した印刷の第１の例〉
図７は、ＩＴ−Ｂｏｘを利用した印刷の第１の例について説明するための図である。
他の情報処理装置としてのスマートデバイス４及びＰＣ６は、ＰＣ３内の共有フォルダ８５にアクセス可能である。ＰＣ６が共有フォルダ８５に文書ファイルを転送する。スマートデバイス４が共有フォルダ８５内の文書を閲覧し、印刷したい文書ファイルを選択し、そのファイルを指定して管理アプリケーション４０に印刷指示を出す。このとき、スマートデバイス４は、印刷設定を行うことができる。
【００８９】
なお、図では、ＰＣ６がファイルａ ８６を転送し、スマートデバイス４がファイルａ８６を選択しているが、スマートデバイス４は他のファイル（ここではファイルｂ ８７、ファイルｃ ８８）を選択することもできる。また、ＰＣ６が印刷したい文書のファイルを選択することもできる。
【００９０】
管理アプリケーション４０は、スマートデバイス４からの印刷設定を受け取ると、その印刷設定を拡張Ｉ／Ｆ部６２を介してランゲージモニタ７０に格納する。そして、印刷指示で指定されたファイルａ ８６を共有フォルダ８５から読み出し、そのファイルａ ８６の印刷処理が可能なアプリケーションａ ５０ａを起動させ、印刷指示を出す。
【００９１】
アプリケーションａ ５０ａは、デフォルトの印刷設定のまま、ＯＳ３０に印刷実行指示を出す。ＯＳ３０は、描画ドライバ６３に印刷実行指示を出す。描画ドライバ６３は、印刷実行指示とともにデフォルトの印刷設定のDEVMODEを受け取る。次いで、描画ドライバ６３は、ランゲージモニタ７０から印刷設定を取得する。そして、その印刷設定を反映させた印刷データを作成し、プリンタ５へ送信する。
【００９２】
このように、スマートデバイス４やＰＣ６から管理アプリケーション４０に対して、共有フォルダ８５上のファイルを指定し、印刷設定を行い、印刷指示を出すと、指定されたファイルの印刷処理が可能なアプリケーションのデフォルトの印刷設定を変更することができる。
【００９３】
〈印刷設定から印刷データの生成までの手順の第１の例〉
図８は、印刷設定から印刷データの生成までの手順の第１の例を示すシーケンス図である。
【００９４】
ＰＣ６又はスマートデバイス４からＰＣ３の管理アプリケーション４０に印刷設定とともに印刷設定指示が渡される（ステップＳ１）。管理アプリケーション４０は内部に設定変更部を備えており、ＰＣ６又はスマートデバイス４からの要求に応じて設定画面を表示することで印刷設定を受け付けている。
【００９５】
管理アプリケーション４０は、プリンタドライバの拡張Ｉ／Ｆ部６２に対し、ＰＣ６又はスマートデバイス４から受け取った印刷設定の保持依頼を送出する（ステップＳ２）。拡張Ｉ／Ｆ部６２は印刷設定の妥当性を検証（判断）し（ステップＳ３）、ランゲージモニタ７０に保持させる（ステップＳ４）。
【００９６】
このとき、拡張Ｉ／Ｆ部６２は、SendRecvBidiDataFromPort()というWindows（登録商標）系ＯＳのＡＰＩを使用する。SendRecvBidiDataFromPort()関数は、ランゲージモニタ７０に実装されるＡＰＩである。プリンタドライバ６０と同じようにランゲージモニタ７０にもWindows（登録商標）系ＯＳによって決められたＩ／Ｆが存在する。SendRecvBidiDataFromPort()関数は、その１つであり、アプリケーションとプリンタ間、アプリケーションとプリントサーバ間の双方向通信をサポートする。
【００９７】
次に、ＰＣ６又はスマートデバイス４からＰＣ３の管理アプリケーション４０に印刷する文書ファイルの指定とともに印刷指示が渡される（ステップＳ５）。管理アプリケーション４０は、指定された文書ファイルの印刷処理が可能なアプリケーション５０を起動させ（ステップＳ６）、印刷指示を出す（ステップＳ７）。
【００９８】
アプリケーション５０は、ＯＳのＧＤＩ３１に印刷実行指示とともにデフォルトの印刷設定が格納されたDEVMODE構造体を渡す（ステップＳ８）。具体的には、アプリケーション５０はCreateDC()関数でデフォルトの印刷設定を引数にしてＧＤＩ３１をコールする。
【００９９】
ＧＤＩ３１は、デフォルトの印刷設定が格納されたDEVMODE構造体を描画ドライバ６３に渡す（ステップＳ９）。具体的には、CreateDC()の引数でアプリーション５０がＧＤＩ３１に渡した印刷設定（DEVMODE構造体）が、DrvEnablePDEV()の引数に格納され描画ドライバ６３に通知される。
【０１００】
描画ドライバ６３は、印刷開始準備命令(DrvEnablePDEV())で描画能力を返却する必要があるため、ランゲージモニタ７０から拡張Ｉ／Ｆ部６２によって設定された印刷設定を取得する（ステップＳ１０）。具体的には、SendRecvBidiDataFromPort()の引数に問い合わせを意味する値を設定し、ランゲージモニタ７０に送出する。ランゲージモニタ７０は、拡張Ｉ／Ｆ部６２により設定された印刷設定がある場合、SendRecvBidiDataFromPort()にそれを設定して描画ドライバ６３に返却する。
【０１０１】
次に描画ドライバ６３は、ランゲージモニタ７０から取得した印刷設定を印刷開始準備命令とともに渡された印刷設定とマージして、ＧＤＩ３１対して描画能力を返却する。
【０１０２】
アプリケーション５０は、ＧＤＩ３１に描画能力を問い合わせる（ステップＳ１１：GetDeviceCaps()）。次にアプリケーション５０は、ＧＤＩ３１に印刷開始を指示する（ステップＳ１２）。具体的には、アプリケーション５０はStartDoc()関数でDocINFOなどを引数にしてＧＤＩ３１をコールする。ＧＤＩ３１は、描画ドライバ６３に印刷開始命令を送る（ステップＳ１３）。具体的には、DrvStartDoc()関数を描画ドライバ６３に送出する。
【０１０３】
描画ドライバ６３はＧＤＩ３１から印刷開始命令(DrvStartDoc())を受け取ると、プリンタドライバ６０内で反映させる印刷設定(集約、カラーバランスなど)やプリンタ本体で反映させる印刷設定(両面、ステープル)などの設定をランゲージモニタ７０から取得する（ステップＳ１４）。なお、実際の印刷では、この後で最終的な設定の妥当性の検証が行われる。
【０１０４】
描画ドライバ６３は、ランゲージモニタ７０から取得した印刷設定を基に印刷データ(ＰＪＬ、ＰＤＬ)を生成し、プリンタ５へ送信する。
【０１０５】
〈Point & Print環境を備えた印刷システム〉
図９は、Point & Print環境を備えた印刷システムについて説明するための図である。４台のクライアントＰＣ２０１〜２０４が通信ネットワーク４００を介してサーバＰＣ１００と接続されている。サーバＰＣ１００にはプリンタ３００が接続されているが、プリンタ３００は通信ネットワーク４００に接続されていてもよい。
【０１０６】
サーバＰＣ１００にはプリンタドライバ６０がインストールされており、サーバＰＣ１００が各クライアントＰＣ２０１〜２０４にプリンタドライバ６０をコピーして配布する。よって、ユーザの手を煩わせることなく、サーバＰＣ１００とクライアントＰＣ２０１〜２０４が協働してプリンタドライバ６０をインストールすることができる。なお、以降の説明では、クライアントＰＣ２０１がサーバＰＣ１００に接続し、Point & Printによりプリンタドライバ６０をインストールしたものとする。この場合、クライアントＰＣ２０１とサーバＰＣ１００が情報処理システムを構成する。
【０１０７】
Point & Print環境でのサーバサイドレンダリングでは、クライアントＰＣ２０１がユーザの印刷設定を受け付け、サーバＰＣ１００が描画処理を行うため、印刷設定などを共有することが困難である。
【０１０８】
しかし、これまで説明したランゲージモニタ７０は、Windows（登録商標）系ＯＳ内の機能なので、Point & PrintインストールされたクライアントＰＣ２０１のWindows（登録商標）系ＯＳは、サーバＰＣ１００に印刷設定を送信することができる。よって、サーバＰＣ１００はクライアントＰＣ２０１からプリントアーキテクチャ内の処理で印刷設定を取得できる。
【０１０９】
〈Point & Print環境でのランゲージモニタ〉
図１０は、Point & Print環境におけるランゲージモニタの作用を説明する図の一例である。
【０１１０】
前述したように、ランゲージモニタ７０はWindows（登録商標）系ＯＳのプリントアーキテクチャの中に組み込まれる１つのモジュールである。このため、Point & PrintによりクライアントＰＣ２０１側がＵＩドライバ６１の処理を、サーバＰＣ１００側が描画ドライバ６３の処理を受け持つとしても、ランゲージモニタ７０はサーバＰＣ１００側で１つだけ機能する。クライアントＰＣ２０１側にもランゲージモニタはあるが機能しない。
【０１１１】
クライアントＰＣ２０１のプリンタドライバとサーバＰＣ１００のプリンタドライバは１つのランゲージモニタ７０にアクセスする。クライアントＰＣ２０１のＯＳとサーバＰＣ１００のＯＳは、クライアントＰＣ２０１とサーバＰＣ１００の通信を確立している（例えば、ＲＰＣ（Remote Procedure Call）を利用する）。そして、ＵＩドライバ６１がクライアントＰＣ２０１のランゲージモニタにアクセスする場合、クライアントＰＣ２０１のランゲージモニタは動作せず、スプーラ９０がサーバＰＣ１００のランゲージモニタ７０に印刷設定を送信する。
【０１１２】
このようにクライアントＰＣ２０１とサーバＰＣ１００が同じWindows（登録商標）系ＯＳをインストールしているので、Windows（登録商標）系ＯＳのプリントアーキテクチャのランゲージモニタを共通に利用できる。このため、メーカ独自で開発したモジュールなどで生じやすいアクセス権限の相違によるアクセス不能や通信エラーなどが起こりにくい。また、同様の理由でWindows（登録商標）系ＯＳとの親和性も高い。
【０１１３】
〈ＩＴ−Ｂｏｘを利用した印刷の第２の例〉
図７を参照して説明した第１の例は、１ジョブ毎に印刷設定を変更し、印刷する方法に関するものである。したがって、例えば管理アプリケーション４０が共有フォルダ８５上のアプリケーションを特定の時刻にまとめて印刷するケースは考慮されていない。以下説明する第２の例は、そのようなケースにおいても印刷設定を特定の単位（ジョブ、アプリケーション、ユーザなど）毎に印刷設定を変更して印刷する方法に関するものである。
【０１１４】
図１１は、ＩＴ−Ｂｏｘを利用した印刷の第２の例について説明するための図である。この図において、図７（第１の例）と同じ部分には図７と同じ参照符号を付すとともに、特に必要な場合を除き、説明を省略した。
【０１１５】
設定変更部１１０は、外部デバイス（ここではスマートデバイス４）から設定変更要求を受け付け、設定変更のためのインタフェースを提供する。設定変更のためのインタフェースを提供する際には、ＵＩドライバ６１から印刷範囲の取得を行い、取得した情報を基に設定可能項目を通知し、設定させる。また、設定変更部１１０は、インタフェースを通じて設定されると、設定された印刷設定を基に設定ファイルを生成し、共有フォルダ８５に保存する。
【０１１６】
管理アプリケーション４０は外部デバイス（スマートデバイス４やＰＣ６）から印刷設定指示を受けると、共有フォルダ８５内の設定ファイル８９を参照し、設定ファイル８９の情報を基に拡張Ｉ／Ｆ部６２を使うことにより印刷設定を行う。また、管理アプリケーション４０は外部デバイスから印刷指示を受けると(時刻指定印刷などで印刷指示を受ける場合もある)、印刷対象のファイルを印刷可能な印刷用アプリケーション（ここではアプリケーションａ ５０ａ）を起動し、印刷命令をかける。
【０１１７】
〈印刷設定変更ＵＩの例〉
図１２は、設定変更部１１０により提供される印刷設定変更ＵＩの例を示す図である。
印刷設定画面５００内の設定単位の選択入力枠５０１で「アプリケーションごと」、「ジョブごと」、「ユーザごと」などの選択肢の中から、「アプリケーションごと」を選択し、アプリケーション名として「AdobeReader」をアプリケーション名入力枠５０２内に設定すると、AbobeReaderの印刷設定が保存される。なお、ここでは、プリンタドライバの印刷設定画面のような印刷設定変更ＵＩを例示したが、これに限定されるものではない。
【０１１８】
〈印刷設定から印刷データの生成までの手順の第２の例〉
図１３は、印刷設定から印刷データの生成までの手順の第２の例を示すシーケンス図である。この第２の例は、アプリケーション毎に印刷設定を変える場合のシーケンスである。
【０１１９】
まずＰＣ６又はスマートデバイス４は、ＰＣ３の設定変更部１１０に対し、印刷設定変更要求を送出する（ステップＳ２１）。設定変更部１１０は、ＵＩドライバ６１からプリンタドライバ６０の能力を取得し（ステップＳ２２）、印刷設定変更ＵＩを立ち上げ、ＰＣ６又はスマートデバイス４に提供する（ステップＳ２３）。
【０１２０】
ＰＣ６又はスマートデバイス４は、印刷設定変更ＵＩを通して、設定するアプリケーションを指定し、印刷設定変更を行う（ステップＳ２４）。設定変更部１１０は、変更された印刷設定をファイルとして共有フォルダ８５に保存する（ステップＳ２５）。
【０１２１】
次にＰＣ６又はスマートデバイス４は、管理アプリケーション４０に対し、印刷指示を送出する（ステップＳ２６）。管理アプリケーション４０は共有フォルダから印刷設定ファイルを取得し（ステップＳ２７）、印刷設定ファイルから印刷対象のアプリケーションの印刷設定を判断する（ステップＳ２８）。
【０１２２】
次に管理アプリケーション４０は、拡張Ｉ／Ｆ部６２に対し、印刷対象のアプリケーションの印刷設定保持の依頼を送出する（ステップＳ２９）。拡張Ｉ／Ｆ部６２は、印刷設定の妥当性を検証（判断）し（ステップＳ３０）、ランゲージモニタ７０に保持させる（ステップＳ３１）。以後のステップＳ３２からＳ４０は、図８（第１の例）におけるステップＳ６からＳ１４と同じであるから説明を省略する。
【０１２３】
なお、ユーザ毎に印刷設定を変える場合のシーケンスでは、ステップＳ２４でＰＣ６又はスマートデバイス４は、印刷設定変更ＵＩを通して、設定するユーザを指定し、ステップＳ２６で印刷指示にユーザＩＤを付加する。そして、管理アプリケーション４０はステップＳ２８でユーザＩＤに応じて、ユーザの印刷設定を判断する。
【０１２４】
〈サポートしている機能の異なる複数のプリンタドライバの切り替え〉
図１４は、サポートしている機能の異なる複数のプリンタドライバを切り替えて印刷するケースについて説明するための図である。
【０１２５】
ここでは、機能１および機能２をサポートしている第１のプリンタドライバと、機能１および機能３をサポートしている第２のプリンタドライバがあるものとする。
【０１２６】
第１の描画ドライバ６３ａ、第２の描画ドライバ６３ｂは、それぞれ第１のプリンタドライバ、第２のプリンタドライバのパッケージに含まれている。また、第１のプリンタドライバ、第２のプリンタドライバのパッケージには拡張Ｉ／Ｆ部がそれぞれ含まれている。ただし、その拡張Ｉ／Ｆ部は同一もしくはアップデートされたバージョンの同名のモジュールになるため、２つのプリンタドライバがインストールされた場合、新しいバージョンの拡張Ｉ／Ｆ部で上書きされ、拡張Ｉ／Ｆ部としては１つしか存在しない。この１つの拡張Ｉ／Ｆ部６２により、第１のランゲージモニタ７０ａ、第２のランゲージモニタ７０ｂには、それぞれ第１のプリンタドライバ、第２のプリンタドライバを用いて印刷する際の印刷設定が格納される。第１の描画ドライバ６３ａ、第２の描画ドライバ６３ｂは、それぞれ第１のランゲージモニタ７０ａ、第２のランゲージモニタ７０ｂに保存されている印刷設定を取得する。
【０１２７】
〈サポートしている機能の異なる複数のプリンタドライバから１つを選択し、印刷する場合の手順〉
図１５は、サポートしている機能の異なる複数のプリンタドライバから１つを選択し、印刷する場合の手順を示すシーケンス図である。
【０１２８】
まずＰＣ６又はスマートデバイス４は、ＰＣ３の設定変更部１１０に対し、印刷設定変更要求を送出する（ステップＳ５１）。設定変更部１１０は、ＰＣ６又はスマートデバイス４に対し、プリンタドライバ選択ＵＩを提供し、プリンタドライバの選択を求める（ステップＳ５２）。
【０１２９】
ＰＣ６又はスマートデバイス４によりプリンタドライバが選択されると（ステップＳ５３）、設定変更部１１０は、選択されたプリンタドライバのＵＩドライバ６１からプリンタドライバの能力を取得する（ステップＳ５４）。ここでは、第１のプリンタドライバが選択されたものとする。
【０１３０】
次に設定変更部１１０は、ＰＣ６又はスマートデバイス４に対して、取得したプリンタドライバの能力で印刷設定変更ＵＩを提供する（ステップＳ５５）。ＰＣ６又はスマートデバイス４が印刷設定変更ＵＩを通して、設定するアプリケーションを指定し、印刷設定を変更すると（ステップＳ５６）、設定変更部１１０は変更された印刷設定をファイルとして共有フォルダ８５に保存する（ステップＳ５７）。
【０１３１】
次にＰＣ６又はスマートデバイス４は、管理アプリケーション４０に対し、印刷指示を送出する（ステップＳ５８）。管理アプリケーション４０は、共有フォルダ８５から印刷設定ファイルを取得し（ステップＳ５９）、設定ファイルから印刷対象のアプリケーションの印刷設定を判断する（ステップＳ６０）。
【０１３２】
次に管理アプリケーション４０は、印刷設定ファイルから、印刷対象のプリンタドライバをデフォルトのプリンタに設定する（ステップＳ６１）。この手順により、デフォルトのプリンタに設定されたプリンタドライバを使用した印刷が可能になる。
【０１３３】
次いで管理アプリケーション４０は、プリンタドライバの拡張Ｉ／Ｆ部６２に対し、プリンタアイコン名と印刷設定を渡し、印刷設定保持の依頼を送出する（ステップＳ６２）。
【０１３４】
拡張Ｉ／Ｆ部６２は、印刷設定の妥当性を検証し（ステップＳ６３）、プリンタアイコン名から保存先のランゲージモニタを判断し（ステップＳ６４）、対象のランゲージモニタに対し、設定を保持させる（ステップＳ６５）。
【０１３５】
次に管理アプリケーション４０は、指定された文書ファイルの印刷処理が可能なアプリケーション５０を起動させ（ステップＳ６６）、印刷指示を出す（ステップＳ６７）。このとき印刷に使用されるプリンタはデフォルトに設定したプリンタである。以後の手順は、図８におけるステップＳ８からＳ１４と同じであるから、図示および説明を省略する。
【０１３６】
〈機能の追加や削除が可能な拡張Ｉ／Ｆ部〉
ここまで説明した構成では、拡張Ｉ／Ｆ部６２が１つのモジュールとしてシステム（プリンタドライバ）に組み込まれているため、拡張Ｉ／Ｆ部６２に機能の追加や削除をする際には、拡張Ｉ／Ｆ部そのものを変更し、再インストールする必要があるなどの手間がかかった。
【０１３７】
そこで、本実施形態では、新規機能を動的にシステムに組み入れる仕組みを持つことで、拡張Ｉ／Ｆ部に対する新規機能の追加、削除などの保守を容易にした。図１６は、その仕組みを持つ拡張Ｉ／Ｆ部の構成を示す図である。
【０１３８】
拡張Ｉ／Ｆ部６２は、拡張Ｉ／Ｆ部６２−０と、追加用の第１〜第３の拡張Ｉ／Ｆ部６２−１〜６２−３を備えている。第１〜第３の拡張Ｉ／Ｆ部６２−１〜６２−３は、それぞれ第１〜第３の機能に対応する機能の設定を行うためのインタフェースである。これらは新規追加毎に別のモジュールに分離されている。
【０１３９】
拡張Ｉ／Ｆ部６２−０は、管理アプリケーション４０などの実際に拡張Ｉ／Ｆ部を使用して印刷設定を行いたいモジュールに対する窓口となる。つまり、印刷設定を行いたいモジュールは常にこの拡張Ｉ／Ｆ部６２−０に対して印刷設定を行う。
【０１４０】
拡張Ｉ／Ｆ部６２−０は、特定のルールに基づいて第１〜第３の拡張Ｉ／Ｆ部６２−１〜６２−３を呼び出す。特定のルールとは、例えば「フォルダ内に存在する拡張Ｉ／Ｆ部を全て呼び出す」や「読み込む拡張Ｉ／Ｆ部のパスが記載されたファイルを読み込み、その内容にしたがって拡張Ｉ／Ｆ部を呼び出す」などである。
【０１４１】
このルールとして、「第１のプリンタドライバでは第１の拡張Ｉ／Ｆ部および第２の拡張Ｉ／Ｆ部を呼び出す」、「第２のプリンタドライバでは第１の拡張Ｉ／Ｆ部および第３の拡張Ｉ／Ｆ部を呼び出す」を定めることで、第１のプリンタドライバに対しては第１の拡張Ｉ／Ｆ部６２−１および第２の拡張Ｉ／Ｆ部６２−２が呼び出され、第２のプリンタドライバに対しては第１の拡張Ｉ／Ｆ部６２−１および第３の拡張Ｉ／Ｆ部６２−３が呼び出される。
【０１４２】
拡張Ｉ／Ｆ部６２−０および第１〜第３の拡張Ｉ／Ｆ部６２−１〜６２−３は全て同じインタフェース（関数）を持つ。以下にインタフェースを例示する。
bool setPrintSetting(
char*  printer_icon,
char*  pirntSetting,
)
【０１４３】
この例は第一引数に印刷するプリンタアイコンの名前、第二引数に印刷設定一覧を設定するインタフェースである。上記ルールに基づき呼び出されたそれぞれの第１〜第３の拡張Ｉ／Ｆ部６２−１〜６２−３は、第二引数として設定されている印刷設定一覧から自分に関係する印刷設定を抜き出し、設定の妥当性を判断し、ランゲージモニタに設定を保存させる。
【０１４４】
印刷設定を行いたいモジュールに対する窓口となる拡張Ｉ／Ｆ部と追加用の拡張Ｉ／Ｆ部とが同じインタフェースを持つことで、新規機能が追加された場合に、追加された新規機能用の拡張Ｉ／Ｆ部を作成し、拡張Ｉ／Ｆ部６２−０からの呼び出しルールに則った場所に配置するだけで新規機能の追加が可能となる。
【０１４５】
〈拡張Ｉ／Ｆ部の追加用ＵＩ〉
新規機能用の拡張Ｉ／Ｆ部の追加は、そのためのＵＩを提供することで、ユーザに実行させることもできる。
【０１４６】
図１７は、新規機能用の拡張Ｉ／Ｆ部の追加用ＵＩの一例を示す図である。
ＵＩ画面５１０上の「新規拡張Ｉ／Ｆを追加する」に対応するチェックボックス５１１にチェックを入れ、追加ファイルの入力枠５１２に直接追加する拡張Ｉ／Ｆを入力するか、または参照ボタン５１３から追加する拡張Ｉ／Ｆを選択することで、新規拡張Ｉ／Ｆの追加が可能である。
【０１４７】
以上説明したように、本実施形態の情報処理装置によれば、下記（１）〜（６）の効果を有する。
（１）プリンタドライバ６０は、ＯＳ３０で定義されたＤＤＩ以外に、独自の拡張Ｉ／Ｆ部６２を持ち、拡張Ｉ／Ｆ部６２で印刷設定の変更を受け付けることができるので、印刷に使用するアプリケーション５０の改変や印刷設定画面の操作を行うことなく、アプリケーション５０のデフォルトの印刷設定をユーザが望んだ印刷設定に変更することができる。
（２）描画ドライバ６３は、ユーザにより指示され、拡張Ｉ／Ｆ部６２により受け取られ、ランゲージモニタ７０に保持されている印刷設定を取得し、その印刷設定をもとにＧＤＩに対して返却する描画能力情報を生成することができるので、印刷に使用するアプリケーション５０は、ユーザから指示された印刷設定とプリンタ５の能力情報をもとに描画可能な最大限の能力で描画命令を出力することができる。
（３）ユーザにより指示され、拡張Ｉ／Ｆ部６２により受け取られた印刷設定を、Windows（登録商標）系ＯＳのプリントアーキテクチャの中に組み込まれる１つのモジュールであるランゲージモニタ７０により保持するので、ＲＡＷスプール、ＥＭＦスプールのどちらのスプール形式でも、ユーザにより指示され、拡張Ｉ／Ｆ部６２により受け取られた印刷設定で印刷することができる。
（４）ユーザにより指示され、拡張Ｉ／Ｆ部６２により受け取られた印刷設定を、Windows（登録商標）系ＯＳのプリントアーキテクチャの中に組み込まれる１つのモジュールであるランゲージモニタ７０により保持するので、Point & Printインストールされたプリンタドライバ６０で、スプール形式によらず、ユーザにより指示され、拡張Ｉ／Ｆ部６２により受け取られた印刷設定で印刷することができる。
（５）ランゲージモニタ７０に保存する印刷設定をスマートデバイス４やＰＣ６などの外部デバイスから所定の単位（ジョブ、アプリケーション、ユーザ）毎に変更することができるので、予め所定の単位毎の印刷設定を保存しておくことにより、１ジョブ毎の印刷設定の変更が不要になる。
（６）新規機能を動的にシステムに組み入れる仕組みを備えた拡張Ｉ／Ｆ部を設けたので、拡張Ｉ／Ｆ部に対する新規機能の追加、削除などの保守が容易である。
【符号の説明】
【０１４８】
３，６…ＰＣ、４…スマートデバイス、３０…ＯＳ、４０…管理アプリケーション、５０…アプリケーション、６０…プリンタドライバ、６１…ＵＩドライバ、６２，６２−０〜６２−３…拡張Ｉ／Ｆ部、６３…描画ドライバ、７０…ランゲージモニタ、７１…データ保持部、７２，７３…印刷設定、１００…サーバＰＣ、１１０…設定変更部、２０１〜２０４…クライアントＰＣ。
【先行技術文献】
【特許文献】
【０１４９】
【特許文献１】特開２００５−１４８９２８号公報
【図１】
2015084213.tif 000003
【図２】
2015084213.tif 000004
【図３】
2015084213.tif 000005
【図４】
2015084213.tif 000006
【図５】
2015084213.tif 000007
【図６】
2015084213.tif 000008
【図７】
2015084213.tif 000009
【図８】
2015084213.tif 000010
【図９】
2015084213.tif 000011
【図１０】
2015084213.tif 000012
【図１１】
2015084213.tif 000013
【図１２】
2015084213.tif 000014
【図１３】
2015084213.tif 000015
【図１４】
2015084213.tif 000016
【図１５】
2015084213.tif 000017
【図１６】
2015084213.tif 000018
【図１７】
2015084213.tif 000019
【図１８】
2015084213.tif 000020
【図１９】
2015084213.tif 000021
【図２０】
2015084213.tif 000022
【図２１】
2015084213.tif 000023
【図２２】
2015084213.tif 000024
【図２３】
2015084213.tif 000025
【図２４】
2015084213.tif 000026