以下、本発明の実施の形態を図面を参照しながら詳述する。
図1は、本発明の実施の形態に係る印刷制御装置を有する印刷制御システムの全体構成を示すブロック図である。
図1において、印刷制御システムは、ホストコンピュータ100(印刷制御装置)と、プリンタ150(印刷装置)とを備え、これらはデータ転送経路121を介して互いに接続されている。
ホストコンピュータ100は、ホストコンピュータ100全体を制御するCPU101と、CPU101の主メモリ、ワークエリア等として機能するRAM102と、CPU101が実行する制御プログラム等を記憶するROM103と、ポインティングデバイスとしてのキーボード(KB)109と、KB109や不図示のマウス等のポインティングデバイスからの入力を制御する入力コントローラ(入力C)105と、表示器としてのCRTディスプレイ(CRT)110と、CRT110等の表示器への表示を制御するビデオコントローラ(VC)106と、CPU101が実行する制御プログラム等を記憶するハードディスク(HD)、フロッピー(登録商標)ディスク(FD)等の外部メモリ111と、外部メモリ111へのアクセスを制御するメモリコントローラ(MC)107と、データ転送経路121を介して、外部機器と接続・通信する通信インターフェースコントローラ(通信I/FC)108とを備える。
CPU101、RAM102、ROM103、入力C105、VC106、MC107、及び通信I/FC108は、システムバス104を介して互いに接続されている。
ROM103又は外部メモリ111には、CPU101の制御プログラムであるBIOS(Basic Input/Output System)、オペレーティングシステムプログラム(以下、単に「OS」という。)、及び後述する各処理を実行するために必要な各種プログラム等が記憶されている。本実施の形態で使用するOSは、例えば、マイクロソフト社製のウィンドウズ(登録商標)XPを想定するが、これに限るものではない。
表示器はCRT110に限られるものではなく、液晶ディスプレイであってもよい。
外部メモリ111は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、及び各種データ等を記憶するHD、FD、又はPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)メモリ等から構成される。
通信I/FC108は、例えば、TCP/IPを用いたインターネット通信やプリンタ150とのデータ送受信等を制御する。
CPU101は、例えば、RAM102内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、CRT110に表示情報を表示する。また、CPU101は、CRT110にマウスカーソル等を表示することによりユーザによる指示を可能にする。
プリンタ150は、プリンタ150全体を制御するCPU112と、CPU112の主メモリ、ワークエリア等として機能すると共に、出力情報展開領域、環境データ格納領域等に用いられるRAM119と、出力情報を生成する際に使用するフォントデータ等を記憶するフォントROM113aと、CPU112が実行する制御プログラム等を記憶するプログラムROM113bと、ハードディスク等の外部メモリ114がないプリンタの場合には、ホストコンピュータ上で利用される情報等が記憶されるデータROM113cと、外部機器と接続・通信する入力部118と、印刷を実行する印刷部117と、印刷部117を制御する印刷部インターフェース(印刷部I/F)116と、操作のためのスイッチおよびLED表示器等が配されている操作パネル等の操作部122と、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶するHD、ICカード等の等の外部メモリ114と、外部メモリ114へのアクセスを制御するメモリコントローラ(MC)120とを備える。
CPU112、RAM119、ROM113、入力部118、印刷部I/F116、操作部122と、MC120は、システムバス115を介して互いに接続されている。
CPU112は、プログラムROM113b又は外部メモリ114に記憶された制御プログラム等に基づいて、印刷部117に出力情報としての画像信号を出力する。入力部118は、データ転送経路121を介したホストコンピュータ100との通信処理を制御する。RAM119は、不図示の増設ポートに接続されるオプションRAMによりメモリ容量を拡張することができるように構成されている。
また、プリンタ150の外部メモリ114は1個に限るものではなく、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラム等を格納した外部メモリを複数接続できるように構成されていてもよい。更に、不図示のNVRAMを有し、操作部122からのプリンタモード設定情報を記憶するように構成されてもよい。
本実施の形態において、プリンタ150がサポートするページ記述言語(以下、「PDL」という。)は、LBP Image Processing System(以下、「LIPS」という。)等の比較的に高度なPDLであると想定しているが、これに限るものではない。
本発明の実施の形態に係る印刷制御プログラムとしてのプリンタドライバ203(図2)は外部メモリ111に記録されており、必要に応じてRAM102にロードされることによりCPU101によって実行される。また、プリンタドライバが用いる定義ファイル及び各種情報テーブルは外部メモリ111に格納されている。
なお、上記印刷制御システムの構成は一例であり、用途や目的に応じて様々な構成例があることは云うまでもない。例えば、本発明は、単体の機器に適用されてもよく、LAN(Local Area Network)、WAN(Wide Area Network)等のネットワークを介して接続された複数の機器からなるシステムに適用されてもよい。
図2は、図1におけるホストコンピュータ100のソフトウェア構成を概略的に示すブロック図である。
図2において、ホストコンピュータ100は、アプリケーションプログラム(以下、「アプリケーション」という。)201と、グラフィックスエンジン202と、プリンタドライバ203と、プリントサブシステム204とを備え、これらは、夫々外部メモリ111に保存されたファイルとして存在し、OSやそのモジュールを利用するモジュールによる制御に従ってCPU101によってRAM102にロードされて実行されるプログラムモジュールである。
アプリケーション201及びプリンタドライバ203は、FD、CD−ROM、又は後述するネットワーク301(図3)を介してHDに追加される。アプリケーション201は、グラフィックスエンジン202を利用してプリンタ150に印刷ジョブデータを出力することにより、プリンタ150に印刷を行わせる。
グラフィックスエンジン202は、印刷装置毎に用意されたプリンタドライバ203を起動し、プリンタドライバ203は、アプリケーション201の印刷データをPDLによるプリンタ制御コマンドに変換する。プリンタドライバ203により変換されたプリンタ制御コマンドは、プリントサブシステム204を経て通信インタフェース221経由でプリンタ150に出力される。
プリントサブシステム204は、OSによって起動され、印刷ジョブのスケジューリング、プリンタ150との接続制御、及びプリンタ150のステータスの管理を行う。
プリンタドライバ203は、アプリケーション201から出力された印字や描画命令に対しプリンタ制御コマンドを生成しプリント出力に反映されるようプリンタ150に指示する機能だけでなく、プリンタドライバ203やプリンタ150が有する機能を制御するための設定を行う機能(以下、「ユーザインタフェース(UI)」という。)、その設定を記憶する機能、プリンタドライバ203やプリンタ150が有する機能の情報をアプリケーション201やOSに提供する機能、ユーザインタフェースで設定された機能をプリンタ150が有している場合にプリンタ制御命令を生成する機能、及び、ユーザインタフェースで設定された機能がプリンタドライバ203独自で行う機能の場合にその機能を実現する機能等を有する。
図3は、図1におけるホストコンピュータ100及びプリンタ150を適用可能な印刷制御システムの一例を示すシステム構成図である。
図3において、印刷システムは、複数のホストコンピュータ100、複数のプリンタ150a及び150b、及びプリントサーバコンピュータ300を有し、これらはネットワーク301を介して互いに接続されている。
ホストコンピュータ100がネットワーク301に接続される構成の場合、ホストコンピュータ100の通信I/Fコントローラ108はネットワークインタフェースカード(NIC)の機能を有するものとする。
プリンタ150aは、ネットワーク301に直接接続されている。また、プリンタ150bは、セントロニクスやUSB等のローカルインタフェース302を介して接続されたプリントサーバコンピュータ300を介してネットワーク301に接続されている。なお、プリンタ150aの入力部118は、ネットワークインタフェースカード(NIC)の機能を有するものとする。
プリントサーバコンピュータ300を介してネットワーク301に接続されるプリンタ150bにホストコンピュータ100のいずれかから印刷ジョブを送信する場合、まずホストコンピュータ100は、プリントサブシステム204を介して、プリントサーバコンピュータ300へ印刷ジョブを送信する。
プリントサーバコンピュータ300は、ホストコンピュータ100から送信されてきた印刷ジョブを、プリントサーバコンピュータ300が有するプリントサブシステムを介して、プリンタ150bへ送信する。これにより、ホストコンピュータ100は、プリントサーバコンピュータ300を介して印刷ジョブをプリンタ150bへ送信することができる。
また、ネットワーク301に直接接続されるプリンタ150aにホストコンピュータ100のいずれかから印刷ジョブを送信する場合、ホストコンピュータ100は、プリントサブシステム204を介してプリンタ150aに直接印刷ジョブを送信する。
図4は、図2のホストコンピュータ100のCPU101によって実行される、印刷制御処理の基本的な流れを示す図である。ここでは、図2にあるモジュール間の連携についての説明を行う。この説明では、アプリケーション201、グラフィックスエンジン202、及びプリンタドライバ203を動作主体として説明しているが、この図に記載されている各処理は、それらモジュールの制御に基づいてCPU101によって行われるものである。
図4において、アプリケーション201は、プリンタドライバ203と直接やり取りを行うのではなく、OSが有するグラフィックスエンジン202を介してプリンタドライバ203とやり取りを行う。グラフィックスエンジン202はアプリケーション201から指示を受け、プリンタドライバ203に対して指示を行う。
まず、アプリケーション201は、片面/両面設定や部数設定などの印刷設定をRAM102に確保されたメモリを介してグラフィックスエンジン202に通知し(ステップS401)、グラフィックスエンジン202は、通知された印刷設定と、該印刷設定を基にプリンタドライバ203が印刷処理を行う上で必要なプリンタドライバ情報を格納する新たにRAM102上に確保されたメモリ領域の初期化要求をプリンタドライバ203に送信する(ステップS402)。これにより、プリンタドライバ203は、そのプリンタドライバ203が印刷処理を行うために必要なプリンタドライバ情報を保持するメモリ領域を確保し、印刷設定に従ってそのメモリ領域を初期化する。
次に、プリンタドライバ203は、ステップS402で受信した印刷設定に応じたプリンタドライバ203の印刷能力をグラフィックスエンジン202に通知する(ステップS403)。グラフィックスエンジン202は、最終的にプリンタ150に送信される印刷ジョブと該印刷ジョブに反映する印刷設定とを関連付けるために必要なハンドル値をアプリケーション201に送信する(ステップS404)。
次に、アプリケーション201は、印刷の開始要求をグラフィックスエンジン202に行い(ステップS405)、グラフィックスエンジン202は、プリンタドライバ203に印刷開始要求を行う(ステップS406)。これにより、プリンタドライバ203は、PDLの生成処理を開始し、プリンタ150が印刷開始に必要なプリンタ命令を生成する。なお、プリンタ命令を生成する処理は、最初のページ(1ページ目)の印刷処理が開始された時点(アプリケーションからの最初のページの描画指示を受信した時点)で行ってもよい。
次に、アプリケーション201は、グラフィックスエンジン202に対して文字やイメージ等の描画オブジェクトの描画指示を行い(ステップS407)、グラフィックスエンジン202は、プリンタドライバ203に描画オブジェクトの描画指示を行う(ステップS408)。これにより、プリンタドライバ203は、指定された描画オブジェクトや改ページ、更には印刷設定を途中で変更するための要求などをプリンタ150からの出力結果に反映させるためのプリンタ制御命令を適宜生成する。なお、印刷するページ数はアプリケーション201からの指定による。
次に、アプリケーション201は、印刷終了要求をグラフィックスエンジン202に行い(ステップS409)、グラフィックスエンジン202は、プリンタドライバ203に印刷終了要求を行う(ステップS410)。これにより、プリンタドライバ203は、プリンタ150が印刷終了に必要なプリンタ命令を生成し、PDLの生成処理を終了する。
次に、アプリケーション201は、ステップS402で取得したハンドル値の破棄要求をグラフィックスエンジン202に通知し(ステップS411)、グラフィックスエンジン202は、プリンタドライバ203に、プリンタドライバ情報の破棄要求を送信する(ステップS412)。これにより、プリンタドライバ203は、プリンタドライバ情報の破棄処理を行う。
上記ステップS405〜ステップS410の処理により、プリンタ150へ送信する印刷ジョブデータが生成される。
図5は、図2のホストコンピュータ100のソフトウェア構成の詳細を示すブロック図である。
図5において、グラフィックスエンジン202からプリンタドライバ203へ印刷命令を送る際に、アプリケーション201からの印刷データを一旦中間コードからなるスプールファイル504を生成する。これにより、一旦スプールした中間コードデータの内容に対して、拡大縮小や、複数ページを1ページに縮小して印刷する等の加工を行うことにより、アプリケーションが有していない機能を実現することができる。
なお、印刷データの加工を行うためには、通常プリンタドライバ203が提供するウィンドウから設定を行い、プリンタドライバ203がその設定内容をRAM102上あるいは外部メモリ111上に保管する。
グラフィックスエンジン202からの印刷命令であるDDI関数をディスパッチャ501が受け取る。ディスパッチャ501がグラフィックスエンジン202から受け取った印刷命令(DDI関数)が、アプリケーション201からグラフィックスエンジン202へ発行された印刷命令(GDI関数)に基づくものである場合には、ディスパッチャ501による制御に基づいてCPU101は、外部メモリ111に格納されている内部スプール処理モジュールであるスプーラ503をRAM102にロードし、通常の印字データ作成処理部507ではなくスプーラ503へ印刷命令(DDI関数)を送付する。
スプーラ503は受け取った印刷命令を解析し、ページ単位に中間コードに変換してスプールファイル504に出力する。このページ単位に格納されている中間コードのスプールファイルをページ描画ファイル(PDF:Page Description File)と呼ぶ。また、スプーラ503は、プリンタドライバ203に対して設定されている印刷データに関する加工設定(製本印刷、Nup、両面、ステイプル、カラー/モノクロ指定等)をプリンタドライバ203から取得してジョブ単位のファイルとしてスプールファイル504に保存する。
このとき、ジョブ単位に格納されている設定ファイルをジョブ設定ファイル(SDF:Spool Description File)と呼ぶ。なお、スプールファイル504は外部メモリ111上にファイルとして生成されるが、RAM102上に生成されても構わない。更に、スプーラ503による制御に基づいてCPU101は、外部メモリ111に格納されているスプールファイルマネージャ505をRAM102にロードし、スプールファイルマネージャ505に対してスプールファイル504の生成状況を通知する。そしてスプールファイルマネージャ505による制御に基づいてCPU101は、スプールファイル504に保存された印刷データに関する加工設定の内容に従って印刷を行えるか否かを判断する。
CPU101がグラフィックスエンジン202を利用して印刷を行えると判断した場合には、外部メモリ111に格納されているデスプーラ506をRAM102にロードし、デスプーラ506に対して、スプールファイル504に記述された中間コードのページ描画ファイルの印刷処理を行うように指示する。
デスプーラ506による制御に基づいてCPU101は、スプールファイル504に含まれる中間コードのページ描画ファイルをスプールファイル504に含まれる加工設定情報を含むジョブ設定ファイルに従って加工し、GDI関数を再生成し、再度グラフィックスエンジン202経由でGDI関数を出力する。
プレビューア508は、スプールファイル504保存された中間コードや加工設定に基づいてCRT110への表示情報を作成し、所定のUI上に表示するよう制御を行う。
ディスパッチャ501がグラフィックスエンジン202から受け取った印刷命令(DDI関数)がデスプーラ506からグラフィックスエンジン202へ発行された印刷命令(GDI関数)に基づいたものである場合には、ディスパッチャ501による制御に基づいてCPU101はスプーラ503ではなく、プリンタドライバの通常の印字データ作成処理部507に印刷命令を送る。プリンタドライバ203による制御に基づいてCPU101は、グラフィックエンジン202から取得したDDI関数に基づいてPDL等からなるプリンタ制御コマンドを生成し、プリントサブシステム204経由でプリンタ150に出力する。
本実施の形態において、描画属性をテキスト、イメージ、グラフィックスの3種類に大別し、夫々をテキストオブジェクト、イメージオブジェクト、グラフィックスオブジェクトという。簡単に分類すると文字データはテキストオブジェクト、画像データはイメージオブジェクト、ベクトル(図形)データはグラフィックスオブジェクトとなる。
本発明では、図6〜図10のUIでそれぞれのオブジェクトの印刷の可否を登録し、登録内容に基づいて印刷を実行することで特定オブジェクト印刷を実現する。
以下、特定オブジェクトの印刷制約条件設定登録について説明する。
図6は、特定オブジェクト登録UI600の一例を示す図である。
図6において、設定一覧601は、既に登録されている印刷制約条件設定の一覧である。設定一覧601には印刷時に選択可能な印刷設定「設定A」、「設定B」、及び「設定C」と、それらのファイル名が表示される。「設定A」で選択された登録内容においては左側に「設定A」と表示される。
設定一覧601に新たに印刷設定を登録する場合は、ファイル名入力欄604にファイル名を入力し、全般設定の色設定605、印刷品質設定606を選択し、特定オブジェクト選択のイメージ設定607、図形設定608、及び文字設定609を印刷するか否かを夫々選択し、新規追加ボタン602を押下して登録する。設定が新規登録されると、ファイル名が設定一覧601に追加されると共に、後述する図11の特定オブジェクト設定情報1100が外部メモリ111に保存される。
この特定オブジェクト登録UI600で印刷設定を行うことにより、コマンドサイズを小さくすることが可能になる。よって通信回線の混雑を回避し、印刷時間を短縮することができる。また、ユーザは、任意のオブジェクトを選択して印刷することができるので、ユーザの利便性が高い。
設定一覧601から印刷設定を削除したい場合は、設定一覧601の中から削除したい印刷設定を選択し、削除ボタン603を押下する。
OKボタン611が押下されると設定を終了し、新規追加ボタン602を押下する前にキャンセルボタン612が押下された場合は、設定は登録されない。
また、特定オブジェクト登録UI600で登録された印刷設定又は登録途中の印刷設定のプレビュー画像はサンプルデータ613で確認することができる。例えば、イメージを「枠線」で印刷、図形を「印刷する」、文字を「印刷しない」、色は「モノクロ」、印刷品質は「はやい」を選択した場合は、設定内容と同じようにプレビュー画像が表示される。プレビュー画像は外部メモリ111に記憶されており、特定オブジェクト登録UI600で指定された条件に基づいて、CPU101は適切なプレビュー画像を外部メモリ111から呼び出し、サンプルデータ613に表示させる。
このようなプレビュー画像が表示されるので、プレビュー画像を確認して印刷設定を選択することができる。
イメージ設定607で「印刷する」が選択された場合には、イメージ設定ボタン610を押下することが可能になり、イメージ設定ボタン610が押下されると図7のイメージ設定UI700が表示される。このイメージ設定UI700では、イメージオブジェクトの印刷の詳細設定を行うことができる。
図7において、イメージ設定UI700では、イメージデータを加工することができ、加工内容として「通常印刷」、「粗い」(解像度を落とす)、又は「枠線」を選択することができる。イメージデータを加工せずに印刷ジョブデータにすると、コマンドサイズが大きくなり、回線を圧迫する原因となる。イメージ設定UI700で「通常印刷」より「粗い」、「粗い」より「枠線」を選択することにより、相対的にコマンドサイズを減らし、もって印刷終了時間の短縮や、回線の混雑回避を図ることができる。
図8は、アプリケーション登録UI800の一例を示す図である。
アプリケーション登録は、基本的には特定オブジェクト登録と同じであるが、アプリケーション別に設定登録が可能である点で特定オブジェクト登録と異なる。
図8において、設定一覧801には、ビジネスシーンでよく使用されるアプリケーションが予め登録されている。左側に「●」があるものが予め登録されているアプリケーションである。予め登録されているアプリケーションもユーザにより設定内容を変更することができる。また、予め登録されていないアプリケーションは、ファイル名803と拡張子804を設定し、新規追加ボタン802を押下することにより登録することができる。アプリケーション登録で登録された内容は拡張子で管理しているため、同じアプリケーションの設定は複数できるが、同一拡張子の設定は一つしか登録できない。勿論、拡張子で管理を行わず、アプリケーションごとに設定を管理する手法を採用しても構わない。
アプリケーションは夫々特徴をもったデータを作成するので、アプリケーション登録UI800でアプリケーション登録を行うことにより、アプリケーションの特徴別に設定内容を登録し、もってユーザの利便性を向上させることができる。
図9は、特定オブジェクト設定UI900の一例を示す図である。
図9において、設定A、設定B、及び設定Cのコンボボックス901を用いて、特定オブジェクト登録UI600で登録された印刷制約条件設定を選択する。図6の設定一覧601には、ここで設定されたものが表示される。共通設定903では、現在設定されている後述する図12の共通設定情報1200が表示される。設定変更ボタン904が押下されると、図10の共通設定UIが表示され、共通設定903の設定内容を変更することができる。
図10は、共通設定UI1000の一例を示すである。
図10において、時間設定1001では、印刷を終了するまでの時間として許容できる時間を設定する。デフォルト設定1002では、印刷実行時にどの印刷設定をデフォルトの設定として使用するかを設定する。印刷設定ダイアログ表示設定1003では、印刷実行時に後述する図23の印刷設定確認UI2300を表示するか否かの設定ができる。印刷設定ダイアログ表示設定1003で「表示する」が選択されている場合、チェックボックス1004にチェックを入れることができる。チェックボックス1004にチェックが入っている場合、通常印刷の印字終了予定時間と時間設定1001で設定した時間を比較して、通常印刷が設定時間内に終了するときには、通常印刷で出力し、印刷設定確認UI2300は表示しない。
OKボタン1005が押下されると、共通設定UI1000で設定された内容は後述する図12の共通設定情報1200として外部メモリ111に記憶される。
図11は、外部メモリ111に保持される特定オブジェクト設定情報1100の一例を示す図である。
図11において、特定オブジェクト設定情報1100は、オブジェクト毎の印刷可否の設定を示す情報である。オブジェクト情報1101の設定情報1102には、図6の設定一覧601に表示されている印刷時に選択可能な設定の情報が保存されている。例えば、設定情報1102の右辺には、設定Aの場合には「A」、設定Bの場合には「B」、設定Cの場合には「C」と、設定されてない場合は「D」が保存される。通常印刷の場合は、ユーザからは変更ができないが、設定1102の右辺には「X」が保存され、図8でアプリケーション別で登録した場合は、「Y」が保存される。ここでは、設定Aを示す「A」が保存されている。
また、ファイル名情報1103の右辺には、図6の設定一覧601に入力されたファイル名が、「(ファイル名).soj」というように保存される。
色情報1105の右辺には、図6の全般設定の色設定605で選択された色情報を示す値、例えば、色設定605で「カラー」が選択された場合は「0」、モノクロが選択された場合は「1」が保存される。
印刷品質情報1106の右辺には、図6の全般設定の印刷品質設定606で選択された印刷品質情報を示す値、例えば、印刷品質設定606で「きれい」が選択された場合は右辺に「0」、「はやい」が選択された場合は「1」が保存される。
イメージ情報1107の右辺には、図6のイメージ設定607で選択された情報を示す値、例えば、「印刷しない」が選択された場合は「0」、「印刷する」が選択された場合は「1」が保存される。同様に、グラフィックス情報1108、テキスト情報1109の右辺にも、グラフィックス設定608、テキスト設定609で選択された情報を示す値が夫々保存される。
イメージ設定情報1110には図7のイメージ設定画面700で選択された情報を示す値、例えば、「通常印刷」が選択された場合は「0」、「粗い」が選択された場合は「1」、「枠線」が選択された場合は「2」が保存される。
図12は、外部メモリ111に保持される共通設定情報1200の一例を示す図である。
図12において、オブジェクト情報1201のA〜Cには、図9のコンボボックス901で設定された設定A〜Cのファイル名が夫々保存されている。共通設定情報1202には、共通設定UI1000で設定された設定内容が保存される。即ち、時間設定1001、デフォルト設定1002、印刷設定ダイアログ表示設定1003で設定された設定内容は、時間情報1203、デフォルト情報1204、印刷設定ダイアログ表示情報1205に夫々保存される。
デフォルト設定1204には、通常印刷の場合には「0」、アプリケーションの場合には「1」、設定Aの場合には「2」、設定Bの場合には「3」、設定Cの場合には「4」が保持される。印刷設定ダイアログ表示設定情報1205には、印刷設定ダイアログ表示設定1003で「表示する」が選択された場合には「0」、「表示しない」が選択された場合には「1」、チェックボックス1004にチェックが入っている場合には「3」が保存される。
以上のようにして、特定オブジェクト設定情報1100及び共通設定情報1200が登録済み状態で印刷を実行した場合の流れを以下に説明する。
図13は、図1におけるホストコンピュータ100のCPU101によって実行される印刷制御処理のフローチャートである。
図13において、プリンタドライバ203による制御に基づいてCPU101は、アプリケーション201から印刷実行が指示されると、外部メモリ111から共通設定情報1200を取得し(ステップS1301)、どのアプリケーションから印刷実行が指示されているかを示すアプリケーション情報を取得し(ステップS1302)、後述する図14の描画命令取得処理を実行して、OSから描画命令をオブジェクト毎に取得し、取得した描画命令から印刷すべきデータの大きさやどのような描画がなされているかを示す情報を取得する(ステップS1303)。
次に、ステップS1301で取得した共通設定情報1200の印刷設定ダイアログ表示設定1205に基づいて印刷設定確認UI2300を表示するか否かを判別し(ステップS1304)、印刷設定確認UI2300を表示するときは、後述する図15の回線状況情報取得処理を実行して、通信回線の現在のネットワーク速度を計算し(ステップS1305)、外部メモリ111から特定オブジェクト設定情報1100を取得し(ステップS1306)、後述する図16の印字終了時間計算処理を実行して、夫々の設定における印字終了予定時間を計算する(ステップS1307)。
次に、ステップS1301で取得した共通設定情報1200の印刷設定ダイアログ表示設定1205が「3」の場合、即ち、共通設定UI1000の印刷設定ダイアログ表示設定1003で「表示する」が選択され、「通常印刷が設定時間内に終了するとき、通常印刷で出力する」のチェックボックス1004にチェックがされた場合は、ステップS1307で算出した通常印刷モードの印刷終了予定時間と、共通設定情報1200の時間設定1203とを比較して、時間設定1203の時間内に通常印刷が終了できるか否かを判別する(ステップS1308)。
ステップS1308の判別の結果、ダイアログ情報1205が「3」でないか、又は設定時間1203内に通常印刷が終了できないときは、後述する図22の印刷設定確認UI表示処理を実行して、図23の印刷設定確認UI2300を表示する(ステップS1309)。一方、ダイアログ情報1205が「3」の場合において、設定時間1203内に通常印刷が終了できるときは、印刷設定確認UI表示処理を実行することなくステップS1310に進むので、ユーザの利便性を向上させることができる。
図23は、印刷設定確認UI2300の一例を示す図である。
図23において、印刷設定確認UI2300は、アプリケーション201で選択されたプリンタ名2301と、印刷するデータの1ページ目を各設定で印刷した場合のプレビュー2304と、印刷プレビューボタン2307と、印刷するデータを現在の回線状況で印刷する場合の印刷終了予定時間2303と、設定変更ボタン2305と、印刷ボタン2310と、タイマー印刷ボタン2311と、キャンセルボタン2312とを有する。
通常印刷、アプリケーション、設定A、設定B、及び設定Cのプレビューに対して、夫々1〜5のウィンドウ番号2308が付されている。表示2302は、図10のデフォルト設定1002で選択されている設定(ここでは設定A)を示している。
設定変更ボタン2305が押下されると、登録ファイル名にフォーカスがあたった状態で図6の特定オブジェクト登録UI600が表示され、設定変更が可能である。これにより、複数の異なる条件の印刷可否設定のうち一の印刷可否設定を選択するので、ユーザの利便性を向上させることができる。また、出力結果を比較できるユーザインタフェースを提供し、出力前にデータを比較して確認させることで、印刷ミスが防止され、回線の混雑を軽減することができる。
また、印刷するデータを現在の回線状況で印刷する場合の印刷終了予定時間2303が表示されるので、印刷終了時間を参照して印刷設定を選択することができる。
表示2306は、印刷しようとしているアプリケーション201が、アプリケーション登録で登録されている場合に表示される。印刷プレビューボタン2307が押下されると、選択されている設定の全ページのプレビューが表示される。これにより、設定された印刷可否設定で印刷した場合のプレビュー画像を表示するので、プレビュー画像を確認して印刷設定を選択することができる。
印刷ボタン2310又はタイマー印刷ボタン2311が押されると、プリンタドライバ203は、印刷ジョブデータを作成する。タイマー印刷ボタン2311が押下されると、図25のタイマー印刷ダイアログ2500が表示される。
図25において、タイマー印刷ダイアログ2500では、ファイル出力又はタイマー印刷を選択することができる。また、タイマー印刷の場合は、出力時間を設定することができる。設定後は印刷処理の系に流れるが、プリンタ150に出力ファイルを出力せず、ホストコンピュータ100に出力ファイルを保存し、設定時刻になったら、プリンタ150に出力ファイルを出力する。
なお、プレビュー2304は、図5のプレビューア508による制御に従ってCPU101によって作成される。プレビュー表示する頁は、必ずしも1ページ目が適切であるとは限らないので、変更できるように構成することも勿論可能である。
図13に戻り、印刷設定確認UI2300において、図23のキャンセルボタン2312が押下されて印刷処理がキャンセルされたか否かを判別し(ステップS1310)、印刷処理がキャンセルされたときは、不図示の印刷終了ダイアログを表示して(ステップS1316)、本処理を終了する。ステップS1304でNOと判定された場合、及びステップS1308でYESと判定された場合には、印刷設定確認UI2300が表示されないので、印刷処理のキャンセルを行うことはできない。よって、ステップS1310の判別ではNOと判別されることになる。
ステップS1310の判別の結果、印刷処理がキャンセルされず、印刷設定確認UI2300で印刷ボタン2310又はタイマー印刷ボタン2311が押下されて印刷が指示されたときは、特定オブジェクト設定情報1100を取得し(ステップS1311)、後述する図24のPDLデータ作成処理を実行して、ステップS1311で取得した特定オブジェクト情報1100に基づいて、ステップS1303で取得した描画命令から印字するオブジェクトの印刷ジョブデータ(PDLデータ)を作成する(ステップS1312)。
次に、印刷設定確認UI2300でタイマー印刷が選択されたか否かを判別し(ステップS1313)、タイマー印刷が選択されたときは、ステップS1312で作成されたPDLデータをファイルとして外部メモリ111に保存し(ステップS1315)、本処理を終了する。この場合、印刷終了前にホストコンピュータ100がシャットダウンされるときは、警告メッセージをCRT110に表示するように構成してもよい。
ステップS1313の判別の結果、タイマー印刷選択されなかったときは、ステップS1312で作成された印刷ジョブデータ(PDLデータ)をプリンタ150に送信し(ステップS1313)、本処理を終了する。なお、印刷設定確認UI2300が表示されない場合にはタイマー印刷を選択することができないので、ステップS1313の判別はNOとなる。
図14は、図13のステップS1303の画像データ取得処理のフローチャートである。
図14において、OSからオブジェクトの描画命令を受け付けると(ステップS1401)、夫々の描画命令に対応する順番情報を設定する(ステップS1402)。この順番情報は、各オブジェクトを描画する順番を示すものであり、実際に印刷ジョブデータを作成する際に適切な印刷ジョブデータを作成するために設定される。その後、スプーラ503は、描画命令を受け付けたオブジェクトの描画属性を判別する(ステップS1403)。
描画属性を判別したあと、描画属性毎に論理的に区分した形でスプールファイル504(図5)に描画命令をスプールしていく。即ち、ステップS1403の判別の結果、描画命令がテキストオブジェクトの場合は、テキスト描画命令を取得し(ステップS1404)、スプールファイル504にテキスト描画命令を追加し(ステップS1405)、取得したテキストオブジェクトの数を示すテキストオブジェクト数をカウントアップ(ステップS1406)する。
イメージオブジェクト、及びグラフィックスオブジェクトに関しても同様に描画命令を取得し(ステップS1414、ステップS1424)、スプールファイル504に描画命令を追加し(ステップS1415、ステップS1425)、オブジェクト数をカウントアップする(ステップS1416、ステップS1426)。
次に、OSから描画終了命令が発行されたか否かを判別し(ステップS1407)、描画終了命令が発行されていないときは、ステップS1402に戻り、OSから受け付けた次の描画命令について上記処理を行い、描画終了命令が発行されたときは、本処理を終了する。
図15は、図13のステップS1305の回線状況情報取得処理のフローチャートである。
図15において、ホストコンピュータ100のCPU101は、予め用意しておいたx[byte]のダミーパケットを通信I/FC108を介してプリンタ150に送信する(ステップS1501)。ダミーパケットを受信したプリンタ150のCPU112は、リターンパケットを入力部118を介してホストコンピュータ100に送信し、ホストコンピュータ100のCPU101は、プリンタ150からのリターンパケットサイズy[byte]を取得する(ステップS1502)。
次いで、ホストコンピュータ100のCPU101は、次いでネットワーク速度を計算する(ステップS1503)。ネットワーク速度の計算は、以下のように行う。パケットを送信してからリターンパケット受けるまでの時間をZ[ms]とする。プリンタ150側でパケットを受け取ってから返すまでのプリンタ側の応答時間α[ms]はプリンタドライバ203のプリンタ能力データファイルに機種毎に保持されている。全パケットサイズはx+y[byte]であり、回線時間はZ−α[ms]であるので、回線速度β=(x+y)/(Z−α)[byte/ms]が求まる。
図16は、図13のステップS1307の印字終了予定時間計算処理のフローチャートである。
図16において、テキストオブジェクト印字終了予定時間計算処理(図17)を実行し(ステップS1601)し、イメージオブジェクト印字終了予定時間計算処理(図18)を実行し(ステップS1602)、グラフィックスオブジェクト印字終了予定時間計算処理(図19)を実行する(ステップS1603)。
次に、ステップS1601〜S1603で計算した各オブジェクトの印字終了予定時間に基づいて、設定毎の印字終了予定時間算出処理(図20)を実行する(ステップS1604)。本処理により、印刷終了時間を把握することができる。
図17は、図16のステップS1601のテキストオブジェクト印字終了予定時間計算処理のフローチャートである。
図17において、図14のステップS1406でカウントアップしたテキストのオブジェクト数t01[obj]を取得し(ステップS1701)、取得したテキストオブジェクト数t01と図21のオブジェクトサイズ計算用係数Γ1[byte/obj]を乗算してオブジェクトサイズt02[byte]を計算する(ステップS1702)。この係数Γは予め計算用係数として外部メモリ111に保持されている。これ以降に出てくる計算用係数は理論値として予めプリンタ毎に保持してある。
次に、オブジェクトサイズt02と図15の回線状況情報取得処理で計算したβ[byte/ms]とに基づいて、ネットワークの処理時間t03[ms]を計算し(ステップS1703)、テキストのオブジェクト数t01とプリンタドライバ処理時間計算用係数Γ2[ms/obj]を乗算し、プリンタドライバの処理時間t04[ms]を計算する(ステップS1704)。
次に、テキストのオブジェクト数t01とデバイスの処理時間計算用係数Γ3[ms/obj]を乗算し、デバイス処理時間t05[ms]を計算し(ステップS1705)、t03、t04とt05を足し合わせた時間を、テキストオブジェクトの印刷終了予定時間t06として算出する(ステップS1706)。
図18は、図16のステップS1602のイメージオブジェクト印字終了予定時間計算処理のフローチャートである。
本処理は、図17の処理と基本的に同様の処理であり、図17と異なる部分のみ説明する。本処理は、図7のイメージ設定画面700で設定されたイメージオブジェクトの印刷設定によって、計算に使用する係数が異なる点が図17の処理と異なる。ステップS1802〜S1805では、「通常印刷」の場合は図21のイメージオブジェクト1、「粗い」の場合はイメージオブジェクト2、「枠線」の場合はグラフィクスの係数を使用して計算する。ステップS1806では、イメージオブジェクトの印字終了予定時間は、夫々「通常印刷」はt16、「粗い」の場合はt17、「枠線」の場合はt18として算出される。
図19は、図16のステップS1603のグラフィックスオブジェクト印字終了計算処理のフローチャートである。
図19の処理も、図17の処理と基本的に同様の処理であり、図17と異なる部分のみ説明する。ステップS1902〜S1905では、図21のグラフィクスの係数を使用して計算する。ステップS1906では、グラフィックスオブジェクトの印字終了予定時間は、t26として算出される。
図20は、図16のステップS1604の設定毎の印字終了予定時間算出処理のフローチャートである。
図20において、外部メモリ111から特定オブジェクト設定情報1100を取得し(ステップS2001)、取得した特定オブジェクト設定情報1100に基づいてテキストオブジェクトを印字するか否かを判別し(ステップS2002)、テキストオブジェクトを印字するときは、テキストオブジェクト印刷終了予定時間を加算し(ステップS2003)、テキストオブジェクトを印字しないときは、テキストオブジェクト印刷終了予定時間を加算することなくステップS2004に進む。
次に、取得した特定オブジェクト設定情報1100に基づいてイメージオブジェクトを印字するか否かを判別し(ステップS2004)、イメージオブジェクトを印字しないときは、ステップS2007に進み、イメージオブジェクトを印字するときは、イメージをどの設定で印字するかを判別する(ステップS2005)。
ステップS2005の判別の結果、「枠線」設定のときは、「枠線」設定の終了予定時間を加算し(ステップS2006)、「通常印刷」設定のときは、「通常印刷」設定の終了予定時間を加算し(ステップS2016)、「粗い」設定のときは、「粗い」設定の終了予定時間を加算し(ステップS2026)、ステップS2007に進む。
次に、取得した特定オブジェクト設定情報1100に基づいてグラフィックスオブジェクトを印字するか否かを判別し(ステップS2007)、グラフィックスオブジェクトを印字するときは、グラフィックスオブジェクト印刷終了予定時間を加算し(ステップS2008)、テキストオブジェクトを印字しないときは、グラフィックスオブジェクト印刷終了予定時間を加算することなくステップS2009に進む。
次いで、共通設定UI1000のチェックボックス1004がチェックされているか否かを判別し(ステップS2009)、チェックボックス1004がチェックされているときは、通常印刷にかかる印字終了予定時間と、時間設定1001で設定した時間を比較する(ステップS2010)。
次に、設定毎の印字終了予定時間の計算を終了するか否かを判別し(ステップS2011)、印字終了予定時間の計算を終了しないときは、ステップS2001に戻り、印字終了予定時間の計算を終了するときは、本処理を終了する。
ここで、図10の「通常印刷が設定時間以内に終了するとき、通常印刷で出力する」チェックボックス1004にチェックが入っている場合において、ステップS2010の比較の結果、通常印刷にかかる印字終了予定時間より、時間設定1001で設定した時間の方が大きかった場合は、その後のアプリケーション登録、設定A、設定B、及び設定Cの印字終了予定時間の計算はしない。それ以外の場合には、アプリケーション登録、設定A、設定B、及び設定Cの順番で計算を行っていく。
即ち、ステップS2011の判別は、ステップS2010の比較の結果、図10の「通常印刷が設定時間以内に終了するとき、通常印刷で出力する」チェックボックス1004にチェックが入っている時に通常印刷にかかる印字終了予定時間より、時間設定1001で設定した時間の方が大きかったか、又はアプリケーション登録、設定A、設定B、及び設定Cの全ての設定の印字終了予定時間の計算が終了したか否かを判別することにより行う。
印刷終了予定時間の他の計算方法として、描画属性別に係数を有し、文字数や描画データサイズを取得して計算することも可能である。
図22は、図13のステップS1309の印刷設定確認UI表示処理のフローチャートである。本処理は、図23の印刷設定確認UI2300をCRT110に表示する処理である。
図22において、まず、外部メモリ111から特定オブジェクト設定情報1100を取得し(ステップS2201)、取得した特定オブジェクト設定情報1100に基づいてテキストオブジェクトを印字するか否かを判別し(ステップS2202)、テキストオブジェクトを印字するときは、ステップS1404で取得したテキストオブジェクト描画命令を取得し(ステップS2203)、テキストオブジェクトを印字しないときは、テキストオブジェクト描画命令を取得することなく、ステップS2204に進む。
次に、取得した特定オブジェクト設定情報1100に基づいてイメージオブジェクトを印字するか否かを判別し(ステップS2204)、イメージオブジェクトを印字するときは、イメージ設定UI700でどの設定が選択されているかに応じてステップS1414で取得したイメージオブジェクト描画命令を取得し(ステップS2205)、イメージオブジェクトを印字しないときは、イメージオブジェクト描画命令を取得することなく、ステップS2206に進む。
次に、取得した特定オブジェクト設定情報1100に基づいてグラフィックスオブジェクトを印字するか否かを判別し(ステップS2206)、グラフィックスオブジェクトを印字するときは、ステップS1424で取得したグラフィックスオブジェクト描画命令を取得し(ステップS2207)、グラフィックスオブジェクトを印字しないときは、グラフィックスオブジェクト描画命令を取得することなく、ステップS2208に進む。
次に、ステップS1402(図14)で設定した順番情報の順に描画処理を行い(ステップS2208)、全ての描画情報の収集を終了したか否かを判別し、全ての描画情報の収集を終了していないときは、ステップS2201に戻り、全ての描画情報の収集を終了したときは、収集した情報に基づいて印刷設定確認UI2300を表示し(ステップS2210)、本処理を終了する。
図24は、図13のステップS1312のPDLデータ作成処理のフローチャートである。
図24において、プリンタドライバ203による制御に基づきCPU101は、外部メモリ111から特定オブジェクト設定情報1100を取得し(ステップS2401)、印刷品質1106及び色1105をプリンタドライバ203の設定に反映させる。
次に、取得した特定オブジェクト設定情報1100に基づいてテキストオブジェクトを印字するか否かを判別し(ステップS2403)、テキストオブジェクトを印字するときは、テキストオブジェクトを印字するときは、ステップS1404で取得したテキストオブジェクト描画命令を取得し(ステップS2404)、テキストオブジェクトを印字しないときは、テキストオブジェクト描画命令を取得することなく、ステップS2405に進む。
次に、取得した特定オブジェクト設定情報1100に基づいてイメージオブジェクトを印字するか否かを判別し(ステップS2405)、イメージオブジェクトを印字するときは、イメージ設定UI700でどの設定が選択されているかに応じてステップS1414で取得したイメージオブジェクト描画命令を取得し(ステップS2406)、イメージオブジェクトを印字しないときは、イメージオブジェクト描画命令を取得することなく、ステップS2407に進む。
次に、取得した特定オブジェクト設定情報1100に基づいてグラフィックスオブジェクトを印字するか否かを判別し(ステップS2407)、グラフィックスオブジェクトを印字するときは、ステップS1424で取得したグラフィックスオブジェクト描画命令を取得し(ステップS2408)、グラフィックスオブジェクトを印字しないときは、グラフィックスオブジェクト描画命令を取得することなく、ステップS2409に進む。
次に、特定オブジェクト設定情報1100に基づいてテキストオブジェクトのみの印刷であるか否かを判別し(ステップS2410)、テキストオブジェクトのみの印刷であるときは、テキストを再配置して描画命令を発行することにより描画処理を行う(ステップS2411)。テキストの再配置をすることによって、テキストを連続的に印刷し、用紙を節約することができる。
ステップS2410の判別の結果、テキストオブジェクトのみの印刷でないときは、設定されている順番情報の順にオブジェクトの描画命令を発行して描画処理を行う(ステップS2412)。
本実施の形態において、特定オブジェクト設定1100の内容が、例えば、イメージを「枠線」で印刷、図形を「印刷する」、文字を「印刷する」、色は「モノクロ」、印刷品質は「はやい」となっている場合、図26の印刷データを印刷すると、図27の出力結果が出力される。
該印刷データを通常印刷で印刷した場合のコマンドは、図28のように発行される。また、該印刷データを特定オブジェクト印刷で印刷した場合のコマンドは、図29のように発行される。通常印刷のコマンドサイズは「19260バイト」であり、特定オブジェクト印刷のコマンドサイズは「5808バイト」になる。この例で、通常印刷した場合のイメージデータのコマンドサイズは約12700バイトであるが、特定オブジェクト印刷を行うことで約10000バイトのコマンドサイズを近く削減することができる。また、カラーをモノクロにすることで、更にコマンドサイズを削減することができる。
本実施の形態によれば、プリンタドライバ203は、アプリケーション201から印刷実行が指示されると、OSから描画命令をオブジェクト毎に取得し、オブジェクト毎の印刷可否の設定を示す情報である特定オブジェクト設定情報1100を取得し、印字するオブジェクトの印刷ジョブデータ(PDLデータ)を作成し、作成された印刷ジョブデータ(PDLデータ)をプリンタ150に送信するので、一部のオブジェクト印刷を単純に行うのではなく、全てのオブジェクトを抽出した上でコマンドサイズを小さくし、もってユーザの利便性を損なうことなく通信回線の混雑を回避し、印刷時間を短縮することができる。
また、本発明の目的は、上記実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム又は装置に供給し、そのシステム又は装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読出して実行することによっても達成されることは云うまでもない。
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、プログラムコード、及びそのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは云うまでもない。
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPU等が実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは云うまでもない。
また、上記プログラムは、上述した実施の形態の機能をコンピュータで実現することができればよく、その形態は、オブジェクトコード、インタプリタにより実行されるプログラムコード、OSに供給されるスクリプトデータ等の形態を有するものでもよい。
プログラムを供給する記録媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、他のROM等を用いることができる。又は、上記プログラムは、インターネット、商用ネットワーク、若しくはローカルエリアネットワーク等に接続される不図示の他のコンピュータやデータベース等からダウンロードすることにより供給される。