JP5857611B2 - 情報処理装置、システム、プログラム - Google Patents

情報処理装置、システム、プログラム Download PDF

Info

Publication number
JP5857611B2
JP5857611B2 JP2011226153A JP2011226153A JP5857611B2 JP 5857611 B2 JP5857611 B2 JP 5857611B2 JP 2011226153 A JP2011226153 A JP 2011226153A JP 2011226153 A JP2011226153 A JP 2011226153A JP 5857611 B2 JP5857611 B2 JP 5857611B2
Authority
JP
Japan
Prior art keywords
print
driver
printing
processing apparatus
setting
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.)
Active
Application number
JP2011226153A
Other languages
English (en)
Other versions
JP2013088869A (ja
Inventor
紘士 小林
紘士 小林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2011226153A priority Critical patent/JP5857611B2/ja
Priority to US13/647,657 priority patent/US8867077B2/en
Priority to CN201210387450.1A priority patent/CN103218183B/zh
Publication of JP2013088869A publication Critical patent/JP2013088869A/ja
Application granted granted Critical
Publication of JP5857611B2 publication Critical patent/JP5857611B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1208Improving or facilitating administration, e.g. print management resulting in improved quality of the output result, e.g. print layout, colours, workflows, print preview
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1244Job translation or job parsing, e.g. page banding
    • G06F3/1247Job translation or job parsing, e.g. page banding by conversion to printer ready format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1253Configuration of print job parameters, e.g. using UI at the client
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server
    • G06F3/1288Remote printer device, e.g. being remote from client or server in client-server-printer device configuration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)

Description

