JP2019074884A - プログラム、データ通信方法、および情報処理装置 - Google Patents
プログラム、データ通信方法、および情報処理装置 Download PDFInfo
- Publication number
- JP2019074884A JP2019074884A JP2017199801A JP2017199801A JP2019074884A JP 2019074884 A JP2019074884 A JP 2019074884A JP 2017199801 A JP2017199801 A JP 2017199801A JP 2017199801 A JP2017199801 A JP 2017199801A JP 2019074884 A JP2019074884 A JP 2019074884A
- Authority
- JP
- Japan
- Prior art keywords
- print setting
- setting information
- information
- printer driver
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1229—Printer resources management or printer maintenance, e.g. device status, power levels
- G06F3/1232—Transmitting printer device capabilities, e.g. upon request or periodically
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1202—Dedicated interfaces to print systems specifically adapted to achieve a particular effect
- G06F3/1203—Improving or facilitating administration, e.g. print management
- G06F3/1204—Improving or facilitating administration, e.g. print management resulting in reduced user or operator actions, e.g. presetting, automatic actions, using hardware token storing data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1202—Dedicated interfaces to print systems specifically adapted to achieve a particular effect
- G06F3/1203—Improving or facilitating administration, e.g. print management
- G06F3/1205—Improving or facilitating administration, e.g. print management resulting in increased flexibility in print job configuration, e.g. job settings, print requirements, job tickets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1224—Client or server resources management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1237—Print job management
- G06F3/1253—Configuration of print job parameters, e.g. using UI at the client
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1278—Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
- G06F3/1285—Remote printer device, e.g. being remote from client or server
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1297—Printer code translation, conversion, emulation, compression; Configuration of printer parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/00127—Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture
- H04N1/00204—Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture with a digital computer or a digital computer system, e.g. an internet server
- H04N1/00206—Transmitting or receiving computer data via an image communication device, e.g. a facsimile transceiver
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/00912—Arrangements for controlling a still picture apparatus or components thereof not otherwise provided for
- H04N1/00938—Software related arrangements, e.g. loading applications
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Accessory Devices And Overall Control Thereof (AREA)
Abstract
【課題】アプリケーションプログラムとV4プリンタードライバーとの間での印刷設定に関する独自のデータの受け渡しを可能とすること。【解決手段】プログラムは、アプリケーションから、アプリケーションで保持している第一の印刷設定情報と、印刷設定に関する所定の処理の要求と、を含む依頼指示を受信し、受信した第一の印刷設定情報からプリンタードライバー内で処理可能なデータ構造体で構成される第二の印刷設定情報を生成させる指示を、オペレーティングシステムによって提供されている情報生成手段に送信する。生成された第二の印刷設定情報に基づいて所定の処理を実行する。【選択図】図6
Description
本発明は、アプリケーションプログラムとプリンタードライバーとの間で印刷設定に関するデータの通信を行う技術に関する。
一般的に、アプリケーションプログラムにおいて印刷を実行する場合、プリンタードライバーによって提供されている印刷設定画面を通じて各種の印刷設定の参照や変更が行われる。一方、アプリケーションプログラムの中には、プリンタードライバーによって提供されている印刷設定画面を用いずに、アプリケーションプログラム独自で印刷設定を参照したり変更したりするものがある。例えば、はがきを印刷するアプリケーションプログラムを想定する。仮に、プリンタードライバーによって提供される印刷設定画面を用いると、ユーザが、用紙サイズとして例えば「はがき」ではなく、「A4サイズ」を選択することが可能となってしまう。この結果、ユーザが混乱してしまったり、意図しない印刷が行われたりしてしまうことがある。そこで、はがきを印刷するアプリケーションプログラムでは、使用する用紙サイズおよび用紙種別は、「はがき」に関するものに限定することが好ましい。
このような独自の印刷設定を行うためには、アプリケーションプログラムは、一般的にオペレーティングシステム(以下OSと略す)が提供するAPI(Application Programming Interface)を利用する。アプリケーションプログラムは、APIを介して、プリンターの印刷に関する様々な情報を取得(参照)したり、変更したりする。Windows(登録商標)においては、アプリケーションプログラムは、ExtEscape関数という、OSが提供するAPIを利用して、プリンターの印刷に関する情報を取得したり変更したりする。ExtEscape関数は、アプリケーションプログラムとプリンタードライバーとの間で、独自の印刷設定を行うためなどの独自のデータを受け渡すために使用される。
また、Windows(登録商標)で動作するプリンタードライバーには、V3GDIプリンタードライバーおよびV3XPSプリンタードライバーといったV3アーキテクチャの二種のプリンタードライバーがある。
特許文献1には、様々なOS環境やプリンタードライバーに対して、ExtEscape関数を使用してアプリケーションプログラムとプリンタードライバーとの間で印刷設定に関するデータを受け渡す技術が記載されている。
しかしながら、近年ではWindows(登録商標)において、V4プリンタードライバーと呼ばれる新しいアーキテクチャで動作するプリンタードライバーが導入されている。このV4プリンタードライバーでは、従来のV3GDIプリンタードライバーおよびV3XPSプリンタードライバーで使用していたExtEscape関数が使用できない。このため、V4プリンタードライバーのように、ExtEscape関数が使用できないプリンタードライバーの場合、アプリケーションプログラムとプリンタードライバーとの間で独自の印刷設定に関するデータを受け渡すことができないという課題がある。
本発明は、かかる課題に鑑みてなされたものであり、アプリケーションプログラムとプリンタードライバーとの間での独自の印刷設定に関するデータの受け渡しを可能とすることを目的とする。
本発明の一態様にかかるプログラムは、オペレーティングシステム上で動作するアプリケーションと、V4アーキテクチャのプリンタードライバーとの間の印刷設定に関するデータを通信するためのプログラムであって、コンピュータによって実行されると、前記アプリケーションから、前記アプリケーションで保持している第一の印刷設定情報と、前記印刷設定に関する所定の処理の要求と、を含む依頼指示を受信するステップと、受信した前記第一の印刷設定情報から前記プリンタードライバー内で処理可能なデータ構造体で構成される第二の印刷設定情報を生成させる指示を、前記オペレーティングシステムによって提供されている情報生成手段に送信するステップと、前記指示に応じて生成された前記第二の印刷設定情報を受信するステップと、受信した前記第二の印刷設定情報に基づいて前記所定の処理を実行するステップと、前記所定の処理の結果を前記アプリケーションに返信するステップとを実行することを特徴とする。
本発明によれば、アプリケーションプログラムとプリンタードライバーとの間での独自の印刷設定に関するデータの受け渡しが可能となる。
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一の構成については、同じ符号を付して説明する。
<<実施形態1>>
<システム構成例>
図1は、本実施形態におけるシステム構成例を示す図である。情報処理装置であるホストコンピュータ100には、インクジェットプリンターなどのプリンター104が接続されている。
<システム構成例>
図1は、本実施形態におけるシステム構成例を示す図である。情報処理装置であるホストコンピュータ100には、インクジェットプリンターなどのプリンター104が接続されている。
ホストコンピュータ100は、ワードプロセッサ、表計算、インターネットブラウザ、はがき印刷アプリなどのアプリケーションプログラム101を有する。アプリケーションプログラム101は、オペレーティングシステム上で動作するソフトウェアである。印刷を行う場合、アプリケーションプログラム101によって発行される出力画像を示す各種描画処理命令群は、オペレーティングシステム(OS)102を介して、プリンタードライバー103へ入力される。描画命令群は、例えばイメージ描画命令、テキスト描画命令およびグラフィクス描画命令で構成される。プリンタードライバー103は、それら描画命令群を処理して印刷データを生成し、プリンター104に印刷させるソフトウェアである。
ホストコンピュータ100上で、上記のソフトウェアは、HDD105、またはROM108に記憶されており、RAM107に読み出されて、CPU106によって実行される。なお、本実施形態では、図1に示すホストコンピュータ100として、一般に普及しているパーソナルコンピュータを使用し、OS102としてWindows(登録商標)を使用することを想定する。そして、そのようなパーソナルコンピュータに、印刷機能を有する任意のアプリケーションプログラム101をインストールし、プリンター104を接続した形態を想定する。
ホストコンピュータ100では、アプリケーションプログラム101により、出力画像データが生成される。出力画像データは、文字などのテキストに分類されるテキストデータ、図形などのグラフィクスに分類されるグラフィクスデータ、および写真画像などに分類されるイメージ画像データなどを含む。出力画像データに基づく画像を印刷する場合、アプリケーションプログラム101は、OS102に印刷出力要求を行い、描画命令群をOS102に発行する。描画命令群において、テキストデータ部分はテキスト描画命令、グラフィクスデータ部分はグラフィクス描画命令、イメージ画像データ部分はイメージ描画命令で構成される。
OS102は、アプリケーションプログラム101から印刷出力要求を受けると、その印刷出力要求をアプリケーションプログラム101から受け取った描画命令群とともにプリンタードライバー103に渡す。プリンタードライバー103は、OS102から渡される印刷出力要求および描画命令群を処理して、プリンター104が印刷処理可能な印刷データを生成し、その印刷データをプリンター104に送る。すなわち、ホストコンピュータ100からプリンター104に印刷データが送信される。ホストコンピュータ100とプリンター104とは、例えばUSB(Universal Serial Bus)のような双方向通信が可能なインターフェースにより接続される。
<V3プリンタードライバーの構成>
図2および図3は、V3プリンタードライバーを用いる場合の印刷システムのソフトウェア(主にプリンタードライバー)の構成を示すブロック図である。理解を容易にするために、まず、V3プリンタードライバーについての説明を行い、その後、V4プリンタードライバーについての説明を行う。
図2および図3は、V3プリンタードライバーを用いる場合の印刷システムのソフトウェア(主にプリンタードライバー)の構成を示すブロック図である。理解を容易にするために、まず、V3プリンタードライバーについての説明を行い、その後、V4プリンタードライバーについての説明を行う。
図2は、V3のGDIプリンタードライバー(以下、「V3GDIプリンタードライバー」という)の構成を含む図である。図3は、V3のXPSプリンタードライバー(以下、「V3XPSプリンタードライバー」という)の構成を含む図である。
まず、図2に示すV3GDIプリンタードライバーの構成について説明する。プリンタードライバー103は、ユーザーインターフェースモジュール203、プリントプロセッサ205、レンダリングモジュール206、ランゲージモニタ207、およびステータスモニタ208を備えている。
アプリケーションプログラム101は、OSの印刷サービス202を介してユーザーインターフェースモジュール203を呼び出すことで、印刷に関する各種設定をユーザに行わせることができる。
アプリケーションプログラム101は、文書を作成し、その文書を印刷するためにユーザーインターフェースモジュール203にプリンタシステムの機能を問い合わせる。その後、アプリケーションプログラム101は、OSの印刷サービス202を含む印刷システムに印刷開始を通知する。OSの印刷サービス202は、アプリケーションプログラム101から印刷開始の通知を受けると、プリンタードライバー103のユーザーインターフェースモジュール203に、アプリケーションプログラム101による印刷開始の印刷イベントを通知する。アプリケーションプログラム101は、印刷対象の文書の印刷データをOSの印刷サービス202に供給し印刷処理を続行する。OSの印刷サービス202を経由した印刷データは、スプールファイル204に格納される。
プリンタードライバー103のプリントプロセッサ205は、OS102のスプールファイル204から印刷データを読み出す。読み出された印刷データは、レンダリングモジュール206を介した後、ランゲージモニタ207に送られる。ランゲージモニタ207は、プリンター104と双方向通信を行いながら、印刷データをプリンター104へと送信する。ランゲージモニタ207は、随時、プリンター104が保持しているステータスの情報を受信する。また、ランゲージモニタ207は、印刷データおよびプリンター104から受信した情報を元に、現在のプリンターや印刷の状況をステータスモニタ208に伝える。ステータスモニタ208は、プリンターや印刷の状況を表示するのみでなく、何らかの理由により印刷が中断されている場合は、対処選択肢をユーザに提示し、それに対するユーザからのレスポンス入力を受け取り、ランゲージモニタ207に伝達する。
次に、図3に示すV3XPSプリンタードライバーの構成について説明する。プリンタードライバー103は、ユーザーインターフェースモジュール203、フィルターパイプライン214、ランゲージモニタ207、およびステータスモニタ208を備える。フィルターパイプライン214は、レイアウトフィルター215およびレンダーフィルター216を含む。
V3XPSプリンタードライバーにおいても、アプリケーションプログラム101は、OSの印刷サービス202を介してユーザーインターフェースモジュール203を呼び出すことで、印刷に関する各種設定をユーザに行わせることができる。アプリケーションプログラム101においてユーザ操作により印刷指示が入力されると、その指示内容はアプリケーションプログラム101からOSの印刷サービス202に送られる。具体的には、OSの印刷サービス202において、仮想化された印刷領域であるDC(Device Context)が作成され、アプリケーションプログラム101へ供給される。アプリケーションプログラム101は、文書データの描画処理をDCに対して行う。描画内容はMXDC(Microsoft XPS Document Converter)211によりXPS形式に変換され、その結果、XPS形式の印刷データが生成される。XPS形式の印刷データは、OSの印刷サービス202によって、印刷ジョブ毎にスプールファイル212として一時的に記憶装置にスプールされる。なお、XPS形式の電子文書を作成することができるアプリケーションプログラムの場合は、MXDC211による変換処理を行わずに、XPS形式の印刷データをスプールすることも可能である。
スプールファイル212に格納されたデータは、OSの印刷パイプラインサービス213により呼び出されたフィルターパイプライン214に供給される。フィルターパイプライン214は、V3XPSプリンタードライバーのパイプライン構成ファイル(不図示)に記述されている任意の数のフィルターによって構成される。プリンター104が解釈可能な印刷コマンドがXPS形式では無い場合、少なくとも、スプールされたXPS形式のデータを印刷コマンドに変換する為のフィルターが必要となる。図3では、フィルターパイプライン214は、レイアウトフィルター215とレンダーフィルター216とを含む構成である。レイアウトフィルター215は、スプールファイルからXPS形式の印刷データを取得し、印刷設定に基づき必要に応じ印刷データを編集し出力する。すなわち、レイアウトフィルター215は、スプールファイル212に格納されたXPSドキュメントを入力とし、印刷設定情報に基づきページのレイアウト処理を行い、レイアウト済みのXPSデータを出力する機能を有する。レイアウト処理とは、例えば複数のページを一つの用紙面に印刷する割り付け印刷や、一つのページを複数の用紙面に印刷するポスター印刷を含む。レイアウトフィルター215は、印刷データを加工する必要が無い場合は、取得した印刷データをそのまま出力する。
レイアウトフィルター215の出力は、レンダーフィルター216に供給される。レンダーフィルター216は、供給されたXPS形式の印刷データの各ページのレンダリング処理を行い、必要な画像処理を行ったうえで、印刷コマンドに変換して出力する。レンダーフィルター216が出力した印刷コマンドは、ランゲージモニタ207に送られる。ランゲージモニタ207は、プリンター104と双方向通信を行いながら、印刷データをプリンター104へと送信する。そして、プリンター104が印刷動作を実行する。
<ExtEscape関数の説明>
次に、ExtEscape関数を使用して、アプリケーションプログラム101と、V3GDIプリンタードライバーまたはV3XPSプリンタードライバーとの間で印刷設定に関する独自のデータを受け渡す方法(データ通信方法)を説明する。利用場面としては、例えば、アプリケーションプログラム101が、はがきアプリの場合が挙げられる。このアプリケーションプログラム101は、プリンター104のメディア情報をプリンタードライバー103から取得し、取得したメディア情報を用いてアプリケーションプログラム101の独自の印刷設定画面を表示する。アプリケーションプログラム101が、このような独自のデータを取得する理由は、前述したように、アプリケーションプログラム101の固有の印刷設定などを行うためである。つまり、プリンタードライバーで提供される印刷設定画面を表示させずに、アプリケーションプログラム101の独自の印刷設定画面を表示するためである。なお、アプリケーションプログラム101は、独自のデータとして、メディア情報を取得し、取得したメディア情報の中から所望のメディア(例えば、「はがき」)のみを有効とした印刷設定画面を提供してもよい。あるいは、アプリケーションプログラム101は、プリンタードライバー103に独自のデータを要求する際に、「はがき」のみのメディア情報を要求してもよい。このような印刷設定に関する独自のデータの受け渡しは、V3プリンタードライバーでは、ExtEscape関数を使用して行われている。
次に、ExtEscape関数を使用して、アプリケーションプログラム101と、V3GDIプリンタードライバーまたはV3XPSプリンタードライバーとの間で印刷設定に関する独自のデータを受け渡す方法(データ通信方法)を説明する。利用場面としては、例えば、アプリケーションプログラム101が、はがきアプリの場合が挙げられる。このアプリケーションプログラム101は、プリンター104のメディア情報をプリンタードライバー103から取得し、取得したメディア情報を用いてアプリケーションプログラム101の独自の印刷設定画面を表示する。アプリケーションプログラム101が、このような独自のデータを取得する理由は、前述したように、アプリケーションプログラム101の固有の印刷設定などを行うためである。つまり、プリンタードライバーで提供される印刷設定画面を表示させずに、アプリケーションプログラム101の独自の印刷設定画面を表示するためである。なお、アプリケーションプログラム101は、独自のデータとして、メディア情報を取得し、取得したメディア情報の中から所望のメディア(例えば、「はがき」)のみを有効とした印刷設定画面を提供してもよい。あるいは、アプリケーションプログラム101は、プリンタードライバー103に独自のデータを要求する際に、「はがき」のみのメディア情報を要求してもよい。このような印刷設定に関する独自のデータの受け渡しは、V3プリンタードライバーでは、ExtEscape関数を使用して行われている。
図4は、アプリケーションプログラム101とV3GDIプリンタードライバーまたはV3XPSプリンタードライバーとの間で独自のデータを受け渡すことを可能にするシステム構成を示す図である。プリンターベンダーは、プリンタードライバー103の一部としてサポートモジュール401を用意している。サポートモジュール401は、アプリケーションベンダーが独自のデータの受け渡しをプリンタードライバー103との間で可能とするためのモジュールである。
図4を用いてデータの受け渡しを説明する。まず、アプリケーションプログラム101は、プリンターベンダーが用意したサポートモジュール401を呼び出す(S401)。サポートモジュール401は、アプリケーションプログラム101の代わりにExtEscape関数を呼び出す処理を行う。またサポートモジュール401は、ExtEscape関数で呼び出されたユーザーインターフェースモジュール203の処理の終了を監視する。サポートモジュール401は、直接ユーザーインターフェースモジュール203とデータの受け渡しをするのではなく、OSを介して(OSの仕組みを利用して)、ユーザーインターフェースモジュール203とデータの受け渡しを行うことになる。
アプリケーションプログラム101は、サポートモジュール401を呼び出す際には、プリンターベンダー独自のEscapeコードを引数として渡す。Escapeコードは、予めアプリケーションベンダーに提供され、アプリケーションプログラム101に組み込まれている。Escapeコードは、サポートモジュール401が、例えばプリンタードライバーのサポート機能に関する情報を得る為や印刷を実行する機能を呼ぶ出す為に用いられる。また、アプリケーションプログラム101は、ベンダー独自のEscapeコードに応じた処理(Escape処理)を行うのに必要な情報をサポートモジュール401に渡す。必要な情報とは、例えば、プリンタードライバーのサポートメディア情報が欲しいと言った具体的な指示情報、および、現在のプリンタードライバーの印刷設定情報である。印刷設定情報は、DEVMODEと呼ばれるデータ構造体に従って記述されている。以下、V3のプリンタードライバーを用いる場合の印刷設定情報を、V3DEVMODEという。このように、アプリケーションプログラム101は、サポートモジュール401を呼び出し、Escapeコード、具体的な指示情報、およびV3DEVMODEを引数として渡す。
次に、呼び出されたサポートモジュール401は、ExtEscape関数呼び出しを行う(S402)。その際、サポートモジュール401は、アプリケーションプログラム101から渡されている、Escapeコード、具体的な指示情報、およびV3DEVMODEを渡す。サポートモジュール401がExtEscape関数を呼び出すと、プリンタードライバーのユーザーインターフェースモジュール203のDrvDocumentEvent関数が、OSを介して呼び出される。DrvDocumentEvent関数は、サポートモジュール401がExtEscape関数を呼び出した時の引数を参照することができる。
ユーザーインターフェースモジュール203は、ベンダー独自のEscapeコードおよび引数で渡された情報に応じて処理を行う(S403)。今回のケースでは、ユーザーインターフェースモジュール203は、引数として渡された具体的な指示情報に基づいた処理を行う。具体的な指示情報は、例えば現在印刷設定で設定されているメディアの情報を取得する指示や、プリンタードライバーがサポートしているサイズ一覧を取得する指示などのように、情報を参照する指示がある。あるいは、印刷設定を変更する指示もある。
具体的な例を説明する。具体的な指示情報が、「現在印刷設定で設定されているメディアの情報を取得する」指示だった場合は、ユーザーインターフェースモジュール203は、引数として渡されたV3DEVMODEから、現在設定されているメディア情報を取得する。なお、ユーザーインターフェースモジュール203が、アプリケーションプログラム101から渡された印刷設定情報(V3DEVMODE)から、現在の印刷設定の情報を取得する理由として、次の2点が挙げられる。
1点目は、アプリケーションプログラム101とプリンタードライバー103とで、保持しているV3DEVMODEが異なる場合があるからである。例えば、アプリケーションプログラム101上で、用紙サイズをA4からL判に変更したが、アプリケーションプログラム101からプリンタードライバー103にその変更を伝えていない場合がある。この状態で、仮にプリンタードライバーで保持しているV3DEVMODEを用いてしまうと、用紙サイズが「A4」であるV3DEVMODEが返信されてしまうことになる。このため、ユーザーインターフェースモジュール203は、引数として渡されたV3DEVMODEから、現在設定されているメディア情報を取得する。
2点目は、アプリケーションプログラム101は、V3DEVMODEのうちの一部の内容を知ることができないからである。V3DEVMODEには、OS標準の印刷設定情報部分と、プリンターベンダー独自で定義する印刷情報設定部分とがある。このうち、プリンターベンダー独自で定義する印刷情報設定部分については、アプリケーションプログラム101単体では、その情報の内部を知ることができない。このため、V3DEVMODをプリンタードライバー103に送り、プリンタードライバー103のユーザーインターフェースモジュール203に情報を取得させる処理が行われている。
具体的な指示が、プリンタードライバーがサポートしているサイズの一覧を取得する指示だった場合は、ユーザーインターフェースモジュール203は、プリンタードライバーのサポート情報を保持しているデータベースからサポートサイズ一覧を取得する。
また、具体的な指示が、印刷設定のメディア情報を写真紙に設定する指示だった場合は、ユーザーインターフェースモジュール203は、V3DEVMODEのメディア情報に写真紙を設定する。そして、ユーザーインターフェースモジュール203は、設定に不整合がないかをチェックし不整合がある場合は適切な設定に変更するValidate処理(有効化処理)を行う。
ユーザーインターフェースモジュール203は、以上のようなEscape処理を行った後、必要に応じて返信データを生成し、OSを介して処理結果や返信データをサポートモジュール401に返信する(S404)。そして、サポートモジュール401は、アプリケーションプログラム101に処理結果や返信データを返信する(S405)。以上が、ExtEscape関数を使用して、アプリケーションプログラムとV3GDIプリンタードライバーまたはV3XPSプリンタードライバーとの間で独自のデータを受け渡す処理の基本である。
しかし、V4プリンタードライバーでは、仕様が変更されたことにより、ExtEscape関数が使用できなくなっている。つまり、V4プリンタードライバーは、ExtEscape関数を使用する機能を備えていない。このため、上記で説明した処理を使用することができない。以下では、V4プリンタードライバーのアーキテクチャにおいて、アプリケーションプログラム101とV4プリンタードライバーとの間で独自のデータの受け渡しを行う形態を説明する。
<V4プリンタードライバーの構成>
まず、V4プリンタードライバーの印刷システムの構成について説明する。図5は、V4プリンタードライバーの印刷システムのブロック構成図である。より具体的には、V4プリンタードライバーをホストコンピュータ100がインストールした後の、V4プリンタードライバーの印刷システムのブロック構成図である。
まず、V4プリンタードライバーの印刷システムの構成について説明する。図5は、V4プリンタードライバーの印刷システムのブロック構成図である。より具体的には、V4プリンタードライバーをホストコンピュータ100がインストールした後の、V4プリンタードライバーの印刷システムのブロック構成図である。
V4プリンタードライバーを用いた印刷システムは、XPSファイルフォーマットをスプールデータとして使用し、印刷を行う。プリンタードライバー503は、コンフィグレーションモジュール519、印刷設定定義ファイル513、フィルタパイプラインマネージャー521、およびフィルタコンフィグレーションファイル527を備える。
なお、図5においてコンフィグレーションモジュール519およびフィルタパイプラインマネージャー521は、プリンタードライバー503の構成に含まれている図を示している。しかし、これらは、ホストコンピュータ100のOSから提供されているプリンタードライバー503のモジュールであり、ベンダー独自のモジュールではない。従って、プリンタードライバーをインストールする際のパッケージには、これらのモジュールは含まれていない。プリンタードライバー503をインストールすると、これらのモジュールがOSから提供され、プリンタードライバー503の構成に含まれることになる。つまり、V4プリンタードライバーにおいては、ドライバー自体がコンフィグレーションモジュールを備えていないため、OSの構成物であるコンフィグレーションモジュール519をドライバーのコンフィグレーションモジュールとして利用する。
コンフィグレーションモジュール519は、印刷設定定義ファイル513に基づき、PrintTicketやPrintCapabilitiesの生成を行う。PrintTicketは、DEVMODEとは異なるデータ構造体で定義されているデータであり、DEVMODEと同様に印刷設定を保持している。例えば、現在のメディアの設定が、写真紙であり、現在の用紙サイズの設定がL判である、といった設定情報を保持している。PrintCapabilitiesは、プリンタードライバー503(プリンター104)の印刷能力情報を保持しているデータ構造体である。例えば、プリンタードライバー503で使用できるメディアは、普通紙、写真用紙、およびはがきであり、用紙サイズは、A4、Letter、L判、およびはがきである、といった設定情報(利用可能一覧情報)を保持している。
印刷設定定義ファイル513は、GPD(Generic Printer Description)と呼ばれるテキストベースで記載されているファイルである。さらに、印刷設定定義ファイル513には「禁則」の定義を記載することができる。例えば、Microsoft(登録商標)が定義した記述法に基づき、InvalidCombinationの項目に、同時に設定できない印刷設定の設定値を記載することで、ユーザに対して禁則機能を提供することができる。
また、コンフィグレーションモジュール519は、プリンタードライバー503(つまり、プリンターベンダー)が提供する印刷設定編集モジュール511を用いて印刷設定情報を編集することができる。印刷設定編集モジュール511は、ConstraintScriptと呼ばれる、JavaScript(登録商標)言語で記載されたモジュールである。コンフィグレーションモジュール519では、OS標準の印刷設定情報部分のみが生成され、例えばスタンプ機能や色補正機能といったOS標準で定義されていない機能に関する印刷設定情報は生成することができない。このようなOS標準で定義されていない機能に関する印刷設定情報については、ベンダー独自で提供できる印刷設定編集モジュール511を用意することで、生成が可能である。印刷設定編集モジュール511は、プロパティバッグ517から、OS標準で定義されていない機能に関する印刷設定情報を生成するために必要な情報を取得し、印刷設定情報を生成する。
プロパティバッグ517に格納されるデータは、プリンタードライバー503によって提供される。プロパティバッグ517とは、プリンターの機種依存情報として用いるためのDriverPropertyBagと呼ばれるデータ群と、プリントキューに関連づけられたQueuePropertyBagと呼ばれるデータ群が保持された領域を指す。DriverPropertyBagは、以降、DPBといい、QueuePropertyBagは、以降、QPBという。DPBとQPBは、ともにOSによって提供されている保存領域である。DPBは、ドライバパッケージ内に存在するプリンターの機種依存データであり、プリンタードライバー503のインストール後にOS内の特定の領域に読取専用としてデータ群が保持される。QPBは、Key−ValueペアのXML定義ファイルをOSに登録することで使用することが可能であり、Valueに関して一定の権限上で編集が可能である。また、印刷設定定義ファイル513であるGPDにもQPBの定義を記載することができる。プロパティバッグ517は、プリンターエクステンション515や印刷コマンドフィルター525においても参照可能である。
プリンターエクステンション515は、V4プリンタードライバーにおいて、ユーザが印刷設定を行うためのベンダー独自のユーザインタフェースを提供するアプリケーションである。図5では、説明の便宜上、分けて記載しているが、プリンターエクステンション515は、アプリケーションプログラム101と同様に、アプリケーションの一種である。つまり、プリンターエクステンション515は、プリンタードライバー503の構成ではない。このため、後述するように、アプリケーションプログラム101とプリンタードライバー503との間で独自のデータの受け渡しを行う場合に、プリンターエクステンション515を利用することができない。プリンターエクステンション515は、印刷に用いる用紙サイズや印刷方向、その他の属性を設定する機能を提供する。
図5における印刷システムにおいて、アプリケーションプログラム101が印刷を行う場合、まず印刷設定情報の生成を行う。一般的に、アプリケーションプログラム101は、プリンタードライバー503のコンフィグレーションモジュール519を呼び出す。コンフィグレーションモジュール519は、印刷設定情報を生成し、アプリケーションプログラム101に印刷設定情報を送る。アプリケーションプログラム101は、生成された印刷設定情報を格納する。また、アプリケーションプログラム101は、印刷設定情報の生成にプリンターエクステンション515を用いることができる。なお、プリンターエクステンション515は、アプリケーションプログラム101の独自の印刷設定を提供するものではなく、一般的にプリンター104の利用可能な印刷設定を提供する。このため、例えば、用紙サイズを特定の用紙サイズ(例えば、はがき)に制限した印刷設定を提供するといったような用途に用いることはできない。つまり、プリンターエクステンション515は、アプリケーションプログラム101との間で独自のデータの受け渡しを行う用途に用いることはできない。
アプリケーションプログラム101は、一般的に、DEVMODE構造体の形式で印刷設定情報を保持している。従って、プリンタードライバー503との印刷設定情報の伝達は、DEVMODE構造体を用いて行われる。一方、一般的に、V4のプリンタードライバー503内での印刷設定情報の伝達は、PrintTicket構造体を用いて行われる。
印刷設定情報が生成されると、次に、アプリケーションプログラム101は、印刷データの生成を行う。作成した文書の各ページの印刷データは、OSの印刷サポート機能を通じてXPSスプールファイル212に一時的に蓄えられる。XPSスプールファイル212が生成されると、フィルタパイプラインマネージャー521に処理が渡される。フィルタパイプラインマネージャー521は、複数のフィルターを通すことで印刷が行われる仕組みで、フィルタコンフィグレーションファイル527でフィルターの数や順番が制御される。本実施形態におけるフィルター群は、レイアウト処理部であるレイアウトフィルター523と、印刷コマンド変換部である印刷コマンドフィルター525とを含んで構成される。
レイアウトフィルター523は、XPSスプールファイル212に格納されたXPSドキュメントを入力とし、印刷設定情報に基づきページのレイアウト処理を行い、レイアウト済みのXPSデータを出力する機能を有する。レイアウトフィルター523は、OSを介して印刷設定情報を受信する。
印刷コマンドフィルター525は、レイアウトフィルター523の出力を入力とし、印刷設定情報に従い、XPSドキュメントをプリンター104が解釈可能な印刷コマンドに変換し出力する機能を有する。印刷コマンドフィルター525が、入力のXPSドキュメントを一度イメージデータに変換する場合、印刷コマンドフィルター525は一般的にレンダーフィルターと呼ばれる。レンダーフィルターは、インクジェットプリンターに代表される廉価なラスタプリンター用のプリンタードライバーにおいて多く見られる。印刷コマンドフィルター525がレンダーフィルターとして動作する場合は、入力のXPSドキュメントを一度イメージデータに変換する。その後、色空間の変換や二値化等の画像処理の過程を経て、ラスタプリンターが解釈可能な印刷コマンドに変換される。ページプリンターに代表される高機能なプリンターにおいて、プリンターが解釈できる印刷コマンドの種類にXPSが含まれる場合、印刷コマンドフィルター525は、入力のXPSドキュメントを編集してXPSドキュメントを出力する。印刷コマンドフィルター525にて処理する必要がなければ、入力のXPSドキュメントをそのまま出力してもよいし、印刷コマンドフィルター525はプリンタードライバー503に含められなくてもよい。
以上が、V4プリンタードライバーの印刷システムの構成である。以上説明したように、V3GDIプリンタードライバーおよびV3XPSプリンタードライバーでEscape処理の役割を担っていたユーザーインターフェースモジュール203が、V4プリンタードライバーの印刷システムの構成では存在しない。ユーザーインターフェースモジュール203の代わりを担うモジュールは、V4プリンタードライバーのアーキテクチャでは、プリンターエクステンション515およびコンフィグレーションモジュール519が相当する。しかしながら、プリンターエクステンション515は、上述したようにプリンタードライバー503の構成ではない。また、コンフィグレーションモジュール519はExtEscape関数をサポートしていない。そのため、V3GDIプリンタードライバーおよびV3XPSプリンタードライバーとアプリケーションプログラムとの間で独自のデータを受け渡す場合、前述したようなExtEscape関数を使用する処理では実現できない。以下では、V4プリンタードライバーでもアプリケーションプログラムとの間で独自のデータを受け渡すことが可能な形態を説明する。
<V4アーキテクチャでの独自のデータの受け渡し>
図6は、V4プリンタードライバーでアプリケーションプログラムとの間で独自のデータを受け渡すこと可能としたシステム構成と一連のシステムの処理の流れである。V3GDIプリンタードライバーもしくはV3XPSプリンタードライバーでのシステム構成におけるサポートモジュール401の代わりに、V4プリンタードライバーでのシステム構成では、処理モジュール611を用意する。この処理モジュール611は、アプリケーションプログラム101から、プリンタードライバーのサポートメディア情報が欲しい、といった具体的な指示情報を受け取る。あるいは、使用する用紙サイズを「はがき」に設定したい、といった具体的な指示情報を受け取る。処理モジュール611は、この具体的な指示情報に基づいた処理を、PrintTicketやPrintCapabilitiesを用いて行う。そして、処理結果をアプリケーションプログラム101に返信する役割を担う。すなわち、処理モジュール611は、アプリケーションプログラム101から、印刷設定に関する要求(具体的な指示)を受け取り、その要求に応じた処理を行う。
図6は、V4プリンタードライバーでアプリケーションプログラムとの間で独自のデータを受け渡すこと可能としたシステム構成と一連のシステムの処理の流れである。V3GDIプリンタードライバーもしくはV3XPSプリンタードライバーでのシステム構成におけるサポートモジュール401の代わりに、V4プリンタードライバーでのシステム構成では、処理モジュール611を用意する。この処理モジュール611は、アプリケーションプログラム101から、プリンタードライバーのサポートメディア情報が欲しい、といった具体的な指示情報を受け取る。あるいは、使用する用紙サイズを「はがき」に設定したい、といった具体的な指示情報を受け取る。処理モジュール611は、この具体的な指示情報に基づいた処理を、PrintTicketやPrintCapabilitiesを用いて行う。そして、処理結果をアプリケーションプログラム101に返信する役割を担う。すなわち、処理モジュール611は、アプリケーションプログラム101から、印刷設定に関する要求(具体的な指示)を受け取り、その要求に応じた処理を行う。
具体的には、まずアプリケーションプログラム101は、処理モジュール611を呼び出す(S601)。このとき、アプリケーションプログラム101は、プリンタードライバーのサポートメディア情報が欲しいと言った具体的な指示情報(所定の処理の要求)、および、現在のプリンタードライバーの印刷設定情報を渡す。印刷設定情報は、V3GDIプリンタードライバーまたはV3XPSプリンタードライバーの場合はV3DEVMODEの構造体で渡すが、V4プリンタードライバーの場合はV3プリンタードライバーとは異なるV4DEVMODEを渡すことなる。V3DEVMODEとV4DEVMODEとは、データ構造体としては同じDEVMODE構造体である。ただし、V3DEVMODEとV4DEVMODEとは、パラメータの一つである”private driver-specific data”の扱いが異なる。V3DEVMODEでは、この”private driver-specific data”は、プリンターベンダーが独自で作成することが可能である。一方、V4DEVMODEでは、この”private driver-specific data”は、OSが作成し、プリンターベンダーが独自で作成することができない。つまり、V4DEVMODEでは、プリンターベンダー(すなわち、プリンタードライバー503)が、”private driver-specific data”の中身を参照できなくなっている。これが、V3DEVMODEとV4DEVMODEとの違いである。
このように、アプリケーションプログラム101は、依頼指示として、所定の処理の要求と、V4DEVMODE(第一の印刷設定情報)とを処理モジュールに送信する。ステップS601で呼び出された処理モジュール611は、アプリケーションプログラム101から受け取ったV4DEVMODEをコンフィグレーションモジュール519に渡す。そして、PrintTicket(第二の印刷設定情報)およびPrintCapabilities(印刷能力情報)を生成させる(S602)。すなわち、V4のプリンタードライバー503内で処理可能なデータ構造体で構成されるPrintTicket(プリントチケット)を、V4DEVMODEから生成させる。また、V4アーキテクチャにおいて用いられている印刷能力情報(プリントケイパビリティ)を、このPrintTicketから生成させる。詳細は後述する。なお、一般的に、V4プリンタードライバー内においては、印刷設定情報として扱うデータ形式は、DEVMODEではなくPrintTicketである。一方、一般的にアプリケーションプログラム101が取り扱うデータは、DEVMODEのデータ構造体となる。このため、処理モジュール611は、V4DEVMODEからPrintTicketおよびPrintCapabilitiesを生成させる処理を行っている。
次に、処理モジュール611は、生成したPrintTicketやPrintCapabilitiesを用いて、アプリケーションプログラム101から送られている具体的な指示情報に基づいた処理を行う(S603)。具体的な指示情報は、例えば、プリンタードライバーのサポートメディア情報が欲しいなどの情報である。そして、処理モジュール611は、処理結果をアプリケーションプログラム101に返信する(S604)。以上が、システム構成と一連のシステムの処理の流れとなる。
<情報の参照処理(取得処理)のシーケンス>
より詳細なシステムの処理の流れを説明する。図7は、印刷設定されている情報の参照(取得)処理のシーケンスを示す図である。まずアプリケーションプログラム101は、ステップS701において処理モジュール611を呼び出す。このとき、アプリケーションプログラム101は、処理モジュール611に、具体的な指示情報、および、現在のプリンタードライバーの印刷設定情報であるV4DEVMODEを渡す。
より詳細なシステムの処理の流れを説明する。図7は、印刷設定されている情報の参照(取得)処理のシーケンスを示す図である。まずアプリケーションプログラム101は、ステップS701において処理モジュール611を呼び出す。このとき、アプリケーションプログラム101は、処理モジュール611に、具体的な指示情報、および、現在のプリンタードライバーの印刷設定情報であるV4DEVMODEを渡す。
次に、ステップS702において処理モジュール611は、受け取ったV4DEVMODEからPrintTicketを生成させるために、V4DEVMODEをコンフィグレーションモジュール519(情報生成手段)に渡す。具体的には、処理モジュール611は、OSが提供するAPIであるPTConvertDevModeToPrintTicketを呼ぶ。その引数に受け取ったV4DEVMODEを指定する。
ステップS703においてコンフィグレーションモジュール519は、APIのコールを受け、処理モジュール611から引数として受け取ったV4DEVMODEからPrintTicketを生成する。なお、このステップS703で生成されたPrintTicketはOS標準の印刷設定情報部分のみが生成されたものである。すなわち、ベンダー独自で定義する印刷設定情報部分は生成されていないPrintTicketとなっている。
ステップS704においてコンフィグレーションモジュール519は、ベンダー独自で定義する印刷設定部分を生成させるために、印刷設定編集モジュール511(編集手段)を、OSを介して呼び出す。そして、V4DEVMODEとPrintTicketとを印刷設定編集モジュール511に渡す。なお、コンフィグレーションモジュール519は、印刷設定編集モジュール511が存在し、かつ、印刷設定編集モジュール511がPrintTicket生成APIをサポートしている場合、印刷設定編集モジュール511を自動的に呼ぶ仕様になっている。
ステップS705において印刷設定編集モジュール511は、PrintTicketを編集する。すなわち、コンフィグレーションモジュール519から呼び出された印刷設定編集モジュール511は、V4DEVMODEとPrintTicketとを受け取る(受信する)。そこで、受け取った情報を元にPrintTicketを編集し、ベンダー独自で定義する印刷設定情報部分を生成する。印刷設定編集モジュール511は、ベンダーによって提供されているモジュールであり、印刷設定情報部分のうち、どの部分が不完全となっているかを把握している。そこで、対応する印刷設定情報部分をV4DEVMODEから生成する。
このようにして、OS標準の印刷設定情報部分と、ベンダー独自で定義する印刷設定部分とが含まれる印刷設定情報(PrintTicket)が生成される。生成されたPrintTicketは、コンフィグレーションモジュール519経由(S706)で、ステップS707において処理モジュール611に返信される。
次に、処理モジュール611は、PrintTicketからPrintCapabilitiesを生成させる処理を行う。ステップS708において処理モジュール611は、ステップS707で受け取ったPrintTicketをコンフィグレーションモジュール519に渡す(送信する)。具体的には、処理モジュール611は、OSが提供するAPIであるPTGetPrintCapabilitiesを呼ぶ。その引数にPrintTicketを指定する。すると、ステップS709においてコンフィグレーションモジュール519は、引数として受け取ったPrintTicketからPrintCapabilitiesを生成する。コンフィグレーションモジュール519が生成するPrintCapabilitiesは、OS標準の印刷能力情報部分のみである。すなわち、ベンダー独自で定義する印刷能力情報部分は生成されていないPrintCapabilitiesとなっている。
そこでステップS710において、コンフィグレーションモジュール519は、印刷設定編集モジュール511を呼び出し、PrintCapabilitiesを編集させる。このとき、コンフィグレーションモジュール519は、PrintTicketと、生成したPrintCapabilitiesとを印刷設定編集モジュール511に送る。
ステップS711において印刷設定編集モジュール511は、受け取ったPrintTicketとPrintCapabilitiesとに基づいてPrintCapabilitiesを編集し、ベンダー独自で定義する印刷能力情報部分を生成する。編集されたPrintCapabilitiesは、コンフィグレーションモジュール519経由(S712)で、ステップS713において処理モジュール611に返信される。
ステップS714において処理モジュール611は、生成されたPrintTicketとPrintCapabilitiesとから、アプリケーションプログラム101から受け取った指示情報に基づいた情報を取得する。例えば、現在印刷設定で設定されているメディアの情報を取得する指示だった場合は、PrintTicketから設定されているメディア情報を取得する。プリンタードライバーがサポートしているサイズの一覧を取得する指示だった場合は、PrintCapabilitiesからサポートサイズ一覧を取得する。ステップS715において処理モジュール611は、取得した情報を、処理結果としてアプリケーションプログラム101に返信する。
なお、図7の処理では、V4DEVMODEからPrintTicketとPrintCapabilitiesとが生成される形態を説明した。ここで、上述したように、現在印刷設定で設定されているメディアの情報を取得する指示だった場合は、PrintTicketから設定されているメディア情報を取得すればよい。この場合、処理モジュール611は、ステップS708からS713で示すPrintCapabilities処理を行わなくてよい。このように、処理モジュール611は、具体的な指示情報に基づいてPrintTicketとPrintCapabilitiesとの両方を生成するか、PrintTicketのみを生成するかの処理を切り替えてもよい。
<情報の設定処理のシーケンス>
図8は、情報の設定処理のシーケンスの例を示す図である。例えば、アプリケーションプログラム101からの指示情報が、印刷設定のメディア情報を写真紙に設定する、といったケースの例である。ステップS701からS713までは図7と同様のため、説明を省略する。
図8は、情報の設定処理のシーケンスの例を示す図である。例えば、アプリケーションプログラム101からの指示情報が、印刷設定のメディア情報を写真紙に設定する、といったケースの例である。ステップS701からS713までは図7と同様のため、説明を省略する。
ステップS814において処理モジュール611は、ステップS701で受け取った指示情報に基づいた情報を、ステップS707で返信された(生成された)PrintTicketに設定する。例えば、具体的な指示情報が、上記のように、印刷設定のメディア情報を写真紙に設定する指示だった場合は、生成されているPrintTicketのメディア情報に写真紙を設定する。
次に、ステップS815において処理モジュール611は、情報を設定したPrintTicketのValidate処理をコンフィグレーションモジュール519に行わせるために、PrintTicketをコンフィグレーションモジュール519に渡す。Validate処理とは、設定に不整合がないかをチェックし不整合がある場合は適切な設定に変更する有効化処理である。処理モジュール611は、具体的には、OSが提供するAPIであるPTMergeAndValidatePrintTicketを呼ぶ。その引数にPrintTicketを指定する。
すると、ステップS816においてコンフィグレーションモジュール519は、受け取ったPrintTicketに対してValidate処理を行う。ステップS816でValidate処理されたPrintTicketは、OS標準の印刷設定情報部分のみがValidateされたものである。すなわち、ベンダー独自で定義する印刷設定情報部分はValidateされていないPrintTicketとなっている。そこで、ステップS817においてコンフィグレーションモジュール519は、印刷設定編集モジュール511を呼び出し、PrintTicketのベンダー独自で定義する印刷設定情報部分のValidate処理をさせる。印刷設定編集モジュール511でValidate処理(S818)されたPrintTicketは、コンフィグレーションモジュール519経由(S819)で、処理モジュール611に返信される(S820)。
先に説明したように、一般的にアプリケーションプログラム101は、印刷設定情報をDEVMODE構造で扱う。よって、次に、Validate処理されたPrintTicketからV4DEVMODEを生成する処理が行われる。ステップS821において処理モジュール611は、Validate処理されたPrintTicketをコンフィグレーションモジュール519に渡す。具体的には、OSが提供するAPIであるPTConvertPrintTicketToDevModeを呼ぶ。その引数にPrintTicketを指定する。
すると、ステップS822においてコンフィグレーションモジュール519は、受け取ったPrintTicketからV4DEVMODEを生成する。ステップS822で生成されたV4DEVMODEは、OS標準の印刷設定情報部分のみが生成されているV4DEVMODEである。ベンダー独自で定義する印刷設定情報部分は生成されていない。このため、ステップS823においてコンフィグレーションモジュール519は、印刷設定編集モジュール511を呼び出し、V4DEVMODEを編集させる。呼び出された印刷設定編集モジュール511は、V4DEVMODEと、Validate処理されているPrintTicketとを受け取る。ステップS824において印刷設定編集モジュール511は、これら情報を元にV4DEVMODEを編集し、ベンダー独自で定義する印刷設定情報部分を生成する。このように編集されたV4DEVMODEは、コンフィグレーションモジュール519経由(S825)で、処理モジュール611に返信される(S826)。ステップS827において処理モジュール611は、アプリケーションプログラム101に、処理結果とステップS826で渡されたV4DEVMODEとを返信する。
なお、図8の処理では、Validate処理は、PrintTicketに対して行われ、PrintCapabilitiesに対しては行われていない。PrintCapabilitiesは、プリンタードライバーの能力情報であり、例えばサポートメディア一覧や、サポートサイズ一覧などの情報である。これらの情報は、印刷設定の設定内容に応じて変わることはないので、PrintCapabilitiesに対してValidate処理は行われていない。
以上が、V4プリンタードライバーにおいてアプリケーションプログラムとの間で独自のデータを受け渡すことが可能なシステムの詳細である。このように、本実施形態では、処理モジュール611をプリンタードライバー503に備え、処理モジュール611が、アプリケーションプログラム101とプリンタードライバー503との間の独自のデータの受け渡しを司る。また、処理モジュール611は、DEVMODE構造体で渡された印刷設定情報から、PrintTicketおよびPrintCapabilitiesを生成する処理を行わせる。これにより、V4のプリンタードライバー503内での処理に適合した処理が行われる。すなわち、OSによって提供されているコンフィグレーションモジュール519およびベンダーによって提供されている印刷設定編集モジュール511を利用して、独自のデータの受け渡しを行うことができる。
<変形例>
図7および図8で示した処理では、アプリケーションプログラム101から複数回処理モジュール611が呼ばれた場合、処理モジュール611は、呼び出される度に図7および図8で示した処理を行う。つまり、処理モジュール611が呼び出される度に、V4DEVMODEからPrintTicketとPrintCapabilitiesとを生成する処理が行われる。例えば、アプリケーションプログラム101が、メディアの設定をさせたい場合には、次の処理が行われることになる。
(1)プリンタードライバー503の処理モジュール611に、サポートしているメディア一覧を取得させる。
(2)取得したサポートメディア一覧をアプリケーションのユーザインタフェース画面に表示し、ユーザに選択させる。
(3)ユーザが選択したメディアの設定を、プリンタードライバー503の処理モジュール611を通じて行わせる。
このうち、(1)と(3)との処理において、処理モジュール611がそれぞれ呼び出され、V4DEVMODEからPrintTicketとPrintCapabilitiesを生成する処理が行われることになる。なお、上記は一例に過ぎず、他の形態においてもアプリケーションプログラム101から処理モジュール611が複数回呼ばれることがあり得る。
図7および図8で示した処理では、アプリケーションプログラム101から複数回処理モジュール611が呼ばれた場合、処理モジュール611は、呼び出される度に図7および図8で示した処理を行う。つまり、処理モジュール611が呼び出される度に、V4DEVMODEからPrintTicketとPrintCapabilitiesとを生成する処理が行われる。例えば、アプリケーションプログラム101が、メディアの設定をさせたい場合には、次の処理が行われることになる。
(1)プリンタードライバー503の処理モジュール611に、サポートしているメディア一覧を取得させる。
(2)取得したサポートメディア一覧をアプリケーションのユーザインタフェース画面に表示し、ユーザに選択させる。
(3)ユーザが選択したメディアの設定を、プリンタードライバー503の処理モジュール611を通じて行わせる。
このうち、(1)と(3)との処理において、処理モジュール611がそれぞれ呼び出され、V4DEVMODEからPrintTicketとPrintCapabilitiesを生成する処理が行われることになる。なお、上記は一例に過ぎず、他の形態においてもアプリケーションプログラム101から処理モジュール611が複数回呼ばれることがあり得る。
ここで、アプリケーションプログラム101から渡されるV4DEVMODEが全く同じV4DEVMODEである場合を想定する。この場合、生成されるPrintTicketとPrintCapabilitiesは、複数回の処理を通じて同じPrintTicketとPrintCapabilitiesとになる。そこで、変形例では、PrintTicketとPrintCapabilitiesとを生成した際に、これらをキャッシュとして処理モジュール611が保持する。そして、次回アプリケーションプログラム101から処理モジュール611が呼び出された際、アプリケーションプログラム101から渡されたV4DEVMODEが、前回渡されたV4DEVMODEと同じかを判定する。そして同じ場合は、保持しておいたキャッシュのPrintTicketとPrintCapabilitiesとを使用する。このような処理によれば、PrintTicketとPrintCapabilitiesとの生成処理を省くことができる。これにより、処理の高速化を図ることができる。
図9は、図8の処理に対して高速化を施したシーケンスを示す図である。ステップS901においてアプリケーションプログラム101は、処理モジュール611を呼び出す(S801)。このとき、アプリケーションプログラム101は、前述のように、具体的な指示情報、および、現在のプリンタードライバーの印刷設定情報であるV4DEVMODEを処理モジュール611に渡す。
本変形例では、ステップS902において処理モジュール611は、V4DEVMODE、PrintTicket、およびPrintCapabilitiesのキャッシュを保持しているかを確認する。保持していない場合は、図8のステップS702からS713に示すPrintTicketおよびPrintCapabilitiesの生成処理を行う。キャッシュを保持している場合は、ステップS902において処理モジュール611は、キャッシュされているV4DEVMODEと受け取ったV4DEVMODEとが同じデータであるかを判定(比較)する。異なる場合は、キャッシュされているデータを用いることができないので、図8のステップS702からS713に示すPrintTicketおよびPrintCapabilitiesの生成処理を行う。
キャッシュされているV4DEVMODEと受け取ったV4DEVMODEとが同じデータである場合は、処理モジュール611は、PrintTicket、PrintCapabilitiesの生成を行わない。代わりに、キャッシュされているPrintTicketおよびPrintCapabilitiesを使用する。
使用するPrintTicketおよびPrintCapabilities (キャッシュで保持したものか、生成されたものか)が決定したら、ステップS814からの処理を行う。ステップS814からS826までの処理は、図8で説明した処理と同様のため説明を省略する。
なお、ステップS814の処理で印刷設定を反映した場合、V4DEVMODEとPrintTicketとが、キャッシュされているV4DEVMODEとPrintTicketとから変わっている。従って、ステップS927において処理モジュール611は、保持しているV4DEVMODEとPrintTicketとのキャッシュを更新する。もしくは、キャッシュを保持していない場合は、新規に保持する。最後に、ステップS928において処理モジュール611は、アプリケーションプログラム101に、処理結果とステップS826で渡されたV4DEVMODEとを返信する。以上のように、保持しておいたV4DEVMODE、PrintTicket、PrintCapabilitiesを活用すれば、PrintTicket、PrintCapabilitiesの生成処理を省くことができ、処理が高速化できる。
なお、図9の処理は、図8の処理(情報の設定処理)の変形例を示したが、図7の処理(情報の参照・取得処理)の場合においても同様に、キャッシュされているPrintTicketおよびPrintCapabilitiesを使用することができる。
本実施形態においては、PrintTicketおよびPrintCapabilitiesの生成は、OSが提供するAPIを用いてコンフィグレーションモジュール519を呼び出して生成する形態を説明した。しかしながら、OSが提供するAPIを用いず、処理モジュール611がV4DEVMODEからPrintTicketおよびPrintCapabilitiesを生成する構成に代えることも可能であり、その場合も前記構成と同等の効果を有する。ただし、前述したとおりV4プリンタードライバーの印刷システムの構成上、OSが提供するAPIを用いる方法が一般的と言える。
<<実施形態2>>
実施形態1では、処理モジュール611が、アプリケーションプログラム101から渡されるV4DEVMODEからPrintTicketおよびPrintCapabilitiesを生成させる処理を司る形態を説明した。また、処理モジュール611が、生成されたPrintTicketおよびPrintCapabilitiesを使用して具体的な指示情報に基づく処理を行うすることで、独自のデータの受け渡しを可能としたシステム構成と処理の流れを説明した。しかしながら、実施形態1の構成では、PrintTicketおよびPrintCapabilitiesの生成に処理時間がかかるという課題がある。特に、PrintCapabilitiesの生成に処理時間がかかる。
実施形態1では、処理モジュール611が、アプリケーションプログラム101から渡されるV4DEVMODEからPrintTicketおよびPrintCapabilitiesを生成させる処理を司る形態を説明した。また、処理モジュール611が、生成されたPrintTicketおよびPrintCapabilitiesを使用して具体的な指示情報に基づく処理を行うすることで、独自のデータの受け渡しを可能としたシステム構成と処理の流れを説明した。しかしながら、実施形態1の構成では、PrintTicketおよびPrintCapabilitiesの生成に処理時間がかかるという課題がある。特に、PrintCapabilitiesの生成に処理時間がかかる。
前述したV3GDIプリンタードライバーとV3XPSプリンタードライバーとの間のデータの受け渡しでは、V3DEVMODEとデータベースとを使用する構成で実現している。多くのプリンタードライバーがV3のプリンタードライバーである現状において、実施形態1の構成のPrintTicketおよびPrintCapabilitiesを用いる構成を実現するには新規にシステムを構築する必要があり、対応負荷が高い。そこで、実施形態2では、V3アーキテクチャにおいて用いられていた方法を部分的に流用することで、V4アーキテクチャにおける対応負荷を軽減する。具体的には、処理モジュール611は、アプリケーションプログラム101から渡されるV4DEVMODEからPrintTicketを生成させる処理を行う。そして、生成されたPrintTicketから、処理モジュール611は、V3DEVMODE(第三の印刷設定情報)を生成する。その後は、V3GDIプリンタードライバーとV3XPSプリンタードライバーでの構成と同様に、V3DEVMODEとデータベースとを使用する構成で、独自のデータの受け渡しを実現する。データベースは、データベース単体モジュールでV4プリンタードライバーに含めてもよいし、あるいは、処理モジュール611に含めてもよい。システム構成については、実施形態1で説明したものと同様の構成を用いることができるので、ここでの説明は省略する。
<情報の参照処理(取得処理)のシーケンス>
図10は、本実施形態におけるシステムの処理シーケンスを示す図である。より詳細には、情報の参照処理(取得処理)のシーケンスを示す図である。ステップS1001においてアプリケーションプログラム101は、処理モジュール611を呼び出す。このとき、具体的な指示情報、および、現在のプリンタードライバーの印刷設定情報であるV4DEVMODEを渡す。次に、処理モジュール611は、受け取ったV4DEVMODEからPrintTicketを生成させるために、V4DEVMODEをコンフィグレーションモジュール519に渡す(S1002)。その後、コンフィグレーションモジュール519でPrintTicketが生成される(S1003)。そして、印刷設定編集モジュール511によってPrintTicketが編集され(S1004〜S1006)、生成されたPrintTicketが処理モジュール611に返信される(S1007)。ここまでは実施形態1と同様の処理である。
図10は、本実施形態におけるシステムの処理シーケンスを示す図である。より詳細には、情報の参照処理(取得処理)のシーケンスを示す図である。ステップS1001においてアプリケーションプログラム101は、処理モジュール611を呼び出す。このとき、具体的な指示情報、および、現在のプリンタードライバーの印刷設定情報であるV4DEVMODEを渡す。次に、処理モジュール611は、受け取ったV4DEVMODEからPrintTicketを生成させるために、V4DEVMODEをコンフィグレーションモジュール519に渡す(S1002)。その後、コンフィグレーションモジュール519でPrintTicketが生成される(S1003)。そして、印刷設定編集モジュール511によってPrintTicketが編集され(S1004〜S1006)、生成されたPrintTicketが処理モジュール611に返信される(S1007)。ここまでは実施形態1と同様の処理である。
次に、ステップS1008においてコンフィグレーションモジュール519は、返信されたPrintTicketからV3DEVMODEを生成する。ステップS1008の処理は、V3GDIプリンタードライバーやV3XPSプリンタードライバーのユーザーインターフェースモジュール203にて一般的に行われる処理である。本実施形態では、その処理を処理モジュール611に移植することで流用する。なお、V3のアーキテクチャにおいても、プリンタードライバーにおいてPrintTicketを用いて処理が行われており、PrintTicketからV3DEVMODEを生成する処理は、V3のアーキテクチャにおいて既に行われている処理である。
次に、ステップS1009において処理モジュール611は、生成したV3DEVMODE、および、データベースから、指示情報に基づいた情報を取得する。ステップS1009は、図4のS403で示した処理と同様の処理であり、その処理を処理モジュール611に移植することで流用する。最後に、ステップS1010において処理モジュール611は、アプリケーションプログラム101に処理結果を返信する。
なお、図10の処理では、V4DEVMODEから一旦PrintTicketを生成し、そのPrintTicketからV3DEVMODEを生成する処理が行われている。PrintTicketを生成する処理においては、前述したように、OSが標準で提供する機能と、印刷設定編集モジュール511によってOS標準で定義されていない機能とを含むPrintTicketが生成される。仮に、V4DEVMODEから直接V3DEVMODEを生成したとすると、OS標準で定義されていない機能については、V3DEVMODEに反映されないことになってしまう。そこで、V4DEVMODEからPrintTicketを一旦生成し、そのPrintTicketからV3DEVMODEを生成することで、OS標準で定義されていない機能を含む印刷設定情報を得ることができる。
<情報の設定処理のシーケンス>
図11は、本実施形態における情報の設定処理のシーケンスを示す図である。例えば、アプリケーションプログラム101からの指示情報が、印刷設定のメディア情報を写真紙に設定する、といったケースの例である。ステップS1001からS1008までは図10と同様のため、説明を省略する。
図11は、本実施形態における情報の設定処理のシーケンスを示す図である。例えば、アプリケーションプログラム101からの指示情報が、印刷設定のメディア情報を写真紙に設定する、といったケースの例である。ステップS1001からS1008までは図10と同様のため、説明を省略する。
ステップS1109において処理モジュール611は、指示情報に基づいた情報を、ステップS1008にて生成したV3DEVMODEに設定する。ステップS1109は、図4のステップS403で示した処理と同様の処理であり、その処理を処理モジュール611に移植することで流用する。
そして、ステップS1110において処理モジュール611は、指示情報に基づいた情報を設定したV3DEVMODEに関して設定に不整合がないかをチェックし不整合がある場合は適切な設定に変更するValidate処理を行う。その後、ステップS1111において処理モジュール611は、Validate処理されたV3DEVMODEからPrintTicketを生成する。なお、ステップS1111においてPrintTicketを生成する際、指示情報に基づいた情報部分のみ、V3DEVMODEの設定値をステップS1007にて生成したPrintTicketに対して反映することができる。このような処理を行うと、一からPrintTicketを生成するよりも処理が速くなる。ステップS1110およびS1111の処理は、V3GDIプリンタードライバーおよびV3XPSプリンタードライバーのユーザーインターフェースモジュール203にて一般的に行われる処理で、その処理を処理モジュール611に移植することで流用する。
次に、ステップS1112において処理モジュール611は、生成したPrintTicketからV4DEVMODEを生成させる処理を行う。すなわち、処理モジュール611は、PrintTicketをコンフィグレーションモジュール519に渡す。その後、ステップS1113からS1117において、コンフィグレーションモジュール519および印刷設定編集モジュール511を通じてV4DEVMODEが生成され、処理モジュール611に返信される。ステップS1113からS1117の処理は、図8および図9のステップS822からS826の処理と同様である。
以上説明したように、本実施形態では、実施形態1と異なり、PrintTicketからPrintCapabilitiesを生成する処理が不要となる。処理に時間を要するPrintCapabilitiesが不要となるので、処理速度の向上が期待できる。また、本実施形態は、V3アーキテクチャにおいて使用されているV3DEVMODEとデータベースとを用いて独自のデータの受け渡しを実現している。すなわち、実施形態1で説明したように、PrintTicketおよびPrintCapabilitiesを用いた処理を行わないので、V3アーキテクチャを流用し、少ない負荷で対応可能となる。
<変形例>
本実施形態においても、実施形態1で説明したものと同様に、アプリケーションプログラム101から処理モジュール611が複数回呼ばれる場合が想定される。この場合、処理モジュール611が呼び出される度に、V4DEVMODEからPrintTicket生成を経てV3DEVMODEを生成する必要があり、処理速度が遅くなる。本変形例は、実施形態1の変形例と同様に、キャッシュを保持する形態である。すなわち、処理モジュール611は、アプリケーションプログラム101から渡されたV4DEVMODEと生成されたV3DEVMODEとをキャッシュとして保持しておく。これにより、V3DEVMODEの生成処理を省くことができ、処理の高速化を図ることができる。
本実施形態においても、実施形態1で説明したものと同様に、アプリケーションプログラム101から処理モジュール611が複数回呼ばれる場合が想定される。この場合、処理モジュール611が呼び出される度に、V4DEVMODEからPrintTicket生成を経てV3DEVMODEを生成する必要があり、処理速度が遅くなる。本変形例は、実施形態1の変形例と同様に、キャッシュを保持する形態である。すなわち、処理モジュール611は、アプリケーションプログラム101から渡されたV4DEVMODEと生成されたV3DEVMODEとをキャッシュとして保持しておく。これにより、V3DEVMODEの生成処理を省くことができ、処理の高速化を図ることができる。
図12は、図11の処理に対して高速化を施したシーケンスを示す図である。ステップS1201においてアプリケーションプログラム101は、処理モジュール611を呼び出す。このとき、具体的な指示情報、および、現在のプリンタードライバーの印刷設定情報であるV4DEVMODEを渡す。
ステップS1202において処理モジュール611は、V4DEVMODE、PrintTicket、および、V3DEVMODEのキャッシュを保持しているかを確認する。保持していない場合は、図11のステップS1002からS1008に示すV3DEVMODEの生成処理を行う。
キャッシュを保持している場合は、ステップS1203において処理モジュール611は、キャッシュのV4DEVMODEと、受け取ったV4DEVMODEとが同じかを比較する。異なる場合は図11のステップS1002からS1008で示すV3DEVMODEの生成処理を行う。キャッシュのV4DEVMODEと、受け取ったV4DEVMODEとが同じ場合は、処理モジュール611は、V3DEVMODEの生成を行わずに、キャッシュのV3DEVMODEを使用する。
使用するV3DEVMODE(キャッシュで保持したV3DEVMODEか、生成したV3DEVMODEか)が決定したら、図12のステップS1109からの処理を行う。ステップS1109からS1117までの処理は図11と同様のため説明を省略する。
ステップS1218において処理モジュール611は、キャッシュを更新する。V4DEVMODEとV3DEVMODEとが、キャッシュのV4DEVMODEとV3DEVMODEから変わっている可能性がある。そこで、処理モジュール611は、ステップS1218にて、保持しているV4DEVMODE、PrintTicket、V3DEVMODEのキャッシュを更新する。もしくは、キャッシュを保持していない場合は、新規に保持する。最後に、ステップS1219において処理モジュール611は、アプリケーションプログラム101に、処理結果とステップS1117で渡されたV4DEVMODEとを返信する。以上のように、保持しておいたV4DEVMODE、V3DEVMODEを活用すれば、V3DEVMODEの生成処理を省くことができ、処理が高速化できる。
<<実施形態3>>
実施形態1および実施形態2にて、アプリケーションプログラムとV4プリンタードライバーとの間での独自のデータの受け渡しを可能としたシステム構成と一連のシステムの処理の流れを説明した。しかし、実施形態1および実施形態2の構成では、アプリケーションプログラムは、使用するプリンタードライバーが、V3プリンタードライバーかV4プリンタードライバーかで呼び出すモジュールを切り分ける必要がある。具体的には、使用するプリンタードライバーがV3プリンタードライバーの場合はサポートモジュール401を呼び出す必要がある。一方、V4プリンタードライバーの場合は処理モジュール611を呼び出す必要がある。この場合、すでに市場にリリースされているアプリケーションプログラムでは、V4プリンタードライバーの処理モジュール611を呼び出す処理が実装されていない。このため、上述した実施形態で説明したようなV4プリンタードライバーの動作が実行されない(処理モジュール611が呼ばれない)。
実施形態1および実施形態2にて、アプリケーションプログラムとV4プリンタードライバーとの間での独自のデータの受け渡しを可能としたシステム構成と一連のシステムの処理の流れを説明した。しかし、実施形態1および実施形態2の構成では、アプリケーションプログラムは、使用するプリンタードライバーが、V3プリンタードライバーかV4プリンタードライバーかで呼び出すモジュールを切り分ける必要がある。具体的には、使用するプリンタードライバーがV3プリンタードライバーの場合はサポートモジュール401を呼び出す必要がある。一方、V4プリンタードライバーの場合は処理モジュール611を呼び出す必要がある。この場合、すでに市場にリリースされているアプリケーションプログラムでは、V4プリンタードライバーの処理モジュール611を呼び出す処理が実装されていない。このため、上述した実施形態で説明したようなV4プリンタードライバーの動作が実行されない(処理モジュール611が呼ばれない)。
そこで、本実施形態では、処理モジュールを呼び出す呼び出しモジュールをプリンタードライバーに含める。図13は、V4プリンタードライバーとの間で独自のデータを受け渡すシステム構成図である。図13で示すように、サポートモジュール401と同じモジュール名称、かつ同じ保存場所に処理モジュール611を呼び出すモジュール(処理モジュール呼び出しモジュール1301)を用意し、保存しておく。これにより、アプリケーションプログラム101は、V4プリンタードライバーの場合でも、V3プリンタードライバーと同様にサポートモジュール401と同じ場所にある同じ名称の処理モジュール呼び出しモジュール1301を呼び出す(S1301)。その際に、アプリケーションプログラム101は、プリンタードライバーのサポートメディア情報が欲しいといった具体的な指示情報、および、現在のプリンタードライバーの印刷設定情報を渡す。印刷設定情報は、V3プリンタードライバーでもV4プリンタードライバーでも同じDEVMODE構造体で渡される。呼び出された処理モジュール呼び出しモジュール1301は、処理モジュール611を呼び出す(S1302)。その際、アプリケーションプログラム101から受け取ったプリンタードライバーのサポートメディア情報が欲しいといった具体的な指示情報、および、現在のプリンタードライバーの印刷設定情報を渡す。呼び出された処理モジュール611は、S602、およびS603の処理を行う。詳細な説明は省略する。処理モジュール611は、処理モジュール呼び出しモジュール1301に処理結果を返信し(S1304)、処理モジュール呼び出しモジュール1301は、アプリケーションプログラム101に処理結果を返信する(S1305)。
以上により、アプリケーションプログラム101はV4プリンタードライバーにおいてもV3プリンタードライバーと同様の処理で動作することが可能となる。このため、すでに市場にリリースされているアプリケーションであってもV4プリンタードライバーで動作可能となる。
つまり、アプリケーションプログラム101は、プリンタードライバーが、V3アーキテクチャのものかV4アーキテクチャのものであるかを意識しないでよい。なお、アプリケーションプログラム101からV4のプリンタードライバー503に渡される独自のデータも、V3のときと同様のものが渡される。すなわち、アプリケーションプログラム101からは、Escapeコード、DEVMODE、および具体的な指示情報がプリンタードライバー503の処理モジュール611に渡される。ここで、Escapeコードは、V4アーキテクチャでは使用されないので、処理モジュール611に渡されたとしても、処理モジュール611では無視される。
<<その他の実施形態>>
上述の実施形態においては、アプリケーションプログラム101は、印刷設定情報をDEVMODE構造体として保持している形態を例に挙げて説明した。しかしながら、アプリケーションプログラムの中には、PrintTicketとして印刷設定情報を保持するものがある。このようなPrintTicketを扱うアプリケーションプログラムを用いる場合においても、本発明は適用可能である。具体的には、処理モジュール611は、アプリケーションプログラムから渡されたPrintTicketを用いて上述の実施形態で説明した処理を行えばよい。このとき、PrintTicketは既に用意されているので、処理モジュール611は、PrintTicketの生成処理をスキップすればよい。また、情報の設定がなされた場合にも、V4DEVMODEの構造体でアプリケーションプログラムに返信せず、ValidateされたPrintTicketを返信すればよい。
上述の実施形態においては、アプリケーションプログラム101は、印刷設定情報をDEVMODE構造体として保持している形態を例に挙げて説明した。しかしながら、アプリケーションプログラムの中には、PrintTicketとして印刷設定情報を保持するものがある。このようなPrintTicketを扱うアプリケーションプログラムを用いる場合においても、本発明は適用可能である。具体的には、処理モジュール611は、アプリケーションプログラムから渡されたPrintTicketを用いて上述の実施形態で説明した処理を行えばよい。このとき、PrintTicketは既に用意されているので、処理モジュール611は、PrintTicketの生成処理をスキップすればよい。また、情報の設定がなされた場合にも、V4DEVMODEの構造体でアプリケーションプログラムに返信せず、ValidateされたPrintTicketを返信すればよい。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
101 アプリケーションプログラム
102 OS
503 プリンタードライバー
611 処理モジュール
102 OS
503 プリンタードライバー
611 処理モジュール
Claims (19)
- オペレーティングシステム上で動作するアプリケーションと、V4アーキテクチャのプリンタードライバーとの間の印刷設定に関するデータを通信するためのプログラムであって、コンピュータによって実行されると、
前記アプリケーションから、前記アプリケーションで保持している第一の印刷設定情報と、前記印刷設定に関する所定の処理の要求と、を含む依頼指示を受信するステップと、
受信した前記第一の印刷設定情報から前記プリンタードライバー内で処理可能なデータ構造体で構成される第二の印刷設定情報を生成させる指示を、前記オペレーティングシステムによって提供されている情報生成手段に送信するステップと、
前記指示に応じて生成された前記第二の印刷設定情報を受信するステップと、
受信した前記第二の印刷設定情報に基づいて前記所定の処理を実行するステップと、
前記所定の処理の結果を前記アプリケーションに返信するステップと
を実行することを特徴とするプログラム。 - 前記情報生成手段は、
生成した第二の印刷設定情報を、前記情報生成手段で提供されない独自の印刷設定の編集を行う編集手段に送信し、
前記編集手段によって編集された第二の印刷設定情報を、前記生成させる指示に応じて返信することを特徴とする請求項1に記載のプログラム。 - 前記所定の処理は、情報を参照する処理を含むことを特徴とする請求項1または2に記載のプログラム。
- 受信した前記第二の印刷設定情報から前記プリンタードライバーの印刷能力情報を生成させる指示を、前記情報生成手段に送信するステップと、
前記指示に応じて生成された前記印刷能力情報を受信するステップと、
をさらに実行し、
前記所定の処理を実行するステップは、前記印刷能力情報にさらに基づいて、前記所定の処理を実行することを特徴とする請求項1から3のいずれか一項に記載のプログラム。 - 前記情報生成手段は、
生成した印刷能力情報を、前記情報生成手段で提供されない独自の編集を行う編集手段に送信し、
前記編集手段によって編集された印刷能力情報を、前記生成させる指示に応じて返信することを特徴とする請求項4に記載のプログラム。 - 前記所定の処理は、情報を設定する処理を含むことを特徴とする請求項4または5に記載のプログラム。
- 前記所定の処理によって情報が設定された第二の印刷設定情報の有効化の指示を前記情報生成手段に送信するステップと、
前記指示に応じて有効化された第二の印刷設定情報を受信するステップと、
前記有効化された第二の印刷設定情報から第一の印刷設定情報を生成させる指示を前記情報生成手段に送信するステップと、
前記指示に応じて生成された前記第一の印刷設定情報を受信するステップと、
前記受信した第一の印刷設定情報を、前記所定の処理の結果とともに前記アプリケーションに送信するステップと、
をさらに実行することを特徴とする請求項6に記載のプログラム。 - 前に使用された前記第一の印刷設定情報、前記第二の印刷設定情報、および前記印刷能力情報が保持手段に保持されている場合、前記アプリケーションから受信した前記第一の印刷設定情報と、前記保持されている前記第一の印刷設定情報とが同じかを比較するステップをさらに実行し、
同じである場合、前記所定の処理を実行するステップは、前記保持されている前記第二の印刷設定情報または前記保持されている印刷能力情報のうちの少なくとも一方を用いて前記所定の処理を実行することを特徴とする請求項4から7のいずれか一項に記載のプログラム。 - 前記アプリケーションから受信した前記第一の印刷設定情報と、生成された前記第二の印刷設定情報と、生成された前記印刷能力情報とを、前記所定の処理が行われた後に、保持手段に保持させるステップをさらに実行することを特徴とする請求項8に記載のプログラム。
- オペレーティングシステム上で動作するアプリケーションと、V4アーキテクチャのプリンタードライバーとの間の印刷設定に関するデータを通信するためのプログラムであって、コンピュータによって実行されると、
前記アプリケーションから、前記アプリケーションで保持している第一の印刷設定情報と、前記印刷設定に関する所定の処理の要求と、を含む依頼指示を受信するステップと、
受信した前記第一の印刷設定情報から前記プリンタードライバー内で処理可能なデータ構造体で構成される第二の印刷設定情報を生成させる指示を、前記オペレーティングシステムによって提供されている情報生成手段に送信するステップと、
前記指示に応じて生成された前記第二の印刷設定情報を受信するステップと、
受信した前記第二の印刷設定情報からV3アーキテクチャのプリンタードライバー内で処理可能なデータ構造体で構成される第三の印刷設定情報を生成するステップと、
前記第三の印刷設定情報を用いて前記所定の処理を実行するステップと、
前記第三の印刷設定情報から第二の印刷設定情報を生成するステップと、
生成した前記第二の印刷設定情報から第一の印刷設定情報を生成させる指示を前記情報生成手段に送信するステップと、
前記指示に応じて生成された前記第一の印刷設定情報と、前記所定の処理の結果と、を前記アプリケーションに返信するステップと
を実行することを特徴とするプログラム。 - 前に使用された前記第一の印刷設定情報、前記第二の印刷設定情報、および前記第三の印刷設定情報が保持手段に保持されている場合、前記アプリケーションから受信した前記第一の印刷設定情報と、前記保持されている前記第一の印刷設定情報とが同じかを比較するステップをさらに実行し、
同じである場合、前記所定の処理を実行するステップは、前記保持されている前記第三の印刷設定情報を用いて前記所定の処理を実行することを特徴とする請求項10に記載のプログラム。 - 前記第三の印刷設定情報は、V3アーキテクチャで用いられるDEVMODE構造のデータであることを特徴とする請求項10または11に記載のプログラム。
- 前記第一の印刷設定情報は、V4アーキテクチャで用いられるDEVMODE構造のデータであることを特徴とする請求項1から12のいずれか一項に記載のプログラム。
- 前記第二の印刷設定情報は、PrintTicketのデータであることを特徴とする請求項1から13のいずれか一項に記載のプログラム。
- 前記V4アーキテクチャのプリンタードライバーは、ExtEscape関数を使用する機能を有していないことを特徴とする請求項1から14のいずれか一項に記載のプログラム。
- オペレーティングシステム上で動作するアプリケーションと、V4アーキテクチャのプリンタードライバーとの間の印刷設定に関するデータを通信する方法であって、
前記アプリケーションから、前記アプリケーションで保持している第一の印刷設定情報と、前記印刷設定に関する所定の処理の要求と、を含む依頼指示を受信するステップと、
受信した前記第一の印刷設定情報から前記プリンタードライバー内で処理可能なデータ構造体で構成される第二の印刷設定情報を生成させる指示を、前記オペレーティングシステムによって提供されている情報生成手段に送信するステップと、
前記指示に応じて生成された前記第二の印刷設定情報を受信するステップと、
受信した前記第二の印刷設定情報に基づいて前記所定の処理を実行するステップと、
前記所定の処理の結果を前記アプリケーションに返信するステップと
を含むことを特徴とする方法。 - オペレーティングシステム上で動作するアプリケーションと、V4アーキテクチャのプリンタードライバーとの間の印刷設定に関するデータを通信する方法であって、
前記アプリケーションから、前記アプリケーションで保持している第一の印刷設定情報と、前記印刷設定に関する所定の処理の要求と、を含む依頼指示を受信するステップと、
受信した前記第一の印刷設定情報から前記プリンタードライバー内で処理可能なデータ構造体で構成される第二の印刷設定情報を生成させる指示を、前記オペレーティングシステムによって提供されている情報生成手段に送信するステップと、
前記指示に応じて生成された前記第二の印刷設定情報を受信するステップと、
受信した前記第二の印刷設定情報からV3アーキテクチャのプリンタードライバー内で処理可能なデータ構造体で構成される第三の印刷設定情報を生成するステップと、
前記第三の印刷設定情報を用いて前記所定の処理を実行するステップと、
前記第三の印刷設定情報から第二の印刷設定情報を生成するステップと、
生成した前記第二の印刷設定情報から第一の印刷設定情報を生成させる指示を前記情報生成手段に送信するステップと、
前記指示に応じて生成された前記第一の印刷設定情報と、前記所定の処理の結果と、を前記アプリケーションに返信するステップと
を実行することを特徴とするプログラム。 - オペレーティングシステム上で動作するアプリケーションと、V4アーキテクチャのプリンタードライバーとの間の印刷設定に関するデータを通信する情報処理装置であって、
前記アプリケーションからの印刷設定に関する要求に応じて処理を行う、前記V4アーキテクチャのプリンタードライバーに含まれる処理手段を備え、
前記処理手段は、
前記アプリケーションから、前記アプリケーションで保持している第一の印刷設定情報と、前記印刷設定に関する所定の処理の要求と、を含む依頼指示を受信し、
受信した前記第一の印刷設定情報から前記プリンタードライバー内で処理可能なデータ構造体で構成される第二の印刷設定情報を生成させる指示を、前記オペレーティングシステムによって提供されている情報生成手段に送信し、
前記指示に応じて生成された前記第二の印刷設定情報を受信し、
受信した前記第二の印刷設定情報に基づいて前記所定の処理を実行し、
前記所定の処理の結果を前記アプリケーションに返信する
ことを特徴とする情報処理装置。 - オペレーティングシステム上で動作するアプリケーションと、V4アーキテクチャのプリンタードライバーとの間の印刷設定に関するデータを通信する情報処理装置であって、
前記アプリケーションからの印刷設定に関する要求に応じて処理を行う、前記V4アーキテクチャのプリンタードライバーに含まれる処理手段を備え、
前記処理手段は、
前記アプリケーションから、前記アプリケーションで保持している第一の印刷設定情報と、前記印刷設定に関する所定の処理の要求と、を含む依頼指示を受信し、
受信した前記第一の印刷設定情報から前記プリンタードライバー内で処理可能なデータ構造体で構成される第二の印刷設定情報を生成させる指示を、前記オペレーティングシステムによって提供されている情報生成手段に送信し、
前記指示に応じて生成された前記第二の印刷設定情報を受信し、
受信した前記第二の印刷設定情報からV3アーキテクチャのプリンタードライバー内で処理可能なデータ構造体で構成される第三の印刷設定情報を生成し、
前記第三の印刷設定情報を用いて前記所定の処理を実行し、
前記第三の印刷設定情報から第二の印刷設定情報を生成し、
生成した前記第二の印刷設定情報から第一の印刷設定情報を生成させる指示を前記情報生成手段に送信し、
前記指示に応じて生成された前記第一の印刷設定情報と、前記所定の処理の結果と、を前記アプリケーションに返信する
ことを特徴とする情報処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017199801A JP2019074884A (ja) | 2017-10-13 | 2017-10-13 | プログラム、データ通信方法、および情報処理装置 |
US16/150,338 US10481844B2 (en) | 2017-10-13 | 2018-10-03 | Data communication method and information processing apparatus having multiple print settings |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017199801A JP2019074884A (ja) | 2017-10-13 | 2017-10-13 | プログラム、データ通信方法、および情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019074884A true JP2019074884A (ja) | 2019-05-16 |
Family
ID=66095774
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017199801A Pending JP2019074884A (ja) | 2017-10-13 | 2017-10-13 | プログラム、データ通信方法、および情報処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10481844B2 (ja) |
JP (1) | JP2019074884A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11775236B2 (en) * | 2020-05-20 | 2023-10-03 | Canon Kabushiki Kaisha | Information processing apparatus, processing method of information processing apparatus, and storage medium |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5361358B2 (ja) | 2008-12-11 | 2013-12-04 | キヤノン株式会社 | 情報処理装置およびその制御方法、並びにプログラム |
JP6784538B2 (ja) * | 2016-08-18 | 2020-11-11 | キヤノン株式会社 | 情報処理装置、方法およびプログラム |
US10248366B2 (en) * | 2016-09-15 | 2019-04-02 | Ricoh Company, Ltd. | Information processing device, information processing system, and information processing method |
-
2017
- 2017-10-13 JP JP2017199801A patent/JP2019074884A/ja active Pending
-
2018
- 2018-10-03 US US16/150,338 patent/US10481844B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US10481844B2 (en) | 2019-11-19 |
US20190114120A1 (en) | 2019-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102549370B1 (ko) | 정보 처리 장치, 제어 방법 및 프로그램 | |
JP4630751B2 (ja) | 印刷システム、印刷装置及びその制御方法、プログラム | |
JP7086754B2 (ja) | 情報処理装置、情報処理装置の制御方法及びコンピュータプログラム | |
US20120229845A1 (en) | Printer | |
JP5047067B2 (ja) | 情報処理装置、データ出力システム、データ生成プログラム及びその記録媒体 | |
JP5995461B2 (ja) | 情報処理装置、制御方法、プログラム | |
KR20120112624A (ko) | 정보 처리 장치, 정보 처리 장치의 제어 방법 및 저장매체 | |
JP2008015922A (ja) | 情報処理装置及び周辺装置制御方法 | |
JP6289276B2 (ja) | 情報処理装置およびプログラム、制御方法 | |
JP2020087297A (ja) | プログラム及び制御方法 | |
JP6149709B2 (ja) | 情報処理プログラムおよび情報処理装置 | |
JP2016177432A (ja) | プログラム、情報処理装置、記憶媒体、画面作成方法 | |
JP2015121974A (ja) | 情報処理装置、情報処理方法、およびプログラム | |
CN113282252A (zh) | 信息处理装置、其控制方法及能够与其通信的服务器系统 | |
JP2019074884A (ja) | プログラム、データ通信方法、および情報処理装置 | |
JP6370156B2 (ja) | 情報処理装置及びその制御方法 | |
JP6111728B2 (ja) | 画像形成出力制御システム、画像形成出力制御プログラム及び情報処理装置 | |
JP5879807B2 (ja) | 印刷制御装置、制御プログラム及び記録媒体 | |
CN115129273A (zh) | 信息处理装置及其控制方法和存储介质 | |
JP2008112376A (ja) | 印刷管理装置およびプログラム | |
CN115515794A (zh) | 图像形成装置、控制图像形成装置的控制方法和程序 | |
JP4640694B2 (ja) | 携帯端末文書の印刷システム、サーバ装置および印刷方法 | |
EP3070923B1 (en) | Printing system capable of printing in any one of plural image forming apparatuses over network, image forming apparatus, and printing method | |
JP6878657B2 (ja) | 印刷システム、画像形成装置、印刷システムの制御方法、画像形成装置の制御方法、及びプログラム | |
JP2014056424A (ja) | 印刷制御装置、印刷制御方法及び印刷制御システム |