(57)【特許請求の範囲】
【請求項１】
ＰＤＬモードで不正印字発生が予測されるか否かを判別する判別手段と、
前記判別手段によりＰＤＬモードで不正印字発生が予測されないと判別された場合、イメージモードでの処理時間がＰＤＬモードでの処理時間より短いか否か判定する判定手段と、
前記判定手段によりイメージモードでの処理時間がＰＤＬモードでの処理時間より短いと判定された場合、ＹＭＣＫイメージモードに決定し、前記判定手段によりイメージモードでの処理時間がＰＤＬモードでの処理時間より短くないと判定された場合、ＰＤＬモードに決定し、前記判別手段によりＰＤＬモードで不正印字発生が予測されると判別された場合、ＲＧＢイメージモードに決定する決定手段と、
前記決定手段によりＹＭＣＫモードに決定された場合、ＲＢＧイメージをＹＭＣＫイメージに変換し、変換されたＹＭＣＫイメージで描画処理を行い、描画処理されたＹＭＣＫイメージをプリンタに出力し、前記決定手段によりＲＧＢモードに決定された場合、ＲＢＧイメージで描画処理を行い、描画処理されたＲＧＢイメージをＹＭＣＫイメージに変換し、変換されたＹＭＣＫイメージをプリンタに出力し、前記決定手段によりＰＤＬモードに決定された場合、描画データをＰＤＬデータに変換し、変換されたＰＤＬデータをプリンタに出力する出力手段とを有することを特徴とする情報処理装置。
【請求項２】
前記ＰＤＬモードでの処理時間は、バンドレンダリング不可能な場合のサブクローズ時間を含むことを特徴とする請求項１記載の情報処理装置。
【請求項３】
ＰＤＬモードで不正印字発生が予測されるか否かを判別する判別ステップと、
前記判別ステップによりＰＤＬモードで不正印字発生が予測されないと判別された場合、イメージモードでの処理時間がＰＤＬモードでの処理時間より短いか否か判定する判定ステップと、
前記判定ステップによりイメージモードでの処理時間がＰＤＬモードでの処理時間より短いと判定された場合、ＹＭＣＫイメージモードに決定し、前記判定ステップによりイメージモードでの処理時間がＰＤＬモードでの処理時間より短くないと判定された場合、ＰＤＬモードに決定し、前記判別ステップによりＰＤＬモードで不正印字発生が予測されると判別された場合、ＲＧＢイメージモードに決定する決定ステップと、
前記決定ステップによりＹＭＣＫモードに決定された場合、ＲＢＧイメージをＹＭＣＫイメージに変換し、変換されたＹＭＣＫイメージで描画処理を行い、描画処理されたＹＭＣＫイメージをプリンタに出力し、前記決定ステップによりＲＧＢモードに決定された場合、ＲＢＧイメージで描画処理を行い、描画処理されたＲＧＢイメージをＹＭＣＫイメージに変換し、変換されたＹＭＣＫイメージをプリンタに出力し、前記決定ステップによりＰＤＬモードに決定された場合、描画データをＰＤＬデータに変換し、変換されたＰＤＬデータをプリンタに出力する出力ステップとを有することを特徴とする情報処理方法。
【請求項４】
前記ＰＤＬモードでの処理時間は、バンドレンダリング不可能な場合のサブクローズ時間を含むことを特徴とする請求項３記載の情報処理方法。
【請求項５】
ＰＤＬモードで不正印字発生が予測されるか否かを判別する判別ステップと、
前記判別ステップによりＰＤＬモードで不正印字発生が予測されないと判別された場合、イメージモードでの処理時間がＰＤＬモードでの処理時間より短いか否か判定する判定ステップと、
前記判定ステップによりイメージモードでの処理時間がＰＤＬモードでの処理時間より短いと判定された場合、ＹＭＣＫイメージモードに決定し、前記判定ステップによりイメージモードでの処理時間がＰＤＬモードでの処理時間より短くないと判定された場合、ＰＤＬモードに決定し、前記判別ステップによりＰＤＬモードで不正印字発生が予測されると判別された場合、ＲＧＢイメージモードに決定する決定ステップと、
前記決定ステップによりＹＭＣＫモードに決定された場合、ＲＢＧイメージをＹＭＣＫイメージに変換し、変換されたＹＭＣＫイメージで描画処理を行い、描画処理されたＹＭＣＫイメージをプリンタに出力し、前記決定ステップによりＲＧＢモードに決定された場合、ＲＢＧイメージで描画処理を行い、描画処理されたＲＧＢイメージをＹＭＣＫイメージに変換し、変換されたＹＭＣＫイメージをプリンタに出力し、前記決定ステップによりＰＤＬモードに決定された場合、描画データをＰＤＬデータに変換し、変換されたＰＤＬデータをプリンタに出力する出力ステップとをコンピュータに実行させるためのプログラムを記憶した記憶媒体。
【請求項６】
前記ＰＤＬモードでの処理時間は、バンドレンダリング不可能な場合のサブクローズ時間を含むことを特徴とする請求項５記載の記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、所定のアプリケーションプログラムからの印刷データを、印刷装置が処理可能なデータ形式に変換処理し、印刷装置に出力する情報処理装置、情報処理方法、及び、記憶媒体に関する。
【０００２】
【従来の技術】
従来の印刷システムにおける印刷制御方法および処理の流れについて図２を用いて説明する。
【０００３】
一般的には、図２に示すようにセントロニクスインターフェースといったパラレル通信手段やネットワーク通信手段を介してホスト・コンピュータと印刷装置とが接続され印刷システムを構成している。
【０００４】
ホスト・コンピュータ側では、ワードプロセッサや表計算のようなアプリケーションソフトウェア２０１（以下アプリと略称）がWindows（米国Microsoft社の登録商標） のようないわゆる基本ソフトの上で動作している。このアプリにおいて印刷を行う場合は、そのプログラム内から、基本ソフトが提供するいくつかのサブシステムのうちグラフィック・サブ・システム２０２の機能を用いて行う。このグラフィック・サブ・システムは、例えばWindowsでは、ＧＤＩ（２０２１）(Graphic Device Interface)と呼ばれておりディスプレイやプリンタに対する画像情報の処理を司っている。このＧＤＩ（２０２１）は、ディスプレイやプリンタといった各デバイス毎の依存性を吸収するためにデバイスドライバと呼ばれるモジュールを動的にリンクし、それぞれのデバイスに対する出力処理を行う。プリンタに対するこのモジュールはプリンタ・ドライバ２０２２と呼ばれる。このプリンタ・ドライバ２０２２では、その能力や機能などに応じてあらかじめデバイスドライバに実装することが決められているＤＤＩ(Device Driver Interface)と呼ばれる関数群を用意する必要がある。アプリのＡＰＩ(Application Programing Interface)コールをＧＤＩ（２０２１）がデバイスドライバ用にデータ変換を行い、このＤＤＩ関数群が適宜ＧＤＩ（２０２１）からコールされ所定の印刷処理が実行されるような仕組みになっている。ＧＤＩ（２０２１）では、このようにプリンタ・ドライバを介してアプリからの印刷要求をシーケンシャルに処理している。
【０００５】
このプリンタドライバの処理系は、ＰＤＬモードタイプ（２０２３）とイメージモードタイプ（２０２４〜２０２６）の２種類大別できる。
【０００６】
ＰＤＬモードタイプとは、印刷装置側にＰＤＬ(Printer Description Language)と呼ばれる文字コード、図形コマンド、制御コマンド等からなるコードデータを処理し、イメージデータを生成可能なコントローラを搭載するもの向けで、プリンタドライバはシステムからＤＤＩを介して渡されるデータをＰＤＬのコマンドに変換し次第、GDI（２０２８）を介してプリンタに送出する。
【０００７】
プリンタドライバの処理はＤＤＩで受け取ったデータからコマンドを生成するだけなので、ドライバにとっては軽い処理といえる。ＰＤＬモードタイプの特徴として、プリンタのPDLコマンドを解析する能力が高ければＧＤＩから抽象度の高いデータを受け取り、そのまま送出できるので通常のページ印刷においては転送するデータサイズを小さくすることが可能である。
【０００８】
一方、イメージモードタイプでは、印刷装置側では高度な描画処理は行わないよう、プリンタドライバ側で確保したメモリ空間上に印刷イメージの展開を行い、それを印刷装置で直接印刷できる形態に変換し、印刷装置に送り印刷するものである。
【０００９】
PDLモードタイプ同様に、GDIからDDIインターフェースを介して渡されたデータを使ってイメージモード用プリンタドライバ（２０２４〜２０２６）がバンドメモリ２０２７に描画処理を行い、１バンド分の描画処理が終了すると、GDI（２０２８）を介して印刷装置にビットマップデータを送出する。
【００１０】
どちらの方式を取った場合も、プリンタまたはホストマシンでバンドメモリまたはフルページ分のメモリ空間上に描画処理を行う必要がある。
【００１１】
しかし、カラープリンタではRGB各色8ビットで600DPI,A4フルページ分のメモリを確保しようとすると96Mbyte必要であり、現状ではホストマシン、プリンタどちらでも確保することは困難である。そこで、カラープリンタの描画処理はバンドメモリを使う方法が提案されている。
【００１２】
また、プリンタエンジンに最終的に渡すデータ形式はRGBといった輝度値ではなく、YMCK値という印刷装置のトナー色を示す濃度値を各色1ビットまたは2ビットであるので、イメージモード、ＰＤＬモード共にメモリ削減の為にYMCK各色１ビットor2ビットで処理を行うのが一般的である。イメージモードではこのＹＭＣＫ各色１ビットor２ビットデータを送ることで転送データサイズを小さく押さえ、印刷装置側の負荷を軽くするものがある。
【００１３】
例えば、多角形図形の印字処理については、ＰＤＬタイプでは、印刷装置に折れ曲がる点座標と線幅、線の色情報、内塗り色情報等がコマンドとして転送され、プリンタ内部ではそのデータを解析し、内部のYMCK各色1ビットまたは2ビットの１バンド分のメモリ空間を用いて出力形態のイメージデータに展開処理を行う。ＰＤＬ方式は１ページに無限に印刷データが発生する可能性があり、近年のアプリケーションが出力する印刷データは増加の一途をたどっている。ところが、バンディング処理で印刷を行う場合１ページ分の描画直前の中間データを保持する必要があるため、省メモリプリンタでは処理速度低下の要因になっている。
【００１４】
イメージモード方式では、こういった問題を回避するために存在する。
【００１５】
印刷装置に比べてメモリ構成に余裕のあるホストマシン上で動くプリンタドライバ側でバンド単位もしくはフルページの描画メモリを持ち、そこに多角形を展開する。１バンド分もしくはフルページ分の描画処理が終了すると、印刷装置に対してイメージデータとして描画メモリの内容が転送され所定の画像を印刷し、出力する。
【００１６】
前述したように、PDLモード、イメージモード共に省メモリのために、ＹＭＣＫ各色1，2ビットというデバイス依存の色空間上で描画処理を行っているが、GDIが規定している論理演算描画処理は輝度空間上での処理であるため、描画不正が発生することがある。これを回避するため、YMCK値からrgb値に戻し（逆UCR(Under Color Remove)処理）論理演算処理することで対応しているが、完全な描画処理を保証しないばかりか、処理速度低下の原因になっている。
【００１７】
そこで、ユーザは、通常はPDLモードで描画処理を行い、出力に時間が掛かりすぎる場合は、高速イメージモード（YMCK各色１ビットイメージモード）に切り替えて出力しなおす、不正出力結果が出た場合は、ＲＧＢ24BPPイメージモードで出力しなおす。といった２度、３度手間をユーザにかけることに成っている。
【００１８】
つまり、現状はこういった印刷モードの選択がユーザに任されており、全てのモードで印刷してみないと最適なモードが解らない。また、複数ページ印刷においてはタイプの異なるページが含まれていると、１モードでは出力時間が掛かる、または不正出力ページが混じる。といった問題も発生する。
【００１９】
以上、各モードの特徴を図４にまとめた。
【００２０】
こういった問題を解決するために、各々の方式の得意なデータだけが流れるように自動的に切り替える方式が求められている。
【００２１】
【発明が解決しようとする課題】
▲１▼ 抽象度の高い印刷データ形式（PDLモード）では転送データサイズ、プリンタ内部で保持するデータサイズが大きくなることがあり、プリンタ処理速度が落ちることがある。
▲２▼ 抽象度の高い印刷データ形式（PDLモード）では複雑な図形が集中していると、描画速度がプリンタの排紙速度に間に合わないためバンディング処理不可能となり、特殊パスに入ることで処理速度が落ちることがある。
▲３▼ 省メモリのために、YMCK各色1,2bitのメモリ空間で描画処理を行う処理系（通常のPDLモード、高速イメージモード）では、輝度空間を想定した論理演算処理が不正になる場合がある。
▲４▼ 抽象度の低い印刷データ形式（イメージモード系処理）は簡単な文字または図形のみのページでも描画面積に比例したイメージデータがプリンタに転送されるため、エンジンの最大スループットがでない。
▲５▼複数ページ印刷時に、全てのページに最適なモードで印刷することが困難である。
【００２２】
前述の課題のうち▲１▼〜▲４▼は各処理系の特徴であり、欠点とは言い難い。本特許は、各処理系の長所で他の処理系の短所を補うことでシステム全体としての改善を目指すものである。
【００２３】
つまり、印刷データに応じて最適な変換手段を選択し、高速に印刷を行うことを目的とする。
【００２４】
また、Ｎ−ｕｐ印刷を高速に行うことを目的とする。
【００２５】
【課題を解決するための手段】
上記目的を達成するため本発明の情報処理装置は、
ＰＤＬモードで不正印字発生が予測されるか否かを判別する判別手段と、
前記判別手段によりＰＤＬモードで不正印字発生が予測されないと判別された場合、イメージモードでの処理時間がＰＤＬモードでの処理時間より短いか否か判定する判定手段と、
前記判定手段によりイメージモードでの処理時間がＰＤＬモードでの処理時間より短いと判定された場合、ＹＭＣＫイメージモードに決定し、前記判定手段によりイメージモードでの処理時間がＰＤＬモードでの処理時間より短くないと判定された場合、ＰＤＬモードに決定し、前記判別手段によりＰＤＬモードで不正印字発生が予測されると判別された場合、ＲＧＢイメージモードに決定する決定手段と、
前記決定手段によりＹＭＣＫモードに決定された場合、ＲＢＧイメージをＹＭＣＫイメージに変換し、変換されたＹＭＣＫイメージで描画処理を行い、描画処理されたＹＭＣＫイメージをプリンタに出力し、前記決定手段によりＲＧＢモードに決定された場合、ＲＢＧイメージで描画処理を行い、描画処理されたＲＧＢイメージをＹＭＣＫイメージに変換し、変換されたＹＭＣＫイメージをプリンタに出力し、前記決定手段によりＰＤＬモードに決定された場合、描画データをＰＤＬデータに変換し、変換されたＰＤＬデータをプリンタに出力する出力手段とを有することを特徴とする。
【００２７】
【発明の実施の形態】
本実施の形態の構成を説明する前に、本実施の形態を適用する印刷システムの印刷を担うカラーレーザービームプリンタ（以下「カラーＬＢＰ」と記述）の構成について図１を参照しながら説明する。
【００２８】
図１は、６００ドット／インチ（ｄｐｉ）の解像度を有し、各色成分各画素が８ビットで表現された多値データに基づいて画像記録を行うカラーＬＢＰの構造を示す側断面図である。図１において、１００はカラーＬＢＰ本体であり、外部に接続されているホスト・コンピュータなどから供給されるプリントデータ（文字コードや画像データ等）及び制御コードから成る印刷データを入力して記憶するとともに、それらの情報に従って対応する文字パターンやイメージ等を作成し記憶媒体である記録紙上に像を形成する装置である。
【００２９】
１１０はホスト・コンピュータから供給される印刷データを解析し印刷イメージの生成処理を行うとともにカラーＬＢＰ本体１００の制御を行うフォーマッタ制御部である。また、フォーマッタ制御部１１０は、ユーザによる操作およびユーザに対する状態通知のためのスイッチおよびＬＥＤ表示器等が配されているオペレーション・パネル部１２０と接続されており、そのパネル部は印刷装置１００の外装の一部として配設されている。フォーマッタ制御部１１０において生成された最終的な印刷イメージはビデオ信号として出力制御部１３０に送出され、出力制御部１３０は印刷装置１００の不図示の各種センサからの状態入力とともに光学ユニット１４０および各種駆動系機構部に対し制御信号を出力し印刷装置１００としての印刷処理を制御を司るものである。
【００３０】
図１に示す印刷装置において、給紙カセット１６１から給紙された用紙Ｐはその先端をグリッパ１５４ｆにより狭持されて、転写ドラム１５４の外周に保持される。光学ユニット１４０により感光ドラム１５１上に形成された各色の潜像は、イエロー（Ｙ），マゼンタ（Ｍ），シアン（Ｃ），ブラック（Ｂ）の各色現像器Ｄｙ，Ｄｍ，Ｄｃ，Ｄｂにより現像化されて、転写ドラム外周の用紙に複数回転写されて多色画像が形成される。その後、用紙Ｐは転写ドラム１５４より分離されて、定着ユニット１５５で定着され、排紙部１５９より排紙トレー部１６０に排出される。ここで各色の現像器Ｄｙ，Ｄｍ，Ｄｃ，Ｄｂは、その両端に回転支軸を有し、各々がその軸を中心に回転可能となるように現像器選択機構部１５２に保持される。これによって、各現像器Ｄｙ，Ｄｃ，Ｄｂ，Ｄｎは、図１に示すように現像器選択のために現像器選択機構部１５２が回転軸１５２ａを中心にして回転しても、その姿勢を一定に維持できる構成をとっている。選択された現像器が現像位置に移動後、現像器選択機構部１５２は現像器と一体で支点１５３ｂを中心にして、選択機構保持フレーム１５３がソレノイド１５３ａにより感光ドラム１５１方向へ引っ張られ、感光ドラム１５１方向へ移動し現像処理が行われるように構成されている。次に、帯電器１５６によって感光ドラム１５１が所定の極性に均一に帯電される。フォーマッタ制御部１１０において画像イメージとして展開された印刷情報は、対応するパターンのビデオ信号に変換されレーザドライバに出力され半導体レーザ１４１を駆動する。入力されたビデオ信号に応じて半導体レーザ１４１から発射されるレーザ光はオンオフ制御され、さらにスキャナモータ１４３によって高速回転するポリゴンミラー１４２で左右方向に振らされ、ポリゴンレンズ１３４、反射鏡１４４を介して感光ドラム１５１上を走査露光する。これにより、感光ドラム１５１上には画像パターンの静電潜像が形成されることになる。次に、例えば、Ｍ（マゼンタ）色の静電潜像がＭ（マゼンタ）色の現像器Ｄｍにより現像され、感光体ドラム１５１上にＭ（マゼンタ）色の第１のトナー像が形成される。一方、所定のタイミングで転写紙Ｐが給紙され、トナーと反対極性（例えばプラス極性）の転写バイアス電圧が転写ドラム１５４に印加され、感光体ドラム１５１上の第１トナー像が転写紙Ｐに転写されると共に、転写紙Ｐが転写ドラム１５４の表面に静電吸着される。その後、感光ドラム１５１はクリーナー１５７によって残留するＭ（マゼンタ）色トナーが除去され、次の色の潜像形成及び現像行程に備える。以下同様の手順によってＣ（シアン）、Ｙ（イエロ）、Ｂｋ（ブラック）の順で第２，３，４色目のトナー像の転写が行われる。但し、各色の転写時には、転写ドラム１５４には前回よりも高いバイアス電圧が印加される点は異なる。４色のトナー像が重畳転写された転写紙Ｐの先端部が分離位置に近づくと、分離爪１５８が接近してその先端が転写ドラム１５４の表面に接触し、転写紙Ｐを転写ドラム１５４から分離させる。分離された転写紙Ｐは定着ユニット１５５に搬送され、ここで転写紙上のトナー像が定着されて排紙トレイ１６０上に排出される。本実施の形態のカラーレーザビームプリンタは、以上のような画像形成過程を経て６００ドット／インチ（ｄｐｉ）の解像度で画像出力を行う。なお、本発明を適用可能なプリンタは、カラーＬＢＰに限られるものではなく、インクジェットプリンタやサーマルプリンタ等、他のプリント方式のカラープリンタでもよい。
【００３１】
次に、印刷装置１００におけるフォーマッタ制御部１１０について図２を用いて説明する。このフォーマット制御部は、通常はＰＤＬコントローラなどとも呼ばれている部分であり、ホスト・コンピュータとの接続手段であるところのインタフェース（Ｉ／Ｆ）部１１１と、受信データ等を一時的に保持管理するための受信バッファ１１２１、送信データ等を一時的に保持管理するための送信バッファ１１２２、印刷データの解析を司るコマンド解析部１１３、印刷制御処理実行部１１４、描画処理実行部１１５、ページメモリ１１６等より構成されている。
【００３２】
インタフェース（Ｉ／Ｆ）部１１１は、ホスト・コンピュータ２００との印刷データの送受信を行う通信手段あり、通信プロトコルとして IEEE-1284 に準拠した通信を可能とするものである。但し本発明では、この通信手段に限定するものでなく、ネットワークを介してさまざまなプロトコルによる接続であってもよいし、IEEE-1394に準じた通信手段であってもよい。このインタフェース部１１１を通して受信した印刷データは、そのデータを一時的に保持する記憶手段である受信バッファ１１２１に逐次蓄積され、必要に応じてコマンド解析部１１３または描画処理実行部１１５によって読み出され処理される。コマンド解析部１１３は、各ＰＤＬコマンド体系や印刷ジョブ制御言語に準じた制御プログラムにより構成されており、文字印字、図形、イメージなどの描画に関する印刷データの解析結果は、描画処理実行部１１５に指示を与えて処理し、給紙選択やリセット命令などの描画以外のコマンドは、印刷制御処理実行部１１４に指示を出し処理する。
【００３３】
描画処理実行部１１５では、文字やイメージの各描画オブジェクトをページメモリ１１６に逐次展開して行くレンダラである。図１で前述したカラーＬＢＰに対しては、ＭＣＹＫの面順次でデバイス依存ビットマップデータを送出する必要があるが、標準状態では、そのために必要なメモリをすべて確保するわけではなく、1プレーン(1,2 or 4bit/pixel)の数分の１のバンド領域としてメモリが確保され、そのバンド領域を使いまわして画像をエンジン速度に同期して処理するするように構成されている。通常はこのようにＹＭＣＫレンダラによる展開処理とプリンタエンジンへのビデオ信号のシッピングの追いかけっこ、つまりバンディング制御によってページメモリ１１６は管理されているが、十分なメモリがある場合は１ページ分が展開可能な領域を確保しても良い。なお、一般的に、フォーマッタ制御部１１０は、中央演算処理装置（ＣＰＵ）、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）などを用いたコンピュータ・システムによって構成されている。また、各部の処理は、マルチタスクモニタ（リアルタイムＯＳ）のもとでタイムシェアリングに処理される構成てあっても良いし、各機能ごとに専用のコントローラ・ハードウェアを用意して独立して処理される構成であってもかまわない。
【００３４】
オペレーション・パネル１２０は、前述した通り印刷装置の各種状態を設定・表示するためのものである。出力制御部１３０は、ページメモリ１１６の内容をビデオ信号に変換処理し、プリンタ・エンジン部１５０へ画像転送を行う。プリンタ・エンジン部１５０は受け取ったビデオ信号を記録紙に永久可視画像形成するための印刷機構部であり、図１において前述したものである。以上、印刷装置１００について説明したが、次にホスト・コンピュータ２００を含む本実施例の印刷システムの全体構成について説明を加える。図２において２００はホスト・コンピュータであり、プリントデータ及び制御コードから成る印刷情報を印刷装置１００に出力するものである。ホスト・コンピュータ３００は、入力デバイスであるところのキーボード３１０やポインティングデバイスであるところのマウス３１１と、表示デバイスであるディスプレイ・モニタ３２０を合わせた一つのコンピュータ・システムとして構成されている。ホスト・コンピュータ３００は、Windows NTなどの基本ＯＳによって動作しているものとする。
【００３５】
ホスト・コンピュータ側について、本発明に関する機能的な部分にのみ注目し、基本ＯＳ上での機能を大きく分類すると、アプリケーションソフトウェア３０１、グラフィック・サブ・システム３０２、印刷情報格納手段および印刷装置との通信手段を含むスプール・サブ・システム３０３に大別される。
【００３６】
アプリケーションソフトウェア３０１は、例えば、ワープロや表計算などの基本ソフトウェア上で動作する応用ソフトウェアを指すものである。グラフィック・サブ・システム３０２は、基本ＯＳの機能の一部であるGraphic Device Interface（以後、ＧＤＩと記す）３０２１とそのＧＤＩから動的にリンクされるデバイスドライバであるところのプリンタ・ドライバ３０２２によって構成されている。
【００３７】
プリンタドライバ３０２２は、GDIからDDI(Device Driver Interface)というインターフェースを介してコールされ、デバイスに応じた処理を描画オブジェクト毎に行うものである。本システムでは、ＤＤＩ関数に渡された情報をページ単位でＰＤＦ３０３１（ページデータファイル）としてスプールするわけだが、その際に、プリンタドライバ３０２２から描画情報をチェックするモジュールであるPreCheckモジュール３０２３をコールすることで、そのページに含まれるデータ解析を行う。１ページ分のデータ解析することによって、そのページに含まれる描画命令を種類別にコール回数、データサイズの集計結果が生成される。またページ内の描画領域を最外接矩形として求まる。以上の結果はGDIを通じて対応するＰＤＦ３０３１と関連付けられた名前をつけられてPCF３０３２（実体はRAMまたはハードディスク上）（プレチェックファイル）としてセーブする。
【００３８】
スプール・サブ・システム３０３は、グラフィック・サブ・システム３０２の後段に位置するプリンタ・デバイスに特有のサブ・システムでありデスプーラと呼ばれている。
【００３９】
一旦、刷情報をスプールすることによって、デスプール時に出力デバイスを変更したり、複数ページを扱ったページレイアウトを変更が可能になる。
【００４０】
さらに、本実施例においては、出力デバイスの描画命令ごとの処理速度や不正印字が発生するコマンド等が記載されたデバイス情報３０４１、ホストマシンの環境情報（空きディスク容量、通信速度）、スプール時に生成したページ単位のチェック結果であるＰＣＦ３０３２を読み込み、出力に適したトランスレータ（３０３５〜３０３７）を、ページ単位、バンド単位、またはマトリクス単位に決定するものである。
【００４１】
印字するのに適したトランスレータ選択とは、モードの自動切換えポリシーによって変化する.例えば、高速印字優先ならば、高速に処理が出来そうなトランスレータを選択、画質優先ならば、不正印字が発生しないことを前提として可能な限り高速な処理系を選択することを示す。
【００４２】
選択されたトランスレータ３０３５〜３０３７は、イメージモード系処理（３０３４〜３０３７）であれば、バンドメモリ３０３８を用いてイメージ展開を行いデバイス依存ビットマップ形式のPDLコマンドを生成する。PDLモード系処理（３０３４）であればスプールファイルからPDLコマンドへの変換処理を行う。生成したPDLコマンドはGDI（３０３９）、Ｉ／Ｆ３０４０）を介してプリンタにデータを送出すされる。
【００４３】
基本ＯＳによって、上述したこれらの名称や機能的な枠組みは若干異なる場合があるが、本発明で言う各技術的手段が実現できるモジュールであれば、それらの名称や枠組みは本発明にとってあまり大きな問題ではない。例えば、スプーラやスプールファイルと呼ばれるものは、別のＯＳにおいてプリント・キューと呼ばれるモジュールに処理を組み込むことによっても実現可能である。なお一般的に、これらの各機能モジュールを含むホスト・コンピュータ３００は、中央演算処理装置（ＣＰＵ）、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ハードディスクドライブ（ＨＤＤ）、各種入出力制御部（Ｉ／Ｏ）などのハードウェアのもとで、基本ソフトと呼ばれるソフトウェアがその制御を司り、その基本ソフトの元で、それぞれの応用ソフト、サブ・システム・プロセスが機能モジュールとして動作するようになっている。
【００４４】
図１１の模式図を使って、本実施例の理想的な実施形態を説明する。
【００４５】
（ホスト側プリンタドライバのさらに詳しい説明）
本発明を実現するためには、ホストマシンで動くプリンタドライバで最低限以下の機能が必要である。
１） 描画データスプール処理
２） チェック＆ドライバ切替処理
３） 各種ドライバ
【００４６】
以下にそれぞれについての説明を行う。
【００４７】
１） 描画データスプール処理
WindowsNT4.0を例にとり、図９を用いて説明を行う。
【００４８】
WindowsNT4.0においては、GDIからコールされる描画用DDI関数として、以下のものが挙げられる。
DrvCopyBits(),DrvBitBlt(),DrvStretchBlt(),DrvStrokePath(),DrvFillPath()
DrvStrokeAndFillPath(),DrvPaint(),DrvTextOut()
これらの関数には引数を介して、GDIから描画オブジェクトが渡される。
【００４９】
例えば、イメージの描画処理関数であるDrvCopyBits()の引数は
0004235347.tif 000002
となっている。
【００５０】
PDLモードでは、まず、pcoからクリップデータを獲得し、クリッピング指定データを発行し、その後、psoSrcと、pptlSrcが示す先のソースイメージデータを、psoDestと、prclDestが示す先に描画するようにイメージ描画データを生成して発行することになる。イメージモードでは、psoDestと、prclDestが示す先にpsoSrcとpptlSrcが示すイメージをpcoが示す領域に限りコピー処理を行えば良い。
【００５１】
本発明を実現するためには、１ページ分の描画データを知った上で、最適な処理モードを決定し、そのモードで処理を実行する必要がある。そのためには、ＤＤＩ関数に渡されたデータを一旦スプールし、その際に最適なモードを決定。決定した後に、スプールしたデータを決定したモードで実行することで実現可能である。
【００５２】
そのためには、ＤＤＩ関数に渡されるデータの中でデスプール時にどのモードに決定しても処理可能となるデータをスプールする必要がある。
【００５３】
まず、スプールデータはページ単位で保持する必要がある。そこで、図９のＰＤＦ９００は、ページを特定するためのpageID(９０１)に続いて、ページのサイズや、データサイズ、格納したオブジェクト数等を保持するページ情報（９０２）をヘッダとして持つ。
【００５４】
その後ろに続いて、ＤＤＩ関数でコールされた描画関数を示す番号９０３が入る。ここではDrvCopyBitsを例に説明を行う。
【００５５】
datasize(９０４)はDrvCopyBitsのスプールにかかったサイズ、
soDset(９０５)はDrvCopyBits()関数に渡される描画先のサーフェースデータを示すpsoDestで獲得可能なデータを格納。
【００５６】
SoSrc(９０６)はDrvCopyBits()関数に渡されるソースサーフェースデータを示すpsoDestで獲得可能なデータを格納。
【００５７】
ソースイメージデータ（９０７）はpsoSrcから獲得可能なソースイメージデータの実態である。
【００５８】
co(９０８)はDrvCopyBits()関数に渡される描画先のクリップデータを示すpcoから獲得可能なデータを格納。また、クリップデータが存在する場合は、その後ろにクリップデータ（９０９）を格納する。
【００５９】
xlo（９０１）はDrvCopyBits()関数に渡される色変換データを示すpxolで獲得可能なデータを格納。
【００６０】
rclDest（９１１）はDrvCopyBits()関数に渡される描画先のサーフェース上の矩形を示すprclDestから獲得可能なデータを格納。
【００６１】
ptlSrc（９１３）はDrvCopyBits()関数に渡されるソースサーフェース上のどの位置から描画を行うかを示すpptlSrcから獲得可能なデータを格納。
【００６２】
以降、描画関数毎にそれぞれに必要なデータのスプールが1ページ分続く。
【００６３】
デスプール時には、デスプーラが選択されたドライバのDDI関数にスプールした情報に戻して渡すことで、ＤＤＩ関数仕様のままでこれまでのプリンタドライバが動作可能である。
【００６４】
２）のチェック＆ドライバ切替処理
チェック＆ドライバ切替手段は、プリンタドライバに渡される描画データをスプールする際に以下の点をチェックすることでスプールデータのデータを解析するものである。そこで、本実施の形態においては、（１）の描画データをスプールする際にモード切替にかかわるデータを獲得し、図１０のＰＣＦ（プレチェックファイル）のようなデータ構造体にセットすることで実現するものである。
【００６５】
▲１▼カラーデータチェック
チェック＆ドライバ切替処理は、カラープリンタであっても、モノクロモードをデフォルト状態とし、描画データの中にカラーデータがひとつでもある時には、カラーモードとして動作するようにする。ＰＣＦ１０００においては、１００３には設定カラーモードを登録するが、desiColMode１００４、各バンド情報のcolflg（１００９８）には初期化時にモノクロモードであることを示す値をセットする。描画データをスプールする際に、有彩色を指定するオブジェクトがあった場合は、desiColMode（１００４）と、対応するバンドのcolflg（１００９８）をカラーモードにセットしなおす。
【００６６】
ページ全体のチェック終了後、ページのdesiColMode（１００４）がモノクロモードであったら、そのページはモノクロモードとして動かすことでドラムの回転数を1回に押さえる。ページのdesiColMode（１００４）はカラーモードでも、colflg（１００９８）がモノクロモードで、かつDeviceイメージモードでの出力に決定されていた場合は、そのバンドは、Ｋ１（２，４）BPPイメージモードでの描画処理を行うことで、同じバンドメモリサイズで大きなバンド領域の描画処理が可能となる。
【００６７】
カラーLBPプリンタは、カラーモードで印刷時は感光ドラム１５４が４回、回ることでYMCKの色を乗せているが、モノクロモード時には、ブラックトナーのみを乗せるために１回、回るだけでり、モノクロデータしかないページであればカラーモード時でもモノクロモードで動くことで高速化に繋がる。
【００６８】
▲２▼データサイズチェック
プリンタがPDLモードで動くときに、「内部メモリに１ページ分の描画オブジェクトが入りきらない」時にはバンディング処理不可能となるため、処理速度が極端に落ちる。
【００６９】
そこで、本実施の形態は、ＰＤＬモード時のプリンタ内部のデータサイズを予測することで、回避するものである。
【００７０】
そこで、PDLモードで送ったときのプリンタ内部でのデータタイプとデータサイズをスプールデータから予測し、ページ毎にPDLDataSize（１００６）に積算していく。また、本実施の形態では、モード切替をバンド単位で行うために、チェック用に設定した小さめのバンド高さでページを区切りそれぞれのデータを格納するデータ構造体をＰＣＦ内にバンド数分持っている。１００９
【００７１】
ページ毎のPDLDataSize（１００６）を関連するバンド領域で割って、それぞれのバンドのPDLDataSize（１００９６）にセットする。
【００７２】
一方、イメージモードで送った場合のデータサイズを求めるために、その描画データの描画領域の最大矩形サイズを、各バンド情報のBandRendRectLに更新する。各バンドで全バンド領域BandRectL（１００９４）をイメージデータで送った場合よりも、PDLDataSize（１００９６）が大きく成った場合は、そのバンドはDeviceイメージモード（ＹＭＣＫ、各色１，２，４ビット）で処理するように決定し、desiMode（１００９２）にその旨記録する。
【００７３】
▲３▼描画速度チェック
PDLモードでバンディング処理によって省メモリを実現しているプリンタは、描画オブジェクトが同一バンド内に沢山あると、描画時間がシップ時間に間に合わなくなり、バンディング処理による描画が不可能となる。通常プリンタではこういった場合、１ページ分のメモリサイズを獲得する特殊パスに入ることで出力しているが、プリンタ内部のメモリに余裕がないと、バンドメモリ上に描かれたイメージデータの圧縮、伸張処理が頻発し処理速度低下につながる。
【００７４】
そこで、本実施の形態では、単位面積当りの描画処理時間の予測を行い、シップ時間に間に合わない領域はDeviceイメージモード（ＹＭＣＫ、各色１，２，４ビット）に展開して送ることに決定する。またはページ全体をDeviceイメージモードで送るといった方法でプリンタの処理を軽くすることが可能である。
【００７５】
本実施の形態では、▲２▼と同様にPDLモードで送ったときのプリンタ内部でのデータタイプと描画処理予測時間を予測し、描画領域に対応するバンド毎にrendTime（１００９３）に積算していく。
【００７６】
この値が、シップ時間よりも大きくなったバンドはdesiModeをDeviceイメージモード（ＹＭＣＫ、各色１，２，４ビット）にセットする。
【００７７】
▲４▼論理演算値チェック
プリンタでの描画処理は、ディスプレーの出力結果と同じになることを目的としているものである。そのため、ディスプレーで用いられているRGB空間（輝度色空間）での論理演算処理や、αチャンネルを使った演算処理をプリンタドライバにそのまま指定してくるものが多々ある。ところが、プリンタはトナーやインクを使って印刷するために、濃度色空間値であるYMCK各色１または２ビットでバンドメモリまたはページメモリを確保し描画プレーンとして用いている。そのため、印刷結果が期待する論理演算結果にならないことがある。これを回避するためには、RGB各色８ビット以上のメモリ空間を使ったメモリ上で描画処理を行うRGB２４BPPイメージモードまたは、プリンタ内部にRGBレンダリングパスを作る必要がある。
【００７８】
本実施の形態では、こうしたケースではRGB２４BPPイメージモードで処理するよう切りかえることで不正描画を回避するものである。
【００７９】
WindowsNT4.0においては、DrvBitBlt()の第１０引数にrop4というパラメータがあり、この値でソースデータ、デスティネーションデータ、マスクデータ、ブラシデータの論理演算処理を指定してくる。チェックシステムで、この値をチェックし、濃度値で演算すると不正描画が発生する番号が来た時は、そのオブジェクトを描画するバンド領域のdesiMode（１００９２）、またはページのdesiMode（１００５）をRGB２４BPPイメージモードで処理することに決定する。
【００８０】
以上のチェックを描画オブジェクト毎に行うことによって、最適なモードを選択することが可能となる。モード切替の単位は最大ジョブ単位、最小オブジェクト単位が可能ではあるが、モードを切り替えることによる速度的効果を期待するならば、最低限ページ単位の切り替え処理が必要である。
【００８１】
次に、バンド単位のモード決定方法をフローチャートを用いて説明する。
【００８２】
ここでいうバンド単位とは、プリンタまはたドライバで描画処理に用いるバンドを示すものではなく、モード切替のチェック専用のバンドを示すものである。
【００８３】
バンド高さサイズは、プリンタドライバで行う描画処理の中で最も小さなバンド高さ以下であることが望ましい。
【００８４】
また、本実施の形態においては、プリンタ１００は、プリンタドライバから１ページ内に複数種類のモード（イメージモード、ＰＤＬモード）の印刷データが送られた場合に処理可能でなくては成らない。
【００８５】
図５は描画データがプリンタドライバに渡されたときに行う処理の流れを示していおり、描画データがコールされるたびに本処理が実行される。なお、図５のフローチャートに係わるプログラムはホストコンピュータ３００のメモリに記憶され、ＣＰＵによって実行される。
Ｓ５０１：本オブジェクトにはカラーデータが入っているかチェック、カラーデータがある場合は、関係するバンドのカラーオブジェクトフラグをTRUEにセット。
Ｓ５０２：本オブジェクトを描画する範囲がかかる全バンドはＲＧＢ２４ＢＰＰイメージモードに決定しているか。そうならＳ５０９へ、それ以外のモードがあればＳ５０３へ、
Ｓ５０３：本オブジェクトの描画論理はデバイス色空間上で可能か。可能であればＳ５０４へ、不可能ならＳ５０８へ、
Ｓ５０８：関係するバンド領域をＲＧＢ２４ＢＰＰイメージモードで処理することに決定。Ｓ５０９へ、
Ｓ５０４：描画範囲がDeviceイメージモード（YMCK各色１，２，４ビットイメージモード）。YESならＳ５０９へ、それ以外（ＰＤＬモード）ならＳ５０５へ、
Ｓ５０５：本オブジェクトをＰＤＬモードで転送した場合のプリンタ内部で生成されるデータサイズを計算し、ＰＤＬモードで転送した場合のトータルデータサイズに加算。Ｓ５０６へ、
Ｓ５０６：本オブジェクトをＰＤＬモードで転送した場合に関係するバンドの描画時間を算出し、それまでのオブジェクトとの積算描画時間が排紙時間に間に合わない場合は、Ｓ５０７へ、間に合う場合は、Ｓ５０９へ、
Ｓ５０７：間に合わないバンド領域をDeviceイメージモードに決定する。Ｓ５０７では、ユーザの設定に基づきＹＭＣＫ１ビットモード、２ビットモード、及び、４ビットモードのいずれかにセットし、Ｓ５０９へ、
Ｓ５０９：イメージモードで送った場合、関係するバンドの描画領域を更新する。
【００８６】
次に、１ページ分の全オブジェクトのスプール処理と、チェック処理が終了したあと処理の説明を、図６のフローチャートを使って行う。なお、図６のフローチャートに係るプログラムはホストコンピュータ３００のメモリに記憶され、ＣＰＵによって実行される。
Ｓ６０１：図７の７００におけるチェック用バンドのカラーオブジェクトフラグが立っているかチェック。立っている場合はＳ６０２へ、立ってない場合は６０３へ、
Ｓ６０２：本ページをカラーモードにセット。Ｓ６０３へ
Ｓ６０３：本バンドはＰＤＬモードか。ＹＥＳならＳ６０４へ、それ以外ならＳ６０７へ、
Ｓ６０４：イメージモードで送った場合と、ＰＤＬモードで送った場合のプリンタ内部のデータサイズを比較。ＰＤＬモードで送ったほうが大きくなる場合はＳ６０６へ、イメージモードの方が大きいときはＳ６０７へ、
Ｓ６０６：本バンドをDeviceイメージモードにセットする。Ｓ６０６では、ユーザの設定に基づきＹＭＣＫ１ビットモード、２ビットモード、及び、４ビットモードのいずれかにセットし、Ｓ６０７へ、
Ｓ６０７：本ページの全バンド終了。ＹＥＳならＳ６０８へ、NOならＳ６０１へ、
Ｓ６０８：本ページの全バンドの決定したモードをページＩＤと結びつけてプレチェックファイル（ＰＣＦ）としてスプール
【００８７】
３）最後に、決定したモードに従って各種ドライバで行う描画処理について図７を用いて説明する。
【００８８】
（２）で７００のページをチェックすると、７１０のように判断されたとする。７００、７１０のバンド区切りは、チェック用の仮想バンドである。
【００８９】
７０１は高解像度のイメージデータであり、ＲＧＢ各色８ビット値のままＰＤＬコマンドに変換すると、それだけで数１０メガバイトになってしまう。そこで、第二第三バンドはYMCK4BPP(各色１ビット)イメージモードで描画することに決定している。
【００９０】
７０２は、YMCK描画処理では描画不正が発生する描画データであるため、対応するバンドはＲＧＢ２４ＢＰＰイメージモードに決定している。それ以外のバンドはＰＤＬモードで問題ないと判断されていることを７１０は示している。
【００９１】
デスプーラ３０３３は、こうして渡された仮想バンドデータを元に、デスプールするためのバンド情報の作成を行う。
【００９２】
イメージモードで処理するためのバンドメモリを確保し、確保できたバンドメモリサイズから各イメージモードで使用するバンド高さを算出し、バンド高さを設定しなおす。７２０１、７２０３
（同じメモリサイズでもＲＧＢ２４ＢＰＰイメージモードとＹＭＣＫ４ＢＰＰイメージモードではバンド高さが異なる）
【００９３】
ＰＤＬモードはプリンタ内部でバンディング処理を行うため、プリンタドライバでは連続したＰＤＬ領域をつなぐ。７２０２
【００９４】
こうして再構成したバンドの状態を７２０に示す。
【００９５】
デスプーラ３０３３は、この情報に従ってバンドリストを作成し、各バンド毎に対応したドライバをコールすることで描画処理、またはＰＤＬデータへの変換処理を行う。
【００９６】
以上の処理を図８のフローチャートを使ってさらに詳しく説明する。
【００９７】
なお、図８のフローチャートに係るプログラムはホストコンピュータ３００に記憶され、ＣＰＵによって実行される。
【００９８】
以下の処理は１ページ分の描画データがスプールされた後、そのページをデスプールする際の処理を示すものである。
vH = 仮想バンドの高さ（図７の７１０で示すバンド高さ）
maxH = 獲得できたバンド用メモリを各レンダラで使う場合に取れる最大高さ（図７の７２０１の上部分、７２０３で示すバンド高さ）
nowBH = 現在計算中の処理バンド高さ
Ｓ８０１：出力を行うページに対応するＰＣＦ（スプール時にチェックした結果を格納したファイル）をオープンする。Ｓ８０２へ、
Ｓ８０２：現ページの描画処理に必要とする描画モードを検出。現在計算中のバンド高さを格納するNowBHの初期化処理も行う。Ｓ８０３へ，
Ｓ８０３：ＰＤＬモードだけの場合は、Ｓ８１５へ、イメージモードがあった場合は、Ｓ８０４へ、
Ｓ８０４：イメージモードとして使用可能なバンドメモリを獲得、獲得したバンドメモリサイズと、ページ横幅サイズ、各モードのbit/pixel値から描画処理用バンド高さの最大値maxHを求める。Ｓ８０５へ、
Ｓ８０５：次仮想バンド情報獲得、Ｓ８０６へ、
Ｓ８０６：一つ前の仮想バンドと同じ処理モードか。同じならＳ８０８へ、違うならＳ８０７へ、
Ｓ８０７：nowBHに0以外の値が入っていたら、nowBH高さのバンドを描画位置、描画モードと共に登録,nowBH=0に初期化、nowBHに0が入っていたらスルーする。Ｓ８０８へ、
Ｓ８０８：maxH よりも仮想バンド高さvHとnowBHを合わせた値が大きい場合はＳ８０９へ、小さい場合はＳ８１０へ
Ｓ８０９：仮想バンド空間を(vH+nowBH)/maxH個（小数部分を切り捨てた整数個、例えば、２５６／１００＝２．５６の２の部分）のmaxH高さのバンドに分割して描画モードと共に登録、nowBH = (vH + nowBH)%maxH （割り算のあまり部分、例えば、２５６／１００＝２あまり５６の５６の部分）をセット、Ｓ８１１へ、
Ｓ８１０：nowBH = vH ,Ｓ８０５へ、
Ｓ８１１：全仮想バンドの読みこみ終了したらＳ８１２へ、まだならＳ８０５へ、
Ｓ８１２：nowBHに0以外の値が入っていたら、nowBH高さのバンドを描画位置、描画モードと共に登録、nowBH=0に初期化、nowBHに0が入っていたらスルーする。Ｓ８１３へ、
Ｓ８１３：Ｓ８０７，Ｓ８０９で登録したバンドデータを元に、バンドリストを作成し、スプールされている描画データを、バンドバンドリストに繋ぐ。Ｓ８１４へ、
Ｓ８１４：バンドリストに登録された上位バンドから、描画処理、またはＰＤＬデータへの変換処理を行い、生成されたデータをプリンタに送出する。
Ｓ８１５：スプールされている描画データを読みこみ、登録されている順にＰＤＬコマンドに変換し、プリンタに送出する。
【００９９】
なおＳ８１４では、Ｓ５０７でＹＭＣＫモードがセットされ、ユーザによりＹＭＣＫ各色１ＢＰＰイメージモードが指定されていた場合、ＹＭＣＫレンダラ３０３６でＲＧＢ２４ＢＰＰイメージからＹＭＣＫ１ＢＰＰイメージに変換し、ＹＭＣＫ１ＢＰＰイメージで演算、描画処理を行い、プリンタに出力する。
【０１００】
また、Ｓ５０７でＹＭＣＫモードがセットされ、ユーザによりＹＭＣＫ各色２ＢＰＰイメージモードがセットされていた場合、ＹＭＣＫレンダラ３０３６で、ＲＧＢ２４ＢＰＰイメージからＹＭＣＫ２ＢＰＰイメージに変換し、変換したＹＭＣＫ２ＢＰＰイメージで演算、描画処理を行い、ＹＭＣＫ２ＢＰＰイメージをプリンタに出力する。また、Ｓ５０７でＹＭＣＫモードがセットされ、ユーザによりＹＭＣＫ４ＢＰＰイメージモードがセットされていた場合、ＹＭＣＫレンダラ３０３６で、ＲＧＢ２４ＢＰＰイメージからＹＭＣＫ４ＢＰＰイメージに変換し、変換したＹＭＣＫ４ＢＰＰイメージで演算、描画処理を行い、ＹＭＣＫ４ＢＰＰイメージをプリンタに出力する。また、Ｓ５０８でＲＧＢモードがセットされた場合、ＲＧＢレンダラ３０３７で、ＲＧＢ２４ＢＰＰイメージモードで演算、描画処理を行い、ユーザにより指定されたＹＭＣＫ各色１、２、４ＢＰＰイメージに変換しプリンタに出力する。
Ｓ８１３：スプールされている描画データをそのままロードし、順番にＰＤＬデータに変換し、プリンタに送出する。
【０１０１】
（プリンタ側のさらに詳しい説明）
本発明を実現するためには、プリンタは以下の機能が必要である。
▲１▼ バンド単位、ページ単位の処理モード切替機能
ＰＤＬプリンタには、デフォルトパスであるＰＤＬモードと別にイメージモードというデバイスに依存したイメージデータを受け取り、そのまま出力するモードを持っているものがある。しかし、イメージモードは大量のイメージデータを高速に処理するために特別なメモリ構成で処理するために、同一ジョブではＰＤＬモードとイメージモードを切り換えることは困難である。
【０１０２】
本発明を実現するためには、ページ単位、さらにはバンド単位でＰＤＬモードとイメージモードを切り替える必要がある。
【０１０３】
そこで、本実施の形態では、ＰＤＬモードのイメージ描画データのデータタイプにデバイス依存イメージデータを受け付ける口を作ることで、この問題を解決している。
【０１０４】
また、バンド単位で、描画処理を行うモードを切りかえるためには、バンド間に跨って描画されるオブジェクトがある場合に不連続線が出ないよう、描画アルゴリズムも揃えねば成らないことは言うまでもない。
【０１０５】
（第二の実施の形態）
次に図１６を用いて第二の発明の実施の形態を説明する。
【０１０６】
バンド単位でイメージモード、ＰＤＬモードを切り替えるとつなぎ目に起きる場合が考えられるため、論理ページ単位で切り替える例を説明する。
【０１０７】
１６０１は一般的なドキュメント作成アプリケーションを使って作成した４ページのドキュメントを示している。１ページ目から３ページ目までは文字だけデータであり、プリンタにとっては高速な印字が可能なページである。ところが４ページ目に貼り付けられているイメージデータ１６０２は、高解像度のカラーイメージである。４ページを１ページに合わせた（４−ｕｐ）をＰＤＬモードで処理すると、高解像度イメージがそのままＰＤＬコマンドとしてプリンタに送出され、プリンタの処理速度が大幅に低下する。
【０１０８】
これを回避するために本発明を使って処理系を自動的に切り替えるわけだが、Ｎ−ｕｐ印刷時には、以下の二つの切り替え方法が考えられる。
【０１０９】
１）物理ページ単位で切り替える
高解像度イメージが含まれる物理ページ全体をイメージモードで処理するためには、ページ全体をいくつかのバンド領域に分割し１６０３、バンド単位で描画処理を実行し、生成したデバイスビットマップデータは、ページ全体のサイズとなる。（６００ＤＰＩ，出力階調数２，ＹＭＣＫ印刷，Ａ４サイズの場合、非圧縮時のデータサイズは３２Ｍｂｙｔｅとなる。そのため、プリンタに搭載されているメモリサイズによっては、指定階調数で出力できない可能性が高い。）
２）  論理ページ単位で切り替える
１，２，３、ページはＰＤＬモード系トランスレータで文字コードを利用した文字描画命令のみが生成される。４ページ目は、イメージモード系トランスレータが選択される。イメージモード系トランスレータは、縮小処理を行った時の領域のバンドメモリを用意し１６０５、そこに縮小したイメージを描画するため、バンド分割をする回数も、生成されるデバイスビットマップデータも（１）の１／４となる。その分搭載メモリサイズが少ない場合でもイメージモード系処理で高階調出力の可能性が高い。
【０１１０】
本発明は、（２）の方法をとるものである。以下に実現方式について詳しく説明する。
【０１１１】
（ホスト側プリンタドライバのさらに詳しい説明）
本発明を実現するためには、ホストマシンで動くプリンタドライバで最低限以下の機能が必要である。
【０１１２】
１）描画データスプール処理
２）スプール時の描画命令毎にチェック処理、描画領域保持処理
３）デスプール前に、デバイス情報、出力環境情報、レイアウト情報、チェック結果を読み込む処理
４）チェック結果から再生手段と出力階調数を論理ページ単位で選択する処理
５）選択した再生手段で論理ページ毎に選んだ処理系でデスプール処理を行い、物理ページ単位でページ排出を行う処理
【０１１３】
以下にそれぞれについての説明を行う。
【０１１４】
１）描画データスプール処理
ＷｉｎｄｏｗｓＮＴ４．０を例にとり、図９を用いて説明を行う。
【０１１５】
ＷｉｎｄｏｗｓＮＴ４．０においては、ＧＤＩからコールされる描画用ＤＤＩ関数として、以下のものが挙げられる。
【０１１６】
ＤｒｖＣｏｐｙＢｉｔｓ（），ＤｒｖＢｉｔＢｌｔ（），ＤｒｖＳｔｒｅｔｃｈＢｌｔ（），ＤｒｖＳｔｒｏｋｅＰａｔｈ（），ＤｒｖＦｉｌｌＰａｔｈ（）
ＤｒｖＳｔｒｏｋｅＡｎｄＦｉｌｌＰａｔｈ（），ＤｒｖＰａｉｎｔ（），ＤｒｖＴｅｘｔＯｕｔ（）
【０１１７】
これらの関数には引数を介して、ＧＤＩから描画オブジェクトが渡される。
【０１１８】
例えば、イメージの描画処理関数であるＤｒｖＣｏｐｙＢｉｔｓ（）の引数は
0004235347.tif 000003
となっている。
【０１１９】
ＰＤＬモードでは、まず、ｐｃｏからクリップ情報を獲得し、クリッピング指定命令を発行し、その後、ｐｓｏＳｒｃと、ｐｐｔｌＳｒｃが示す先のソースイメージデータを、ｐｓｏＤｅｓｔと、ｐｒｃＩＤｅｓｔが示す先に描画するようにイメージ描画命令を生成して発行することになる。イメージモードでは、ｐｓｏＤｅｓｔと、ｐｒｃＩＤｅｓｔが示す先にｐｓｏＳｒｃとｐｐｔｌＳｒｃが示すイメージをｐｃｏが示す領域に限りコピー処理を行えば良い。
【０１２０】
本発明を実現するためには、１ページ分の描画情報を知った上で、最適な処理モードを決定し、その後デスプール処理を実行する必要がある。そのためには、ＤＤＩ関数に渡されるデータの中でデスプール時にどのモードでも再生処理可能なデータ形式でスプールしなくてはならない。
【０１２１】
まず、スプールデータはページ単位で保持する必要がある。そこで、図９のＰＤＦ９００は、ページを特定するためのｐａｇｅＩＤ（９０１）に続いて、ページのサイズや、データサイズ、格納したオブジェクト数等を保持するページ情報（９０２）をヘッダとして持つ。
【０１２２】
その後ろに続いて、ＤＤＩ関数でコールされた描画関数を示す番号９０３が入る。ここではＤｒｖＣｏｐｙＢｉｔｓを例に説明を行う。
【０１２３】
ｄａｔａｓｉｚｅ（９０４）はＤｒｖＣｏｐｙＢｉｔｓのスプールにかかったサイズ、ｓｏＤｓｅｔ（９０５）はＤｒｖＣｏｐｙＢｉｔｓ（）関数に渡される描画先のサーフェース情報を示すｐｓｏＤｅｓｔで獲得可能な情報を格納。
【０１２４】
ＳｏＳｒｃ（９０６）はＤｒｖＣｏｐｙＢｉｔｓ（）関数に渡されるソースサーフェース情報を示すｐｓｏＤｅｓｔで獲得可能な情報を格納。
【０１２５】
ソースイメージデータ（９０７）はｐｓｏＳｒｃから獲得可能なソースイメージデータの実態である。
【０１２６】
ｃｏ（９０８）はＤｒｖＣｏｐｙＢｉｔｓ（）関数に渡される描画先のクリップ情報を示すｐｃｏから獲得可能な情報を格納。また、クリップデータが存在する場合は、その後ろにクリップデータ（９０９）を格納する。
【０１２７】
ｘｌｏ（９０１）はＤｒｖＣｏｐｙＢｉｔｓ（）関数に渡される色変換情報を示すｐｘｏｌで獲得可能な情報を格納。
【０１２８】
ｒｃｌＤｅｓｔ（９１１）はＤｒｖＣｏｐｙＢｉｔｓ（）関数に渡される描画先のサーフェース上の矩形を示すｐｒｃｌＤｅｓｔから獲得可能な情報を格納。
【０１２９】
ｐｔｌＳｒｃ（９１３）はＤｒｖＣｏｐｙＢｉｔｓ（）関数に渡されるソースサーフェース上のどの位置から描画を行うかを示すｐｐｔｌＳｒｃから獲得可能な情報を格納。
【０１３０】
以降、描画関数毎にそれぞれに必要なデータのスプールが１ページ分続く。
【０１３１】
デスプール時には、デスプーラが選択されたドライバのＤＤＩ関数にスプールした情報に戻して渡すことで、ＤＤＩ関数仕様のままでこれまでのプリンタドライバが動作可能である。
【０１３２】
２）スプール時の描画命令毎にチェック処理、描画領域保持処理
スプール時の描画命令毎のチェック手段、描画領域保持手段は、プリンタドライバに渡される描画データをスプールする際に処理速度に関係する以下の点をチェックすることでスプールデータの情報を解析するものである。そこで、本実施例においては、（１）の描画命令をスプールする際にモード切替にかかわる情報を獲得し、ページ単位で図１５のＰＣＦ（プレチェックファイル）１０００のようなデータ構造体に格納、スプールすることで実現するものである。
【０１３３】
ＰＣＦ１０００のデータ構造は、そのファイルが属するジョブナンバー１００１、ページナンバー１００２で始まる構造体で、この二つの値により、対応するページを特定可能である。
【０１３４】
その他は、ページをＹ軸方向に分割したバンドを単位としたｂａｎｄｉｎｆ構造体１０３０で構成されている。
【０１３５】
仮想領域は、ＶｂａｎｄＳｉｚｅ１００４に示されたサイズのバンドが、ｐａｇｅＳｉｚｅ１００３の中に、ｂａｎｄＣｎｔ１００５分敷きつめられたバンド領域を仮想的に定義したものである。
【０１３６】
Ｂａｎｄｌｎｆｏは、その仮想バンドの領域を矩形情報で保持するＢａｎｄＲｅｃｔＬ１０１０で始まる構造体であるが、この構造体には、ＢａｎｄＲｅｃｔＬ１０１０の領域内に関連する描画処理情報を記録するための物である。
【０１３７】
詳細は以下のとおりである。
【０１３８】
バンド内に描かれる描画処理の最大概説矩形領域ＤｒａｗＲｅｃｔＬ１０１１、バンド内に描かれる描画領域の中の有彩色領域ＣｏｌｏｒＲｅｃｔＬ１０１２、ＹＭＣＫ印字では不正印字が発生する領域ＲＯＰＲｅｃｔＬ１０１３イメージ系関数による描画処理領域ｌｍｇＲｅｃｔＬ１０１４、グラフィックス系関数による描画領域ＧｒａｐｈｉｃＲｅｃｔＬ１０１４、文字系描画領域ＴｅｘｔＲｅｃｔＬ１０１６。
【０１３９】
以上の各ＲｅｃｔＬ構造体が示す領域をわかりやすく図示したものを図１１にしめす。
【０１４０】
１１０１は、ＤｒａｗＲｅｃｔＬ１０１１が保持している各仮想バンド内の描画領域を最外郭矩形領域を示すものである。
【０１４１】
１１０２は、ＣｏｌｏｒＲｅｃｔＬ１０１２が保持している各仮想バンド内の有彩色で描画処理を行う領域の最外郭矩形領域を示すものである。
【０１４２】
１１０３は、ＲＯＰＲｅｃｔＬ１０１３が保持している各仮想バンド内の描画領域の最外郭矩形領域を示す物である。
【０１４３】
１１０４は、ＩｍｇＲｅｃｔＬ１０１４が保持している各仮想バンド内のイメージ系描画領域の最外郭矩形領域を示す物である。
【０１４４】
１１０５は、ＧｒａｐｈｉｃＲｅｃｔＬ１０１５が保持している各仮想バンド内のグラフィックス系描画領域の最外郭矩形領域を示す物である。
【０１４５】
１１０６は、ＣｈａｒＲｅｃｔＬ１０１６が保持している各仮想バンド内の文字系描画領域の最外郭矩形領域を示す物である。
【０１４６】
以上の領域は、描画データスプール時に、描画命令から推測した描画領域の最外郭矩形領域を求め、それとｂａｎｄＲｅｃｔＬの重なり部分を示すものである。
【０１４７】
Ｂａｎｄｌｎｆｏ構造体１０３０は、それ以外に、ＤＤＩ関数毎の情報も１０１７〜１０２０に収集する。
【０１４８】
ＷｉｎｄｏｗｓＮＴ４０のＤＤＩを例にとって説明すると、ビットマップの拡縮指定可能なＤＤＩ関数であるＳｔｒｅｔｃｈＢｌｔ関数についての情報は、ＳｔｒｅｔｃｈＢｌｔ１０１９に保存する。
【０１４９】
１０１９は、ＳｔｒｅｔｃｈＢｌｔ関数のコール回数ｃａｌｌｃｎｔ１０１９１、１ＢＰＰイメージの個数１ＢＰＰＣｎｔ１０１９２、１ＢＰＰイメージのトータルデータサイズ１ＢＰＰＴｏｔａｌＳｉｚｅ１０１９３といったこのバンドに関連する情報を保持可能である。
【０１５０】
その他のＤＤＩ関数、ＣｏｐｙＢｉｔｓ（１０１７），ＢｉｔＢｌｔ（１０１８），Ｐｏｌｙｇｏｎ（１０２０）も同様にそれぞれの関数Ｉ／Ｆに渡される情報を保持するようなデータ構造体を持っている。
【０１５１】
３）デスプール前に、デバイス情報、出力環境情報、レイアウト情報、プレチェック結果を読み込む処理
【０１５２】
デバイス情報：
スプール時に収集した情報から処理モードを決定する上で、プリンタの、グラフィックスデータの処理速度、イメージデータの処理速度、論理演算能力が異なると、予測結果が異なることがある。これらの値を、プリンタごとに求め、ファイル化したものをインストールファイルとしてシステムに保持しておく。
【０１５３】
出力環境情報：
プリンタドライバが動作するホストマシンの能力（ＣＰＵスピード、ディスク速度、ディスク空き容量）、プリンタとホスト間の転送速度を意味する。
【０１５４】
レイアウト情報：
ｐａｇｅＳｉｚｅ１００３を実際にはどのサイズで出力するかによって、イメージモードで処理した場合の転送データサイズが大きく変化する。
【０１５５】
また、Ｎ−ｕｐ指定等の１ページ辺りに複数のページを配置する場合には、ＰＤＬモードで高速な処理が可能だったページが集まり、プリンタの負荷が増えることがある。
【０１５６】
スプール時のページを論理ページ、出力時に実際に描画処理を行うページを物理ページと定義し、物理ページ内に、論理ページが如何に配置されるかを示すのがレイアウト情報である。
【０１５７】
プレチェック結果：
スプーラでチェックした結果を格納したＰＣＦを示す。
【０１５８】
物理ページ内にかかわる全論理ページのＰＣＦを読み込み、演算対象とする。
【０１５９】
４）チェック結果から再生処理と出力階調数を論理ページ単位で選択する処理以下▲１▼〜▲３▼の判定を論理ページ単位に行い、結果を管理テーブルに保持する。
【０１６０】
▲１▼  カラーモノクロ判定
論理ページ単位でカラーモノクロモードを切り替える場合：
ＰＣＦの各バンドのＣｏｌｏｒＲｅｃｔＬ領域（有彩色オブジェクトの描画処理のあった領域）の有無をチェック、一つでも存在すれば、そのページはカラーモードで処理を行う。
【０１６１】
バンド単位で処理モードを切り替える場合：
ＰＣＦの各バンドのＣｏｌｏｒＲｅｃｔＬ領域（有彩色オブジェクトの描画処理のあった領域）の有無をチェック、存在するバンドはカラーモードで処理を行う。
【０１６２】
▲２▼  不正印字回避
論理ページ単位で処理モードを切り替える場合：
ＰＣＦの各バンドのＲＯＰＲｅｃｔＬ領域（ＹＭＣＫ色空間では不正印字が発生する論理演算処理のあった領域）の有無をチェック、一つでも存在すれば、そのページはＲＧＢ２４ＢＰＰイメージモードで処理を行う。
【０１６３】
バンド単位で処理モードを切り替える場合：
ＰＣＦの各バンドのＲＯＰＲｅｃｔＬ領域（ＹＭＣＫ色空間では不正印字が発生する論理演算処理のあった領域）の有無をチェック、存在するバンドはＲＧＢ２４ＢＰＰイメージモードで処理を行う。
【０１６４】
▲３▼  処理速度予測
イメージモード、ＰＤＬモードの処理速度は図６に示したような関係にある。
【０１６５】
「イメージモード処理速度予測」
イメージモード系処理６００は、大きく分けると、プリンタドライバの処理時間と、プリンタの処理に分けられる。
【０１６６】
プリンタドライバの処理は、バンドメモリを使った描画処理時間１２０１であるが、色変換処理、２値化処理まで含んだ描画処理を行うため、ＰＤＬモードでのドライバの処理に比べて重い処理と言える。描画オブジェクト毎の描画処理情報に、ホストマシンのＣＰＵ速度、空きディスク容量を掛け合わせて処理時間の予測値を求める。
【０１６７】
プリンタ処理時間は、データ転送時間１２０２とプリンタ内部の中間データ生成時間１２０３、シップ時間１２０４を含んでいる。データ転送時間１２０２を求めるために、まず描画面積を求める。
【０１６８】
描画面積は図１５で説明した各仮想バンドのＤｒａｗＲｅｃｔＬ領域とレイアウト情報を掛け合わせることで算出する。求めた描画面積に指定出力階調数をかけて非圧縮時のデータサイズが求まる。転送データサイズは、データ圧縮を行う場合、圧縮率が解らないと正確な値はわからないので、平均値を適用する。また、オブジェクト毎の描画領域はわかっているので、オブジェクト毎の圧縮率平均値を求めることで精度を向上させることは可能である。
【０１６９】
プリンタ内部の中間データ作成時間１２０３は、既にデバイスに依存したデータ形式にまで変換されているため、中間データの格納処理だけであり、処理時間は描画面積に比例しており、比例係数は機種依存値から取得する。
【０１７０】
シップ時間１２０４は、エンジンスループット速度に依存。
【０１７１】
以上の合計値を求めることでイメージモードの処理時間が求まる。
【０１７２】
「ＰＤＬモード処理速度予測」
ＰＤＬ系処理１２０５も、イメージモード同様プリンタドライバの処理時間と、プリンタの処理に分けられる。
【０１７３】
まず、プリンタドライバの処理は、基本的にはシステムから渡された描画命令をそのままＰＤＬコマンドに変換するコマンド生成処理１２０６だけなので、イメージモード系ドライバの処理に比べて高速である。そのため、ホストマシンのＣＰＵ速度、空きディスク容量の影響は受けにくい。
【０１７４】
各オブジェクト毎のコマンド生成予測係数を元に予測する。
【０１７５】
プリンタの処理時間に含まれるデータ転送時間１２０７はＰＤＬコマンドサイズと、転送経路の速度に影響を受ける。ＰＤＬコマンドのサイズは、出力モード（カラー、モノクロ等）、機種、言語のバージョンによって異なるので、デスプーラで収集した機種情報を使ってオブジェクト毎のＰＤＬコマンドサイズを算出する。また、レイアウト処理により縮小する場合もデータサイズは変化するものがあるので、レイアウト情報も加味して算出する。
【０１７６】
プリンタのエンジンスループットに間に合うように、受信したデータを加工する時間をシップ準備時間１２０８とした。プリンタのメモリ容量に中間データが収まる場合は、二つのバンドメモリを使って描画処理とシップ処理を交互に行う、いわゆるバンディング処理が可能であり、この場合プリンタの処理速度はエンジンスループットで連続ページ印刷が可能である。ところが、プリンタの中間データ格納許容量を超えるデータが送られる、または、複雑な演算が必要でバンディング処理が間に合わない場合に、プリンタはバンディング処理を諦め、１ページ分のメモリを確保する特殊処理モードに入る。この状態に入るとプリンタの処理速度は極端に落ちる。この時の時間予測は、搭載メモリサイズ、プリンタのＣＰＵ速度、プリンタのハードレンダラー能力に依存する。
【０１７７】
シップ時間１２０９は、エンジンスループット依存。
【０１７８】
５）選択した再生手段で、指定階調出力が可能かどうかを検証し、可能と判定した時には、出力階調数を落として再度再生手段を選択しなおす手段
【０１７９】
高階調出力可能なプリンタでも、搭載メモリサイズが少ない時は、指定された階調数、解像度で出力できない場合も依存する。こういった場合でも、ページプリンタはＰＤＬモード時には解像度、または階調数をプリンタ内部で自動的に低下（デグレード）させることで、出力不可能なことが無いようにしている。
【０１８０】
ところが、イメージモード系処理で生成される印刷データの、デバイス依存ビットマップ（既に出力階調数、解像度のハーフトーニング処理を加えたデータ）はプリンタでデグレード処理を行うと画質低下が激しいため、プリンタのメモリ等裁量が出力が保証されない時は高階調指定が出来ないようになっている。
【０１８１】
本実施例では、ＰＤＬモードとイメージモードを動的に切り替えるシステムを提供するために、搭載メモリサイズが少ない時でもＰＤＬモード時のように高階調指定を可能とするものである。
【０１８２】
これを実現するために、以下の方法を取っている。
【０１８３】
１）選択した処理系にイメージモードが含まれた場合は、物理ページ内に含まれる論理ページ全ての描画コマンドをプリンタ内部で中間データに変換した時のサイズ（ＤａｔａＳｉｚｅ）を予測
２）プリンタのメモリ搭載サイズを取得し、中間データ格納部のサイズ（ＷｏｒｋＳｉｚｅ）を算出
３）ＤａｔａＳｉｚｅ＞ＷｏｒｋＳｉｚｅの時には、出力階調数を落として再度、再生手段を選択しなおす。
【０１８４】
以上の予測結果を組み合わせることで、最適な処理モードを選択する。
【０１８５】
プリンタドライバ内での物理ページ内における論理ページ判断の流れを図１３、図１４のフローチャートで説明する。なお、図１３、１４のフローチャートに係わるプログラムはホストコンピュータのメモリに記憶されており、ＣＰＵによって実行される。
【０１８６】
「物理ページの処理系決定の流れ」
Ｓ１３０１：物理ページ内の論理ページ毎に最適な処理モード決定、Ｓ１３０２へ進む。
Ｓ１３０２：デバイス依存ビットマップが出力コマンド内にある場合はＳ１３０３へ、ない場合は処理終了。
Ｓ１３０３：計算中の論理ページ内の印刷命令をプリンタ内部で中間データに変換した時のサイズを予測、それまでに算出したページの中間データサイズのトータル値（ｔｏｔａｌＳｉｚｅ）に加算し、Ｓ１３０４へ進む。
Ｓ１３０４：プリンタに搭載されているメモリサイズから算出した中間データ格納領域サイズよりも、Ｓ１３０３で求めたデータサイズのほうが大きい時はＳ１３０５へ、小さい時は処理終了。
Ｓ１３０５：指定階調数よりも小さな階調数を設定。Ｓ１３０１へ戻る。
【０１８７】
「論理ページ毎の処理系決定の流れ」
Ｓ１４０１：論理ページ情報取得し、Ｓ１４０２へ進む。
Ｓ１４０２：ＰＤＬモードで不正印字発生が予測される場合はＳ１４１２へ、無い場合はＳ１４０３へ進む。
Ｓ１４０３：ＰＤＬモードで処理した時のプリンタ内部で保持する中間データの種類、個数、サイズ予測し、１４０４へ進む。
Ｓ１４０４：バンドレンダリングで処理不可能と判断した場合は、Ｓ１４０５へ、バンドレンダリング可能ならＳ１４０６へ進む。
Ｓ１４０５：サブクローズによって発生する遅延時間を算出し、ＰＤＬモード処理時間に加算、Ｓ１４０６へ進む。
Ｓ１４０６：イメージモードで処理した時のプリンタ内部で生成される中間データサイズ、処理時間（ＩＭＧＴｉｍｅ）予測、Ｓ１４０７へ進む。
Ｓ１４０７：ＰＤＬモードで処理した時のプリンタ内部のデータサイズ、処理時間（ＰＤＬＴｉｍｅ）予測、Ｓ１４０８へ進む。
Ｓ１４０８：ＩＭＧＴｉｍｅ＜ＰＤＬＴｉｍｅならＳ１４１０へ、そうでなければＳ１４０９へ進む。
Ｓ１４０９：処理中の論理ページをＰＤＬモードに決定し、結果をテーブルに登録し、Ｓ１４１１へ進む。
Ｓ１４１０：処理中の論理ページをＹＭＣＫイメージモードに決定し、結果をテーブルに登録し、Ｓ１４１１へ進む。
Ｓ１４１２：処理中の論理ページをＲＧＢイメージモードに決定し、結果をテーブルに登録し、Ｓ１４１１へ進む。
Ｓ１４１１：論理ページがまだある場合はＳ１４０１へ、無い場合は処理終了する。
【０１８８】
６）選択した再生手段で論理ページ毎に選んだ処理系でデスプール処理を行い、物理ページ単位でページ排出を行う処理
１物理ページの印刷に必要な、論理ページ全ての、処理系、処理階調数が揃ったところで、デスプール処理を開始する。
【０１８９】
デスプーラは、最初にページの初期化命令を生成し、プリンタに送出する。
【０１９０】
後は、論理ページ毎にＰＤＦファイルを読み込み、（５）で決定した処理系で描画命令の処理を行う。その際、レイアウト変換部（３０３４）で指定されたレイアウト変換処理を加えた描画命令を処理系に渡すことで描画位置の変更、拡大縮小処理といったレイアウト変換処理を実現している。
【０１９１】
次にサブクローズについて説明する。
【０１９２】
印刷命令のサイズが大きくて中間言語を１ページ分格納できなくなった時に、プリンタはサブクローズ状態となる。サブクローズ状態は、それまで蓄えた中間言語を、１ページ分のメモリ空間に描画処理を行うことで中間言語を格納していたメモリを開放し、新たに印刷命令を読み込むことを可能とするものである。このとき、プリンタの搭載メモリサイズが少ないと、指定階調数でサブクローズ処理が行えず、階調低下が発生する。こうした状態に入ると、プリンタの処理速度は極端に落ちる。そこでこれを予測し回避することが効果的な処理モード切替といえる。
【０１９３】
次にＮ−ｕｐ印刷処理について説明する。
【０１９４】
Ｎ−ｕｐ印刷とはアプリケーションソフトで作成された文書をプリンタドライバで１枚の用紙に何ページ印刷できるか指定できる機能であり、例えば１枚に４ページ印刷することを４−ｕｐと呼ぶ。Ｎ−ｕｐ印刷は、物理ページ内のＮページ分の変換処理が終わるまで、排紙コマンドを送らないことで、プリンタはＮページ分の印刷命令を１ページ分の情報として処理することで実現している。
【０１９５】
論理ページ単位の処理系を決定した後の、Ｎ−ｕｐ印刷の処理の流れを図１７のフローチャートを用いて説明する。なお、このフローチャートに係るプログラムはホストコンピュータ２００のメモリに記憶され、ＣＰＵによって実行される。
【０１９６】
Ｓ１７０１：次の論理ページの処理をすることに決定したトランスレータモジュールをロードし、Ｓ１７０２へ進む。
Ｓ１７０２：ＰＤＬモードならＳ１７１０へ、イメージモードならＳ１７０３へ進む。
Ｓ１７０３：描画処理に用いるバンドメモリを獲得、ページ幅からバンド高さを算出し、バンドリストを生成する。Ｓ１７０４へ進む。
Ｓ１７０４：ＰＤＦ（中間データ）をＳ１７０３で生成したバンドリストにリンクする。Ｓ１７０５へ進む。
Ｓ１７０５：レイアウト変換モジュールをこれから処理するバンド領域に合わせて初期化し、Ｓ１２７０６へ進む。
Ｓ１７０６：現バンド用バンドリストに繋がっている中間言語（ＰＤＦ）を順にレイアウト変換モジュールに渡し、座標変換処理を行う。Ｓ１２０７へ進む。
Ｓ１７０７：座標変換された描画命令を、トランスレータ（イメージモードレンダラー）に渡して、用意したバンドメモリ空間上に描画処理を実施する。Ｓ１７０８へ進む。
Ｓ１７０８：バンドリストにデータがまだ繋がっているならＳ１７０６へ、ないならＳ１７０９へ進む。
Ｓ１７０９：バンドに描かれた結果からデバイスビットマップデータ（ＹＭＣＫ各色１，２ｏｒ４ｂｉｔイメージデータ）生成、論理ページ位置から求めたレイアウト情報を加味して印刷命令生成し、Ｓ１７１０へ進む。
Ｓ１７１０：全バンド処理終了ならＳ１７１５へ、まだなら１７０５へ進む。
Ｓ１７１１：レイアウト変換モジュールを論理ページ領域に合わせて初期化し、Ｓ１７１２へ進む。
Ｓ１７１２：ＰＤＦ内の描画命令を順にレイアウト変換モジュールに渡し、座標変換処理実行する。Ｓ１２１３へ進む。
Ｓ１２１３：座標変換が加えられた描画命令を、ＰＤＬトランスレータに渡し、印刷命令生成し、Ｓ１７１４へ進む。
Ｓ１７１４：ＰＤＦ内に描画命令がまだあれば、１７１２へ進む。
Ｓ１７１５：論理ページがまだあれば、Ｓ１７０１へ、なければ本ジョブの処理終了する。
【０１９７】
次に、図１８の模式図を用いて、Ｎ−ｕｐ処理時の印刷命令生成処理を説明する。１８０１は図１８でも説明に用いた高解像度イメージが貼り付けられた処理の重いページとする。本ページをイメージモードで処理する場合、描画処理用メモリ領域１８０４を獲得し、これをバンドメモリ１８０５として使うことでページ全面のメモリ空間を持たずに描画処理が可能である。
【０１９８】
等倍出力する場合は、４Ｍｂｙｔｅの描画用メモリで、ＲＧＢ２４ＢＰＰイメージレンダラーでＡ４ページの処理を行うためには１７個の高さｂａｎｄＨのバンド領域に分割される。
【０１９９】
１８０３：スプールされているＰＤＦは、元々、描画原点ページの左上（０，０）、幅Ｗ、高さＨのページに描画するように指示されたものである。これを、分割されたバンドメモリ領域に描画処理を行うためには、各バンド用バンドリストを用意し、それぞれのバンドに関わりのあるＰＤＦデータを描画指定順に繋ぎなおす。生成したバンドリストに繋がっている描画命令を、バンド毎にトランスレータ（レンダラー）に渡すことで描画処理を実現している。
【０２００】
例えば、図１８の１８０１の中のイメージデータは、左上描画位置（Ｘ１，Ｙ１）、右下描画位置（Ｘ２，Ｙ２）のイメージは、１８０３では２〜７バンド目にかかっている。描画処理は、ＰＤＦに格納されている描画位置情報のＹ座標値Ｙ１を、処理中のバンド位置内の座標系に変換したものをトランスレータ（レンダーラ）にセットし、バンド領域でクリップ処理することで実現している。
【０２０１】
つまり、最初のバンドＮｏを０、現在処理しているバンドＮｏをｂａｎｄＮｏとする時、
Ｙ１′＝Ｙ１−ｂａｎｄＨ* ｂａｎｄｎｏ
Ｙ２′＝Ｙ２−ｂａｎｄＨ* ｂａｎｄｎｏ
で示される。
【０２０２】
以上、生成されたピクセル辺りＲＧＢ２４ＢＰＰのバンドメモリ空間に展開された出力結果は、バンド単位でＹＭＣＫ各色８ｂｉｔに色空間変換の後、ハーフトーニング処理により出力階調数（各色１，２ｏｒ４）に落とす。データにイメージ描画命令のコマンドを付加することで、このページの描画命令となる。
【０２０３】
次に、４−ｕｐ出力時の印刷処理時について説明を行う。本ページの処理を行う前に既に文字のみのページが３ページ分ＰＤＬトランスレータによって処理が終了しているものとする。
【０２０４】
本ページをＲＧＢ２４ＢＰＰイメージレンダラーで処理する場合、Ａ４ページの１／４処理をＲＧ２４ＢＰＰレンダラーで行うためには、等倍時と同じ４Ｍｂｙｔｅのメモリ領域で４個のバンドしか必要としない。
【０２０５】
スプールされているＰＤＦは、元々、幅Ｗ，高さＨのページに描画するように指示されたもののため、４−ｕｐ印刷するためには、１３０４に示された幅、高さを（ｗ′，ｈ′）の領域に領域に座標変換して描画処理を行わなくてはならない。等倍印刷時と同様に、各バンド用バンドリストを生成するが、その際に、ＰＤＦ内の描画命令の座標値を描画先の座標空間に変換する。例えば１８０１の中のイメージデータの左上描画位置（Ｘ１，Ｙ１）、右下描画位置（Ｘ２，Ｙ２）はそれぞれ、
（Ｘ１′＝Ｘ１* （ｗ′／Ｗ），Ｙ１′＝Ｙ１* （ｈ′／Ｈ））、（Ｘ２′＝Ｘ２* （ｗ′／Ｗ），Ｙ２′＝Ｙ２* （ｈ′／Ｈ））に変換される。
【０２０６】
描画処理は、バンドリストにつながれたデータの上記変換された描画位置のＹ座標値を、さらに処理中のバンド位置内の座標系に変換したものをトランスレータ（レンダーラ）にセットし、バンド領域でクリップ処理することで実現している。
【０２０７】
以上、生成されたピクセル辺りＲＧＢ２４ＢＰＰにバンドメモリ空間に展開された出力結果は、バンド単位でＹＭＣＫ各色８ｂｉｔに色空間変換の後、ハーフトーニング処理により出力階調数（各色１，２ｏｒ４）に落とす。生成したデータに４−ｕｐ用描画位置に変換したイメージ描画命令のコマンドを付加することで、本論理ページ分の描画命令となる。
【０２０８】
４ページ分の描画命令が全て送出された後、排紙コマンドをプリンタに送出する。
【０２０９】
（プリンタ側のさらに詳しい説明）
本発明を実現するためには、プリンタは以下の機能が必要である。
【０２１０】
「デバイスビットマップ直通描画機能」
ＲＧＢ色空間のデータは、プリンタ内部で色変換処理が加えられ、デバイス依存色空間データ（ＹＭＣＫ）となり、中間データとして保持される。ページメモリに描画時に、前記中間データはハーフトーニング処理がかけられ階調を落としたデバイスビットマップ形式となる。本発明は、ＰＤＬコマンドにデバイスビットマップデータを追加することで、論理ページ単位の処理モード切替を実現するものである。プリンタはデバイスビットマップデータを受け取った時に、そのまま中間データとして保持し、ハーフトーニング処理を加えずにページメモリに描画処理を行う処理系を持つ必要がある。
【０２１１】
次に、図１９、２０を用いて、モード選択の説明、及びそのフローの説明を行なう。
【０２１２】
図１９はプリンタドライバのグラフィックモード設定画面である。
【０２１３】
１９０１のオートモードが指定されれば、図５、または図１４の最適モード決定処理によりモードを決定し、アプリケーションからのデータを解析し、イメージデータまたはＰＤＬデータに変換し、プリンタに転送する。
【０２１４】
１９０２のイメージモードが指定されていれば、イメージレンダラ３０３６を選択し、アプリケーションからのデータをイメージデータに変換し、プリンタに転送する。
【０２１５】
１９０３のＰＤＬモードが指定されていれば、ＰＤＬ３０３５を選択し、アプリケーションからのデータをＰＤＬデータに変換し、プリンタに転送する。
【０２１６】
次に、図２０を用いてグラフィックモード選択処理について説明する。なお、図２０のフローにかかわるプログラムはホストコンピュータ２００のメモリに記憶されており、ＣＰＵによって実行される。
【０２１７】
Ｓ２００１でオートモードが指定されているか否かを判別し、指定されていればＳ２００２に進み、指定されていなければＳ２００３に進む。
【０２１８】
Ｓ２００２では、図５または図１４の処理によりアプリケーションからのデータを解析し、最適なレンダラを選択し、選択されたレンダラを用いてアプリケーションからのデータをイメージデータまたはＰＤＬデータに変換し、プリンタに転送する。
【０２１９】
Ｓ２００４では、イメージモードが指定されているか否かを判別し、指定されていればＳ２００５に進み、指定されていなければＳ２００６に進む。
【０２２０】
Ｓ２００５では、イメージレンダラ３０３６を選択し、選択されたレンダラを用いてアプリケーションからのデータをイメージデータに変換し、プリンタに転送する。
【０２２１】
Ｓ２００６では、ＰＤＬモードが指定されているか否かを判別し、指定されていればＳ２００７に進み、指定されていなければＳ２００８に進む。
【０２２２】
Ｓ２００７では、ＰＤＬレンダラ３０３５を選択し、選択されたレンダラを用いてアプリケーションからのデータをＰＤＬデータに変換し、プリンタに転送する。
【０２２３】
（第三の実施の形態）
以下に、本発明における第二の実施の形態を説明する。なお本実施の形態において第一の実施の形態と構成については、その説明を省略する。
【０２２４】
第一の実施の形態では、カラープリンタのカラーモードにおける各印刷モードの切替方法について説明していたが、本発明は、モノクロプリンタ、またはカラープリンタのモノクロモードにも適用可能である。以下にモノクロモード時の切替方法について差分部分の説明を行う。モノクロモード時は、以下のチェック項目
▲１▼カラーデータチェック
▲２▼データサイズチェック
▲３▼描画速度チェック
▲４▼論理演算値チェック
のうち、カラーデータチェックは行う必要はないが、それ以外は同様にチェックし、同様にモード切替の情報として利用する。
【０２２５】
但し、モノクロモードにおいては、データサイズチェックはプリンタ内部ではモノクロデータでデータを保持する場合は、そのサイズを用いる。
【０２２６】
また、▲２▼、▲３▼のチェックによりＰＤＬモードで処理すると速度が遅くなる場合に移行するDeviceイメージモードはBlack1,2 or 4bitのイメージモードに対応する。
【０２２７】
▲４▼の論理演算値チェックで引っかかった場合に逃げるＲＧＢ２４ＢＰＰイメージモードはやはりそのままである。
【０２２８】
（第四の実施の形態）
以下に、本発明における第四の実施の形態を説明する。なお本実施の形態において第一の実施の形態と構成については、その説明を省略する。
【０２２９】
第一の実施の形態では、ＰＤＬモード、Deviceイメージモード、RGB24BPPイメージモード全てが揃った場合についてであったが、何かがかけた場合でも、スプールしてチェックすることによって最も高速で最も正確な出力可能なモードに切り替えるものであってもよい。
【０２３０】
（その他の実施の形態）
なお、本発明は、複数の機器(例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど)から構成されるシステムに適用しても、１つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用しても良い。
【０２３１】
また、本発明の目的は、前述した実施形態の機能を実現するプリンタドライバと呼ばれるソフトウエアプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。
【０２３２】
この場合、記憶媒体から読み出されたプログラムコード事態が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０２３３】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピーディスク、ハードディスク、光ディスク、光磁気ディスク、CD-ROM,CD-R,磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。
【０２３４】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２３５】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることはいうまでもない。
【０２３６】
本発明を記憶媒体に適応する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードを格納することになる。
【０２３７】
以上説明したように、本発明の実施の形態によれば、プリンタドライバがＯＳから渡される印刷データを最低１ページ分保持する機構を持ち、保持する際に、印刷データのチェックを行い、そのページまたはバンドはどのモードで処理するのが最適かを判断し、決定したモードでページまたはバンド単位で処理し、高速に正確な描画処理を行うことを可能とする。
【０２３８】
また、複数のモードで１頁を出力する際、選択されたモードで処理できる最大のバンド高さで処理を行うことにより、効率的に出力処理を行うことができる。
【０２３９】
【発明の効果】
以上説明したように本発明によれば、印刷データに応じて最適な変換手段を選択することにより高速に印刷を行うことができる。
【０２４０】
また、本発明によれば、Ｎ−ｕｐ指定時でも、論理ページ単位で変換手段を選択するので高速に印刷を行うことを可能とする。
【図面の簡単な説明】
【図１】本発明の実施の形態が適用可能なレーザビームカラープリンタの構造を示す側断面図である。
【図２】従来の描画方法を示す概念図である。
【図３】本発明の実施の形態である印刷システム全体の基本構成を示すブロック図である。
【図４】各モードの特徴を示す図である。
【図５】本発明のスプール時の各オブジェクトのチェック方法の流れを示すフローチャートを示す図である。
【図６】本発明のスプール時のページの全オブジェクトチェック終了後の処理の流れを示すフローチャートを示す図である。
【図７】本発明のデスプール時のバンドリストの作り方を示す模式図である。
【図８】本発明のデスプール時のバンドリストの作り方の流れを示すフローチャートを示す図である。
【図９】ＰＤＦの構造を示す図である。
【図１０】ＰＣＦの構造を示す図である。
【図１１】スプール時にチェックした結果を保持する仮想バンドについて説明する模式図。
【図１２】イメージモード系処理とＰＤＬモード系処理の処理時間の特徴を示す模式図。
【図１３】本発明の物理ページ単位で見た、処理モード決定の流れを示すフローチャート。
【図１４】本発明の論理ページ単位で見た、処理モード決定の流れを示すフローチャート。
【図１５】ＰＣＦの構造を示す模式図。
【図１６】本発明の理想的な実施例の模式図。
【図１７】Ｎ−ｕｐ時のデスプール処理を示す図である。
【図１８】Ｎ−ｕｐ処理時の印刷命令生成処理を説明する図である。
【図１９】グラフィックモード選択画面を示す図である。
【図２０】グラフィックモード選択処理を示す図である。
【符号の説明】
１００  印刷装置（ＬＢＰ）
１１０  フォーマッタ制御部
１１１  インタフェース
１１２１  受信バッファ
１１２２  送信バッファ
１１３  ＰＤＬ解析部
１１４  印刷制御処理実行部
１１５  描画処理実行部（レンダラ）
１１６  ページメモリ
１２０  オペレーション・パネル
１３０  出力制御部
１３１  レーザドライバ
１４０  プリンタエンジン部
１４１  半導体レーザ
１４２  レーザ光
１４３  ポリゴンミラー
１４４  静電ドラム
１４５  現像ユニット
１４６  給紙カセット
１４７  給紙ローラ
１４８  搬送ローラ
１４９  搬送ローラ
２００  ホスト・コンピュータ
２０１  アプリケーション・ソフト
２０２  グラフィック・サブ・システム
２０２１  ＧＤＩ
２０２２  プリンタ・ドライバ
２０２３  ＰＤＬトランスレータ
２０２４  モノクロ１ＢＰＰイメージモード
２０２５  ＹＭＣＫ４ＢＰＰイメージモード
２０２６  ＲＧＢ２４ＢＰＰイメージモード
２０２７  イメージモード用バンドメモリ領域
２０２８  ＧＤＩ
２０２９  インターフェース
２１０  キーボード
２１１  マウス
２２０  ディスプレイ・モニタ
３００  ホスト・コンピュータ
３０１  アプリケーション・ソフト
３０２  グラフィック・サブ・システム
３０２１  ＧＤＩ
３０２２  プリンタ・ドライバ
３０２３  プレチェックシステム
３０３  スプールサブシステム
３０３１  ＰＤＦ（プリントデータファイル）
３０３２  ＰＣＦ（プレチェックファイル）
３０３３  デスプーラー
３０３４  ＰＤＬトランスレータ
３０３５  モノクロ１ＢＰＰイメージモード
３０３６  ＹＭＣＫ４ＢＰＰイメージモード
３０３７  ＲＧＢ２４ＢＰＰイメージモード
３０３８  イメージモード用バンドメモリ領域
３０３９  インターフェース
２１０  キーボード
２１１  マウス
２２０  ディスプレイ・モニタ
９００  ＰＤＦ（ページデータファイル）の構造を示す模式図
９０１  ｐａｇｅＩＤ（ページを特定する番号）
９０２  ＰａｇｅＩｎｆｏ（ページサイズ、設定モードといった描画処理に必要な設定）
９０３  描画関数指定データ（ＤｒｖＣｏｐｙＢｉｔｓを指定）
９０４  ｄａｔａＳｉｚｅ（本描画データに掛かっているスプールサイズ）
９０５  ｓｏＤｅｓｔ（ｐｓｏＤｅｓｔから獲得した情報）
９０６  ｓｏＳｒｃ（ｐｓｏＳｒｃから獲得した情報）
９０７  ソースイメージデータ（ｐｓｏＳｒｃが示すソースイメージデータ本体）
９０８  ｃｏ（ｐｃｏが示すクリップ情報）
９０９  クリップデータ（クリップ処理に必要なデータ）
９１０  ｘｌｏ（ｐｘｌｏが示す色変換情報）
９１１  ｒｃｌＤｅｓｔ（ｐｒｃｌＤｅｓｔが示す描画先矩形位置情報）
９１２  ｐｔｌＳｒｃ（ソースデータの位置を示す情報）
９１３  描画関数指定データ（ＤｒｖＴｅｘｔＯｕｔを指定）
１０００  ＰＣＦ（プレチェックファイル）の構造を示す模式図
１００１  ｐａｇｅＩＤ（ページを特定する番号）
１００２  ｄａｔａＳｉｚｅ（本ページのＰＣＦのサイズ）
１００３  ｓｅｔＣｏｌＭｏｄｅ（本ページの指定されたカラーモード）
１００４  ｄｅｓｉＣｏｌＭｏｄｅ（本ページの決定カラーモード）
１００５  ｄｅｓｉＭｏｄｅ（本ページのモード）
１００６  ＰＤＬＤａｔａＳｉｚｅ（ＰＤＬデータで送った場合のプリンタ内部のデータサイズ予測値）
１００７  ＩｍａｇｅＤａｔａＳｉｚｅ（イメージモードで送った場合のデータサイズ）
１００８  ｂａｎｄＣｎｔ（チェック用バンドの数）
１００９  チェック用バンドの情報構造体
１００９１  ｂａｎｄＮｏ（バンドナンバー）
１００９２  ｄｅｓｉＭｏｄｅ（決定した処理モード）
１００９３  ｒｅｎｄＴｉｍｅ（本バンドをＰＤＬモードで処理した場合の処理時間予測値）
１００９４  ＢａｎｄＲｅｃｔＬ（本バンドの領域）
１００９５  ＢａｎｄＲｅｎｄＲｅｃｔＬ（本バンドの描画領域の際外郭矩形）
１００９６  ＰＤＬＤａｔａＳｉｚｅ（ＰＤＬモードで処理した場合の本バンド描画に掛かるデータ数）
１００９７  ｏｂｊｆｌｇ（描画オブジェクトが一つでもあればフラグを立てる）
１００９８  ｃｏｌｆｌｇ（描画データに有彩色が含まれる時はフラグを立てる）
【図１】
0004235347.tif 000004
【図２】
0004235347.tif 000005
【図３】
0004235347.tif 000006
【図４】
0004235347.tif 000007
【図５】
0004235347.tif 000008
【図６】
0004235347.tif 000009
【図７】
0004235347.tif 000010
【図８】
0004235347.tif 000011
【図９】
0004235347.tif 000012
【図１０】
0004235347.tif 000013
【図１１】
0004235347.tif 000014
【図１２】
0004235347.tif 000015
【図１３】
0004235347.tif 000016
【図１４】
0004235347.tif 000017
【図１５】
0004235347.tif 000018
【図１６】
0004235347.tif 000019
【図１７】
0004235347.tif 000020
【図１８】
0004235347.tif 000021
【図１９】
0004235347.tif 000022
【図２０】
0004235347.tif 000023