本発明は、印刷対象又は送信対象の文書データを取得して印刷装置に送出する情報処理装置に関する。
ユーザがコンピュータで文書作成ソフトや表計算ソフト、画像編集ソフト等の各種アプリケーションプログラム(以下単に「アプリケーション」という)を実行して、印刷したりFAX送信することがしばしば行われる。この場合、オペレーティングシステム(OS)上で印刷装置やFAX装置を制御するためのドライバ(プログラム)を実行することにより、印刷装置やFAX装置の制御に必要な処理をアプリケーションから切り離している。
プリンタドライバ・PC-FAXドライバの印刷・FAX送信は、次のような手順で行われる。
1.ユーザがアプリケーションの印刷メニューから印刷設定画面を表示し、印刷設定を決定する
2.ユーザがアプリケーションに印刷開始指示を行う
プリンタドライバは、1.で決定した印刷設定を2.で受け取ることにより、印刷設定に基づいて、アプリケーションから受け取る文書データをプリンタが解釈可能な印刷データに変換する。プリンタはそれを取得して印刷やFAX送信を実行する。
ところが、このような動作シーケンスでは、ユーザによる印刷開始指示後に印刷設定を変更して印刷を実行することはできないとされていた。そこで、印刷開始指示後にユーザが印刷設定を変更することを可能にする技術が提案されている(例えば、特許文献1参照。)。
A.従来技術の説明のため、まず、Windows(登録商標、以下(R)と略す)の印刷アーキテクチャについて説明する。Windows(R)の印刷アーキテクチャでは、アプリケーションからの印刷設定・印刷開始指示はAPIを使ってOSのGDIに対して命令を通知する。このGDIはOSの一部である。
GDIから、プリンタドライバ・PC-FAXドライバに対して、印刷設定・印刷開始指示の命令がDDIで通知される。DDIはI/Fのみ定義されているので、DDI内の実装方法は各メーカ(各プリンタドライバ・PC-FAXドライバ)で自由である。印刷中にコールされるDDIの実装で、ダイアログを表示することもできる。この印刷中にコールされるDDI名は「DrvDocumentEvent()」である。
DDIを利用することで、ユーザによる印刷開始指示後、プリンタにデータを送信する前にダイアログを表示することが可能となる。このような技術は、印刷の度にパスワードを入力させたり、FAXの宛先指定を行わせることをユーザに強制させたい場合に利用されている。
以下、具体例としてプリンタドライバに搭載された機密印刷機能と、PC-FAXドライバに搭載された宛先確認機能を例にして説明する。
図1は、プリンタドライバの機密印刷機能の画面例を示す図である。印刷開始指示後、機密印刷機能により、ユーザIDとパスワードの入力が要求される。ユーザは、ユーザIDとパスワードを入力しないと、OKボタン501を押下できない。ユーザがユーザIDとパスワードを入力してOKボタン501を押下すると、ユーザIDとパスワードがプリンタに送信される。プリンタ本体側にはユーザIDとパスワードの組が予め登録されており、この組み合わせが一致しないとプリンタは印刷しない。この機密印刷機能では、よりセキュリティを高めるために、印刷ごとにパスワードを毎回入力させるようにすることも可能である。なお、ユーザがキャンセルボタン502を押下すると、印刷が中止される。
図2は、PC-FAXドライバの宛先確認機能の画面例を示す図である。印刷開始指示後、PC-FAXドライバは図示するダイアログを表示して、ユーザにFAXの宛先(FAX番号)の入力を要求する。FAX送信においては、宛先が送信毎ごとに異なることが多いため、PC-FAXドライバは、誤送信を防ぐためにこのような画面を表示する。
ユーザがFAX番号を入力し、送信ボタン503を押下すると、画像データがFAX装置に送信され、FAX装置がFAXを送信する。なお、ユーザがキャンセルボタン504を押下すると、FAX送信が中止される。
ところで、Windows(R)の印刷時の仕組みとして、プリンタドライバの印刷では、RAWスプール形式とEMFスプール形式といった2つのスプール形式が存在する。RAWスプール形式では、アプリケーションのプロセスで、アプリケーションからプリンタドライバが取得した文書データをプリンタが解釈可能なRAWデータに変換する印刷処理を行う。ユーザから見ると印刷処理が完了するまでアプリケーションの操作ができない。
EMFスプール形式では、アプリケーションのプロセスで、アプリケーションからOSが取得した文書データをプリンタに依存しないEMFデータ形式に変換しスプールする。そして、スプーラプロセスでスプールされたEMFデータをプリンタドライバが、プリンタが解釈可能なRAWデータに変換する印刷処理を行う。ユーザから見ると、アプリケーションのプロセスでEMFデータへの変換が終了した時点で、アプリケーションを操作できるようになる。
いずれの仕組みでも、DDIの実装方法として、印刷開始後にダイアログを表示して印刷設定画面を表示できるようにすることは可能である。
しかし、ユーザが変更した印刷設定を印刷データに反映する仕組みが、OSから呼び出されるDDIだけでは実現することができない。プリンタドライバは、ユーザとのやりとりによって印刷設定を決定するUIドライバと、アプリケーションから受け取った文書データを印刷設定にもとづき、プリンタが解釈可能なデータ形式の印刷データに変換する描画ドライバとを有している。
描画ドライバは、OSのシステム権限で動作するため、ダイアログの表示をすることはOSに対する親和性を低下させてしまう。そのため、印刷開始指示後(印刷中)に印刷設定を変更するようにするためには、UIドライバがもつDDIのDrvDocumentEvent()を利用しダイアログを表示する。このDDIは描画ドライバが印刷を行っている間にコールされるUIドライバのDDIである。UIドライバであれば、アプリケーションと同等の権限で動作するためOSとの親和性は低下しない。
しかし、描画ドライバとUIドライバは別モジュールであり、直接通信して情報のやりとりをすることはできない。基本的にドライバはOSからDDIとして呼ばれるだけだからである。
Windows(R)の印刷の処理手順は上記のようになっているため、ユーザによる印刷開始指示後、プリンタに出力されるまでの間にダイアログを表示し、印刷設定に変更を加えたい場合、それを反映することが困難になっている。
特許文献1では、上記のような問題を解決するために、印刷開始後に変更した情報を一時ファイルに出力するという手法を使い、実現している。
B.次に、プリンタドライバ又はPC-FAXドライバのインストール方式と、印刷開始後の印刷設定の関係について説明する。Windows(R)のプリンタドライバではPoint&Printというインストール形式が存在する。
図3は、Point&Printの概略を説明する図の一例である。ネットワークにプリンタ、サーバPC及びクライアントPCが接続されている。サーバPC及びクライアントPCにWindows(R)系のOS(サーバはサーバ用)がインストールされている。
クライアントPCは、このサーバPCをプリントサーバとして、プリンタに対して印刷要求することができる。このようなシステムでは、クライアントPCにはサーバPCと同じプリンタドライバがインストールされている必要がある。ネットワーク上の個々のクライアントPCに、管理者などがプリンタドライバをインストールするには非常にコストがかかってしまう。
Point&Printではこの不都合を解決する手段として、サーバPCからクライアントPCにプリンタドライバをダウンロードしてインストールすることを可能にしている。これは、Windows(R)系OS標準の機能である。なお、Point&Printによる印刷手順においても、印刷時にはRAWスプール形式とEMFスプール形式が存在する。
Point&Printによりインストールされたプリンタドライバは(EMFスプールの場合)、描画処理(レンダリングともいい、上記の描画ドライバによる処理)をクライアントPCが行うかサーバPCが行うかをユーザが変更することができる。クライアントPC側で描画処理を行うことを「クライアントサイドレンダリング」という。サーバPC側で描画処理を行う「サーバサイドレンダリング」という。
しかしながら、一時ファイルを使う手法では、プリンタドライバが動作しているタイミングやユーザの権限レベルによって、プリンタドライバが一次ファイルに確実に出力できるとは限らないという問題がある。また、仮に、一時ファイルに出力できたとしても複数アプリケーションが動いている環境では設定が上書きされてしまう可能性がある。
図4は、複数アプリと一時ファイルの関係を模式的に説明する図の一例である。アプリケーション1,2は一台のPCで動作している、それぞれ文書データを印刷可能なアプリケーションである。
(i)アプリケーション1の要求を受けてUIドライバが一時ファイルに設定を書き込む。
(ii)アプリケーション2の要求を受けてUIドライバが一時ファイルに設定を書き込む。
(iii) アプリケーション1の要求を受けて描画ドライバが一時ファイルの設定を読み込む際には、一時ファイルの内容が書き換わっている。
この問題を解決するために、印刷設定を保存する場所を一時ファイルとするのでなく、印刷設定保持用モジュールを利用して、そこに印刷設定を保持させる方法を用い、上記の問題を解消することは可能であった。
しかし、この方法でも解消できないケースが2つある。
A.について:EMFスプールでの印刷シーケンスのケース
B.について:Point&Printインストールしたプリンタドライバでの印刷シーケンスのケース
A.について
印刷設定保持用モジュールを使用した方法は、印刷時のDDIコールシーケンスを利用しており、RAWスプールの時は実現可能である。しかし、スプール形式が異なると、OSから呼ばれるDDIコールシーケンスが変化する。EMFスプールでは、アプリケーションからの文書データをEMFデータに変換する処理と、EMFデータをプリンタが解釈可能な描画データに変換する処理とがある。このため、OS内部の動作として、2回の印刷処理シーケンスが動作する。この結果、DDIコールシーケンスがRAWスプールよりも複雑になってしまうため、期待するタイミングで印刷設定の受け渡しができない。
B.について
印刷設定保持用モジュールを使用した方法は、ローカル環境で、ユーザが使用するPCにプリンタドライバをインストールした場合は実現可能である。しかし、Point&Printというインストール形式では、ユーザの設定によってUIドライバと描画ドライバが動作する場所が異なるようにすることができる(サーバサイドレンダリング)。
クライアントサイドレンダリングでは、UIドライバ、描画ドライバともにクライアントPC側で動作するが、サーバサイドレンダリングでは、UIドライバはクライアントPC側で動作し、描画ドライバはサーバPC側で動作をする。このサーバサイドレンダリングでは、そもそも動作するPCが物理的に別であるため、印刷設定保持モジュールがクライアントPC側にしか存在しない状況になる。この場合、サーバの描画ドライバは印刷設定保持モジュールから印刷設定を取得できない。
図5は、従来技術における、印刷開始後の印刷設定の変更の実現可否状況を一覧にした図の一例である。上記のように、インストール環境がローカルでスプール形式がEMFスプールの場合、及び、インストール環境がPoint&Printでスプール形式がEMFスプールでレンダリング場所がサーバの場合、印刷開始後の印刷設定の変更が困難である。
本発明は、上記課題に鑑み、印刷開始後の印刷設定を、スプール形式の違いやプリンタドライバのインストール環境に関係なく可能とする情報処理装置を提供することを目的とする。
本発明は、操作を受け付ける操作受け付け手段と、前記操作受け付け手段が印刷開始又は送信開始の指示を受け付けた後、印刷又は送信の設定条件を表示し変更を受け付ける設定受け付け手段と、文書データ提供手段から印刷対象又は送信対象の文書データを取得して前記設定条件に基づき印刷装置の印刷データに変換する画像処理手段と、を有する情報処理装置であって、印刷開始又は送信開始の指示によりオペレーティングシステムが生成した印刷処理又は送信処理の識別情報を取得した前記設定受け付け手段が、オペレーティングシステムを介して前記識別情報をキーに前記設定条件を記憶させるLanguageMonitor、を有し、オペレーティングシステムから前記識別情報を取得した前記画像処理手段が、前記識別情報をキーにオペレーティングシステムを介して前記LanguageMonitorから前記設定条件を読み出し、該設定条件に基づき文書データを印刷装置の印刷データに変換する、ことを特徴とする。
印刷開始後の印刷設定を、スプール形式の違いやプリンタドライバのインストール環境に関係なく可能とする情報処理装置を提供することができる。
プリンタドライバの機密印刷機能の画面例を示す図である。 PC-FAXドライバの宛先確認機能の画面例を示す図である。 Point&Printの概略を説明する図の一例である。 複数アプリと一時ファイルの関係を模式的に説明する図の一例である。 従来技術における、印刷開始後の印刷設定の変更の実現可否状況を一覧にした図の一例である。 プリンタドライバの概略的な特徴を説明する図の一例である。 印刷システムの概略構成図の一例を示す図である。 PC及びプリンタドライバの機能ブロック図の一例である。 LanguageMonitorの動作を説明する図の一例である Windows(R)印刷アーキテクチャにおける、描画ドライバとUIドライバについて説明する図の一例である。 RAWスプールにおける、Windows(R)プリントアーキテクチャの流れを説明する図の一例である(従来図)。 図11のWindows(R)プリントアーキテクチャのシーケンス図の一例である(従来図)。 EMFスプールにおける、Windows(R)プリントアーキテクチャの流れを説明する図の一例である(従来図)。 図13のWindows(R)プリントアーキテクチャのシーケンス図の一例である(従来図)。 ExtEscape()関数の書式を説明する図の一例である。 DrvDocumentEvent()関数の書式、SendRecvBidiDataFromPort()の書式を説明する図の一例である。 PBIDI_REQUEST_CONTAINER構造体の書式、BIDI_REQUEST_DATA 構造体の書式を示す図の一例である OSが付与するJobIDを模式的に説明する図の一例である。 LanguageMonitorに記憶されるJobIDと印刷設定を模式的に説明する図の一例である。 RAWスプールのWindows(R)プリントアーキテクチャのシーケンス図の一例である。 EMFスプールのWindows(R)プリントアーキテクチャのシーケンス図の一例である。 Point&Print環境を備えた印刷システムの概略構成図の一例を示す。 Point&Print環境におけるLanguageMonitorの位置づけを説明する図の一例である。 Point&Print環境におけるJobIDについて説明する図の一例である。 Point&Print環境におけるRAWスプールの印刷手順を模式的に説明する図の一例である。 Point&Print環境におけるEMFスプール(クライアントサイドレンダリング)の印刷手順を模式的に説明する図の一例である。 Point&Print環境におけるEMFスプール(サーバサイドレンダリング)の印刷手順を模式的に説明する図の一例である。
以下、本発明を実施するための形態について図面を参照しながら説明する。
図6は、本実施形態のプリンタドライバの概略的な特徴を説明する図の一例である。PC(Personal Computer)がWindows(R)系のOS上でアプリケーションを実行している。Windows(R)系の印刷アーキテクチャでは、図示するようなソフトウェア階層により、アプリケーションの文書データがプリンタにより印刷される。ここではスプール形式を区別していない。
Windows(R)系OSのクライアント系には、Windows(R)NT、Windows(R)98、Windows(R)2000、Windows(R)Me、Windows(R)XP、Windows(R)Vista、Windows(R)7及びこれ以降のバージョンのOSが含まれる。サーバ系には、Windows(R) 2000 Server、2003 Server、2008 Server及びこれ以降のバージョンのOSが含まれる。
1.アプリケーション印刷処理開始
2.アプリケーションが OSのGDI API を呼び出す(プリンタデバイスコンテキストの確保)。
3.プリンタドライバ30が描画データを生成する
4.LanguageMonitor32が必要な処理を行う
5.ポートモニタ33が、プリンタ ポートの種類 (USB, TCP/IP etc) に合わせて出力処理を行う
6.プリンタに描画データが送信される
本実施例では、このような印刷アーキテクチャにおいて、OS10が生成するJobIDとLanguageMonitor32を利用する。OS10は印刷ジョブの1つ1つにJobIDを付与する。JobIDはプリンタドライバ30に通知される。
Windows(R)系OSでは、プリンタドライバ30は、OS10が提供するLanguageMonitor32を使用してもメーカ(プリンタメーカ、FAXメーカ等)が提供するLanguageMonitor32を使用してもよいとされている。本実施形態では、LanguageMonitor32を単にポートモニタ33とのインタフェースとするのでなく、印刷設定とJobIDを対応づけて記憶する手段として利用する。
プリンタドライバ30のUIドライバは、アプリケーションから取得した印刷設定と共にJobIDをLanguageMonitor32に通知する。LanguageMonitor32は印刷設定とOSが生成したJobIDを対応づけて記憶する。LanguageMonitor32はJobIDをキーに印刷設定を管理するので、他のアプリケーションが印刷設定を上書きするようなことはない。
また、描画ドライバが印刷設定を読み出す際、JobIDを指定することでUIドライバが生成した印刷設定を、LanguageMonitor32から取得することができる。このように、描画ドライバは一意に印刷設定を特定できる。
また、LanguageMonitor32は、Windows(R)系OSの機能なので、Point&Print環境のサーバPC上で利用可能である。このため、UIドライバはサーバPCのLanguageMonitor32にアクセスできるし、サーバPCの描画ドライバが描画処理する際も、LanguageMonitor32からJobIDで指定した印刷設定を取得することができる。このように、本実施形態の印刷設定の管理手法は、Point&Print環境においてもローカルインストールされたプリンタドライバと同様に有効である。
したがって、本実施形態の印刷設定の管理方法は、スプール形式及びインストール環境に関係なく、印刷開始後の印刷設定の変更が可能である。
〔構成例〕
図7(a)は印刷システム400の概略構成図の一例を、図7(b)はPC100のハードウェア構成図の一例をそれぞれ示す。PC100とプリンタ200がネットワーク300を介して接続されている。プリンタ200は1台のみあればよい。
PC100がユーザの操作を受け付け、文書作成ソフトなどのアプリケーションが、GDI、DDI及びプリンタドライバ等を利用して印刷を要求する。プリンタドライバ30は、後述する手順で印刷データを作成してプリンタ200に送信する。プリンタ200は画像形成機能を有していれば、コピー機、複写機、FAX装置などその呼称は問われない。また、プリンタ200は電子写真方式の画像形成機能又はインクジェット方式の画像形成機能のどちらの機能を有していてもよい。また、PC(Personal Computer)100とプリンタ200はUSBケーブルなどで直接接続されていてもよい。
PC100は、それぞれバスで相互に接続されているCPU11、ROM12、RAM13、外部I/F14、通信装置15、入力装置16、表示制御部17及び記憶装置18を有する。CPU11は、OS(Operating System)10、アプリケーション31、及び、プリンタドライバ30を記憶装置18から読み出して、RAM103を作業メモリにして実行する。
アプリケーション31は、プリンタ200に印刷要求するものであればよく、例えば、文書作成ソフト、ブラウザソフト、プレゼン資料作成ソフト等、種々のものがある。印刷対象となる文書データを、作成、編集、表示、管理などして、印刷可能なアプリケーションであればどのようなものでもよい。なお、文書データは、文字や記号、数値だけを含むものではなく、画像、写真など種々の印刷対象物を含む。
RAM13は必要なデータを一時保管する作業メモリ(主記憶メモリ)になり、ROM12にはBIOSや初期設定されたデータ、スタートプログラム等が記憶されている。
外部I/F14はUSBケーブル等のケーブルや、可搬型の記憶媒体20を装着するインタフェースである。通信装置15は、LANカードやイーサネット(登録商標)カードであり、CPU11からの指示によりプリンタ200にパケットデータ(本実施形態では主に印刷データ)を送信する。
入力装置16は、キーボード、マウスなど、ユーザの様々な操作指示を受け付けるユーザインターフェイスである。タッチパネルや音声入力装置を入力装置とすることもできる。表示制御部17は、アプリケーション31が指示する画面情報に基づき所定の解像度や色数等でディスプレイ19の描画を制御する。ディスプレイ19は、液晶や有機ELなどのFPD(Flat Panel Display)である。
記憶装置18は、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発メモリを実体とし、OS10、プリンタドライバ30、及び、アプリケーション31を記憶している。
記憶媒体20は、例えば、SDカードやUSBメモリなど不揮発性のメモリである。OS10、アプリケーション31、及び、プリンタドライバ30は、記憶媒体20に記録された状態又は不図示のサーバからダウンロードされる態様で配布される。
図8は、PC100及びプリンタドライバ30の機能ブロック図の一例である。PC100は、Windows(R)系OS上で動作する、アプリケーション31、プリンタドライバ30、LanguageMonitor32、及び、ポートモニタ33を有する。このうち、LanguageMonitor32、及び、ポートモニタ33がOS10により提供されため、広義ではOS10の一部である。この他のGDI、スプーラ、プリンタプロセッサなどは省略したが、OS10と共にPC100にインストールされている。
プリンタドライバ30は、UIドライバ38と描画ドライバ39を有している。さらにUIドライバ38は表示部381を有する。UIドライバ38の表示部381は、ユーザがアプリケーションに対して文書の印刷操作を入力することで、印刷設定画面(印刷ダイアログと呼ばれることがある)をディスプレイ19に表示する。ユーザは、印刷設定画面に対し、部数や両面などといった設定、「集約」「製本」「変倍」等の設定を行うことができる。また、UIドライバ38の表示部381は、ユーザが印刷開始指示を入力した後も、印刷設定画面をディスプレイ19に表示して、印刷設定の変更を受け付けることができる。印刷設定は、DEVMODE構造体(以下、DEVMODEという)という構造体(データテーブル)に格納される。DEVMODEはOS上で動作する各種のプリンタドライバ30に対して印刷条件を共通に設定するためのメンバ変数が定義されたデータ構造である。
描画ドライバ39は、DEVMODEを参照して、アプリケーション31によって印刷対象の文書データから印刷設定を反映した印刷データを作成する。なお、印刷データには描画データ(例えばPDLデータ)と制御データ(例えばPJLの印刷コマンド)が含まれる。
LanguageMonitor32はプリンタドライバ30との結合性が高いモジュールである。LanguageMonitor32は、ポートモニタ33に送信する印刷データをフィルタリングすることができる。本実施例のLanguageMonitor32は、データ保持部321と通信部322を有する。このうち、通信部322は、プリンタドライバ30がポートモニタ33に印刷データを送信する際に、通信を制御するものであり、従来のLanguageMonitor32が有している。通信部322はプリンタ200からのメッセージを受信することもできる。これに対し、データ保持部321は、JobIDをキーに印刷設定を対応づけて記憶する。データ保持部321は、LanguageMonitor32の機能を利用してプリンタドライバ30により実現される。このため、OS10の変更は必要ないか、あったとしてもわずかである。データ保持部321については後述する。
図9は、LanguageMonitor32の動作を説明する図の一例である。LanguageMonitor32はプリントプロセッサ41から送信された印刷データを受け取り、ポートモニタ33に送信する。ポートモニタ33は、通信プロトコルに基づく処理を行い、ポートドライバ43に印刷データを送信する。ポートドライバ43は、プリンタ200とPC100との接続インタフェース(USB,NIC等)を制御して、印刷データをプリンタ200に送信する。
〔従来のWindows(R)系OSの印刷アーキテクチャ〕
図10は、Windows(R)系OSの印刷アーキテクチャにおける、描画ドライバ39とUIドライバ38について説明する図の一例である。
OS10のGDI34はDDIコールによりプリンタドライバ30のUIドライバ38と描画ドライバ39を呼び出す。UIドライバ38と描画ドライバ39は、直接相互にやりとりをすることができない。しかし、OS10からのドライバの呼び出しI/FであるDDIの引数にDEVMODEがあることにより、双方がDEVMODEを参照することができる。
・OS10から呼び出されたUIドライバ38は、ユーザの印刷設定を受け付けDEVMODEに保存する
・DEVMODEは印刷準備開始時にOS10から描画ドライバ39に渡される
すなわち、UIドライバ38は、「印刷設定」を決定し、描画ドライバ39は「印刷設定」を印刷準備開始時に受け取り、印刷設定に基づき印刷コマンドや描画データを生成する。これがWindows(R)系OSの印刷アーキテクチャの基本的な印刷シーケンスとなる。描画ドライバ39は、UIドライバ38に続いて処理するので、一般的なプリンタドライバ30では、ユーザの印刷開始指示後に印刷設定を変更することはできない。
図11は、RAWスプールにおける、Windows(R)系OSの印刷アーキテクチャの流れを説明する図の一例である。
(1)ユーザが、UIドライバ38が提供する印刷ダイアログ(GUI)によって印刷設定を変更する(すでに登録されている初期値を変更する)。
(2)ユーザがアプリケーションに印刷開始指示の操作を行う。
(3)アプリケーションはUIドライバ38と印刷設定が入っているDEVMODEをやりとりして、ユーザの印刷設定を受け取る。
(4)アプリケーションはGDI34に印刷命令とDEVMODEをGDIコールとして伝える。
(5)GDI34はGDIコールをDDIコールに変換して描画ドライバ39に伝える。
(6)描画ドライバ39は、プリンタが理解できる言語に変換したRAWデータをスプーラ35に送出する。
(7)スプーラ35は、描画ドライバ39から受け取ったRAWデータをプリンタ200に送信する。
図12は、図11のWindows(R)系OSの印刷アーキテクチャのシーケンス図の一例である。なお、実際にはGDI34とUIドライバ38、又は、GDI34と描画ドライバ39の間では、不図示の通信が行われているが省略している。GDI34からUIドライバ38へのメッセージはUI系のDDI関数で、描画ドライバ39へのメッセージは描画系DDI関数でそれぞれ通知される。
この図12のS1までにUIドライバ38はユーザが設定した印刷設定を受け付けており、ユーザが印刷開始を操作するとアプリケーション31がDEVMODEに格納された印刷設定を取得する。
S1: アプリケーション31はまず、GDI34に印刷準備開始を指示する。具体的には、アプリケーションはCreateDC()関数で印刷設定(DEVMODE)を引数にしてGDI34をコールする。
S1.1:GDI34はAPIに対応するDDIをコールすることで、描画ドライバ39に印刷設定を送出する。CreateDC()の引数でアプリーションがGDI34に渡した印刷設定が、DrvEnablePDEV()の引数に格納され描画ドライバ39に通知される。この後、描画ドライバ39は、ジョブが終了するまで(デバイスコンテキストが消去されるまで)印刷設定を参照することができる。
S2:GDI34が印刷準備完了をアプリケーションに通知すると、アプリケーションはGDI34に印刷開始を指示する。具体的には、アプリケーションはStartDoc()関数でDocINFOなどを引数にしてGDI34をコールする。
S2.1:GDI34はUIドライバ38に印刷開始を指示する。具体的にはDrvDocumentEvent()DOCUMENTEVENT_STARTDOCPRE()をUIドライバ38に送出する。
S2.2:GDI34は描画ドライバ39に印刷開始を指示する。具体的にはDrvStartDoc()関数を描画ドライバ39に送出する。OS10は、CreateDC()関数により所定のタイミングでJobIDを生成している。GDI34はDrvStartDoc()関数の引数にJobIDを設定するので、描画ドライバ39はJobIDを参照できるようになる。
S2.3: 同様にGDI34はUIドライバ38に印刷開始を指示する。具体的にはDrvDocumentEvent()DOCUMENTEVENT_STARTDOCPOST()をUIドライバ38に送出する。GDI34はこの関数の引数にJobIDを設定するので、UIドライバ38はJobIDを参照できるようになる。
S3: GDI34が印刷開始完了をアプリケーションに通知すると、アプリケーションはページ単位の処理を繰り返す。まず、アプリケーションはGDI34に新しいページの印刷データを受け入れるよう指示する。具体的には、アプリケーションはStartPage()をGDI34に送出する。
S3.1:GDI34はDrvStartPage()を描画ドライバ39に送出する。
S4:アプリケーションは、描画ドライバ39から応答を取得すると、描画関数(文書データ)をGDI34に送出する。
S4.1:GDI34は、描画関数(文書データ)を描画ドライバ39に送出する。描画ドライバ39は印刷設定に従って文書データを印刷データに変換する。
S5: GDI34が1ページ分の描画処理の完了をアプリケーションに通知すると、アプリケーションは1ページ分の書き込みが終了したことをGDI34に通知する。具体的には、アプリケーションはEndPage()をGDI34に送出する。
S5.1:GDI34は描画ドライバ39に1ページ分の書き込みが終了したことを通知する。具体的には、GDI34はDrvSendPage()を描画ドライバ39に送出する。
S6:アプリケーションは、全てのページの描画処理が終了すると、印刷ジョブの終了をGDI34に通知する。具体的には、アプリケーションはEndDoc()をGDI34に送出する。
S6.1:GDI34は印刷ジョブの終了を描画ドライバ39に送出する。具体的には、GDI34はEndDoc()を描画ドライバ39に送出する。
S6.2: GDI34は印刷ジョブの終了をUIドライバ38に送出する。具体的には、GDI34はDrvDocumentEvent()DOCUMENTEVENT_ENDDOCPOST()をUIドライバ38に送出する。
この後、デバイスコンテキストが消去され、描画ドライバ39は印刷設定を参照できなくなる(描画ドライバ39にDrvDisablePDEV()のDDIコールが通知される)。
図13は、EMFスプールにおける、Windows(R)系OSの印刷アーキテクチャの流れを説明する図の一例である。
(1)ユーザが、UIドライバ38が提供する印刷ダイアログ(GUI)によって印刷設定を変更する(すでに登録されている初期値を変更する)。
(2)ユーザがアプリケーションに印刷開始指示の操作を行う。
(3)アプリケーションはUIドライバ38と印刷設定が入っているDEVMODEをやりとりして、ユーザの印刷設定を受け取る。
(4)アプリケーションはGDI34に印刷命令をGDIコールとして通知する。
(5)GDI34はEMFデータをスプールデータとしてスプーラ35に渡す。
(6)アプリケーションの印刷データが一通りスプールされると、スプーラ35がプリントプロセッサ41にデスプールすることを伝え、スプールデータを渡す。
(7)プリントプロセッサ41は、スプールデータをページごとに編集することで、集約・逆順・製本の機能を実現し、編集した内容をGDI34にGDIコールとして通知する。
(8)GDI34はGDIコールをDDIコールに変換して描画ドライバ39に通知する。
(9)描画ドライバ39は、プリンタが理解できる言語に変換したRAWデータをスプーラ35に送出する。
(10)スプーラ35は、描画ドライバ39から受け取ったRAWデータをプリンタに送信する。
図14は、図13のWindows(R)系OSの印刷アーキテクチャのシーケンス図の一例である。なお、実際にはGDI34とUIドライバ38、又は、GDI34と描画ドライバ39の間では、不図示の通信が行われているが省略している。また、EMFスプールでは、アプリケーションプロセスとスプーラプロセスが分かれている。
なお、この図14のS1までにUIドライバ38はユーザが設定した印刷設定を受け付けており、ユーザが印刷開始を操作するとアプリケーションがDEVMODEに格納された印刷設定を取得する。
S1: アプリケーションはまず、GDI34に印刷準備開始を指示する。具体的には、アプリケーションはCreateDC()関数で印刷設定を引数にしてGDI34をコールする。
S1.1:GDI34はAPIに対応するDDIをコールすることで、描画ドライバ39に印刷設定を送出する。CreateDC()の引数でアプリーションがGDI34に渡した印刷設定が、DrvEnablePDEV()の引数に格納され描画ドライバ39に通知される。この後、描画ドライバ39は、ジョブが終了するまで(デバイスコンテキストが消去されるまで)印刷設定を参照することができる。
S2:GDI34が印刷準備完了をアプリケーションに通知すると、アプリケーションはGDI34に印刷開始を指示する。具体的には、アプリケーションはStartDoc()関数でDocINFOなどを引数にしてGDI34をコールする。
S2.1:GDI34はUIドライバ38に印刷開始を指示する。具体的にはDrvDocumentEvent()DOCUMENTEVENT_STARTDOC()をUIドライバ38に送出する。
S2.2: GDI34はUIドライバ38にJobIDを送出する。具体的にはDrvDocumentEvent()DOCUMENT_STARTDOCPOST()をUIドライバ38に送出する。GDI34はこの関数の引数にJobIDを設定するので、UIドライバ38はJobIDを参照できるようになる。この時点では描画ドライバ39はJobIDを取得していない。
S3: GDI34が印刷開始完了をアプリケーション31に通知すると、アプリケーションページ単位の処理を繰り返す。まず、アプリケーションはGDI34に新しいページの印刷データを受け入れるよう指示する。具体的には、アプリケーションはStartPage()をGDI34に送出する。StartPage()によりスプーラプロセスが開始される。
S4:アプリケーション31は、描画関数(文書データ)をGDI34に送出する。GDI34は、印刷設定に基づきEMFデータを作成する。
S5:アプリケーション31は1ページ分の書き込みが終了したことをGDI34に通知する。具体的には、アプリケーションはEndPage()をGDI34に送出する。
S6:アプリケーション31は、全てのページの描画処理が終了すると、印刷ジョブの終了をGDI34に通知する。具体的には、アプリケーションはEndDoc()をGDI34に送出する。
このように、アプリケーションのプロセスが終了すると、印刷が完了していなくてもアプリケーションは印刷を終了したように見える。この後、スプーラプロセスで再度印刷処理がかかり、ここでEMFデータからRAWデータへ変換される。
OS10はアプリケーション31とGDI34の通信を監視して、所定のタイミングになると(例えばStartPage()の後)、スプーラ35にスプーラプロセスを開始させる。
S7:スプーラ35は、プリントプロセッサ41に印刷準備開始を指示する。
S7.1:プリントプロセッサ41はGDI34に印刷準備開始を指示する。
S7.1.1:GDI34は描画ドライバ39に印刷設定を送出する。具体的には、CreateDC()の引数でアプリーションがGDI34に渡した印刷設定が、DrvEnablePDEV()の引数に格納され描画ドライバ39に通知される。この後、描画ドライバ39は、ジョブが終了するまで(デバイスコンテキストが消去されるまで)印刷設定を参照することができる。
S7.1.2:GDI34は描画ドライバ39に印刷開始を指示する。具体的にはDrvStartDoc()関数を描画ドライバ39に送出する。OS10は、CreateDC()関数により所定のタイミングでJobIDを生成している。GDI34はDrvStartDoc()関数の引数にJobIDを設定するので、描画ドライバ39はJobIDを参照できるようになる。
S7.2:以降、プリントプロセッサ41はページ単位の処理を繰り返す。まず、プリントプロセッサ41はGDI34に新しいページの印刷データを受け入れるよう指示する。具体的には、プリントプロセッサ41はGdiStartPageEMF()をGDI34に送出する。
S7.2.1:GDI34はDrvStartPage()を描画ドライバ39に送出する。
S7.2.2:GDI34は、描画関数(文書データ)を描画ドライバ39に送出する。描画ドライバ39は印刷設定に従って文書データを印刷データに変換する。
S7.2.3:GDI34は描画ドライバ39に1ページ分の書き込みが終了したことを通知する。具体的には、GDI34はDrvSendPage()を描画ドライバ39に送出する。
以降は、ページ単位の繰り返しになる。
〔本実施形態のWindows(R)系OSの印刷アーキテクチャ〕
まず、本実施形態の印刷アーキテクチャで使用するAPI等について説明する。
図15(a)はExtEscape()関数の書式を説明する図の一例である。ExtEscape()関数は、モジュール(シーケンス図や機能ブロック図の各ブロック)がGDI経由ではアクセスできない特定のモジュールにアクセスするためのAPIである。アプリケーションがGDI34を関与させずにドライバにデータを送信する場合、モジュールからGDI34を関与させずにデータを取得する場合に利用されることがある。
・hdcはデバイスコンテキストのハンドルである。
・nEscapeはExtEscape()関数の機能をチェックしたり設定するための引数になる。
・cbInputは、ExtEscape()関数で送信する構造体のサイズである。
・lpszInDataは、ExtEscape()関数で送信する構造体のポインタである。
・cbOutputは、ExtEscape()関数で送信される構造体を受け取る構造体のサイズである。
・lpszOutDataは、ExtEscape()関数で送信される構造体を受け取る構造体のポインタである。
ExtEscape()関数は、CreateDC()により取得されたデバイスコンテキストに対して、コール可能なAPIである。よって、UIドライバ38等はシーケンス処理中のデバイスコンテキストがある範囲でExtEscape()関数をコールすることができる。
図15(b)は、アプリケーションがExtEscape()をコールした場合のシーケンス図の一例を示す。
(i)アプリケーションがGDI34に対しExtEscape()をコールする。
(ii)GDI34はExtEscape()をDrvEscape()というDDIコールに変換して描画ドライバ39に通知する。
また、この逆に描画ドライバ39又はUIドライバ38がExtEscape()をコールすることも可能である。ExtEscape()はCreateDC()〜DeleteDC()間であれば、各モジュールがコールできるので、図15(b)のシーケンスは、図12,14の従来のシーケンス図の任意の場所に入れることができる。
図16(a)は、DrvDocumentEvent()関数の書式を説明する図の一例である。DrvDocumentEvent()関数は、文書データの印刷に関連する特定のイベントを処理するDLLである。
・hPrinterは、プリンタのハンドルである。
・hdcは、デバイスコンテキストのハンドルである。
・iEscは、呼び出し元のモジュールが提供する、処理対象のイベントを識別するためのエスケープコードである。
・cbInはpvInで送信されるデータのサイズである。
・pvInは送信されるデータのポインタである。
・cbOutは、iEscがDOCUMENTEVENT_ESCAPEの場合は、ExtEscape()のcbOutputパラメータとして関数が指定した値が格納される。iEscがDOCUMENTEVENT_QUERYFILTERの場合、受け取り側が受け取る構造体pvOutのサイズが格納される。
・pvOutは、受け取り側が受け取る構造体pvOutのポインタである。
本実施例では、DrvDocumentEvent()関数は、CreateDC()以降の印刷中、GDI34等が描画ドライバ39を呼び出すDDIコールの間に、適宜、コールされる。DrvDocumentEvent()は単独の処理を行うためのDDIなので、前後のDrvDocumentEvent()間でデータの共有はできない。この点で、描画ドライバ39を呼び出すDDIとは異なる。UI系のDDIなのでダイアログ表示をすることも可能である。
また、引数にデバイスコンテキスト(hdc)があるため、DrvDocumentEvent()のDDIコールの後、モジュールがデバイスコンテキストを必要とするAPIをコールすることができる。例えば、UIドライバ38がデバイスコンテキストを引数に描画系APIをコールすると、対応している描画ドライバ39に対して描画命令を通知することができる。
図16(b)は、SendRecvBidiDataFromPort()の書式を説明する図の一例である。SendRecvBidiDataFromPort()関数は、LanguageMonitor32に実装される関数である。プリンタドライバ30と同じようにLanguageMonitor32にもOS10によって決められたI/Fが存在する。SendRecvBidiDataFromPort()関数は、その1つであり、アプリケーションとプリンタ間、アプリケーションとプリントサーバ間の双方向通信をサポートする。
・hPortは、呼び出し元のモジュールによって与えられるポートのハンドルである。
・dwAccessBitは、呼び出し元のモジュールによって与えられ、プリンタ又はプリントサーバへのアクセスを許可するACCESS_MASK構造体である。
・pActionは、呼び出し元のモジュールによって与えられるリクエストアクションである。
・pReqDataは、リクエストデータを有しているPBIDI_REQUEST_CONTAINER構造体のポインタである。
・ppResDataは、レスポンスデータを有しているBIDI_RESPONSE_CONTAINER構造体のアドレスを受け取るメモリ領域へのポインタである。
図17(a)はPBIDI_REQUEST_CONTAINER構造体の書式を示す図の一例である。PBIDI_ RESPONSE _CONTAINER構造体についてもほぼ同様である。PBIDI_REQUEST_CONTAINER構造体は、「bidi requests」のリストを格納するコンテナであり、PBIDI_ RESPONSE _CONTAINER構造体は「bidi RESPONSE」のリストを格納するコンテナである。
Windows(R)系のOS10は「Bidi Request and Response Schemas」として、プリンタとアプリケーションの間で双方向通信のために使用可能な、問い合わせと応答の組を提供するデータベースのスキーマを提供している。このRequestとResponseに、JobIDと印刷設定を登録すれば、OS10の仕組みを利用してモジュールがJobIDをキーに印刷設定を取得できる。
・versionは、スキーマのバージョンであり現在は1である。
・Flagsは、システム(OS10)により予約されたフラグのセットでありゼロでなければならない。
・Countは、aDataメンバーにおける「bidi requests」の数である。
・aData[]は、BIDI_REQUEST_DATA 構造体の配列であり、各要素が1つの「bidi request」を有している。
図17(b)はBIDI_REQUEST_DATA 構造体の書式の一例を示す図である。BIDI_REQUEST_DATA構造体は、1つの「bidi request」を格納している。
・dwReqNumberは、リクエストのインデックスであり、マルチリクエストによる操作のリクエストと応答を適合させるために使用される。
・pSchemaは、スキーマ文字列の最初の1バイトがあるメモリ配置へのポインタである。
・dataは、スキーマに従ったBIDI_DATA 構造体である。
<LanguageMonitorへのJobIDと印刷設定の格納>
従来から、OS10は印刷開始命令を受け付けた順にシステムで一意のID(JobID)を生成している。RAWスプールとEMFスプールのいずれでも、描画ドライバ39及びUIドライバ38がJobIDを取得するステップがある。すなわち、
描画ドライバ39は、DrvStartDoc()の引数で受け取ることができる。
UIドライバ38は、DrvDocumentEvent()DOCUMENTEVENT_STARTDOCPOST()の引数で受け取ることができる。
図18は、OS10が付与するJobIDを模式的に説明する図の一例である。アプリケーションA及びアプリケーションBが任意に印刷開始命令1〜3を発行する。OS10は、
アプリケーションAの印刷開始命令1にJobID1を付与し、
アプリケーションBの印刷開始命令2にJobID2を付与し、
アプリケーションAの印刷開始命令3にJobID3を付与している。
描画ドライバ39及びUIドライバ38はこれらのJobIDを取得するので、描画ドライバ39及びUIドライバ38が取得するJobIDも一意性が保証される。
本実施形態では、このJobIDをキーにしてLanguageMonitor32に印刷設定を記憶させる。
図19は、LanguageMonitor32に記憶されるJobIDと印刷設定を模式的に説明する図の一例である。アプリケーションA,Bは、以下のように印刷開始を指示している。印刷開始が指示された順に、OS10によってJobIDが振られる。
1. アプリケーションAが印刷開始指示
2. アプリケーションBが印刷開始指示
3. アプリケーションAが印刷開始指示
UIドライバ38は、印刷開始後に印刷設定画面を表示し印刷設定を受け付ける。そして、その印刷設定を、JobIDをキーにしてLanguageMonitor32に設定(set)する。図の例だと、LanguageMonitor32は、JobIDと印刷設定の組み合わせをテーブル状に保持する。
描画ドライバ39は、印刷データの生成に印刷設定が必要になると、JobIDをキーとしてLanguageMonitor32に印刷設定を問い合わせる(getする)。
このように、OS10によって印刷ジョブに一意のキーが振られ、そのキーを利用して情報を保持する仕組みをLanguageMonitor32が有する。このため、複数のアプリケーションが任意に複数の印刷ジョブを開始しても、プリンタドライバ30は印刷ジョブ毎に印刷設定を管理できる。
LanguageMonitor32への設定及び問い合わせにSendRecvBidiDataFromPort()関数が使用される。プリンタドライバ30がSendRecvBidiDataFromPort()にてLanguageMonitor32を呼び出すことで、LanguageMonitor32を保存場所として使うことが可能となる。すなわちLanguageMonitor32とSendRecvBidiDataFromPort()関数によりデータ保持部321が実現される。
上記のように、LanguageMonitor32はメーカが開発しなくとも、標準のLanguageMonitor32がOS10と共に利用可能である。メーカが開発しない場合はそのLanguageMonitor32が動作する。メーカは決められたI/Fに合わせ、LanguageMonitor32を開発すれば、独自の機能を追加することができる。本実施形態では、SendRecvBidiDataFromPort()というI/Fを利用することによりプリンタドライバ30等はLanguageMonitor32とのデータのやりとりが可能となる。
UIドライバ38は、「pAction」に設定を意味する定数を設定し、「pReqData 」にJobIDを設定し、「ppResData」に印刷設定が記憶されたアドレスへのポインタを設定する。LanguageMonitor32は、BIDI_REQUEST_DATA 構造体の配列の要素の1つであるaData[]にJobIDを格納し、BIDI_RESPONSE_DATA 構造体の配列の要素の1つであるaData[]に印刷設定(へのポインタ)を格納する。これにより、図19のようにJobIDと印刷設定が対応づけられる。
また、描画ドライバ39は、「pAction」に読み出しを意味する定数を設定し、「pReqData 」にJobIDを設定し、不図示の戻り値を指定する。これによりLanguageMonitor32は、「ppReqData」に対応する印刷設定が記憶されたアドレスのポインタを戻り値に格納して描画ドライバ39に返す。
このようにOS10の機能を利用することで、LanguageMonitor32におけるデータ保持部321のキーを印刷ジョブで重複しないJobIDとすることができる。
<動作手順>
図20は、RAWスプールのWindows(R)系OSの印刷アーキテクチャのシーケンス図の一例である。なお、実際にはGDI34とUIドライバ38、又は、GDI34と描画ドライバ39の間では、不図示の通信が行われているが省略している。GDI34からUIドライバ38へのメッセージはUI系のDDI関数で、描画ドライバ39へのメッセージは描画系DDI関数でそれぞれ通知される。
この図20のS1までにUIドライバ38はユーザが設定した印刷設定を受け付けており、ユーザが印刷開始を操作するとアプリケーションがDEVMODEに格納された印刷設定を取得する。
S1: アプリケーションはまず、GDI34に印刷準備開始を指示する。具体的には、アプリケーションはCreateDC()関数で印刷設定を引数にしてGDI34をコールする。
S1.1:GDI34はAPIに対応するDDIをコールすることで、描画ドライバ39に印刷設定を送出する。CreateDC()の引数でアプリーションがGDI34に渡した印刷設定が、DrvEnablePDEV()の引数に格納され描画ドライバ39に通知される。この後、描画ドライバ39は、ジョブが終了するまで(デバイスコンテキストが消去されるまで)印刷設定を参照することができる。
S2:GDI34が印刷準備完了をアプリケーションに通知すると、アプリケーションはGDI34に印刷開始を指示する。具体的には、アプリケーションはStartDoc()関数でDocINFOなどを引数にしてGDI34をコールする。
S2.1:GDI34はUIドライバ38に印刷開始を指示する。具体的にはDrvDocumentEvent()DOCUMENTEVENT_STARTDOCPRE()をUIドライバ38に送出する。
S2.2:GDI34は描画ドライバ39に印刷開始を指示する。具体的にはDrvStartDoc()関数を描画ドライバ39に送出する。OS10は、CreateDC()関数により所定のタイミングでJobIDを生成している。GDI34はDrvStartDoc()関数の引数にJobIDを設定するので、描画ドライバ39はJobIDを参照できるようになる。
S2.3: 同様にGDI34はUIドライバ38に印刷開始を指示する。具体的にはDrvDocumentEvent()DOCUMENTEVENT_STARTDOCPOST()をUIドライバ38に送出する。GDI34はこの関数の引数にJobIDを設定するので、UIドライバ38はJobIDを参照できるようになる。
S2.3.1: ここでUIドライバ38は、印刷設定に印刷開始指示後の印刷設定の変更を受け付ける設定があることを検出する。このため、UIドライバ38は、ポップアップ表示の処理を開始する。描画ドライバ39と直接通信できないので、GDI34にExtEscape()を送出する。
S2.3.1.1:GDI34は描画ドライバ39にDrvEscape()を通知する。描画ドライバ39はGDI34を介して保持している印刷設定をUIドライバ38に送出する。
S2.4:ExtEscape()の処理によりUIドライバ38は、印刷設定を取得できたことになる。印刷設定に、印刷開始指示後(印刷中)に印刷設定を変更するための印刷ダイアログの表示指示が設定される場合、UIドライバ38は図1、2のような印刷ダイアログを表示し、ユーザによる印刷設定の変更を受け付ける。
S2.3.2:ユーザが印刷ダイアログを閉じることで、UIドライバ38はSendRecvBidiDataFromPort()::setで、JobIDをキーとし、ユーザが変更した印刷設定をLanguageMonitor32に送出する(「::」は"DOCUMENTEVENT"を省略したことを意味する)。これにより、LanguageMonitor32はJobIDと印刷設定を対応づけて保持することができる。この時、ユーザがダイアログを"OK"又は"キャンセル"どちらで閉じたのかという内容も送出される。
S3: GDI34が印刷開始完了をアプリケーションに通知すると、アプリケーションはページ単位の処理を繰り返す。まず、アプリケーションはGDI34に新しいページの印刷データを受け入れるよう指示する。具体的には、アプリケーションはStartPage()をGDI34に送出する。
S3.1:GDI34はDrvStartPage()を描画ドライバ39に送出する。
S3.1.1: 描画ドライバ39は、一番最初のDrvStartPage()のDDIコールを受けた時のみ、保持していたJobIDをキーとしてSendRecvBidiDataFromPort()::getでLanguageMonitor32に印刷設定を要求する。ここで、LanguageMonitor32には、S2.3.2でユーザが"OK"又は"キャンセル"のどちらで閉じたかの情報を保持している。描画ドライバ39は、"OK"でユーザが閉じていれば、印刷設定に基づき印刷データを生成する。"キャンセル"で閉じていれば、プリンタやFAX装置にデータを送信しないようにする。
S4:アプリケーション31は、描画ドライバ39から応答を取得すると、描画関数(文書データ)をGDI34に送出する。
S4.1:GDI34は、描画関数(文書データ)を描画ドライバ39に送出する。描画ドライバ39は印刷設定に従って文書データを印刷データに変換する。
以降の手順は従来と同様なので省略する。
このように描画ドライバ39はLanguageMonitor32から、JobIDにより一意に指定される印刷設定を取得することができる。すなわち、RAWスプールにおいて印刷開始後に印刷設定を変更しても、上書きされるようなおそれがない。
図21は、EMFスプールのWindows(R)系OSの印刷アーキテクチャのシーケンス図の一例である。なお、実際にはGDI34とUIドライバ38、又は、GDI34と描画ドライバ39の間では、不図示の通信が行われているが省略している。
この図21のS1までにUIドライバ38はユーザが設定した印刷設定を受け付けており、ユーザが印刷開始を操作するとアプリケーションがDEVMODEに格納された印刷設定を取得する。
S1: アプリケーションはまず、GDI34に印刷準備開始を指示する。具体的には、アプリケーションはCreateDC()関数で印刷設定を引数にしてGDI34をコールする。
S1.1:GDI34はAPIに対応するDDIをコールすることで、描画ドライバ39に印刷設定を送出する。CreateDC()の引数でアプリーションがGDI34に渡した印刷設定が、DrvEnablePDEV()の引数に格納され描画ドライバ39に通知される。この後、描画ドライバ39は、ジョブが終了するまで(デバイスコンテキストが消去されるまで)印刷設定を参照することができる。
S2:GDI34が印刷準備完了をアプリケーションに通知すると、アプリケーションはGDI34に印刷開始を指示する。具体的には、アプリケーションはStartDoc()関数でDocINFOなどを引数にしてGDI34をコールする。
S2.1:GDI34はUIドライバ38に印刷開始を指示する。具体的にはDrvDocumentEvent()DOCUMENTEVENT_STARTDOC()をUIドライバ38に送出する。
S2.2: GDI34はUIドライバ38にJobIDを送出する。具体的にはDrvDocumentEvent()DOCUMENTEVENT_STARTDOCPOST()をUIドライバ38に送出する。GDI34はこの関数の引数にJobIDを設定するので、UIドライバ38はJobIDを参照できるようになる。この時点では描画ドライバ39はJobIDを取得していない。
S2.2.1: ここでUIドライバ38は、印刷設定に印刷開始指示後の印刷設定の変更を受け付ける設定があることを検出する。このため、UIドライバ38は、ポップアップ表示の処理を開始する。UIドライバ38は、デバイスコンテキストを引数として、GDI34に対しExtEscape()をコールする。
S2.2.1.1:GDI34は、DrvEcape()のDDIコールを描画ドライバ39に送出することで、描画ドライバ39が保持している印刷設定を要求する。描画ドライバ39はGDI34を介して保持している印刷設定をUIドライバ38に送出する。
S2.4:ExtEscape()の処理によりUIドライバ38は、印刷設定を取得できたことになる。印刷設定に、印刷開始指示後(印刷中)に印刷設定を変更するための印刷ダイアログの表示指示が設定される場合、UIドライバ38はユーザによる印刷設定の変更を受け付ける。
S2.2.2:ユーザが印刷ダイアログを閉じることで、UIドライバ38はSendRecvBidiDataFromPort()::setで、JobIDをキーとし、ユーザが変更した印刷設定をLanguageMonitor32に送出する。これにより、LanguageMonitor32はJobIDと印刷設定を対応づけて保持することができる。この時、ユーザがダイアログを"OK"又は"キャンセル"どちらで閉じたのかという内容も送出される。S3〜S6について従来と同様なので省略する。ここまででアプリケーションプロセスでの印刷(EMFデータの生成)が終了する。
この後、スプーラ35のプロセスで再度印刷処理がかかり、ここでEMFデータからRAWデータへ変換される。OS10はアプリケーションとGDI34の通信を監視して、所定のタイミングになると(例えばStartPage()の後)、スプーラ35にプロセスを開始させる。
S7:スプーラ35は、プリントプロセッサ41に印刷準備開始を指示する。
S7.1:プリントプロセッサ41はGDI34に印刷準備開始を指示する。
S7.1.1:GDI34は描画ドライバ39に印刷設定を送出する。具体的には、CreateDC()の引数でアプリーションがGDI34に渡した印刷設定が、DrvEnablePDEV()の引数に格納され描画ドライバ39に通知される。この後、描画ドライバ39は、ジョブが終了するまで(デバイスコンテキストが消去されるまで)印刷設定を参照することができる。
S7.1.2:GDI34は描画ドライバ39に印刷開始を指示する。具体的にはDrvStartDoc()関数を描画ドライバ39に送出する。OS10は、CreateDC()関数により所定のタイミングでJobIDを生成している。GDI34はDrvStartDoc()関数の引数にJobIDを設定するので、描画ドライバ39はJobIDを参照できるようになる。
S7.2:以降、プリントプロセッサ41はページ単位の処理を繰り返す。まず、プリントプロセッサ41はGDI34に新しいページの印刷データを受け入れるよう指示する。具体的には、プリントプロセッサ41はGdiStartPageEMF()をGDI34に送出する。
S7.2.1:GDI34はDrvStartPage()を描画ドライバ39に送出する。
S7.2.1.1: 描画ドライバ39は、一番最初のDrvStartPage()のDDIコールを受けた時のみ、保持していたJobIDをキーとしてSendRecvBidiDataFromPort()::getでLanguageMonitor32に印刷設定を要求する。ここで、LanguageMonitor32には、S2.2.2の印刷ダイアログをユーザが"OK"又は"キャンセル"のどちらで閉じたかの情報を保持している。描画ドライバ39は、"OK"でユーザが閉じていれば、印刷設定に基づき印刷データを生成する。"キャンセル"で閉じていれば、プリンタやFAXにデータを送信しないようにする。
S7.2.2:GDI34は、描画関数(文書データ)を描画ドライバ39に送出する。描画ドライバ39は印刷設定に従って文書データを印刷データに変換する。
S7.2.3:GDI34は描画ドライバ39に1ページ分の書き込みが終了したことを通知する。具体的には、GDI34はDrvSendPage()を描画ドライバ39に送出する。
以降はページ単位の繰り返しとなる。
すなわち、EMFスプールにおいて印刷開始後に印刷設定を変更しても、上書きされるようなおそれがない。
なお、図20,21では、印刷のシーケンスがスプール形式によって異なるため、差異があるように見える。
しかし、描画ドライバ39の
・DrvEnablePDEV()
・DrvStartDoc()
・DrvStartPage()
・DrvEscape()
UIドライバ38の
・DrvDocumentEvent()DOCUMENTEVENT_STARTDOCPOST()
LanguageMonitor32の
・SendRecvBidiDataFromPort()::set
・SendRecvBidiDataFromPort()::get
の各関数内で、行っている処理は、RAWスプールでもEMFスプールでも全く同じ処理である。したがって、本実施形態の印刷設定の管理方法はスプール形式によらず、実現可能であり、複数のアプリケーションが作動する環境でも、印刷開始後にユーザが印刷設定を変更することを可能にできる。
本実施例では、Point&Print環境においてLanguageMonitor32を利用した印刷設定の管理方法について説明する。
図22は、Point&Print環境を備えた印刷システムの概略構成図の一例を示す。4台のクライアントPCがネットワークを介してサーバPCと接続されている。サーバPC110にはプリンタ200が接続されているが、プリンタ200はネットワークに接続されていてもよい。
サーバPC110にはプリンタドライバ30が登録されており、サーバPC110が各クライアントPCにプリンタドライバ30をコピーして配布するので、ユーザはプリンタドライバ30を容易にインストールすることができる。なお、以降は、クライアントPC1がサーバPC110に接続し、Point&PrintによりプリンタドライバAをインストールしたものとする。
Point&Print環境のサーバサイドレンダリングでは、クライアントPCがユーザの印刷設定を受け付け、サーバPC110が描画処理を行うため、印刷設定などを共有することが困難である。
これに対し、本実施例ではOS10が提供する印刷アーキテクチャの内部のLanguageMonitor32を利用してクライアントPCとサーバPC110が印刷設定を交換するので、サーバPC110はクライアントPCから印刷アーキテクチャ内の処理で印刷設定を取得できる。よって、ユーザは印刷開始後に印刷設定を変更しても、サーバPC110は変更後の印刷設定に基づき描画処理できる。
図23は、Point&Print環境におけるLanguageMonitor32の位置づけを説明する図の一例である。LanguageMonitor32はWindows(R)系OSの印刷アーキテクチャの中に組み込まれる一モジュールである。このため、Point&PrintによりクライアントPC側がUIドライバ38の処理を、サーバPC側が描画ドライバ39の処理を受け持ったとしても、LanguageMonitor32はサーバPC側で1つだけ機能する。このため、クライアントPCのプリンタドライバ30とサーバPC110のプリンタドライバ30は1つのLanguageMonitor32にアクセスする。すなわち、クライアントPCのOS10とサーバPCのOS10は、クライアントPCのUIドライバ38がLanguageMonitor32にアクセスする場合、クライアントPCとサーバPC110の通信を確立する(例えば、RPC(Remote Procedure Call)を利用する)。そして、UIドライバ38がクライアントPCのLanguageMonitor32にアクセスしているように見せる。
このようにクライアントPCとサーバPC110が同じWindows(R)系のOS10をインストールしているので、Windows(R)系OSの印刷アーキテクチャのLanguageMonitor32を共通に利用できる。このため、メーカ独自で開発したモジュールなどで生じやすいアクセス権限や通信エラーなどが起こりにくい。また、同様の理由で、OS10との親和性も高い。
なお、Point&Printでもスプール形式にはRAWスプールとEMFスプールがあるが、RAWスプールの場合、サーバサイドレンダリングが存在しない。RAWスプールはアプリケーションのプロセスなので、レンダリング場所が制限されるためである。
その他の場合、RAWスプールのクライアントサイドレンダリング、EMFスプールのクライアントサイドレンダリング、及び、EMFスプールのサーバサイドレンダリング、のいずれの場合も、図23のようにLanguageMonitor32が利用される。
図24は、Point&Print環境におけるJobIDについて説明する図の一例である。クライアントPCがRPCでサーバPC110と接続されている場合、クライアントPCからサーバPC110のプリンタに対してハンドルを取得すると、セッションが確立される。サーバPC110はセッションが確立されるとJobIDを生成し、クライアントPCに通知する。したがって、RAWスプールのクライアントサイドレンダリング、EMFスプールのクライアントサイドレンダリング、及び、EMFスプールのサーバサイドレンダリング、のいずれの場合もサーバPC110がJobIDを生成する。なお、JobIDの生成タイミングは、実施例1と同様である。
図24では、
クライアントPC1がアプリケーションAを
クライアントPC2がアプリケーションA、Bを
クライアントPC3がアプリケーションCを
それぞれ実行している。各アプリケーションは任意のタイミングで印刷開始を指示する。
印刷開始命令1:クライアントPC2+アプリケーションA
印刷開始命令2:クライアントPC1+アプリケーションA
印刷開始命令3:クライアントPC3+アプリケーションC
印刷開始命令4:クライアントPC2+アプリケーションB
サーバPC110のOS10は、印刷開始命令1〜4に一意のJobID1〜4を付与する。すなわち、1台のクライアントPCが単一のアプリケーションから印刷を開始しても、1台のクライアントPCが複数のアプリケーションから印刷を開始しても、1台のクライアントPCが単一のアプリケーションから複数回印刷を開始しても、サーバPC110は重複しないJobIDを付与する。
実施例1と同様に、UIドライバ38は、クライアントPCがサーバPC110から取得したJobIDを、GDI34のDDIコールであるDrvStartDoc()の引数により受け取ることができる。描画ドライバ39はGDI34から送出されたDrvStartDoc()の引数でJobIDを受け取ることができる。
図25は、Point&Print環境におけるRAWスプールの印刷手順を模式的に説明する図の一例である。Point&Print環境においてユーザがRAWスプールに設定すると(サーバサイドレンダリングは設定できない)、クライアントPCで描画処理(RAWデータの生成)が行われる。
1.アプリケーションがGDI34を呼び出す。この時、サーバPC110がサーバにとって一意のJobIDを付与し、クライアントPCに返す。
2.GDI34がプリンタドライバ30を呼び出す。
3.プリンタドライバ30の描画ドライバ39はGDI34からDrvStartDoc()の引数によりJobIDを取得する。また、プリンタドライバ30のUIドライバ38はGDI34からDrvDocumentEvent()DOCUMENTEVENT_STARTDOCPOST()によりJobIDを取得する。UIドライバ38が印刷ダイアログを表示すると、ユーザは印刷設定を変更することができる。UIドライバ38は描画ドライバ39からDrvEscape()で取得した印刷設定を、LanguageMonitor32にSendRecvBidiDataFromPort()::setする。その後、ページ単位の印刷が始まると、描画ドライバ39はLanguageMonitor32からSendRecvBidiDataFromPort()::getで印刷設定を取得する。
4.描画ドライバ39は必要であれば描画処理を行い、スプーラ35に印刷データを送出する。スプーラ35は印刷データ(RAWデータ)をスプールする。
5.スプーラ35はRPCにより印刷データをサーバPC110に送信する。
6.サーバPC110の処理に移り、サーバPC110のプリントプロセッサ41は印刷データをスプールする。
7.スプーラはLanguageMonitor32に印刷データを送出する。
8.LanguageMonitor32とポートモニタ33はプリンタに印刷データを送信する。この段階で、LanguageMonitor32は特に処理は行わない。
このように、JobIDがサーバPC110にて生成される以外は、プリンタドライバ30がローカルで動作した場合と同様である。したがって、シーケンス図も図20と同じものになる。よって、LanguageMonitor32を利用したJobIDと印刷設定の管理は、Point&Print環境でRAWスプールした場合でも実現可能である。
図26は、Point&Print環境におけるEMFスプール(クライアントサイドレンダリング)の印刷手順を模式的に説明する図の一例である。Point&Print環境においてユーザがEMFスプールに設定すると、ユーザはレンダリングサイドを選択できる。クライアントサイドレンダリングを選択すると、クライアントPCで描画処理(RAWデータの生成)が行われる。
1.アプリケーションがGDI34を呼び出す。この時、サーバPC110がサーバにとって一意のJobIDを付与し、クライアントPCに返す。
2.GDI34がプリンタドライバ30を呼び出す。プリンタドライバ30のUIドライバ38はGDI34からDrvDocumentEvent()DOCUMENTEVENT_STARTDOCPOST()によりJobIDを取得する。UIドライバ38が印刷ダイアログを表示すると、ユーザは印刷設定を変更することができる。UIドライバ38は描画ドライバ39からDrvEscape()で取得した印刷設定を、LanguageMonitor32にSendRecvBidiDataFromPort()::setする。GDI34は文書データからEMFデータを生成する。
3.スプーラ35は印刷データ(EMFデータ)をスプールする。
4.プリントプロセッサ41はGDI34を呼び出す。
5.GDI34はプリンタドライバ30を呼び出す。
6.プリンタドライバ30の描画ドライバ39はGDI34からDrvStartDoc()の引数によりJobIDを取得する。また、ページ単位の印刷が始まると、描画ドライバ39はLanguageMonitor32からSendRecvBidiDataFromPort()::getで印刷設定を取得する。プリンタドライバの描画ドライバ39はEMFデータからRAWデータを作成する。
7.スプーラ35はRPCにより印刷データ(RAWデータ)をサーバPC110に送信する。
8.サーバPC110の処理に移り、サーバPC110のプリントプロセッサ41は印刷データをスプールする。
9.スプーラは印刷データをLanguageMonitor32に送出する。
10.LanguageMonitor32とポートモニタ33はプリンタに印刷データを送信する。この段階で、LanguageMonitor32は特に処理は行わない。
このように、EMFスプールにおいても、JobIDがサーバPC110にて生成される以外は、プリンタドライバ30がローカルで動作した場合と同様である。クライアントPCとサーバPC110とで処理する場所が別れたとしても、OS10の機能によりクライアントPCのプリンタドライバ30はLanguageMonitor32がクライアントPCにあるかサーバPC110にあるかに関係なくアクセスすることができる。また、印刷開始後にUIドライバ38の印刷ダイアログで変更された印刷設定を描画ドライバ39がLanguageMonitor32経由で取得することが可能である。
したがって、シーケンス図も図21と同じものになる。よって、LanguageMonitor32を利用したJobIDと印刷設定の管理は、Point&Print環境のEMFスプール(クライアントサイドレンダリング)の場合でも実現可能である。
図27は、Point&Print環境におけるEMFスプール(サーバサイドレンダリング)の印刷手順を模式的に説明する図の一例である。Point&Print環境においてユーザがEMFスプールに設定すると、ユーザはレンダリングサイドを選択できる。サーバサイドレンダリングを選択すると、サーバPC110で描画処理(RAWデータの生成)が行われる。
1.アプリケーションがGDI34を呼び出す。この時、サーバPC110がサーバにとって一意のJobIDを付与し、クライアントPCに返す。
2.GDI34がプリンタドライバ30を呼び出す。プリンタドライバ30のUIドライバ38はGDI34からDrvDocumentEvent()DOCUMENTEVENT_STARTDOCPOST()によりJobIDを取得する。UIドライバ38が印刷ダイアログを表示すると、ユーザは印刷設定を変更することができる。UIドライバ38は描画ドライバ39からDrvEscape()で取得した印刷設定を、LanguageMonitor32にSendRecvBidiDataFromPort()::setする。GDI34は文書データからEMFデータを生成する。
3.スプーラ35は印刷データ(EMFデータ)をスプールする。
4.スプーラ35はRPCにより印刷データ(EMFデータ)をサーバPC110に送信する。
5.サーバPC110の処理に移り、サーバPC110のプリントプロセッサ41はGDI34を呼び出す。
6.GDI34はプリンタドライバを呼び出す。
7.プリンタドライバ30の描画ドライバ39はGDI34からDrvStartDoc()の引数によりJobIDを取得する。また、ページ単位の印刷が始まると、描画ドライバ39はLanguageMonitor32からSendRecvBidiDataFromPort()::getで印刷設定を取得する。プリンタドライバの描画ドライバ39はEMFデータからRAWデータを作成する。プリンタドライバは印刷データ(RAWデータ)をスプールする。
8.スプーラ35はLanguageMonitor32に印刷データを送出する。
9.LanguageMonitor32とポートモニタ33はプリンタに印刷データを送信する。この段階で、LanguageMonitor32は特に処理は行わない。
このように、EMFスプールにおいても、JobIDがサーバPC110にて生成される以外は、プリンタドライバ30がローカルで動作した場合と同様である。クライアントPCとサーバPC110とで処理する場所が別れたとしても、OS10の機能によりプリンタドライバ30はLanguageMonitor32がクライアントPCにあるかサーバPC110にあるかに関係なくアクセスすることができる。また、印刷開始後にUIドライバ38の印刷ダイアログで変更された印刷設定を描画ドライバ39がLanguageMonitor32経由で取得することが可能である。
したがって、シーケンス図も図21と同じものになる。よって、LanguageMonitor32を利用したJobIDと印刷設定の管理は、Point&Print環境のEMFスプール(クライアントサイドレンダリング)の場合でも実現可能である。
31 アプリケーション
32 LanguageMonitor
33 ポートモニタ
34 GDI
35 スプーラ
38 UIドライバ
39 描画ドライバ
100 PC
200 プリンタ
321 データ保持部
322 通信部
400 印刷システム
特開2010−066876号公報

