JP2006293561A - プリンタドライバ及びそのプリンタシステム - Google Patents
プリンタドライバ及びそのプリンタシステム Download PDFInfo
- Publication number
- JP2006293561A JP2006293561A JP2005111348A JP2005111348A JP2006293561A JP 2006293561 A JP2006293561 A JP 2006293561A JP 2005111348 A JP2005111348 A JP 2005111348A JP 2005111348 A JP2005111348 A JP 2005111348A JP 2006293561 A JP2006293561 A JP 2006293561A
- Authority
- JP
- Japan
- Prior art keywords
- printer
- intermediate code
- image data
- bitmap image
- procedure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Accessory Devices And Overall Control Thereof (AREA)
- Record Information Processing For Printing (AREA)
Abstract
【課題】最適な印刷パフォーマンスを実現できる汎用プリンタドライバとそれを有するプリンタシステムを提供する。
【解決手段】印刷コマンドから所定の印刷範囲毎の中間コードを生成し,プリンタのコントローラに当該中間コードを出力し,当該コントローラに中間コードからビットマップ画像データを展開させるプリンタシステムにおけるプリンタドライバである。汎用プリンタドライバが選択されたプリンタからそれぞれ最適の事前展開タイミング決定パラメータを受信し,そのパラメータに基づいて中間コードの生成で良いか,それともプリンタに出力する前に事前にビットマップ画像データに展開する必要があるかを判断することができる。それにより,最適なタイミングで事前展開に切り換えることができ,全体の印刷スループットを向上させることができる。
【選択図】図2
【解決手段】印刷コマンドから所定の印刷範囲毎の中間コードを生成し,プリンタのコントローラに当該中間コードを出力し,当該コントローラに中間コードからビットマップ画像データを展開させるプリンタシステムにおけるプリンタドライバである。汎用プリンタドライバが選択されたプリンタからそれぞれ最適の事前展開タイミング決定パラメータを受信し,そのパラメータに基づいて中間コードの生成で良いか,それともプリンタに出力する前に事前にビットマップ画像データに展開する必要があるかを判断することができる。それにより,最適なタイミングで事前展開に切り換えることができ,全体の印刷スループットを向上させることができる。
【選択図】図2
Description
本発明は,プリンタドライバ及びそのプリンタシステムに関し,特に,ビットマップ画像データ展開のための中間コードを生成するプリンタドライバ及びそのプリンタシステムに関する。
プリンタシステムは,ホストコンピュータ上で動作するプリンタドライバと,印刷エンジンとそれをコントロールするコントローラとからなるプリンタ(画像形成装置)とで構成される。プリンタドライバは,ホストコンピュータのオペレーティングシステム(OS)からの描画関数コールを受信してプリンタが認識できるプリンタ制御コードを生成する。プリンタ制御言語には,ページ記述言語(PDL)または中間言語で記述された中間コードがある。プリンタドライバは,プリンタの処理能力が高い場合は,ページ記述言語を生成してプリンタに送信する。一方,プリンタの処理能力が低い場合は,ビットマップ画像データへの展開が容易な中間コードを生成してプリンタに送信する。
プリンタのコントローラは,ページ記述言語を受信する場合は,それから中間コードを生成し,印刷エンジンの動作に同期して中間コードからビットマップ画像データを展開しながら,その展開された画像データから生成した画像再生信号を印刷エンジンに出力する。また,中間コードを受信する場合は,コントローラは,その中間コードをメモリに格納しておき,印刷エンジンの動作に同期して中間コードからビットマップ画像データを展開し,画像再生信号を印刷エンジンに出力する。中間コードを利用することによりビットマップ画像データへの展開処理を短時間で可能にし,印刷エンジンの動作時間にその展開処理時間を吸収させることができ,全体の印刷スループットを短くすることができる。
かかる中間コードからなる印刷データを受信して画像形成するプリンタシステムについては,例えば特許文献1に記載されている。このプリンタシステムでは,プリンタが,ホストコンピュータからページ記述言語による印刷データが送信された場合と,中間コードの印刷データが送信された場合のいずれにも対応できるように構成されている。
一方で,近年において,プリンタの低コスト化の要請と,ホストコンピュータの能力増大の傾向に対応して,ホストコンピュータのプリンタドライバ側でできるだけ画像処理を行わせるホストベースのプリンタシステムが注目されている。かかるプリンタシステムでは,プリンタドライバが印刷コマンドから中間コードを生成してプリンタのコントローラに出力する。したがって,プリンタコントローラでは,ページ記述言語から中間コードへの変換処理が不要になる。
特開平10−40031号公報
従来は,プリンタの機能及び性能に対して最適化された専用のプリンタドライバがホストコンピュータにインストールされるのが一般的である。しかしながら,ネットワーク内に複数のプリンタが設置される大規模ユーザにあっては,全てのプリンタに共通的に使用できる汎用プリンタドライバを使用することが,システム運用面での利便性を向上させる上で有利である。つまり,ネットワーク内の複数のコンピュータには,全て,汎用のプリンタドライバがインストールされ,その共通のプリンタドライバがネットワーク内の複数のプリンタに対して印刷データを生成する。これにより,ネットワーク内に新たなプリンタが設置されても,その都度,全てのコンピュータにその専用プリンタドライバをインストールする必要がなく,システム管理を容易にすることができる。
しかしながら,中間コードを生成しておき,プリンタエンジンの動作時間にビットマップ画像データへの展開処理時間を吸収させる方法の場合,プリンタエンジンへの印刷データの転送が間に合わなくなるオーバーランエラーを考慮して,ビットマップ画像データを事前に展開する必要がある。さらに,中間コードのデータ量が,展開されるビットマップ画像データのデータ量を超える場合のプリンタ側でのメモリ容量不足エラーを考慮して,ビットマップ画像データを事前に展開する必要がある。これらの事前展開は,いずれもプリンタドライバ側で行われる。
プリンタドライバでの事前展開のタイミングが早すぎる場合は,プリンタドライバ側で無駄に事前展開され,それに伴い印刷時間が長くなる。一方,タイミングが遅すぎる場合は,事前展開されずに中間コードのままプリンタに出力されるので,プリンタコントローラで上記オーバーランエラーが発生したりメモリ容量不足エラーが発生したりして,印刷エラーを招くおそれがある。
複数のプリンタに共通の汎用プリンタドライバを利用する場合,全てのプリンタに共通の事前展開タイミングを有するので,全てのプリンタに対して印刷エラーを回避するために,一定のマージンを見込んで事前展開タイミングを早めに設定する必要がある。そのため,印刷時間が長くなる傾向にある。
そこで,本発明の目的は,最適な印刷パフォーマンスを実現できる汎用プリンタドライバとそれを有するプリンタシステムを提供することにある。
さらに,本発明の別の目的は,最適なタイミングで中間コードの生成からビットマップ画像データへの事前展開に切り換えることができる汎用プリンタドライバとそれを有するプリンタシステムを提供することにある。
上記の目的を達成するために,本発明の第1の側面によれば,印刷コマンドから所定の印刷範囲毎の中間コードを生成し,プリンタのコントローラに当該中間コードを出力し,当該コントローラに前記中間コードからビットマップ画像データを展開させるプリンタシステムにおけるプリンタドライバであって,選択されたプリンタに問い合わせして当該プリンタから事前展開タイミング決定パラメータを受信する手順と,前記印刷コマンドから所定の印刷範囲毎の中間コードを生成する手順と,前記事前展開タイミング決定パラメータに基づいて,前記中間コードに代えてビットマップ画像データに事前展開すべきか否かを判定する手順と,事前展開すべき場合に前記印刷コマンドから前記ビットマップ画像データに展開する手順と,前記中間コードまたは事前展開したビットマップ画像データをプリンタに出力する手順とを,コンピュータに実行させることを特徴とする。
上記の第1の側面によれば,汎用プリンタドライバが選択されたプリンタからそれぞれ最適の事前展開タイミング決定パラメータを受信し,そのパラメータに基づいて中間コードの生成で良いか,それともプリンタに出力する前に事前にビットマップ画像データに展開する必要があるかを判断することができる。それにより,最適なタイミングで事前展開に切り換えることができ,全体の印刷スループットを向上させることができる。
なお,ここで,所定の印刷範囲毎とは,例えば,印刷プレーンを複数に分割したバンド毎にという意味である。また,事前展開のタイミングとは,順次生成される中間コードについて事前展開に切り換えるべきか否かを判断するタイミングという意味である。
上記第1の側面において,好ましい態様では,前記事前展開タイミング決定パラメータは,前記中間コードに対応し,前記プリンタのコントローラが中間コードからビットマップ画像データを展開するのに必要な負荷を示す負荷係数テーブルと,前記事前展開の判定基準を示す負荷閾値とを有し,前記判定手順では,前記所定の印刷範囲内の中間コードを前記負荷係数に応じて求められる負荷評価値を累積し,当該累積負荷評価値が前記負荷閾値を超えるか否かにより前記判定を行う。
この態様によれば,プリンタのコントローラでのビットマップ展開処理の負荷が大きい場合に,コントローラでオーバーランエラーが生じないようにするための,事前展開の最適な基準をプリンタから取得するので,選択されたプリンタに最適なタイミングで事前展開に切り換えることができる。
上記第1の側面において,好ましい態様では,前記事前展開タイミング決定パラメータは,前記プリンタのビットマップ画像データの展開メモリのサイズに対応し,前記事前展開の判定基準を示すメモリサイズを有し,前記判定手順では,前記所定の印刷範囲内の中間コードのデータサイズを累積し,当該累積データサイズが前記メモリサイズを超えるか否かにより前記判定を行う。
この態様によれば,プリンタのコントローラでのビットマップ展開処理においてメモリ不足による印刷エラーが生じないようにするための,事前展開の最適な基準をプリンタから取得するので,選択されたプリンタに最適なタイミングで事前展開に切り換えることができる。上記のオーバーランエラーの基準パラメータとメモリ不足による印刷エラーの基準パラメータのいずれかで事前展開が必要と判定された場合には,その印刷範囲については,その後中間コードを生成する代わりにビットマップに事前展開することが望ましい。
以下,図面にしたがって本発明の実施の形態について説明する。但し,本発明の技術的範囲はこれらの実施の形態に限定されず,特許請求の範囲に記載された事項とその均等物まで及ぶものである。
図1は,本実施の形態におけるプリンタシステムの全体構成図である。このプリンタシステムでは,ホストコンピュータ10にプリンタ11が有線または無線のネットワーク媒体を介して接続されている。ホストコンピュータ10では,アプリケーションプログラムAPLがオペレーティングシステムOS内の描画モジュールであるアプリケーションプログラミングインターフェースAPIに対して,印刷ジョブの開始を知らせる。この印刷ジョブの開始に応答して,描画モジュールAPIは印刷コマンドをプリンタドライバP−DRに供給する。プリンタドライバP−DRは,この印刷コマンドから印刷データP−Dataとして中間言語で記述された中間コードをバンド毎に生成する。
中間コードは,後に詳述するとおり,印刷エンジンの印刷プレーンを複数に分割したバンド毎に生成され,画素毎の画像データであるビットマップ画像データを展開するためのプリンタに固有のコードまたは関数である。プリンタ11のコントローラ12は,この中間コードからであれば,ページ記述言語からの場合に比較すると少ない処理工数でビットマップ画像データに展開することができる。
したがって,プリンタのコントローラ12は,プリンタドライバP−DRから中間コードを受信し,メモリユニット14内の中間コードバッファIC−BUFに格納した後,印刷エンジン24の印刷動作に同期して,その中間コードからビットマップ画像データを生成し,それから生成した画像再生信号16を印刷エンジンに出力することができる。ビットマップ画像データの展開処理を印刷エンジンの動作に同期させることで,展開処理時間を印刷エンジンの動作時間に吸収させて,全体の印刷時間を短縮させることができる。また,中間コードをバンド毎に生成することで,ビットマップ画像データの展開をバンド単位で行うことができ,プリンタのコントローラ12内のビットマップ画像データが格納されるバンドバッファB−BUFのメモリサイズを小さくすることができる。
プリンタ11は,コントローラ12と印刷エンジン24とで構成され,コントローラ12は,プリンタドライバP−DRとのインターフェース部IFと,中央処理ユニットCPUと,メモリユニット14と,ビットマップ画像データを展開する展開ユニット18と,パルス幅変調ユニットPWMと,それらを接続する内部バス22とを有する。プリンタドライバP−DRから供給される中間コードの印刷データP−Dataは,メモリユニット14の中間コードバッファIC−BUF内に格納される。そして,印刷エンジン24の動作に同期して,展開ユニット18による中間コードからビットマップ画像データへの展開処理と,バンドバッファB−BUF内に展開されたビットマップ画像データ20に対するパルス幅変調ユニットPWMによるパルス幅変調処理と,それにより生成された画像再生信号16の印刷エンジン24への出力が行われる。
中間コードからビットマップ画像データへの展開処理は,上記のように専用の展開ユニット18によって行っているが,中央処理ユニットCPUが変換プログラムを実行することによって行っても良い。ビットマップ画像データは,カラー画像の場合は,RGBまたはCMYKの色プレーン分の画素毎の階調データである。一旦RGBの画像データを生成する場合は,印刷エンジンのトナーの色空間のCMYKの画像データに変換する必要がある。この変換処理は,専用のハードウエアユニットで行っても良いし,中央処理ユニットCPUが色変換プログラムを実行することで行っても良い。
図2は,ネットワーク上に接続された複数のプリンタとコンピュータとを示す図である。この例では,有線または無線のネットワークLAN上に3台のプリンタA,B,Cと,コンピュータA,B,Cが接続され,全てのプリンタに共通のプリンタドライバP−DRが全てのコンピュータにインストールされている。各コンピュータでは,印刷時にプリンタを選択することはできるが,いずれのプリンタを選択しても共通のプリンタドライバP−DRにより印刷データを生成する。
図3は,本実施の形態における汎用プリンタドライバによる処理手順を示すフローチャート図である。プリンタドライバP−DRは,オペレーティングシステム内の画像モジュールAPIから印刷コマンドを受けると,ユーザが選択したプリンタに対して事前展開タイミングを決定するパラメータを要求し,当該プリンタが返信するパラメータを取得する(S10)。
図4は,本実施の形態における事前展開タイミング決定パラメータの例を示す図である。プリンタAは,パラメータとして,プリンタのコントローラが中間コードからビットマップ画像データを展開するのに必要な負荷を示す負荷係数テーブルLDaと,オーバーランエラー回避のための事前展開の判定基準を示す負荷閾値LVtaと,プリンタのビットマップ画像データが展開されるメモリサイズに対応し,メモリ不足エラー回避のための事前展開の判定基準を示すメモリサイズMEMaとを有する。他のプリンタB,Cも同様のパラメータを有する。また,汎用プリンタドライバP−DRは,初期値としてこれらのパラメータのデフォルト値を有している。これらのパラメータの内容については後述する。
図3に戻り,プリンタドライバP−DRは,オペレーティングシステムから受け取った印刷コマンドから,バンド単位で中間コードを生成する(S12)。この中間コードは,プリンタのコントローラが画素単位の画像データであるビットマップ画像データを展開するためのコードであり,コンピュータが比較的少ない処理工数でビットマップ展開できるようなプリンタ寄りの中間言語で記述されている。以下にて,中間コードの一例について説明する。
図5は,印刷画像例を示す図である。また,図6は,図5の印刷画像に対応する中間コードの例を示す図である。図5には,印刷エンジンが1回の動作で画像形成可能な印刷範囲に対応する印刷プレーンPLN内に形成される画像例が示されている。そして,印刷プレーンPLNは複数のバンドBND1〜BND3に分割されている。この印刷プレーンPLNは,例えば,A4のレーザープリンタであればA4サイズに,A3のレーザープリンタであればA3サイズに対応する。したがって,印刷用紙のサイズによっては印刷プレーンが複数ページに対応することもある。また,印刷エンジンが1回の動作で1枚の印刷用紙に画像を形成する場合は,この印刷プレーンPLNは,その1枚の印刷用紙に対応する。
図5の画像例は,写真からなるイメージ50と,所定の色の矩形RCT0と,文字「ABCDEF」と,楕円形52と,三角形54と,所定の色を有し内部に文字「A」が重ね書きされている長方形56とを有する。
かかる印刷画像の場合,印刷コマンドは,イメージ50についてはその属性と位置と圧縮方式などに加えて画素に展開されたビットマップ画像データを有し,矩形RCT0,楕円52,三角形54,矩形56などについてはその属性と位置と色のデータを有し,文字「ABCDEF」や「A」についてはその属性とキャラクタの種類(フォント)と位置及び色のデータを有する。
そこで,ビットマップ画像データを生成するに適した中間コードが,この印刷コマンドから生成される。更に,プリンタのコントローラでのビットマップ展開を容易にするために,中間コードに変換される段階で,文字は画素に展開したビットマップ画像データにされ,楕円52は単位幅を有する垂直矩形V0〜V4に分解され,三角形54は単位高さを有する水平矩形L0〜L3に分解される。また,中間コードは,印刷プレーンPLNを複数に分割したバンドBND0〜BND3毎に生成され,それに伴い,イメージ50はバンドBND0に属するイメージIMG0とバンドBND1に属するイメージIMG2とに分解され,矩形56はバンドBND2に属する矩形RCT1とバンドBND3に属する矩形RCT2とに分解される。
つまり,図5に示されるとおり,バンドBND0には,イメージIMG0と矩形RCT0と文字を画素に展開したイメージIMG1(ビットマップ画像データ)とに対応する中間コードが生成される。バンドBND1には,イメージIMG2と複数の垂直矩形V0〜V4に対応する中間コードが生成される。また,バンドBND2には,複数の水平矩形L0〜L3と矩形RCT1に対応する中間コードが生成され,バンドBND3には矩形RCT2とイメージIMG3に対応する中間コードが生成される。
図6には,図5に示した分解された画像に対応する中間コードの例が示されている。バンドBND0には,イメージIMG0と,矩形RCT0と,イメージIMG1に対応する中間コード60,61,62が含まれる。具体的には,
(1)イメージIMG0の中間コード60は,その属性IMG0と,左上の点(図3中の黒点)のバンドBND0内のローカル座標(X,Y)と,その幅及び高さ(W,H)と,ビットマップ画像データの圧縮形式COMPと,具体的なイメージのデータであるビットマップ画像データ(00110011…)とを有する。
(2)矩形RCT0の中間コード60は,その属性RCT0と,矩形の模様を示すスクリーンデータPと,色データCOLと,左上点のバンドBND0内のローカル座標(X,Y)と,その幅及び高さ(W,H)とを有する。
(3)文字のイメージIMG1の中間コード62は,その属性IMG1と,ローカル座標(X,Y)と,幅及び高さ(W,H)と,文字を画素に展開したビットマップ画像データ(0010101…)とを有する。
(1)イメージIMG0の中間コード60は,その属性IMG0と,左上の点(図3中の黒点)のバンドBND0内のローカル座標(X,Y)と,その幅及び高さ(W,H)と,ビットマップ画像データの圧縮形式COMPと,具体的なイメージのデータであるビットマップ画像データ(00110011…)とを有する。
(2)矩形RCT0の中間コード60は,その属性RCT0と,矩形の模様を示すスクリーンデータPと,色データCOLと,左上点のバンドBND0内のローカル座標(X,Y)と,その幅及び高さ(W,H)とを有する。
(3)文字のイメージIMG1の中間コード62は,その属性IMG1と,ローカル座標(X,Y)と,幅及び高さ(W,H)と,文字を画素に展開したビットマップ画像データ(0010101…)とを有する。
同様に,バンドBND1には,イメージIMG2と複数の垂直矩形V0〜V4に対応する中間コード70〜75が含まれる。具体的には,
(1)垂直矩形V0〜V4の中間コード70〜74は,その属性V0〜V4と,色データCOLと,それぞれの左上点のローカル座標(X,Y)と,高さHとを有する。
(2)イメージIMG2の中間コード75は,その属性IMG2と,ローカル座標(X,Y)と,その幅及び高さ(W,H)と,ビットマップ画像データの圧縮形式COMPと,具体的なビットマップ画像データ(00110011…)とを有する。
(1)垂直矩形V0〜V4の中間コード70〜74は,その属性V0〜V4と,色データCOLと,それぞれの左上点のローカル座標(X,Y)と,高さHとを有する。
(2)イメージIMG2の中間コード75は,その属性IMG2と,ローカル座標(X,Y)と,その幅及び高さ(W,H)と,ビットマップ画像データの圧縮形式COMPと,具体的なビットマップ画像データ(00110011…)とを有する。
同様に,バンドBND2には,水平矩形L0〜L3の中間コード80〜83と,矩形RCT1の中間コード84とを有する。具体的には,
(1)水平矩形L0〜L4の中間コード80〜83は,その属性L0〜L4と,モノクロデータBと,ローカル座標(X,Y)と,幅Wとを有する。
(2)矩形RCT1の中間コード84は,その属性RCT1と,矩形の模様を示すスクリーンデータPと,色データCOLと,ローカル座標(X,Y)と,その幅及び高さ(W,H)とを有する。
(1)水平矩形L0〜L4の中間コード80〜83は,その属性L0〜L4と,モノクロデータBと,ローカル座標(X,Y)と,幅Wとを有する。
(2)矩形RCT1の中間コード84は,その属性RCT1と,矩形の模様を示すスクリーンデータPと,色データCOLと,ローカル座標(X,Y)と,その幅及び高さ(W,H)とを有する。
そして,バンドBND3には,矩形RCT2とイメージIMG3の中間コード90,91が含まれる。具体的には,
(1)矩形RCT2の中間コード90は,その属性RCT2と,矩形の模様を示すスクリーンデータPと,色データCOLと,ローカル座標(X,Y)と,その幅及び高さ(W,H)とを有する。
(2)イメージIMG3は,その属性データIMG3と,下地との重なりの関係(ANDかORかEORかなどブレンディング,上書きなど)のデータDと,スクリーンデータPと,ローカル座標(X,Y)と,幅及び高さ(W,H)とを有する。
(1)矩形RCT2の中間コード90は,その属性RCT2と,矩形の模様を示すスクリーンデータPと,色データCOLと,ローカル座標(X,Y)と,その幅及び高さ(W,H)とを有する。
(2)イメージIMG3は,その属性データIMG3と,下地との重なりの関係(ANDかORかEORかなどブレンディング,上書きなど)のデータDと,スクリーンデータPと,ローカル座標(X,Y)と,幅及び高さ(W,H)とを有する。
図6に示されるようにビットマップ化された画像データ以外は,細分化された簡単な図形に対応する中間コードにされる。それにより,その後印刷エンジンの動作速度に追従して中間コードから画素に展開したビットマップ画像データを高速に生成することが可能になる。
図3に戻り,次に,汎用プリンタドライバD−PRは,各バンドに含まれる中間コードについて,プリンタコントローラが中間コードの展開に要する負荷評価値を,取得したパラメータに基づいて演算により求める(S14)。この負荷評価値とは,コントローラが中間コードを展開するのに必要な演算時間に対応するものであり,印刷エンジンが起動した時に,コントローラが中間コードからビットマップ画像データを生成し,そのビットマップ画像データから生成した画像再生信号16(図1参照)を印刷エンジンの動作速度に対応して適切なタイミングで印刷エンジン24に供給できるか否かを評価するための指標である。つまり,この負荷評価値が所定の負荷閾値LVtを超えるか否かを事前にチェックすることで,プリンタのエンジンが受信した中間コードから印刷エンジンに追従してビットマップ画像データを生成し画像再生信号を供給可能か否かを評価することができる。負荷評価値が高くなりすぎると,プリンタのコントローラが中間コードからビットマップ画像データへの展開処理が,印刷エンジンの速度に追従できず,オーバーランエラーが発生する可能性がある。
図6に示されるとおり,中間コードは,印刷対象オブジェクトに対応して,各バンドで生成されるので,中間コードを新たに生成するたびに,新たに中間コードが発生したバンドの累積負荷評価値をアップデートする。そして,この累積負荷評価値が所定の負荷閾値を超える場合は,オーバーランエラーが発生する蓋然性が高いと判定して,プリンタドライバは,そのバンドの中間コードを事前に展開してビットマップ画像データの形態で印刷データP−Dataを生成する必要がある。
図7は,負荷評価値の演算例を説明するための図である。負荷評価値の計算は,中間コードの組合せに対応してあらかじめ設定されている負荷係数A(x)に基づいて行われる。この負荷係数は,プリンタのドライバの処理能力に対応するものであり,処理能力が高い場合は負荷係数は低く設定され,処理能力が高い場合は負荷係数は高く設定される。そして,この負荷係数は,複数の中間コードに対応した負荷係数テーブルとして,事前展開タイミング決定パラメータの一つとして,選択されたプリンタからプリンタドライバが取得する。
負荷評価値Zは,この負荷係数A(x)とその画像の面積(幅W×高さH)とから,式100に示される演算式により演算される。つまり,バンド内の複数の中間コード(または中間コードの組合せ)の負荷係数A(x)とその面積(W*H)との乗算値の合計が,そのバンドの累積負荷評価値Zとなる。
ここで,図7の図表に示される論理演算式は,中間コードの組合せに対応する。例えば,論理演算式は,前述したイメージIMG,水平矩形L,垂直矩形V,及び矩形RCTの画像からなるソースSと,その中間コードの画像が重ねられる下地の画像を意味するデスティネーションDと,その中間コードの画像の表面模様(スクリーン)や色などを含むデータPとの組合せで構成される。図7の図表には,最初にソースSのみからなる論理演算式IMG,L,V,RCTが示され,それらに対してはスクリーンや色などは含まれておらず,それぞれに負荷係数a1〜a4が設定されている。また,5行目には,論理演算式「DSP0」が示され,デスティネーションDは下地の画像との重ね方を示すデータであり,データP0についてはスクリーンをP1とし色をモノクロBWとすることが示され,その場合の負荷係数はa5と設定されている。それ以外の論理演算式「DSP1」「DSPn」も同様であり,それぞれ負荷係数はa6,amと設定されている。これらの負荷係数が,負荷係数テーブルLDとして各プリンタからプリンタドライバに送信される。
プリンタコントローラは,各バンドの累積負荷評価値の演算に加えて,各バンドの中間コードのデータ量も演算により求める(S16)。プリンタ内のメモリユニット14には,中間コードを格納する中間コードバッファIC−BUFと,1つのバンド内で展開されるビットマップ画像データを格納するバンドバッファB−BUFとが設けられる。この場合,プリンタコントローラが生成する中間コードのデータ量が大きくなり,例えば,展開後のバンドのビットマップ画像データのデータ量よりも大きくなると,印刷データとして中間コードをプリンタに送信する意味がなくなる。つまり,プリンタドライバからプリンタへの転送データ量を抑えるために,中間コードを送信しているのであるから,その転送される各バンドの中間コードのデータ量が,バンドで展開されるビットマップ画像データのデータ量を超える場合は,プリンタドライバは,中間コードを生成することなく,直接事前展開してビットマップ画像データを生成してプリンタに出力したほうが望ましい。それにより,プリンタドライバでの中間コードの生成を省略することができる。また,ビットマップ画像データであっても圧縮によりかなりデータ量を小さくすることができるので,プリンタドライバからコントローラへの転送速度の低下を回避することもできる。一般に,中間コードよりもビットマップ画像データのほうが圧縮率は高くなるからである。これが,メモリ不足防止による事前展開の1つの考え方である。
この中間コードのデータ量の演算も,新たな中間コードが生成されるたびに,各バンドの累積データ量をアップデートする方法で行われる。
次に,プリンタドライバは,各バンドの累積負荷評価値が,負荷閾値を超えるか否かの判定を行う(S18)。負荷閾値LVtは,選択されたプリンタから取得した決定パラメータに含まれている。負荷閾値は,オーバーランエラーが発生するか否かを予測する場合の基準値であり,累積負荷評価値が負荷閾値を超える場合は,オーバーランエラーが発生する蓋然性が高くなる。したがって,その場合,プリンタドライバは,該当するバンドの中間コードからビットマップ画像データを事前展開する(S22)。そして,その後は,印刷コマンドから直接ビットマップ画像データに事前展開する(S12)。
この負荷閾値LVtは,プリンタコントローラの処理能力が低い場合は,比較的低く設定され,処理能力が高い場合は,比較的高く設定される。つまり,選択されたプリンタに応じてそれぞれ異なる負荷閾値が利用される。この負荷閾値が低いと,順次生成される中間コードに対して早いタイミング(より低い負荷閾値)で事前展開に切り換えられる。また,負荷閾値が高いと,遅いタイミング(より高い負荷閾値)で事前展開に切り換えられる。
仮に,全てのプリンタに対して同じ負荷閾値が使用されると,処理能力の高いプリンタに対しては,事前展開のタイミングが早すぎることになる。その場合,プリンタで印刷エンジンの動作に同期して展開可能なバンドまでプリンタドライバが事前展開することになり,プリンタドライバでの展開時間とその展開されたビットマップ画像データの圧縮時間が無駄になってしまう。一方,処理能力の低いプリンタに対しては,事前展開のタイミングが遅すぎることになる。その場合,プリンタ側で印刷エンジンの動作に同期して展開できないようなバンドについても,中間コードのままプリンタに転送されてしまい,プリンタドライバでの中間コードの生成時間や,プリンタでの受信した中間コードの格納時間が無駄になってしまう。
そこで,本実施の形態では,プリンタドライバが,選択されたプリンタに最適な負荷閾値LVtを事前展開タイミング決定パラメータとして取得し,最適なタイミングで事前展開への切り換えを行い,印刷エラーが生じない範囲での印刷スループットの最大化を実現している。
さらに,プリンタドライバは,各バンドの中間コードの累積データ量が,バンドバッファなど所定のメモリのメモリサイズを超えているか否かの判定を行う(S20)。つまり,各バンドの中間コードの累積データ量が,各バンド内の生成済み中間コードがビットマップ画像データに展開された場合のバンドバッファ内のデータ量を超えるか否かの判定が行われる。超える場合は,該当バンドの中間コードを事前展開し(S22),それ以降は中間コードを生成することなく,印刷コマンドをビットマップ画像データで事前展開する(S12)。
この事前展開の判断基準であるメモリサイズMEMは,選択したプリンタから取得する事前展開タイミング決定パラメータに含まれる。そして,そのメモリサイズは,各プリンタ毎にそれぞれ設定された任意のサイズである。
メモリ不足エラー回避の事前展開の判断の別の考え方として,中間コードとビットマップ画像データのデータ量が,プリンタで確保可能なメモリ容量を超えるか否かの判定をするようにしてもよい。つまり,プリンタのメモリ容量が十分にない場合は,各バンドの中間コードの累積データ量が,プリンタ内の中間コードバッファとバンドバッファのために確保できるメモリサイズを超えるか否かの判定が行われる(S20)。つまり,中間コードのデータ量が大きくなると,プリンタでバンド毎に中間コードを蓄積し,ビットマップ画像データに展開する際に,メモリユニット14にメモリ不足が発生し,中間コードの蓄積とビットマップ画像データの蓄積とを行うことができず,メモリ不足エラーとなる。かかるメモリ不足エラーによる印刷エラーを回避するために,中間コードの累積データ量が,プリンタ毎に設定される所定のメモリサイズMEMを超えるか否かが判定され,超える場合は,事前展開に切り換えられる(S12)。
この事前展開の判断基準であるメモリサイズMEMも,選択したプリンタから取得する事前展開タイミング決定パラメータに含まれる。このメモリサイズは,各プリンタの内部メモリ容量に対応した値に設定されている。
上記手順S12〜S22が,1つの印刷プレーン内の印刷コマンドが終了するまで繰り返される。判定手順S18,S20のいずれかで事前展開に切り換えられると,手順S12では,印刷コマンドから中間コードを生成することなくビットマップ画像データに展開する。最後に,プリンタドライバP−DRは,バンド毎の中間コードまたは事前展開されたビットマップ画像データを印刷データP−Dataとしてプリンタに出力する(S26)。
プリンタドライバP−DRは,選択されたプリンタから決定パラメータを取得できない場合は,プリンタドライバにあらかじめ設定されている初期値のパラメータ(図4参照)を利用して,前述の事前展開タイミングの判定手順S18,S20を実行する。この初期値の決定パラメータは,全てのプリンタに対応可能なように,事前展開タイミングに比較的早く切り換えられるような値に設定されている。したがって,初期値により事前展開を判定すると,そのタイミングが最適値よりも早くなる。
図8は,本実施の形態におけるプリンタコントローラの動作を示すフローチャート図である。図8には示されていないが,プリンタコントローラ12は,プリンタドライバP−DRからの問い合わせに応答して,事前展開タイミング決定パラメータParaを返信している。そして,プリンタコントローラ12は,プリンタドライバP−DRから中間コードまたは事前展開されたビットマップ画像データからなる印刷データP−Dataを受信する(S30)。次に,印刷データが中間コードの場合は(S32のYES),メモリユニット14内の中間コードバッファIC−BUF内にバンド毎に分けて格納し(S34),その中間コードからビットマップ画像データをバンドバッファB−BUF内に展開し格納する(S36)。この処理S34,S36は,従来の中間コードに対する処理と同じであり,ビットマップ画像データへの展開は,バンド単位で行う。中間コードには,イメージデータのようにすでにビットマップ化されているものもあるが,その場合は,中間コードバッファIC−BUFには,そのビットマップ化されているソースとなるビットマップ画像データが格納されているアドレスがポインタとして格納される。
一方,印刷データが中間コードでなく事前展開されているビットマップ画像データの場合は(S32のNO,S38のYES),その受信したビットマップ画像データをバンドバッファB−BUF内に格納する(S40)。この場合は,中間コードからビットマップ展開する必要はない。
そして,コントローラ12は,バンドバッファB−BUF内に格納されているビットマップ画像データを読み出し,パルス幅変調ユニットPWMによりパルス幅変調し,印刷エンジンの駆動パルス信号からなる画像再生信号16を,印刷エンジン24に出力する(S42)。
上記の処理工程S36,S40のビットマップ画像データのバンドバッファB−BUFへの格納と,処理工程S42のパルス幅変調処理と処理済みの画像再生信号の出力とが,印刷エンジン24の動作に同期して行われる。
以上説明したとおり,本実施の形態では,プリンタの処理能力やメモリ容量に応じた最適化された決定パラメータにより,プリンタドライバP−DRが,中間コード作成中に事前展開が必要か否かを判定し,必要な場合は中間コードではなく事前展開したビットマップ画像データを生成し,プリンタコントローラ12に出力する。したがって,プリンタドライバは,最適なタイミングで中間コード作成からビットマップ画像データの作成に切り換えることができる。そのため,事前展開のタイミングが早くなりすぎて,プリンタドライバ側で不必要にビットマップ画像データに展開してプリンタに出力することはない。また,逆に事前展開のタイミングが遅すぎて,プリンタドライバ側でプリンタコントローラが処理できないような中間コードを作成して出力することもない。最適なタイミングで事前展開への切り換えが行われるので,プリンタドライバからプリンタコントローラ,印刷エンジンまでの全体の印刷スループットを上げることができる。しかも,各コンピュータは,全て共通の汎用プリンタドライバのみをインストールしておけば良いので,システム運用を容易にすることができる。
LAN:ネットワーク P−DR:プリンタドライバ
Claims (6)
- 印刷コマンドから所定の印刷範囲毎の中間コードを生成し,プリンタのコントローラに当該中間コードを出力し,当該コントローラに前記中間コードからビットマップ画像データを展開させるプリンタシステムにおけるプリンタドライバであって,
選択されたプリンタに問い合わせして当該プリンタから事前展開タイミング決定パラメータを受信する手順と,
前記印刷コマンドから所定の印刷範囲毎の中間コードを生成する手順と,
前記事前展開タイミング決定パラメータに基づいて,前記中間コードに代えてビットマップ画像データに事前展開すべきか否かを判定する手順と,
事前展開すべき場合に前記印刷コマンドから前記ビットマップ画像データに展開する手順と,
前記中間コードまたは前記事前展開したビットマップ画像データをプリンタに出力する手順とを,コンピュータに実行させるプリンタドライバ。 - 請求項1において,
前記事前展開タイミング決定パラメータは,前記中間コードに対応し,前記プリンタのコントローラが中間コードからビットマップ画像データを展開するのに必要な負荷を示す負荷係数テーブルと,前記事前展開の判定基準を示す負荷閾値とを有し,
前記判定手順では,前記所定の印刷範囲内の中間コードを前記負荷係数に応じて求められる負荷評価値を累積し,当該累積負荷評価値が前記負荷閾値を超えるか否かにより前記判定を行うプリンタドライバ。 - 請求項1において,
前記事前展開タイミング決定パラメータは,前記プリンタのビットマップ画像データの展開メモリのサイズに対応し,前記事前展開の判定基準を示すメモリサイズを有し,
前記判定手順では,前記所定の印刷範囲内の中間コードのデータサイズを累積し,当該累積データサイズが前記メモリサイズを超えるか否かにより前記判定を行うプリンタドライバ。 - 請求項1において,
前記問い合わせをしたプリンタから前記事前展開タイミング決定パラメータを受信しない場合は,前記判定手順では,初期値パラメータに基づいて前記事前展開の判定を行うプリンタドライバ。 - 請求項1において,
さらに,前記問い合わせをしたプリンタから前記事前展開タイミング決定パラメータを受信しない場合は,前記印刷コマンドから前記中間コードを生成することなく,前記印刷コマンドを前記プリンタに出力する手順を,コンピュータに実行させるプリンタドライバ。 - 印刷コマンドから所定の印刷範囲毎の中間コードを生成し,プリンタのコントローラに当該中間コードを出力するプリンタドライバと,当該コントローラが前記中間コードからビットマップ画像データを展開するプリンタとを有するプリンタシステムであって,
前記プリンタドライバは,
選択されたプリンタに問い合わせして当該プリンタから事前展開タイミング決定パラメータを受信する手順と,
前記印刷コマンドから所定の印刷範囲毎の中間コードを生成する手順と,
前記事前展開タイミング決定パラメータに基づいて,前記中間コードに代えてビットマップ画像データに事前展開すべきか否かを判定する手順と,
事前展開すべき場合に前記印刷コマンドから前記ビットマップ画像データに展開する手順と,
前記中間コードまたは前記事前展開したビットマップ画像データをプリンタに出力する手順とを,コンピュータに実行させるプリンタシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005111348A JP2006293561A (ja) | 2005-04-07 | 2005-04-07 | プリンタドライバ及びそのプリンタシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005111348A JP2006293561A (ja) | 2005-04-07 | 2005-04-07 | プリンタドライバ及びそのプリンタシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006293561A true JP2006293561A (ja) | 2006-10-26 |
Family
ID=37414090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005111348A Pending JP2006293561A (ja) | 2005-04-07 | 2005-04-07 | プリンタドライバ及びそのプリンタシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006293561A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008213304A (ja) * | 2007-03-05 | 2008-09-18 | Seiko Epson Corp | 印刷装置 |
JP2011034506A (ja) * | 2009-08-05 | 2011-02-17 | Seiko Epson Corp | 制御装置、制御装置の制御方法、プログラム |
JP2013233759A (ja) * | 2012-05-10 | 2013-11-21 | Canon Inc | 情報処理装置、情報処理方法、情報処理システム、プログラム |
JP2015032238A (ja) * | 2013-08-06 | 2015-02-16 | セイコーエプソン株式会社 | 印刷制御装置、印刷制御方法および印刷制御プログラム |
-
2005
- 2005-04-07 JP JP2005111348A patent/JP2006293561A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008213304A (ja) * | 2007-03-05 | 2008-09-18 | Seiko Epson Corp | 印刷装置 |
JP2011034506A (ja) * | 2009-08-05 | 2011-02-17 | Seiko Epson Corp | 制御装置、制御装置の制御方法、プログラム |
JP2013233759A (ja) * | 2012-05-10 | 2013-11-21 | Canon Inc | 情報処理装置、情報処理方法、情報処理システム、プログラム |
JP2015032238A (ja) * | 2013-08-06 | 2015-02-16 | セイコーエプソン株式会社 | 印刷制御装置、印刷制御方法および印刷制御プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7505156B2 (en) | Image processing method and apparatus for reprinting with a desired binding width having different print settings | |
EP0933723B1 (en) | Printing apparatus | |
US7612910B2 (en) | Information processing apparatus, information processing system, information output control method, storage medium and program | |
JP4455459B2 (ja) | 印刷システムと印刷装置及び印刷方法 | |
JPH111029A (ja) | カラープリントシステム,カラープリンタ,及びコンピュータが実行可能なプログラムを格納したコンピュータが読取可能な記録媒体 | |
JP4522801B2 (ja) | 画像処理装置および画像処理装置の制御方法および画像形成装置および画像形成装置の制御装置およびプログラムおよび記録媒体 | |
JP2008049664A (ja) | 画像形成装置のコントローラ及び画像形成装置のドライバ | |
JP2006293561A (ja) | プリンタドライバ及びそのプリンタシステム | |
JP6464695B2 (ja) | 画像処理装置、および、コンピュータプログラム | |
JP4461361B2 (ja) | 描画処理方法およびプログラム並びに描画命令出力装置および画像形成装置 | |
US20230007144A1 (en) | Image processing apparatus, method of controlling the same, and storage medium | |
US8098385B2 (en) | Spool file modifying device | |
JP2005316950A (ja) | データ処理装置およびデータ処理方法およびプリンタドライバプログラムおよび印刷制御装置および印刷制御方法および印刷システム | |
JPH08139953A (ja) | 印刷装置及び印刷方法 | |
JP2000207147A (ja) | 印刷デ―タ転送システム | |
JP4335852B2 (ja) | 印刷制御装置および印刷制御方法およびプログラム | |
JP2002259101A (ja) | プリンタドライバ及び情報処理装置 | |
JPH07104954A (ja) | プリンタ及びその制御方法 | |
JP2006205403A (ja) | オーバーランエラーを抑制した画像形成装置のコントローラ | |
JP2002007101A (ja) | 情報処理装置、情報処理方法、および記憶媒体 | |
JP4853654B2 (ja) | 画像処理装置、画像処理システムおよび画像処理プログラム | |
JP2006031086A (ja) | 印刷処理方法 | |
JPH1198360A (ja) | 画像処理装置、方法及びコンピュータ読取り可能な記憶媒体 | |
JP2005169671A (ja) | データ処理装置および印刷制御方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体およびプログラム | |
JP2006172042A (ja) | 画像処理方法とその手段、及び印刷装置 |