JP5919930B2 - プログラム、情報処理装置、記憶媒体 - Google Patents

プログラム、情報処理装置、記憶媒体 Download PDF

Info

Publication number
JP5919930B2
JP5919930B2 JP2012064361A JP2012064361A JP5919930B2 JP 5919930 B2 JP5919930 B2 JP 5919930B2 JP 2012064361 A JP2012064361 A JP 2012064361A JP 2012064361 A JP2012064361 A JP 2012064361A JP 5919930 B2 JP5919930 B2 JP 5919930B2
Authority
JP
Japan
Prior art keywords
setting
application
program
setting condition
print data
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
JP2012064361A
Other languages
English (en)
Other versions
JP2013196503A (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 JP2012064361A priority Critical patent/JP5919930B2/ja
Priority to US13/845,273 priority patent/US9298411B2/en
Priority to CN201310092514.XA priority patent/CN103324451B/zh
Publication of JP2013196503A publication Critical patent/JP2013196503A/ja
Application granted granted Critical
Publication of JP5919930B2 publication Critical patent/JP5919930B2/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/1297Printer code translation, conversion, emulation, compression; Configuration of printer parameters
    • 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/1205Improving or facilitating administration, e.g. print management resulting in increased flexibility in print job configuration, e.g. job settings, print requirements, job tickets
    • 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/1224Client or server resources management
    • G06F3/1225Software update, e.g. print driver, modules, plug-ins, fonts
    • 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)
  • Accessory Devices And Overall Control Thereof (AREA)
  • Facsimiles In General (AREA)

Description