Claims (12)

  1. 操作を受け付ける操作受け付け手段と、
    前記操作受け付け手段が印刷開始又は送信開始の指示を受け付けた後、印刷又は送信の設定条件を表示し変更を受け付ける設定受け付け手段と、
    文書データ提供手段から印刷対象又は送信対象の文書データを取得して前記設定条件に基づき印刷装置の印刷データに変換する画像処理手段と、を有する情報処理装置であって、
    印刷開始又は送信開始の指示によりオペレーティングシステムが生成した印刷処理又は送信処理の識別情報を取得した前記設定受け付け手段が、オペレーティングシステムを介して前記識別情報をキーに前記設定条件を記憶させるLanguageMonitor、を有し、
    オペレーティングシステムから前記識別情報を取得した前記画像処理手段が、前記識別情報をキーにオペレーティングシステムを介して前記LanguageMonitorから前記設定条件を読み出し、該設定条件に基づき文書データを印刷装置の印刷データに変換する、
    ことを特徴とする情報処理装置。
  2. 前記設定受け付け手段が、印刷開始又は送信開始の指示を受け付けた後、印刷又は送信の設定条件を表示する場合、前記設定受け付け手段はオペレーティングシステムの所定のAPI関数をコールすることで、前記画像処理手段から前記設定条件を取得する、
    ことを特徴とする請求項1記載の情報処理装置。
  3. 前記設定受け付け手段は、印刷又は送信の前記設定条件を表示した後、前記操作受け付け手段が受け付けた印刷実行若しくは送信実行、又は、印刷中止若しくは送信中止の操作結果を取得し、前記設定条件と共に前記LanguageMonitorに記憶し、
    前記画像処理手段が、前記LanguageMonitorから読み出した前記操作結果が印刷中止若しくは送信中止である場合、文書データの印刷データへの変換を中止する、
    ことを特徴とする請求項1又は2記載の情報処理装置。
  4. 記設定受け付け手段は、オペレーティングシステムの所定のAPI関数をコールすることで、前記LanguageMonitorに前記識別情報をキーにして前記設定条件を記憶する、
    ことを特徴とする請求項1〜3いずれか1項記載の情報処理装置。
  5. 前記画像処理手段は、オペレーティングシステムの所定のAPI関数をコールすることで、前記識別情報をキーにして前記LanguageMonitorから前記設定条件を読み出す、
    ことを特徴とする請求項4記載の情報処理装置。
  6. オペレーティングシステムは、前記操作受け付け手段が印刷開始又は送信開始の指示を受け付ける毎に、当該情報処理装置内で一意の前記識別情報としてJobIDを生成する、
    ことを特徴とする請求項1〜5いずれか1項記載の情報処理装置。
  7. オペレーティングシステムは、異なる前記文書データ提供手段が提供した文書データの印刷処理又は送信処理に対し一意の前記識別情報を生成し、
    同じ前記文書データ提供手段が提供した異なる文書データの印刷処理又は送信処理に対し一意の前記識別情報を生成し、
    同じ前記文書データ提供手段が提供した同じ文書データの異なる印刷処理又は送信処理に対し一意の前記識別情報を生成する、
    ことを特徴とする請求項6記載の情報処理装置。
  8. 前記操作受け付け手段が印刷開始又は送信開始の指示を受け付けた後、オペレーティングシステムが印刷装置に依存しない中間印刷データを生成するまでに、前記設定受け付け手段が、前記識別情報をキーにして前記設定条件を前記LanguageMonitorに記憶しておき、
    オペレーティングシステムが前記文書データ提供手段を印刷処理又は送信処理から開放した後、
    オペレーティングシステムに呼び出された前記画像処理手段が、前記識別情報をキーに前記LanguageMonitorから前記設定条件を読み出す、
    ことを特徴とする請求項1〜7いずれか1項記載の情報処理装置。
  9. 第1の情報処理装置、第2の情報処理装置、及び、印刷装置がネットワークを介して接続されたシステムにおいて、
    操作を受け付ける操作受け付け手段と、
    前記操作受け付け手段が印刷開始又は送信開始の指示を受け付けた後、印刷又は送信の設定条件を表示し変更を受け付ける設定受け付け手段と、
    文書データ提供手段から印刷対象又は送信対象の文書データを取得して前記設定条件に基づき印刷装置の印刷データに変換する画像処理手段と、
    印刷開始又は送信開始の指示により前記第2の情報処理装置のオペレーティングシステムが生成した印刷処理又は送信処理の識別情報を取得した前記設定受け付け手段が、前記第1の情報処理装置及び前記第2の情報処理装置のオペレーティングシステムを介して前記識別情報をキーにして前記設定条件を記憶させる、前記第2の情報処理装置に設けられたLanguageMonitorと、を有し、
    前記第2の情報処理装置のオペレーティングシステムから前記識別情報を取得した前記画像処理手段が、少なくとも前記第2の情報処理装置のオペレーティングシステムを介して前記識別情報をキーに前記LanguageMonitorから前記設定条件を読み出し、該設定条件に基づき文書データを印刷装置の印刷データに変換する、
    ことを特徴とするシステム。
  10. 前記操作受け付け手段、前記設定受け付け手段、及び、前記画像処理手段を前記第1の情報処理装置が有し、前記第1の情報処理装置は印刷データを前記第2の情報処理装置に送信する、ことを特徴とする請求項9記載のシステム。
  11. 前記操作受け付け手段、及び、前記設定受け付け手段を前記第1の情報処理装置が有し、前記画像処理手段を前記第2の情報処理装置が有し、
    前記第1の情報処理装置は、前記第1の情報処理装置のオペレーティングシステムが文書データから変換した印刷装置に依存しない中間印刷データを前記第2の情報処理装置に送信し、
    前記画像処理手段は、前記識別情報をキーに前記第2の情報処理装置の前記LanguageMonitorから前記設定条件を読み出し、該設定条件に基づき中間印刷データを印刷装置の印刷データに変換する、
    ことを特徴とする請求項9記載のシステム。
  12. 操作を受け付ける操作受け付け手段、を有する情報処理装置に、
    前記操作受け付け手段が印刷開始又は送信開始の指示を受け付けた後、印刷又は送信の設定条件を表示し変更を受け付ける設定受け付けステップと、
    印刷開始又は送信開始の指示によりオペレーティングシステムが生成した印刷処理又は送信処理の識別情報を設定モジュールが取得する識別情報受け付けステップと、
    オペレーティングシステムを介して、前記識別情報をキーにして前記設定条件をLanguageMonitorに記憶させるステップと、
    オペレーティングシステムから画像処理モジュールが前記識別情報を取得するステップと、
    前記画像処理モジュールが、前記識別情報をキーにオペレーティングシステムを介して前記LanguageMonitorから前記設定条件を読み出すステップと、
    前記画像処理モジュールが、文書データ提供手段から提供された印刷対象又は送信対象の文書データを、前記LanguageMonitorから読み出した前記設定条件に基づき印刷装置の印刷データに変換するステップと、
    を実行させるプログラム。
