(57)【要約】本発明は印刷制御技術に関し、特に、印刷メモリの必要量の低減が可能な印刷制御方法に関する。適用されている印刷技術では、事前に格子（ピクセル集合）を形成し、大量のメモリを必要とする複雑なセグメントを必要とする。本発明における印刷制御方法では、ページデータを帯域ごとの中間形式データとして解釈し、中間形式データの各帯域における格子形成時間を計算し、印刷時間より格子形成時間が長くなる帯域をあらかじめ分析し、複雑帯域の格子形成ができるだけ印刷空き時間中に実行されるように調整する。この方法によれば、事前に格子生成しておくべき帯域数を減少させることができ、結果として、印刷メモリの必要量を低減できる。【選択図】図４
2008526555.tif 000002
【特許請求の範囲】
【請求項１】
（Ａ）インタフェースを介して、ホストから印刷データを受信するステップと、
（Ｂ）各ページを分割すべき帯域の数と、各帯域の印刷時間を決定するステップと、
（Ｃ）印刷データを、各帯域に対応する中間形式データとして解釈するステップと、
（Ｄ）中間形式データの形となっている各帯域のラスタライズ時間を計算するステップと、
（Ｅ）印刷時間がラスタライズ時間未満となる帯域を複雑帯域として設定するステップと、
（Ｆ）印刷時間がラスタライズ時間以上となる帯域を簡単帯域として設定するステップと、
（Ｇ）各帯域のラスタライズ開始タイミングを決定し、最初の帯域の印刷開始タイミングを０に設定するステップと、
（Ｈ）印刷タスクを起動し、ページ印刷を開始し、印刷終了させるステップと、を含み、
前記（Ｇ）ステップはさらに、
（１）帯域あたり必要な印刷時間であるＴＰに対して、帯域番号から１をマイナスした数値を乗じることにより、各帯域の印刷開始タイミングを初期化するステップと、
（２） 各帯域のラスタライズ終了タイミングを当該帯域の印刷開始タイミングとして設定し、各簡単帯域のラスタライズ開始タイミングを、当該帯域のラスタライズ終了タイミングから当該帯域のラスタライズ時間ＴＲをマイナスした値に設定するステップと、
（３）各帯域の印刷空き時間を各帯域の印刷時間として初期化するステップと、
（４） 最初の帯域を除く各簡単帯域のラスタライズ占有時間を、印刷空き時間から減算するステップ、具体的には、ある帯域のラスタライズ時間を一つ前の帯域の印刷空き時間から減算するステップと、
（５）マーキングされていない複雑帯域が存在しないときは、ステップ（１０）に移るステップと、
（６）マーキングされていない各複雑帯域のラスタライズ開始タイミングを設定するステップと、
（７） マーキングされていない複雑帯域のうち、最大のラスタライズ開始タイミングを有する帯域を動作帯域として設定し、動作帯域のラスタライズ開始タイミングが０未満の時は、前記ステップ（Ｇ）を終了させるステップと、
（８） 動作帯域のラスタライズ終了タイミングを、印刷空き時間が０ではない、動作帯域の直前の帯域の帯域番号として更新し、動作帯域をマーキングするステップと、
（９）動作帯域のラスタライズ占有時間を印刷空き時間情報から除いて、（５）に移行するステップと、
（１０）各複雑帯域のラスタライズ開始タイミングを更新するステップと、を含むことを特徴とする印刷メモリの必要量を低減可能な印刷制御方法。
【請求項２】
前記ステップ（Ｈ）における前記印刷タスクは、印刷処理を主として実行するタスクであって、前記印刷タスクは、
（１）ラスタライズ開始タイミングが−1である帯域すべてを事前ラスタライズするステップと、
（２）ラスタライズ開始タイミングが０より大きな複雑帯域が存在するときは、印刷メインタスクより優先度が低い補助タスクを設定し、関連する複雑帯域のラスタライズ開始タイミングにおいて、前記補助タスクにより各複雑帯域のラスタライズを開始させるステップと、
（３）帯域１をラスタライズし、プリント・バッファに送信するステップと、
（４）プリントエンジンを起動し、プリント・バッファにある帯域を印刷させるステップと、
（５） 次に印刷すべき帯域が簡単帯域のときは、その帯域のラスタライズ開始タイミングまで、印刷メインタスクにより次の帯域をラスタライズするステップと、
（６） 現在帯域の印刷終了を待って、次帯域のラスタビットマップを取得し、プリント・バッファに送信するステップと、
（７）プリントエンジンにて次の帯域の印刷を開始するステップと、
（８）ページの印刷が完全に終了するまで上記（５、６および７）の各ステップを繰り返させるステップと、
を含むことを特徴とする請求項１に記載の印刷メモリの必要量を低減可能な印刷制御方法。
【請求項３】
前記ステップ（１０）において、各複雑帯域のラスタライズ開始タイミングを更新するステップは、
（１）マーキングされていない複雑帯域すべてのラスタライズ開始タイミングを−１に設定し、マーキングされていない複雑帯域すべてを前処理帯域としてマーキングするステップと、
（２） 各帯域の印刷空き時間を、各帯域の印刷時間として初期化するステップと、
（３） 最初の帯域を除く各簡単帯域のラスタライズ占有時間を、印刷空き時間から減算する、具体的には、ある帯域のラスタライズ時間を一つ前の帯域の印刷空き時間から減算するステップと、
（４）マーキングされた複雑帯域が存在しなければステップ（１０）を終了させ、そうでなければ、マーキングされた複雑帯域から、ラスタライズ終了タイミングが最大となる帯域を動作帯域として選択するステップと、
（５）動作帯域のラスタライズ開始タイミングを計算するステップと、
（６）動作帯域のラスタライズ占有時間を印刷空き時間から除き、さらに動作帯域のマーキングを除去し、ステップ（４）に移行するステップと、
を含むことを特徴とする請求項１に記載の印刷メモリの必要量を低減可能な印刷制御方法。
【請求項４】
請求項１のステップ（６）および請求項３のステップ（５）に記載の、帯域のラスタライズ開始タイミングを計算するステップは、初期化されるべき帯域を動作帯域として、
（ａ）動作帯域のラスタライズ時間として必要な時間を設定し、現在の帯域を動作帯域として設定するステップと、
（ｂ）現在の帯域の帯域番号が２未満か否か判定し、２未満であれば、動作帯域は前処理する必要があるとして、その動作帯域のラスタライズ開始タイミングを−１に設定し、請求項１のステップ（６）あるいは請求項３のステップ（５）を終了させ、２未満でなければ、次のステップに移行させるステップと、
（ｃ） 現在の帯域の直前の帯域における印刷空き時間を、必要時間から減算するステップと、
（ｄ）現在の帯域の直前の帯域を新規の現在帯域として設定し、印刷空き時間が０より大のときは（ｂ）に移行させ、０以下のときは次のステップを実行させるステップと、
（ｅ）上記直前の帯域の印刷開始タイミングに必要な間の絶対値をプラスしたものを動作帯域のラスタライズ開始タイミングとして設定するステップと、
を含むことを特徴とする請求項１または３に記載の印刷メモリの必要量を低減可能な印刷制御方法。
【請求項５】
請求項１のステップ（９）および請求項３のステップ（６）において、動作帯域のラスタライズ占有時間を除くステップは、
（ａ）動作帯域のラスタライズ時間として必要時間を設定し、現在の帯域を動作帯域として設定するステップと、
（ｂ） 現在の帯域の直前の帯域における印刷空き時間を、必要時間から減算するステップと、
（ｃ）現在の帯域の直前の帯域の印刷空き時間を０に設定し、現在の帯域の直前の帯域を新規の現在帯域として設定し、必要時間が０より大のときには（ｂ）に移行させ、必要時間が０以下のときには次のステップを実行させるステップと、
（ｄ）現在の帯域の直前の帯域の空き時間を必要時間の絶対値として設定するステップと、
を含むことを特徴とする請求項１または３に記載の印刷メモリの必要量を低減可能な印刷制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は印刷制御技術に関し、特に印刷メモリの必要量を低減可能な印刷制御方法に関する。
【背景技術】
【０００２】
従来技術として、既知のラスタプリンタによるページ印刷処理過程は、以下の３ステップからなる。ホストから印刷すべきデータを受け取るステップ、データをラスタビットマップにラスタライズするステップ、ラスタビットマップをプリントエンジンに送信して出力するステップ、である。
【０００３】
ラスタビットマップは、プリントエンジンからレーザ・ドラムに一定速度で送信されなければならないので、レーザプリンタなどのラスタプリンタにおいては、ラスタビットマップは一定速度でプリントエンジンに送信されなければならない。ラスタビットマップのプリントエンジンへの送信が間に合わなければ、いわゆる「印刷オーバラン」が発生し、ページが正しく出力されなくなる。
【０００４】
通常、ラスタビットマップをプリントエンジンに一定速度で送信するラスタプリンタにおいては、以下のような印刷制御方法となっている。
【０００５】
（１）ページは、事前にラスタビットマップにラスタライズされ、ラスタビットマップは印刷用のメモリに保存される。この方法の場合、ラスタビットマップはメモリに保存されているので、印刷オーバランは発生し得ない。しかし、この方法の難点は、高解像度ラスタプリンタの場合、通常、大きなメモリが必要となることである。カラープリンタも同様である。たとえば、Ａ４のＣＭＹＫカラーページ１枚を６００ＤＰＩで保存するのに、約１６ＭＢのメモリが必要となる。これはコストがかかる。更に、この方法の場合、ページ全体のラスタライズが終了しなければ印刷を開始できないので、印刷速度の低下を招く。
【０００６】
（２）別の公知の方法では、印刷ページを複数の「帯域（band）」に分割する。この方法の場合、印刷ページデータは、帯域単位で並べられる中間形式として解釈される。これらの中間形式は、最終形のラスタビットマップに簡単に変換され、しかも、同ページのラスタビットマップよりも必要なメモリサイズが少なくて済む。一つ帯域がラスタライズされれば、印刷を開始できる。ラスタライズされた帯域が印刷されると、次の帯域についてのラスタビットマップが生成される。この方法の場合、印刷速度を向上させることができ、しかも、ページ全体のラスタビットマップを保存するのに要するメモリサイズを低減できる。しかし、この方法にも欠点がある。ある帯域のデータが複雑で、その前の帯域の印刷が完了するまでに完全なラスタライズができなければ、「印刷オーバラン」が発生し、ページは正確に出力されなくなる。
【０００７】
印刷オーバランを防ぐためのよく知られている方法は、各帯域が必要とするラスタライズ時間をあらかじめ見積もっておくことである。もし、一以上の帯域において、前の帯域の印刷時間より長いラスタライズ時間が必要とされる場合には、それらの帯域は、ページ印刷前にあらかじめラスタライズしておく。このような方法によれば、印刷オーバランを防ぐことができる。しかし、これらの事前ラスタライズされた帯域についてのラスタビットマップがメモリを占有してしまうため、メモリの必要量増加を招き、制御コストが大きくなってしまうという欠点がある。
【０００８】
こうした問題への対処方法として、さまざまな改良案が提案されている。例えば、ＨＰ社の米国特許５１２９０４９号が示す方法によれば、ある帯域の内容が非常に簡単であるか事前にラスタライズされているときは、その帯域の印刷時間は一帯域あたりのラスタライズ時間より短くなるので、空き時間（余りの時間）が発生する。この空き時間は、次の帯域をラスタライズする時間として使えるかもしれない。この場合、次の帯域が長いラスタライズ時間を必要とする場合であっても、事前ラスタライズは不要となる。したがって、事前ラスタライズすべき帯域の数をある程度減らすことができる。しかし、この公知方法は、直前の帯域の空き時間だけを利用するものであり、すべての簡単帯域や事前ラスタライズ済み帯域の空き時間を利用するものではない。この方法では、事前ラスタライズを要する帯域の数を最小化できないため、印刷メモリの必要量をそれほど低減できない。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
先行技術におけるこのような課題を解決するために、本発明は、印刷メモリの必要量を低減可能な印刷制御方法を開示する。本方法によれば、すべての簡単帯域およびすべての事前ラスタライズ済み帯域のラスタライズについての空き時間を、印刷処理中における複雑帯域のラスタライズのために使うことができ、印刷の前にあらかじめラスタライズしておくべき帯域の数を最小化できる。結果として、複雑なページを印刷するのに要するメモリサイズを低減できる。
【課題を解決するための手段】
【００１０】
上記の目的を達成するために、本発明における技術的解決法は、印刷メモリの必要量を低減可能な印刷制御方法であって、この方法は、以下の各ステップを含む。
（Ａ）インタフェースを介して、ホストから印刷データを受信する。
（Ｂ）ページサイズや印刷速度等の観点から、各ページを分割する帯域の数と各帯域の印刷時間（ＴＰ）を判定する。
（Ｃ）印刷データを、各帯域に対応する中間形式データに変換する。
（Ｄ）中間形式データにおける各帯域のラスタライズ時間（ＴＲ）を計算する。
（Ｅ）印刷時間（ＴＰ）がラスタライズ時間（ＴＲ）未満となる帯域を「複雑帯域」として設定する。
（Ｆ）印刷時間（ＴＰ）がラスタライズ時間（ＴＲ）以上となる帯域を「簡単帯域」として設定する。
（Ｇ）各帯域のラスタライズ開始タイミングを決定する。このステップは、更に、以下のステップを含む。
（１）帯域あたり必要な印刷時間であるＴＰに対して、帯域番号から１をマイナスした数値を乗じることにより、各帯域の印刷開始タイミングを初期化する。
（２）各帯域のラスタライズ終了タイミングを同帯域の印刷開始タイミングとして設定し、各簡単帯域のラスタライズ開始タイミングを、同帯域のラスタライズ終了タイミングから同帯域のラスタライズ時間ＴＲを減じた値に設定する。
（３）各帯域の印刷空き時間を、各帯域の印刷時間（ＴＰ）として初期化する。
（４）最初の帯域を除く各簡単帯域のラスタライズ占有時間を、印刷空き時間から減算する、具体的には、ある帯域のラスタライズ時間を一つ前の帯域の印刷空き時間から減算する。
（５）マーキングされていない複雑帯域が存在しなければ、ステップ（１０）に移行する。
（６）マーキングされていない各複雑帯域のラスタライズ開始タイミングを設定する。
（７）マーキングされていない複雑帯域であって、ラスタライズ開始タイミングが最大となる帯域を動作帯域として選択する。動作帯域のラスタライズ開始タイミングが０未満の時は、（Ｇ）の処理を終了させる。
（８）動作帯域のラスタライズ終了タイミングを、印刷空き時間が０ではない、動作帯域の直前の帯域の帯域番号に更新し、動作帯域をマーキングする。
（９）動作帯域のラスタライズ占有時間を、印刷空き時間情報から除いて、（５）の処理に移行する。
（１０）各複雑帯域のラスタライズ開始タイミングを更新する。
（Ｈ）印刷タスクを起動し、ページ印刷を開始し、印刷終了させる。
【００１１】
更に、上記（Ｇ）（１０）の処理において、各複雑帯域のラスタライズ開始タイミングを更新する処理は、以下の各ステップを含んでもよい。
（１）マーキングされていない複雑帯域すべてのラスタライズ開始タイミングを「−１」に設定し、マーキングされていない複雑帯域すべてを前処理帯域としてマーキングする。
（２）各帯域の印刷空き時間を、各帯域の印刷時間として初期化する。
（３）最初の帯域を除く各簡単帯域のラスタライズ占有時間を、印刷空き時間から減算する、具体的には、ある帯域のラスタライズ時間を一つ前の帯域の印刷空き時間から減算する。
（４）マーキングされた複雑帯域が存在しなければ（１０）の処理を終了させ、そうでなければ、マーキングされた複雑帯域から、ラスタライズ終了タイミングが最大となる帯域を動作帯域として選択する。
（５）動作帯域のラスタライズ開始タイミングを計算する。
（６）動作帯域のラスタライズ占有時間を印刷空き時間から除き、さらに動作帯域のマーキングを除去し、（４）に移行する。
【００１２】
更に、上記（Ｇ）（６）の処理、および、（Ｇ）（１０）（５）の処理において、ある帯域のラスタライズ開始タイミングを計算する処理は、以下の各ステップを含んでもよい。ここでは、初期化されるべき帯域を動作帯域とよぶ。
（ａ）動作帯域のラスタライズ時間として必要な時間を設定し、現在帯域（current band）を動作帯域として設定する。
（ｂ）現在帯域の帯域番号が２未満か否かを判定し、２未満であれば、動作帯域は前処理する必要があるとして、その動作帯域のラスタライズ開始タイミングを「−１」に設定し、請求項１のステップ（６）、あるいは、請求項３のステップ（５）を終了させる。２未満でなければ、次のステップを実行する。
（ｃ）現在帯域の直前の帯域における印刷空き時間を、必要時間から減算する。
（ｄ）現在帯域の直前の帯域を新規の現在帯域として設定し、印刷空き時間が０より大きければ（ｂ）の処理に移行し、０以下のときは次のステップを実行する。
（ｅ）上記直前の帯域の印刷開始タイミングに必要時間の絶対値を加算した値を動作帯域のラスタライズ開始タイミングとして設定する。
【００１３】
更に、上記（Ｇ）（９）の処理、および、（Ｇ）（１０）（６）の処理において、動作帯域のラスタライズ占有時間を除く処理は、以下の各ステップを含んでもよい。
（ａ）動作帯域のラスタライズ時間として必要時間を設定し、現在帯域を動作帯域として設定する。
（ｂ）現在帯域の直前の帯域における印刷空き時間を、必要時間から減算する。
（ｃ）現在帯域の直前の帯域の印刷空き時間を０に設定し、現在帯域の直前の帯域を新たな現在帯域として設定し、必要時間が０より大きいときには（ｂ）に移行し、必要時間が０以下のときには次のステップを実行する。
（ｄ）現在帯域の直前の帯域の空き時間を必要時間の絶対値として設定する。
【００１４】
更に、（Ｈ）の処理における印刷タスクは、主として印刷処理のためのタスクであり、印刷タスクは、以下の各ステップを含んでもよい。
（１）ラスタライズ開始タイミングとして「−１」を設定されている全帯域を事前にラスタライズする。
（２）ラスタライズ開始タイミングが０より大きい複雑帯域が存在するときは、メインの印刷タスクよりも優先度の低い補助タスクをセットアップし、関連する複雑帯域のラスタライズ開始タイミングにおいて、補助タスクにより各複雑帯域のラスタライズを開始する。
（３）帯域１をラスタライズし、ビットマップをプリント・バッファに送信する。
（４）プリントエンジンを起動し、プリント・バッファ中にある帯域の印刷を開始させる。
（５）次に印刷すべき帯域が簡単帯域のときは、その帯域のラスタライズ開始タイミングまで、メインの印刷タスクにより次の帯域をラスタライズする。
（６）次の帯域のラスタビットマップを取得し、そのラスタビットマップをプリント・バッファに送信する。
（７）プリントエンジンにて、次の帯域の印刷を開始する。
（８）ページ印刷が完全に終了するまで上記（５，６，および７）のステップを繰り返す。
【００１５】
本発明は以下の効果を奏する。本発明の印刷制御方法によれば、すべての簡単帯域およびすべての事前ラスタライズ済みの帯域のラスタライズ空き時間を利用することにより、複雑帯域を印刷処理中にラスタライズし、印刷開始前に事前ラスタライズすべき帯域の数を最小化し、必要な印刷メモリのサイズを低減できる。
【発明を実施するための最良の形態】
【００１６】
添付の図面を参照して、以下、本発明を詳細に説明する。
【００１７】
図１は、ホストインタフェース１１、ＣＰＵ１３、ＲＯＭ１６、ＤＲＡＭ１２、印刷制御部１４、プリントエンジン１５などを含むレーザプリンタと共に、本発明による印刷制御方法を示す。ホストインタフェース１１は、パラレルインタフェース、ネットワーク、およびＵＳＢ等として構成される。プリンタは、ホストインタフェース１１を介してコンピュータ１０から印刷データを受信する。ＣＰＵ１３は、プリンタの中央制御装置である。ＲＯＭ１６は、プログラムやフォント等の保存に使用される。ＤＲＡＭ１２は、プログラムを実行するためのスペースであり、ラスタビットマップのバッファとして機能する。印刷制御部１４は、プリントエンジン１５を制御して、ラスタビットマップを紙に印刷させる。
【００１８】
図２に示すように、印刷ページは、紙の移動方向に沿って、Ｎ帯域（Ｎ≧２）のように、論理的に複数の帯域に分割できる。各帯域は、Ｍ行のように、同数のスキャンニング行を含む。１ページあたりのスキャンニング行の合計がＮ×Ｍにならないときには、最終帯域の行数はＭ未満になるが、これは本発明の有効性に影響するものではない。ページ全体の印刷時間をＴ秒とすると、１帯域あたりの印刷時間ＴＰはＴ／Ｎとなる。ＴＰは、次帯域のラスタビットマップを生成するための時間でもある。次帯域のラスタビットマップをＴＰ以内に生成完了できなければ、先述した「印刷オーバラン」が発生する。
【００１９】
図３に示すように、本発明は、印刷メモリの必要量を低減可能な印刷制御方法を提供する。
【００２０】
具体的には、プリンタは、PostScriptやＰＣＬなどのページ記述言語により記述されたページの内容（コンテンツ）を、コンピュータ１０からホストインタフェース１１を介して受信する。受信された情報は、ＤＲＡＭ１２に保存される。ＲＯＭ１６のプログラムは、紙の移動方向、ページサイズ、印刷速度、プリンタのメモリ容量、ＣＰＵ性能等の観点から、ページを分割すべき帯域の数を決定する。たとえば、Ｎ帯域に分割されたとする。分割された帯域を、紙の移動方向に沿って順番に、帯域１、帯域２、帯域３、・・・、帯域Ｎとよぶ。１ページあたりの印刷時間はＴであるため、１帯域あたりの印刷時間ＴＰはＴＰ＝Ｔ／Ｎとなる。続いて、ページの内容（コンテンツ）（たとえば、テキストやグラフィックス）は、簡単な中間形式の命令群として解釈され、命令群からラスタビットマップが簡単に取得される。これらの命令群は、ページ上における各帯域の位置に対応して、帯域ごとに保存される。通常、ページ全体について中間形式の命令群に占有されるスペースは、ラスタビットマップにより占有されるスペースよりずっと小さい。
【００２１】
次の処理は、各帯域の中間形式命令群の内容にしたがって、各帯域の中間形式命令群をラスタライズしてラスタビットマップを生成するための必要時間を計算することである。この時間の長さを、たとえば、帯域ＩについてはＴＲ［Ｉ］のように表記する。
【００２２】
ＴＲ［Ｉ］をＴＰと比較する。ＴＰ＜ＴＲ［Ｉ］であれば、帯域Ｉを「複雑帯域」とする。そうでなければ、「簡単帯域」として、印をつける。
【００２３】
次の処理は、各帯域のラスタライズ開始タイミングを決定することであるが、詳細については図４に関連して後述する。
【００２４】
最後に、印刷タスクが開始してページが印刷されるが、詳細について図６に関連して後述する。
【００２５】
図４に示すように、各帯域のラスタライズ開始タイミングを決定する処理過程は、以下の各ステップを含む。
（１）各帯域の印刷開始タイミングを初期化する。ここでは、最初の帯域の印刷開始タイミングを０でマーキングし、残りの帯域の開始タイミングを、（帯域番号−１）にＴＰを乗じた値にてマーキングする。
（２）各簡単帯域のラスタライズ開始タイミングを決定する。ここでは、各簡単帯域のラスタライズ終了タイミング（ＴｅｎｄＲａｓｔｅｒ）を、同帯域の印刷開始タイミングとして設定する。したがって、ある簡単帯域のラスタライズ終了タイミング（ＴｅｎｄＲａｓｔｅｒ）から当該帯域のラスタライズ時間（ＴＲ）を引いたものが、当該帯域のラスタライズ開始タイミング（ＴｂｅｇｉｎＲａｓｔｅｒ）となる。
（３）空き時間情報を初期化する。ここでは、各帯域の空き時間を各帯域の印刷時間（ＴＰ）として初期化する。次に、合計空き時間から、最初の帯域以外の各簡単帯域のラスタライズ占有時間を減算する。たとえば、ある帯域のラスタライズ時間を、直前帯域の空き時間から減算する。
（４）各複雑帯域のラスタライズ終了タイミングを初期化する。ある複雑帯域のラスタライズ終了タイミングは、同帯域の印刷開始タイミングとして初期化される。
（５）複雑帯域の中でマーキングされていないものがあるか否かをチェックする。なければ、全帯域のラスタライズ開始タイミングを更新する処理に移行する。
（６）マーキングされていない複雑帯域があれば、それら各複雑帯域のラスタライズ開始タイミングを初期化する。空き時間のすべてを一帯域で利用可能であれば、ある帯域のラスタライズ開始タイミング（ＴｂｅｇｉｎＲａｓｔｅｒ）を、その帯域のラスタライズ終了タイミング（ＴｅｎｄＲａｓｔｅｒ）の前に確実にラスタライズが完了するようなタイミングに設定し、これがその帯域の最新のラスタライズ開始タイミングとなる。詳細については図５に関連して後述する。
（７） 動作帯域として、マーキングされていない帯域の中から最大のラスタライズ開始タイミングを有する帯域を選択する。
（８）動作帯域のラスタライズ開始タイミングが０未満のときは、全帯域のラスタライズ開始タイミングを更新する。
（９）０以上であれば、動作帯域に先行する帯域であって、空き時間が０でない帯域の帯域番号に、動作帯域のラスタライズ終了タイミング（ＴｅｎｄＲａｓｔｅｒ）を更新する。
（１０）動作帯域をマーキングする。
（１１）空き時間情報を更新する。図６に示すように、動作帯域の占有時間を空き時間から除し、（５）に戻って、その後動作予定の帯域が存在するか否かチェックする。
【００２６】
どの帯域を補助タスクに配置するか決定する。補助タスクに配置される帯域をすべてマーキングし、すべての帯域のラスタライズ開始タイミングを更新する。詳細は図７に示す。
【００２７】
図５は、動作帯域についてのラスタライズ開始タイミングの決定方法を示す。詳細は以下のとおりである。
（１）動作帯域のラスタライズ時間として必要時間（Ｔｉｍｅ）を設定する。
（２）現在の帯域を動作帯域として設定し、現在の帯域の帯域番号が２未満か否か判定する。２未満であれば、動作帯域のラスタライズ開始タイミングを−１に設定して処理を終了させる。２以上であれば、次のステップに移行する。
（３）現在の帯域の直前の帯域の空き時間を、「必要時間（Ｔｉｍｅ）」から減算する。
（４）必要時間（Ｔｉｍｅ）が０未満となるか判定する。０未満であれば、さきほどの「直前の帯域」の印刷開始タイミングに必要時間（Ｔｉｍｅ）の絶対値をプラスしたものを動作帯域のラスタライズ開始タイミングとして設定する。０以上であれば、現在帯域の直前の帯域を新規の現在帯域として設定し、新規の現在帯域の番号が２未満か否か判定する。２未満であれば、動作帯域のラスタライズ開始タイミングを−１に設定して処理を終了させる。２以上であれば、（３）を繰り返す。
【００２８】
図６に示すように、動作帯域のラスタライズ時間を除去する処理の過程は以下の通りである。
（１）動作帯域のラスタライズ時間として必要時間（Ｔｉｍｅ）を設定する。
（２）現在帯域を動作帯域として設定する。現在帯域の直前の帯域における空き時間を、必要時間（Ｔｉｍｅ）から減算する。
（３）必要時間（Ｔｉｍｅ）が０より大きいか否か判定する。必要時間（Ｔｉｍｅ）が０未満のときは、現在帯域の直前の帯域の空き時間を必要時間（Ｔｉｍｅ）の絶対値として設定して処理を終了する。０以上のときには、現在帯域の直前の帯域の空き時間を０に設定し、現在帯域の直前の帯域を新規の現在帯域として設定し、現在帯域の直前の帯域の空き時間を必要時間（Ｔｉｍｅ）から減算する。
【００２９】
図７に示すように、各複雑帯域のラスタライズ開始タイミングを更新する。マーキングされていない複雑帯域を、前処理帯域として設定する。マーキングされた複雑帯域がラスタライズされる順番は、図４におけるラスタライズ終了タイミングの決定順序によって決まる。その順序における各複雑帯域は、後の帯域が十分なラスタライズ時間を有している限り、できるだけ遅くラスタライズされる。図７にて具体的な処理過程を示す。
（１）マーキングされていない複雑帯域のすべてを前処理帯域としてマーキングし、それらのラスタライズ開始タイミングを−１に設定する。
（２）空き時間情報を初期化する。特に、各帯域の空き時間を各帯域の印刷時間（ＴＰ）として初期化し、最初の帯域以外の各簡単帯域のラスタライズ占有時間を空き時間から減算する。ここでの減算は、一の帯域の直前の帯域の空き時間からその帯域のラスタライズ時間を減算することによって実行される。
（３）マーキングされた複雑帯域がないときはこの処理を終了する。あれば、次のステップに進む。
（４）動作帯域として、マーキングされた複雑帯域からラスタライズ終了タイミング（ＴｅｎｄＲａｓｔｅｒ）の最大値を有する帯域を選択する。
（５）図５にしたがって、動作帯域のラスタライズ開始タイミングを計算する。
（６）図６にしたがって、空き時間情報を更新し、動作帯域のラスタライズ占有時間を除く。
（７）動作帯域のマーキングを削除し、マーキングされた複雑帯域が更に存在するかチェックする。
【００３０】
図８に示すように、印刷タスクの詳細な処理過程は以下のとおりである。
（１）前処理帯域としてマーキングされた帯域がすべて事前にラスタライズされるように初期化する。
（２）前処理されていない複雑帯域があるときは、補助タスクを設定する。前処理されていない複雑帯域は補助タスクにてラスタライズされる。印刷メインタスクは補助タスクより高い優先度を有し、補助タスクは、印刷メインタスクがアイドル状態となるときだけ実行される。
（３）帯域１をラスタライズし、そのビットマップをプリント・バッファに送信し、プリントエンジンを起動する。
（４）プリント・バッファ中の帯域を印刷する。
（５）印刷されている帯域が最後の帯域か判定する。最後の帯域であれば印刷を終了させる。そうでなければ次の帯域が簡単帯域か否か判定する。簡単帯域であれば、次の帯域はそのラスタライズ開始タイミングまでラスタライズされ、ラスタビットマップは印刷バッファに送信される。次の帯域が簡単帯域でなければ、更に、次の帯域が前処理された複雑帯域か否か判定する。そうであれば、事前ラスタライズされたラスタから、ラスタビットマップが印刷ラスタ・バッファに送信され、そうでなければ、ラスタビットマップは、当該帯域が補助タスクにより完全ラスタライズされた後に印刷ラスタ・バッファに送信される。
【００３１】
図９は、本発明の実施形態に基づく、印刷出力処理中の印刷メインタスク、印刷補助タスクおよびプリントエンジンの並列実行例を簡略化した図である。
【００３２】
図９に示すように、あるページは、たとえば、６つの帯域に分割される。第１、第２および第４帯域は、ラスタライズ時間は、それぞれ０．５ＴＰ、０．５ＴＰおよび１ＴＰ（ＴＰは１つの帯域の印刷時間）である簡単帯域であり、第３、第５及び第６帯域は、ラスタライズ時間がそれぞれ１．２５ＴＰ、１．２５ＴＰおよび３．２５ＴＰである複雑帯域である。本発明では、第６帯域は前処理された帯域としてマーキングされる。第５帯域は、印刷開始後、補助タスクにより、１．７５ＴＰの後にラスタライズ化が開始される。第３帯域は、印刷開始時に、補助タスクによりラスタライズ化が開始される。
【００３３】
印刷開始中、印刷メインタスクは、印刷補助タスクに第３および第５帯域をラスタライズさせる。印刷補助タスクは印刷メインタスクより優先度が低い。印刷メインタスクは第１の帯域をラスタライズする前に、非リアルタイムのラスタライズ帯域（すなわち、第６帯域）をすべてラスタライズする。
【００３４】
プリントエンジンが最初の帯域の印刷を開始する間に、印刷補助タスクは３番目の帯域のラスタライズを開始する。印刷補助タスクは、０．５ＴＰ後に停止する。この時、印刷メインタスクは、２番目の帯域０．５ＴＰのラスタライズを開始する。
【００３５】
最初の帯域の印刷が終了する間に、印刷メインタスクによる２番目の帯域のラスタライズも終了する。プリントエンジンは２番目の帯域の印刷を開始し、印刷補助タスクは３番目の帯域のラスタライズを継続する。３番目の帯域のラスタライズは、１．７５ＴＰ後に終了する。この時、印刷補助タスクは、５番目の帯域のラスタライズを開始する。
【００３６】
２番目の帯域の印刷が終了する間に、印刷メインタスクはプリントエンジンを始動し、３番目の帯域を印刷する。その間に、４番目の帯域のラスタライズが終了する。
【００３７】
３番目の帯域の印刷が終了すると、印刷メインタスクはプリントエンジンを始動し、４番目の帯域を印刷する。５番目の帯域は複雑帯域であるため、そのラスタライズは印刷メインタスクにより実行されない。したがって、印刷メインタスクは、アイドル状態となる。
【００３８】
４番目の帯域の印刷が終了する間に、印刷メインタスクは、プリントエンジンを始動し、５番目の帯域を印刷する。６番目の帯域は複雑帯域であるため、印刷メインタスクではラスタライズされない。したがって、印刷メインタスクはアイドル状態となる。
【００３９】
５番目の帯域の印刷が終了する間に、印刷メインタスクはプリントエンジンを始動し、６番目の帯域を印刷する。
【００４０】
６番目の帯域の印刷が終了すると、ページ印刷は終了する。
【００４１】
従来の印刷技術では、図６に示す例のように、１番目、３番目、５番目および６番目の帯域について事前のラスタライズが完了していなければ、印刷を開始できない。本発明によれば、１番目と６番目の帯域のラスタライズさえ終わっていれば、印刷を開始できる。３番目と５番目の帯域のラスタライズは印刷処理の最中に実行される。したがって、必要な印刷メモリの容量を低減できる。
【００４２】
上記の記述は、本発明の１つの実施形態を示すものであり、本発明を制約するものではない。たとえば、上記においてはレーザプリンタに関して説明したが、本発明は、ラスタビットマップのインクジェットプリンタやラスタビットマップの写真植字機（phototypesetter）にも応用できる。したがって、本発明の趣旨および原理から逸脱しない限り、さまざまな修正、置換および改良も、本発明の技術範囲に入る。
【図面の簡単な説明】
【００４３】
【図１】印刷制御方法の概略図である。
【図２】印刷すべきページをＮ帯域に分割する方法を示す概略図である。
【図３】印刷処理のフローチャートである。
【図４】本発明におけるラスタライズ時間の決方法を示すフローチャートである。
【図５】帯域のラスタライズ開始タイミングの決定方法を示すフローチャートである。
【図６】現在帯域のラスタライズに要する時間を空き時間から除く方法を示すフローチャートである。
【図７】各帯域のラスタライズ開始タイミングの更新方法を示すフローチャートである。
【図８】印刷メインタスクのフローチャートである。
【図９】印刷処理において、印刷補助タスクと並行して印刷メインタスクを実行する過程の概略図である。
【図１】
2008526555.tif 000003
【図２】
2008526555.tif 000004
【図３】
2008526555.tif 000005
【図４】
2008526555.tif 000006
【図５】
2008526555.tif 000007
【図６】
2008526555.tif 000008
【図７】
2008526555.tif 000009
【図８】
2008526555.tif 000010
【図９】
2008526555.tif 000011
【国際調査報告】
2008526555.tif 000012
2008526555.tif 000013
2008526555.tif 000014
2008526555.tif 000015