本発明は、情報処理装置に、印刷の設定条件を表示し設定を受け付け、文書データを印刷データに変換させるプログラムに関する。
プリンタドライバを用いた印刷、及び、PC-FAXドライバを用いたFAX送信は次のような手順で行われる。
(1)ユーザがアプリケーションの印刷メニューから印刷設定画面を表示し、印刷条件や送信設定などを設定する(送信条件と印刷条件で設定内容が異なるが、区別せずに印刷設定という)。
(2)ユーザがアプリケーション上で印刷開始指示を行う
プリンタドライバは、(1)で決定された印刷設定をDEVMODE構造体というデータベースを介して(2)で受け取ることにより、その印刷設定に基づいて、アプリケーションから受け取る文書データをプリンタが解釈可能な印刷データに変換する。印刷データをプリンタやFAX装置に送信することで、プリンタは印刷を実行し、FAX装置はFAX送信する。
OS(Operating System)であるWindows(登録商標。以下、省略する)の印刷アーキテクチャでは、プリンタドライバ又はPC-FAXドライバ(以下、単にプリンタドライバという)がアプリケーションから印刷設定を受け取る場合、まず、アプリケーションが、印刷設定をWindowsのAPIを使ってWindowsのGDI(Graphics Device Interface)に対して通知する。GDIはWindows系OSの一部である。
プリンタドライバに対してはGDIから、印刷設定の命令がDDI(Device Driver Interface)で通知される。DDIはI/Fのみ定義されているので、DDI内の実装方法(DDIで呼ばれた場合のプリンタドライの処理)は各メーカ(各プリンタドライバ・PC-FAXドライバ)で設計できる。
しかし、メーカが、プリンタドライバに独自にI/Fを定義したとしてもWindows系OSはそのI/Fを知ることができないため、そのI/Fがコールされることはない。
1.DEVMODE構造体について
印刷設定を格納するDEVMODE構造体は、Public領域とPrivate領域に分かれている。図1は、DEVMODE構造体を説明する図の一例を、図2はDEVMODE構造体の参照について説明する図の一例を示す。Public領域は、OS定義の領域なので、アプリケーションから変更することができる。Public領域には、「印刷方向」「用紙サイズ」などといった、どのようなプリンタドライバでも設定することが必要な項目が存在する。
Private領域はメーカ独自の領域であり、メーカやプリンタドライバ毎にどのような情報を格納するかを定義することができる。アプリケーションやWindows系OSは、Private領域にどのような情報が格納されているかを知ることができないので、Private領域を変更するにはプリンタドライバのUIドライバがPrivate領域の設定を表示して、変更を受け付けるしか方法がない。Private領域には、「印刷方式」「認証」などといったメーカやプリンタ機種ごとの特徴をもった設定項目が存在する。
ユーザは、UIドライバが作成した用紙サイズや部数、両面印刷などの印刷条件を設定し印刷を指示する。ユーザが印刷設定指示の操作を行うと、アプリケーションがGDIコールしてDEVMODE構造体をGDIに送出する。図示するアプリケーションは、例えば文書作成プログラムなどのアプリケーション(例えば、MS−Word:登録商標)である。 GDIは、アプリケーションからDEVMODE構造体を取得すると、DDIコールによりプリンタドライバの描画ドライバを呼び出して、DEVMODE構造体を送出する。
描画ドライバは、GDIから取得したDEVMODE構造体を参照して、アプリケーションによって印刷指示された文書データから、印刷設定を反映した印刷データを作成し、その作成した印刷データをスプーラに送出する。なお、印刷データには描画データ(例えばPDLのデータ)と制御データ(例えばPJLの印刷コマンド)が含まれる。
すなわち、UIドライバと描画ドライバは、いずれもDEVMODE構造体を参照することができ、UIドライバはPrivate領域を表示したり、設定変更を受け付けることができる。
2.自動化ニーズについて
このように、Private領域を変更するには、プリンタドライバが設定画面を表示し、ユーザ操作を受け付けるしか方法がないため、ユーザの操作が必須となってしまう。
しかし、ユーザによる操作なしに、全自動で処理を完了させたい処理も存在する。例えば、このような処理として、帳票印刷やDM(ダイレクトメール)をFAX送信する処理がある。このような処理において、印刷設定は変わらないのに、1つの帳票毎に又は1つの送信文書の度に、ユーザが設定画面を操作してPrivate領域を変更しなければならないとすると、操作性が低下してしまう。
このため、ユーザの操作を伴わず、処理に適したアプリケーションにプリンタドライバのPrivate領域に格納される印刷設定を変更させたいという要求がある。
この要求に対し、メーカによっては、アプリケーションがプリンタドライバと直接、通信することができるように、プリンタドライバの拡張I/Fを提供している(例えば、特許文献1参照。)。ユーザからの要求によっては処理に適したアプリケーションも開発する。
図3は、拡張I/F、アプリケーション、及び、DEVMODE構造体について説明する図の一例である。図3のアプリケーションは、ユーザ側の処理に適したアプリケーション又は少なくとも拡張I/Fを呼び出せるアプリケーションである。アプリケーションは、拡張I/Fを呼び出して、Private領域の印刷設定を変更できる。このため、ユーザがアプリケーションで印刷開始指示を操作した後、ユーザによる操作なしに処理を完了させることができる。
3.DEVMODE構造体に格納される印刷設定について
ところで、プリンタドライバの中には、ユーザによる印刷開始指示後、プリンタに印刷データを送信する前に、設定画面を再度、表示し、印刷設定の変更を受け付けることが可能なものも存在する。
図4は、設定画面の再表示の一例として、機密印刷機能の画面例を示す図である。印刷開始指示後、機密印刷機能により、ユーザIDとパスワードの入力が要求される。ユーザは、ユーザIDとパスワードを入力しないと、OKボタン501を押下できない。ユーザがユーザIDとパスワードを入力してOKボタン501を押下すると、ユーザIDとパスワードがプリンタに送信される。プリンタ本体側にはユーザIDとパスワードの組が予め登録されており、この組み合わせが一致しないとプリンタは印刷しない。この機密印刷機能では、よりセキュリティを高めるために、印刷ごとにパスワードを毎回入力させるようにすることも可能である。なお、ユーザがキャンセルボタン502を押下すると、印刷が中止される。
図5は、PC-FAXドライバの宛先確認機能の画面例を示す図である。印刷開始指示後、PC-FAXドライバは図示する宛先確認機能の画面を表示して、ユーザにFAX送信の宛先(FAX番号)の入力を要求する。FAX送信においては、宛先が送信毎ごとに異なることが多いため、PC-FAXドライバは、誤送信を防ぐためにこのような画面を表示する。
ユーザがFAX番号を入力し、送信ボタン503を押下すると、画像データがFAX装置に送信され、FAX装置がFAXを送信する。なお、ユーザがキャンセルボタン504を押下すると、FAX送信が中止される。
図4,5の設定は、ユーザにパスワードを毎回、入力させることでセキュリティを強化したり、FAXの宛先指定を毎回、確認させることで誤送信を抑制したりするなど、印刷単位ごとに入力や確認を強制させたい場合に使われている。
印刷開始指示後に印刷設定の変更が可能であることは、アプリケーションがUIドライバによって印刷設定(DEVMODE構造体)を決定し、その印刷設定で印刷指示をするという手順を踏まなくてもよくなることを意味する。すなわち、DEVMODE構造体を介さずとも、印刷開始指示後に変更した印刷設定のみを描画ドライバが取得し印刷に利用できればいいということになる。
したがって、印刷設定が格納される場所は、DEVMODE構造体だけとは限らなくなる。実際に、PC-FAXドライバでは、FAXの送信宛先情報などが、DEVMODE構造体以外の構造体やファイルに格納されている。また、全ての設定をDEVMODE構造体以外の構造体等に格納するプリンタドライバも存在する。
図6は、DEVMODE構造体の外に格納され得る印刷設定の一例を示す図である。例えばFAX送信時の宛先情報と印刷時の個人情報が、DEVMODE構造体の外に格納され得る印刷設定である。
また、DEVMODE構造体に印刷設定を格納しなくてもよい情報だから格納しないという以外にも、格納可能な情報でもあえてDEVMODE構造体に印刷設定を格納していない場合もある。
上記のように、DEVMODE構造体は、UIドライバによって印刷設定が格納されたり、グラフィックスドライバによって印刷設定が参照されたりする。格納時・参照時、DEVMODE構造体を渡す起点になっているのはアプリケーションである。実際にはアプリケーションがメモリを確保し、Windows系OSを介してUIドライバに渡し、その中身をUIドライバが埋める。また、アプリケーションがWindows系OSを介して印刷を行うと、グラフィックスドライバがDEVMODE構造体の中身を参照するようになっている。
しかし、このことは、アプリケーションがDEVMODE構造体を破棄しない場合、もともとのユーザが設定した印刷設定が残ってしまい、DEVMODE構造体のファイルが別のユーザに渡される可能性があることを意味する。多くのアプリケーションは、印刷終了後、DEVMODE構造体を破棄するが、まれに破棄しないアプリケーションが存在する。
よって、DEVMODE構造体に、認証情報やパスワードといった個人情報を入れてしまうと、ファイルにその情報が残り、別のユーザに渡ってしまいセキュリティを低下させてしまう。そのため、個人情報はDEVMODE構造体に格納していないプリンタドライバが存在する。
4.Windows系OSの印刷アーキテクチャについて
ところで、Windows系OSの印刷アーキテクチャとして、プリンタドライバの印刷では、RAWスプール形式とEMFスプール形式といった2つのスプール形式が存在する。RAWスプール形式では、アプリケーションのプロセスで、アプリケーションからプリンタドライバが取得した文書データをプリンタが解釈可能なRAWデータに変換する印刷処理を行う。ユーザから見ると印刷処理が完了するまでアプリケーションの操作ができない。
EMFスプール形式では、アプリケーションのプロセスで、アプリケーションからWindows系OSが取得した文書データをプリンタに依存しないEMFデータ形式に変換しスプールする。そして、スプーラプロセスでスプールされたEMFデータをプリンタドライバが、プリンタが解釈可能なRAWデータに変換する印刷処理を行う。ユーザから見ると、アプリケーションのプロセスでEMFデータへの変換が終了した時点で、アプリケーションを操作できるようになる。
いずれの仕組みでも、DDIの実装方法として、印刷開始後に印刷設定画面を表示して印刷設定を表示できるようにすることは可能である。
5.Point & Printについて
次に、プリンタドライバ又はPC-FAXドライバのインストール方式と、印刷開始後の印刷設定の関係について説明する。Windows系OSのプリンタドライバではPoint & Printというインストール形式が存在する。
図7は、Point & Printの概略を説明する図の一例である。ネットワークにプリンタ、サーバPC及びクライアントPCが接続されている。サーバPC及びクライアントPCにWindows系OS(サーバはサーバ用)がインストールされている。
クライアントPCは、このサーバPCをプリントサーバとして、プリンタに対して印刷要求することができる。このようなシステムでは、クライアントPCにはサーバPCと同じプリンタドライバがインストールされている必要がある。ネットワーク上の個々のクライアントPCに、管理者などがプリンタドライバをインストールするには多くの時間と労力を必要とする。
Point & Printではこの不都合を解決する手段として、サーバPCからクライアントPCにプリンタドライバをダウンロードしてインストールすることを可能にしている。これは、Windows系OS標準の機能である。なお、Point & Printによる印刷手順においても、印刷時にはRAWスプール形式とEMFスプール形式が存在する。
Point & Printによりインストールされたプリンタドライバは(EMFスプールの場合)、描画処理(レンダリングともいい、上記の描画ドライバによる処理)をクライアントPCが行うかサーバPCが行うかをユーザが変更することができる。クライアントPC側で描画処理を行うことを「クライアントサイドレンダリング」という。サーバPC側で描画処理を行う「サーバサイドレンダリング」という。
6.64bitOSについて
従来の32bitOSを搭載したクライアントPCが多くのユーザに使用されている状態で、64bitOSも普及し始めている。64bitOSでは原則的に64bitアプリケーションしか動作しないが、すでに流通したり販売された32bitアプリを動作させるため、Windows系OSではWOW64(Windows ON Windows64)という仕組みが提供されている。
しかし、アプリケーションと異なりプリンタドライバは、64bitOS上では64bitで作成されていなければならない。よって、クライアントPCには64bitのプリンタドライバがインストールされている。
32bitアプリがWOW64で動作する場合、印刷は次のように行われる。
・WOW64としてsplwow64.exeが動作する。
・32bitのアプリケーションからの描画命令はsplow64.exeを経由して64bitのプリンタドライバに通知される。
なお、プリンタの共有(Point & Print)のため、Windows系OSでは「代替ドライバ」をインストールすることができる。代替ドライバは、サーバ上にインストールされているプリンタドライバをクライアントPCにインストールする仕組みである。クライアントPCに、プリンタに対応したプリンタドライバがインストールされていない場合、適切なプリンタドライバがインストールされる。この場合、64bitOSに32bitのプリンタドライバを登録することができる。
しかし、従来の技術では以下のような問題があった。
A.拡張I/Fを用いた場合でも、印刷設定を格納できない場合がある。
図3に示したように、プリンタドライバが独自に拡張した拡張I/Fを利用して、アプリケーションが印刷設定を変更する場合、
・アプリケーションがプリンタドライバの拡張I/Fに対してDEVMODE構造体を入力し、
・印刷設定の変更を行った後のDEVMODE構造体を出力として受け取り、
・これを印刷開始時に描画ドライバに渡すDEVMODE構造体とする、
という処理が必要であった。
つまり、拡張I/Fを用いた場合に、DEVMODE構造体以外に印刷設定を格納すると、拡張I/FからDEVMODE構造体以外の印刷設定を取得できないので、DEVMODE構造体に全ての印刷設定を格納する必要がある。
このため、プリンタドライバが個人情報に関わる場合や、印刷開始指示後に印刷設定を決定・変更する場合に好ましい実装といえないおそれがある。このようなプリンタドライバでは、DEVMODE構造体に全ての設定項目を格納することができない。よって、UIドライバに拡張I/Fを追加したとしても印刷設定を格納することができない場合がある。
B.DEVMODE構造体以外で印刷設定を一時的に保持する方法
そこで、ファイルやレジストリや共有メモリ空間などに印刷設定を出力する方法を採用しているプリンタドライバも存在する。
図8は、プリンタドライバの拡張I/FでDEVMODE構造体以外に印刷設定を格納する方法を説明する図の一例である。図8では、設定格納領域という領域に印刷設定の全て又は一部が格納される。
この方法ではDEVMODE構造体に設定を格納しないものを格納できるという点ではA.の問題点を解消するが、DEVMODE構造体を用いないことで別の問題が発生する。
以下の3つのケースである。
1.EMFスプールでの印刷シーケンスのケース
2.Point&Printインストールしたプリンタドライバでの印刷シーケンスのケース
3.64bitOSを使用した場合
1.について、
DEVMODE構造体を使用する方法は、印刷時のDDIコールシーケンスを利用しており、RAWスプールの時は実現可能である。しかし、スプール形式が異なると、Windows系OSから呼ばれるDDIコールシーケンスが変化する。EMFスプールでは、アプリケーションからの文書データをEMFデータに変換する処理と、EMFデータをプリンタが解釈可能な描画データに変換する処理とがある。このため、Windows系OS内部の動作として、2回の印刷処理シーケンスが動作する。
この2回の印刷処理シーケンスのうち、EMFデータに変換する処理と、EMFデータをプリンタが解釈可能なRAWデータに変換する処理では、プロセスが異なってしまう。Windows系OSなどのシステム上では、プロセスの権限(例えば、システム権限とそれ以外)によって、リソースへのアクセス可能/不可能が決まるため、ファイルやレジストリの場所によっては、最終的にプリンタが印刷データを解する際に、拡張I/Fで設定した印刷設定を設定格納領域から取得できない可能性がある。また、最近のWindows系OSではセキュリティの観点から、権限が異なるだけで全くアクセスできない場合もある。
2.について
拡張I/Fを用いる方法は、ローカル環境で、ユーザが使用するPCにプリンタドライバをインストールする方法では実現可能である。
しかし、上述したPoint & Printというインストール形式でインストールされたプリンタドライバではI/Fドライバと描画ドライバが動作する場所が異なる場合がある(サーバサイドレンダリングの場合)。
クライアントサイドレンダリングでは、UIドライバ、描画ドライバともにクライアントPC側で動作するが、サーバサイドレンダリングでは、UIドライバはクライアントPC側で動作し、描画ドライバはサーバPC側で動作をする。このサーバサイドレンダリングでは、そもそも動作するPCが物理的に別であるため、プリンタドライバの拡張I/Fによって設定格納領域(ファイルやレジストリ)に一時格納した印刷設定を描画ドライバが取得できない。
3.について
WOW64は、Windows系OSが提供する仕組みであり、splwow64.exeは印刷を行う時のみ動作する。32bitアプリが64bitの拡張I/Fにアクセスすることは、Windows系OSがサポートする仕組みではないため、splwow64.exeが動作しない。よって、32bitアプリは、64bitの拡張I/Fを有するプリンタドライバを利用することができない。
図9は、以上説明した、外部I/Fを利用した場合の印刷設定の受け渡しの実現可否状況を説明する図の一例である。図示するように、インストール環境がローカルでスプール形式がEMFスプールの場合、インストール環境がPoint&Printでスプール形式がEMFスプールでレンダリング場所がサーバの場合、及び、64bitOS上で32bitアプリが動作する場合、印刷設定の受け渡しが困難である。
本発明は、上記課題に鑑み、どのようなシステム環境においても、プリンタドライバが拡張I/Fを提供し、アプリケーションが拡張I/Fを利用して印刷設定を決定する印刷処理を行うことが可能なプログラムを提供することを目的とする。
本発明は、情報処理装置の動作の基本となる所定のプログラムを介して印刷の第1の設定条件の設定値を受け付ける設定受付プログラムと、アプリケーションから前記所定のプログラムを介して文書データを取得し、前記設定受付プログラムにより受け付けられた第1の設定条件に基づいて印刷データに変換する画像処理プログラムと、を有し、前記設定受付プログラムは、情報処理装置に、前記所定のプログラムを介することなく、前記アプリケーションから第2の設定条件を受け付けるステップと、インタフェースにより受け付けられた第2の設定条件を、前記印刷データに対する処理が可能な印刷データ処理プログラムに出力するステップと、を実行させ、前記画像処理プログラムは、情報処理装置に、 前記アプリケーションからの文書データを印刷データに変換する際に、前記印刷データ処理プログラムから第2の設定条件を受け付けるステップと、前記設定受付プログラムにより受け付けた第1の設定条件と、前記印刷データ処理プログラムから受け付けた第2の設定条件の少なくとも一方に基づき、文書データを印刷データに変換するステップと、を実行させる、ことを特徴とする。
どのようなシステム環境においても、プリンタドライバが拡張I/Fを提供し、アプリケーションが拡張I/Fを利用して印刷設定を決定する印刷処理を行うことが可能なプログラムを提供することができる。
DEVMODE構造体を説明する図の一例である。 DEVMODE構造体の参照について説明する図の一例である。 拡張I/F、設定アプリケーション、及び、DEVMODEについて説明する図の一例である。 プリンタドライバの機密印刷機能の画面例を示す図である。 PC-FAXドライバの宛先確認機能の画面例を示す図である。 DEVMODE構造体の外に格納され得る印刷設定の一例を示す図である。 Point & Printの概略を説明する図の一例である。 プリンタドライバの拡張I/FでDEVMODE構造体以外に印刷設定を格納する方法を説明する図の一例である。 外部I/Fを利用した場合の印刷設定の受け渡しの実現可否状況を説明する図の一例である。 本実施形態のプリンタドライバの概略的な特徴を説明する図の一例である。 印刷システムの概略構成図の一例、及び、クライアントPCのハードウェア構成図の一例である。 クライアントPC及びプリンタドライバの機能ブロック図の一例である。 クライアントPC及びプリンタドライバの機能ブロック図の別の一例である。 プリンタドライバの拡張I/F、アプリケーション及びOSの関係について説明する図の一例である。 Windows系OSの印刷アーキテクチャにおける、描画ドライバとUIドライバについて説明する図の一例である。 LanguageMonitor32の動作を説明する図の一例である。 拡張I/Fへの印刷設定の設定例を説明する図の一例である。 拡張I/Fへの印刷設定の設定例を説明する図の別の一例である。 SendRecvBidiDataFromPort()の書式を説明する図の一例である。 アプリケーションが拡張I/Fを介してUIドライバに印刷(FAX送信)設定する際のシーケンス図の一例である。 拡張I/Fへの印刷設定の設定例を説明する図の一例である。 一括送信の送信手順を説明する図の一例である。 一括送信の送信手順を説明する図の一例である。 一括送信の送信手順を説明する図の一例である。 複数の論理プリンタに対する印刷設定を説明する図の一例である。 Point & Print環境を備えた印刷システムの概略構成図の一例である。 Point & Print環境におけるLanguageMonitor32の作用を説明する図の一例である。 64bitOS上で32bitのアプリケーションが動作する場合のLanguageMonitorの作用を説明する図の一例である。
以下、本発明を実施するための形態について図面を参照しながら説明する。
図10は、本実施形態のプリンタドライバの概略的な特徴を説明する図の一例である。
(1)プリンタドライバのUIドライバは、Windows系OS(Operating System)で定義されたDDI(Device Driver Interface)以外に、独自の拡張I/F(拡張I/Fを提供するブロックを拡張I/F部382としている)をアプリケーション31に提供する。UIドライバ38は、独自の拡張I/F部382で印刷設定の変更を受け付けることができる。
(2)UIドライバ38は、拡張I/F部382で受け取った印刷設定をLanguageMonitor32に保持させる。アプリケーション31がUIドライバを介して設定した印刷設定があればDEVMODE構造体に記憶される。以下では、印刷設定の格納先を区別せずにどちらも印刷設定という。なお、LanguageMonitor32は、プリンタドライバの論理プリンタごとに印刷設定を保持することができる。なお、LanguageMonitorはAPIの一種なので、以降、UIドライバ等が直接、LanguageMonitorに印刷設定するという説明は、APIを介して設定することを意味する。
(3)アプリケーション31が印刷実行指示をWindows系OSに出力すると、プリンタドライバの描画ドライバ39はLanguageMonitor32から印刷設定を読み出す。LanguageMonitor32は、印刷設定を描画ドライバ39に送出する。DEVMODE構造体に印刷設定が登録されていれば、その印刷設定も読み出す。
(4)描画ドライバ39は、取得した印刷設定を反映し、プリンタに対する命令(PJL)やプリンタが印字できる印刷データ(PDL)を生成する。
アプリケーション31が、拡張I/F部382を介して印刷設定を設定するので、DEVMODE構造体に秘匿性の高い情報を格納する必要がない。
LanguageMonitor32を利用することで、印刷アーキテクチャがRAWスプールかEMFスプールかに関係なく、描画ドライバ39が印刷設定を取得できる。すなわち、LanguageMonitor32はWindows系OSの一部の機能なので、プロセスが異なる等の理由でアクセスできなくなるということがない。
また、後述するようにLanguageMonitor32は、Windows系OSがサポートする機能なので、サーバサイドでレンダリングする場合でも、描画ドライバ39はLanguageMonitor32にアクセスすることができる。したがって、クライアントPC(Personal Computer)にPoint & Printでプリンタドライバがインストールされた場合でも、描画ドライバ39が印刷設定を取得できる。
〔構成例〕
図11(a)は印刷システム400の概略構成図の一例を、図11(b)はクライアントPC100のハードウェア構成図の一例をそれぞれ示す。クライアントPC100とプリンタ200がネットワーク300を介して接続されている。プリンタ200は1台のみあればよい。
クライアントPC100がユーザの操作を受け付け、文書作成ソフトなどのアプリケーション31が、GDI、DDI及びプリンタドライバ等を利用して印刷を要求する。プリンタドライバ30は、後述する手順で印刷データを作成してプリンタ200に送信する。プリンタ200は画像形成機能を有していれば、コピー機、複写機、FAX装置などその呼称は問われない。また、プリンタ200は電子写真方式の画像形成機能又はインクジェット方式の画像形成機能のどちらの機能を有していてもよい。また、クライアントPC100とプリンタ200はUSBケーブルなどで直接接続されていてもよい。
クライアントPC100は、それぞれバスで相互に接続されているCPU11、ROM12、RAM13、外部I/F14、通信装置15、入力装置16、表示制御部17及び記憶装置18を有する。CPU11は、OS10、アプリケーション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を記憶している。
OS10はWindows系OSである。Windows系OSのクライアント系には、WindowsNT、Windows98、Windows2000、WindowsMe、WindowsXP、WindowsVista、Windows7、Windows(r)8及びこれ以降のバージョンのOSが含まれる。サーバ系には、Windows 2000 Server、2003 Server、2008 Server及びこれ以降のバージョンのOSが含まれる。本実施例では、Windows系OSを好適例とするが、Windows系OSと同等の機能を有するOSであれば、OS10を制限しない。
記憶媒体20は、例えば、SDカードやUSBメモリなど不揮発性のメモリである。プリンタドライバ30は、記憶媒体20に記録された状態又は不図示のサーバ(Point & Printの場合はサーバPCから)ダウンロードされる態様で配布される。
図12は、クライアントPC100及びプリンタドライバ30の機能ブロック図の一例である。クライアントPC100は、Windows系OS上で動作する、アプリケーション31、プリンタドライバ30、LanguageMonitor32、及び、通信部40を有する。このうち、LanguageMonitor32はWindows系OSにより提供されたため、広義ではWindows系OSの一部である。この他のGDI、スプーラ、プリンタプロセッサなどは省略したが、Windows系OSと共にクライアントPC100にインストールされている。
プリンタドライバ30は、UIドライバ38と描画ドライバ39を有している。さらにUIドライバ38は表示部381及び拡張I/F部382を有する。UIドライバ38の表示部381は、ユーザがアプリケーションに対して文書の印刷操作を入力することで、印刷設定画面(印刷ダイアログと呼ばれることがある)をディスプレイ19に表示する。ユーザは、印刷設定画面に対し、部数や両面などといった設定、「集約」「製本」「変倍」等の設定を行うことができる。また、表示部381は、ユーザが印刷開始指示を入力した後も、印刷設定画面をディスプレイ19に表示して、印刷設定の変更を受け付けることができる。印刷設定は、DEVMODE構造体(以下、DEVMODEという)という構造体(データテーブル)に格納される。DEVMODEはWindows系OS上で動作する各種のプリンタドライバ30に対して印刷条件を共通に設定するためのメンバ変数が定義されたデータ構造である。
また、UIドライバ38は、Windows系OSを介さずアプリケーションからの印刷設定を受け付ける拡張I/F部382を有している。一般に、アプリケーション31がUIドライバ38にアクセスするには、GDIコールするなどして、Windows系OSを介してアクセスする必要がある。拡張I/F部382は、UIドライバ38がアプリケーション31から直接(OSを介さずに)、印刷設定や印刷時の動作設定(後述する一括送信設定など)を受け取るための、プリンタドライバに独自のインタフェースである。
描画ドライバ39は、DEVMODE(に印刷設定が含まれる場合)及び印刷設定(後述する動作設定がある場合は動作設定も)を参照して、アプリケーション31によって印刷対象の文書データから印刷設定を反映した印刷データを作成する。
LanguageMonitor32は、データ保持部321と通信部322を有する。このうち、通信部322は、プリンタドライバ30が通信部40に印刷データを送信する際に、通信を制御するものであり、従来のLanguageMonitor32が有している。通信部322はLanguageMonitor32とクライアントPC100の通信部40との間で、データの送受信制御を行う。通信部322は通信部40を介してプリンタ200からのメッセージを受信することもできる。これに対し、データ保持部321は、印刷設定を記憶する。データ保持部321は、LanguageMonitor32の機能を利用してプリンタドライバ30により実現される。このため、Windows系OSの変更は必要ないか、あったとしてもわずかである。データ保持部321については後述する。
クライアントPC100の通信部40は、プリンタ200との通信を行うブロックで、TCP/IPなどのプロトコルに従う処理を行う。
なお、図12では、UIドライバ38が拡張I/F部382を有しているが、拡張I/F部382は、プリンタドライバに含まれていればよい。このため、図13に示すように、UIドライバ38から独立した構成でもよい。
図14は、プリンタドライバの拡張I/F部382、アプリケーション31及びWindows系OSの関係について説明する図の一例である。UIドライバ38が、本実施形態の特徴部の1つである拡張I/F部382を有さない場合、アプリケーション31とプリンタドライバ(UIドライバ38と描画ドライバ39)は、必ずWindows系OSを介してデータを受け渡す。
本実施形態では、プリンタドライバ30が拡張I/F部382を有することで、アプリケーション31とプリンタドライバ30が直接、データを受け渡すことができる。このため、アプリケーションが直接、プリンタドライバに印刷設定を設定することが可能となる。
図15は、Windows系OSの印刷アーキテクチャにおける、描画ドライバ39とUIドライバ38について説明する図の一例である。Windows系OSのGDI34はDDIコールによりプリンタドライバ30のUIドライバ38と描画ドライバ39を呼び出す。UIドライバ38と描画ドライバ39は、直接相互にやりとりをすることができない。しかし、Windows系OSからのプリンタドライバの呼び出しI/FであるDDIの引数にDEVMODEがあることにより、双方がDEVMODEを参照することができる。
・Windows系OSから呼び出されたUIドライバ38は、ユーザの印刷設定を受け付けDEVMODEに保存する
・DEVMODEは印刷準備開始時にWindows系OSから描画ドライバ39に渡される
すなわち、UIドライバ38は、「印刷設定」を決定し、描画ドライバ39は「印刷設定」を印刷準備開始時に受け取り、印刷設定に基づき印刷コマンドや描画データを生成する。これがWindows系OSの印刷アーキテクチャの基本的な印刷シーケンスとなる。
よって、Windows系OSの印刷アーキテクチャに従っただけのプリンタドライバでは、DEVMODEに格納しない印刷設定を、描画ドライバ39が参照することができない。本実施形態のプリンタドライバ30は、DEVMODEの印刷設定を参照することも、LanguageMonitorに設定された印刷設定を参照することもできる。
図16は、LanguageMonitor32の動作を説明する図の一例である。LanguageMonitor32はプリントプロセッサ41から送信された印刷データを受け取り、通信部40(ポートモニタ42及びポートドライバ43)に送信する。プリントプロセッサ41は、スプーラの機能である。ポートモニタ42は、通信プロトコルに基づく処理を行い、ポートドライバ43に印刷データを送信する。ポートドライバ43は、プリンタ200とクライアントPC100との接続インタフェース(USB,NIC等)を制御して、印刷データをプリンタ200に送信する。
Windows系OSでは、プリンタドライバ30は、Windows系OSが提供するLanguageMonitor32を使用しても、メーカ(プリンタメーカ、FAXメーカ等)が提供するLanguageMonitor32を使用してもよいとされている。本実施形態においても、LanguageMonitor32は汎用品とメーカ製のどちらも使用することができる。
〔適用例〕
図17は、拡張I/F部382への印刷設定の設定例を説明する図の一例である。アプリケーション31は、拡張I/F部382を呼び出してUIドライバ38に印刷設定(正確には送信設定であるが、区別せずに印刷設定という)を設定するために、拡張I/F呼出部311を有している。メーカは拡張I/F部382の仕様(API)を公開しているので、メーカ以外のサードパーティが拡張I/F呼出部311を作成することができる。また、メーカが拡張I/F呼出部311又は拡張I/F呼出部311を有するアプリケーション31を作成して、ユーザに提供することもできる。
アプリケーション31は、拡張I/F呼出部311によりWindows系OSを介さずにプリンタドライバ30の拡張I/F部382を呼び出し、印刷設定を設定する。背景にて説明したように、DEVMODEに設定されないデータとしては秘匿性の高い情報が想定される。図では、セキュリティの観点からDEVMODEに格納すべきではないデータとして、ユーザ名(個人情報)とパスワードを図示している。
UIドライバ38は、拡張I/F部382を介して受け取った、印刷設定をLanguageMonitor32に保存する。この時、後述するSendRecvBidiDataFromPort()というWindows系OSのAPIを使用する。
印刷実行は、アプリケーションからWindows系OSを介して、描画ドライバ39に通知される。すでに印刷設定がLanguageMonitor32に登録されているので、UIドライバ38が設定画面を表示する必要はない。
印刷実行により、DEVMODEに格納された印刷設定は、DEVMODEのまま描画ドライバ39に渡される。さらに、描画ドライバ39は、拡張I/F部382によって設定された印刷設定をLanguageMonitor32から取得する。そして、プリンタが解釈可能な印刷データを生成する。
ここでは、セキュリティに関する印刷設定以外はDEVMODEに格納し、Windows系OSを介してDEVMODEとして描画ドライバ39に渡されるとしたが、すべての印刷設定を拡張I/F部382経由で、LanguageMonitor32に記憶してもよい。図17はDEVMODEが図示されていないように、DEVMODEを全く利用していない例である。
図18は、拡張I/F部382への印刷設定の設定例を説明する図の別の一例である。図18では、文書データを作成するアプリケーションとは別に設定アプリケーション31Aが図示されている。設定アプリケーション31Aは、図17のアプリケーションと同様に、拡張I/F部382を呼び出してUIドライバ38に印刷設定を設定するために、拡張I/F呼出部311を有している。
設定アプリケーション31Aは、プリンタドライバ(PC-FAXドライバ)に印刷設定(送信設定)として、FAX送信の宛先と送信者情報を設定する。UIドライバ38はこれらの印刷設定をLanguageMonitor32に登録する。すなわち、設定アプリケーション31Aは、プリンタドライバに印刷設定を行う専用のアプリであり、アプリケーションA、Bが文書データを作成するアプリケーション31である。設定アプリケーション31Aは、アプリケーションA、Bが文書データを作成する前に、印刷設定しておくことができる。
アプリケーションA,Bが印刷実行すると、描画ドライバ39は、LanguageMonitor32から印刷設定を取得し、プリンタが解釈可能なデータに変換しプリンタに送信する。
図18のように、設定アプリケーション31AがアプリケーションA,Bと別体なのは印刷設定するためだからでなく、プリンタドライバに印刷設定する場合も、設定アプリケーション31AがアプリケーションA,Bと別体になる場合がある。なお、プリンタドライバに印刷設定する場合に、設定アプリケーション31AとアプリケーションA,Bが一体となる場合(図17と同様)となる場合もある。
設定アプリケーション31AがアプリケーションA,Bと別体になる例としては、設定アプリケーション31Aが帳票印刷アプリケーションの場合が挙げられる。
〔 SendRecvBidiDataFromPort() 〕
図19(a)は、SendRecvBidiDataFromPort()の書式を説明する図の一例である。SendRecvBidiDataFromPort()関数は、LanguageMonitor32に実装されるAPIである。プリンタドライバ30と同じようにLanguageMonitor32にもWindows系OSによって決められたI/Fが存在する。SendRecvBidiDataFromPort()関数は、その1つであり、アプリケーションとプリンタ間、アプリケーションとプリントサーバ間の双方向通信をサポートする。
・hPortは、呼び出し元のモジュールによって与えられるポートのハンドルである。
・dwAccessBitは、呼び出し元のモジュールによって与えられ、プリンタ又はプリントサーバへのアクセスを許可するACCESS_MASK構造体である。
・pActionは、呼び出し元のモジュールによって与えられるリクエストアクションである。
・pReqDataは、リクエストデータを有しているPBIDI_REQUEST_CONTAINER構造体のポインタである。
・ppResDataは、レスポンスデータを有しているBIDI_RESPONSE_CONTAINER構造体のアドレスを受け取るメモリ領域へのポインタである。
図19(b)はPBIDI_REQUEST_CONTAINER構造体の書式を示す図の一例である。PBIDI_ RESPONSE _CONTAINER構造体についてもほぼ同様である。PBIDI_REQUEST_CONTAINER構造体は、「bidi requests」のリストを格納するコンテナであり、PBIDI_ RESPONSE _CONTAINER構造体は「bidi RESPONSE」のリストを格納するコンテナである。
Windows系OSは「Bidi Request and Response Schemas」として、プリンタとアプリケーションの間で双方向通信のために使用可能な、問い合わせと応答の組を提供するデータベースのスキーマを提供している。
・versionは、スキーマのバージョンであり例えば"1"である。
・Flagsは、システム(Windows系OS)により予約されたフラグのセットでありゼロでなければならない。
・Countは、aDataメンバにおける「bidi requests」の数である。
・aData[]は、BIDI_REQUEST_DATA 構造体の配列であり、各要素が1つの「bidi request」を有している。
図19(c)はBIDI_REQUEST_DATA 構造体の書式の一例を示す図である。BIDI_REQUEST_DATA構造体は、1つの「bidi request」を格納している。
・dwReqNumberは、リクエストのインデックスであり、マルチリクエストによる操作のリクエストと応答を適合させるために使用される。
・pSchemaは、スキーマ文字列の最初の1バイトがあるメモリ配置へのポインタである。
・dataは、スキーマに従ったBIDI_DATA 構造体である。
LanguageMonitor32への設定及び問い合わせにSendRecvBidiDataFromPort()関数が使用される。プリンタドライバ30がSendRecvBidiDataFromPort()にてLanguageMonitor32を呼び出すことで、LanguageMonitor32を保存場所として使うことが可能となる。すなわちLanguageMonitor32とSendRecvBidiDataFromPort()関数によりデータ保持部321が実現される。
上記のように、LanguageMonitor32はメーカが開発しなくとも、標準のLanguageMonitor32がWindows系OSと共に利用可能である。メーカが開発しない場合はそのLanguageMonitor32が動作する。メーカは決められたI/Fに合わせ、LanguageMonitor32を開発すれば、独自の機能を追加することができる。本実施形態では、SendRecvBidiDataFromPort()というI/Fを利用することによりプリンタドライバ30等はLanguageMonitor32とのデータのやりとりが可能となる。
より具体的には、COM InterfaceのインスタンスであるIBidiRequestのSetSchema()にJobIDを設定する。IBidiRequestのSetInputData()に印刷設定を設定する。UIドライバ38がIBidiRequestオブジェクトをセットしてSendRecv()をコールすると、スプーラがSendRecvBidiDataFromPort()を呼び出し、例えば第3引数や第4引数に印刷設定を設定することで、LanguageMonitor32に印刷設定を設定する。
描画ドライバ39が印刷設定を読み出す際は、IBidiRequestオブジェクトをセットしてSendRecv()をコールすると、IBidiRequestに印刷設定が保存される。描画ドライバ39がIBidiRequestのGetOutputData()をコールすると、印刷設定を受け取ることができる。
〔拡張I/F部382を介する印刷(FAX送信)設定の動作手順〕
図20は、アプリケーションが拡張I/F部382を介してUIドライバ38に印刷(FAX送信)設定する際のシーケンス図の一例である。設定時の手順なので設定アプリケーション31Aがアプリケーション31と別体でも、そうでなくてもよい。
S1:アプリケーション31は、プリンタドライバの拡張I/F部382に印刷設定を設定する。アプリケーション31は、UIドライバ38と同様に印刷設定の設定画面を表示することができ、ユーザから印刷設定を受け付けることができる。
S2:アプリケーション31は、指定した印刷設定の確定指示をプリンタドライバの拡張I/F部382に通知する。
S2.1:プリンタドライバ30の拡張I/F部382は、LanguageMonitor32に、アプリケーション31から指定された印刷設定を保持させる。具体的には、SendRecvBidiDataFromPort()という関数の引数に印刷設定を格納する。なお、シーケンス図では拡張I/F部382がLanguageMonitor32にアクセスしているが、これは簡略化のためでありUIドライバ38がLanguageMonitor32にアクセスすると表現することもできる。
S3:以降、アプリケーション31は、従来と同様の印刷処理を行う。アプリケーション31はまず、GDI34に印刷準備開始を指示する。具体的には、アプリケーション31はCreateDC()関数で印刷設定を引数にしてGDI34をコールする。なお、アプリケーション31は、例えば送信処理が終了すると、GDI34に印刷準備開始を指示する。
S3.1:GDI34はAPIに対応するDDIをコールすることで、描画ドライバ39に印刷設定を送出する。CreateDC()の引数でアプリーションがGDI34に渡した印刷設定(DEVMODE)が、DrvEnablePDEV()の引数に格納され描画ドライバ39に通知される。この後、描画ドライバ39は、ジョブが終了するまで(デバイスコンテキストが消去されるまで)印刷設定を参照することができる。
S4:GDI34が印刷準備完了をアプリケーション31に通知すると、アプリケーション31はGDI34に印刷開始を指示する。具体的には、アプリケーション31はStartDoc()関数でDocINFOなどを引数にしてGDI34をコールする。
S4.1:GDI34は描画ドライバ39に印刷開始を指示する。具体的にはDrvStartDoc()関数を描画ドライバ39に送出する。
S4.1.1:プリンタドライバの描画ドライバ39は、DrvStartDoc()で呼ばれると、LanguageMonitor32に、アプリケーション31が設定した印刷設定があるか否かを問い合わせる。具体的には、SendRecvBidiDataFromPort()の引数に問い合わせを意味する値を設定し、LanguageMonitor32に送出する。LanguageMonitor32は、アプリケーション31が設定した印刷設定がある場合、SendRecvBidiDataFromPort()にそれを設定して描画ドライバ39に送出する。
プリンタドライバの描画ドライバ39は、DEVMODEで受け取った印刷設定があればその印刷設定と、LanguageMonitor32から取得した印刷設定から印刷データを生成しプリンタにデータを送信する
S5:GDI34が印刷開始完了をアプリケーション31に通知すると、アプリケーション31はページ単位の処理を繰り返す。まず、アプリケーション31はGDI34に新しいページの印刷データを受け入れるよう指示する。具体的には、アプリケーション31はStartPage()をGDI34に送出する。
S5.1:GDI34はDrvStartPage()を描画ドライバ39に送出する。
この後、GDI34は、アプリケーション31から取得した描画関数(文書データ)を描画ドライバ39に送出する。描画ドライバ39は印刷設定に従って文書データを印刷データに変換する。描画ドライバ39は印刷データをプリンタに送信する。
S6:GDI34が1ページ分の描画処理の完了をアプリケーション31に通知すると、アプリケーション31は1ページ分の書き込みが終了したことをGDI34に通知する。具体的には、アプリケーション31はEndPage()をGDI34に送出する。
S7:アプリケーション31は、全てのページの描画処理が終了すると、印刷ジョブの終了をGDI34に通知する。具体的には、アプリケーション31はEndDoc()をGDI34に送出する。
S8:アプリケーション31はGDIにDeleteDC()を通知し、デバイスコンテキストを消去する。
この段階で、アプリケーション31が再度、印刷開始を指示した場合、LanguageMonitor32の印刷設定が変わっていないので、描画ドライバ39は同じ印刷設定で印刷データを生成する。
S9:アプリケーション31は、印刷終了後、プリンタドライバの拡張I/F部382に対して、印刷設定の解除を通知する。
S10:プリンタドライバの拡張I/F部382は、SendRecvBidiDataFromPort()の引数に解除を意味する値を設定し、拡張I/F部382(UIドライバ38)はLanguageMonitor32に印刷設定を破棄させる。
図20のステップS2.1では、1回の通信で、印刷設定を設定しているが、複数回の通信で設定してもよい。ステップS4.1.1で読み出す時も同様である。また、S1でS2.1の処理を行ってもよい。
図示するように、プリンタドライバ30の描画ドライバ39は、DrvStartDoc()で呼び出された時に、LanguageMonitor32から拡張I/F部382の設定情報を取得する。
背景で説明したとおり、RAWスプールとEMFスプールでは、動作シーケンスとWindows系OSのプロセスが異なるが、LanguageMonitor32へのアクセスはプリンタドライバが動作するプロセスが異なっていても共通である。
よって、描画ドライバ39は、DrvStartDoc()のタイミングで、LanguageMonitor32から設定を取得するように設計しておけばよい。すなわち、スプール形式を意識した処理をプリンタドライバに設計していなくてよく、同じDDIのタイミングで同じ処理をすることだけで、スプール形式の差異に影響しないでLanguageMonitor32を利用できる。
なお、図では、描画ドライバ39がLanguageMonitor32から印刷設定を取得するのはDrvStartDoc()で呼び出された時としているが、プリンタに送信する印刷データを生成する前ならば、どのタイミングでも構わない。
〔動作設定が設定された場合の印刷設定後の送信手順〕
ユーザは、設定アプリケーション31Aを操作して印刷設定する際、動作設定を行うことができる。動作設定は印刷設定の一項目であるが、本実施形態ではプリンタの動作を指定する設定である。
図21は、拡張I/F部382への印刷設定の設定例を説明する図の一例である。図21では、図18と比べ設定アプリケーション31Aが印刷設定と動作設定をUIドライバ38に設定している点で異なっている。その他、UIドライバ38が拡張I/F部382を有する点などは図17と同様である。
設定アプリケーション31Aは以下の動作設定を行っているものとする。
動作設定:一括送信設定
複数の文書をプリンタがFAX送信する際、アプリケーションの印刷実行指示ごとに通信を行うと、その都度、接続料金が発生してしまう。宛先が同じなら、接続・切断を繰り返すのでなく、1回の接続で全ての文書を送信した方が、接続料金を節約できる。一括送信設定は、そのための動作設定であり、複数のアプリケーションからの文書(Job)をまとめて送信するという動作を描画ドライバ39に指示する設定である。
図21では、設定アプリケーション31Aが、FAX送信の印刷設定を受け付けたりUIドライバ38に印刷設定を設定する。そして、設定アプリケーション31Aは、プリンタドライバ30の拡張I/F部382を介して、FAX送信の印刷設定として宛先情報、送信者名などを設定し、さらに、動作設定として一括送信設定を行う。
UIドライバ38に一括送信設定が設定された後は、アプリケーションA,Bが印刷を実行するだけで、描画ドライバ39が、LanguageMonitor32から印刷設定と動作設定を読み出し、プリンタが解釈可能な印刷データを生成する。そして、描画ドライバ39は、動作設定の一括送信設定に基づきプリンタに印刷データをまとめて送信する。これにより、同一の宛先には、1回の接続でFAX送信することができる。
アプリケーションA又はBが複数の文書を送信する場合も、アプリケーションAとBがそれぞれ文書を送信する場合も、一括で送信することができる。
なお、図21においても、設定アプリケーション31Aがアプリケーション1、2と一体でもよい。また、動作設定としては、例えば、同じ文書を複数の宛先に送信する同報送信も可能である。
図22〜24は一括送信の送信手順を説明する図の一例である。ここでは設定アプリケーション31Aとアプリケーション1,2を区別していない。
S1:アプリケーション31は、プリンタドライバの拡張I/F部382に動作設定を設定する。アプリケーション31は、UIドライバ38と同様に動作設定の設定画面を表示することができ、ユーザから動作設定を受け付けることができる。
S2:次に、アプリケーション31は、プリンタドライバの拡張I/F部382に印刷設定を設定する。
S3:アプリケーション31は、指定した印刷設定と動作設定の確定指示をプリンタドライバの拡張I/F部382に通知する。
S3.1:プリンタドライバの拡張I/F部382は、LanguageMonitor32に、アプリケーション31から指定された印刷設定と動作設定を保持させる。具体的には、SendRecvBidiDataFromPort()という関数の引数に印刷設定と動作設定を格納する。動作設定は解除されるまで維持されるので、動作設定はLockされた状態となる。
S4:以降、アプリケーション31は、従来と同様の印刷処理を行う。アプリケーション31はまず、GDI34に印刷準備開始を指示する。具体的には、アプリケーション31はCreateDC()関数で印刷設定を引数にしてGDI34をコールする。
S4.1:GDI34はAPIに対応するDDIをコールすることで、描画ドライバ39に印刷設定を送出する。CreateDC()の引数でアプリーションがGDI34に渡した印刷設定(DEVMODE)が、DrvEnablePDEV()の引数に格納され描画ドライバ39に通知される。この後、描画ドライバ39は、ジョブが終了するまで(デバイスコンテキストが消去されるまで)印刷設定を参照することができる。
S5:GDI34が印刷準備完了をアプリケーション31に通知すると、アプリケーション31はGDI34に印刷開始を指示する。具体的には、アプリケーション31はStartDoc()関数でDocINFOなどを引数にしてGDI34をコールする。
S5.1:GDI34は描画ドライバ39に印刷開始を指示する。具体的にはDrvStartDoc()関数を描画ドライバ39に送出する。
S5.1.1:プリンタドライバの描画ドライバ39は、DrvStartDoc()で呼ばれると、LanguageMonitor32に、アプリケーション31が設定した印刷設定と動作設定があるか否かを問い合わせる。具体的には、SendRecvBidiDataFromPort()の引数に問い合わせを意味する値を設定し、LanguageMonitor32に送出する。LanguageMonitor32は、アプリケーション31が設定した印刷設定と動作設定がある場合、SendRecvBidiDataFromPort()にそれを設定して描画ドライバ39に送出する。
プリンタドライバの描画ドライバ39は、DEVMODEで受け取った印刷設定があればその印刷設定と、LanguageMonitor32から取得した印刷設定から印刷データを生成する。
S6:GDI34が印刷開始完了をアプリケーション31に通知すると、アプリケーション31はページ単位の処理を繰り返すが、図では1ページのみを印刷するとしている。まず、アプリケーション31はGDI34に新しいページの印刷データを受け入れるよう指示する。具体的には、アプリケーション31はStartPage()をGDI34に送出する。
S6.1:GDI34はDrvStartPage()を描画ドライバ39に送出する。
S7:GDI34は、アプリケーション31から取得した描画関数(文書データ)を描画ドライバ39に送出する。描画ドライバ39は印刷設定に従って文書データを印刷データに変換する。一括送信設定の設定がなければ、描画ドライバ39はLanguageMonitor32から取得した印刷設定から印刷データを生成しプリンタに印刷データを送信するが、描画ドライバ39は一括送信設定の設定を検出して、プリンタに印刷データを送信せずに保持しておく。
S8:GDI34が1ページ分の描画処理の完了をアプリケーション31に通知すると、アプリケーション31は1ページ分の書き込みが終了したことをGDI34に通知する。具体的には、アプリケーション31はEndPage()をGDI34に送出する。
S8.1:GDI34は、DrvSendPage()を描画ドライバ39に送信する。
S9:アプリケーション31は、全てのページの描画処理が終了すると、印刷ジョブの終了をGDI34に通知する。具体的には、アプリケーション31はEndDoc()をGDI34に送出する。
S9.1:GDI34は、DrvEndDoc()を描画ドライバ39に送信する。
S10:アプリケーション31はGDIにDeleteDC()を通知し、デバイスコンテキストを消去する。
S10.1:GDI34は、DrvDisiblePDEV()を描画ドライバ39に送信する。描画ドライバ39はDEVMODEを消去する。
この段階で1つのJobが終了した(1つの文書の送信処理が終了した)。一括送信では、プリンタに印刷データを送信することなく、アプリケーション31が次のJobを実行する。
S11〜S17の処理は、S4〜S10と同様となる。このように各アプリケーション31はS4〜S10を何回でも繰り返すことができる。本実施形態では2回のJob(2つの文書データ)を一括で送信するものとする。
S18:アプリケーション31は、プリンタドライバの拡張I/F部382に対して、一括送信の解除を指示する。例えば、アプリケーション31には、送信対象の複数の文書データがユーザにより登録されており、全ての送信処理が終了すると、アプリケーション31は一括送信の解除を指示する。このように、文書作成のアプリケーション31と印刷設定・動作設定を行う設定アプリケーション31Aが一体である方が好ましい場合がある。
文書作成のアプリケーション31と印刷設定・動作設定を行う設定アプリケーション31Aが異なっている場合、ユーザの操作によりアプリケーション31が一括送信の解除を指示してもよいし、一括送信の設定から所定時間が経過した時、設定した時刻が到来した時、などのように自動的に一括送信の解除を指示してもよい。
S18.1:以降、拡張I/F部382は、従来と同様の印刷処理を行う。アプリケーション31が拡張I/F部382の代わりに従来と同様の印刷処理を行ってもよい。
まず、拡張I/F部382はGDI34に印刷準備開始を指示する。具体的には、アプリケーション31はCreateDC()関数で印刷設定を引数にしてGDI34をコールする。
S18.1.1:GDI34はAPIに対応するDDIをコールすることで、描画ドライバ39に印刷設定を送出する。CreateDC()の引数でアプリーションがGDI34に渡した印刷設定(DEVMODE)が、DrvEnablePDEV()の引数に格納され描画ドライバ39に通知される。しかし、文書データが送信されないので、描画ドライバ39がDEVMODEを参照して印刷データを作成することはない。
S18.2:GDI34が印刷準備完了を拡張I/F部382に通知すると、拡張I/F部382はGDI34に印刷開始を指示する。具体的には、アプリケーション31はStartDoc()関数でDocINFOなどを引数にしてGDI34をコールする。
S18.3:拡張I/F部382は、GDI34にExtEscape()を送信する。ExtEscape()関数は、GDI経由ではアクセスできないモジュール(ここでは描画ドライバ39)にアクセスするためのAPIである。アプリケーション等がGDI34を関与させずにドライバにデータを送信する場合、ドライバからGDI34を関与させずにデータを取得する場合に利用されることがある。ExtEscape()に、蓄積している印刷データのプリンタへの送信要求が含まれる。
S18.3.1:GDI34は、ExtEscape()をDDIであるDrvStartPage()に変換して描画ドライバ39に送信する。
S18.3.2:また、GDI34は、DrvEscape()::PASSTHROUGH()を描画ドライバ39に送信する。描画ドライバはこの命令により、蓄積している印刷データをプリンタに送信する。
S18.4:拡張I/F部382は、GDI34から印刷データの送信の通知を受けると、印刷ジョブの終了をGDI34に通知する。具体的には、アプリケーション31はEndDoc()をGDI34に送出する。
S18.4.1:GDI34は、DrvEndDoc()を描画ドライバ39に送信する。
S18.5:拡張I/F部382は、GDI34にDeleteDC()を通知し、デバイスコンテキストを消去する。
S18.5.1:GDI34は、DrvDisiblePDEV()を描画ドライバ39に送信する。描画ドライバ39はDEVMODEを消去する。
S19:アプリケーション31は、拡張I/F部382が処理の終了を通知されると、プリンタドライバの拡張I/F部382に対して、印刷設定の解除を通知する。
S19.1:プリンタドライバの拡張I/F部382は、SendRecvBidiDataFromPort()の引数に解除を意味する値を設定し、LanguageMonitor32に設定を破棄させる。これにより、拡張I/F部382は、LanguageMonitor32の印刷設定と動作設定を消去する。動作設定もLockが解除される。
このように、DEVMODEに設定項目がない、プリンタドライバの動作の指定をLanguageMonitor32に登録することも可能になる。
ステップS18では、一括送信の解除通知として、プリンタドライバの拡張I/F部382からGDI34を介してプリンタドライバの描画部に対して命令を送信している(通常の印刷ジョブ)。しかし、拡張I/F部382から、直接、描画ドライバ39に一括送信の解除通知を送信することも可能である。
〔複数の論理プリンタの識別〕
一台のクライアントPC100に複数の論理プリンタが登録されることがある。論理プリンタとは、Windows系OSのプリンタフォルダに、プリンタのアイコンとして表示されている論理的なプリンタである。Windows系OSは、1つのプリンタドライバに対して、複数の論理プリンタを作成することができる。論理プリンタは、アプリケーション31からみた仮想的な出力先ともいえ、プリンタドライバが描画した印刷データは、ユーザが指定した論理プリンタに出力され、Windows系OSが論理プリンタから物理プリンタに提供する。
論理プリンタには、1つずつ名前を付与することができ、ユーザなどが任意に付けたり、プリンタドライバのパッケージ名などから自動的に付与される。各論理プリンタには、機能、共有の有無、スプール形式、オプション構成などが設定可能になっている。すなわち、1つの物理的なプリンタの初期設定を変えることができる。
したがって、複数の論理プリンタが登録されている場合、論理プリンタ毎に、印刷設定や動作設定を設定することができればユーザの利便性が向上する。
・一度、拡張I/F部382を介した印刷設定で、複数のアプリケーション31で同じ設定を使う構成
・一度、拡張I/F部382を介した動作設定で、複数のアプリケーション31が同じ動作となる構成
これらの印刷設定や動作設定を論理プリンタごとに保持できればよいことになる。そこで、拡張I/F部382は、論理プリンタ名(以下、論理プリンタIDという)をキーに、印刷設定や動作設定をLanguageMonitor32に登録する。
図25は、複数の論理プリンタに対する印刷設定を説明する図の一例である。1台のクライアントPC100に複数の論理アイコンが登録されている場合、LanguageMonitor32に、論理プリンタIDをキーとして、印刷設定が登録される。
図25のアプリケーション31は、設定アプリケーション31Aとアプリケーション31とが一体の例を示す。以下のように、アプリケーション31がプリンタドライバの拡張I/F部382を使用したものとする。
1.アプリケーション31が論理プリンタID=Aに対して印刷設定ABを設定
2.アプリケーション31が論理プリンタID=Bに対して印刷設定MNを設定
論理プリンタIDは、ユーザが出力先として指定している論理プリンタのIDなので、アプリケーション31、UIドライバ38、及び、描画ドライバ39ともに、参照すべき論理プリンタIDを検知している。よって、UIドライバ38は、出力先の論理プリンタの論理プリンタIDをキーにLanguageMonitor32に印刷設定を設定でき、描画ドライバ39は論理プリンタIDをキーにLanguageMonitor32に問い合わせることにより印刷設定を取得できる。
このように、論理プリンタごとに印刷設定や動作設定を指定し、印刷・FAX送信することができる。なお、一括送信の場合も論理プリンタごとに印刷設定・動作設定を行うことができる。
〔Point & Print インストールにおけるLanguageMonitor〕
Point & PrintインストールにおけるLanguageMonitor32を利用した印刷設定及び動作設定の管理方法について説明する。
図26は、Point&Print環境を備えた印刷システム400の概略構成図の一例を示す。4台のクライアントPC100がネットワークを介してサーバPCと接続されている。サーバPC110にはプリンタ200が接続されているが、プリンタ200はネットワークに接続されていてもよい。
サーバPC110にはプリンタドライバ30がインストールされており、サーバPC110が各クライアントPC100にプリンタドライバ30をコピーして配布する。よって、ユーザの手を煩わせることなく、サーバPC110とクライアントPC100が協働してプリンタドライバ30をインストールすることができる。なお、以降は、クライアントPC1がサーバPC110に接続し、Point&Printによりプリンタドライバをインストールしたものとする。
Point&Print環境のサーバサイドレンダリングでは、クライアントPC1がユーザの印刷設定を受け付け、サーバPC110が描画処理を行うため、印刷設定などを共有することが困難である。
しかし、これまで説明したLanguageMonitor32は、Windows系OS内の機能なので、Point & PrintインストールされたクライアントPC1のWindows系OSは、サーバPC110に印刷設定を送信することができる。よって、サーバPC110はクライアントPC1から印刷アーキテクチャ内の処理で印刷設定と動作設定を取得できる。
図27は、Point & Print環境におけるLanguageMonitor32の作用を説明する図の一例である。LanguageMonitor32はWindows系OSの印刷アーキテクチャの中に組み込まれる一モジュールである。このため、Point & PrintによりクライアントPC側がUIドライバ38の処理を、サーバPC側が描画ドライバ39の処理を受け持ったとしても、LanguageMonitor32はサーバPC側で1つだけ機能する。クライアントPC側にもLanguageMonitorはあるが機能しない。
クライアントPC1のプリンタドライバ30とサーバPC110のプリンタドライバ30は1つのLanguageMonitor32にアクセスする。
クライアントPC1のWindows系OSとサーバPCのWindows系OSは、クライアントPC1とサーバPC110の通信を確立している(例えば、RPC(Remote Procedure Call)を利用する)。そして、UIドライバ38がクライアントPC1のLanguageMonitor32にアクセスする場合、クライアントPC1のLanguageMonitor32は動作せず、スプーラ35がサーバPCのLanguageMonitor32に印刷設定を送信する。
このようにクライアントPC1とサーバPC110が同じWindows系OSをインストールしているので、Windows系OSの印刷アーキテクチャのLanguageMonitor32を共通に利用できる。このため、メーカ独自で開発したモジュールなどで生じやすいアクセス権限や通信エラーなどが起こりにくい。また、同様の理由で、Windows系OSとの親和性も高い。
なお、Point&Printでもスプール形式にはRAWスプールとEMFスプールがあるが、RAWスプールの場合、サーバサイドレンダリングが存在しない。RAWスプールはアプリケーション31のプロセスなので、レンダリング場所が制限されるためである。
その他の場合、RAWスプールのクライアントサイドレンダリング、EMFスプールのクライアントサイドレンダリング、及び、EMFスプールのサーバサイドレンダリング、のいずれの場合も、図27のようにLanguageMonitor32を利用することができる。
〔64bitOS上で32bitのアプリケーションが動作する場合〕
図28は、64bitOS上で32bitのアプリケーションが動作する場合のLanguageMonitorの作用を説明する図の一例である。
FAX送信の印刷設定を行う設定アプリケーション31Aが32bitアプリ、Windows系OSが64bitOSであるとする。アプリケーション31が印刷実行すると、WOW64の仕組みによりsplwow64.exeが動作するので、アプリケーション31は32bitアプリ又は64bitアプリのどちらでもよい。プリンタドライバはWindows系OSと同じく64bitで作成されている必要があり、描画ドライバ39は64bitドライバである。
UIドライバ38も当然ながら64bitドライバが用意されておりクライアントPC1にインストールされている。しかしながら、32bitアプリである設定アプリケーション31Aが拡張I/F部382にアクセスしてもsplwow64.exeは動作せず、設定アプリケーション31Aが拡張I/F部382にアクセスすることができない。
このような場合、Windows系OSは代替インストールという仕組みを使用して、クライアントPC1に32bitのプリンタドライバ(代替される64bitのプリンタドライバと互換性のあるものとして予め登録されている)をシステムに登録する。システムに登録するとは、例えば、64bitのプリンタドライバの代わりに、32bitのプリンタドライバを登録することをいう。
32bitのUIドライバ38は、拡張I/F部382を使用する設定アプリケーション31Aが32bitであるため、32bitの拡張I/F部382をロードする。これにより、UIドライバ38は32bitアプリから印刷設定等を受け付けることができる。
拡張I/F部382は、SendRecvBidiDataFromPort():というAPIを介してLanguageMonitor32と通信するので、設定アプリケーション31AとWindows系OSの組み合わせ(32/64bitアプリ、32/64bitOS)を考慮することなく、拡張I/F部382が64bitのLanguageMonitor32に印刷設定等を格納することができる。すなわち、APIを介すので相手が32bitか64bitかは問題にならない。
また、印刷の実行時は、64bitの描画ドライバ39がSendRecvBidiDataFromPort():というAPIを介して使用してLanguageMonitor32と通信するので、アプリケーション31とWindows系OSの組み合わせ(32/64bitアプリ、32/64bitOS)を考慮することなく、印刷設定等を読み出すことができる。
よって、本実施形態のプリンタドライバ30は、64bitOS上で32bitのアプリケーションが動作する場合でも、設定アプリケーション31Aが拡張I/F部382を介して印刷設定し、それを描画ドライバ39が読み出すことができる。
以上説明したように、本実施形態のプリンタドライバは、アプリケーション31が拡張I/Fを利用して印刷設定を決定する場合、
・RAWスプール・EMFスプールのどちらのスプール形式でも、プリンタドライバの拡張I/Fによって指示した印刷設定で印刷をする
・Point & Printインストールされたプリンタドライバで、スプール形式によらず、プリンタドライバの拡張I/Fによって指示した印刷設定で印刷をする
・64bitOS上で32bitアプリが動作した場合でも、プリンタドライバの拡張I/Fによって指示した印刷設定で印刷をする
ことが可能となっている。また、プリンタドライバ30が印刷設定をDEVMODE構造体に格納することもできるし、全てをLanguageMonitor32に設定することもできる。
31 アプリケーション
32 LanguageMonitor
34 GDI
35 スプーラ
38 UIドライバ
39 描画ドライバ
100 クライアントPC
200 プリンタ
321 データ保持部
322 通信部
381 表示部
382 拡張I/F部
400 印刷システム
特開2005−148928号公報

