(57)【要約】【課題】ＯＳに用意されているスプーラ機能の仕様に関らずに、プリンタドライバが所望する出力タイミングで、記録ヘッドの１スキャン印刷幅分の印刷データ毎に、すべての印刷データをプリンタに確実に転送する。【解決手段】プリンタドライバ１０３は、ＳｔａｒｔＰａｇｅＰｒｉｎｔｅｒ命令と、ＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令とを、１ページ分の印刷処理をする前と後で発行するだけでなく、所定の処理単位毎として、プリントヘッドの動作に必要な印刷データの作成が完了する度に、印刷処理中の同一ページにおいて、その処理単位毎に、ＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令、ＳｔａｒｔＰａｇｅＰｒｉｎｔｅｒ命令の順で、当該２つの命令を対（ペア）で発行する。【選択図】　図１
2004102619.tif 000002
【特許請求の範囲】
【請求項１】
生成した印刷データを、オペレーティングシステムのスプール機能を利用してプリンタに転送する印刷制御装置であって、
前記スプール機能に対して印刷データ出力命令を発行した後、更に、前記スプール機能を制御可能なシステム命令を、所定の処理単位毎に発行することにより、前記スプーラ機能がバッファリングしている印刷データをすべてプリンタに送信させる印刷制御手段を備える
ことを特徴とする印刷制御装置。
【請求項２】
前記プリンタは、記録ヘッドが搭載されたインクジェット方式のプリンタであって、
前記所定の処理単位は、前記記録ヘッドの動作に必要な所定量の印刷データの作成が完了する処理タイミングである
ことを特徴とする請求項１記載の印刷制御装置。
【請求項３】
前記所定量の印刷データは、前記記録ヘッドの１スキャン印刷幅分の印刷データである
ことを特徴とする請求項１記載の印刷制御装置。
【請求項４】
前記印刷データ出力命令は、
１ページ分の印刷データの印刷処理を指示する前と後とに発行される第１及び第２命令からなり、
前記印刷制御手段は、
前記所定の処理単位毎に発行するシステム命令として、少なくとも前記第２命令を発行する
ことを特徴とする請求項１乃至請求項３の何れかに記載の印刷制御装置。
【請求項５】
前記印刷制御手段は、
前記システム命令としての前記第１及び第２命令を、前記第２命令、そして前記第１命令の順番で、前記所定の処理単位毎に発行する
ことを特徴とする請求項４記載の印刷制御装置。
【請求項６】
前記印刷制御手段は、
前記プリンタが１スキャン印刷幅分の一時記憶領域を有するプリントバッファを装備しているか否かを識別するための情報を入手する手段を含み、
その手段によって入手した情報によって、前記プリンタが前記プリントバッファを装備していないと判断された際に、前記システム命令を前記所定の処理単位毎に発行する制御を行なう
ことを特徴とする請求項１記載の印刷制御装置。
【請求項７】
生成した印刷データを、オペレーティングシステムのスプール機能を利用してプリンタに転送する印刷データ送信方法であって、
前記スプール機能に対して印刷データ出力命令を発行した後、更に、前記スプール機能を制御可能なシステム命令を、所定の処理単位毎に発行することにより、前記スプーラ機能がバッファリングしている印刷データをすべてプリンタに送信させる
ことを特徴とする印刷データ送信方法。
【請求項８】
前記プリンタは、記録ヘッドが搭載されたインクジェット方式のプリンタであって、
前記所定の処理単位は、前記記録ヘッドの動作に必要な所定量の印刷データの作成が完了する処理タイミングである
ことを特徴とする請求項７記載の印刷データ送信方法。
【請求項９】
前記所定量の印刷データは、前記記録ヘッドの１スキャン印刷幅分の印刷データである
ことを特徴とする請求項７記載の印刷データ送信方法。
【請求項１０】
前記印刷データ出力命令は、１ページ分の印刷データの印刷処理を指示する前と後とに発行される第１及び第２命令からなり、
前記所定の処理単位毎に発行するシステム命令として、少なくとも前記第２命令を発行する
ことを特徴とする請求項７乃至請求項９の何れかに記載の印刷データ送信方法。
【請求項１１】
前記システム命令としての前記第１及び第２命令を、前記第２命令、そして前記第１命令の順番で、前記所定の処理単位毎に発行する
ことを特徴とする請求項７記載の印刷データ送信方法。
【請求項１２】
請求項１記載の印刷制御装置として、コンピュータを動作させる指示をなす
ことを特徴とするコンピュータ・プログラム。
【請求項１３】
請求項１記載の印刷制御装置として、コンピュータを動作させるプログラムコードが格納されている
ことを特徴とするコンピュータ読み取り可能な記憶媒体。
【請求項１４】
プリンタに送信すべき分の印刷データをオペレーティングシステムのスプーラに送信すると共に、前記スプーラでバッファリングされる前記印刷データを残さずプリンタに送信させるための命令を発行する
ことを特徴とするコンピュータ読み取り可能なプリンタドライバプログラム。
【請求項１５】
プリンタに送信すべき分の印刷データをオペレーティングシステムのスプーラに送信すると共に、前記スプーラでバッファリングされる前記印刷データを残さずプリンタに送信させるための命令を発行する
ことを特徴とする印刷データ送信方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プリンタの動作を制御するための印刷制御装置に搭載されるプリンタドライバ（プリンタドライバプログラム）の技術分野に関する。
【０００２】
【従来の技術】
従来より、プリンタとホストコンピュータとを利用して印刷システムを構成する際には、そのホストコンピュータを、係るプリンタの動作制御を行なうための印刷制御装置として機能させるべく、所謂プリンタドライバ（プリンタドライバプログラム）が搭載される。
【０００３】
プリンタドライバは、ホストコンピュータにて実行されるソフトウエア・プログラムであって、ホストコンピュータに搭載されたアプリケーションソフトで作成した文字や図形などのグラフィックス画像データや、自然画などのイメージ画像データをプリンタによって印刷出力する際に、アプリケーションソフトからオペレーティングシステム（ＯＳ）を介して供給された画像データに基づく描画命令を解析し、その解析結果に従ってメモリ上にＲＧＢ多階調イメージデータを作成し、例えばインクジェット方式のプリンタでは、プリンタインクの各色を表すＣＭＹＫ多値情報に変換し、インクを打つか打たないかを表すＣＭＹＫ二値のデータに変換する処理が行われた後、プリンタが解析できるデータ形式の印刷データを生成してプリンタに転送する機能を有する。
【０００４】
また、このようなプリンタドライバのうち、Ｍｉｃｒｏｓｏｆｔ　Ｗｉｎｄｏｗｓ（登録商標）２０００等のスプール機能を備えるオペレーティングシステムに対応したプリンタドライバでは、プリンタドライバによって作成された印刷データを、オペレーティングシステムが管理するスプール機能を利用してプリンタに転送するのが一般的な処理構成である。
【０００５】
特に、上記の一般的なプリンタドライバでは、指定したプリンタに対してデータ書き込みを行なうべく、ＯＳのスプール機能に通知すると共に、生成した印刷データをプリンタに転送するに際して、スプール機能に用意されている印刷データ書き込み命令関数を当該プリンタドライバにてコールすることによって、係る印刷データをプリンタ側に渡す処理構成が採用されている（例えば、特許文献１参照）。
【０００６】
【特許文献１】
特開平１０−２４０４６９号公報（第８図）
【発明が解決しようとする課題】
上述したバンディング方式のプリンタドライバによって制御される従来のインクジェット方式のプリンタにおいては、印刷幅分のプリントバッファを持ち、そのプリントバッファに印刷幅分の印刷データが溜まった（バッファリングされた）時点で記録ヘッドが駆動され、１スキャン（記録走査）分の印刷を、プリントバッファ内の印刷データを更新すると共に、記録ヘッドと記録媒体との相対的な位置をずらしながら複数回行うことによって、１ページ分の印刷を行なうのが一般的である。
【０００７】
しかしながら、最近の廉価なインクジェットプリンタにおいては、製品コストを削減する必要性から、１スキャン印刷幅分の印刷データをバッファリング可能な記憶容量のプリントバッファを自装置内に備えないプリンタも登場しており、このような装置構成のインクジェットプリンタでは、１スキャン分の印刷動作を開始した時点では、１スキャンで印刷すべき所定の印刷幅分の印刷データがプリントバッファに蓄えられていないため、係る１スキャン分の印刷動作を行なうための記録ヘッドの駆動中に、その１スキャン分の印刷データのうち、当該プリントバッファに未だ蓄えられていない残りの印刷データを受信しながら印刷する必要がある。
【０００８】
そしてプリンタが上記の如く記録ヘッドを駆動している最中に、処理対象である１スキャン分の所定の印刷幅分の残りの印刷データを受信できなかった場合、上記の装置構成のプリンタにおいては、記録ヘッドを一旦、印刷開始位置に戻して、残りの印刷幅分のデータを受信し終わってから、再度同一スキャンの残り印刷幅分の印刷を行う、という「見切り印刷」と呼ばれる動作が採用される場合がある。
【０００９】
この見切り印刷では、１スキャンの印刷に、記録ヘッドを複数回（例えば２回）駆動させる処理が必要とされるため、プリンタの印刷速度（ここでは、印刷の所要時間）が低下するだけでなく、残り印刷幅分の印刷タイミングと、その前の駆動における印刷タイミングとの時間差や、印刷位置誤差等の影響から、印刷品位が悪くなる可能性もある。
【００１０】
また、上記のような装置構成を有するインクジェットプリンタに対応したプリンタドライバでは、一般に、記録ヘッドの１スキャンの印刷幅分の印刷データを作成した後で、ＯＳによって管理されているスプーラ機能に印刷データを渡す処理が行われる。このため、記録ヘッドの１スキャン印刷幅分の印刷データ毎にプリンタへのデータ転送を行うという処理手順によれば、ホストコンピュータのＣＰＵ処理速度が非常に遅い場合等を除いて、上述した見切り印刷がプリンタにて発生する頻度が少なくなると考えられていた。
【００１１】
しかしながら、スプーラ機能の仕様によっては、ホストコンピュータ上において、プリンタドライバから受け取った印刷データを、そのスプーラ機能独自の単位に分けてバッファリングして、プリンタに送信している場合があり、この場合、オペレーティングシステムに予め用意されているプリンタへの印刷データの出力要求命令をプリンタドライバが発行しても、結果として、所定の印刷幅分の印刷データをプリンタに送信し切れず、係るスプーラ機能が管理するホストコンピュータ内のバッファに、出力要求命令の発行に応じて送信されるべき印刷データが残っている、という状況が発生することが判った。そして、このことは、１スキャン分の印刷データをバッファリング可能な記憶容量を有するプリントバッファを装置内に備えない上記のインクジェットプリンタにおいては、上記の見切り印刷が多発することを意味するから、結果として、プリンタドライバが所望する出力タイミング、或いは、プリンタドライバの設計段階において想定されていた出力タイミングで、迅速な印刷を行なえないという問題となる。
【００１２】
本発明は、上述した問題点に鑑みてなされたものであり、ＯＳに用意されているスプーラ機能の仕様に関らずに、プリンタドライバが所望する出力タイミングで、記録ヘッドの１スキャン印刷幅分の印刷データ毎に、すべての印刷データをプリンタに確実に転送することを目的とする。
【００１３】
【課題を解決するための手段】
上記の目的を達成するため、本発明に係る印刷制御装置は、以下の構成を特徴とする。
【００１４】
即ち、生成した印刷データを、オペレーティングシステムのスプール機能を利用してプリンタに転送する印刷制御装置であって、
前記スプール機能に対して印刷データ出力命令を発行した後、更に、前記スプール機能を制御可能なシステム命令を、所定の処理単位毎に発行することにより、前記スプーラ機能がバッファリングしている印刷データをすべてプリンタに送信させる印刷制御手段を備えることを特徴とする。
【００１５】
また、例えば前記プリンタは、記録ヘッドが搭載されたインクジェット方式のプリンタであって、
前記所定の処理単位は、前記記録ヘッドの動作に必要な所定量の印刷データ（前記記録ヘッドの１スキャン印刷幅分の印刷データ）の作成が完了する処理タイミングであることを特徴とする。
【００１６】
また例えば、前記印刷データ出力命令は、１ページ分の印刷データの印刷処理を指示する前と後とに発行される第１及び第２命令からなり、
前記印刷制御手段は、前記所定の処理単位毎に発行するシステム命令として、少なくとも前記第２命令を発行すると良い。
【００１７】
この場合、好ましくは、前記印刷制御手段は、前記システム命令としての前記第１及び第２命令を、前記第２命令、そして前記第１命令の順番で、前記所定の処理単位毎に発行すると良い。
【００１８】
或いは、同目的を達成する本発明の他の構成は、コンピュータ読み取り可能なプリンタドライバプログラムであって、
プリンタに送信すべき分の印刷データをオペレーティングシステムのスプーラに送信すると共に、前記スプーラでバッファリングされる前記印刷データを残さずプリンタに送信させるための命令を発行することを特徴とする。
【００１９】
尚、同目的は、上記の各構成の印刷制御装置に対応する印刷データ送信方法によっても達成される。
【００２０】
また、同目的は、上記の各構成の印刷制御装置に対応する方法を、コンピュータによって実現するプログラムコード（即ち、プリンタドライバプログラム）、及びそのプログラムコードが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
【００２１】
【発明の実施の形態】
以下、本発明に係る印刷制御装置の一実施形態を、図面を参照して詳細に説明する。
【００２２】
図１は、本実施形態における印刷システムの構成を示すブロック図であり、本実施形態において、ホストコンピュータ１００は、プリンタ１０５の動作を制御する印刷制御装置としての機能を有しており、そのホストコンピュータ１００には、ページ記述言語を持たないラスター系のプリンタ（例えばインクジェットプリンタ）であるプリンタ１０５、液晶表示装置等のモニタ１０４、並びにキーボード（一般的なポインティングデバイスを含む）１０６が接続されている。
【００２３】
また、ホストコンピュータ１００には、ＣＰＵ１０８にて実行すべきソフトウエア・プログラムとして、例えばＭｉｃｒｏｓｏｆｔ　Ｗｉｎｄｏｗｓ（登録商標）２０００等のスプール機能を備えるオペレーティングシステム（ＯＳ）１０２、ワープロ機能、表計算機能、インターネットブラウザ機能等のアプリケーションソフトウエア１０１、並びにそのアプリケーションソフトウエアによってＯＳ１０２に発行される出力画像を示す各種描画命令群（イメージ描画命令、テキスト描画命令、グラフィックス描画命令等）を一般的な手順によって処理することによって印刷データを作成するプリンタドライバ１０３がインストールされている。
【００２４】
ホストコンピュータ１００は、上記のソフトウエア群が動作可能な各種ハードウエアとして、中央演算処理装置（ＣＰＵ）１０８、ハードディスク（ＨＤ）１０７、ランダムアクセスメモリ（ＲＡＭ）１０９、リードオンリーメモリ（ＲＯＭ）１１０、並びにこれら各構成を接続するデータバス１１１等を備える。
【００２５】
尚、ホストコンピュータ１００及びそのハードウエア上で動作するＯＳ１０２には、例えば一般的に普及しているパーソナルコンピュータ及び一般的なＯＳを採用することができるので、本実施形態における詳細な説明は省略する。
【００２６】
ここで、図１に示す構成を印刷システムにおいて印刷処理が行われる際の、バンディング方式のプリンタドライバと、ＯＳとの間の処理手順について、図２を参照して概説する。
【００２７】
図２は、本実施形態に係る印刷システムにおけるプリンタドライバとＯＳとの処理手順を説明する図である。
【００２８】
同図において、ホストコンピュータ１００上のアプリケーションソフト１０１は、文字などのテキストに分類されるテキストデータや、図形などのグラフィックスに分類されるグラフィックスデータや、自然画などに分類されるイメージ画像データなどを、印刷対象の文書を表わす出力画像データとして作成する。
【００２９】
作成された出力画像データを印刷出力するときには、アプリケーションソフト１０１からＯＳ１０２に印刷出力要求を行ない、テキストデータ部分はテキスト描画命令、グラフィックスデータ部分はグラフィックス描画命令、そしてイメージ画像データ部分はイメージ描画命令によって構成されるところの、当該印刷対象の文書を表わす出力画像を示す描画命令群をＯＳ１０２に発行する。そして、ＯＳ１０２は、アプリケーションソフトウエア１０１の出力要求を受け、出力プリンタに対応するプリンタドライバ１０３に印刷要求を発行する。
【００３０】
プリンタドライバ１０３では、ＯＳ１０２から印刷要求が送られてくると、ホストコンピュータ１００上にバンド用の作業領域（バンドメモリ、バンドバッファ）を確保し、確保した作業領域の位置及び容量を表わす座標データ（バンドサイズのデータ）をＯＳ１０２に送る。このときＯＳ１０２は、渡されたバンドサイズのバッファ内に存在する描画命令群をプリンタドライバ１０３に発行する。
【００３１】
ここで、バンド用の作業領域を確保する理由は、一般に、本実施形態で示したようなページ記述言語を持たないラスター系のプリンタでは、ホストコンピュータ上のプリンタドライバがイメージ展開処理を行うのだが、ホストコンピュータには、通常一ページ分すべての描画命令を展開するだけの十分な記憶装置が搭載されていないので、イメージ展開処理に際して、横に細長く分割した「バンド」と呼ばれる単位ごとに、メモリ上にイメージを作成するためである。
【００３２】
プリンタドライバ１０３は、ＯＳ１０２のスプール機能を利用して印刷データをプリンタに送信する。即ち、プリンタドライバ１０３は、ＯＳ１０２からの描画命令群を、例えばＲＧＢ２４ビットの形式でバンドメモリに順次ラスタライズする。そして、プリンタドライバ１０３は、全ての描画命令がラスタライズした後で、バンドメモリに展開したデータ内容を１スキャンライン毎にＣＭＹＫデータに変換すると共に量子化処理を施した後、プリンタ１０５が印刷可能な所定のデータ形式に変換する印刷データ化処理を行なう。更にプリンタドライバ１０３は、ＯＳ１０２のスプーラ機能を利用して印刷データ送信命令を発行することにより、印刷データ化処理が施された印刷データを、プリンタ１０５に転送する。
【００３３】
ＯＳ１０２は、上述した一連の処理手順を、アプリケーションソフトウエア１０１で作成された印刷対象の文書を対象として、その文書のページ内に存在するすべての描画命令群の発行を、バンド毎に繰り返し、プリンタドライバ１０３では、バンド単位で各スキャンライン毎に前述した印刷データ化処理を行ない、これによってすべての印刷データをプリンタ１０５に転送して処理完了する。
【００３４】
次に、本実施形態に係るバンディング方式のプリンタドライバによる印刷データ処理の流れについて、図３乃至図５を参照して詳しく説明する。
【００３５】
図３は、本実施形態に係るバンディング方式のプリンタドライバが行なう印刷データ化処理を概念的に説明する図である。また、図４及び図５は、本実施形態に係るバンディング方式のプリンタドライバが行なう印刷データ化処理を示すフローチャートであり、ＣＰＵ１０８がプリンタドライバ１０３として行なう処理の手順を表わす。
【００３６】
ここで、図４及び図５に示す個々のステップの説明に先立って、本実施形態の特徴的な点について説明する。
【００３７】
従来の一般的なプリンタドライバにおいて、ＳｔａｒｔＰａｇｅＰｒｉｎｔｅｒ命令と、ＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令とは、本来、１ページ分の印刷処理をする前（本実施形態ではステップＳ２）と、そのページを処理した後（本実施形態ではステップＳ１３）に発行されるが、本願出願人は、ＯＳのスプーラ機能によってバッファリングされている印刷データは、ＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令をコールするのに応じて、プリンタにすべて送信されることを見出している。そこで、本実施形態では、このＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令の機能に着目すると共に、ＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令をページ単位でコールする従来の処理構成とは異なり、本実施形態では、所定の処理単位毎（プリントヘッドの動作に必要な印刷データの作成が完了する度）にＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令をコールする。
【００３８】
即ち、従来の処理手順では、
・ページ先頭ではＳｔａｒｔＰａｇｅＰｒｉｎｔｅｒ命令の発行，
・プリントヘッドの動作に必要な印刷データの生成完了に応じてＷｒｉｔｅＰｒｉｎｔｅｒ命令で送信，
・ページ後端ではＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令の発行，
がなされる。
【００３９】
これに対して、本実施形態に係る処理手順では、
・ページ先頭ではＳｔａｒｔＰａｇｅＰｒｉｎｔｅｒ命令の発行，
・プリントヘッドの動作に必要な印刷データの生成完了に応じてＷｒｉｔｅＰｒｉｎｔｅｒ命令で送信後、ＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令の発行，
・プリントヘッドの動作に必要な印刷データの生成完了に応じてＷｒｉｔｅＰｒｉｎｔｅｒ命令で送信後、ＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令の発行，
・・・・，
・プリントヘッドの動作に必要な印刷データの生成完了に応じてＷｒｉｔｅＰｒｉｎｔｅｒ命令で送信後、ＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令の発行，
・ページ後端ではＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令の発行，
がなされる。
【００４０】
但し、上記の如く同一ページ中にＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令を複数回コールする処理構成は、ページ先頭及び後端にて１回ずつコールする処理手順とは異なり、ＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令と、ＳｔａｒｔＰａｇｅＰｒｉｎｔｅｒ命令とを対（ペア）で使用していない。そこで、好適な実施形態では、これら２つの命令順との整合性を採るため、同一ページ中において、プリントヘッドの動作に必要な印刷データの生成が完了する度に、ＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令、ＳｔａｒｔＰａｇｅＰｒｉｎｔｅｒ命令の順で、当該２つの命令を対（ペア）で使用する。
【００４１】
即ち、好適な実施形態では、
・ページ先頭ではＳｔａｒｔＰａｇｅＰｒｉｎｔｅｒ命令の発行，
・プリントヘッドの動作に必要な印刷データの生成完了に応じてＷｒｉｔｅＰｒｉｎｔｅｒ命令で送信後、ＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令とＳｔａｒｔＰａｇｅＰｒｉｎｔｅｒ命令とを順次発行，
・プリントヘッドの動作に必要な印刷データの生成完了に応じてＷｒｉｔｅＰｒｉｎｔｅｒ命令で送信後、ＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令とＳｔａｒｔＰａｇｅＰｒｉｎｔｅｒ命令とを順次発行，
・・・・，
・プリントヘッドの動作に必要な印刷データの生成完了に応じてＷｒｉｔｅＰｒｉｎｔｅｒ命令で送信後、ＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令とＳｔａｒｔＰａｇｅＰｒｉｎｔｅｒ命令とを順次発行，
・ページ後端ではＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令の発行，
がなされる。
【００４２】
尚、本実施形態では、ＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令とＳｔａｒｔＰａｇｅＰｒｉｎｔｅｒ命令とを組み合わせて発行する処理形態であるが、一例であって、その他にスプーラ機能がバッファリングしている印刷データをすべてプリンタに送信させ、これによりプリンタ側における見切り印刷の発生を低減することができる命令であれば、代用することができる。例えば、上記の処理手順では、結果的に同一ページの印刷処理中に、ＳｔａｒｔＰａｇｅ命令と、ＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令とを何回もコールすることになるので、１ジョブにおける印刷処理途中のページ数管理が繁雑となる。そこで、ＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令とＳｔａｒｔＰａｇｅＰｒｉｎｔｅｒ命令とに置き換えて、ＥｎｕｍＪｏｂｓ命令という構造体を初期化する命令をコールすることによっても、プリンタ側における見切り印刷の発生を低減できることは確認済みである。
【００４３】
これにより、スプーラ機能によってバッファリングされている印刷データを、バッファ内に残すこと無くプリンタにすべて送信することができる。
【００４４】
次に、上述した特徴的な処理を含むところの、図４及び図５に示すフローチャートの個々のステップについて説明する。
【００４５】
まず、プリンタドライバ１０３は、ＯＳ１０２から印刷要求を受けると、ステップＳ１において、「印刷ジョブ単位」での印刷情報処理の初期化を行い、メモリ上にバンド領域（単位はｐｉｘｅｌ，　幅ＢａｎｄＷｉｄｔｈ，　高さＢａｎｄＨｅｉｇｈｔ）を確保する。このとき、プリンタドライバ１０３は、スプール機能を使用するための初期化動作を行なうと共に、ＯｐｅｎＰｒｉｎｔｅｒ命令を発行する。
【００４６】
ステップＳ２では、「ページ単位」での印刷情報処理の初期化を行い、用紙サイズ全体のうちの縦方向の現在位置情報を示す変数ＣｕｒＹをゼロに初期化する。また、このとき、スプール機能を使用する際のページ単位での初期化動作も同時に行われると共に、ＳｔａｒｔＰａｇｅＰｒｉｎｔｅｒ命令が発行される。
【００４７】
ステップＳ３において、プリンタドライバ１０３は、バンド単位での印刷情報処理の初期化を行った後、ＯＳ１０２からバンド領域内に描画すべき描画命令を１つづつ受け取り、この描画命令実行時に、プリンタの解像度に応じ、予め確保しておいたＲＧＢ２４ビットバンドメモリに順次ラスタライズを行なうことによってＲＧＢ画像データを生成し、バンドメモリの位置情報（ＢａｎｄＸ，　ＢａｎｄＹ）を獲得しでおく（図３（ａ）に示す概念図参照）。
【００４８】
ステップＳ４では、縦方向の位置情報ＢａｎｄＹで、縦方向の現在位置情報を初期化しておく（ＣｕｒＹ　＝　ＢａｎｄＹ）。また、バンド領域の縦方向の現在位置情報を示すＳｃａｎＹをゼロに初期化しておく。
【００４９】
ステップＳ５では、作成されたＲＧＢ画像データのバンドメモリに対して、バンド内の１スキャンライン毎に、該当スキャンラインの先端から終端まで、データが存在するかどうかを検索し、スキャンライン上のデータが存在しているｐｉｘｅｌ幅（Ｗｉｄｔｈ）と、左側の空白ｐｉｘｅｌ幅（Ｌｅｆｔ）と、右側の空白ｐｉｘｅｌ幅（Ｒｉｇｈｔ）を求める（図３（ｂ）に示す概念図参照）。
【００５０】
該当スキャンライン上のＷｉｄｔｈ，　Ｌｅｆｔ，　Ｒｉｇｈｔを求めた後、ステップＳ６において該当スキャンライン上にデータが存在すると判断した場合（Ｗｉｄｔｈ＞０）に、ステップＳ７では、ＲＧＢ２４ｂｉｔデータを、予め確保しておいた１スキャンライン分のＣＭＹＫ３２ｂｉｔを展開するためのメモリに、ＣＭＹＫに色変換（減色処理）を行った後で格納する。一方、ステップＳ６でデータが存在しないと判断した場合には、ステップＳ１１に処理を移す。
【００５１】
ステップＳ８では、変換されたＣＭＹＫ３２ｂｉｔデータに対して、２値化処理を施した後、印刷コマンドに変換し、１スキャンライン分の印刷データを作成する。
【００５２】
ステップＳ９では、印刷データがプリンタ１０５に出力すべき分だけ生成されたかを判断する。ここで、プリンタ１０５に出力すべき分の印刷データのサイズは、本実施形態において、プリンタ１０５に搭載された記録ヘッド（不図示）が１回のスキャンで印刷できる量である。そして、この判断の結果、プリンタ１５０に出力するときはステップＳ１０に処理を移す。一方、出力しないときは、ステップＳ１１に飛ぶ。
【００５３】
ステップＳ１０では、生成された印刷データを、ＯＳ１０２のスプーラ機能を利用して、プリンタ０１５に対して送信する。このときに、スプーラ機能を利用したプリンタ１０５への印刷データ送信命令として、ＷｒｉｔｅＰｒｉｎｔｅｒ命令を発行する。本処理で、プリンタ１０５への印刷データの送信を終了したことになる。
【００５４】
その後、スプーラ機能でバッファリングされている印刷データをすべてプリンタ側に送信させるために、ＯＳ１０２に用意されているシステム命令としてのＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令を発行する、或いは、ＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令と、ＳｔａｒｔＰａｇｅＰｒｉｎｔｅｒ命令とを順に発行する。
【００５５】
ステップＳ１１では、スキャンライン単位での印刷情報処理が終了したので、ページ内およびバンド内の縦方向位置情報を１増やす。
【００５６】
ステップＳ１２では、バンド内縦方向位置情報であるＳｃａｎＹが、バンド高さであるＢａｎｄＨｅｉｇｈｔに満たない場合は、ステップＳ５に処理を移す。この判断を、１バンド内のすべてのスキャンラインに対して行うと、ＳｃａｎＹがバンド高さのＢａｎｄＨｅｉｇｈｔを越えて、プリンタドライバ１０３のバンド毎の印刷情報処理が終わったことになるので、その時点でステップＳ１３に進む。
【００５７】
ステップＳ１３では、ページ内縦方向位置情報であるＣｕｒＹが、ページ長ＰａｇｅＨｅｉｇｈｔに満たない場合には、ステップＳ３からのバンド毎の処理をページ長分だけ繰り返す。そして、ＣｕｒＹがページ長ＰａｇｅＨｅｉｇｈｔを超えたときに、１ページ分の印刷情報処理を終了とし、印刷情報処理のページ終了処理を行った後、ステップＳ１４に進む。印刷情報処理のページ終了処理の際には、スプーラ機能にページ終了を通知するため、ＥｎｄＰａｇｅＰｒｉｎｔｅｒ命令を発行する。
【００５８】
ステップＳ１４で複数ページが存在した場合には、すべてページの印刷処理を終えるまでステップＳ２からの処理を繰り返す。そして、最後にステップＳ１５で確保したバンドメモリを開放し、１印刷ジョブの処理を終了する。
【００５９】
＜実施形態の変形例＞
次に、上述した実施形態を基本とする変形例について説明する。以下の説明においては、第１の実施形態と同様な構成については重複する説明を省略し、本変形例における特徴的な部分を中心に説明する。
【００６０】
図６及び図７は、本実施形態の変形例に係るバンディング方式のプリンタドライバが行なう印刷データ化処理を示すフローチャートであり、ＣＰＵ１０８がプリンタドライバ１０３として行なう処理の手順を表わす。
【００６１】
本変形例では、ホストコンピュータ１００とプリンタ１０５との間において、プリンタ１０５が、１スキャン印刷幅分の一時記憶領域を有するプリントバッファを装備しているか否かを識別するためのプリントバッファ情報をホストコンピュータ１００に渡すことができるシステム構成の場合について説明する。
【００６２】
ステップＳ２１では、プリンタ１０５から、上記のプリントバッファ情報を入手する。
【００６３】
ステップＳ２２乃至ステップＳステップＳ３６の個々のステップでは、図４び図５に示す上述したステップＳ１乃至ステップＳ１５と略同様な手順で処理を行なう。
【００６４】
但し、本変形例では、ステップＳ１０とは異なり、ステップＳ３１では、ステップＳ２１にてプリンタ１０５から入手した上記のプリントバッファ情報に基づいて、
・ＯＳ１０２のスプーラ機能を利用して印刷データ送信命令のみを発行すべき場合と、
・その印刷データ送信命令の後に、上述したステップＳ１０（図５）の場合と同様に、他の命令を付加すべき場合と、
を切り替える処理を実行する。何れの場合にも、本ステップにおける印刷データ送信命令の発行によって、印刷データ化処理が施された印刷データが、プリンタ１０５に転送される。
【００６５】
従って、本変形例によれば、上述した実施形態の場合と同様に、ＯＳ１０２のスプーラ機能によってバッファリングされている印刷データを、バッファ内に残すこと無くプリンタ１０５にすべて送信することができるのに加えて、プリントバッファ情報によって、ホストコンピュータ１００に接続されているプリンタ１０５が１スキャン印刷幅分のプリントバッファを装備していると認識できた場合には、印刷データ送信命令の後に他の命令を付加する処理を行なわなくて済むので、ＣＰＵ１０８への不必要な処理負担の増大を防止することができる。
【００６６】
このように、上述した本実施形態及びその変形例では、プリンタドライバ１０３が、オペレーティングシステム（ＯＳ）１０２に用意されているスプーラ機能を利用して、ホストコンピュータ１００からプリンタ１０５に送信するに際して、そのスプーラ機能への出力要求命令を発行する処理ステップの後に、他のシステム命令を付加することにより、生成した所定の処理単位毎（プリントヘッドの動作に必要な印刷データの作成が完了する度）に印刷データを、係るスプーラ機能の仕様に関らずに、プリンタ１０５へのデータ転送を確実に行うことができる。
【００６７】
従って、１スキャン印刷幅分の印刷データをバッファリング可能な記憶容量のプリントバッファを装置内に備えないプリンタにおいて、「発明が解決しようとする課題」にて説明したように、その１スキャン分の印刷動作を行なう記録ヘッドの駆動中に未だ蓄えられていない残りの印刷データを受信しながら印刷する場合に、１スキャン印刷幅分の印刷に記録ヘッドを複数回（例えば２回）駆動させる処理（「見切り印刷」）が採用される場合であっても、本実施形態に係るプリンタドライバ１０３の機能によれば、スプーラ機能の仕様に関らずに、接続されているプリンタの記録ヘッドの１スキャン印刷幅分の印刷データ毎に、プリンタ１０５へのデータ転送を確実に行うことができるので、プリンタ側における「見切り印刷」の発生を従来と比較して低減させることができ、結果として、印刷品位の向上を図ることができる。
【００６８】
尚、上述した各実施形態を例に説明した本発明は、上述したホストコンピュータ１００に対して、その説明において参照したフローチャートの機能を実現可能なコンピュータ・プログラムを供給した後、その装置のＣＰＵに読み出して実行することによって達成される。また、当該装置内に供給されたコンピュータ・プログラムは、読み書き可能なメモリまたはハードディスク装置等の記憶デバイスに格納すれば良い。
【００６９】
また、前記の場合において、当該各装置内へのコンピュータ・プログラムの供給方法は、フレキシブルディスク等の各種記録媒体を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等のように、現在では一般的な手順を採用することができ、このような場合において、本発明は、係るコンピュータ・プログラムのコード或いは記憶媒体によって構成される。
【００７０】
【発明の効果】
以上説明した本発明によれば、ＯＳに用意されているスプーラ機能の仕様に関らずに、プリンタドライバが所望する出力タイミングで、記録ヘッドの１スキャン印刷幅分の印刷データ毎に、すべての印刷データをプリンタに確実に転送することができる。
【図面の簡単な説明】
【図１】本実施形態における印刷システムの構成を示すブロック図である。
【図２】本実施形態に係る印刷システムにおけるプリンタドライバとＯＳとの処理手順を説明する図である。
【図３】本実施形態に係るバンディング方式のプリンタドライバが行なう印刷データ化処理を概念的に説明する図である。
【図４】本実施形態に係るバンディング方式のプリンタドライバが行なう印刷データ化処理を示すフローチャートである。
【図５】本実施形態に係るバンディング方式のプリンタドライバが行なう印刷データ化処理を示すフローチャートである。
【図６】本実施形態の変形例に係るバンディング方式のプリンタドライバが行なう印刷データ化処理を示すフローチャートである。
【図７】本実施形態の変形例に係るバンディング方式のプリンタドライバが行なう印刷データ化処理を示すフローチャートである。
【図１】
2004102619.tif 000003
【図２】
2004102619.tif 000004
【図３】
2004102619.tif 000005
【図４】
2004102619.tif 000006
【図５】
2004102619.tif 000007
【図６】
2004102619.tif 000008
【図７】
2004102619.tif 000009