(57)【要約】【課題】多量の印刷命令を生成するアプリケーションで印刷を行うと、ＰＤＬプリンタのパフォーマンスが極端に低下する。【解決手段】印刷装置で処理するバンド情報に従って所定サイズのバンドデータを格納する第１バンドバッファを獲得し（Ｓ１）、印刷命令を印刷装置で処理するバンド単位に分割し第１バンドバッファにバンド単位で格納する際に、第１バンドバッファに当該バンドに対応する印刷命令を格納できない場合は、そのバンドに対応する印刷命令を格納するためのメモリ領域を確保し第２バンドバッファとし、その第２バンドバッファに記憶される印刷命令と第１バンドバッファに格納されている印刷命令とをリンクさせ（Ｓ６）、第１バンドバッファに格納された印刷命令及び当該印刷命令にリンクされている第２バンドバッファの印刷命令とを印刷装置に送信する（Ｓ１０）。【選択図】  図５
2004334401.tif 000002
【特許請求の範囲】
【請求項１】
描画命令を解析して印刷命令を生成し印刷装置に送信して印刷させる印刷制御装置であって、
前記印刷装置で処理するバンド情報を取得する取得手段と、
前記バンド情報に従って所定サイズのバンドデータを格納する第１バンドバッファを獲得する手段と、
前記印刷命令を前記印刷装置で処理するバンド単位に分割し前記第１バンドバッファにバンド単位で格納する際に、前記第１バンドバッファに当該バンドに対応する印刷命令を格納できない場合は、前記バンドに対応する印刷命令を格納するためのメモリ領域を確保し第２バンドバッファとして管理する管理手段と、
前記第２バンドバッファに記憶される印刷命令と前記第１バンドバッファに格納されている印刷命令とをリンクさせる手段と、
前記第１バンドバッファに格納された印刷命令及び当該印刷命令にリンクされている前記第２バンドバッファの印刷命令とを前記印刷装置に送信する送信手段と、
前記送信手段により送信された印刷命令を格納していた前記第１及び第２バンドバッファを解放する解放手段とを有し、
前記解放手段により解放されたバンドバッファのメモリ領域を繰り返し利用することによりページ単位の印刷データをバンド単位に分割して前記印刷装置に送出するようにしたことを特徴とする印刷制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、描画命令を解析して印刷命令を生成し印刷装置に送信して印刷させる印刷制御装置に関するものである。
【０００２】
【従来の技術】
図２は、従来の印刷システムにおける印刷制御方法および処理の流れを説明する図である。
【０００３】
一般的には、図２に示すように、セントロニクスインターフェースといったパラレル通信手段やネットワーク通信手段を介してホストコンピュータ２０００とプリンタ装置２１００とが接続された印刷システムを構成している。
【０００４】
ホストコンピュータ２０００は、ワードプロセッサや表計算のようなアプリケーションソフトウェア２００１（以下、アプリと略称）がＷｉｎｄｏｗｓ（米国Ｍｉｃｒｏｓｏｆｔ社の登録商標）のような、いわゆる基本ソフトの上で動作している。このアプリ２００１を用いて印刷を行う場合は、そのプログラムから、基本ソフトが提供するいくつかのサブシステムのうちグラフィック・サブ・システム２００２の機能を用いて行う。このグラフィック・サブ・システム２００２は、例えばＷｉｎｄｏｗｓでは、ＧＤＩ２００４（Ｇｒａｐｈｉｃ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）と呼ばれており、ディスプレイやプリンタに対する画像情報の処理を司っている。このＧＤＩ２００４は、ディスプレイやプリンタといった各デバイス毎の依存性を吸収するためにデバイスドライバと呼ばれるモジュールを動的にリンクし、それぞれのデバイスに対する出力処理を行う。プリンタ装置２１００に対するこのモジュールは、プリンタドライバ２００５と呼ばれる。このプリンタドライバ２００５では、その能力や機能などに応じて、予めデバイスドライバに実装することが決められているＤＤＩ（Ｄｅｖｉｃｅ  Ｄｒｉｖｅｒ  Ｉｎｔｅｒｆａｃｅ）と呼ばれる関数群を用意する必要がある。アプリ２００１のＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）コールをＧＤＩ２００４がデバイスドライバ用にデータ変換を行い、このＤＤＩ関数群が適宜ＧＤＩ２００４からコールされて所定の印刷処理が実行されるような仕組みになっている。ＧＤＩ２００４では、このようにプリンタドライバ２００５を介してアプリ２００１からの印刷要求をシーケンシャルに処理している。プリンタドライバ２００５において、出力時のイメージデータ形式にまで描画してしまうイメージモードと、描画処理可能なプリンタ向けのコマンドであるＰＤＬ（Ｐｒｉｎｔｅｒ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）モードに大別される。
【０００５】
まず、ＰＤＬ（Ｐｒｉｎｔｅｒ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）モード系プリンタドライバについて説明する。
【０００６】
プリンタドライバ２００５は、ＤＤＩ関数毎にＰＤＬコマンドを生成する構成となっており、生成した印刷命令は、順次、再度ＧＤＩ２００４を介して１ページ分スプールファイル２００６として格納される。こうして１ページ分のデータが揃うとＩ／Ｆ２００７を介してプリンタ装置２１００へ送出される。
【０００７】
プリンタ装置２１００は、この印刷命令を受信すると受信バッファ２１０３に一時格納し、コマンド解析部２１０７で解析処理を行う。こうして解析した結果プリンタ装置２１００で高速に処理可能な中間データが生成され、ページメモリ２１０６の中間言語格納領域に格納される。この中間データがページメモリ２１０６に１ページ分蓄えられると、プリンタ装置２１００における処理単位であるバンド領域毎に登録順にリスト構造が作られる（以降バンドリスト）。このバンドリストにつながっている中間言語は、ハードウェア又はソフトウエアにより用意したページメモリ２１０６内のバンドメモリ領域に対して描画処理が行われる。
【０００８】
こうして生成されたバンドメモリ上のイメージデータは、エンジン回転に同期してビデオ信号に変換（シップ処理）される。こうしたバンドメモリを２つ用意し、繰り返し用いることで、少ないメモリ空間で、描画処理と、シップ処理をプリンタエンジン２１１０に同期して行うことが可能である。しかしながら上記ＰＤＬモード系処理では、ＤＤＩ関数から受け取るデータは全て描画コマンドとして生成されるため、アプリ２００１が多量の描画命令を発行してきた分だけＰＤＬコマンドが生成される。これに対してプリンタ装置２１００の搭載メモリ容量は有限であるため、プリンタ装置２１００では以下のような手段で印刷を実現している。
【０００９】
一部の個所に複雑な、又は多量の描画命令が発行された場合、描画時間がシップ処理時間よりも大きくなった場合。
【００１０】
こうした問題を解決するために、プリンタ装置２１００では以下のような手段を組み合わせて解決してきた。
【００１１】
［Ａ］サブクローズ方式
１．中間言語がページメモリ内に入りきらなくなった時は、それまで格納した中間言語データをバンドメモリを使って描画及び圧縮（ＰａｃｋＢｉｔｓ、Ｒｕｎｌｅｎｇｔｈ、ＪＢＩＧ圧縮等）し、中間データとして保持する（描画オブジェクトが関係した全てのバンド）。
【００１２】
２．描画が済んだ中間言語データを消去することで、ページメモリの空き領域を増やす。
【００１３】
３．空いた領域に入りきっていない中間言語を格納する。全ページが入りきれば、（１）で再登録した圧縮イメージデータを一つの中間言語として扱うことで、同期バンドレンダリング可能となる。
【００１４】
４．上記処理を行っても１ページ分入りきらないときは、再度（１）で示す処理を実施する（既に登録されている圧縮イメージデータが最初に描画され、その上に新たな中間データが描画された後、再圧縮することになる）。
【００１５】
［Ｂ］プレバンド方式
中間言語データが一つのバンドに集中して存在すると、描画処理がプリンタエンジンの印刷速度に間に合わないことがある。その場合は、プリンタ装置内部で中間言語で登録する際に、そう判断されたバンド領域に対して、プリンタエンジンを起動する前に用意したバンドメモリ上に描画処理を実施しておく。このような技術の一例として、例えば特許文献１がある。
【００１６】
【特許文献１】
特開平１０−１４７０１７号
【００１７】
【発明が解決しようとする課題】
以上の手段により、正常な印刷が保証されているが、高速な同期バンドレンダリング処理が不可能なためパフォーマンスの劣化が発生する。また多量の印刷命令を生成するアプリケーションで印刷を行うと、ＰＤＬプリンタのパフォーマンスが極端に落ちるという問題があった。
【００１８】
本発明は上記従来例に鑑みてなされたもので、限られたメモリサイズの環境において、印刷命令のデータサイズが大きくても、正常かつ高速な印刷を実現できる印刷制御装置を提供することを目的とする。
【００１９】
【課題を解決するための手段】
上記目的を達成するために本発明の印刷制御装置は以下のような構成を備える。即ち、
描画命令を解析して印刷命令を生成し印刷装置に送信して印刷させる印刷制御装置であって、
前記印刷装置で処理するバンド情報を取得する取得手段と、
前記バンド情報に従って所定サイズのバンドデータを格納する第１バンドバッファを獲得する手段と、
前記印刷命令を前記印刷装置で処理するバンド単位に分割し前記第１バンドバッファにバンド単位で格納する際に、前記第１バンドバッファに当該バンドに対応する印刷命令を格納できない場合は、前記バンドに対応する印刷命令を格納するためのメモリ領域を確保し第２バンドバッファとして管理する管理手段と、
前記第２バンドバッファに記憶される印刷命令と前記第１バンドバッファに格納されている印刷命令とをリンクさせる手段と、
前記第１バンドバッファに格納された印刷命令及び当該印刷命令にリンクされている前記第２バンドバッファの印刷命令とを前記印刷装置に送信する送信手段と、
前記送信手段により送信された印刷命令を格納していた前記第１及び第２バンドバッファを解放する解放手段とを有し、
前記解放手段により解放されたバンドバッファのメモリ領域を繰り返し利用することによりページ単位の印刷データをバンド単位に分割して前記印刷装置に送出するようにしたことを特徴とする。
【００２０】
【発明の実施の形態】
以下、添付図面を参照して本発明の好適な実施の形態を詳細に説明する。
【００２１】
本実施の形態の構成を説明する前に、本実施の形態を適用する印刷システムの印刷を担うカラーレーザビームプリンタ（以下「ＬＢＰ」と記述）の構成について図１を参照しながら説明する。
【００２２】
図１は、本実施の形態に係るＬＢＰ１００の構造を説明する図で、ここでは、このカラーＬＢＰは、６００ドット／インチ（ｄｐｉ）の解像度を有し、各色成分各画素が８ビットで表現された多値データに基づいて画像記録を行う場合で説明する。
【００２３】
図１において、１００はＬＢＰ本体を示し、外部に接続されているホストコンピュータ（図３の３０００）などから供給されるプリントデータ（文字コードや画像データ等）及び制御コードを含む印刷情報を入力して記憶するとともに、それらの情報に従って対応する文字パターンやイメージ等を作成し、記録媒体である記録紙上に像を形成する。１１０はフォーマッタ制御部で、ホストコンピュータから供給される印刷情報を解析して印刷イメージを生成するとともに、ＬＢＰ１００の制御を行う。また、このフォーマッタ制御部１１０は、ユーザによる操作及びユーザに対する状態通知のためのスイッチ及びＬＥＤ表示器等が配されているオペレーションパネル（操作パネル）１２０と接続されており、その操作パネル１２０は、このＬＢＰ１００の外装の一部として配設されている。このフォーマッタ制御部１１０において生成された最終的な印刷イメージは、ビデオ信号として出力制御部１３０に送出される。出力制御部１３０は、ＬＢＰ１００の不図示の各種センサからの状態入力とともに光学ユニット１４０および各種駆動系機構部に対し制御信号を出力し、ＬＢＰ１００としての印刷処理を制御するものである。
【００２４】
図１に示すＬＢＰ１００において、給紙カセット１６１から給紙された用紙Ｐは、その先端をグリッパ１５４ｆにより狭持されて、転写ドラム１５４の外周に保持される。光学ユニット１４０により感光ドラム１５１上に形成された各色の潜像は、イエロー（Ｙ）、マゼンタ（Ｍ）、シアン（Ｃ）、ブラック（Ｂ）の各色現像器Ｄｙ，Ｄｍ，Ｄｃ，Ｄｂにより現像化されて、転写ドラム１５４の外周の用紙に複数回転写されて多色画像が形成される。その後、用紙Ｐは転写ドラム１５４より分離されて、定着ユニット１５５で定着され、排紙部１５９より排紙トレー部１６０に排出される。
【００２５】
ここで各色の現像器Ｄｙ，Ｄｍ，Ｄｃ，Ｄｂは、その両端に回転支軸を有し、各々がその軸を中心に回転可能となるように現像器選択機構部１５２に保持されている。これによって、各現像器Ｄｙ，Ｄｍ，Ｄｃ，Ｄｂは、図１に示すように現像器選択のために現像器選択機構部１５２が回転軸１５２ａを中心にして回転しても、その姿勢を一定に維持できる構成をとっている。この回転により選択された現像器が現像位置に移動した後、現像器選択機構部１５２は現像器と一体で支点１５３ｂを中心にして、選択機構保持フレーム１５３がソレノイド１５３ａにより感光ドラム１５１方向へ引っ張られる。これにより、その選択された現像器は感光ドラム１５１方向へ移動して現像処理が行われるように構成されている。
【００２６】
感光ドラム１５１の表面は、帯電器１５６によって所定の極性に均一に帯電される。フォーマッタ制御部１１０においてデバイス依存ビットマップとして展開された印刷情報は、対応するパターンのビデオ信号ＶＤＯに変換されレーザドライバに出力され半導体レーザ１４１を駆動する。この半導体レーザ１４１から発射されるレーザ光は、入力されたビデオ信号ＶＤＯに応じてオンオフ制御され、更に、スキャナモータ１４３によって高速回転されるポリゴンミラー１４２で左右方向に振らされ、ポリゴンレンズ１４４、反射鏡１４５を介して感光ドラム１５１上を走査露光する。これにより、感光ドラム１５１上には画像パターンの静電潜像が形成されることになる。こうして例えば、Ｍ（マゼンタ）色の静電潜像がＭ（マゼンタ）色の現像器Ｄｍにより現像され、感光体ドラム１５１上にＭ（マゼンタ）色の第１のトナー像が形成される。
【００２７】
一方、所定のタイミングで転写紙Ｐが給紙され、トナーと反対極性（例えばプラス極性）の転写バイアス電圧が転写ドラム１５４に印加される。これにより感光体ドラム１５１上の第１トナー像が転写紙Ｐに転写されると共に、その転写紙Ｐが転写ドラム１５４の表面に静電吸着される。その後、感光ドラム１５１はクリーナ１５７によって残留するＭ（マゼンタ）色トナーが除去され、次の色の潜像形成及び現像行程に備える。以下同様の手順によってＣ（シアン）、Ｙ（イエロ）、Ｂｋ（ブラック）の順で、第２，３，４色目のトナー像が転写紙Ｐに転写される。
【００２８】
但し、各色のトナー像の転写時には、転写ドラム１５４には前回よりも高いバイアス電圧が印加される点が異なる。こうして４色のトナー像が重畳転写された転写紙Ｐの先端部が分離位置に近づくと、分離爪１５８が接近してその先端が転写ドラム１５４の表面に接触し、転写紙Ｐを転写ドラム１５４から分離させる。こうして分離された転写紙Ｐは、定着ユニット１５５に搬送され、ここで転写紙Ｐ上のトナー像が定着されて排紙トレイ１６０上に排出される。
【００２９】
本実施の形態に係るカラーレーザビームプリンタ（ＬＢＰ）は、以上のような画像形成過程を経て６００ドット／インチ（ｄｐｉ）の解像度で画像を形成する。尚、本発明を適用可能なプリンタは、本実施の形態に係るカラーＬＢＰに限られるものではなく、例えばインクジェットプリンタやサーマルプリンタ等、他のプリント方式のカラープリンタでもよい。
【００３０】
次に、本実施の形態に係るＬＢＰ１００のフォーマッタ制御部１１０について説明する。
【００３１】
図３は、本実施の形態に係るＬＢＰ１００とホストコンピュータとを含む印刷システムの機能構成を説明する機能ブロック図である。
【００３２】
フォーマット制御部１１０は、通常はＰＤＬコントローラなどとも呼ばれている部分であり、ホストコンピュータ３０００との接続手段であるところのインターフェース（Ｉ／Ｆ）部３１０１と、受信データ等を一時的に保持管理するための受信バッファ３１０３、送信データ等を一時的に保持管理するための送信バッファ３１０４、印刷データの解析を司るコマンド解析部３１０７、印刷制御処理実行部３１０９、描画処理実行部３１０５、ページメモリ３１０６等を備えている。
【００３３】
インターフェース（Ｉ／Ｆ）３１０１は、ホストコンピュータ３０００との間で印刷データの送受信を行う通信手段であり、通信プロトコルとして、例えばＩＥＥＥ−１２８４に準拠した通信を可能としている。但し本実施の形態では、この通信手段に限定するものでなく、ネットワークを介してさまざまなプロトコルによる接続であってもよいし、ＩＥＥＥ−１３９４に準じた通信手段であってもよい。このインターフェース３１０１を通して受信した印刷データは、そのデータを一時的に保持する記憶手段である受信バッファ３１０３に逐次蓄積され、必要に応じてコマンド解析部３１０７又は描画処理実行部３１０５によって読み出されて処理される。コマンド解析部３０１７は、印刷命令体系や印刷ジョブ制御言語に準じた制御プログラムにより構成されており、文字印刷、図形、イメージなどの描画に関する印刷データの解析を行う。その解析結果に基づいて描画処理実行部３１０５に指示を与えて描画処理を実行させる。また給紙選択やリセット命令などの描画以外の処理コマンドは、コマンド解析部３０１７から印刷制御処理実行部３１０９に送られて処理される。
【００３４】
描画処理実行部３１０５は、文字やイメージの各描画オブジェクトをページメモリ３１０６のバンドメモリに逐次展開するレンダラである。本実施の形態に係るＬＢＰ１００では、ＭＣＹＫの面順次でデバイス依存ビットマップデータを送出する必要があるが、標準状態では、そのために必要なメモリ領域を全て確保するわけではなく、１プレーン（１，２或いは４ビット／画素）の数分の１のバンド領域としてバンドメモリがページメモリ３１０６内に確保され、そのバンド領域を使ってレンダリング処理を行う。こうして１バンド分の描画処理が終了すると、このレンダリングが完了したビットマップイメージを圧縮して別のメモリ領域に移動し、そのバンドメモリを解放している。これにより、このＬＢＰ１００が必要とするページメモリ３１０６のメモリサイズの増大を抑えている。
【００３５】
こうして１ページ分の圧縮バンドビットマップが生成されたら、プリンタエンジン３１１０の印刷速度に同期して、その圧縮したビットマップデータを伸張してビデオ信号ＶＤＯを生成することで印刷処理を実現している。
【００３６】
尚、一般的には、フォーマッタ制御部１１０は、中央演算処理装置（ＣＰＵ）、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）などを用いたコンピュータシステムで構成されている。また、各部の処理は、マルチタスクモニタ（リアルタイムＯＳ）の下でタイムシェアリングに処理される構成であっても良いし、各機能ごとに専用のコントローラ（ハードウェア）を用意して独立して処理される構成であっても構わない。
【００３７】
操作パネル１２０は、前述した通り、このＬＢＰ１００の各種状態を設定・表示するためのものである。出力制御部３１０８は、バンドメモリ（ページメモリ）の内容をビデオ信号ＶＤＯに変換処理し、プリンタエンジン部３１１０へ転送する。このプリンタエンジン部３１１０は、受け取ったビデオ信号ＶＤＯを記録紙に永久可視画像を形成するための印刷機構部であり、図１において前述したものである。
【００３８】
次にホストコンピュータ３０００を含む本実施の形態の印刷システムの全体構成について説明する。
【００３９】
図３において、ホストコンピュータ３０００は、プリントデータ及び制御コードを含む印刷情報をＬＢＰ１００に出力する。このホストコンピュータ３０００は、入力デバイスであるキーボード３１０やポインティングデバイスであるマウス３１１と、表示デバイスであるディスプレイモニタ３２０等を備えるコンピュータシステムとして構成されている。このホストコンピュータ３０００は、例えばＷｉｎｄｏｗｓ  ＸＰ（登録商標）、ＷｉｎｄｏｗｓＭｅ（登録商標）などの基本ＯＳによって動作しているものとする。
【００４０】
このホストコンピュータ３０００において、本実施の形態に関する機能的な部分にのみ注目し、基本ＯＳ上での機能を大きく分類すると、アプリケーションソフトウェア３０１、グラフィック・サブ・システム３０２、印刷情報格納手段およびＬＢＰ１００との通信手段を含むスプーラ３０３に大別される。
【００４１】
アプリケーションソフトウェア３０１は、例えば、ワープロや表計算などの基本ソフトウェア上で動作する応用ソフトウェアを指す。グラフィック・サブ・システム３０２は、基本ＯＳの機能の一部であるＧｒａｐｈｉｃ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ（以後、ＧＤＩと記す）３０２１と、そのＧＤＩ３０２１から動的にリンクされるデバイスドライバであるプリンタドライバ３０２２とを含んでいる。このプリンタドライバ３０２２は、プリンタドライバ３０２２の初期化時にＵＩ等で指定された印刷設定（用紙サイズ、解像度、カラーモード）と、ＬＢＰ１００の機種依存情報とから、ＬＢＰ１００内部で描画処理に使うバンディングサイズ、バンド数を算出する。またプリンタドライバ３０２２は、初期バンドスプーラを確保し、上記算出したバンド用スプール領域として管理を行う。
【００４２】
また、ＰＤＬ形式のプリンタドライバ３０２２は、ＧＤＩ３０２１からＤＤＩ（Ｄｅｖｉｃｅ  Ｄｒｉｖｅｒ  Ｉｎｔｅｒｆａｃｅ）というインターフェースを介してコールされ、逐次ＰＤＬコマンドを生成してスプールファイル３０３１に書き込む。本実施の形態に係るシステムでは、ＤＤＩ関数に渡された情報をＬＢＰ１００で高速に処理可能な印刷命令データ形式に変換し、その生成した印刷命令データを前記算出して獲得したバンドスプーラ３０２３に分割して格納していく。
【００４３】
１ページ分の印刷データがバンドスプーラ３０２３にバンド毎に分割して格納されると、１バンド目のバンドスプーラ３０２３に格納されている印刷命令から順にスプーラ３０３に送出する。各バンドスプーラ３０２３から送り出す印刷命令の先頭には、バンドの位置を特定するコマンドが付されている。これにより、ＬＢＰ１００で受信中の印刷データが、どのバンドに属するのか判別することができる。
【００４４】
１ページ当りの描画命令がＤＤＩから多量に渡されると、初期化時に確保したバンドスプーラ３０２３に、１ページ分の印刷命令が格納できないことがある。そのときは、更にメモリ領域を確保してバンドスプーラ３０２３を増やすことで対処する。
【００４５】
しかしながら、ＰＣ環境の搭載メモリサイズを超えた描画命令が発行されたときに、本実施の形態では以下の手段をとる。
【００４６】
既に、バンドスプーラ３０２３にスプールされている印刷命令をバンド１から順に、バンド番号を付けてＬＢＰ１００に送出する。
【００４７】
全バンドを送出することでバンドスプーラ３０２３が空になるので、残りの印刷命令を格納することが可能となる。バンドスプーラ３０２３の空き領域が足りなくなったときは以上の処理を繰り返すことで、限られたメモリ空間でも理論的には無限サイズのデータ処理が可能となる。
【００４８】
システムスプーラ３０３は、ＯＳが管理しているスプールファイルシステムであり、設定により１ページ単位、又はジョブ単位で印刷データをスプールファイル３０３１にスプールし、Ｉ／Ｆ３０３２を介してＬＢＰ１００に送出する。
【００４９】
基本ＯＳによって、上述したこれらの名称や機能的な枠組みは若干異なる場合があるが、本実施の形態に係る各技術的手段が実現できるモジュールであれば、それらの名称や枠組みは本発明にとってあまり大きな問題ではない。例えば、スプーラ３０３やスプールファイル３０３１と呼ばれるものは、別のＯＳにおいてプリント・キューと呼ばれるモジュールに処理を組み込むことによっても実現可能である。
【００５０】
尚一般的に、これらの各機能モジュールを含むホストコンピュータ３０００は、中央演算処理装置（ＣＰＵ）、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ハードディスクドライブ（ＨＤＤ）、各種入出力制御部（Ｉ／Ｏ）などのハードウェアのもとで、基本ソフトと呼ばれるソフトウェアがその制御を司り、その基本ソフトによる制御の下で、それぞれの応用ソフト、サブシステムプロセスが機能モジュールとして動作するようになっている。
【００５１】
［印刷データの形式］
図４は、本実施の形態に係る印刷システムで使用される印刷命令データを説明する図である。
【００５２】
図において、５００は１ジョブ分の印刷命令データを示している。この印刷命令データ５００は、通常のＰＤＬ言語と同様に、ジョブ開始命令（ｊｏｂＳｔａｒｔ）５００１で始まり、ページの開始を宣言するページ開始命令（ｐａｇｅＳｔａｒｔ）５００２が続く。５００４は１バンド分の印刷命令データを示している。５００３はバンド情報（ＢａｎｄＩｎｆｏ）で、これには後続のバンドデータの位置を示すＢａｎｄＲｅｃｔ（５００８）、印刷データの量（サイズ）ＢａｎｄＤａｔａＳｉｚｅ（５００９）が含まれている。このバンド情報５００３に続いて、ＢａｎｄＤａｔａＳｉｚｅ５００９で指示されたデータ量のバンド単位の描画コマンド５００４が繰り返される。そして、ページの最後には、ｐａｇｅＥｎｄ５００７が送られてくる。
【００５３】
［プリンタドライバの処理］
図５は、本実施の形態に係るプリンタドライバ３０２２による印刷命令データの生成処理を示すフローチャートである。
【００５４】
まずステップＳ１で、プリンタドライバ３０２２の初期化を実行し、ＬＢＰ１００で処理するバンドに関する情報（バンドサイズ）を取得して、そのバンドサイズに相当するバンドスプーラ用のメモリ領域を確保する。次にステップＳ２に進み、ＯＳから受け取った描画データからバンド毎に分割した印刷コマンドを作成する。次にステップＳ３に進み、その作成した印刷コマンドを、用意しているバンドスプーラ３０２３のメモリ空間に格納できるか否かを判定し、格納できない時はステップＳ４に進み、足りない分のバンドスプールメモリ領域を獲得する。そして次にステップＳ５に進み、必要な分のバンドスプーラ用メモリ領域が確保できたかどうかを調べ、確保できない時はステップＳ７に進み、バンドスプーラ３０２３に格納されている印刷コマンドに、バンド位置が分かるようにして１バンド目から順にスプーラ３０３に送出する。一方、ステップＳ５でメモリ領域を確保できた時はステップＳ６に進み、バンドスプーラ３０２３に、その獲得したメモリ領域をリンクし、バンドスプーラ領域を拡大する。
【００５５】
これらステップＳ６又はＳ７を実行した後、或いはステップＳ３で、現バンドメモリに格納可能な時はステップＳ８に進み、対応するバンドスプーラ３０２３に印刷コマンドを格納する。そしてステップＳ９に進み、現ページに未処理のデータがまだあるかどうかを調べ、あればステップＳ２に戻って前述の処理を実行し、なければステップＳ１０に進み、バンドスプーラ３０２３の印刷コマンドに、バンド位置とそのサイズ（図４の５００３）及び全バンドデータの作成が終わったことを伝えるコマンド５００７を付して、１バンド目からスプーラ３０３に送出する。
【００５６】
なお、メモリに余裕があり、前述のステップＳ６の処理で印刷コマンドをプリンタに出力すると、プリンタは１ページ分の印刷データの受信を待つことなく印刷処理を開始できるので高速に印刷できる。また、メモリに余裕がなく、ステップＳ７の処理で印刷コマンドをプリンタに出力すると、プリンタは１ページ分の印刷コマンドを受信し、その受信した印刷コマンドに基づいて、バンド単位での中間データを１頁分生成し、中間データが１ページ分生成されてから印刷を開始することになる。これによりステップＳ６の処理より遅くなるが、印刷を行うことができる。
【００５７】
［ＬＢＰ１００における印刷処理］
図６は、本実施の形態に係るＬＢＰ１００において、ホストコンピュータ３０００から送信される印刷コマンドを受け取った場合の処理の流れを説明するフローチャートである。
【００５８】
まずステップＳ２１で、バンド情報命令を読み込み、そのバンド位置を示すバンド番号を取得する。次にステップＳ２２に進み、現ページで、既にレンダリングしたバンドかどうかを調べ、そうであればステップＳ２３に進み、初めて処理するバンドであればステップＳ２４に進む。ステップＳ２３では、処理済みバンドのイメージデータをレンダリング処理を行うバンドメモリ空間に再展開する。そしてステップＳ２４に進み、バンドメモリ空間を使って、印刷命令の描画処理を実行する。次にステップＳ２５に進み、現バンドの描画データの終了かどうかを調べ、そうであればステップＳ２６に進むが、まだ未処理の描画データがある時はステップＳ２４に戻り、前述の処理を実行する。
【００５９】
こうして現バンドの描画データの処理が終了するとステップＳ２６に進み、バンドメモリの描画処理済みビットマップデータを圧縮して保持する。次にステップＳ２７に進み、現ページのイメージデータの処理が終了しているかを判定し、終了していない時はステップＳ２１の処理に戻るが、終了していればステップＳ２８に進み、上位バンドの圧縮イメージデータから順にビデオ信号ＶＤＯに変換してプリンタエンジン３１１０に出力して印刷を行う。
【００６０】
［バンドスプーラ３０２３のデータ構造］
図７は、本実施の形態に係るプリンタドライバ３０２２で管理するバンドスプーラ３０２３の管理手段と、バンドスプーラ３０２３本体のデータ構造を説明する図である。
【００６１】
プリンタドライバ３０２２の初期化時には、ＤＤＩからは、原稿用紙サイズ、ＵＩの設定から解像度、出力用紙サイズから、プリンタ１００で処理する際のバンドサイズ、個数を算出する。
【００６２】
その情報から、以下のメモリ領域を確保する。
【００６３】
（１）バンドスプーラ管理構造体
「ＢＤＬＢＵＦＩＮＦ」９０１は、バンドの個数を示す「ＢａｎｄＣｎｔ」７０、各バンドの情報を格納する構造体の配列「ＢａｎｄＩｎｆｏ」７１、バンドバッファ本体の先頭アドレスを示す「ｌｐＢａｎｄＢｕｆＴｏｐ」７２、バンドバッファ内の空き領域のアドレスを示す「ｌｐＢａｎｄＢｕｆＦｒｅｅ」７３を含んでいる。なお、「ＢａｎｄＩｎｆｏ」７１は、「ＢａｎｄＣｎｔ」７０の値分だけ確保される。
【００６４】
このＢＤＬＢＮＤＩＮＦ９０１の構造体（９０２，９０３，９０４）は、バンド領域を示す「ｂａｎｄｒｅｃｔ」７４、構造体が管理するメモリ空間の先頭アドレスを示す「ｌｐＴｏｐ」７５、現在書き込み可能なメモリ空間を示す「ｌｐＣｕｒＢｕｆ」７６を備えている。
（２）バンドスプーラ
実際にバンド分割した印刷命令を格納するメモリ空間は、初期化時には一般的な印刷データが格納可能なサイズ分だけ獲得し、９０５で示すように、その内部を分割して利用する。
【００６５】
先頭には、別のバンドスプーラへのポインタをセットする「ｎｅｘｔｐ」９０６が設けられており、このエリアは初期化時は「ＮＵＬＬ」にセットされる。続けて、このバンドスプーラ３０２３のサイズを示す「ｓｉｚｅ」９０７が設けられている。その先のメモリ空間は、「ＢＡＮＤＢＵＦＤＡＴＡ」の構造体とコマンド格納領域とを１セットとしたセルで区切られている。
【００６６】
この「ＢＡＮＤＢＵＦＤＡＴＡ」構造体は、現セルの格納領域が足りなくなったときにリンクするセルへのポインタ「ｌｐＮｅｘｔＢｕｆ」（初期値ＮＵＬＬ）７７、現在格納したデータオフセット「ｎｏｗｏｆｆｓｅｔ」（初期値０）７８、格納領域サイズを示す「ｂｕｆｓｉｚｅ」７９を備えている。
【００６７】
初期状態では、各バンドに「ＢＡＮＤＢＵＦＤＡＴＡ」領域を１つづつ割り当て、「ＢＤＬＢＮＤＩＮＦＯ」配列のそれぞれの「ｌｐＴｏｐ」７５、「ｌｐＣｕｒＢｕｆ」７６にアドレスをセットしておく。図７では、バンド１の管理構造体９０２は、バンドスプーラ領域９０８を、バンド２の構造体９０３はバンドスプーラ領域９０９を、バンド３の構造体９０４はバンドスプーラ領域９１０にそれぞれ割り当てられていたことを示している。
【００６８】
図７では、その後データを格納していくうちに、２バンド目のバンドスプーラ領域９０９にデータが入りきらなくなり、バンドスプーラ領域９１１，９１２をも２バンド目の領域として使用している状態を示している。
【００６９】
そして１ページ分の印刷命令が、初期化時に獲得したバンドスプーラ３０２３に収まらないときは、更にバンドスプーラ３０２３を確保し、バンドスプーラ３０２３の「ｎｅｘｔｐ」９０６に先頭アドレスをつなぎ、「ＢＤＬＢＵＦＩＮＦ」９０１の「ｌｐＢａｎｄＦｒｅｅ」７３も新たなバンドスプーラを示すように再設定する。
【００７０】
こうして、格納した印刷命令は以下の手順で出力される。
【００７１】
バンドスプーラ管理構造体９０１の、１バンド目の「ＢａｎｄＩｎｆｏ」の構造体９０２の「ｂａｎｄｒｅｃｔ」７４を参照し、そのバンドのバンド位置（（ｌｅｆｔＸ、ｔｏｐＹ）、（ｒｉｇｈｔＸ、ｂｏｔｔｏｍＹ））、及び、そのバンドに含まれる印刷命令サイズを取得し、バンド情報命令としてスプーラ３０３に送出する。続いて、「ｌｐＴｏｐ」７５が示すバンドスプーラ領域９０８に格納されている印刷命令を、「ＢＡＮＤＢＵＦＤＡＴＡ」の「ｎｏｗｏｆｆｓｅｔ」７８で指定された分だけスプーラ３０３に出力する。ここで「ＢＡＮＤＢＵＦＤＡＴＡ」の「ｌｐＮｅｘｔＢｕｆ」７７の値が「ＮＵＬＬ」の時、即ち、このバンドスプーラ領域にリンクされているバンドスプーラ領域がない時は、次のバンドスプーラ領域の処理に移行するべく、次の「ＢａｎｄＩｎｆｏ」構造体（ここでは９０２）に処理を移す。
【００７２】
２バンド目も同様にして、「ＢＤＬＢＮＤＩＮＦＯ」の「ｌｐＴｏｐ」７５が示すバンドスプーラ領域９０９内部の印刷命令からスプーラ３０３に出力するが、このバンドスプーラ領域９０９の「ｌｐＮｅｘｔＢｕｆ」８０がバンドスプーラ領域９１１を、バンドスプーラ領域９１１の「ｌｐＮｅｘｔＢｕｆ」８１がバンドスプーラ領域９１２を示している。従って、この順に、２バンド目の印刷命令がスプーラ３０３に出力される。こうして出力し終わったバンドスプーラ領域では、「ｌｐＮｅｘｔＢｕｆ」、「ｎｏｗｏｆｆｓｅｔ」の値が初期状態に戻される。
【００７３】
［他の実施の形態］
本発明の目的は前述したように、実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フロッピィ（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ，ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【００７４】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれている。
【００７５】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含む。
【００７６】
上述した各実施の形態は以下のような実施態様で表わすことができる。
【００７７】
［実施態様１］  描画命令を解析して印刷命令を生成し印刷装置に送信して印刷させる印刷制御装置であって、
前記印刷装置で処理するバンド情報を取得する取得手段と、
前記バンド情報に従って所定サイズのバンドデータを格納する第１バンドバッファを獲得する手段と、
前記印刷命令を前記印刷装置で処理するバンド単位に分割し前記第１バンドバッファにバンド単位で格納する際に、前記第１バンドバッファに当該バンドに対応する印刷命令を格納できない場合は、前記バンドに対応する印刷命令を格納するためのメモリ領域を確保し第２バンドバッファとして管理する管理手段と、
前記第２バンドバッファに記憶される印刷命令と前記第１バンドバッファに格納されている印刷命令とをリンクさせる手段と、
前記第１バンドバッファに格納された印刷命令及び当該印刷命令にリンクされている前記第２バンドバッファの印刷命令とを前記印刷装置に送信する送信手段と、
前記送信手段により送信された印刷命令を格納していた前記第１及び第２バンドバッファを解放する解放手段とを有し、
前記解放手段により解放されたバンドバッファのメモリ領域を繰り返し利用することによりページ単位の印刷データをバンド単位に分割して前記印刷装置に送出するようにしたことを特徴とする印刷制御装置。
【００７８】
［実施態様２］  前記印刷命令は、バンドの位置情報と、当該バンドに含まれる印刷命令のデータ量とを示すバンド情報命令を各バンド単位で含むことを特徴とする実施態様１に記載の印刷制御装置。
【００７９】
［実施態様３］  前記管理手段が、前記第１バンドバッファに当該バンドに対応する印刷命令を格納できない場合に前記バンドに対応する印刷命令を格納するためのメモリ領域を確保できない場合は、対応する前記第１バンドバッファに格納されている印刷命令をスプール展開して、前記対応する第１バンドバッファに記憶されている印刷命令を消去することを特徴とする実施態様１又は２に記載の印刷制御装置。
【００８０】
［実施態様４］  描画命令を解析して印刷命令を生成するホスト装置と、前記ホスト装置から送信される前記印刷命令に応じて印刷を実行する印刷装置とを含む印刷システムであって、
前記ホスト装置は、
前記印刷装置で処理するバンド情報を取得する取得手段と、
前記バンド情報に従って所定サイズのバンドデータを格納する第１バンドバッファを獲得する手段と、
前記印刷命令を前記印刷装置で処理するバンド単位に分割し前記第１バンドバッファにバンド単位で格納する際に、前記第１バンドバッファに当該バンドに対応する印刷命令を格納できない場合は、前記バンドに対応する印刷命令を格納するためのメモリ領域を確保し第２バンドバッファとして管理する管理手段と、
前記第２バンドバッファに記憶される印刷命令と前記第１バンドバッファに格納されている印刷命令とをリンクさせる手段と、
前記第１バンドバッファに格納された印刷命令及び当該印刷命令にリンクされている前記第２バンドバッファの印刷命令とを前記印刷装置に送信する送信手段と、
前記送信手段により送信された印刷命令を格納していた前記第１及び第２バンドバッファを解放する解放手段とを有し、
前記印刷装置は、
前記ホスト装置から送信される前記印刷命令を基にバンド単位のイメージデータを生成するイメージデータ生成手段と、
前記イメージデータ生成手段により生成された前記イメージデータに基づいて画像を印刷する印刷手段と、
を有することを特徴とする印刷システム。
【００８１】
［実施態様５］  前記印刷命令は、バンドの位置情報と、当該バンドに含まれる印刷命令のデータ量とを示すバンド情報命令を各バンド単位で含むことを特徴とする実施態様４に記載の印刷システム。
【００８２】
［実施態様６］  前記印刷装置は、
前記バンド単位のイメージデータを圧縮する圧縮手段と、前記圧縮手段により圧縮された圧縮データを格納する格納手段とを更に有することを特徴とする実施態様４又は５に記載の印刷システム。
【００８３】
［実施態様７］  描画命令を解析して印刷命令を生成し印刷装置に送信して印刷させる印刷制御方法であって、
前記印刷装置で処理するバンド情報を取得する取得工程と、
前記バンド情報に従って所定サイズのバンドデータを格納する第１バンドバッファを獲得する工程と、
前記印刷命令を前記印刷装置で処理するバンド単位に分割し前記第１バンドバッファにバンド単位で格納する際に、前記第１バンドバッファに当該バンドに対応する印刷命令を格納できない場合は、前記バンドに対応する印刷命令を格納するためのメモリ領域を確保し第２バンドバッファとして管理する工程と、
前記第２バンドバッファに記憶される印刷命令と前記第１バンドバッファに格納されている印刷命令とをリンクさせる工程と、
前記第１バンドバッファに格納された印刷命令及び当該印刷命令にリンクされている前記第２バンドバッファの印刷命令とを前記印刷装置に送信する送信工程と、
前記送信工程で送信された印刷命令を格納していた前記第１及び第２バンドバッファを解放する解放工程とを有し、
前記解放工程で解放されたバンドバッファのメモリ領域を繰り返し利用することによりページ単位の印刷データをバンド単位に分割して前記印刷装置に送出するようにしたことを特徴とする印刷制御方法。
【００８４】
［実施態様８］  前記印刷命令は、バンドの位置情報と、当該バンドに含まれる印刷命令のデータ量とを示すバンド情報命令を各バンド単位で含むことを特徴とする実施態様７に記載の印刷制御方法。
【００８５】
［実施態様９］  １ページ分の印刷命令を格納できるだけの領域を獲得できる場合、獲得したバンドバッファに、１ページ分の印刷命令を格納し、バンドバッファ内の印刷命令にバンドを特定できる情報をつけて印刷装置に送出する手段と、
１ページ分の印刷命令を格納できるだけの領域を獲得できない場合は、既にバンドバッファに格納されている印刷命令にバンドを特定できる情報をつけて印刷装置に送出してバンドバッファを開放し、解放されたバンドバッファを繰り返し利用することで、１ページ分の印刷データをバンド毎に分割して印刷装置に送出する手段とを有することを特徴とするホスト装置。
【００８６】
［実施態様１０］  獲得したバンドバッファに、１ページ分の印刷命令格納できない場合、さらにメモリを獲得しバンドバッファとして利用する手段を有する実施態様９に記載のホスト装置。
【００８７】
［実施態様１１］  １ページ分の印刷命令を格納できるだけの領域を獲得できる場合、獲得したバンドバッファに、１ページ分の印刷命令を格納し、バンドバッファ内の印刷命令にバンドを特定できる情報をつけて印刷装置に送出するステップと、
１ページ分の印刷命令を格納できるだけの領域を獲得できない場合は、既にバンドバッファに格納されている印刷命令にバンドを特定できる情報をつけて印刷装置に送出してバンドバッファを開放し、解放されたバンドバッファを繰り返し利用することで、１ページ分の印刷データをバンド毎に分割して印刷装置に送出するステップとを有することを特徴とする印刷方法。
【００８８】
［実施態様１２］  獲得したバンドバッファに、１ページ分の印刷命令格納できない場合、さらにメモリを獲得しバンドバッファとして利用するステップを有する実施態様１１に記載の印刷方法。
【００８９】
以上説明したように本実施の形態によれば、限られたメモリサイズのホスト装置及び印刷装置を有する環境において、印刷命令サイズが大きくても正しく印刷することができ、高速な印刷を実現できるという効果がある。
【００９０】
【発明の効果】
以上説明したように本発明によれば、限られたメモリサイズの環境において、印刷命令のデータサイズが大きくても、正常かつ高速な印刷を実現できるという効果がある。
【図面の簡単な説明】
【図１】本発明の実施の形態に係るレーザビームカラープリンタの構造を示す側断面図である。
【図２】従来の印刷システム全体の基本構成を示すブロック図である。
【図３】本発明の実施の形態に係る印刷システムの構成を示すブロック図である。
【図４】本発明の実施の形態に係る印刷命令データの構成を示す模式図である。
【図５】本実施の形態に係るプリンタドライバによる処理の流れを示すフローチャートである。
【図６】本実施の形態に係るＬＢＰにおける各バンド単位でのデータ処理の流れを示すフローチャートである。
【図７】本実施の形態に係るプリンタドライバが管理するバンドスプーラの構造を説明する模式図である。
【図１】
2004334401.tif 000003
【図２】
2004334401.tif 000004
【図３】
2004334401.tif 000005
【図４】
2004334401.tif 000006
【図５】
2004334401.tif 000007
【図６】
2004334401.tif 000008
【図７】
2004334401.tif 000009