Claims (17)

  1. 情報処理装置の動作の基本となる所定のプログラムを介して印刷の第1の設定条件の設定値を受け付ける設定受付プログラムと、
    アプリケーションから前記所定のプログラムを介して文書データを取得し、前記設定受付プログラムにより受け付けられた第1の設定条件に基づいて印刷データに変換する画像処理プログラムと、を有し、
    前記設定受付プログラムは、情報処理装置に、
    前記所定のプログラムを介することなく、前記アプリケーションから第2の設定条件を受け付けるステップと、
    インタフェースにより受け付けられた第2の設定条件を、前記印刷データに対する処理が可能な印刷データ処理プログラムに出力するステップと、を実行させ、
    前記画像処理プログラムは、情報処理装置に、
    前記アプリケーションからの文書データを印刷データに変換する際に、前記印刷データ処理プログラムから第2の設定条件を受け付けるステップと、
    前記設定受付プログラムにより受け付けた第1の設定条件と、前記印刷データ処理プログラムから受け付けた第2の設定条件の少なくとも一方に基づき、文書データを印刷データに変換するステップと、を実行させることを特徴とするプログラム。
  2. 前記設定受付プログラムが前記アプリケーションから第2の設定条件を受け付けるステップでは、
    第2の設定条件に加え、画像形成装置又は画像送信装置の動作を設定する動作設定条件をアプリケーションから受け付け、第2の設定条件及び前記動作設定条件を印刷データ処理プログラムに記憶し、
    前記画像処理プログラムが前記印刷データ処理プログラムから第2の設定条件を受け付けるステップでは、
    前記印刷データ処理プログラムから第2の設定条件及び前記動作設定条件を読み出し、
    前記画像処理プログラムが文書データを印刷データに変換するステップでは、
    前記動作設定条件に所定の動作が設定されている場合、印刷データを保持しておき、
    前記画像処理プログラムが前記所定のプログラムから送信命令を取得した場合に、印刷データを画像形成装置又は画像送信装置側に送信させることを特徴とする請求項1記載のプログラム。
  3. 前記動作設定条件にFAX送信の際に複数の文書データを一度の回線接続で送信するという動作が設定されている場合、
    前記画像処理プログラムが文書データを印刷データに変換するステップでは、複数の文書データの印刷データを保持しておき、
    前記画像処理プログラムが前記所定のプログラムから送信命令を取得した場合に、複数の印刷データを全て画像形成装置又は画像送信装置側に送信する、
    ことを特徴とする請求項2記載のプログラム。
  4. 情報処理装置に、前記所定のプログラムを介することなく、第2の設定条件又は前記動作設定条件の破棄命令をアプリケーションから受け付ける破棄ステップを実行させ、
    前記設定受付プログラムは、情報処理装置に、第2の設定条件又は前記動作設定条件を前記印刷データ処理プログラムから破棄させるステップを実行させる、
    ことを特徴とする請求項2又は3記載のプログラム。
  5. 前記設定受付プログラムが前記アプリケーションから第2の設定条件を受け付けるステップでは、
    前記所定のプログラムから第1の設定条件の設定を受け付けるデバイスドライバインタフェース以外の、独自の拡張インタフェースを介して、アプリケーションから第2の設定条件を受け付け、
    前記破棄ステップでは、
    前記所定のプログラムから第1の設定条件の設定を受け付けるデバイスドライバインタフェース以外の、独自の拡張インタフェースを介して、アプリケーションから前記破棄命令を受け付ける、ことを特徴とする請求項4記載のプログラム。
  6. 前記設定受付プログラムが前記アプリケーションから第2の設定条件を受け付けるステップにおいて、第2の設定条件を受け取るアプリケーションと、
    前記画像処理プログラムがインタフェースにより受け付けられた第2の設定条件を、前記印刷データに対する処理が可能な印刷データ処理プログラムに出力するステップにおいて、前記所定のプログラムに前記画像処理プログラムに対し印刷要求を出力させるアプリケーションとは、別体のアプリケーションである、
    ことを特徴とする請求項1記載のプログラム。
  7. 前記設定受付プログラムが前記アプリケーションから第2の設定条件を受け付けるステップでは、
    第2の設定条件に識別情報を対応づけて、前記印刷データ処理プログラムに記憶し、
    前記印刷データ処理プログラムから第2の設定条件を受け付けるステップでは、
    前記印刷データ処理プログラムから前記識別情報に対応づけられた第2の設定条件を読み出す、ことを特徴とする請求項1記載のプログラム。
  8. 当該プログラムには、画像形成装置又は画像送信装置に対応したプリンタドライバに対する設定を識別するための論理プリンタ情報が設定されており、
    前記識別情報は前記論理プリンタ情報である、
    ことを特徴とする請求項7記載のプログラム。
  9. 情報処理装置の動作の基本となる所定のプログラムを介して印刷の第1の設定条件の設定値を受け付ける設定受付手段と、
    アプリケーションから前記所定のプログラムを介して文書データを取得し、前記設定受付手段により受け付けられた第1の設定条件に基づいて印刷データに変換する画像処理手段と、を有し、
    前記設定受付手段は、前記所定のプログラムを介することなく、第2の設定条件をアプリケーションから受け付けるインタフェース、を有し、
    前記インタフェースにより受け付けられた第2の設定条件を、前記印刷データに対する処理が可能な印刷データ処理プログラムに出力し、
    前記画像処理手段は、前記アプリケーションからの文書データを印刷データに変換する際に、前記印刷データ処理プログラムから第2の設定条件を受け付け、前記設定受付手段により受け付けた第1の設定条件と、前記印刷データ処理プログラムから受け付けた第2の設定条件の少なくとも一方に基づき、文書データを印刷データに変換する、
    ことを特徴とする情報処理装置。
  10. 前記インタフェースは、第2の設定条件に加え、画像形成装置又は画像送信装置の動作を設定する動作設定条件をアプリケーションから受け付け、第2の設定条件及び前記動作設定条件を前記印刷データ処理プログラムに出力し、
    前記画像処理手段は、前記印刷データ処理プログラムから第2の設定条件及び前記動作設定条件を読み出し、
    前記動作設定条件に所定の動作が設定されている場合、印刷データを保持しておき、
    前記所定のプログラムから送信命令を取得した場合に、印刷データを画像形成装置又は画像送信装置側に送信する、ことを特徴とする請求項9記載の情報処理装置。
  11. 前記動作設定条件にFAX送信の際に複数の文書データを一度の回線接続で送信するという動作が設定されている場合、
    前記画像処理手段は、複数の文書データの印刷データを保持しておき、
    前記所定のプログラムから送信命令を取得した場合に、複数の印刷データを全て画像形成装置又は画像送信装置側に送信する、ことを特徴とする請求項10記載の情報処理装置。
  12. 前記設定受付手段は、前記所定のプログラムを介することなく、第2の設定条件又は前記動作設定条件の破棄命令をアプリケーションから受け付けた場合、
    前記設定受付手段は、第2の設定条件又は前記動作設定条件を前記印刷データ処理プログラムから破棄する、ことを特徴とする請求項10又は11記載の情報処理装置。
  13. 前記インタフェースは、
    前記所定のプログラムから第1の設定条件の設定を受け付けるデバイスドライバインタフェース以外の、独自の拡張インタフェースを介して、アプリケーションから第2の設定条件を受け付け、
    前記所定のプログラムから第1の設定条件の設定を受け付けるデバイスドライバインタフェース以外の、独自の拡張インタフェースを介して、アプリケーションから前記破棄命令を受け付ける、ことを特徴とする請求項12記載の情報処理装置。
  14. 前記インタフェースが、第2の設定条件を受け取るアプリケーションと、
    前記画像処理手段が、前記所定のプログラムを経由して印刷要求を取得するアプリケーションとは、別体のアプリケーションである、
    ことを特徴とする請求項9記載の情報処理装置。
  15. 前記インタフェースは、第2の設定条件に識別情報を対応づけて、前記印刷データ処理プログラムに記憶し、
    前記画像処理手段は、
    前記印刷データ処理プログラムから前記識別情報に対応づけられた第2の設定条件を読み出す、ことを特徴とする請求項9記載の情報処理装置。
  16. 前記識別情報は、プリンタドライバに対する設定を識別するために生成されている重複しない論理プリンタ情報である、ことを特徴とする請求項15記載の情報処理装置。
  17. 請求項1〜8いずれか1項に記載のプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
