(57)【特許請求の範囲】
【請求項１】
アプリケーションソフト側からのプリントデータの送信に基づいて、該プリントデータを、言語にて記述した言語表現データとしてプリンタ装置に送信するプリントデータ送信装置であって、
前記アプリケーションソフト側から送信されたプリントデータの内、言語にて記述可能なプリントデータであっても、ベクトルとして記述されるプリントデータについては、ビットマップデータにて表現した圧縮状態または非圧縮状態のイメージデータとして送信することを特徴とするプリントデータ送信装置。
【請求項２】
前記ビットマップデータを圧縮して送信する場合は、イメージデータのみにて送信する送信システムにて行われているビットマップデータの圧縮手法と同じ圧縮手法にて圧縮して送信することを特徴とする請求項１記載のプリントデータ送信装置。
【請求項３】
請求項１又は請求項２記載のプリントデータ送信装置の機能を、コンピュータシステムにて実現するプログラムが記載されたことを特徴とする記憶媒体。
【請求項４】
イメージを言語で記述した言語表現データと、すべてのイメージをビットマップデータにて表現した圧縮状態または非圧縮状態のイメージデータとの両者をプリントデータとして、請求項１又は請求項２記載のプリントデータ送信装置から受信可能な受信部と、
所定の印刷領域毎に、対応するプリントデータを管理するために設けられたパケット登録エリアと、
前記受信部により受信した前記言語表現データを、前記印刷領域毎に分けて、前記パケット登録エリアに登録するパケット登録手段と、
所定タイミングで、前記パケット登録エリアに登録されている前記言語表現データをビットマップデータに展開して、前記パケット登録エリアと関連付けられているプリントデータエリアに書き込む第１書き込み手段と、
前記受信部により受信した前記イメージデータを、前記印刷領域毎に分けて、対応する前記パケット登録エリアと関連付けられているプリントデータエリアに書き込む第２書き込み手段と、
所定タイミングで、前記プリントデータエリア内に形成されたプリントデータを印刷する印刷手段と、
を備えたことを特徴とするプリンタ装置。
【請求項５】
前記パケット登録エリア自体あるいは該パケット登録エリアと関連付けられているメモリエリアにて、使用可能なエリアが不足すると、あるいは不足することが予想されると、前記プリントデータエリア内のプリントデータの解像度を低下させることにより使用エリアを減少させて、使用可能エリアを増加させる使用可能エリア増加手段を設けたことを特徴とする請求項４記載のプリンタ装置。
【請求項６】
請求項４又は請求項５記載のプリンタ装置の機能を、コンピュータシステムにて実現するプログラムが記載されたことを特徴とする記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プリンタ装置、プリントデータ送信装置、および記憶媒体に関する。
特に、イメージを言語で記述した言語表現データと、すべてのイメージをビットマップデータにて表現した圧縮状態または非圧縮状態のイメージデータとの両者をプリントデータとして受信可能なプリンタ装置、アプリケーションソフト側からのプリントデータの送信に基づいて、該プリントデータを、言語にて記述した言語表現データとしてプリンタ装置に送信するプリントデータ送信装置、およびこれらの装置の機能を実現するプログラムが記載された記憶媒体に関する。
【０００２】
【従来の技術】
従来用いられているプリンタ装置としては、イメージをページ記述言語（以下、「ＰＣＬ（ヒューレットパッカード社の商標）言語」とも言う。）にて記述した言語表現データをホスト側から受信すると、この言語表現データを解釈してビットマップデータに展開し印刷するインテリジェントタイプと、圧縮あるいは非圧縮のイメージデータをホスト側から受信して、これを伸張して印刷するホストベースドタイプの２つが代表的なものとして挙げられる。
【０００３】
【発明が解決しようとする課題】
インテリジェントタイプは、データが言語表現であるため、ホスト側からの転送データ量を少なくできるので、通信速度の遅いインターフェースを利用する場合には有効である。しかし、プリンタ装置内で言語表現データを解釈して、対応するイメージデータを作成する処理の負荷が高く、印刷自体はあまり速くない。特に、言語表現データがベクトルとして記述されている場合には、イメージデータを作成するのに時間を要し、印刷が遅延するという問題が存在した。
【０００４】
一方、ホストベースドタイプは、ホスト側で高速なグラフィックアクセラレータで作り出した圧縮ビットマップデータを、ハードウェアを利用して高速にビットマップデータに変換するので速度は速いが、ハードウェアを利用しているので、プリンタ装置側にて、メモリオーバ時にインテリジェントタイプでは可能なビットマップデータの再圧縮によるメモリの未使用領域の拡大等の処理を行うことができなかった。このため、メモリ不足により画像を形成することができない場合があった。
【０００５】
本発明は、インテリジェントタイプのプリンタ装置において、ビットマップデータを作成する負荷を低減して印刷速度の遅延を防止することを目的とするものである。
【０００６】
【課題を解決するための手段及び発明の効果】
ここには、１つまたはそれ以上の発明が記載され、それぞれ以下に述べるような構成および効果を有する。
本発明のプリントデータ送信装置は、アプリケーションソフト（例えば、ワープロソフト、ＣＡＤソフト、表計算ソフト等）側からのプリントデータの送信に基づいて、該プリントデータを、言語にて記述した言語表現データとしてプリンタ装置に送信するプリントデータ送信装置であって、
前記アプリケーションソフト側から送信されたプリントデータの内、言語にて記述可能なプリントデータであっても、言語にて記述するとプリンタ装置にてビットマップデータに展開するための負荷が高いベクトルで記述されるプリントデータについては、ビットマップデータにて表現した圧縮状態または非圧縮状態のイメージデータとして送信することを特徴とする。
【０００７】
なお、ビットマップデータを圧縮して送信する場合は、各種の圧縮手法を用いることができるが、このプリントデータ送信装置においては、旧来、すべてのイメージをイメージデータとして送信するホストベースドタイプの送信システムにて行われているビットマップデータの圧縮手法と同じ圧縮手法にてビットマップデータを圧縮することとしても良い。
【０００８】
また、本発明のプリンタ装置は、イメージを言語（例えば、実施の形態におけるＰＣＬ言語）で記述した言語表現データと、すべてのイメージをビットマップデータにて表現した圧縮状態または非圧縮状態のイメージデータとの両者をプリントデータとして、本発明のプリントデータ送信装置から受信可能な受信部と、
所定の印刷領域（例えば、実施の形態におけるバンド）毎に、対応するプリントデータを管理するために設けられたパケット登録エリア（例えば、実施の形態におけるパケット構造体）と、
受信部により受信した前記言語表現データを、前記印刷領域毎に分けて、前記パケット登録エリアに登録するパケット登録手段と、
所定タイミングで、前記パケット登録エリアに登録されている前記言語表現データをビットマップデータに展開して、前記パケット登録エリアと関連付けられているプリントデータエリア（例えば、実施の形態における展開バッファ）に書き込む第１書き込み手段と、
受信部により受信した前記イメージデータを、前記印刷領域毎に分けて、対応する前記パケット登録エリアと関連付けられているプリントデータエリアに書き込む第２書き込み手段と、
所定タイミングで、前記プリントデータエリア内に形成されたプリントデータを印刷する印刷手段と、
を備えたことを特徴とする。
【０００９】
本発明のプリンタ装置では、言語で記述された言語表現データのみでなく、第２書き込み手段により、直接、イメージデータにて送信されてくるデータもプリントデータエリアに書き込まれる。
外部から送信されてくるプリントデータは、すべてが言語表現データである場合にも、第１書き込み手段の機能により、すべてプリントデータエリア内に展開できるので、プリントデータは、すべて印刷手段にて印刷可能であるとともに、更に、すべてがホストベースドタイプのイメージデータとして送信されたものであっても、第２書き込み手段がそのイメージデータをプリントデータエリアに書き込むので、送信側が旧来の送信システムであっても、プリントデータは、すべて印刷手段にて印刷可能である。
【００１０】
本発明のプリントデータ送信装置及びプリンタ装置では、言語表現データからビットマップデータを作成する負荷が高いベクトルで記述されたプリントデータが、ホストベースドタイプのイメージデータとして送受信される。
このため、プリンタ装置側では、そのプリントデータを、非圧縮の場合はそのまま、圧縮の場合は単に伸張してビットマップデータとして用いれば良く、言語表現データからビットマップデータに変換する必要がない。よって、プリンタ装置側の負荷が高くならず、処理に時間を要しない。
【００１１】
したがって、本発明のプリンタ装置によれば、印刷の遅延が防止でき、送信するシステム側の処理も遅延させることがない。またホスト側は通常、高速なグラフィックアクセラレータを内蔵しているのでホスト側のスピード低下はない。
【００１２】
また、本発明のプリントデータ送信装置がホスト（送信システム）側において機能することにより、前述したプリンタ装置において、前述した機能が有効に発揮される。したがって、本発明のプリントデータ送信装置によれば、全体的な印刷処理の負荷を小さくでき、迅速な印刷が可能となり、ホスト側の処理も遅延しない。
【００１３】
なお、本発明のプリンタ装置には、パケット登録エリア自体あるいは該パケット登録エリアと関連付けられているメモリエリアにて使用可能なエリアが不足すると、あるいは不足することが予想されると、プリントデータエリア内のプリントデータの解像度を低下させることにより使用エリアを減少させて、使用可能エリアを増加させる使用可能エリア増加手段を設けても良い。
【００１４】
この場合、外部からホストベースドタイプのイメージデータとして送信されてくるプリントデータも、第１書き込み手段が言語表現データをビットマップデータに展開して書き込むプリントデータエリア内に、第２書き込み手段にて書き込まれているので、従来、インテリジェントタイプにて行われていた、メモリオーバ時にプリントデータエリア内のビットマップデータの再圧縮によるパケット登録エリアのメモリ未使用領域の拡大処理を、ホストベースドタイプのプリントデータに対しても行うことができるようになる。
【００１５】
このため、メモリ不足を生じて画像を形成できなくなることが防止できる。また、ホストベースドタイプのイメージデータも言語表現データも、共にプリントデータエリア内に配置して、同一の形式のデータとしてパケット登録エリアにて管理できるので、管理あるいは処理のためのプログラムが共通化でき、プログラムに要するメモリが少なくて済む。
【００１６】
なお、前述したプリンタ装置あるいは前述したプリントデータ送信装置の機能は、それぞれ、内部に設けられたコンピュータシステムにて起動するプログラムとして備えられる。このようなプログラムの場合、例えば、フロッピーディスク、光磁気ディスク、ＣＤ−ＲＯＭ等の記憶媒体に記憶し、必要に応じてコンピュータシステムにロードして起動することにより用いることができる。この他、ＲＯＭやバックアップＲＡＭを記憶媒体としてプログラムを記憶しておき、このＲＯＭあるいはバックアップＲＡＭをコンピュータシステムに組み込んで用いても良い。
【００１７】
【発明の実施の形態】
図１は、上述した発明のいくつかが適用された、実施の形態としてのレーザプリンタ２およびホストコンピュータとしてのパソコン４を表し、レーザプリンタ２とパソコン４とが接続された状態を示している。図２はその概略ブロック図を示している。
【００１８】
レーザプリンタ２とパソコン４とは、所定の規格、ここでは、ＩＥＥＥ１２８４の規格に準拠したパラレルインターフェース６，８を採用しており、そのインターフェース接続用のＩＥＥＥ１２８４用ケーブル１０にて接続されている。
レーザプリンタ２は、パラレルインターフェース６の他に、プログラムにしたがって種々の制御を実行するＣＰＵ１２、種々の制御プログラムが格納されたＲＯＭ１４、ＣＰＵ１２による演算の作業領域や演算結果や各種設定状態を格納したり後述するパケット構造体や展開バッファ等のメモリ領域を形成するＲＡＭ１６、給紙センサ、排紙センサおよびトナー残量センサ、その他のセンサ類１８、レーザプリンタ２のメカニカルな部分を駆動するためのメインモータなどのエンジン２０、およびレーザプリンタ２に簡単な指示を押しボタン式スイッチ２２ａにて与えたり、所定の状態を設定するための指示操作や状態をＬＥＤランプ２２ｂで表示する操作部２２を備えている。またレーザプリンタ２の本体２ａの側面には電源スイッチ３が設けられている。
【００１９】
一方、パソコン４は、パラレルインターフェース８の他に、プログラムにしたがって種々の制御を実行するＣＰＵ２４、種々の制御プログラムが格納されたＲＯＭ２６、補助記憶装置３０内の補助記憶媒体から読み込まれたＯＳ、アプリケーションソフトあるいはデバイスドライバーといったプログラム、データあるいはＣＰＵ２４による演算結果や各種設定状態を格納するＲＡＭ２８、フロッピーディスク、光磁気ディスクあるいはＣＤ−ＲＯＭ等を補助用の記憶媒体として外部からプログラムやデータを取り入れる補助記憶装置３０、ＯＳ（オペレーティングシステム）特有のフォーマットで記憶された画像データをビットマップデータに変換するグラフィックアクセラレータ３１、演算結果、メニューあるいは印刷時のレーザプリンタ２側のステータス等の表示を行うディスプレイ３２、ユーザーからの入力を受けるキーボード３４、およびマウスインターフェース３６を介してディスプレイ３２上に表示されているマウスカーソルを移動させ、かつ指示を入力するためのマウス入力装置３８から構成されている。
【００２０】
レーザプリンタ２は、本体２ａの後部上方に給紙部２ｂが設けられ、印刷時には給紙部２ｂ内部の記録用紙が一枚ずつレーザプリンタ２内部の印刷部に送られて、レーザにより形成された静電潜像に対してトナーによる画像が形成された転写ローラから、トナー画像が記録用紙上に形成された後、加熱固定されて、排紙トレー２ｃ上に排出される。
【００２１】
また、パソコン４は、補助記憶装置３０から読み込まれて、プログラムとして起動しているプリンタドライバーにより、レーザプリンタ２との間で、ＩＥＥＥ１２８４用ケーブル１０のコントロールラインを介して、シェイクハンド処理のためにストローブ信号やアクノリッジ信号といったハンドシェイク信号を相互に交換しつつ、パソコン４からはＩＥＥＥ１２８４用ケーブル１０のデータラインを介して、ページ記述言語による言語表現データ、イメージデータおよびコマンドの伝送がなされ、その結果に応じて、レーザプリンタ２は後述するプリンタ処理を行ったり、レーザプリンタ２が双方向通信を実行できる場合はステータスデータをパソコン４側に送信する。パソコン４側では、印刷時のレーザプリンタ２のステータスデータが得られれば、その状態をディスプレイ３２のステータスモニター表示部３２ａに表示する。
【００２２】
図３に、パソコン４にて起動されるプリンタドライバーのフローチャートを示す。本処理は、同じパソコン４において同時に起動されているアプリケーション側から印刷要求があった場合に起動される処理である。
まず、初期設定により、プリントデータの送受信の準備を行った（Ｓ９０）後、アプリケーションからの送信されてくるプリントデータを取得する（Ｓ１００）。次にこのプリントデータが文字の種類と形状とを表すフォントデータか否かが判定される（Ｓ１１０）。もしフォントデータである場合には（Ｓ１１０で「ＹＥＳ」）、一時的にＲＡＭ２８上の所定メモリ領域に記憶される（Ｓ１２０）。
【００２３】
もし、プリントデータがフォントデータ以外のデータであった場合（Ｓ１１０で「ＮＯ」）、例えば、ベクトルデータ、その他の図形データ、あるいは画像等のイメージデータの場合には、ホストベースドフォーマットのビットマップデータに変換されて保持される（Ｓ１３０）。この変換は、パソコン４に備えられているグラフィックアクセラレータ３１にて高速に実行される。
【００２４】
ステップＳ１２０またはステップＳ１３０の処理が終了すると、次に、アプリケーションからのプリントデータが終了したか否かが判定される（Ｓ１４０）。終了していなければ（Ｓ１４０で「ＮＯ」）、終了するまで前述したステップＳ１００〜Ｓ１３０の処理を繰り返し、フォントデータはフォントデータ用のメモリ領域に蓄積され、ホストベースドフォーマットのビットマップデータはビットマップデータ用のメモリ領域に蓄積される。
【００２５】
全てのプリントデータの処理が終了すれば（Ｓ１４０で「ＹＥＳ」）、次にビットマップデータが蓄積されているか否かが判定される（Ｓ１５０）。ステップＳ１３０の処理が行われていて、ＲＡＭ２８内の所定のメモリ領域に、ビットマップデータが蓄積されていれば（Ｓ１５０で「ＹＥＳ」）、蓄積されていたビットマップデータが圧縮されて、レーザプリンタ２に出力される（Ｓ１６０）。すなわち、ここでのビットマップデータは、プリントデータ内のバックグラウンドの内容を表しているので、レーザプリンタ２にてＲＡＭ１６内に下地のビットマップデータを形成させるために、フォントデータよりも先に出力される。
【００２６】
なお、この圧縮は、従来、ホストベースドタイプのプリンタに送信する際に行っていた圧縮と同じ圧縮様式にて圧縮される。この圧縮様式をレーザプリンタ２側に知らせるために、圧縮されたビットマップデータの先頭には、ホストベースドタイプの圧縮であることを示すエスケープシーケンス「＜ＥＳＣ＞ＨＢＰ」が付加される。
【００２７】
次に、ステップＳ１２０にて一時的に保持されていたフォントデータをＰＣＬ（ページ記述言語）フォーマットに変換して、レーザプリンタ２に出力する（Ｓ１７０）。ＰＣＬフォーマットとしては、例えば、座標およびフォント形状を示すコード等から構成されている。
【００２８】
こうして、１頁分全てのビットマップデータとフォントデータとが、レーザプリンタ２側へ出力されると、最後に印刷コマンドとして「ＦＦ」が出力されて（Ｓ１８０）、処理を終了する。次の頁のプリントデータがアプリケーションから送信されてくる場合は、再度、前述した処理を繰り返す。
【００２９】
この結果、例えば、図１０に示すごとくの構成のプリントデータがレーザプリンタ２に対して送信される。
次に、レーザプリンタ２側の処理について、図４以下のフローチャートに基づいて説明する。
【００３０】
まず初期設定が行われ（Ｓ２００）、パラレルインターフェース（Ｉ／Ｆ）６のバッファより、パソコン４から受信したデータを１バイト分取得する（Ｓ２１０）。
次にこの１バイトが、エスケープシーケンスの開始コードであるエスケープ（ＥＳＣ）コードであるか否かを判定する（Ｓ２２０）。ここで、ＥＳＣコード「１ｂ」であれば（Ｓ２２０で「ＹＥＳ」）、エスケープシーケンス処理が行われる（Ｓ１０００）。
【００３１】
エスケープシーケンス処理を図５に示す。まずエスケープシーケンスによるコマンドの終了までのデータが全て取得される（Ｓ１０１０）。次にコマンドに応じた処理に移る（Ｓ１０２０）。
図１０に示したプリントデータがパソコン４からレーザプリンタ２へ送信されたものとすると、まず、最初にグラフィック圧縮モード設定コマンドＤ１が取得されるので、グラフィック圧縮モードが設定される（Ｓ１０３０）。図１０の例では、グラフィックモード＝「ＨＢＰ（ホストベースドプリンタ）」のコマンドが送信されてくるので、ステップＳ１０３０にては、グラフィック圧縮モードは「ＨＢＰ」（旧来のホストベースドプリンタへ送信するイメージデータと同じ圧縮方式を示す。）として設定される。そして、再度ステップＳ２１０の処理に戻る。
【００３２】
次に、グラフィックデータＤ２が送信されてくるが、そのグラフィックデータＤ２は１ラスタ毎に、先頭にエスケープシーケンスとしてグラフィックデータ受信コマンドが設定されているので（Ｓ２２０で「ＹＥＳ」）、ステップＳ１０２０では、グラフィックデータ受信コマンドであると判定されて、グラフィック圧縮モード＝「ＨＢＰ」に設定されているか否かが判定される（Ｓ１０４０）。本例では、グラフィック圧縮モード＝「ＨＢＰ」に設定されているので（Ｓ１０４０で「ＹＥＳ」）、ホストベースドデータ受信処理が行われる（Ｓ２０００）。
【００３３】
ホストベースドデータ受信処理のフローチャートを図６に示す。まず、受信するホストベースドタイプのプリントデータが、バンドの先頭のラスタに該当するか否かが判定される（Ｓ２０１０）。ここでバンドとは、印刷する１頁分のラスタを所定数（例えば１２８ラスタ分）毎に分けた各領域を言う。本プリンタ処理においては、このバンド毎にプリントデータを管理している。
【００３４】
プリントデータがバンドの先頭ラスタであれば（Ｓ２０１０で「ＹＥＳ」）、１バンド分を格納するのに最大限必要なメモリ領域をＲＡＭ１６内に確保して、このメモリ領域を管理するためのＢＧ（バックグラウンド）ハンドルを設定する処理を行う（Ｓ２０２０）。次に、ステップＳ２０２０にてメモリ確保に成功したか否かが判定され（Ｓ２０３０）、成功していれば（Ｓ２０３０で「ＹＥＳ」）、次にパソコン４からの受信データの内、１ラスタ分を取得して、ＢＧハンドルが指しているメモリ領域に格納する（Ｓ２０４０）。
【００３５】
次にステップＳ２０４０で取得したプリントデータがバンドの末尾のラスタであるか否かが判定され（Ｓ２０５０）、末尾でなければ（Ｓ２０５０で「ＮＯ」）、ステップＳ２１０に戻る。
グラフィックデータＤ２が継続している限り、ステップＳ２０００にて１ラスタ分のプリントデータが順次処理されてゆく。そのプリントデータがバンドの先頭でない場合には（Ｓ２０１０で「ＮＯ」）、既にメモリがステップＳ２０２０にて確保されているので、ステップＳ２０４０にてＢＧハンドルが指すメモリ領域に格納される。
【００３６】
また、プリントデータがバンドの末尾のデータである場合には（Ｓ２０５０で「ＹＥＳ」）、そのバンドに対応するグラフィックデータＤ２は終了したので、ステップＳ２０２０にて最大限確保したメモリ領域の内の未使用の領域を開放して使用できるようにするメモリリサイズ処理を行う（Ｓ２０６０）。そして、リサイズしたメモリ領域を、ＲＡＭ１６内に設定されて、バンド毎にプリントデータを管理しているパケット構造体の内の対応するバンドのバックグラウンド（ＢＧ）エリアに登録する。例えば、メモリ領域の先頭アドレスとそのバイト数とを登録する。以後、次のバンドの先頭から、上述したごとく処理が繰り返される。
【００３７】
このようにして受信したグラフィックデータＤ２をバンド毎に適切なメモリ領域を確保してパケット構造体に登録する処理が行われる。
この処理を繰り返している際に、使用できるメモリが不足して、メモり確保に失敗した場合には（Ｓ２０３０で「ＮＯ」）、使用メモリ減少処理（Ｓ３０００）を後述するごとく行うことにより、使用できるメモリを確保して、ステップＳ２０２０と同じように、メモリの再確保とＢＧハンドルの設定処理（Ｓ２０８０）が行われる。
【００３８】
この再度のメモリ確保とＢＧハンドルの設定処理（Ｓ２０８０）にてもメモリ確保に失敗すると（Ｓ２０９０で「ＮＯ」）、エラーとして、エラー処理（Ｓ２１００）が実行される。再度のメモリ確保が成功すれば（Ｓ２０９０で「ＹＥＳ」）、前述したステップＳ２０４０からの処理を開始する。
【００３９】
ステップＳ３０００の使用メモリ減少処理のフローチャートを図７に示す。
まず、バンドの先頭からの順番を示す変数ｉに先頭バンドの番号（例えば、「０」）を設定する（Ｓ３０１０）。次にこのｉ番目のバンドに対応するＢＧハンドルが「ＮＵＬＬ」（ＢＧハンドルが設定されていない状態を示す。）か否かが判定される（Ｓ３０２０）。グラフィックデータＤ２が取得されて、ＢＧハンドルが設定されているメモリ領域に格納されていれば（Ｓ３０２０で「ＮＯ」）、まず、ＲＡＭ１６内に設定された展開バッファにｉ番目のバンドのグラフィックデータＤ２を伸張して展開する（Ｓ３０３０）。なお、ＢＧハンドルが「ＮＵＬＬ」である場合には（Ｓ３０２０で「ＹＥＳ」）、次に登録データが存在しているか否かが判定される（Ｓ３１１０）。すなわち、ｉ番目のバンドに対応するパケット構造体の所定の位置に、ＰＣＬで記述された言語表現データが登録されているか否かが判定される。登録されていれば（Ｓ３１１０で「ＹＥＳ」）、まず展開バッファをクリアして（Ｓ３１１５）、白地のバックグラウンドを作成する。
【００４０】
ステップＳ３０３０またステップＳ３１１５の次に登録データが存在しているか否かが判定される（Ｓ３０４０）。すなわち、ｉ番目のバンドに対応するパケット構造体の所定の位置に、ＰＣＬで記述された言語表現データが登録されているか否かが判定される。
【００４１】
言語表現データが登録されていれば（Ｓ３０４０で「ＹＥＳ」）、そのデータが取り出され（Ｓ３０５０）、ビットマップデータにイメージ化されて展開バッファ内に書き込まれる（Ｓ３０６０）。すなわち、展開バッファ内に存在するバックグラウンドのデータの上から書き込まれることにより合成される。
【００４２】
以後、登録データが存在する限り、展開バッファに書き込み、登録データがなくなれば（Ｓ３０４０で「ＮＯ」）、次に展開バッファの内容を間引く処理、すなわち、解像度を下げて、データ量を少なくする処理が行われる（Ｓ３０７０）。こうしてデータ量を減少させて、一部のメモリを開放して小さくなった展開バッファの内容をハンドルに設定して、パケット構造体のＢＧエリアに登録し（Ｓ３０８０）、次に１頁分の処理が終了したか否かが判定される（Ｓ３０９０）。
【００４３】
なお、ＢＧハンドル＝ＮＵＬＬであり（Ｓ３０２０）、登録データもない場合には（Ｓ３１１０で「ＮＯ」）、展開バッファへの書き込みは行われずに、直接、ステップＳ３０９０に移行する。
そして、１頁分の全てのバンドの処理が終了していなければ（Ｓ３０９０で「ＮＯ」）、ｉをインクリメントして（Ｓ３１００）、次のバンドを指定して、前述した処理を繰り返す。
【００４４】
１頁分の処理が終了すれば（Ｓ３０９０で「ＹＥＳ」）、展開バッファに書き込まれたグラフィックデータに付随して確保されているグラフィックキャッシュやＰＣＬで記述されたフォントデータに付随して、フォントの形状を記憶しているフォントキャッシュを、再利用できるメモリとして開放する（Ｓ３１２０）。
【００４５】
このようにして展開バッファの内容を間引いたり（Ｓ３０７０）、フォントキャッシュやグラフィックキャッシュを開放している（Ｓ３１２０）ので、使用していたメモリの一部を開放して、使用可能なメモリを増加させることができる。このことにより、使用できるメモリが十分に増加すれば、再度、メモリ確保することができるようになる。
【００４６】
このようにしてグラフィックデータが終了し、次にＰＣＬによる言語表現データＤ３、ここではフォントデータがステップＳ２１０にて読み込まれると、最初にフォント指定のエスケープシーケンスが取得される（Ｓ２１０）ので、エスケープシーケンス処理（Ｓ１０００）において、フォントの指定が行われる（Ｓ１０５０）。以後取得されるフォントデータは、新たにフォントの指定が行われるまでは、同一のフォントとして扱われる。
【００４７】
次に取得されたデータがフォントデータ（ここではキャラクタデータ）であれば、ＥＳＣではないので（Ｓ２２０で「ＮＯ」）、次にＬＦ（ラインフィード）か否かが判定される（Ｓ２３０）。もし、ＬＦであればレーザプリンタ２における印刷位置をラインフィードさせるためのカーソル位置移動処理が行われる（Ｓ２４０）。
【００４８】
ここではＬＦでなくフォントデータなので（Ｓ２３０で「ＮＯ」）、次に印刷コマンド「ＦＦ」か否かが判定される（Ｓ２５０）。ここでも「ＦＦ」ではないので（Ｓ２５０で「ＮＯ」）、その値が「ＮＵＬＬ」か否かが判定され（Ｓ２６０）、「ＮＵＬＬ」ではないので（Ｓ２６０で「ＮＯ」）、フォントデータに示されているキャラクタを前述したパケット構造体に登録データとして登録する（Ｓ２７０）。
【００４９】
次にステップＳ２７０の登録が成功したか否かが判定される（Ｓ２８０）。登録が成功であった場合（Ｓ２８０で「ＹＥＳ」）、再度ステップＳ２１０から処理を開始する。
もし、使用可能メモリが不十分であって、登録が失敗であった場合（Ｓ２８０で「ＮＯ」）には、使用メモリ減少処理が実行される（Ｓ２９０）。この使用メモリ減少処理は、図７に示した処理と同じ処理が行われて、使用可能なメモリの増加が行われる。
【００５０】
次に、キャラクタをパケット構造体に再登録する処理が行われ（Ｓ３００）、更に登録が成功か否かが判定されて（Ｓ３１０）、成功であれば（Ｓ３１０で「ＹＥＳ」）、ステップＳ２１０に戻り、前述した処理を繰り返す。失敗であれば（Ｓ３１０で「ＮＯ」）、エラー処理を実行する（Ｓ３２０）。
【００５１】
このようにして言語表現データＤ３の処理が終了し、１頁の最後を示す印刷コマンド「ＦＦ」がステップＳ２１０にて取得されると（Ｓ２５０で「ＹＥＳ」）、次に図８のフローチャートに示す未登録データ処理が実行される。
これは、ホストベースドデータがバンドの末尾まで存在していないと、図６に示したステップＳ２０６０，Ｓ２０７０の処理が行われず、パケット構造体に登録されない。したがって、印刷を実行する前に、この未登録のデータをパケット構造体に登録して、印刷可能とするためである。
【００５２】
まず未登録データが存在するか否かが判定される（Ｓ４１２０）。未登録データが存在しない場合には（Ｓ４１２０で「ＮＯ」）、このまま本処理を終了して次の処理（Ｓ３３０）に移る。
未登録データが存在する場合は（Ｓ４１２０で「ＹＥＳ」）、該当するバンドの残りラスタに白を設定する（Ｓ４１３０）。すなわち、存在しないラスタに無地である白を設定する。次にメモリをリサイズする（Ｓ４１４０）。このリサイズ処理はステップＳ２０６０と同じ処理である。次にパケット構造体に登録する（Ｓ４１５０）。この登録処理はステップＳ２０７０と同じ処理である。
【００５３】
次に、３個の展開バッファに、パケット構造体に登録されているデータを３バンド分展開し、最初の１ラスタを、レーザ出力用ＦＩＦＯに書き出す。その後エンジン２０を起動する印刷処理の割り込み実行が許可される（Ｓ３３０）。印刷処理のフローチャートを図９に示す。この印刷処理は、ＤＭＡＣ（ダイレクトメモリアクセスコントローラ）により１ラスタ分のデータの印刷出力（例えばレーザダイオードによる１ラスタ分のレーザ光の出力）が完了し、レーザ出力用ＦＩＦＯが空になる毎に、割り込み実行される処理である。このＦＩＦＯ内のデータは、エンジン２０の出力するＢＤ信号に基づいて出力される。
【００５４】
ステップＳ３３０にて割り込み実行が許可され、エンジン２０よりＢＤ信号が入るとＦＩＦＯ内の１ラスタ分のデータが出力される。ＦＩＦＯが空になると直ちに割り込みがかかって、まず、１頁分の印刷が終了したか否かが判定される（Ｓ５０１０）。印刷の最初であり、１頁分の印刷は終了していないので（Ｓ５０１０で「ＮＯ」）、次に最初のバンドの展開バッファ内に存在するラスタデータをＤＭＡの処理対象としてセットする（Ｓ５０２０）。このことにより、次にＢＤ信号が発生したときに、次のラスタデータが印刷出力される。次に空の展開バッファが存在するか否かが判定される（Ｓ５０３０）。空の展開バッファがなければ（Ｓ５０３０で「ＮＯ」）、このまま一旦処理を終了する。そして、１ラスタ分の印刷出力が終了して、再度、割り込みがかかると、次のラスタデータがＤＭＡの処理対象としてセットされ（Ｓ５０２０）、印刷出力される。
【００５５】
したがって、１つのバンドの展開バッファが全ての印刷出力されるまでは、ステップＳ５０３０では「ＮＯ」と判定されるので、順次ラスタデータを印刷出力する処理（Ｓ５０２０）のみが行われる。
こうして、最初のバンドの展開バッファ内の全てのラスタデータが印刷出力されると、あるいは、最初から空の展開バッファが存在すると、空の展開バッファが生じるので（Ｓ５０３０で「ＹＥＳ」）。次に多重割り込みがなされているか否かが判定される（Ｓ５０４０）。本印刷処理が２つ以上割り込み実行されていれば（Ｓ５０４０で「ＹＥＳ」）、現在、ステップＳ５０５０以下の処理が行われていると考えられるので、ステップＳ５０５０以下の処理を実行してはならないことから、このまま一旦処理を終了する。
【００５６】
多重割り込みがなされていなければ（Ｓ５０４０で「ＮＯ」）、未だ展開バッファに展開されていないバンドの登録データの取り出しが行われる（Ｓ５０５０）。展開バッファの数（例えば３つ）は、バンドの数よりも小さいので、全てのバンドが展開バッファに展開されているとは限らない。したがって、ステップＳ５０６０以下の処理で、印刷出力が終了して空となった展開バッファに、未展開のバンドを展開する。なお、この展開処理の際にも、既に展開されていて印刷出力が完了していない展開バッファについては、多重割り込みにより、ステップＳ５０２０が実行されて、印刷出力は継続されている。
【００５７】
まず、取り出されたバンドのＢＧハンドルが「ＮＵＬＬ」か否かが判定される（Ｓ５０６０）。もし「ＮＵＬＬ」でなければ（Ｓ５０６０で「ＮＯ」）、ＢＧハンドルが指しているメモリ領域の内容を、空の展開バッファに展開し（Ｓ５０７０）、バックグラウンドのビットマップデータを形成する。
【００５８】
もし、ＢＧハンドルが「ＮＵＬＬ」であれば（Ｓ５０６０で「ＹＥＳ」）、空の展開バッファをクリアして（Ｓ５０８０）、白のバックグラウンドを形成する。
次に取り出されたバンドの登録データ、すなわち、言語表現データが存在しているか否かが判定される（Ｓ５０９０）。存在していなければ（Ｓ５０９０で「ＮＯ」）、展開バッファへの展開は終了したので、このまま一旦処理を終了する。
【００５９】
登録データが存在していれば（Ｓ５０９０で「ＹＥＳ」）、そのデータが取り出され（Ｓ５１００）、言語表現データはビットマップデータにイメージ化されて展開バッファ内に書き込まれる（Ｓ５１１０）。この処理が、全ての登録データについて実行されて、未処理の登録データがなくなれば（Ｓ５０９０で「ＮＯ」）、一旦処理を終了する。
【００６０】
このようにして、パケット構造体の登録データが順次展開されるとともに、展開バッファから、ラスタデータが順次印刷出力される。そして、１頁分の印刷出力が終了すれば（Ｓ５０１０で「ＹＥＳ」）、本印刷処理の割り込みが禁止されて（Ｓ５１２０）、印刷処理を終了する。
【００６１】
以後、印刷コマンド「ＦＦ」が取得される毎に、それぞれ前述した処理により各頁の印刷が行われる。
なお、図５において、グラフィック圧縮モード＝「ＨＢＰ」でない場合は（Ｓ１０４０で「ＮＯ」）、ＰＣＬ言語の一部として送信されてくるグラフィックデータの受信がなされる（Ｓ１０４５）。これは旧来の言語表現でのグラフィックデータを受信できるようにするためである。
【００６２】
また、ステップＳ１０２０にてカーソル移動コマンドであると判定されると、印刷位置を移動するカーソル移動処理がなされる（Ｓ１０２５）。
本実施の形態は、パソコン４側にてプリンタドライバー処理にて、フォントデータについてはＰＣＬ言語にて記述した言語表現データとしてレーザプリンタ２側へ送信し、フォントデータ以外は、従来のホストベースドフォーマットのイメージデータとしてレーザプリンタ２側に送信している。
【００６３】
したがって、レーザプリンタ２側では、ＰＣＬ言語でベクトルとして記述されるような、ビットマップデータを作成する負荷が高いデータについては、ホストベースドタイプのイメージデータとして受信できる。このことにより、非圧縮の場合はそのまま、圧縮の場合は単に伸張してビットマップデータとして用いれば良く、言語表現データからビットマップデータに変換する必要がないので、レーザプリンタ２側の負荷が高くならず、処理に時間を要しない。したがって、印刷の遅延が防止でき、パソコン４側の処理も遅延させない。
【００６４】
また、レーザプリンタ２は、図３に示したプリンタドライバー処理のみでなく、パソコン４から送信されてくるプリントデータのすべてが言語表現データであっても、あるいは、すべてがホストベースドタイプのイメージデータとしてパソコン４から送信されて来ても、すべてプリントデータエリアとしての展開バッファ内に展開し、一つに合成できるので、旧来のデータ送信システムで送信されたプリントデータでも印刷可能である。なお、この場合、パソコン４からのビットマップデータの圧縮方式、およびレーザプリンタ２が伸張できるイメージデータの圧縮方式は、旧来のホストベースドタイプのプリンタにて採用されていた圧縮方式を採用する。
【００６５】
また、このように、旧来の送信システムにて、ホストベースドタイプのイメージデータが送信されてきても、従来のホストベースドタイプのプリンタがハード的に受信して印刷出力することとは異なり、レーザプリンタ２は、イメージデータを一旦、メモリに格納して、更に使用可能なメモリが少なくなると、ソフト的に、展開バッファにイメージデータをビットマップデータとして展開するとともに、展開バッファの内容を間引いて解像度を低下させている。
【００６６】
このためメモリ不足により、画像形成ができないと言った問題が防止される。また、ホストベースドタイプのイメージデータも言語表現データも、共にプリントデータエリア内に配置して、同一の形式のデータとしてパケット登録エリアにて管理できるので、管理あるいは処理のためのプログラムが共通化でき、プログラムに要するメモリが少なくて済む。
【００６７】
なお、図３以下のフローチャートに示したレーザプリンタ２あるいはプリントデータ送信装置としてのパソコン４の機能は、それぞれ、例えば、コンピュータシステムとして起動するプログラムとして各装置に備えられる。パソコン４では、例えば、フロッピーディスク、光磁気ディスク、ＣＤ−ＲＯＭ等の記憶媒体に記憶し、必要に応じてコンピュータシステムにロードして起動することにより用いる。また、レーザプリンタ２では、ＲＯＭ等を記憶媒体として前記プログラムを記憶しておき、このＲＯＭをコンピュータシステムとしてのレーザプリンタ２に組み込んで用いる。
【００６８】
本実施の形態において、ステップＳ２７０がパケット登録手段としての処理に該当し、ステップＳ５１１０が第１書き込み手段としての処理に該当し、ステップＳ５０７０が第２書き込み手段としての処理に該当し、ステップＳ５０２０が印刷手段としての処理に該当し、ステップＳ２８０，Ｓ３０７０およびステップＳ２０３０，Ｓ３０７０が使用可能エリア増加手段としての処理に該当し、パソコン４がプリントデータ送信装置に該当し、ステップＳ１１０，Ｓ１３０が、アプリケーションソフト側から送信されたプリントデータの内、言語にて記述可能なプリントデータであっても、言語にて記述するとプリンタ装置にてビットマップデータに展開するための負荷が高いプリントデータについては、ビットマップデータにて表現した圧縮状態のイメージデータとして送信する機能を実行している処理に該当する。
【図面の簡単な説明】
【図１】本発明の実施の形態としてのパソコンとレーザプリンタとを接続した状態の説明図である。
【図２】実施の形態における概略ブロック図である。
【図３】パソコンにおけるプリンタドライバー処理のフローチャートである。
【図４】レーザプリンタにおけるプリンタ処理のフローチャートである。
【図５】レーザプリンタにおけるエスケープシーケンス処理のフローチャートである。
【図６】レーザプリンタにおけるホストベースドデータ受信処理のフローチャートである。
【図７】レーザプリンタにおける使用メモリ減少処理のフローチャートである。
【図８】レーザプリンタにおける未登録データ処理のフローチャートである。
【図９】レーザプリンタにおける印刷処理のフローチャートである。
【図１０】プリンタドライバーが出力するプリントデータの構成説明図である。
【符号の説明】
２…レーザプリンタ      ４…パソコン
６，８…パラレルインターフェース
１０…ＩＥＥＥ１２８４用ケーブル    １２…ＣＰＵ    １４…ＲＯＭ
１６…ＲＡＭ    １８…センサ類    ２０…エンジン    ２２…操作部
２４…ＣＰＵ    ２６…ＲＯＭ    ２８…ＲＡＭ    ３０…補助記憶装置
３１…グラフィックアクセラレータ    ３２…ディスプレイ
３４…キーボード    ３６…マウスインターフェース
３８…マウス入力装置
【図１】
0003608314.tif 000002
【図２】
0003608314.tif 000003
【図３】
0003608314.tif 000004
【図４】
0003608314.tif 000005
【図５】
0003608314.tif 000006
【図６】
0003608314.tif 000007
【図７】
0003608314.tif 000008
【図８】
0003608314.tif 000009
【図９】
0003608314.tif 000010
【図１０】
0003608314.tif 000011