JP2011226153A 2011-10-13 2011-10-13 情報処理装置、システム、プログラム Active JP5857611B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011226153A JP5857611B2 (ja) 2011-10-13 2011-10-13 情報処理装置、システム、プログラム
US13/647,657 US8867077B2 (en) 2011-10-13 2012-10-09 Information processing apparatus, system
CN201210387450.1A CN103218183B (zh) 2011-10-13 2012-10-12 信息处理装置及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011226153A JP5857611B2 (ja) 2011-10-13 2011-10-13 情報処理装置、システム、プログラム

Publications (2)

Publication Number Publication Date
JP2013088869A JP2013088869A (ja) 2013-05-13
JP5857611B2 true JP5857611B2 (ja) 2016-02-10

Family

ID=48085804

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011226153A Active JP5857611B2 (ja) 2011-10-13 2011-10-13 情報処理装置、システム、プログラム

Country Status (3)

Country Link
US (1) US8867077B2 (ja)
JP (1) JP5857611B2 (ja)
CN (1) CN103218183B (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5584556B2 (ja) * 2010-08-18 2014-09-03 キヤノン株式会社 画像読取システム、画像読取装置、それらの制御方法、及びプログラム
JP5360106B2 (ja) 2011-03-25 2013-12-04 ブラザー工業株式会社 情報処理プログラム、情報処理装置、および情報処理方法
JP5919930B2 (ja) * 2012-03-21 2016-05-18 株式会社リコー プログラム、情報処理装置、記憶媒体
JP6115340B2 (ja) 2012-08-29 2017-04-19 株式会社リコー 情報処理装置、プリントシステムおよびプログラム
US20140207973A1 (en) * 2013-01-18 2014-07-24 Xerox Corporation Systems and methods for auto-configuring installable device options in a windows print queue
US9678697B2 (en) 2013-02-28 2017-06-13 Xerox Corporation Systems and methods of displaying a printer driver user interface
JP6089808B2 (ja) * 2013-03-11 2017-03-08 ブラザー工業株式会社 情報処理装置及びネットワークシステム
JP6083266B2 (ja) 2013-03-11 2017-02-22 ブラザー工業株式会社 情報処理装置及びネットワークシステム
JP6183025B2 (ja) 2013-07-23 2017-08-23 ブラザー工業株式会社 情報処理プログラム、情報処理装置、および情報処理装置の制御方法
JP6331910B2 (ja) 2013-09-17 2018-05-30 株式会社リコー 情報処理装置、情報処理システム、及びプログラム
JP6229390B2 (ja) * 2013-09-17 2017-11-15 株式会社リコー 画像処理制御プログラム、情報処理装置及び画像処理システム
US9235382B2 (en) * 2013-09-20 2016-01-12 Microsoft Technology Licensing, Llc Input filters and filter-driven input processing
US9852482B2 (en) * 2014-03-05 2017-12-26 International Business Machines Corporation Utility consumption advisor
US9948798B2 (en) 2014-03-06 2018-04-17 Canon Kabushiki Kaisha Method of managing a facsimile transmission
JP6447215B2 (ja) 2014-03-10 2019-01-09 株式会社リコー 情報配信システム、情報処理装置、情報配信方法及びプログラム
CN105335428A (zh) * 2014-08-08 2016-02-17 国家电网公司 数据转化方法和装置
JP2017004064A (ja) * 2015-06-04 2017-01-05 株式会社リコー 情報処理システム、情報処理装置、適用方法及びプログラム
JP6531581B2 (ja) 2015-09-10 2019-06-19 株式会社リコー 情報配信システム、情報処理装置、情報配信方法及びプログラム
JP2017102901A (ja) 2015-11-19 2017-06-08 株式会社リコー プログラム、情報処理装置、設定方法および情報処理システム
JP6597432B2 (ja) * 2016-03-18 2019-10-30 株式会社リコー 情報処理装置、情報処理方法およびプログラム
US10275192B2 (en) 2016-09-08 2019-04-30 Ricoh Company, Ltd. Information processing apparatus, image processing system, and printer driver
US10194038B2 (en) * 2016-09-15 2019-01-29 Ricoh Company, Ltd. Information processing apparatus, information processing method, and information processing system
JP6834402B2 (ja) 2016-11-24 2021-02-24 株式会社リコー 情報処理装置、情報処理システム、情報処理方法、及びプログラム
US10338857B2 (en) 2016-11-24 2019-07-02 Ricoh Company, Ltd. Information processing apparatus, information processing system, and information processing method
CN108469956B (zh) * 2017-02-23 2022-01-11 京瓷办公信息***株式会社 图像形成装置、管理服务器和信息处理方法
US10191697B2 (en) 2017-03-17 2019-01-29 Ricoh Company Ltd. Information processing apparatus, information processing system, and information processing method
JP7099039B2 (ja) 2018-05-10 2022-07-12 富士フイルムビジネスイノベーション株式会社 画像形成システム、端末装置及びプログラム
JP7259326B2 (ja) * 2018-12-28 2023-04-18 株式会社リコー 情報処理装置、プログラム、画像形成システム、及び画像形成方法
JP2021193502A (ja) * 2020-06-08 2021-12-23 キヤノン株式会社 情報処理方法、情報処理装置およびプログラム

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7187458B2 (en) * 2001-12-27 2007-03-06 Kabushiki Kaisha Toshiba Printer
JP2004032704A (ja) * 2002-05-09 2004-01-29 Canon Inc 画像形成装置、その制御方法、プログラム、記憶媒体、印刷システムに好適な方法および印刷システム
US20050073708A1 (en) * 2003-10-01 2005-04-07 Oh Myoung-Jin Method of reporting print option in printing system
JP2005182396A (ja) * 2003-12-18 2005-07-07 Oki Data Corp 画像形成装置
JP4996050B2 (ja) * 2004-10-29 2012-08-08 キヤノン株式会社 印刷装置、及びその制御方法
JP4241576B2 (ja) * 2004-11-05 2009-03-18 ブラザー工業株式会社 画像処理システム、画像処理装置、及びサーバ
JP4659531B2 (ja) 2005-06-28 2011-03-30 キヤノン株式会社 ジョブ状態監視システム、ジョブ状態監視方法、プログラム及び記憶媒体
JP2007011700A (ja) * 2005-06-30 2007-01-18 Brother Ind Ltd 情報処理装置、通信システム、管理装置、及び、プログラム
JP2007122473A (ja) 2005-10-28 2007-05-17 Brother Ind Ltd 文書管理システム、および文書管理システム用プログラム
JP5039422B2 (ja) * 2006-06-19 2012-10-03 キヤノン株式会社 印刷装置、印刷装置の制御方法、コンピュータプログラム
JP4229955B2 (ja) * 2006-07-06 2009-02-25 シャープ株式会社 画像形成装置、画像形成方法、及びプログラム
JP4858271B2 (ja) * 2007-03-30 2012-01-18 ブラザー工業株式会社 ネットワークシステムとネットワークデバイス
JP5132361B2 (ja) * 2008-02-28 2013-01-30 キヤノン株式会社 情報処理装置、情報処理方法、プログラム及び記憶媒体
JP5094627B2 (ja) * 2008-08-08 2012-12-12 キヤノン株式会社 情報処理装置、方法、制御プログラム
JP5245661B2 (ja) * 2008-09-09 2013-07-24 株式会社リコー 印刷制御装置、プログラム、記録媒体及び印刷制御方法
JP5234016B2 (ja) * 2009-02-25 2013-07-10 株式会社リコー 画像形成装置及び画像形成方法
JP5267337B2 (ja) 2009-06-01 2013-08-21 株式会社リコー プログラム、記憶媒体、情報処理装置、プリンタ装置およびシステム
JP5532770B2 (ja) 2009-09-08 2014-06-25 株式会社リコー 印刷制御プログラム、情報処理装置、および印刷制御プログラムを記録したコンピュータ読み取り可能な記録媒体
JP5793830B2 (ja) 2010-05-18 2015-10-14 株式会社リコー 情報処理装置、印刷制御プログラム、および記憶媒体
JP2012118824A (ja) 2010-12-01 2012-06-21 Ricoh Co Ltd 印刷プログラム、情報処理装置および記録媒体
US8823979B2 (en) * 2011-02-23 2014-09-02 Ricoh Company, Ltd Pseudo jobs in print queues for print job scheduling

Also Published As

Publication number Publication date
CN103218183A (zh) 2013-07-24
US8867077B2 (en) 2014-10-21
CN103218183B (zh) 2015-12-02
JP2013088869A (ja) 2013-05-13
US20130094056A1 (en) 2013-04-18

Similar Documents

Publication Publication Date Title
JP5857611B2 (ja) 情報処理装置、システム、プログラム
US10152332B2 (en) Information processing apparatus, information processing method, and storage medium
JP5919930B2 (ja) プログラム、情報処理装置、記憶媒体
KR102549370B1 (ko) 정보 처리 장치, 제어 방법 및 프로그램
JP6331910B2 (ja) 情報処理装置、情報処理システム、及びプログラム
JP4810318B2 (ja) ポートモニタプログラム、データ処理方法、情報処理装置、及び記憶媒体
JP3720740B2 (ja) 分散印刷システム、分散印刷制御方法、記憶媒体、及びプログラム
US7907313B2 (en) Management of multiple printer drivers
JP2017102901A (ja) プログラム、情報処理装置、設定方法および情報処理システム
JP2020004158A (ja) 情報処理装置、情報処理装置の制御方法、及びプログラム
JP2012128837A (ja) ユニバーサルデバイスドライバ、デバイス制御プログラム、情報処理装置、サーバ装置、及び、方法
US9311036B2 (en) Data processing system and method of data processing
JP5919925B2 (ja) プログラム、情報処理装置、記憶媒体
JP2014041599A (ja) プログラム、情報処理装置、システム
US9081530B2 (en) Control system for forming and outputting image, control apparatus for forming and outputting image, and recording medium storing a control program for forming and outputting image
JP5961937B2 (ja) 情報処理システム
JP2013196259A (ja) データ処理装置、データ処理システムおよびプログラム
JP4262007B2 (ja) ネットワーク装置及びデータ処理システムの制御方法
JP2011090479A (ja) 情報処理装置、情報処理システム、デバイスドライバが記録されたコンピュータ読み取り可能な記録媒体、およびデバイスドライバ
JP2022107793A (ja) 情報処理装置、情報処理装置の制御方法及び印刷設定アプリケーション
JP2019128856A (ja) プリンタードライバーのカスタマイズツール
JP2004157940A (ja) 印刷システム及び印刷制御用プログラム
JP2006171801A (ja) 情報処理装置における管理方法、情報処理装置、プログラム及び記憶媒体
JP2012008792A (ja) 情報処理装置及びプリンタドライバ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140924

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150812

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150818

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151015

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151117

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151130

R151 Written notification of patent or utility model registration

Ref document number: 5857611

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151