JP2012064361A 2012-03-21 2012-03-21 プログラム、情報処理装置、記憶媒体 Active JP5919930B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012064361A JP5919930B2 (ja) 2012-03-21 2012-03-21 プログラム、情報処理装置、記憶媒体
US13/845,273 US9298411B2 (en) 2012-03-21 2013-03-18 Apparatus and computer-readable recording medium for converting data into printing data based on setting conditions
CN201310092514.XA CN103324451B (zh) 2012-03-21 2013-03-21 基于设置条件的数据处理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012064361A JP5919930B2 (ja) 2012-03-21 2012-03-21 プログラム、情報処理装置、記憶媒体

Publications (2)

Publication Number Publication Date
JP2013196503A JP2013196503A (ja) 2013-09-30
JP5919930B2 true JP5919930B2 (ja) 2016-05-18

Family

ID=49193224

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012064361A Active JP5919930B2 (ja) 2012-03-21 2012-03-21 プログラム、情報処理装置、記憶媒体

Country Status (3)

Country Link
US (1) US9298411B2 (ja)
JP (1) JP5919930B2 (ja)
CN (1) CN103324451B (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6331910B2 (ja) 2013-09-17 2018-05-30 株式会社リコー 情報処理装置、情報処理システム、及びプログラム
JP6447215B2 (ja) 2014-03-10 2019-01-09 株式会社リコー 情報配信システム、情報処理装置、情報配信方法及びプログラム
JP2015176381A (ja) * 2014-03-14 2015-10-05 株式会社リコー 情報処理プログラム、情報処理装置、および情報処理システム
JP6379824B2 (ja) * 2014-08-01 2018-08-29 株式会社リコー プログラム、情報処理装置、画面表示方法及び画像処理システム
CN105426135B (zh) * 2014-09-12 2018-10-26 株式会社理光 信息处理装置和信息处理系统
JP6028776B2 (ja) * 2014-09-19 2016-11-16 コニカミノルタ株式会社 Uiプログラム、印刷制御装置及びその制御方法
JP6086114B2 (ja) * 2014-12-29 2017-03-01 コニカミノルタ株式会社 情報送信装置、情報送信方法、および情報送信プログラム
JP6531581B2 (ja) 2015-09-10 2019-06-19 株式会社リコー 情報配信システム、情報処理装置、情報配信方法及びプログラム
JP2017102901A (ja) 2015-11-19 2017-06-08 株式会社リコー プログラム、情報処理装置、設定方法および情報処理システム
US10275192B2 (en) 2016-09-08 2019-04-30 Ricoh Company, Ltd. Information processing apparatus, image processing system, and printer driver
CN106454403B (zh) * 2016-09-09 2020-06-12 北京星选科技有限公司 数据显示方法、设备及系统
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
US10191697B2 (en) 2017-03-17 2019-01-29 Ricoh Company Ltd. Information processing apparatus, information processing system, and information processing method
JP7158871B2 (ja) 2018-03-15 2022-10-24 キヤノン株式会社 プログラム及び情報処理装置
TWI678096B (zh) * 2018-11-09 2019-11-21 虹光精密工業股份有限公司 以圖碼交換資料之文件處理系統及方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4310172B2 (ja) * 2003-11-12 2009-08-05 キヤノン株式会社 情報処理装置、方法、システム、制御プログラム
JP2005346540A (ja) * 2004-06-04 2005-12-15 Canon Inc 情報処理装置およびデータ処理方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体およびプログラム
KR20060133617A (ko) * 2005-06-21 2006-12-27 삼성전자주식회사 인쇄제어장치 및 인쇄제어방법
US7861182B2 (en) * 2007-09-20 2010-12-28 Ricoh Company, Ltd. Dynamic printer driver user interface generation
JP4378404B2 (ja) * 2007-09-27 2009-12-09 株式会社沖データ 電子ファイル承認管理システム
JP5031539B2 (ja) * 2007-12-19 2012-09-19 キヤノン株式会社 印刷システム、印刷装置及び印刷方法
JP5094627B2 (ja) * 2008-08-08 2012-12-12 キヤノン株式会社 情報処理装置、方法、制御プログラム
JP5245661B2 (ja) * 2008-09-09 2013-07-24 株式会社リコー 印刷制御装置、プログラム、記録媒体及び印刷制御方法
JP5267337B2 (ja) 2009-06-01 2013-08-21 株式会社リコー プログラム、記憶媒体、情報処理装置、プリンタ装置およびシステム
JP5532770B2 (ja) 2009-09-08 2014-06-25 株式会社リコー 印刷制御プログラム、情報処理装置、および印刷制御プログラムを記録したコンピュータ読み取り可能な記録媒体
JP5621336B2 (ja) * 2009-09-14 2014-11-12 株式会社リコー 情報処理装置、および印刷制御プログラム
JP5581793B2 (ja) * 2010-04-30 2014-09-03 株式会社リコー 情報処理装置、プログラムおよび記憶媒体
JP5532317B2 (ja) * 2010-05-17 2014-06-25 ブラザー工業株式会社 画像形成制御プログラム、画像形成プログラム、及び画像形成設定情報のデータ構造
JP5793830B2 (ja) 2010-05-18 2015-10-14 株式会社リコー 情報処理装置、印刷制御プログラム、および記憶媒体
JP2012118824A (ja) 2010-12-01 2012-06-21 Ricoh Co Ltd 印刷プログラム、情報処理装置および記録媒体
JP5760441B2 (ja) * 2011-01-06 2015-08-12 株式会社リコー 印刷制御プログラム、情報処理装置、印刷システム及び印刷装置
JP5804749B2 (ja) * 2011-04-01 2015-11-04 キヤノン株式会社 データ処理装置、データ処理方法およびプログラム
JP5961937B2 (ja) * 2011-07-06 2016-08-03 株式会社リコー 情報処理システム
JP5857611B2 (ja) * 2011-10-13 2016-02-10 株式会社リコー 情報処理装置、システム、プログラム

Also Published As

Publication number Publication date
US20130250331A1 (en) 2013-09-26
CN103324451A (zh) 2013-09-25
JP2013196503A (ja) 2013-09-30
CN103324451B (zh) 2016-12-28
US9298411B2 (en) 2016-03-29

Similar Documents

Publication Publication Date Title
JP5919930B2 (ja) プログラム、情報処理装置、記憶媒体
JP5857611B2 (ja) 情報処理装置、システム、プログラム
JP5677047B2 (ja) 印刷システム、情報処理装置、印刷方法、及び、プログラム
KR102549370B1 (ko) 정보 처리 장치, 제어 방법 및 프로그램
JP6331910B2 (ja) 情報処理装置、情報処理システム、及びプログラム
US9086832B2 (en) Printer
JP5763904B2 (ja) プリントシステム、印刷方法、プリントサーバおよびその制御方法、並びにプログラム
US8640148B2 (en) Information processing apparatus, information processing method and storage medium
US9069504B2 (en) Printing apparatus and method for increasing storage area
JP5004709B2 (ja) 画像処理装置、システム、プログラムおよび記録媒体
JP5704800B2 (ja) データ処理装置、データ処理処理方法、プログラム
JP5927950B2 (ja) 制御装置
JP2020004158A (ja) 情報処理装置、情報処理装置の制御方法、及びプログラム
JP2007328558A (ja) データ処理装置、データ処理システム、データ処理装置の制御方法、データ変換機能付加方法、プログラム及び記録媒体
JP5170141B2 (ja) プリンタ及び端末装置
JP2016157269A (ja) プリンタドライバプログラム、印刷システム、サーバ、サーバプログラム、クライアント端末、クライアントプログラム
JP2016177432A (ja) プログラム、情報処理装置、記憶媒体、画面作成方法
JP5919925B2 (ja) プログラム、情報処理装置、記憶媒体
JP2014041599A (ja) プログラム、情報処理装置、システム
JP2007011570A (ja) イメージデータ印刷システム及び印刷指示受付装置
JP2013196259A (ja) データ処理装置、データ処理システムおよびプログラム
JP2008176426A (ja) 印刷システム及び印刷方法
JP2022107793A (ja) 情報処理装置、情報処理装置の制御方法及び印刷設定アプリケーション
JP2010198419A (ja) データファイル管理プログラムおよびこのデータファイル管理プログラムを実行するコンピュータ
JP2021068012A (ja) インストールプログラム、情報処理装置、および通信システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150218

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160216

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: 20160315

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160328

R151 Written notification of patent or utility model registration

Ref document number: 5919930

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151