(57)【要約】【課題】ホスト装置とプリンタからなる印刷システムであって、プリンタ側でメモリ不足が発生した場合の利便性を向上させることのできる印刷システム等を提供する。【解決手段】印刷データからビットマップデータを生成して所定範囲毎に印刷を行うプリンタであって、印刷データがプリンタ制御言語である場合は、印刷データから中間コードを生成してそれからビットマップデータを生成し、印刷データが中間コードである場合は、中間コードからビットマップデータを生成するプリンタと、印刷データをプリンタに送信するホスト装置を備える印刷システムにおいて、プリンタは、プリンタ制御言語である印刷データを受信した場合に、中間コードの生成中にメモリ不足が発生した際には、その旨をホスト装置に通知し、ホスト装置は、当該通知を受けてメモリ不足が発生した所定範囲の中間コードを生成してプリンタに送信する。【選択図】  図３
2009230558.tif 000002
【特許請求の範囲】
【請求項１】
受信した印刷データからビットマップデータを生成して所定範囲毎に印刷を行うプリンタであって、前記印刷データがプリンタ制御言語で表現されたものである場合には、当該印刷データから中間コードを生成して当該中間コードから前記ビットマップデータを生成し、前記印刷データが前記中間コードで表現されたものである場合には、当該中間コードから前記ビットマップデータを生成するプリンタと、前記印刷データを前記プリンタに送信して印刷要求を行うホスト装置と、を備える印刷システムにおいて、
前記プリンタは、前記プリンタ制御言語で表現された印刷データを受信した場合に、前記中間コードの生成中にメモリ不足が発生した際には、当該メモリ不足が発生した旨を前記ホスト装置に通知し、
前記ホスト装置は、当該通知を受けて、前記メモリ不足が発生した前記所定範囲について前記中間コードを生成し、当該生成した中間コードを前記印刷データとして前記プリンタに送信する
ことを特徴とする印刷システム。
【請求項２】
請求項１において、
前記プリンタにおけるメモリ不足が発生した際は、
前記中間コードの生成中に一旦メモリ不足が発生した以降、処理対象の前記所定範囲について既に生成されている中間コードの小容量化を含む前記中間コードの生成処理を継続し、当該小容量化を含む処理にもかかわらずメモリ不足となった際である
ことを特徴とする印刷システム。
【請求項３】
請求項１あるいは請求項２において、
前記ホスト装置は、前記通知を受けて生成した中間コードに対して小容量化の処理を行った後に前記プリンタに送信する
ことを特徴とする印刷システム。
【請求項４】
請求項１乃至請求項３のいずれかにおいて、更に、
前記プリンタは、前記ホスト装置で生成されて送信された中間コードを受信した場合に、当該中間コードを格納することができずにメモリ不足が発生した際には、当該メモリ不足が発生した旨を前記ホスト装置に通知し、
前記ホスト装置は、当該通知を受けて、前記メモリ不足が発生した前記所定範囲について印刷対象画像の簡略化処理を実行した後に前記中間コードを生成し、当該生成した中間コードを前記印刷データとして前記プリンタに送信する
ことを特徴とする印刷システム。
【請求項５】
請求項４において、
前記簡略化処理は、前記印刷対象画像の画像オブジェクトの種別によって処理内容が異なる
ことを特徴とする印刷システム。
【請求項６】
ホスト装置から受信した印刷データによりビットマップデータを生成して所定範囲毎に印刷を行うプリンタであって、前記印刷データがプリンタ制御言語で表現されたものである場合には、当該印刷データから中間コードを生成して当該中間コードから前記ビットマップデータを生成し、前記印刷データが前記中間コードで表現されたものである場合には、当該中間コードから前記ビットマップデータを生成するプリンタにおいて、
前記プリンタ制御言語で表現された印刷データを受信した場合に、前記中間コードの生成中にメモリ不足が発生した際には、当該メモリ不足が発生した旨を前記ホスト装置に通知し、
当該通知により、前記ホスト装置が生成した、前記メモリ不足が発生した前記所定範囲の前記中間コードを受信し、当該受信した中間コードに基づいて印刷を行う
ことを特徴とするプリンタ。
【請求項７】
受信した印刷データからビットマップデータを生成して所定範囲毎に印刷を行うプリンタであって、前記印刷データがプリンタ制御言語で表現されたものである場合には、当該印刷データから中間コードを生成して当該中間コードから前記ビットマップデータを生成し、前記印刷データが前記中間コードで表現されたものである場合には、当該中間コードから前記ビットマップデータを生成するプリンタ、に対して印刷要求を行うホスト装置に、前記印刷データの生成と送信を実行させるドライバプログラムであって、
前記プリンタが前記プリンタ制御言語で表現された印刷データを受信し、前記プリンタによる前記中間コードの生成中にメモリ不足が発生した場合に、
当該メモリ不足が発生した旨の通知を前記プリンタから受けて、前記メモリ不足が発生した前記所定範囲について前記中間コードを生成し、当該生成した中間コードを前記印刷データとして前記プリンタに送信する、処理を前記ホスト装置に実行させる
ことを特徴とするドライバプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷要求を行うホスト装置と当該要求に応じて印刷処理を行うプリンタとからなる印刷システム等に関し、特に、プリンタ側でメモリ不足が発生した場合の利便性を向上させることのできる印刷システム等に関する。
【背景技術】
【０００２】
印刷要求を行うホスト装置と当該要求に応じて印刷処理を行うプリンタとからなる印刷システムにおいては、ホスト装置からその印刷要求に係る印刷データがプリンタ側に送信されて、その印刷データに基づいて印刷処理がなされる。この場合、送信される印刷データのレベルにはいくつかのものがあり、例えば、プリンタ制御言語であるＰＤＬ（ページ記述言語）で表現されてプリンタ側へ送信されることが行われる。この場合には、ＰＤＬを受け取ったプリンタが、その情報を、その後の処理がしやすい中間コードという描画コードの形式に変換し、その後に、中間コードから画素毎の画像データであるビットマップデータを生成する。また、ホスト装置側で上記中間コードまで生成してそれを印刷データとしてプリンタへ送信する場合もある。さらに、ホスト装置側で上記ビットマップデータまで生成してそれを印刷データとしてプリンタへ送信する場合もある。
【０００３】
また、下記特許文献１では、プリンタへ出力するデータ形式を自動的に選択することが提案されている。当該文献に記載されたシステムでは、ホスト装置及びプリンタの装置仕様などからどの形式で出力するかを評価し、その結果に基づいて出力するデータ形式を選択することが行われる。
【特許文献１】特開平１０−４００３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述のような印刷システムにおいては、近年、印刷対象画像のデータ量が増加傾向にあり、プリンタ側で中間コード作成時にメモリ不足が発生する可能性が高まりつつある。
【０００５】
このようにプリンタ側で中間コードを作成している際にメモリ不足が発生すると、上述のような従来の装置では、エラーとなってそのページの処理が中止される。そして、かかる事態が発生した場合には、ユーザが当該ページの解像度を下げるなどデータ量を小さくする処理を施した後、再度、当該ページについての印刷をやり直すという手順が必要となり、従来装置においては、利便性に課題があった。また、この場合、データ量を小さくする処理が施されているため、出力品質を落としてしまう結果になった。
【０００６】
そこで、本発明の目的は、印刷要求を行うホスト装置と当該要求に応じて印刷処理を行うプリンタとからなる印刷システムであって、プリンタ側でメモリ不足が発生した場合の利便性を向上させることのできる印刷システム、等を提供することである。
【課題を解決するための手段】
【０００７】
上記の目的を達成するために、本発明の一つの側面は、受信した印刷データからビットマップデータを生成して所定範囲毎に印刷を行うプリンタであって、前記印刷データがプリンタ制御言語で表現されたものである場合には、当該印刷データから中間コードを生成して当該中間コードから前記ビットマップデータを生成し、前記印刷データが前記中間コードで表現されたものである場合には、当該中間コードから前記ビットマップデータを生成するプリンタと、前記印刷データを前記プリンタに送信して印刷要求を行うホスト装置と、を備える印刷システムにおいて、前記プリンタは、前記プリンタ制御言語で表現された印刷データを受信した場合に、前記中間コードの生成中にメモリ不足が発生した際には、当該メモリ不足が発生した旨を前記ホスト装置に通知し、前記ホスト装置は、当該通知を受けて、前記メモリ不足が発生した前記所定範囲について前記中間コードを生成し、当該生成した中間コードを前記印刷データとして前記プリンタに送信する、ことである。
【０００８】
更に、上記の発明において、好ましい態様は、前記プリンタにおけるメモリ不足が発生した際は、前記中間コードの生成中に一旦メモリ不足が発生した以降、処理対象の前記所定範囲について既に生成されている中間コードの小容量化を含む前記中間コードの生成処理を継続し、当該小容量化を含む処理にもかかわらずメモリ不足となった際である、ことを特徴とする。
【０００９】
更に、上記の発明において、好ましい態様は、前記ホスト装置は、前記通知を受けて生成した中間コードに対して小容量化の処理を行った後に前記プリンタに送信する、ことを特徴とする。
【００１０】
更にまた、上記の発明において、一つの態様は、更に、前記プリンタは、前記ホスト装置で生成されて送信された中間コードを受信した場合に、当該中間コードを格納することができずにメモリ不足が発生した際には、当該メモリ不足が発生した旨を前記ホスト装置に通知し、前記ホスト装置は、当該通知を受けて、前記メモリ不足が発生した前記所定範囲について印刷対象画像の簡略化処理を実行した後に前記中間コードを生成し、当該生成した中間コードを前記印刷データとして前記プリンタに送信する、ことを特徴とする。
【００１１】
更に、上記の発明において、好ましい態様は、前記簡略化処理は、前記印刷対象画像の画像オブジェクトの種別によって処理内容が異なる、ことを特徴とする。
【００１２】
上記の目的を達成するために、本発明の別の側面は、ホスト装置から受信した印刷データによりビットマップデータを生成して所定範囲毎に印刷を行うプリンタであって、前記印刷データがプリンタ制御言語で表現されたものである場合には、当該印刷データから中間コードを生成して当該中間コードから前記ビットマップデータを生成し、前記印刷データが前記中間コードで表現されたものである場合には、当該中間コードから前記ビットマップデータを生成するプリンタにおいて、前記プリンタ制御言語で表現された印刷データを受信した場合に、前記中間コードの生成中にメモリ不足が発生した際には、当該メモリ不足が発生した旨を前記ホスト装置に通知し、当該通知により、前記ホスト装置が生成した、前記メモリ不足が発生した前記所定範囲の前記中間コードを受信し、当該受信した中間コードに基づいて印刷を行う、ことである。
【００１３】
上記の目的を達成するために、本発明の更に別の側面は、受信した印刷データからビットマップデータを生成して所定範囲毎に印刷を行うプリンタであって、前記印刷データがプリンタ制御言語で表現されたものである場合には、当該印刷データから中間コードを生成して当該中間コードから前記ビットマップデータを生成し、前記印刷データが前記中間コードで表現されたものである場合には、当該中間コードから前記ビットマップデータを生成するプリンタ、に対して印刷要求を行うホスト装置に、前記印刷データの生成と送信を実行させるドライバプログラムが、前記プリンタが前記プリンタ制御言語で表現された印刷データを受信し、前記プリンタによる前記中間コードの生成中にメモリ不足が発生した場合に、当該メモリ不足が発生した旨の通知を前記プリンタから受けて、前記メモリ不足が発生した前記所定範囲について前記中間コードを生成し、当該生成した中間コードを前記印刷データとして前記プリンタに送信する、処理を前記ホスト装置に実行させる、ことである。
【００１４】
本発明の更なる目的及び、特徴は、以下に説明する発明の実施の形態から明らかになる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して本発明の実施の形態例を説明する。しかしながら、かかる実施の形態例が、本発明の技術的範囲を限定するものではない。なお、図において、同一又は類似のものには同一の参照番号又は参照記号を付して説明する。
【００１６】
図１は、本発明を適用した印刷システムの実施の形態例に係る構成図である。図１に示す印刷システム３が本発明を適用した印刷システムであり、印刷要求を行うホスト装置であるホストコンピュータ１と印刷処理を実行するプリンタ２とから構成される。本印刷システムは、ホストコンピュータ１が印刷要求時に送信する印刷データを前述したＰＤＬで送信するモード（プリンタページモードと呼ぶ）と、ホストコンピュータ１が当該印刷データを前述した中間コードで送信するモード（ドライバページモードと呼ぶ）で動作可能であり、プリンタページモードで動作中のプリンタ２における中間コードの生成時にメモリ不足が発生した場合に、モードをドライバページモードに切り換えてメモリ不足となったページの中間コードをホストコンピュータ１側で生成して再送させ、このような事態になった場合の利便性を向上させようとするものである。
【００１７】
図１に示すホストコンピュータ１は、前述の通り、プリンタ２に対して印刷要求を行なうホスト装置であり、ユーザ操作等に基づいて印刷データを生成してプリンタ２に送信する。なお、ホストコンピュータ１は、所謂パーソナルコンピュータなどで構成することができる。
【００１８】
ホストコンピュータ１内のプリンタドライバ１１は、プリンタ２用のドライバであり、ホストコンピュータ１内のアプリケーション（図示せず）などからのデータを受け取って、プリンタ２に送信する上記印刷データを生成する部分である。上述のように、本印刷システムにはプリンタページモードとドライバページモードがあり、プリンタドライバ１１は、プリンタページモードで動作する場合には、上記印刷データをＰＤＬ形式で生成し、ドライバページモードで動作する場合には、中間コードで生成する。なお、印刷ジョブ毎にどちらのモードで動作させるかは、装置仕様などからドライバが自動的に決定してもよいし、ユーザが設定してもよい。
【００１９】
図２は、印刷対象画像の各データについて説明するための図である。図２には、１ページ分の印刷対象画像を例示しており、画像には、イメージの画像オブジェクトａ、グラフィクスの画像オブジェクトｂ、テキストの画像オブジェクトｃなどが含まれる。これらの画像オブジェクトについての情報は、印刷要求元のアプリケーションから所定形式のデータでプリンタドライバ１１に渡される。その後、プリンタページモードの場合、プリンタドライバ１１が当該データに基づいて前記ＰＤＬによる印刷データを生成するが、この印刷データでは、上記各画像オブジェクト毎に描画コードの形で情報が表される。
【００２０】
前述した中間コード以降の処理においては、１ページの情報（データ）は、バンドと呼ばれる分割領域毎に処理が行われる。従って、ドライバページモードの場合にプリンタドライバ１１が上記データに基づいて生成する中間コード、及び、プリンタページモードの場合にプリンタ２が上記ＰＤＬに基づいて生成する中間コードは、バンド毎に分割された、画像オブジェクト毎の描画コードとなっている。ここで、バンドとは、図２に示すように、１ページを副走査方向（用紙の搬送方向）に分割した各分割領域であり、図２に示す例においては、１ページがｎバンドに分割されている（バンド（１）からバンド（ｎ））。
【００２１】
図２に示す画像オブジェクトａの場合、３つのバンド（バンド（ｋ−１）、バンド（ｋ）、及びバンド（ｋ＋１））に跨っているため、当該画像オブジェクトａの場合には、これら３つのバンドに分割されてそれぞれ中間コードが生成される。他の画像オブジェクトｂ、ｃについても同様に、それぞれ、２つのバンドに分割されてそれぞれ中間コードが生成される。また、各バンドでは、各画像オブジェクトのそのバンド内に含まれる部分について中間コードが生成される。従って、例えば、バンド（ｋ）においては、画像オブジェクトａのこのバンドに含まれる中間の部分、画像オブジェクトｂの上側の部分、及び、画像オブジェクトｃの下側の部分に描画コードが生成される。
【００２２】
また、画像オブジェクトａのように画像オブジェクトの種別がイメージである場合には、そのバンド内に描画されるべきイメージデータを後述する中間コードバッファ２６２の所定箇所に格納し、中間コード自体には、そのイメージ（ソースイメージと呼ぶ）が格納されるアドレスをポインタ情報として持つようにする。また、画像オブジェクトｂのように画像オブジェクトの種別がグラフィクスである場合にも、同じ塗りつぶしパターンで表現される場合などには、そのパターンデータを中間コードバッファ２６２の所定箇所に格納し、中間コード自体には、そのパターンデータ（ソースパターンと呼ぶ）が格納されるアドレスをポインタ情報として持つようにする。
【００２３】
なお、上記プリンタドライバ１１は、上記機能に関する処理を指示するプログラムと当該プログラムに従って処理を実行するホストコンピュータ１の制御装置（図示せず）等によって構成される。
【００２４】
次に、プリンタ２は、図１に示すように、コントローラ２１及び印刷実行部２２などで構成される、例えば、４サイクルのカラーレーザプリンタである。
【００２５】
コントローラ２１は、前記ホストコンピュータ１から送信される印刷データを受信し、当該データに含まれる制御内容を解釈すると共に、当該データに含まれる画像データに対して所定の処理を施して印刷実行部２２側へ提供するデータを生成する。コントローラ２１には、図１に示すように、Ｉ／Ｆ２３、ＣＰＵ２４、ＲＯＭ２５、ＲＡＭ２６、エンジンＩ／Ｆ２７等が備えられる。
【００２６】
Ｉ／Ｆ２３は、ホストコンピュータ１から送信される前記印刷データを受信する部分である。ＲＯＭ２５は、プリンタ２を制御するための各種プログラムを記憶する部分である。
【００２７】
ＲＡＭ２６は、コントローラ２１の処理過程で一時的にデータ等を保持するメモリであり、前記ホストコンピュータ１から送信される印刷データを格納する受信バッファ２６１、中間コードを格納する中間コードバッファ２６２の領域が当該ＲＡＭ２６内に確保される。中間コードバッファ２６２は、生成した中間コードを格納すると共に中間コードを生成するために必要なデータを一時的に保持する領域であり、この中間コードバッファ２６２の領域が十分に確保できない場合にメモリ不足が発生し、中間コードの生成が不可能となる。
【００２８】
ＣＰＵ２４は、本プリンタ２において行われる各種処理を制御する部分であるが、特に、前記受信した印刷データをＲＡＭ２６に格納する処理、前記印刷データの制御内容を解釈して印刷実行部２２に対して適切な印刷処理を指示する処理、及び、ユーザとのインターフェースを形成する操作ユニットを制御する処理等を司る。本プリンタ２では、ＣＰＵ２４が行なう、中間コードの生成処理等に特徴があり、その具体的な内容については後述する。なお、ＣＰＵ２４が実行する処理は、主に前記ＲＯＭ２５に記憶されたプログラムに従って行われるものである。
【００２９】
次に、エンジンＩ／Ｆ２７は、印刷実行部２２で印刷を実行する際に、所定のタイミングで前述したＲＡＭ２６の中間コードバッファ２６２に格納されている中間コードを読み出し、それらに所定の処理を施した後に印刷実行部２２に引き渡す、コントローラ２１と印刷実行部２２とのインターフェースを司る部分である。具体的には、読み出した中間コードを展開してビットマップデータに変換する処理、スクリーン処理、パルス幅変調処理などを印刷実行部２２の動作に同期して実行し、処理後の信号を印刷実行部２２へ送信する。
【００３０】
次に、印刷実行部２２は、図示していないが、帯電ユニット、露光ユニット、現像ユニット、転写ユニット、定着ユニット等で構成される。当該印刷実行部２２では、前記エンジンＩ／Ｆ２７から受信する信号に基づき、ＣＰＵ２４からの印刷指示に従った印刷処理を実行し、所定の印刷媒体に印刷要求に従った画像が形成される。
【００３１】
以上説明したような構成を有する本実施の形態例に係る印刷システム３では、プリンタページモードで動作している際の処理に特徴があり、以下、その処理内容について説明する。図３は、プリンタページモードで処理が開始されたページについての処理手順を例示したフローチャートである。図３に基づいて、印刷ジョブの１ページ分の処理について以下に説明する。
【００３２】
まず、ホストコンピュータ１で印刷要求がなされると、前述の通り、プリンタドライバ１１がプリンタ２用の印刷データを生成する。ここでは、プリンタページモードで動作が行われるので、印刷データはＰＤＬ形式で生成され（ステップＳ１）、当該データがプリンタ２に受信される（ステップＳ２）。受信されたＰＤＬデータは、前述した受信バッファ２６１に格納される。
【００３３】
その後、ＣＰＵ２４によって当該ＰＤＬデータから前述した中間コードを生成する処理が開始される（ステップＳ３）。当該中間コードの生成処理では、ＰＤＬデータが一つずつ読み出されて解釈され、そのデータが画像オブジェクトに係るものであれば、それを描画するための中間コードが生成される。前述のように、中間コードは画像をバンド毎に分割して生成するので、そのＰＤＬデータが表す画像オブジェクトが複数のバンドに跨って存在する場合には、複数のバンドについて当該画像オブジェクトの中間コードが生成され、中間コードバッファ２６２の各バンドの格納箇所へ登録されていく。また、前述のように、画像オブジェクトの種別により、ソースイメージ、ソースパターンも格納される。
【００３４】
かかる中間コードの作成処理においては、中間コードを生成するための元のＰＤＬデータを展開して当該処理を行うためのワーキング領域及び生成した中間コードを登録する領域が、中間コードバッファ２６２としてＲＡＭ２６内に確保される必要がある。そして、イメージの画像オブジェクトを表すＰＤＬデータなど、生成後の中間コードよりもワーキング領域の方がはるかに大きな領域を必要とする場合もある。例えば、ＰＤＬデータとして添付されるイメージの画像解像度が印刷に用いる解像度よりも高い場合や、当該添付されるイメージの一部のみを印刷に用いる場合などである。
【００３５】
従って、中間コード生成処理の過程で中間コードバッファ２６２として必要なメモリ容量を確保できなくなる事態も生じうる。かかるメモリ不足の事態が発生することなく、当該ページについての全中間コードが生成されれば（ステップＳ４のＹｅｓ）、通常の通り、処理が次の工程（ステップＳ１５）に移行する。
【００３６】
一方、中間コード生成処理の過程で上記メモリ不足の事態が発生した場合には（ステップＳ４のＮｏ）、ＣＰＵ２４は、すでに生成した中間コードの小容量化を試みて中間コードの生成処理を続ける。この小容量化では、すでに生成した中間コードに前述したソースイメージ、ソースパターンがある場合にはそれらのデータを圧縮する処理や、生成した中間コードについて前述したエンジンＩ／Ｆ２７で行う展開処理を前もって行い、その展開後のビットマップデータを圧縮する処理、等を行って、その時点で最も容量が小さくなる状態とする。
【００３７】
当該小容量化の処理後、順次、ＰＤＬデータの中間コード化を進め、再度メモリ不足が発生した場合には同様の小容量化を行って処理を継続し、当該ページについて全中間コードが生成されれば（ステップＳ５のＹｅｓ）、処理が次の工程（ステップＳ１５）に移行する。
【００３８】
一方、上記小容量化を含む中間コードの生成処理でもいずれかの段階でメモリ不足が解消せず当該ページについて全中間コードが生成できなければ（ステップＳ５のＮｏ）、ＣＰＵ２４は、その旨をプリンタドライバ１１に通知する（ステップＳ６）。すなわち、メモリ不足が発生し当該ページについて印刷ができない旨を知らせる。
【００３９】
なお、上記小容量化の処理を行わずにメモリ不足が発生した時点（ステップＳ４のＮｏの時点）で当該通知を行うようにしてもよい。
【００４０】
当該通知を受信したプリンタドライバ１１は、モードをドライバページモードに切り換える（ステップＳ７）。
【００４１】
その後、プリンタドライバ１１は、ドライバページモードであるので、当該ページについて中間コードを生成してそれを印刷データとしてプリンタ２へ再送する（ステップＳ８）。この際に、生成した中間コードについて上述と同様の小容量化処理を実行し、最も容量の小さい状態でプリンタ２へ送信する。具体的には、生成された中間コードについてバンド毎に、ソースイメージ及びソースパターンの圧縮、または、展開（ビットマップデータ化）及び圧縮処理を行い、バンド毎に容量が最小となる形式とする。なお、展開及び圧縮処理を行ったバンドについては、圧縮後のビットマップイメージとそれを指し示すポインタで中間コードが生成される。このことは上記ステップＳ５において小容量化を行った場合についても同様である。
【００４２】
送信された当該ページの中間コードはプリンタ２で受信され（ステップＳ９）、中間コードバッファ２６２への格納が試みられる。この際、ステップＳ５の時点で生成されていた中間コードは廃棄されている。そして、メモリ不足が発生せずに、当該中間コードが格納されれば（ステップＳ１０のＮｏ）、処理がステップＳ１５に移行する。
【００４３】
一方、メモリ不足が発生し、当該中間コードを格納できなければ（ステップＳ１０のＹｅｓ）、ＣＰＵ２４はその旨をプリンタドライバ１１に通知する（ステップＳ１１）。なお、今回受信された印刷データはすでに生成された中間コードであり、それを生成するために必要な前記ワーキング領域を必要としないのでメモリ不足になる危険性は前記プリンタ２側で中間コードを生成した場合よりも少ないが、印刷対象画像によっては中間コード自体が大きいサイズとなる場合もあり得る。
【００４４】
上記通知を受け取ったプリンタドライバ１１は、当該ページに印刷すべき画像の簡略化を行い、その後、簡略化された画像について中間コードの作成及びステップＳ８の場合と同様の小容量化処理を行って、処理後の中間コードを印刷データとしてプリンタ２に送信する（ステップＳ１２）。
【００４５】
この画像の簡略化では、種々の方法を用いることができる。例えば、カラーの画像をグレースケールの画像に変更する（色を破棄する）方法、色の解像度を下げる（各色の濃度階調数を少なくする）方法、画像解像度を下げる方法、また、これらの組み合わせなどを用いることができる。また、画像オブジェクトの種別毎に異なる簡略化手法を用いてもよい。例えば、イメージについては画像解像度を落とし、グラフィクスについては輪郭線のみとし、テキストについては簡略化を行わない、とすることができる。このようにすることにより、簡略化することによる画像品質の劣化を小さく抑えることできる。
【００４６】
送信された中間コードは再度プリンタ２で受信され（ステップＳ１３）、中間コードバッファ２６２への格納が試みられる。この際、ステップＳ９の時点で受信されていた中間コードは廃棄されている。そして、メモリ不足が発生せずに、当該中間コードが格納されれば（ステップＳ１４のＮｏ）、処理がステップＳ１５に移行する。
【００４７】
一方、メモリ不足が発生し、当該中間コードを格納できなければ（ステップＳ１４のＹｅｓ）、ＣＰＵ２４は、エラーメッセージをプリンタ２の表示ユニット（図示せず）及び又はホストコンピュータ１の表示装置（図示せず）に表示して（ステップＳ１７）、当該ページについての処理を終了する。すなわち、当該ページについての印刷を断念する。
【００４８】
一方、ステップＳ１５に移行した場合には、当該ページの中間コードが中間コードバッファ２６２に揃っているので、所定のタイミングで前述したエンジンＩ／Ｆ２７の処理が開始されて、処理後の信号が印刷実行部２２へ出力される。その後、当該信号に基づいて印刷実行部２２での印刷処理が実行され、印刷後の用紙がプリンタ２から排出される（ステップＳ１６）。
【００４９】
このようにして、当該ページについての処理が終了する。
【００５０】
なお、上記説明では、ステップＳ８で生成された中間コードについてメモリ不足となった場合に、画像の簡略化を行って中間コードの容量を小さくしたが、この簡略化を行わずに、ステップＳ８で生成された中間コードについてメモリ不足となった時点で当該ページの印刷を断念するようにしてもよい。画像の簡略化は出力品質の劣化を招くので、このようにすることにより品質を確保することができる。また、この画像の簡略化を伴う処理までを行うか否かをユーザが設定できるようにしてもよい。
【００５１】
また、上述のように、画像の簡略化には複数の手法があるため、画像劣化の度合いが小さい順などに簡略化処理を複数レベルにし、プリンタ２側でメモリ不足が解消されるまで、そのレベル毎に、順次、簡略化処理、中間コードの生成及び送信を繰り返し行うようにしてもよい。
【００５２】
以上説明したように、本実施の形態例に係る印刷システム３では、プリンタページモードで処理が開始されたページいついて、プリンタ２側での中間コードの生成中にメモリ不足が発生した場合には、ドライバページモードに自動的に切り換えられてホストコンピュータ１側で当該ページについての中間コードが生成されてプリンタ２へ送信される。通常、ホストコンピュータ１にはプリンタ２に比して大きな容量のメモリを有しているので、プリンタ２側でメモリ不足となったページについてもホストコンピュータ１側で中間コードが生成できる。これにより、プリンタ２側で当該ページについて中間コードを生成するためのワーキング領域が必要なくなるので、当該ページについてメモリ不足となる危険性が少なくなって正常に印刷ができる可能性が高くなる。従って、メモリ不足となったときにそのページの印刷を中止することなく完了できる機会が増え、ユーザ利便性を向上させることができる。
【００５３】
また、プリンタ２側での中間コードの生成中にメモリ不足が発生した場合に、上述したような小容量化の処理が試みられる。これにより、メモリ不足が解消される場合もあり、よって、そのページの印刷を中止することなく完了できる機会が増え、ユーザ利便性を向上させることができる。
【００５４】
また、上記ドライバページモードに切り換えられた際にも、中間コードの生成後上述した小容量化の処理が実行され、さらに、当該ページについて正常に印刷ができる可能性が高くなり、ユーザ利便性を向上させることができる。
【００５５】
また、上記ドライバページモードに切り換えられた場合にもプリンタ２側でメモリ不足となる場合に、上述した画像の簡略化が行われる。これにより、画像の劣化は伴うものの、印刷処理を止めずに、そのページについての印刷を完了できる。
【００５６】
さらに、その画像の簡略化では、前述したように画像オブジェクトの種別によって異なる手法が用いられ、簡略化による画像劣化を小さく抑えることができる。
【００５７】
なお、上記実施の形態例では、中間コード生成後の展開処理からを印刷実行部２２の動作に同期した処理で行う構成であったが、事前に展開処理まで行ってその後のビットマップデータを保持しておき、その後の処理を印刷実行部２２の動作に同期した処理として行う構成としてもよい。
【００５８】
本発明の保護範囲は、上記の実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【図面の簡単な説明】
【００５９】
【図１】本発明を適用した印刷システムの実施の形態例に係る構成図である。
【図２】印刷対象画像の各データについて説明するための図である。
【図３】プリンタページモードで処理が開始されたページについての処理手順を例示したフローチャートである。
【符号の説明】
【００６０】
１  ホストコンピュータ、  ２  プリンタ、  ３  印刷システム、  １１  プリンタドライバ、  ２１  コントローラ、  ２２  印刷実行部、  ２３  Ｉ／Ｆ、  ２４  ＣＰＵ、  ２５  ＲＯＭ、  ２６  ＲＡＭ、  ２７  エンジンＩ／Ｆ、  ２６１  受信バッファ、  ２６２  中間コードバッファ
【図１】
2009230558.tif 000003
【図３】
2009230558.tif 000004
【図２】
2009230558.tif 000005