JP3814373B2 - 情報処理装置及び印刷制御装置及び方法とプログラム記憶媒体 - Google Patents

情報処理装置及び印刷制御装置及び方法とプログラム記憶媒体 Download PDF

Info

Publication number
JP3814373B2
JP3814373B2 JP14269497A JP14269497A JP3814373B2 JP 3814373 B2 JP3814373 B2 JP 3814373B2 JP 14269497 A JP14269497 A JP 14269497A JP 14269497 A JP14269497 A JP 14269497A JP 3814373 B2 JP3814373 B2 JP 3814373B2
Authority
JP
Japan
Prior art keywords
band
image data
data
character
page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP14269497A
Other languages
English (en)
Other versions
JPH10240468A (ja
Inventor
陽二 古谷
政義 鈴木
義文 岡本
俊彦 池野
純 土肥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP14269497A priority Critical patent/JP3814373B2/ja
Publication of JPH10240468A publication Critical patent/JPH10240468A/ja
Application granted granted Critical
Publication of JP3814373B2 publication Critical patent/JP3814373B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Record Information Processing For Printing (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、例えばホストコンピュータから送られてくる印刷データを印刷出力する印刷システム及び印刷装置及び印刷制御方法に関するものである。
【0002】
【従来の技術】
従来、イメージ出力に特化したページプリンタがあり、それはホストベースプリンタと呼ばれている。
【0003】
この種のプリンタでは、ホストコンピュータ上で展開した1ページ分のイメージデータを、ページ先頭から次々に圧縮してプリンタのコントローラ部に送る。コントローラ部は送られてくる圧縮データを次々に伸長し、伸長したデータをビデオ信号に変換して、エンジン部の排紙のタイミングに同期させて、エンジン部に出力する。これによって、1ページ分の用紙の印刷を行なう。
【0004】
この種のプリンタでは、圧縮されたイメージデータのビデオ信号への変換と、エンジン部へのビデオ信号出力は、ハードウェア回路が行なう仕組みとなっており、極端に言えば、コントローラ部には、CPUも不要であり、非常に安価なページプリンタが可能という長所がある。
【0005】
【発明が解決しようとする課題】
しかしながら、上記従来のホストベースプリンタを用いるホストコンピュータでは、文字印字、図形描画、イメージの貼り付け等、全ての印刷データを、いったんホストコンピュータ上でイメージに展開してから、展開されたイメージを圧縮してプリンタに転送する。そのため、ホストからプリンタに転送すべきデータ量が大きくなってしまう。また、普通の文書でも、ホスト上でいったんすべてデータを画像へ展開しなければならない。そのため、特に、複数ページの文書では、ホストでの処理時間がかかり、印刷処理時間が大きくなってしまうという問題があった。
【0006】
本発明の目的は、ホストベースプリンタに近い、簡単な構成のイメージ専用プリンタでありながら、文字の部分は文字コードで受信して文字画像に展開することで、ホストにおける文字の展開処理時間とホストからの転送データ量とを非常に小さくした印刷装置及び印刷システム及び印刷制御方法を提供することである。
【0007】
また、本発明のもうひとつの目的は、巨大なイメージデータを含んだ文書も出力できる印刷装置及び印刷システム及び印刷制御方法を提供することである。
【0008】
【課題を解決するための手段】
上記目的を達成するため、本発明はつぎのような構成からなる。
【0010】
あるいは、注目バンドが単一の圧縮イメージであるか否かを判別する第1判別手段と、前記第1判別手段により注目バンドが単一の圧縮イメージでないと判別された場合、圧縮イメージデータを伸長したイメージデータと他のイメージデータとをバンドメモリに展開し、バンドメモリに展開されたイメージデータをビデオ転送部に出力し、前記第1判別手段により注目バンドが単一の圧縮イメージであると判別された場合、圧縮イメージデータを伸長したイメージデータをバンドメモリに展開することなく圧縮イメージデータをビデオ転送部に出力する制御手段とを有する。
【0011】
あるいは、注目バンドが単一の圧縮イメージであるか否かを判別する第1判別手段と、前記第1判別手段により注目バンドが単一の圧縮イメージでないと判別された場合、圧縮イメージデータを伸長したイメージデータと他のイメージデータとをバンドメモリに展開し、バンドメモリに展開されたイメージデータを出力し、前記第1判別手段により注目バンドが単一の圧縮イメージであると判別された場合、圧縮イメージデータを伸長したイメージデータをバンドメモリに展開することなく圧縮イメージデータを出力する制御手段と、前記制御手段により出力されるイメージデータをビデオ信号に変換して出力し、また前記制御手段により出力される圧縮イメージデータをイメージデータに伸長し、伸長したイメージデータをビデオ信号に変換して出力するビデオ転送手段と、前記ビデオ転送手段により出力されるビデオ信号に基づき印刷を行うプリントエンジンとを有する。
【0016】
【発明の実施の形態】
[第1の実施の形態]
次に、図を用いて第1の実施の形態を説明する。
<印刷システムの構成>
図1はシステム全体を説明するためのブロック構成図である。ホスト1は、登録する文字イメージデータ、印字を指示する文字コード、圧縮されたイメージデータを作成してプリンタへ送るパーソナルコンピュータである。ホスト1は、これらの処理を、二次メモリから主メモリにロードしたプリンタドライバ等のプログラムをCPUにより実行することで行う。また、ホスト1では、ユーザが所望のアプリケーションプログラムを実行することができる。ユーザはこれを入力部からの入力及び表示部よりの表示に従って制御する。ホスト1はプリンタ2とインターフェース部を介して接続されている。なお、二次メモリとしては、固定ディスクなどの固定された媒体のほかに、フレキシブルディスクやCD−ROMなど、着脱自在な記憶媒体を用いてもよいし、それら双方を用いることもできる。着脱自在な媒体を二次メモリとして用いれば、それを介してプログラムやデータを装置に供給できる。
【0017】
プリンタ2は、コントローラ部3とエンジン部4とを含む。コントローラ部3は、ホストコンピュータ1から送られてくる文字データ、イメージデータを受信し、受信したデータからビデオ信号を生成し、エンジン部4に送る。エンジン部4は、コントローラ部3から受け取ったビデオ信号を用紙に転写して印刷し、排紙する。
【0018】
コントローラ部3は、コントローラ部3全体を制御する中央処理装置(以下、CPUと呼ぶ)5、CPU5による処理動作を記述したプログラムの入っているリード・オンリ・メモリ(以下、ROMと呼ぶ)8、ランダム・アクセス・メモリ(以下、RAMと呼ぶ)9、ホスト1から文字データ、イメージデータを受信し、受信したデータをRAM9内にある受信バッファ10にセットする受信部6、受信した圧縮された文字データを伸長してフレームバッファ11へ展開する文字伸長回路17、受信した圧縮されたイメージデータを伸長してフレームバッファ11に展開するイメージ伸長回路16、フレームバッファ11内の展開イメージをビデオ信号に変換してエンジン部4に出力するビデオ転送回路7等で構成されている。データ18は受信済みで受信バッファ10にページ毎にセットされてた状態の文字データ、データ19は受信済みで受信バッファ10にページ毎にセットされてた状態のイメージデータを示している。
【0019】
その他、RAM9内には、プログラムのワーク領域12、さらにその中には、受信バッファ9に受信したページごとの文字データ18、イメージデータ19を管理するためのページ管理表13、圧縮された1文字ごとのドットイメージを貯蔵しておく、登録文字データ領域15、登録された文字データを管理するための、登録文字管理表14等が含まれている。また、プログラムを格納するROM8をRAMとすることもできる。この場合にはRAMは内容が揮発しないように電池等でバックアップされているか、あるいは電源投入の都度必要なプログラムがロードされることになる。また、ROM8をRAM化することで、ホスト1の2次メモリに着脱自在な記憶媒体により供給されるプログラムを、インターフェース部を介して受信し、RAMに格納することもできる。すなわち、プリンタ2で実行されるプログラムもまた着脱自在な記憶媒体で供給することができる。
【0020】
なお、受信した文字データ18の中味は、登録文字、文字コードで構成されている。ホスト1上で印刷しようとしている文書で、最初に出現した文字は、圧縮して1文字ごとのドットイメージとして、登録文字としてプリンタ2に送られる。また、その最初の文字位置を含めて、以降の同一文字の印字は、文字コードによって指示される。
【0021】
受信バッファ10に一旦受信された登録文字は、登録文字データ領域15に移し替えられて貯えられる。文字コードによって印字を指示された場合は、登録文字データ領域15から、文字コードに対応する登録文字データが抜き出され、文字伸長回路17で伸長され、フレームバッファ11上に展開される形となる。また、圧縮イメージデータ19は、イメージ伸長回路16によりデータ伸長され、フレームバッファ11上に展開される。
【0022】
ところで、コントローラ部3のCPU5は、RAM9の内部の受信バッファ10やページ管理表13、登録文字管理表14などを用いたメモリ管理を行なうだけなので、処理能力のそれほど高くない安価な製品で良い。
【0023】
一方、エンジン部4にもCPU21とメモリ22とがある。メモリ22には制御プログラムの入ったROM23や、プログラムのワーク領域としてのRAM24が含まれる。ビデオ受信部25は、コントローラ部3からのビデオ信号を受信し、現像定着部27で用紙に画像を転写する。給紙部26は、未使用の白い用紙を用紙カセット等から取り込む役目をし、現像定着部27は、上述のように用紙に画像を転写して定着し、排紙部28は印刷済みの用紙を排出する。
【0024】
なお、太い矢印は、文字データやイメージデータやビデオ信号の流れ、あるいは、エンジン部4では、用紙の流れを示している。また、細い矢印は、各部分間の制御のやりとりを示している。コントローラ部3のCPU5と、エンジン部4のCPU21も、互いに情報のやり取りを行なう。ビデオの転写や、用紙の搬送等の、印刷処理の制御にかかわる情報である。
【0025】
図2は、コントローラ部3における、イメージと文字の合成の原理の説明図である。図1でも、一部説明したが、ホスト1上のドライバは、印刷しようとする文書について、まず、文字部分と文字以外の部分とに分離する。文字以外の部分はホスト1上で全てイメージとして展開しておく。そして、ページ毎に、文字データ部分とイメージデータ部分とを別々にプリンタ2へ転送する。その際、文字データ部分は、まず文字コードと対応した、圧縮された文字のドットパターンデータをプリンタヘ送って登録しておき、次に印字データとして登録されている文字コード列を送る。
【0026】
コントローラ部3では、受信した圧縮イメージデータ19を、イメージ伸長回路16を使って伸長してフレームバッファ11上に展開する。コントローラ3は、文字データ18(すなわち文字コード列)を受信すると、受信したそれぞれの文字コードについて、登録されている圧縮ドットパターンデータを文字伸長回路17によって伸長し、フレームバッファ11上に展開する。フレームバッファ11上に1ページ分のイメージと文字の展開が完了すれば、ビデオ転送回路7によって、印刷のビデオ信号がエンジン部4へ送られる。
【0027】
なお、ここでは、フレームバッファ11上へは、イメージ部分と文字部分との論理和が書き込まれる。文書の上では、多くの場合論理和で問題はない。
【0028】
また、ある文字の文字ドットデータの登録については、ひとつの文書の印刷で一度行なわれるだけ、文書上で、ページにまたがって同じ文字が何度も出現されても、文字登録は一度だけで、印字は文字コードによって繰り返し指示される。しかし、文書の印字が終わった時点で、登録された文字は、RAM9上から消去される。複数の文書にまたがって、登録文字が有効なわけではない。文書の印刷ごとに、文字登録は繰り返す。
【0029】
図3は、ホスト1からプリンタ2へ送られる文字データやイメージデータ等、印刷データのコマンド構造の説明図である。印刷データは、順番に、ジョブ開始コマンド31、ページ毎にページ開始コマンド32、印字位置を示すポインタの位置移動コマンド33、種別コマンド34、コマンド列35を含む。種別コマンド34は、その直後に続くコマンド列35の種類を区別するためのコマンドである。コマンド列35には、文字登録を行なうもの、文字の印字を指示するもの、イメージの印字を指示するもの、等、数種類の形式がある。詳細は図4で説明する。印刷する文書のページ数分、ページ開始コマンド32以降の命令群が繰り返されて、最後にジョブ終了コマンド36で、ひとつの文書の印字コマンドが終了する。
【0030】
なお、図3では、種別コマンド34の前に必ず位置移動コマンド33がセットされているが、常時必要とは限らない。例えば、種別34、コマンド列35が文字の登録だけを行なう場合は、位置移動コマンド33は不要である。
【0031】
図4は、種別コマンド34の値ごとのコマンド列35の構造の説明図である。
【0032】
種別コマンド34が種別1の場合は、「文字登録のみ」の作業を示す。コマンド列は、書体番号41、次に文字コード42、データの大きさ43、圧縮された文字のドットイメージデータ44を含む。
【0033】
登録される文字データは、書体ごとに区分けされ、文字コードと1対1に対応付けられてRAM9上の登録文字データ領域15に登録される。具体的には、これらの区分けや関連は、登録文字管理表14上で管理される。
【0034】
種別コマンド34が種別2の場合は、「文字登録+印字」の作業を示し、文字の登録と同時に印字をも行なわせるコマンドである。コマンド列35の形式は、種別1の場合と同一である。この場合の文字コード42は、登録する文字のコード割り当てを意味すると同時に、すでに登録済みの文字、印字を指示する文字コードをも意味する。
【0035】
種別コマンド34が種別3の場合は、「文字イメージ印字のみ」の作業を示している。つまり、文字のドットイメージデータを、登録せずに印字するだけである。コマンド列35は、データの大きさ43、圧縮された文字のドットイメージデータ44を含む。
【0036】
種別コマンド34が種別4の場合は、「文字コード印字」の作業を示す。コマンド列35は、書体番号41と、文字コード42とを含む。コントローラ部3は、この書体番号41と文字コード42をもとに、登録文字管理表14を調べて、登録文字データ領域15から目的の登録文字データを探し出し、文字伸長回路17でデータを伸長してフレームバッファ11に展開する。
【0037】
種別コマンド34が種別5の場合は、「イメージブロックの貼り付け」の作業を示し、コマンド列35は、イメージブロックの縦のサイズ45、イメージブロックの横のサイズ46、データの大きさ47、圧縮されたイメージブロックデータ48を含む。コントローラ部3は、圧縮されたイメージブロックデータをイメージ伸長回路16を用いてデータ伸長し、フレームバッファ11上に展開する。種別34としては、上記5つがある。
【0038】
図5は、コントローラ部3のROM8に内蔵されているプログラムを説明するための図である。
【0039】
受信管理プログラム51は、受信バッファ10に貯蔵される各ページごとの文字データやイメージデータを、ページ管理表13を用いて管理する。受信部6への受信データの受信バッファ10上の書き込み位置の指示も行なう。
【0040】
解析プログラム52は、受信バッファ10上に貯えられた文字データ、つまり文字登録や文字印字のコマンド群、あるいはイメージデータ、つまりイメージブロック貼り付けのコマンド群を解析して、文字登録プログラム53に対して文字の登録処理を指示したり、印字プログラム54に対して文字のフレームバッファ11への展開処理を指示したり、イメージのフレームバッファ11の貼り付けを行なったりする。
【0041】
また、あるページのフレームバッファ11への文字やイメージの展開処理が全て終了した場合は、排紙プログラム55に対して、フレームバッファ11のイメージのエンジン部4へのビデオ転送と、エンジン部4への排紙の実行を指示する。そして排紙が完了したページについては、受信バッファ10上からそのページのデータを削除する作業も行なう。削除は、ページ管理表13から排紙済みページの登録を抹消するだけである。受信バッファ10上でデータクリアを行なうわけではない。
【0042】
各プログラムの動作の詳細は、後述のフローチャートで詳しく説明する。
【0043】
なお、受信管理プログラム51と解析プログラム52は、プリンタの電源オンと同時に立ち上り、ホスト1からデータ送信を待ち構える。以後プリンタの電源オフまで、ふたつのプログラムは、マルチタスクで動作を続ける。
【0044】
図6は、受信バッファ10内の、受信したデータの書き込み処理が進行する際の、各ポインタの位置関係を説明するための図である。受信バッファ10は、いわゆる「リングバッファ」の構造になっている。
【0045】
受信部6は、予め受信管理プログラム51から限界ポインタ61を指示されていて、受信バッファ10内で限界ポインタ61の位置まで受信したデータの直接書き込みが許されている。1バイトごとに加算される書き込み位置自体は受信部6が管理している。
【0046】
図6(a)で説明すると、プリンタ2の起動直後は、限界ポインタ61は受信バッファ10の最大値の位置、つまり、受信バッファ10の領域の最後尾のアドレスと一致している。しかし、図6(a)では説明のために、限界ポインタ61が、受信バッファ10の最大値の少し手前に、設定されている。そして、この状態では、受信部6による受信データの書き込みが、限界ポインタ61の少し手前まで進んできたことを示している。
【0047】
また、受信済みのデータについては、解析プログラム52によって、順次解析が進み、フレームバッファ11への文字やイメージの展開作業が完了したページから、エンジン部4による印刷済み用紙の排紙が実行される。エンジン部4への排紙の指示が完了していない最初のページが、解析ポインタ62によりポイントされる。また、排紙が完了していない最初のページが、排紙ポインタ63によりポイントされる。すなわち、解析ポインタ62と最後に受信したデータの間は、受信したままで未解析のデータが格納され、排紙ポインタ63と解析ポインタ62との間には、解析は済んでいるが、未出力のデータが格納されている。更に、排紙ポインタ62のアドレス以前の部分については、もうすでに排紙済みで不要なので、「消去」された状態になっていて、新しい受信データが書き込み可能である。「消去」と言っても実際にクリアされているわけではなく、新しい受信データは上書きされる。
【0048】
なお、解析ポインタ62、排紙ポインタ63はページ単位に設定される。解析プログラム52は、受信バッファ10上のページ境界位置等を、受信管理プログラム51が作成、管理しているページ管理表13上で調べて分かる。
【0049】
図6(b)は、受信バッファ10の最大値の位置まで受信データの書き込みが進んでしまい、受信管理プログラム51が、限界ポインタ61を受信バッファ10の先頭位置付近に移動させるよう受信部6に指示し、実際に、受信部6による受信データの書き込みが、先頭部分で少し進んだ状態を示している。いわゆる「リングバッファ」の動作である。
【0050】
限界ポインタ61の変更は、次の手順で行なわれる。まず、受信部6による受信データの書き込みが、限界ポインタ61まで進むと、受信部6は「限界に達してこれ以上書き込めない」ことを受信管理プログラム51に知らせる。つまり、限界ポインタ61の変更を催促する。催促された受信管理プログラム51は、排紙ポインタ63を調べ、新しく空いた領域がないかチェックする。そして、限界ポインタ61の新しい位置を排紙ポインタ63の位置として、受信部6へ指示する。これで、受信部6は、古い限界ポインタ61位置から、新しい限界ポインタ61位置まで、受信データの書き込みが可能になる。
【0051】
なお、受信6は、「書き込み位置が限界ポインタ61に達したとき」以外にも、受信データ中に「ジョブ開始コマンド31を検知したとき」や、「ページの開始コマンド32を検知したとき」、「ジョブ終了コマンド36を検出したとき」等も、受信管理プログラム51に連絡を行なう。これによって、受信管理プログラム51は、受信の実作業、つまり、信号線の制御や受信したデータのメモリへの書き込みは受信部6に任せながら、受信したページの管理が可能になっている。
【0052】
ところで、受信部6は、ホスト1から受信したデータを高速で受信バッファ10に書き出す仕組み、いわゆるDMA(ダイナミック・メモリ・アクセス)受信回路を持っている。この回路には、FIFO(ファーストイン・ファーストアウト)バッファが内蔵されており、ホスト1から送られてくるイメージデータは、いったん、このFIFOバッファに貯えられてから、受信バッファ管理プログラム41から指示された受信バッファ9上の書き込み位置へ、高速で書き込まれる。これは、技術的には、広く知られたものなので、ここでは詳細な説明は省略する。また、ワーク領域12には、ページ管理表13、登録文字管理表14、登録文字データ領域15等が存在するが、ここでは、各部分の内部の詳細な構造については説明しない。しかし、余計なメモリ容量を消費しないように、効率的な構造をとっている。
<印刷制御手順>
次に、本発明の第1の実施の形態の印刷システムの動作を、フローチャートを用いて説明する。
【0053】
(プリンタドライバ)
図7は、ホスト1上のプリンタドライバの動作を説明するフローチャートである。プリンタドライバは、ユーザが用いるアプリケーションソフトで作成された、イメージやテキストの混在した文書データから、図3、図4で説明した文字やイメージのプリンタコマンドを作成してプリンタ2へ転送する。ユーザがアプリケーションソフトから文書の印刷を指示すると、ホスト1内でプリンタドライバが起動される。
【0054】
図示されてはいないが、ドライバは起動時にはホスト1のメモリ上に1ページ分のフレームバッファを確保し、同時にフレームバッファをクリアする。また、ドライバの文書印刷処理の終了時には、フレームバッファとして使われていたメモリ領域は開放される。
【0055】
処理としては、まず、ステップS1でジョブ開始コマンド31をプリンタ2へ転送し、次にステップS2でアプリケーションから何らかの指示があったかチェックし、指示がないならループを形成して指示があるまで待つ。指示があったならステップS3で文書の終了の指示がチェックし、YESならステップS4で文書終了する前に文書の最後のページにイメージデータが含まれているかチェックする。イメージが含まれていたなら、ステップS5でイメージブロックの貼り付け位置を示す位置移動コマンド33を転送し、ステップS6で種別5の種別コマンド34と、イメージブロックを示す、縦サイズ45,横サイズ46,データの大きさ47,圧縮イメージブロック48の各コマンドを転送する。
【0056】
ステップS6で転送されるイメージブロックは、最後のページ全体を単一のイメージブロックとしたデータである。1ページのイメージは、ホスト1上のメモリに設けられた1ページ分の大きさのフレームバッファに展開される。ステップS6でイメージコマンドを転送した後は、ホスト上のフレームバッファもクリアされる。
【0057】
ステップS4でNOの場合、あるいは、ステップS6の後は、ステップS7でジョブ終了コマンド36をプリンタ2へ転送して、ドライバの処理ルーチンを終了する。
【0058】
ステップS3でNOならば、ステップS8でアプリケーションからページの開始を指示されたかチェックする。YESならステップS9で同じ文書内の前のページが存在し、前のページにイメージが含まれていたかチェックする。つまり、前のページのフレームバッファに何らかのイメージの展開があったかどうかチェックする。ここで、YESなら、ステップS10でイメージブロックの貼り付け位置を示す位置移動コマンド33を転送し、ステップS11で種別5の種別コマンド34と、イメージブロックコマンド45,46,47,48をプリンタへ転送し、ホスト1上のフレームバッファをクリアする。
【0059】
ステップS9でNOの場合、あるいはステップS11の後は、ステップS12でページ開始コマンド32をプリンタ2へ転送してからステップS2の直前に戻り、アプリケーションからの次の指示を待つ。
【0060】
ステップS8でNOの場合は、アプリケーションから文字の印字を指示されていて、その文字はこの文書内で初めて出現したものかステップS13でチェックする。YESならばステップS14へ移り、位置移動コマンド33をプリンタ2へ転送し、ステップS15で登録文字数の限界を超えたかどうかチェックする。限界を超えていないのならば、ステップS16で種別2の種別コマンド34、つまり、文字の登録+印字コマンド41,42,43,44をプリンタ2へ転送する。ステップS15で登録文字数の限界を超えていると判断したならば、ステップS17で種別3の種別コマンド34、つまり、文字イメージの印字のみのコマンド43,44をプリンタ2へ転送する。ステップS16、あるいは、ステップS17の後は、ステップS2の直前に戻り、アプリケーションからの次の指示を待つ。
【0061】
ところで、ステップS17では文字のドットイメージをプリンタ2へ転送するが、ドットイメージの貼り付けだけを行ない、文字のドットイメージの登録は行わないコマンドを使用している。しかし、別の方法としては、登録文字数の限界を超えた場合は、ホスト1上のフレームバッファ上に、文字のドットイメージを直接展開してしまう方法も考えられる。この場合は、ステップS6かステップS11で、1ページが単一のイメージブロックとしてプリンタ2へコマンドが転送される。
【0062】
ステップS13でNOならば、アプリケーションからの印字の指示が、その文字について二度目以降の指示かステップS18でチェックする。YESならばステップS19で印字位置を指示する位置移動コマンド33をプリンタ2へ転送し、ステップS20で種別4の種別コマンド34、つまり、文字コード印字コマンド41,42をプリンタ2へ転送し、その後はステップS2の直前に戻り、アプリケーションからの次の指示を待つ。
【0063】
ステップS18でNOならば、ステップS21でアプリケーションから文字印字以外の、罫線描画、図形描画、イメージの貼り付け、あるいは、その他の描画の指示があったと考えられるので、それら全てをホスト1上のフレームバッファにイメージとして展開し、その後はステップS2の直前に戻りアプリケーションからの次の指示を待つ。
【0064】
ホスト1では以上の手順によって印刷データをコマンドの列としてプリンタに送り付ける。
【0065】
(受信管理プログラム)
図9,10は、プリンタ2における受信管理プログラム51の動作を説明するためのフローチャートである。このプログラムはプリンタ2の電源立ち上げと同時に動作を開始する。
【0066】
まず、ステップS31で受信バッファ10、フレームバッファ11、ワーク領域12内にあるページ管理表13、登録文字管理表14等をクリアする。ステップS32で、受信部6に受信データ書き込みの限界値、つまり図6で説明した限界ポインタ61の値を、受信バッファの最大値にセットする。ここで受信部6は、受信バッファの大きさまでフルに書き込める。そのあと、ステップS33でユーザがプリンタを電源オフしたかチェックし、YESならこのプログラムの処理を終了する。
【0067】
ステップS33でNOなら、ステップS34で受信部6から受信開始の知らせがあったかチェックする。受信開始の知らせとは、受信部6がホスト1から受け取った転送データの中から、ジョブ開始コマンド31を検知したかどうかの知らせである。ステップS34でNOなら、ステップS33の直前に戻り、ループを形成してホスト1からのプリントコマンドの転送を待つ。
【0068】
ステップS34でYESなら、ステップS35で受信部6へ受信データの受信バッファ10への書き込みを指示する。
【0069】
なお受信部6は、ジョブ開始コマンド31を検知したら、まずホスト1からの受信を一時停止し、受信管理プログラム51に対してジョブ開始コマンド31を検知したことを知らせ、それから受信管理プログラム51から受信データの受信バッファ10への書き込みが指示されるまで待つ。これがステップS35に相当する。また、受信部6は、ジョブ開始コマンド31を検知するまでの受信データは全て捨てる。つまりホスト1からデータは受信するが、受信バッファ10には書き込まない。
【0070】
ステップS35の後は、ステップS36で1秒待つ。この1秒の間に、受信部6が受信データの受信バッファ10への書込みを進める。そのあとステップS37で、受信部6からページ開始コマンド32、あるいは、ジョブ終了コマンド36を検知したかどうかの知らせをチェックし、YESならステップS38でページ管理表13に受信したページの登録を行なう。このとき、単一のページだけでなく、複数のページを同時にページ管理表13に登録することも有り得る。つまり、ステップS37の時点で、いくつかのページ開始コマンドやジョブ終了コマンドが重なっていることも有り得る。
【0071】
そして、ステップS39で受信部6からの知らせの中身に、ジョブ終了コマンド36が含まれていたかチェックし、YESならステップS48で受信部6に書き込み終了を指示してから、ステップS33の直前に戻り、ループを形成して次のジョブの受信を待つ。ステップS39でNOなら、ステップS36の直前に戻り、ループを形成して、受信データの受信バッファ10への書込みを続ける。
【0072】
なお、受信部6はジョブ終了コマンドを検知したら、一旦データ受信を停止する。つまり、複数のジョブの連続がホスト1から送られてきても、一気に受信バッファ10に勝手に書き込むのではなく、受信管理プログラム51の指示のもとで、ジョブ単位に受信バッファ10への書込みを行なう。
【0073】
ステップS37でNOなら、ステップS40で受信部6から受信データの書き込みが指定された限界値に達したとの知らせがあったかチェックする。NOならステップS36の直前に戻ってループを形成し、受信部6による受信データの書き込みを続ける。ステップS40でYESなら新しい限界値を受信部6に指示可能かステップS41でチェックし、YESならステップS42で新しい限界値を受信部6に知らせて、その後はステップS36の直前に戻り、ループを形成して受信部6による受信データの受信バッファ10への書き込みを続ける。
【0074】
ステップS41でNOなら、受信データが大きすぎるかステップS43でチェックする。“大きすぎる”とは、受信バッファ10を全て使ってもある1ページ分のデータが受信しきれないことを示している。大きすぎると判断できた場合は、ステップS44でプリンタ2のパネル上にエラー表示を行ない、ステップS45で、受信バッファ10、フレームバッファ11、ワーク領域12内にあるページ管理表13、登録文字管理表14等をクリアし、ステップS46で受信部6に対し、受信データ書き込みの限界値を受信バッファの最大値とセットする。その後、ステップS48で受信部6に書き込み終了を指示してから、ステップS33の直前に戻り、ループを形成して次の文書のジョブ開始の知らせを待つ。これによって、大きすぎてエラーとなってしまったページを含んだ文書ジョブは、巨大なページ以降、全て受け捨てられる。
【0075】
なお、ステップS44で、“プリンタ2のパネル上にエラー表示”と記載したが、パネルは図1のブロック構成図では記載、説明していない。しかし、通常のプリンタ等では、“印刷可”の状態なのか“エラー”の状態なのか“用紙なし”の状態なのか区別するために、プリンタ2の前面か上面に液晶パネルか状態表示ランプが設置されているのが普通である。詳細な説明は省略する。
【0076】
(受信部6)
図11,12は、受信部6の動作を説明するためのフローチャートである。図9,10では、受信管理プログラム51の動作を説明する際に、ついでに受信部6の動作も言葉で説明したが、ここでフローチャートとして説明する。受信部6はハードウェアの回路であって、通常のプログラムとは異なるが、動作の順序をフローチャートで説明する。
【0077】
受信部6は、プリンタ2の電源オンと同時に動作を開始するが、まず、ステップS51で受信を一旦停止する。これは、プリンタ2側をビジー状態として、ホスト1からのデータ転送を拒否することである。そのあと、ステップS52で、受信管理プログラム51から受信バッファ10上の書き込み位置の限界値の指示があるまで待ち、指示があったなら、ステップS53でホスト1からのデータの受信は可能だが、受信したデータは受け捨てる状態とする。
【0078】
そして、ステップS54で、ユーザがプリンタ2の電源をオフしたかチェックし、YESなら受信部6の動作を終了する。NOならステップS55で受信したデータからジョブ開始コマンド31を検知したかチェックし、NOならステップS54の直前に戻り、ホスト1からのジョブ開始コマンド31を待ち受ける。
【0079】
ステップS55でYESなら、ステップS56で一旦受信を停止し、ステップS57でジョブ開始コマンド31を検知したことを受信管理プログラム51へ知らせる。受信を一旦停止するとは、プリンタ2がビジー状態で、ホスト1からのデータの受信を拒否している状態である。
【0080】
次に、ステップS58で受信管理プログラム51から受信バッファ10への書き込み開始の指示があるまで待ち、指示があったならステップS59でホスト1からの受信を行ない、受信したデータは受信バッファ10上に書き込む動作を開始し、続行する。そして、ステップS60でページ開始コマンド32を検知したかチェックし、YESならステップS61で受信管理プログラム51にページ開始コマンド32を検知したことを知らせる。この時点で、受信管理プログラム51は、受信文書のページ位置をページ管理表13に記録する。ステップS61の後は、ステップS59の直前に戻り、受信と書き込みを実行する。
【0081】
ステップS60でNOなら、ステップS62でジョブ終了コマンド36を検知したかチェックし、YESならステップS63で受信を一旦停止し、ステップS64でジョブ終了コマンド36を検知したことを受信管理プログラム51に知らせる。この時点で、受信プログラム51は、ジョブの終了をページ管理表13上に記録する。
【0082】
次にステップS65で、受信管理プログラム51から受信は可だが受信したデータは受け捨てる、との指示があるまで待ち、指示があったならステップS53の直前に戻り、次の文書のジョブ開始コマンド31を待つ。
【0083】
ステップS62でNOなら、ステップS66で受信バッファ10上への書き込み位置が限界に達してしまったかチェックし、YESならステップS67で受信を一旦停止し、ステップS68で受信管理プログラム51へ受信バッファ10への書き込みが限界に停止したことを知らせる。
【0084】
次に、ステップS69で受信管理プログラム51から受信バッファ10上の新しい書き込み位置の限界値の指示があったかチェックし、NOならステップS70で受信管理プログラム51から書き込み終了の指示があったかチェックする。ステップS70でNOならステップS69の直前に戻り、ループを形成する。つまり、受信管理プログラム51からの新しい限界値の指示か、書き込み終了の指示があるまで待つ。なお、ステップS70で、受信管理プログラム51から書き込み終了の指示があると判定されるのは、1ページ分のデータが大きすぎて、受信バッファ10全部の領域を使っても、1ページ分のデータが納まりきらなくてエラーとなったときである。
【0085】
ところで、ステップS69でNOの場合はステップS59の直前に戻り、受信と書き込みを続行する。また、ステップS70でYESの場合はステップS53の直前に戻り、以後のデータはジョブ開始コマンド31が来るまでは受信しても全て受け捨てる。つまり、大きすぎてエラーとなった文書のジョブは、受け捨てられる。
【0086】
ところで、ステップS66でNOの場合もステップS59に戻り、データの受信と受信バッファへの書き込みが続行される。
【0087】
(解析プログラム)
図13,14は、解析プログラム52の動作を説明するためのフローチャートである。解析プログラム52は、プリンタ2の電源オンとともに立ち上がり、以後、受信部6によって書き込まれた受信バッファ10の中のプリントコマンドの解析を行なう。
【0088】
まず、ステップS81で、ユーザがプリンタ2を電源オフしたかチェックし、YESならこのプログラムの処理を終了する。NOならステップS82で受信バッファ10内に受信済みのページのデータがあるかチェックし、ないならばステップS81の直前に戻り、ループを形成してホスト1からのデータの受信を待つ。なお、ステップS82では、ページ管理表13を調べることによって、受信済みのページが存在するかどうかをチェックする。ページ管理表13は、図9,10で説明したような動作で、受信管理プログラム51が管理を行なっている。
【0089】
ステップS82でYESならば、以後そのページのプリントコマンドを次々と解析して処理してゆくわけだが、まずステップS83で最初のコマンドが位置移動コマンド33かチェックする。YESならステップS84でカーソルの移動を行なう。ここで言うカーソルとは、フレームバッファ11上の文字、あるいは、イメージを展開する注目位置を示すための概念上のポインタである。具体的には、ワーク領域12上にX座標、Y座標を示す変数として、確保されている。ステップS84の後はステップS96へ飛ぶ。
【0090】
ステップS83でNOならば、ステップS85でそのコマンドが種別コマンド34で種別1か、すなわち文字登録コマンドかチェックし、YESならばステップS86で文字登録プログラム53による文字の登録処理を行なってからステップS96へ飛ぶ。文字の登録処理の詳細については、後述の図15で説明する。
【0091】
ステップS85でNOならば、ステップS87でそのコマンドが種別コマンド34で種別2か、すなわち文字登録・印字コマンドかチェックし、YESならばステップS88で文字の登録処理を行ない、ステップS89で印字処理を行なってからステップS96へ飛ぶ。ステップS88の文字登録処理と、前述のステップS86の文字の登録処理は同一である。また、ステップS89の印字処理は、印字プログラム54によって行なわれるが、詳細は後述の図16で説明する。
【0092】
ステップS87でNOならば、ステップS90でそのコマンドが種別コマンド34で種別3か、すなわち文字イメージ印字コマンドかチェックし、YESならばステップS91で文字イメージの印字処理のみを行ない、そのあとステップS96へ飛ぶ。
【0093】
ステップS90でNOならば、ステップS92でそのコマンドが種別コマンド34で種別4か、すなわち文字コードコマンドかチェックし、YESならばステップS93で印字処理を行ない、そのあとステップS96へ飛ぶ。ステップS93の印字処理は、前述のステップS89の印字処理と同一である。
【0094】
ステップS92でNOならば、ステップS94でそのコマンドが種別コマンド34で種別5か、すなわちイメージブロックコマンドかチェックし、YESならばステップS95でイメージ伸長回路を使用して、圧縮イメージデータの伸長作業をし、伸長したイメージブロックのフレームバッファ11への貼り付け作業を行ない、そのあとステップS96へ飛ぶ。
【0095】
ステップS84、ステップS86、ステップS89、ステップS91、ステップS93、ステップS95のあとか、あるいはステップS94でNOならばステップS96へ移る。ステップS96では、そのページの受信データで、解析していないコマンドがまだ残っているかチェックし、残っているならばステップS83の直前に戻ってその未解析コマンドの解析処理を行なう。
【0096】
ステップS96で、そのページについて未解析のコマンドは残っていないと判断されたなら、ステップS97で排紙プログラム55による排紙処理を行なう。排紙処理については、後述の図17で詳細を説明する。
【0097】
そのあと、ステップS98でページ管理表13上で、排紙済みのページをクリアし、ステップS99でフレームバッファ11をクリアし、ステップS100でそのジョブの全てのページの排紙処理が完了したかチェックし、ここでNOならばステップS81の直前に戻り、その文書の後続のページのデータ受信を待つ。
【0098】
ステップS100でYESなら、ステップS101で登録文字管理表14をクリアしてから、ステップS81の直前に戻り、次の文書のジョブのデータ受信を待つ。
【0099】
なお、ステップS98では、ページ管理表13上のページの登録をクリアしているが、受信管理プログラム51は、この領域がクリアされていることをチェックして、受信部6に対して新しい受信データ書き込みの限界値の指示を行なう。
【0100】
(文字登録プログラム)
図15は文字登録プログラム53の動作の詳細を説明するためのフローチャートである。
【0101】
このプログラムは解析プログラム52からコールされる。まず、ステップS111で圧縮された文字のドットイメージデータを、そのまま登録文字データ領域15へ移し替える。そして、ステップS112で登録文字管理表14内に登録アドレスや書体番号、文字コード等を記録し、処理を終了する。
【0102】
(印字プログラム)
図16は印字プログラム54の動作の詳細を説明するためのフローチャートである。このプログラムも、解析プログラム52からコールされる。
【0103】
まず、ステップS121で、書体41と一致する書体番号で、かつ文字コード42と一致する文字コードの登録文字のアドレスを、登録文字データ領域15から得る。そして、ステップS122で、そのアドレスの圧縮ドットイメージを文字伸長回路17で伸長し、ステップS123で伸長済みの文字のドットイメージをフレームバッファ11上のカーソル位置に貼り付ける。そして、このプログラムの処理を終了する。
【0104】
(排紙プログラム)
図17は排紙プログラム55の動作の詳細を説明するためのフローチャートである。このプログラムも、解析プログラム52からコールされる。
【0105】
まず、ステップS131で、フレームバッファ11上の1ページ分のイメージを、ビデオ転送回路7でビデオ信号に変換してエンジン部4へ送る。そしてステップS132でエンジン部により印刷された用紙の排紙が確実に完了したかチェックを続け、完了したならこのプログラムの処理を終了する。排紙がまだ完了していない場合は、ステップS133でプリンタ2に「紙ジャム」エラーか、「用紙なし」エラーが発生したかチェックし、どちらも発生していなければステップS132の直前に戻ってループを形成し、排紙の完了の監視を続ける。
【0106】
「紙ジャム」エラーか「用紙なし」エラーが発生したならば、ステップS134で「紙詰まりが発生しました。つまった紙を取り除いてください」か「用紙がありません。用紙を追加してください」とプリンタのパネルに表示し、そのあとステップS135でユーザがつまった紙を取り除くか、あるいはなくなった用紙を追加するまで待ち、それが行なわれたならば、ステップS131直前に戻り、再度、同じページのビデオ信号の出力と排紙待ちを行なう。
<第1の実施の形態に特有の効果>
以上のような構成によって、本実施の形態の印刷システムは、以下のような特有の効果がある。
(1)本実施形態では、コントローラ部3のCPUは、メモリ管理と登録文字データの移し替えだけを行なうので高性能なプロセサは不要であり、製造コストを低く抑えられる。データの受信とメモリへの書き込みや、圧縮データの伸長作業、ビデオ信号の出力作業等は全てハードウェアの回路で行なわれる。このため、イメージ転送だけを前提としたホストベースプリンタ等と比べても、大きなコストアップにはならない。
(2)ホストでの文字イメージの展開処理がほとんど不要なので、ホストのプリンタドライバの処理時間が少なくて済む。文字を含めて、全てイメージデータで送らなければならないホストベースプリンタ等では、文字展開処理にホストの処理時間を割かれてしまうが、ホストの印刷のために要する時間を軽減できる。
(3)文字は、ほとんど文字コードで送れるので、プリンタへのデータ転送量が少なくて済む。文字を含めて、全てイメージで送らなければならないホストベースプリンタ等では、プリンタへのデータ転送量が膨大になる。このため、印刷に要する時間を短くできる。
(4)1ページ分のフレームバッファをコントローラ部に持ち、1ページ分の文字やイメージの展開がフレームバッファ上で完全に完了した時点で用紙への印刷を開始するので、バンド処理を前提としたプリンタでは特有の障害であるオーバーランエラーは発生しない。
(5)ホストベースプリンタではわずかな受信バッファしかなく、プリンタの用紙の給送にあわせて、ホストからバンドに分割したイメージを連続的にプリンタに送る必要がある。この場合、ホストはプリンタへのデータ転送を最優先にするために、ホスト上の他のアプリケーションの動きがロックする、というような現象がある。しかし、本実施の形態では、1ページ分のフレームバッファをコントローラ部に持っていって、1ページ分の文字やイメージの展開がフレームバッファ上で完全に完了した時点で、用紙への印刷を開始するので、ホスト上でのロックの現象等は発生しない。
[第2の実施の形態]
次に、図を用いて第2の実施の形態の印刷システムを説明する。
<システムの構成>
第1の実施の形態では、文字データ、イメージデータをRAM9上のフレームバッファ11に展開してから、エンジン部4へビデオ転送しているが、第2の実施の形態では、文字データ、イメージデータをRAM9上のふたつのバンドメモリ上へ交互に展開してエンジン部4へビデオ転送する点が、大きな違いである。
【0107】
図18は、システム全体を説明するためのブロック構成図である。大部分は図1で説明した各要素と一致するが、異なる部分だけ説明する。
【0108】
RAM9上には、フレームバッファ11の代わりに、ふたつのバンドメモリとしてバンドA71、バンドB72が設けられ、またビデオ転送回路7の代わりに、イメージ伸長・ビデオ転送回路73が設けられている。イメージ伸長・ビデオ転送回路73は、バンドA71、バンドB72のメモリイメージを交互に、ビデオ信号に変換してエンジン部4へ転送する。それに加えて、ドライバから送られてくるあるバンドのデータが何も含まれていない空白のバンドのときは、その部分のビデオ信号は転送しない機能を持つ。さらに、ドライバから送られてくるあるバンドの圧縮イメージデータに、単一のイメージブロックしか含まれていないときは、その圧縮されたイメージブロックをバンドに展開せず、イメージデータに伸長するとともにビデオ信号に変換してエンジン部4へ転送する機能を待つ。つまり、3つの機能を合わせ持っている。
【0109】
なお、受信バッファ10に格納されているデータは、第1の実施の形態では、ページごとに文字データ、イメージデータが並んでいるだけだが、本実施の形態では、ページの中がさらに16のバンドに区別されて、バンドの区分の中に、文字データ、イメージデータがそれぞれ並んでいる。もちろん、ホスト1上のプリンタドライバがこのような並びとしてプリンタ2へデータを出力している。
【0110】
図19はプリンタ2内での、コントローラ部3におけるイメージと文字のビデオ信号出力の原理の説明図である。イメージと文字とは4つの径路によりエンジン部4に転送される。第1は、イメージだけのバンドの通る径路で、バンドメモリを経由しない径路である。イメージ伸長・ビデオ転送回路73は、単一のイメージだけのバンドを伸長すると、そのままプリンタエンジンに転送する。第2及び第3は、文字を含むバンドの通る径路で、いったんバンドA71またはバンドB72に展開し、これらから交互にエンジン部に転送される。第4は、空白のバンドに対する径路で、ビデオ信号は転送されない。このように、イメージ伸張・ビデオ転送回路73の機能により4つの径路が提供されている。
【0111】
図18でも一部説明したが、ホスト1上のドライバは印刷しようとする文書について、まず文字部分と、その文字以外の部分に分離する。文字以外の部分はホスト1上のフレームバッファ上に全てイメージとして展開しておく。そして、1ページを16分割したバンドごとに、文字データ部分とイメージデータ部分を別々にプリンタ2へ転送する。その際、文字部分については、まず出現する文字の圧縮したドットパターンをプリンタへ送って登録しておき、印字データとして文字コード列を送る。文字の登録については、第1の実施の形態と同様に、ひとつの文書ごとに、一文字については一度登録すれば良い。また、ひとつの文書ジョブの印刷が終了すれば、登録した文字は消去される。
【0112】
バンドの高さについては、16分割されたバンドはそれぞれ同一である。つまり均等に分割されている。
【0113】
ふたつのバンドにまたがった文字については、それぞれのバンドに印字コードが所属する形でドライバからプリンタ2へ転送される。
【0114】
大きな文字については、イメージとして展開されてからドライバからプリンタ2へ転送される。文字伸長回路17が扱える文字の大きさには限界があり、その限界よりも大きな文字は、上記のようにイメージとして処理される。
【0115】
ホスト1上のフレームバッファに展開されたイメージは、全体を16のバンドに分割され、さらにバンド内で実際にイメージのある矩形部分だけを取り出して圧縮されて、単一のイメージブロックとしてドライバからプリンタ2へ転送される。図19では、イメージデータの点線で囲んだ部分だけが実際にイメージブロックとして転送されることを示している。
【0116】
プリンタ2のコントローラ部3では、あるバンドがイメージブロックと文字データを両方とも含んでいる場合は、受信した圧縮イメージデータ19をイメージ伸長回路16を使って伸長し、バンドA71か、バンドB72上に展開する。また、受信した文字データ18を、それに含まれる文字コードごとに、登録されている圧縮ドットイメージデータを文字伸長回路17によって伸長し、バンドA71か、バンドB72上に展開する。文字とイメージは論理和をとられ、バンド上に書き込まれる。
【0117】
なお、奇数の番号のバンドのときは、バンドA71へ展開し、偶数の番号のバンドのときはバンドB72へ展開する。
【0118】
バンドA71への文字及びイメージの展開が終わったら、イメージ伸長・ビデオ転送回路73へエンジン部4へのビデオ転送を指示し、この回路によるビデオ信号の出力中にバンドB72への文字とイメージの展開を行なう。バンドB72への展開が終り、先に指示していたバンドA71のビデオ出力が終わったなら、バンドB72のビデオ信号出力をイメージ伸長・ビデオ転送回路73に指示する。そして、バンドA71への文字とイメージの展開を開始する。
【0119】
以上のような、ふたつのバンドメモリへの文字とイメージの展開と、ビデオ信号の出力を行なうことで、1ページ分の印刷を行なう。
【0120】
文字だけしか含まれていないバンドのときも同一の動作である。
【0121】
なお、文字もイメージも含まれていない空白のバンドのときは、イメージ伸長・ビデオ転送回路73は、バンド高さ分、ビデオ信号をエンジン部4へ送らない。
【0122】
また、あるバンドにイメージのブロックだけしか含まれていないときは、イメージ伸長・ビデオ転送回路73に対して、イメージブロックのデータ伸長とビデオ信号のエンジン部4への出力を指示する。つまり、バンドメモリへのイメージ展開を経由せずに、直接エンジン部4へのビデオ転送を行なうわけである。
【0123】
図19には、上記4つの経路でビデオ信号が出力されることが図示されている。これらの経路が混合した形で1ページの印刷が行なわれる。
【0124】
図20は、ホスト1からプリンタ2へ送られる文字データ、イメージデータのコマンド構造の説明図である。第1の実施の形態の図3との違いは、ページ開始コマンド32のあとに、バンド開始コマンド81があることである。
【0125】
バンド開始コマンド81は、1ページ当たり16個繰り返される。文字データやイメージデータがないバンドについても、バンド開始コマンド81は発行される。
【0126】
なお、種別コマンド34ごとのコマンド列35の構造は、第1の実施の形態の図4と同一なので説明は省略する。
【0127】
図21は、コントローラ部3のROM8に内蔵されているプログラムを説明するための図である。第1の実施の形態にあった排紙プログラム55はこの図にはないが、解析プログラム52が、バンドごとの解析と、バンドごとのビデオ出力、排紙作業を行っている。受信管理プログラム51及び文字登録プログラム53は、第1の実施の形態と全く同じであるが、解析プログラム52及び印字プログラム54については後述のフローチャートで動作の詳細を説明する。
【0128】
第1の実施の形態では、受信バッファ10内の受信したデータの書き込み処理が進行する際の各ポインタの位置関係を図6で説明した。第2の実施の形態でも受信バッファへの書き込み処理の動作は全く同一なので説明は省略する。
【0129】
また、ワーク領域12には、ページ管理表13、登録文字管理表14、登録文字データ領域15等が存在するが、この部分についても第1の実施の形態と同一なので説明は省略する。
<システムの制御手順>
次に、本発明の第2の実施の形態の動作をフローチャートを用いて説明する。
【0130】
図22〜24は、ホスト1上のプリンタドライバの動作を説明するフローチャートである。プリンタドライバは、ユーザが用いるアプリケーションソフトで作成した文書データから図20で説明した文字やイメージのプリンタコマンドを作成、プリンタ2へ転送する。ユーザがアプリケーションソフトから文書の印刷を指示すると、ホスト1内でプリンタドライバが起動される。
【0131】
図示されてはいないが、ドライバは起動時にはホスト1のメモリ上に1ページ分の大きさのイメージ展開領域としてのフレームバッファを確保し、同時にフレームバッファをクリアする。また、ドライバの文書印刷処理の終了時には、フレームバッファとして使われていたメモリ領域は開放される。
【0132】
処理としては、まずステップS141でジョブ開始コマンド31をプリンタ2へ転送し、次にステップS142で変数mに印刷しようとしている文書のページ数に1を加算した値をセットし、ステップS143で、処理中のページ番号を示す変数mpに1をセットする。そして、ステップS144で変数mpが変数mより小さいかチェックし、NOなら文書の全てのページ数の処理が終わったので、ステップS172でジョブ終了コマンドを転送して、ドライバの処理を終了する。
【0133】
ステップS144でYESなら、ステップS145でページ開始コマンド32をプリンタ2へ転送し、ステップS146でmpページ目のアプリケーションからの文字印字指示を蓄積し、ステップS147で蓄積した文字印字指示を印字位置でソーティングし、ステップS148でmpページ目のアプリケーションからの文字印字指示以外の描画指示をホスト1上のフレームバッファに展開する。ここで文字印字指示以外の描画指示とは、罫線や図形描画、イメージの貼り付け等である。
【0134】
また、ステップS147における文字印字指示の印字位置によるソーティングとは、文字印字指示を、用紙の長手方向についての印字位置でソーティングを行い、次に、用紙の短手方向についての印字位置でソーティングを行なう。これにより、文字印字の指示は、指示される印字位置が、縦長の用紙で左上から右下へ順に並ぶように並べ替えられた。
【0135】
次にステップS149で変数nに17をセットする。17と言う値は、用紙サイズを長手方向に均等に16バンドに分割する意味での「16」の値に1を加算した値である。そしてステップS150で処理中のバンド番号を示す変数npに1をセットする。ステップS151で変数npが変数nより小さいかチェックし、NOなら1ページの16個のバンド処理が終了したことを意味するので、変数mpに1を加算して、ステップS144の直前に戻り、次のページのバンド出力処理に移る。
【0136】
ステップS151でYESなら、ステップS153でバンド開始コマンド81をプリンタ2へ転送し、ステップS154で蓄積したアプリからの印字指示からnpバンド目に含まれる文字印字指示をピックアップし、ステップS155で変数sにピックアップした文字数に1を加算した値をセットして、ステップS156で、処理中の文字が1つのバンドにおいて何番目であるか示す変数spヘ1をセットする。
【0137】
なお、ステップS154でピックアップする文字印字指示は、npバンド目に文字の一部でもかかっているものは全てピックアップする。よって、文字の印字位置によっては、ふたつのバンドにまたがる場合がある。
【0138】
次にステップS157で変数spが変数sより小さいかチェックし、NOならnpバンド目に含まれる文字データの転送処理は全て済んだことになるので、ステップS158以降でnpバンド目のイメージデータの転送処理に移る。つまり、ステップS158では、ホスト上のフレームバッファから、npバンド目の位置と大きさのイメージを切り出し、ステップS159で空白のバンドかチェックし、YESなら何もせずステップS163に移る。
【0139】
ステップS159でNOなら、ステップS160でイメージが実際に含まれる矩形領域を、単一のブロックとして切り出し、まずステップS161でブロックの貼り付け位置を示す位置移動コマンド33をプリンタ2へ転送し、ステップS162で種別5に対応するコマンド、つまりイメージブロックコマンド45,46,47,48をプリンタ2へ転送する。当然ながら、イメージブロックデータはデータ圧縮されて転送される。
【0140】
そして、ステップS163で変数npに1を加算し、ステップS151の直前に戻り、次のバンドの転送処理に移る。
【0141】
ステップS157でYESの場合は、ステップS164でsp番目の文字はこの文書で初めて現れる文字の印字の指示かチェックし、初めてならばステップS165で印字位置を示す位置移動コマンド33をプリンタ2へ転送し、ステップS166でプリンタ2側が登録可能な文字数の限界に達したかチェックし、限界に達したならステップS167で種別3に対応するコマンド、つまり、文字イメージ印字のみのコマンド43,44をプリンタ2へ転送して、ステップS171へ移る。
【0142】
ステップS166で限界に達していないと分かれば、ステップS168で種別2に対応するコマンド、つまり文字登録+印字コマンド41,42,43,44をプリンタ2へ転送してからステップS171ヘ移る。当然ながら、プリンタ2へ転送される一文字のドットイメージは、データ圧縮されて転送される。
【0143】
ステップS164でNOならば、この文字の印字の指示が文書の中で二度目以降の指示であることを示しているので、ステップS169で印字位置を示す位置移動命令33をプリンタ2へ転送し、次にステップS170で種別コマンド34が4、つまり文字コード印字コマンド41,42をプリンタ2へ転送する。
【0144】
そして、ステップS171で変数spに1を加算してステップS157の直前に戻り、次の文字データのプリンタ2への転送処理を行なう。
【0145】
図25,26、図27,28は、解析プログラム52の動作を説明するためのフローチャートである。解析プログラム52もプリンタ2の電源オンとともに立ち上がり、以後、受信部6によって書き込まれた受信バッファ10の中のプリントコマンドの解析、及び排紙処理を行なう。
【0146】
まず、ステップS181でユーザがプリンタ2を電源オフしたかチェックし、YESならこのプログラムの処理を終了する。NOならステップS182で受信バッファ10内に受信済みのページのデータがあるかチェックし、ないならばステップS181の直前に戻りループを形成してホスト1からのデータの受信を待つ。
【0147】
なお、ステップS182では、ページ管理表13を調べることによって、受信済みのページが存在するかどうかをチェックする。ページ管理表13は、第1の実施の形態の図8のフローチャートで説明したような動作で受信管理プログラム51が管理を行なっている。
【0148】
ステップS182でYESならば、以後そのページのプリントコマンドを次々と解析して処理してゆくわけだが、まず、ステップS183で変数nに「17」をセットする。「17」は1ページのバンド分割数「16」に1を加算した値である。次にステップS184で、変数npに1をセットし、ステップS185で変数npが変数nより小さいかチェックし、NOならバンドの処理が全て完了したことを示し、ステップS223へ飛び、排紙の完了を待つ。
【0149】
ステップS185でYESならステップS186でバンドnp番目のデータは、文字データもイメージデータもなく、空白バンドなのかチェックし、YESならステップS186で変数tに0をセットする。そしてステップS193へ飛ぶ。
【0150】
ステップS186でNOならステップS188でバンドnp番目のデータに文字データが含まれているかチェックし、YESならステップS189で変数npが奇数なら変数tに1をセットし、変数npが偶数なら変数tに2をセットし、ステップS193へ飛ぶ。
【0151】
ステップS188でNOならステップS190でバンドnp番目のデータに複数のイメージブロックデータが含まれているかチェックし、YESなら変数npが奇数なら変数tに1をセットし、変数nが偶数なら変数tに2をセットし、ステップS193へ飛ぶ。なお、図22で説明したドライバの動作では、ひとつのバンドに複数のイメージブロックが存在することは有り得ない。
【0152】
ステップS190でNOならバンドnp番目のデータとしては、単一のイメージブロックしか存在しないことを示しているが、ステップS192で変数tに3をセットして、ステップS193へ飛ぶ。
【0153】
ステップS193では、変数tが1、あるいは2かチェックし、YESならステップS194以降でバンドnp番目に含まれる文字データやイメージブロックデータを先頭から解析して行き、バンドA71、バンドB72への展開処理を行なう。まず、ステップS194では、変数tが1ならバンドA71をクリアし、変数tが2ならバンドB72をクリアする。そして、ステップS195で解析しようとしているコマンドが、位置移動コマンド33かチェックする。YESならステップS196でカーソルの移動を行なう。ここで言うカーソルとは、バンドメモり上で文字、あるいは、イメージを展開する位置を示すための概念上のポインタである。具体的には、ワーク領域12上にX座標、Y座標を示す変数として確保されている。カーソル位置は、バンドの左上端を原点としている。ドライバから送られてくる位置移動コマンド33も、各バンドの左上端を原点と考える相対位置を前提として転送されてくる。ページの左上端を原点としているわけではない。ステップS196のあとは、ステップS208へ飛ぶ。
【0154】
ステップS195でNOならば、ステップS197でそのコマンドが種別コマンド34で種別が1かチェックし、YESならばステップS198で文字登録プログラム53による文字の登録処理を行なってから、ステップS208へ飛ぶ。文字の登録処理は、第1の実施の形態の図15のフローチャートで説明した動作と同じであるので、詳細な説明は省略する。
【0155】
ステップS197でNOならば、ステップS199でそのコマンドが種別コマンド34で種別が2かチェックし、YESならばステップS200で文字の登録処理を行ない、ステップS201で印字処理を行なってからステップS208へ飛ぶ。ステップS200の文字の登録処理と、前述のステップS198の文字の登録処理は同一である。また、ステップS201の印字処理は、印字プログラム54によって行なわれるが、詳細は後述の図29で説明する。
【0156】
ステップS199でNOならば、ステップS202でそのコマンドが種別コマンド34で種別が3かチェックし、YESならばステップS203で文字イメージの印字処理のみを行ない、そのあとステップS208へ飛ぶ。
【0157】
ステップS202でNOならば、ステップS204でそのコマンドが種別コマンド34で種別が4かチェックし、YESならばステップS205で印字処理を行ない、そのあとステップS208へ飛ぶ。ステップS205の印字処理は、前述のステップS201の印字処理と同一である。
【0158】
ステップS204でNOならば、ステップS206でそのコマンドが種別コマンド34で種別か5かチェックし、YESならばステップS207でイメージ伸長回路16を使用して、圧縮イメージデータの伸長作業をし、伸長したイメージブロックのバンドメモリ71,72への貼り付け作業を行なう。その際、変数tが1なら、バンドA71への貼り付けを行ない、変数tが2ならバンドB72への貼り付けを行なう。そして、ステップS208へ飛ぶ。
【0159】
ステップS196、ステップS198、ステップS201、ステップS203、ステップS205、ステップS207のあとか、あるいはステップS206でNOならばステップS208へ移る。ステップS208では、バンドnp番目の受信データで、解析していないコマンドがまだ残っているかチェックし、残っているならば、ステップS195の直前に戻って、その未解析コマンドの解析処理を行なう。
【0160】
ステップS193でNOの場合、あるいはステップS208でNOの場合は、図27のステップS209へ飛ぶ。ステップS209以降、ステップS222まではバンド単位のエンジン部4へのビデオ信号出力処理を示している。
【0161】
まず、ステップS209では、変数npが1かチェックする。つまり、あるページの最初のバンドかチェックする。最初のバンドであれば、ステップS210でエンジン部4に給紙開始を指示して、ステップS211で用紙があるかチェックし、用紙なしならばステップS212でユーザが用紙を追加セットするまで待ち、それからステップS215へ飛ぶ。ステップS211でNOならば、つまり用紙があるならステップS215へ飛ぶ。
【0162】
ステップS209で最初のバンドではないと判断されたならば、ステップS213で前のバンドのビデオ転送処理が終了するまで待つ。但し、待っている間に、紙ジャム、つまり紙詰りが発生しているかをステップS214で常に監視している。仮に紙ジャムが発生しているのならば、ステップS214からステップS228へ飛び、紙ジャムからの復帰処理を行なう。
【0163】
ステップS213でYESなら、つまり前のバンドのビデオ転送が終了したなら、ステップS215で変数tが0かチェックし、YESならステップS216でイメージ伸長・ビデオ転送回路73に空白バンドの出力処理を指示してステップS222へ飛ぶ。
【0164】
ステップS215でNOなら、ステップS217で変数tが1かチェックし、YESならステップS218でイメージ伸長・ビデオ転送回路73にバンドA71のビデオ信号出力指示を行ない、ステップS222へ飛ぶ。
【0165】
ステップS217でNOならば、ステップS129で変数tが2かチェックし、YESならステップS220でイメージ伸長・ビデオ転送回路73にバンドB72のビデオ信号出力指示を行ない、ステップS222へ飛ぶ。
【0166】
ステップS219でNOならば、ステップS221でイメージ伸長・ビデオ転送回路73にnp番目のバンドデータに含まれる単一イメージブロックを、圧縮イメージのデータ伸長をしながらビデオ信号を出力することを指示して、ステップS222へ飛ぶ。
【0167】
ステップS222では変数npに1を加算してから、ステップS185の直前に戻り、次のバンドデータのバンドメモリへの展開、及びビデオ信号出力処理へ移る。
【0168】
ステップS185でNOの場合は、バンド出力処理がすべて終了して、あとはステップS223以降で印刷された用紙の排紙の完了を待つだけとなるが、まず図28のステップS223で排紙が完了したかチェックし、NOならばステップS227で紙ジャム、つまり紙詰まりが発生したかチェックし、NOならばステップS223の直前に戻りループを形成して排紙の完了まで待つ。
【0169】
ステップS223で、排紙が完了したと判断したならば、ステップS224でページ管理表13上の、排紙済みページの記述をクリアし、ステップS225でジョブ終了、つまり、一つの文書の全ページを排紙し終わったかチェックし、YESならステップS226で登録文字管理表14をクリアし、ステップS181の直前に戻って、次の文書のジョブのデータ受信を待つ。
【0170】
ステップS225でNOならば、この時もステップS181の直前に戻って、その文書の後続のページのデータ受信を待つ。
【0171】
ステップS227でYESならば、ステップS228で紙ジャム発生をパネル表示し、ステップS229でユーザが詰まった紙を取り除くまで待ち、取除いたことがわかればステップS181の直前まで戻り、もう一度前回処理を行なった受信済みページデータのバンドへの展開、ビデオ出力、排紙処理を試みる。
【0172】
なお、ステップS224では、ページ管理表13上のページの登録をクリアしているが、受信管理プログラム51は、この領域がクリアされていることをチェックして、受信部6に対して新しい受信データ書き込みの限界値の指示を行なう。
【0173】
図29は、印字プログラム54の動作の詳細を説明するためのフローチャートである。このプログラムも、解析プログラム52からコールされる。
【0174】
まず、ステップS231で、登録文字管理表14をサーチして、書体番号、文字コードの一致する登録文字の登録文字データ領域15上の登録アドレスを得る。そして、ステップS232で文字伸長回路17で圧縮された文字のどっちイメージデータを伸長し、ステップS233で貼り付ける文字がバンド境界上にかかってしまうかチェックし、境界上にかかってしまうと判断できれば、ステップS234で文字イメージの境界値処理を行ない、カーソル位置の微調整も行なってからステップS235へ移る。ステップS233でNOの場合も、ステップS235へ移る。
【0175】
ステップS234での境界値処理とは、1文字の文字イメージのうち、バンドの領域内にかかる部分だけ切り出してくることである。その小さなイメージ部分だけをバンド領域内にはるので、カーソル位置も微調整してバンド領域内に移動しなければならない場合がある。
【0176】
例えば、ある文字がバンドの上端の境界で文字ボックスの上半分ぐらいはみ出しているとする。カーソル位置は、文字ボックスの左上端なので、この時点ではバンド領域外にある。次に境界値処理を行なって、バンド領域内に収まる文字ボックスの下半分のイメージだけを切り出してくる。とすれば、下半分だけの文字の文字ボックスの左上端位置が、新しいカーソル位置となる。この位置は、バンド領域の上端の境界上に位置する。これが、「カーソル位置の微調整」の作業である。
【0177】
また、文字ボックスが、バンド領域の四隅にかかってしまう場合も、同様にバンド領域内にかかる部分の文字イメージの切り出しと、カーソル位置の微調整が行なわれる。
【0178】
ステップS235では、伸長済みの文字のドットイメージをバンドA71か、バンドB72上のカーソル位置に貼り付ける。図25で説明した変数tが1ならバンドA71に貼り付け、変数t2がバンドB72に貼り付ける。そして、このプログラムの処理を終了する。
【0179】
次に、図30〜図33で、イメージ伸長・ビデオ転送回路73の動作を説明する。イメージ伸長・ビデオ転送回路73はハードウェア回路であってプログラムではないが、その動作を図31,図32,図33のフローチャートを用いて説明する。なお、前述したように、解析プログラム52がイメージ伸長・ビデオ転送回路73に指示をして、エンジン部4に対してビデオ信号の出力を実行させる。イメージ伸長・ビデオ転送回路73の処理の中には、空白バンドの処理、バンドA71、バンドB72からのビデオ信号出力処理、圧縮されたイメージブロックデータから直接の圧縮イメージデータの伸長と、伸長したデータからのビデオ信号出力処理の3つが含まれる。
【0180】
また、図示はしていないが、イメージ伸長・ビデオ転送回路73の中には、イメージブロックデータから1ライン分、圧縮イメージデータを伸長したあとで、伸長したデータをとっておくためのラインバッファが内蔵されている。このラインバッファのデータをもとに、ビデオ信号を作成してエンジン部4に出力する。
【0181】
まず、図30では図31,図32,図33のフローチャートで用いる各変数の説明をする。
【0182】
変数hは、バンドの高さを示す。これは、ビデオ信号を出力する際のライン数に相当する。変数lは、バンドの幅を示す。この大きさはバイトを単位としている。つまり、8の倍数のドット数が、ビデオ信号の白黒のビットに変換されて出力される。
【0183】
変数haは、イメージブロックに到達するまでの上マージンである。ビデオ信号は、何も送る必要のない部分のライン数である。変数hbは、イメージブロックの高さ、つまりブロックのライン数である。
【0184】
変数laは、イメージブロックの左マージンである。この部分は、ビデオ信号は何も送る必要がない。変数lbは、イメージブロックの幅である。この値についても大きさはバイトを単位としている。つまり8の倍数のドット数が、ビデオ信号の白黒のビットに変換されて出力される。
【0185】
前述したホスト1上のドライバの動作としては、バンドやイメージブロックデータの幅方向は、“バイト単位の大きさ”に揃えることについては何も記述されていなかったが、ハードウェア回路を用いた高速なイメージ出力を可能にするには上記のような区切りの良くなる工夫が必要になる。ドライバも、このような工夫を前提としてプリントコマンドをプリンタ2へ転送する。
【0186】
次に、図31,図32,図33でイメージ伸長・ビデオ転送回路73の動作を説明する。
【0187】
この回路は、プリンタ2の電源オンと同時に動作を開始するが、まずステップS241でユーザがプリンタ2を電源オフしたかチェックし、YESならこのかいろは動作を終了する。NOならステップS242で解析プログラム52からのビデオ信号出力の指示があったかチェックし、NOならステップS241の直前に戻り、ループを形成して解析プログラム52からの指示を待つ。
【0188】
ステップS242でYESならステップS243で変数hにバンドの高さ、つまり、バンドの総ライン数をセットする。この値は解析プログラム52からビデオ信号の出力の指示があったときに、同時に与えられる。そして、ステップS244で解析プログラム52からの指示が、空白バンドの出力指示かチェックし、YESならステップS245で変数tに0をセットしてステップS250へ飛ぶ。
【0189】
ステップS244でNOならば、ステップS246で変数lにバンド幅の値をセットする。この値も解析プログラム52からビデオ信号の出力の指示があったときに同時に与えられる。次に、ステップS247で解析プログラム52からの指示が、バンドメモリA71、あるいはバンドメモリB72からのビデオ信号出力指示かチェックし、YESならステップS248で変数tに1をセットして、ステップS250へ飛ぶ。
【0190】
ステップS247での判定がNOとは、バンド内に単一のイメージブロックがあって、その圧縮されたイメージブロックデータを、イメージ伸長・ビデオ転送回路73に対して、データ伸長を行なってビデオ信号を出力することを指示していることを意味する。そこで、ステップS249で変数tに2をセットし、変数haにはブロックの上マージン、変数hbにはブロック高さ、つまりブロックの総ライン数、変数laにはブロックの左マージン、変数lbにはブロックの幅をセットする。これらの値も、解析ブロック52からビデオ信号の出力の指示があったときに、同時に与えられている。そして、ステップS250へ移る。
【0191】
ステップS250では、変数hpに0をセットする。変数hpは、ビデオ信号を出力すべきバンド上のラインの位置を示すカウンタである。そしてステップS251で変数tが0、あるいは1かチェックし、0か1ならステップS252でエンジン部4からビデオ信号の出力要求があったかチェックし、NOならループを形成して、この要求があるまで待つ。ビデオ信号出力要求があったなら、ステップS253で変数tが1かチェックし、NOならステップS255へ飛ぶ。YESなら、ステップS254でバンドメモリA71かB72上のhp番目のラインをビデオ信号に変換して、エンジン部4へ出力してステップS255へ移る。ステップS254でバンドA71から出力するのか、バンドB72から出力するのかの指示は、解析プログラム52からビデオ信号の出力の指示があったときに同時に与えられている。
【0192】
ステップS255では、変数hpに1を加算して、ステップS256で変数hpが変数hよりも小さいかチェックしてYESなら、つまりバンド内のラインでまだビデオ信号が送り終っていない部分が残っているなら、ステップS252の直前に戻って次のラインのビデオ信号出力作業を続ける。
【0193】
ステップS256でNOなら、つまりバンド内の全てのラインはビデオ信号を送り終わったならば、ステップS257で解析プログラム52に対して指示のあったバンドのビデオ信号の出力が完了したことを知らせる。この中には、空白バンドの出力処理が完了したことも含まれる。そして、ステップS241の直前に戻って、解析プログラム52からの次のビデオ出力指示を待つ。
【0194】
ステップS251でNOなら、バンド内のイメージブロックデータからのビデオ信号出力指示であるわけだが、図33におけるステップS258でまずブロックデータ中の第1のラインの圧縮イメージデータの伸長を実行し、伸長したデータをイメージ伸長・ビデオ転送回路73内に存在するラインバッファにセットする。これは、圧縮データの伸長作業を前もってしておくことで、ビデオ信号出力時に伸長作業を行なったのでは、ビデオ出力のタイミングに間に合わなくなることを防ぐためである。
【0195】
そのあと、ステップS259でループを形成して、エンジン部4からのビデオ信号要求があるまで待ち、あったならばステップS260で変数hpが変数haより小さいかチェックし、YESなら何もせずステップS267へ飛ぶ。これは、ブロックの上マージンの部分では、ビデオ信号を送らず何もしないことを意味している。
【0196】
ステップS260でNOならば、ステップS261で、変数hpが変数haと変数hbとを加算した値より小さいかチェックし、ここでNOならばビデオ信号を送らず何もせずステップS267へ飛ぶ。これは、バンド内でブロックの下の部分が空いているのであれば、つまり、下マージンがあるなら、その部分にはビデオ信号を送らないことを示している。
【0197】
ステップS261でYESならば、ステップS262でラインの上で変数laの大きさ分、ビデオ信号を送らず、ステップS263で変数lbの大きさ分、イメージ伸長・ビデオ転送回路73の中にあるラインバッファ上のデータをビデオ信号に変換して、ビデオ信号をエンジン部4へ出力する。そして、ステップS264で変数hbpに、変数hpの値から変数haの値を減算し、さらに1を加算した値をセットする。
【0198】
次に、ステップS265で変数hbpが変数hbより小さいかチェックし、NOなら、つまりブロック内の全てのラインのビデオ信号出力が終わったなら何もせずステップS267へ飛ぶ。
【0199】
ステップS265でYESなら、つまりブロック内でまだビデオ信号出力していないラインが残っているのなら、ステップS266でブロックデータ中の変数hbp番目のラインの圧縮イメージデータの伸長処理を実行し、伸長したデータをイメージ伸長・ビデオ転送回路73の中にあるラインバッファにセットして、ステップS267へ飛ぶ。
【0200】
これも圧縮データの伸長作業を前もってしておくことで、ビデオ信号出力時に伸長作業を行なったのでは、ビデオ出力のタイミングに間に合わなくなることを防ぐことである。
【0201】
ステップS267では、変数hpに1を加算してから、ステップS268で変数hpが変数hより小さいかチェックし、YESならステップS259の直前に戻って、バンド内の次のラインのビデオ信号出力処理を続ける。
【0202】
ステップS268でNOなら、図32のステップS257へ飛んで、ビデオ信号の出力が完了したことを解析プログラム52へ知らせてから、ステップS241の直前に戻って解析プログラム52からの次のビデオ信号出力指示を待つ。
【0203】
なお、ステップS257で、イメージ伸長・ビデオ転送回路73が、解析プログラム52に対してビデオ信号の出力完了を知らせてから、解析プログラム52が、次のバンドのビデオ信号出力指示をイメージ伸長・ビデオ転送回路73に指示するまでの間は、非常に短時間でなければならない。この間に時間的な空きが入ると、その間、ビデオ信号が出力されないので、印刷された用紙を見ると、そのラインの部分だけ白い筋が入ったような現象となる。つまり、バンドとバンドの間に隙間ができる。解析プログラム52の排紙時のバンドとバンドの間の処理は、極めて迅速に行なわなければならない。
<第2の実施の形態特有の効果>
以上の構成により、つぎのような効果が得られる。
(1)本実施の形態では、フレームバッファの代わりにバンドメモリを設けてバンド処理による印刷出力を行なうので、メモリが少なくて済み、装置の製造コストを低減できる。
(2)本実施の形態では、受信バッファへ1ページ分のデータを受信してから印刷を開始する。ホストベースプリンタのようにプリンタへのデータ転送を最優先しないために、ホスト上で他のアプリケーションがロックする、というような現象は起こらない。
(3)本実施の形態では、ホスト上のドライバは、バンドの大きさそのもののイメージデータをプリンタに送るのではなくて、バンドの領域の中の、実際にイメージのあるブロック(矩形部分)をプリンタへ送るので、転送データ量は小さくなる。
(4)本実施の形態では、空白のバンドがある場合は、コントローラ部では、バンドメモリ上に空白部を展開してそのビデオ信号をエンジン部に送るのではなく、イメージ伸長・ビデオ転送回路に対してビデオ信号を送らないよう指示するだけなので、CPUの負荷が小さくなる。
(5)本実施の形態では、文字がなくイメージだけが含まれるバンドがある場合は、コントローラ部では、バンドメモリ上にイメージを展開してそのビデオ信号をエンジン部に出力するのではなく、圧縮されたイメージデータの伸長とビデオ信号への変換、エンジン部への出力を指示するだけなので、CPUの負荷が小さくなる。
[第3の実施の形態]
次に、図を用いて、第3の実施の形態を説明する。
<システムの構成>
第2の実施の形態では、1ページは16バンドに均等に分割することを前提としていたが、第3の実施の形態では、バンドの数、高さを可変とし、ドライバ上ではイメージデータについて、バンド単位に繰り返しのイメージパターンがある場合は、バンドの繰り返しのコマンドをプリンタに送ることで、イメージデータの転送量を小さくしていることが大きな違いである。
【0204】
しかし、各種構成要素、プログラムの動作等については、ほとんどは第2の実施の形態と同一であるので、以下では、主に違いのある部分を説明する。
【0205】
ブロック構成については、第2の実施の形態の図18と同一なので省略する。第3の実施の形態では、バンド高さは任意としたが、図18のRAM9上にある、バンドA71、バンドB72のバンド高さ以下、という制限はある。
【0206】
図34は、原理の説明図である。
【0207】
ホスト1のドライバ上で、印刷しようとしている文書を、文字データとイメージデータに分けて、プリンタ2に転送することは、第1の実施の形態、第2の実施例と同様である。
【0208】
本実施の形態では、ドライバがホスト1上に設けたフレームバッファ上に展開した1ページイメージの中で、プリンタ1にイメージデータを送る前に、バンド単位のパターン認識を行ない、繰り返しのバンドがあるかチェックする。ここでは、バンド高さは任意に変えられるとしている。パターン認識の技術については、各種の方法が公知になっているので、ここでの詳細な説明は省略する。
【0209】
図34の左の図では、波形の図形を含むイメージAのバンド、空白バンド、輪の連続の図形を含むイメージBのバンドセットが、3度繰り返されている。そこで、2度目以降に出現するイメージAのバンド、イメージBのバンドについては、最初に出現したイメージAのバンドデータ、あるいは、イメージBのバンドデータと同一であることを、プリントコマンドとして、プリンタ2に転送するようにした。文字データ部分の処理については、第2の実施の形態と同一である。
【0210】
図34のような例は、実際の文書では、あまりないと思えるが、図35のようなイメージのバンドの繰り返しの例は、実際の文書でも頻繁に有り得ると思われる。
【0211】
この例では、表であって、文字の部分を取り去った罫線のイメージの部分だけで考えると、左の図のように、バンドの1番からバンドの6番まで分割できて、バンドの1番、2番、6番については、そのまま、イメージデータとしてプリントコマンドをプリンタ2へ転送するが、バンドの3番、4番、5番はバンド2番の繰り返しイメージだとして、「バンド2番の繰り返し」のプリントコマンドをプリンタ2へ転送する。
【0212】
図36は、ホスト1からプリンタ2へ送られる文字データ、イメージデータのコマンド構造の説明図である。第2の実施の形態の図20との違いは、バンド開始コマンド81のあとに、バンド高さコマンド82、繰り返しバンド番号83、があることだけである。その他の要素は同一である。
【0213】
バンド開始コマンド81は、1ページあたり任意の個数繰り返される。バンド高さ82もバンド毎に任意だが、バンドA71、バンドB72のバンド高さ以下である。また繰り返しバンド番号83は、そのページで出現したバンドの順番で、ページの先頭のバンド番号を1としてあらわす。そのバンドが、繰り返しのイメージを含んでいない場合、つまり新規のイメージを含んだバンドの場合は、−1がセットされる。
【0214】
コントローラ部3のROM8に内蔵されいるプログラムの名称については、第2の実施の形態の図21で示された内容と同一である。動作についても、解析プログラム52以外は、第2の実施の形態と同一である。受信部6の動作は、第1の実施の形態と同一、イメージ伸長・ビデオ転送回路73の動作も、第2の実施の形態と同一のなので、説明は省略する。解析プログラム52の動作についても、第2の実施の形態とほとんど同じだが、後述の図40〜図43のフローチャートで、動作の詳細を説明する。
【0215】
ホスト1上のドライバの動作についても、第2の実施の形態とほとんど同じだが、後述の図37,図38,図39のフローチャートで、動作の詳細を説明する。
<システムの制御>
次に、本発明の第3の実施の形態の動作を、フローチャートを用いて説明する。第2の実施の形態と違いのある、ドライバの動作と、解析プログラム52の動作を説明する。
【0216】
図37,図38,図39は、ホスト1上のプリンタドライバの動作を説明するフローチャートである。プリンタドライバは、ユーザが用いるアプリケーションソフトで作製した文書データから、図36で説明した文字やイメージのプリンタコマンドを作成してプリンタ2へ転送する。ユーザがアプリケーションソフトから文書の印刷を指示すると、ホスト1内でプリンタドライバが起動される。
【0217】
図示されてはいないが、ドライバは、起動時にはホスト1のメモリ上に1ページ分の大きさのフレームバッファを確保し、同時にフレームバッファをクリアする。また、ドライバの文書印刷処理の終了時には、フレームバッファとして使われていたメモリ領域は、開放される。
【0218】
まず、ステップS271で、ジョブ開始コマンド31をプリンタ2へ転送し、次にステップS272で、変数mに、印刷しようとしている文書のページ数に1を加算した値をセットし、ステップS273で、変数mpに1をセットする。そして、ステップS274で、変数mpが変数mより小さいかチェックし、NOなら文書の全てのページ数の処理が終わったことになるので、ステップS311でジョブ終了コマンドを転そして、ドライバの処理を終了する。
【0219】
ステップS274でYESなら、ステップS275で、ページ開始コマンド32をプリンタ2へ転送し、ステップS276で、mpページ目のアプリケーションからの文書印字指示を蓄積し、ステップS277で、蓄積した文字印字指示について印字位置によるソーティングを実行し、ステップS278で、mpページ目のアプリケーションからの文字印字指示以外の描画指示をホスト1上のフレームバッファに展開する。ここで文字印字指示以外の描画指示とは、罫線や図形描画、イメージの貼り付け等である。
【0220】
また、ステップS277における印字位置による印字指示のソーティングとは、まず、用紙の長手方向に対する位置でソーティングし、次に、用紙の短手方向に対する位置でソーティングを行なうことである。A4サイズの用紙を縦置きしたときに、印字位置によって上から下へ、さらに左から右へと並べ替えた。
【0221】
次にステップS279で、バンド単位でイメージパターンの繰り返しがないか、フレームバッファをパターン認識による分析を行ない、ステップS280でパターンの繰り返しがあったかチェックし、NOならステップS281で、1ページを均等に16分割したとしてバンド管理表にバンド番号、各バンドの高さ、パターンを繰り返す場合のバンド番号の欄に−1をセットする。そして、図38のステップS285に飛ぶ。
【0222】
ステップS280でYESなら、ステップS282でバンドの高さが最大高さ、つまり、バンドA71かバンドB72の高さを超えるバンドを最大高さ以内になるよう分割して、ステップS284に移る。ステップS282でNOの場合もステップS284に移るが、ステップS284では、バンド高さを均等ではなくバンド毎に任意としてバンド管理量にバンド番号、各バンドの高さ、パターンを繰り返す場合のバンド番号の欄をセットして、ステップS285へ移る。
【0223】
ところで、バンド管理表はドライバがバンドに関するプリントコマンドを作成する際に便利なようにホスト1上に設けたもので、項目として、バンド番号、バンド高さ、イメージパターンを繰り返す場合のバンド番号欄の3つが設けられている。
【0224】
次に、図38に移るが、ステップS285では変数nにバンド総数に1を加算した値をセットする。そしてステップS286で変数npに1をセットし、ステップS287で変数npが変数nより小さいかチェックし、NOなら1ページの全てのバンド処理が終了したことを意味するので、ステップS288で変数mpに1を加算してステップS274の直前に戻り、次のページのバンド出力処理に移る。
【0225】
ステップS287でYESなら、ステップS289でバンド開始コマンド81をプリンタ2へ転送し、ステップS290でバンド高さコマンド82を転送し、ステップS291で繰り返しバンド番号コマンド83を転送する。このバンドがイメージの繰り返しでなければ−1をセット、転送する。
【0226】
そして、ステップS292で蓄積したアプリからの印字指示からnpバンド目に含まれる文字印字指示をピックアップし、ステップS293で変数sにピックアップした文字数に1を加算した値をセットして、ステップS294で変数sp1をセットする。
【0227】
なお、ステップS292でピックアップする文字印字指示は、npバンド目に文字の一部でもかかっているものはすべてピックアップする。よって、文字の印字位置によっては、ふたつのバンドにまたがる場合がある。
【0228】
次にステップS295で、変数spが変数sより小さいかチェックし、NOならnpバンド目に含まれる文字データの転送処理は全て済んだことになるので、ステップS296以降でnpバンド目のイメージデータの転送処理に移る。つまり、ステップS296でこのバンドが繰り返しのバンドかチェックし、YESならこれ以上何もせず、ステップS302に移る。
【0229】
ステップS296でNOならば、ステップS297ではホスト上のフレームバッファからnpバンド目の位置と大きさのイメージを切り出し、ステップS298で空白のバンドかチェックし、YESなら何もせずステップS302に移る。
【0230】
ステップS298でNOなら、ステップS299でイメージが実際に含まれる矩形領域を単一のブロックとして切り出し、まずステップS300でブロックの貼り付け位置を示す位置移動コマンド33をプリンタ2へ転送し、ステップS301で種別5のコマンド列、つまりイメージブロックコマンド45,46,47,48をプリンタ2へ転送する。当然ながら、イメージブロックデータはデータ圧縮されて転送される。
【0231】
そして、ステップS302で変数npに1を加算し、ステップS287の直前に戻り、次のバンドの転送処理に移る。
【0232】
ステップS295でYESの場合は、ステップS303でsp番目の文字は、この文書で初めて現れる文字の印字の指示かチェックし、初めてならばステップS304で印字位置を示す印字移動コマンド33をプリンタ2へ転送し、ステップS305でプリンタ2側が登録可能な文字数の限界に達したかチェックし、限界に達したならステップS307で種別3のコマンド列、つまり文字イメージ印字のみのコマンド43,44をプリンタ2へ転送して、ステップS310へ移る。
【0233】
ステップS305で限界に達していないとわかれば、ステップS306で種別2のコマンド列、つまり、文字登録+印字コマンド41,42,43,44をプリンタ2へ転送してからステップS310へ移る。当然ながら、プリンタ2へ転送される一文字のドットイメージは、データ圧縮されて転送される。
【0234】
ステップS303でNOならば、この文字の印字の指示が、文書の中で二度目以降の指示であることを示しているので、ステップS308で印字位置を示す位置移動命令33をプリンタ2へ転送し、次にステップS309で種別4のコマンド列、つまり文字コード印字コマンド41,42をプリンタ2へ転送する。
【0235】
そして、ステップS310で変数spに1を加算して、ステップS295の直線に戻り、次の文字データのプリンタ2への転送処理を行なう。
【0236】
図40〜図43は、解析プログラム52の動作を説明するためのフローチャートである。解析プログラム52も、プリンタ2の電源オンとともに立ち上がり、以後、受信部6によって書込まれた受信バッファ10の中のプリントコマンドの解析及び排紙処理を行なう。
【0237】
まずステップS321で、ユーザがプリンタ2を電源オフしたかチェックし、YESならこのプログラムの処理を終了する。NOならステップS322で受信バッファ10内に受信済みのページのデータがあるかチェックし、ないならばステップS321の直前に戻りループを形成してホスト1からのデータの受信を待つ。
【0238】
なお、ステップS322では、ページ管理表13を調べることによって、受信済みのページが存在するかどうかをチェックする。ページ管理表13は、第1の実施の形態の図9,図10のフローチャートで説明したような動作で、受信管理プログラム51が管理を行なっている。
【0239】
ステップS322でYESならば、以後そのページのプリントコマンドを次々と解析して処理するが、まず、ステップS323で変数nに「総バンド数+1」をセットし、ステップS324で変数npに1をセットし、ステップS325で変数bnにバンド高さをセットする。そして、ステップS326で変数npが変数nより小さいかチェックし、NOならバンドの処理が全て完了したことを示すのでステップS368へ飛び、排紙の完了を待つ。
【0240】
ステップS326でYESなら、ステップS327でバンドnp番目のデータは文字データもイメージデータもなく、空白バンドなのかチェックし、YESならステップS328で変数tに0をセットする。そして、ステップS344へ飛ぶ。
【0241】
ステップS327でNOならステップS329でバンドnp番目のデータに文字が含まれているかチェックし、YESならステップS330で変数npが奇数なら変数tに1をセットし、変数npが偶数なら変数tに2をセットし、ステップS334へ飛ぶ。
【0242】
ステップS329でNOなら、ステップS331でバンドnp番目のデータに、複数のイメージブロックデータが含まれているかチェックし、YESならステップS322で変数npが奇数なら変数tに1をセットし、変数npが偶数なら変数tに2をセットし、ステップS334へ飛ぶ。なお、図37,図38,図39で説明したドライバの動作では、ひとつのバンドに複数のイメージブロックが存在することは有り得ない。
【0243】
ステップS331でNOなら、バンドnp番目のデータとしては、単一のイメージブロックしか存在しないことを示しているが、ステップS333で変数tに3をセットして、ステップS334へ飛ぶ。
【0244】
ステップS334では、変数tが1あるいは2かチェックし、YESならステップS334以降でバンドnp番目に含まれる文字データやイメージブロックデータを先頭から解析していき、バンドA71、バンドB72への展開処理を行なう。まず、ステップS335では、変数tが1ならバンドA71をクリアし、変数tが2ならバンドB72をクリアする。
【0245】
そして、ステップS336でこのバンドの繰り返しバンド番号コマンド83が−1以外かチェックし、NOなら何もせずステップS338へ移るが、YESならステップS337で処理を行なってからステップS338へ飛ぶ。ステップS337では、イメージ伸長回路16を使用して、繰り返しバンド番号で指示されたバンド内の単一イメージブロックをバンドメモリへ貼り付ける。この時、変数tが1ならバンドA71へ貼り付け、変数tが2ならバンドB72へ貼り付ける。
【0246】
次に、ステップS338では、解析しようとしているコマンドが位置移動コマンド33かチェックする。YESならステップS339でカーソルの移動を行なう。ここで言うカーソルとは、バンドメモリ上で文字、あるいは、イメージを展開する位置を示すための概念上のポインタである。具体的には、ワーク領域12上にX座標、Y座標を示す変数として確保されている。カーソル位置はバンドの左上端を原点としている。ドライバから送られてくる位置移動コマンド33も、各バンドの左上端を原点と考える相対位置を前提として転送されてくる。ページの左上端を原点としているわけではない。ステップS339の後は、ステップS351へ飛ぶ。
【0247】
ステップS338でNOならば、ステップS340でそのコマンドが種別コマンド34で種別が1かチェックし、YESならばステップS341で文字登録プログラム53による文字の登録処理を行なってからステップS351へ飛ぶ。文字の登録処理は、第1の実施の形態の図15のフローチャートで説明した動作と同じであるので、詳細な説明は省略する。
【0248】
ステップS340でNOならばステップS342でそのコマンドが種別コマンド34で、種別が2かチェックし、YESならばステップS343で文字の登録処理を行ない、ステップS344で印字処理を行なってからステップS351へ飛ぶ。ステップS343の文字の登録処理と、前述のステップS341の文字の登録処理は同一である。また、ステップS344の印字処理は、印字プログラム54によって行なわれる。
【0249】
ステップS342でNOならば、ステップS345でそのコマンドが種別コマンド34で種別が3かチェックし、YESならばステップS346で文字イメージの印字処理のみを行ない、そのあとステップS351へ飛ぶ。
【0250】
ステップS345でNOならば、ステップS347でそのコマンドが種別コマンド34で種別が4かチェックし、YESならばステップS348で印字処理を行ない、そのあとステップS351へ飛ぶ。ステップS348の印字処理は、前述のステップS344の印字処理と同一である。
【0251】
ステップS347でNOならば、ステップS349でそのコマンドが種別コマンド34で種別が5かチェックし、YESならばステップS350でイメージ伸長回路16を使用して、圧縮イメージデータの伸長作業をし、伸長したイメージブロックのバンドメモリ71,72への貼り付け作業を行なう。その際、変数tが1なら、バンドA71への貼り付けを行ない、変数tが2ならバンドB72への貼り付けを行なう。そして、ステップS351へ飛ぶ。
【0252】
ステップS339、ステップS341、ステップS344、ステップS346、ステップS348、ステップS350のあとか、あるいはステップS349でNOならば、ステップS351へ移る。ステップS351では、バンドnp番目の受信データで、解析していないコマンドがまだ残っているかチェックし、残っているならばステップS338の直前に戻ってその未解析コマンドの解析処理を行なう。
【0253】
ステップS334でNOの場合、あるいはステップS351でNOの場合は、図42のステップS352へ飛ぶ。
【0254】
ステップS352以降、ステップS367まではバンド単位のエンジン部4へのビデオ信号出力処理を示している。
【0255】
まず、ステップS352では、変数npが1かチェックする。つまり、あるページの最初のバンドかチェックするわけである。最初のバンドであれば、ステップS353でエンジン部4に給紙開始を指示して、ステップS354で用紙があるかチェックし、用紙無しならばステップS355でユーザが用紙を追加セットするまで待ち、それからステップS358へ飛ぶ。ステップS354でNOならば、つまり、用紙があるなら、そのままステップS358へ飛ぶ。
【0256】
ステップS352で最初のバンドではないと判断されたならば、ステップS356で前のバンドのビデオ転送処理が終了するまで待つ。但し、待っている間に、紙ジャム、つまり紙詰まりが発生しているかをステップS357で常に監視している。仮に紙ジャムが発生しているのならば、ステップS357からステップS373へ飛び、紙ジャムからの復帰処理を行なう。
【0257】
ステップS356でYESなら、つまり前のバンドのビデオ転送が終了したなら、ステップS358で変数tが0かチェックし、YESならステップS359で変数nbの値をバンド高さとして、イメージ伸長・ビデオ転送回路73に空白バンドの出力処理を指示して、ステップS367へ飛ぶ。
【0258】
ステップS358でNOなら、ステップS360で変数tが1かチェックし、YESならステップS361で変数hbの値をバンド高さとして、イメージ伸長・ビデオ転送回路73にバンドA71のビデオ信号出力指示を行ない、ステップS367へ飛ぶ。
【0259】
ステップS360でNOならば、ステップS362で変数tが2かチェックし、YESならステップS363で変数hbの値をバンド高さとしてイメージ伸長・ビデオ転送回路73にバンドB72のビデオ信号出力指示を行ない、ステップS367へ飛ぶ。
【0260】
ステップS362でNOならば、ステップS364で繰り返しバンド番号が−1以外かチェックし、YESならステップS365で変数hbの値をバンド高さとして、イメージ伸長・ビデオ転送回路73に繰り返しバンド番号で指示されたバンドの中の単一イメージブロックの圧縮イメージのデータ伸長をしながらのビデオ出力を指示する。そして、ステップS367へ移る。
【0261】
ステップS346でNOならば、ステップS366で変数hbの値をバンド高さとして、np番目のバンドデータに含まれる単一イメージブロックを伸長をしながらビデオ信号を出力することをイメージ伸長・ビデオ転送回路73に指示してステップS367へ飛ぶ。
【0262】
ステップS367では変数npに1を加算してから、ステップS326の直前に戻り、次のバンドデータのバンドメモリへの展開、及び、ビデオ信号出力処理へ移る。
【0263】
ステップS326でNOの場合は、バンド出力処理がすべて終了して、後はステップS368以降で印刷された用紙の排紙の完了を待つだけとなるが、まずステップS368では排紙が完了したかチェックし、NOならばステップS372で紙ジャム、つまり、紙詰まりが発生したかチェックし、NOならばステップS368の直前に戻りループを形成して、排紙の完了まで待つ。
【0264】
ステップS368で排紙が完了したと判断したならば、ステップS369でページ管理表13上の排紙済みページの記録をクリアし、ステップS370でジョブ終了、つまりひとつの文書の全ページを排紙し終わったかチェックし、YESならステップS371で登録文字管理表14をクリアし、ステップS321の直前に戻って次の文書のジョブのデータ受信を待つ。
【0265】
ステップS370でNOならば、この時もステップS321の直前に戻って、その文書の後続のページのデータ受信を待つ。
【0266】
ステップS372でYESならば、ステップS373で紙ジャム発生をパネル表示し、ステップS374でユーザが詰まった紙を取り除くまで待ち、取除いたことがわかればステップS321の直前まで戻り、もう一度、前回処理を行った受信済みページデータのバンドへの展開、ビデオ出力、排紙処理を試みる。
【0267】
なお、ステップS369では、ページ管理表13上のページの登録をクリアしているが、受信管理プログラム51は、この領域がクリアされていることをチェックして、受信部6に対して新しい受信データ書込みの限界値の指示を行なう。<第3の実施の形態特有の効果>
(1)本実施の形態では、ドライバがフレームバッファ上のイメージパターンを分析して、バンド単位に同じパターンが繰り返されるときは、繰り返しのバンド部分のデータとして繰り返しのコマンドを送るだけなので、イメージデータの転送量が小さくて済む。また、転送時間が少なくて済む。また、プリンタ側の受信バッファのメモリ消費量も節約できる。
(2)図35で説明したように、特に、繰り返しパターンの使われることの多い表文書等の印刷時に有効である。
[第4の実施の形態]
次に、図を用いて、第4の実施の形態を説明する。
<システムの構成>
第4の実施の形態では、プリンタの受信バッファに納まりきらない巨大なイメージを印刷する場合に、第1〜第3の実施の形態として説明した印刷制御方法のいずれかの代わりに、受信バッファを幾つかの部分に分割し、ひとつの部分から出力している間に他の部分に受信して格納することを繰返して巨大なイメージを印刷する。
【0268】
具体的には、本実施形態のシステムは第3の実施の形態を基にしている。文書は全てイメージデータで扱い、プリンタのRAMのほとんどを受信バッファとして使用し、受信バッファ上の巨大イメージページのデータをイメージ伸長・ビデオ転送回路で直接イメージ伸長作業とエンジン部へのビデオ転送作業を行なうことで、巨大イメージページの文書も印刷可能としている。第4の実施の形態の各種構成要素、プログラムの動作等については、ほとんどは第3の実施の形態と同一であるので、以下では主に違いのある部分を説明する。
【0269】
なお、以下の説明では、第3の実施の形態での印刷方式を「合成方式」と呼ぶ。これは、ホスト上では文字とイメージを分離して扱い、プリンタ上で文字とイメージの論理和をとって合成して出力するからである。また、巨大イメージを出力する方式を「簡易同期式」と呼ぶ。これは、あまりに1ページのイメージデータが巨大な場合は、ホストからの細かなバンド単位のデータ転送と、プリンタでの用紙の搬送を、成り行きの形で同期させて繰り返すことで印刷を実行するからである。
【0270】
図59,60は、簡易同期式の原理を説明するための図である。本実施形態のプリンタは受信バッファとして2MBのメモリを備えているものとしている。図59(a)は、圧縮してもその受信バッファ容量を越える巨大イメージを示している。このような巨大イメージは、ホストのプリンタドライバで図59(b)のように、最初の1MBで区切り、残りを100KBずつ区切って各ブロックごとにプリンタに送り付ける。
【0271】
図60は、図59(b)のようにして送られたイメージを、プリンタにおいて受信し、再構成して印刷する様子を示す図である。ホストから受信したイメージは、RAM9内にブロックごとに圧縮されて格納される。プリンタでは、それらブロックを、一つのブロックごとに伸長して印刷出力する。2番目以降のブロックは最初のブロックに比べて小さいため、伸張処理を迅速に行えるので、伸張処理時間によってオーバーランを生じることはない。第4の実施の形態は、上記「合成方式」と「簡易同期式」を合体させたものである。
【0272】
図44は、コントローラ部3が、「簡易同期式」で動作する場合の、ブロック構成図である。「合成方式」で動作する場合のブロック構成図は、第2の実施の形態の図18に相当する。図18と図44の違いは、RAM9上の内部構成である。
【0273】
こういったRAMの構成の相違は、主として受信部6及びイメージ伸張・ビデオ転送回路73による印刷データの処理手順により規定されるものであり、固定的な枠組が設けられるといったものではない。従って、図18及び図44のRAMの構成を、データ処理の手順によって使い分けることは簡単なことである。
【0274】
さて、両方式の相違を受信バッファに注目して見てみる。「合成方式」では、受信バッファ10、バンドA71、バンドB72、ページ管理表13、登録文字管理表14、登録文字データ領域15等で構成される。RAM9の容量が2MBとすると、受信バッファ10として、確保できるのは1MB程度である。「簡易同期式」では、RAM9上には受信バッファ10、ページ管理表13があるだけである。RAM9上の容量が2MBとすると、受信バッファ10として、1.7MB程度確保できる。
【0275】
圧縮方式にもよるが、A4の用紙サイズで、1ページ全面に600dpiの写真イメージが貼り付けられているとすると、約1.8MBのデータ容量となる。受信バッファ10が1.7MBあれば、かなり大きなイメージが含まれた文書の場合も、受信バッファ10内に1ページ分のデータが収まるので、ほとんどの場合、印刷が可能となる。また、1.7MBを多少オーバーするページの場合でも、「簡易同期式」では、成り行きの形で同期して出力するので、ほとんど印刷不可能な事態は起こらない。
【0276】
しかし、受信バッファ10の大きさとして1MBしかない「合成方式」では、文書にもよるが、受信バッファ10内に1ページ分のデータが収まらずに、印刷不可能な事態がかなり発生すると思われる。
【0277】
なお、図18で記載されているイメージ伸長回路16、文字伸長回路17は、図44では省かれているが、「簡易同期式」では使用しないことを意味している。つまり、あってもなくても良い。まとめれば、ハード的な構成要素としては、第4の実施の形態は第2の実施の形態の図18の構成要素と同一で良い。
【0278】
また、それ以外の図18と図44の違いといえば、ホスト1からプリンタ2へ転送されるデータが、図18の「合成方式」では、文字データとイメージデータなのに対して、図44の「簡易同期式」ではイメージデータだけである。
【0279】
図45は、ホスト1からプリンタ2へ送られる文字データ、イメージデータのコマンド構造の説明図である。このデータは、ある文書の印刷ジョブデータとして、最初のページは「合成方式」のページとして送られ、2ページ目も「合成方式」のページとして送られたが、イメージが大量にあって、この1ページデータだけでも1MBの大きさの受信バッファ10があふれそうに思われたので、ページクリアされ、その後改めて「簡易同期式」のページとして出力され、ジョブが終了した場面を示している。
【0280】
コマンドの大部分は、第3の実施の形態の図36と同一であるが、ページ毎にページ種別Aコマンド91か、ページ種別Bコマンド92が付け加えられた点と、ページデータの最後にページクリアコマンド93が添付される場合がある点が異なる。ページクリアコマンド93が添付されたページは、印刷されず無視される。また、ページ種別Aコマンド91が添付されたページは、「合成方式」のページであることを示し、ページ種別Bコマンド92が添付されたページは、「簡易同期式」のページであることを示している。つまり、ページ毎に図18で示したRAM9環境と、図44で示したRAM9環境に切り替えることを指示している。
【0281】
また、「簡易同期式」のページの場合は、ひとつのバンドに、単一イメージブロックがひとつつくだけである。この時、種別コマンド34は5、つまりイメージブロックコマンドしか有り得ない。
【0282】
さらに、「簡易同期式」のページの場合は、1ページの圧縮後のデータ量が1MBに収まってしまう場合は、バンドもひとつ、イメージブロックもひとつだけで済む。1MBを超える部分については、圧縮データが100KBを超える毎にバンドをひとつ、イメージブロックをひとつ設け、それを繰り返す。
【0283】
これらは、全てホスト1上のドライバで行なうプリントコマンド作成処理であるが、1.7MBの大きさの受信バッファ10を超えるかもしれない、巨大イメージページを、成り行きの同期式で印刷出力可能にするための処理である。
【0284】
コントローラ部3のROM8に内蔵されているプログラムの名称については、第2の実施の形態の図21で示された内容と同一である。動作についても、受信管理プログラム51、解析プログラム52以外は、第2の実施の形態と同一である。イメージ伸長・ビデオ転送回路73の動作は、第2の実施の形態と同一なので、説明は省略する。ホスト1上のドライバの動作、受信部6の動作、受信管理プログラム51の動作、解析プログラム52の動作は、後述のフローチャートで動作の詳細を説明する。
【0285】
図46は、ページ管理表13の構造を説明するための図である。
【0286】
項目としては、受信した順番を示すページ番号、受信したページデータの開始アドレス、受信したページデータの終了アドレス、大きすぎるページかどうかの印の4項目である。
【0287】
解析プログラム52による処理は番号1から行われる。解析処理、排紙処理が完了すると排紙済みページはクリアされ、番号2のページが番号1へ繰り上がる。そして、そのページの解析処理が開始される。
【0288】
図46(a)は、「合成方式」の時の状態、あるいは、「簡易同期式」の時でも1ページごとのデータ量が受信バッファ10の大きさを越えないときの状態を示している。また、図46(b)は、1ページのデータ量が受信バッファ10の大きさを越えた時の状態を示している。受信バッファには、現在受信中の巨大ページだけが存在し、受信管理プログラム51は解析プログラム52に対して成り行きによる同期式の印刷出力を指示して、現在その印刷処理が進行中の状態である。
【0289】
なお、受信管理プログラム51による成り行きによる同期式の印刷出力の指示は、巨大なページデータの前の全てのページが排紙出力された後で行われる。それにより、図46(b)のような巨大ページデータしかない状態になる。
【0290】
また、RAM9の環境が「合成方式」と「簡易同期式」との間で切り替わる時は、一旦全てのページが排紙出力された後で切り変わりが実行される。切り替えは、受信バッファ10の大きさの変更も含まれているので、ページデータを残したまま、受信バッファ10の大きさを小さくすると、消失するページデータも有り得るからである。
<システムの制御>
次に、本第4の実施の形態の動作を、フローチャートを用いて説明する。
【0291】
第3の実施の形態と違いのあるドライバ、受信部6、受信管理プログラム51、解析プログラム52の各動作を説明する。
【0292】
(プリンタドライバ)
図47〜図51はホスト1上のプリンタドライバの動作を説明するフローチャートである。プリンタドライバは、ユーザが用いるアプリケーションソフトで作成した文書から、図45で説明した文字やイメージのプリンタコマンドを作成、プリンタ2へ転送する。ユーザがアプリケーションソフトから文書の印刷を指示すると、ホスト1内でプリンタドライバが起動される。
【0293】
図示されてはいないが、ドライバは起動時にはホスト1のメモリ上に1ページ分の大きさのフレームバッファを確保し、同時にフレームバッファをクリアする。また、ドライバの文書印刷処理の終了時には、フレームバッファとして使われていたメモリ領域は開放される。
【0294】
まず、ステップS381でジョブ開始コマンド31をプリンタ2へ転送し、次にステップS382で、印刷しようとしている文書のページ数に1を加算した値を変数mにセットし、ステップS383で処理中のページ番号を示す変数mpに1をセットする。そして、ステップS384で変数mpが変数mより小さいかチェックし、NOなら文書の全てのページ数の処理が終わったことになるので、ステップS385でジョブ終了コマンドを転送して、ドライバの処理を終了する。
【0295】
ステップS384でYESならステップS386でページ開始コマンド32をプリンタ2へ転送し、ステップS387でmpページ目のアプリケーションからの文字印字指示を蓄積し、ステップS388で蓄積した文字印字指示について印字位置によるソーティングを実行し、ステップS389でmpページ目のアプリケーションからの文字印字指示以外の描画指示をホスト1上のフレームバッファに展開する。ここで文字印字指示以外の描画指示とは、罫線や図形描画、イメージの貼り付け等である。この時同時に、イメージの貼り付け面積の合計を計算しておく。
【0296】
また、ステップS388における印字位置によるソーティングとは、先ず、用紙の長手方向によるソーティング、次に、用紙の短手方向によるソーティングを行なうことである。A4サイズの用紙を縦置きした時に印字位置によって上から下へ、さらに左から右へと並べ替えた。
【0297】
次に、ステップS390でイメージの貼り付けの総面積がページの半分を超えたかチェックし、YESなら、つまりイメージを主としたページと判断できたなら図50のステップS426へ移り、「簡易同期式」の処理を開始する。ステップS390でNOなら、つまり文字を主としたページと判断できたならステップS391へ移り、ページ種別がAのコマンド91をプリンタ2へ転送する。
【0298】
そして、ステップS392でバンド単位でイメージパターンの繰り返しがないか、フレームバッファをパターン認識による分析を行い、ステップS393でパターンの繰り返しが合ったかチェックし、NOならステップS394で1ページを均等に16分割したとしてバンド管理表にバンド番号、各バンドの高さ、パターンを繰り返す場合のバンド番号の欄に−1をセットする。そして、ステップS398に飛ぶ。
【0299】
ステップS393でYESなら、図48のステップS395でバンドの高さが最大高さ、つまり、バンドA71かバンドB72の高さを超えるバンドがあるかチェックし、あるならステップS396で最大高さを超えるバンドを最大高さ以内になるよう分割してステップS397に移る。ステップS395でNOの場合もステップS397に移るが、ステップS397ではバンド高さを均等ではなくバンド毎に任意としてバンド管理表にバンド番号、各バンドの高さ、パターンを繰り返す場合のバンド番号の欄をセットしてステップS398へ移る。
【0300】
ところで、バンド管理表は、ドライバがバンドに関するプリントコマンドを作成する際に便利なようにホスト1上に設けたもので、項目として、バンド番号、バンド高さ、イメージパターンを繰り返す場合のバンド番号欄の3つが設けられている。
【0301】
次に、ステップS398では、変数nにバンド総数に1を加算した値をセットする。そして、ステップS399でバンド番号を示す変数npに1をセットし、ステップS400で変数npが変数nより小さいかチェックし、NOなら1ページの全てのバンド処理が終了したことを意味するので、ステップS401で変数mpに1を加算してステップS384の直前に戻り、次のページのバンド出力処理に移る。
【0302】
ステップS400でYESなら、ステップS402でバンド開始コマンド81をプリンタ2へ転送し、ステップS403でバンド高さコマンド82を転送し、ステップS404で繰り返しバンド番号コマンド83を転送する。このバンドがイメージの繰り返しでなければ−1をセット、転送する。
【0303】
そして、ステップS405で蓄積したアプリからの印字指示からnpバンド目に含まれる文字印字指示をピックアップし、ステップS406で変数sにピックアップした文字数に1を加算した値をセットして、ステップS407で変数spヘ1をセットする。
【0304】
なお、ステップS405でピックアップする文字印字指示は、npバンド目に文字の一部でもかかっているものはすべてピックアップする。よって、文字の印字位置によっては、ふたつのバンドにまたがる場合がある。
【0305】
次に、図49のステップS408で変数spが変数sより小さいかチェックし、NOならnpバンド目に含まれる文字データの転送処理は全て済んだことになるので、図50のステップS409以降でnpバンド目のイメージデータの転送処理に移る。そして、ステップS409でこのバンドが繰り返しのバンドかチェックし、YESならこれ以上何もせずステップS417に移る。
【0306】
ステップS409でNOならば、ステップS410ではホスト上のフレームバッファから、npバンド目の位置と大きさのイメージを切り出し、ステップS411で空白のバンドかチェックし、YESなら何もせずステップS417に移る。
【0307】
ステップS411でNOなら、ステップS412でイメージが実際に含まれる矩形領域を単一のブロックとして切り出し、ステップS413でこのブロックを転送したと仮定すると、1ページのデータ量が受信バッファの大きさをオーバーしそうかチェックし、NOならば先ずステップS415でブロックの貼り付け位置を示す位置移動コマンド33をプリンタ2へ転送し、ステップS416で種別5のコマンド列、つまりイメージブロックコマンド45,46,47,48をプリンタ2へ転送する。当然ながら、イメージブロックデータはデータ圧縮されて転送される。
【0308】
そして、ステップS417で変数npに1を加算し、図48のステップS400の直前に戻り、次のバンドの転送処理に移る。
【0309】
ステップS413でYESなら、ステップS414でページクリアコマンド93を転送して、このページの排紙を取り消してからステップS426へ飛んで、このページの「簡易同期式」での出力に再挑戦する。
【0310】
図49のステップS408でYESの場合は、ステップS418でsp番目の文字はこの文書で初めて現れる文字の印字の指示かチェックし、初めてならばステップS419で印字位置を示す位置移動コマンド33をプリンタ2へ転送し、ステップS420でプリンタ2側が登録可能な文字数の限界に達したかチェックし、限界に達したならステップS422で種別3のコマンド列、つまり文字イメージ印字のみのコマンド43,44をプリンタ2へ転送して、ステップS425へ移る。
【0311】
ステップS420で限界に達していないとわかれば、ステップS421で種別2のコマンド列、つまり文字登録+印字コマンド41,42,43,44をプリンタ2へ転送してからステップS425へ移る。当然ながら、プリンタ2へ転送される一文字のドットイメージは、データ圧縮されて転送される。
【0312】
ステップS418でNOならば、この文字の印字の指示が文書の中で二度目以降の指示であることを示しているので、ステップS423で印字位置を示す位置移動命令33をプリンタ2へ転送し、次に、ステップS424で種別4のコマンド列、つまり文字コード印字コマンド41,42をプリンタ2へ転送する。
【0313】
そして、ステップS425で変数spに1を加算してステップS408の直前に戻り、次の文字データのプリンタ2への転送処理を行なう。
【0314】
(プリンタドライバ:簡易同期式)
次に、図50のステップS426以降の「簡易同期式」によるページ出力について説明する。
【0315】
先ず、ステップS426ではページ種別がBのコマンド92をプリンタ2へ転送し、ステップS427で蓄積した文字印字指示にしたがってフレームバッファ上に全文字をOR書きし、ステップS428でフレームバッファの先頭からイメージデータの圧縮作業を開始する。
【0316】
そして、ステップS429で圧縮したデータが1MBを越えたかチェックし、NOならステップS430で1ページ全ての圧縮作業が完了したかチェックし、ここでもNOならステップS431でデータ圧縮作業を続行し、ステップS429の直前に戻り、ループを形成する。つまり、圧縮作業が1ページ分終わるか、圧縮データが1MBを超えるまで待つ。
【0317】
ステップS429あるいはステップS430でYESなら、図51のステップS432へ移り、まずバンド開始コマンド81をプリンタ2へ転送し、ステップS433でバンド高さコマンド82をプリンタ2へ転送し、ステップS434で繰り返しバンド番号コマンド83をプリンタ2へ転送する。なお、ここではバンドの繰り返しがないものとして、番号に−1をセットして転送する。
【0318】
次に、ステップS435では位置移動コマンド33を転送し、ステップS436では種別5のコマンド列、つまりイメージブロックコマンド45,46,47,48をプリンタ2へ転送する。
【0319】
そして、ステップS437でフレームバッファ上にまだ転送していない残りのイメージがあるかチェックし、残りがないならステップS438で変数mpに1を加算して、ステップS384の直前に戻り、次のページのバンド処理を開始する。
【0320】
ステップS437でYES、つまり残りがあるなら、ステップS439ヘ移り、フレームバッファ上の残りのイメージのイメージデータ圧縮作業を開始し、ステップS440で圧縮したデータが100KBを越えたかチェックし、NOならステップS441で1ページ全ての圧縮作業が完了したかチェックし、ここでもNOならステップS442でデータ圧縮作業を続行し、ステップS440の直前に戻り、ループを形成する。つまり、圧縮作業が1ページ分終わるか、圧縮データが100KBを超えるまで待つ。
【0321】
ステップS440、あるいはステップS441でYESなら、ステップS432の直前に戻り、バンドデータのプリンタ2への転送処理を行なう。
【0322】
(受信部6)
図52,図53は、受信部6の動作を説明するためのフローチャートである。もちろん、受信部6はハードウェアの回路であって、通常のプログラムとは異なるが、動作の順序をフローチャートで説明する。
【0323】
第1の実施の形態の図11,図12で説明した受信部は、ジョブ開始31からジョブ終了36までを一単位として連続的に受信した。途中にページ開始コマンド32があっても、受信プログラム51へ知らせはするが、途中で受信を中断することなくジョブ終了まで一気に受信した。
【0324】
しかし、ページ毎に「合成方式」で出力するか、あるいは「簡易同期式」で出力するか異なることも考えられるので、ページ開始コマンド32が届いた時点で受信管理プログラム51からの指示を待つ。
【0325】
受信プログラム51は、出力方式が変わるのであれば、受信済みのページが全て排出されるのを待って、RAM9上のメモリマップを「合成方式」用メモリマップか、「簡易同期式」用メモリマップかに変更して、そのあとで新しい受信データの書き込み位置と、限界値の指示を受信部6へ行なってページデータの受信を開始させる。つまり、出力方式が変わる場合は、一旦受信バッファが空になる。
【0326】
なお、出力方式が変わらない場合は、受信済みページの排紙を待つ必要はない。つまり、受信バッファ10が一旦空になるまで待つ必要はない。ページデータは連続的に受信できる。しかし、この場合も、受信部6は受信管理プログラム51の受信データの書き込み位置と限界値の指示を待ってから次のページの受信を開始する。
【0327】
受信部6は、プリンタ2の電源オンと同時に動作を開始するが、先ずステップS451で受信部6の動作状態を「ホスト1からのデータの受信は可能だが、受信したデータは全て受け捨てる」状態とする。
【0328】
そして、ステップS452で、ユーザがプリンタ2の電源をオフしたかチェックし、YESなら受信部6の動作を終了する。NOならステップS453で受信したデータからページ開始コマンド32を検知したかチェックし、NOならステップS452の直前に戻り、ホスト1からのページ開始コマンド32を待ち受ける。
【0329】
ステップS453でYESならステップS454で一旦受信を停止し、ステップS455でページ開始コマンド32を検知したことと、ページ種別A91か、ページ種別B92の区別を、受信管理プログラム51へ知らせる。受信を一旦停止するとは、プリンタ2がビジー状態でホスト1からのデータの受信を拒否している状態である。
【0330】
次に、ステップS456で受信管理プログラム51から受信バッファ10への書き込み開始位置と、限界値の指示があるまで待ち、指示があったなら、ステップS457でホスト1からの受信を行ない、受信したデータは受信バッファ10上に書込む動作を開始し、続行する。
【0331】
そして、ステップS458でジョブ終了コマンドを検知したかチェックし、YESならステップS459で受信を一旦停止し、ステップS460で受信管理プログラム51へジョブ終了を検知したこと、及び、受信バッファ10への書き込み終了位置を知らせた後、ステップS451の直前に戻り、次のページデータの受信を待つ。
【0332】
ステップS458でNOなら、図53のステップS461で受信データの書き込みが限界値に達したかチェックし、YESならステップS462で受信を一旦停止し、ステップS463で受信管理プログラム51に限界値に達したことを知らせる。
【0333】
そして、ステップS464で受信管理プログラム51から新しい書き込み位置、新しい限界値の指示があったかチェックし、NOならばステップS465で受信管理プログラム51から書き込み終了の指示があったかチェックし、ここでもNOならステップS464の直前に戻ってループを形成し、どちらかの指示があるまで待つ。
【0334】
ステップS465でYESなら、このページデータの受信はもう必要ないことを示しているので、ステップS451の直前に戻って次のページデータの受信を待つ。
【0335】
ステップS464でYESなら、ステップS457の直前に戻って、以後新しく指示された書き込み位置、限界値のもとで、受信を再開する。
【0336】
ステップS461でNOならば、ステップS466でページクリアコマンドを検知したかチェックし、YESならステップS467で受信管理プログラム51へページクリアコマンド93の検知を知らせる。そして、ステップS451の直前に戻って、次のページデータの受信を待つ。
【0337】
ステップS466でNOならば、ステップS468でページ開始コマンド32を検知したかチェックし、NOならステップS457へ戻り、ページデータの受信を続行する。ステップS468でYESならステップS469で受信を一旦停止し、ステップS470でページ開始コマンド32を検知したことと、ページ種別A91か、ページ種別B92の区別を受信処理プログラム51へ知らせてから、ステップS465の直前に戻り、受信管理プログラム51からの書き込み位置、限界値の指示を待つ。そして、指示がきたなら受信バッファ10への受信データの書き込みが開始される。
【0338】
(受信管理プログラム)
図54,図55,図56は、受信管理プログラム51の動作を説明するためのフローチャートである。前述の受信部6の説明にも関連するが、受信管理プログラム51は、ページ単位の管理を行なっており、受信部6からページ開始コマンド32検知の知らせがあるたびに、受信バッファ10への書き込み位置と、限界値を受信部6へ指示して、受信データの書き込みを開始させる。
【0339】
また、ページ毎に「合成方式」の出力か、「簡易同期式」の出力かチェックして、必要があればRAM9のメモリマップを「合成方式」用メモリマップか、「簡易同期式」のメモリマップか、ページ毎に切り替える。
【0340】
受信管理プログラム51は、プリンタ2の電源オンと同時に起動するが、先ずステップS481で変数memに0をセットし、ステップS482でユーザがプリンタ2を電源オフしたかチェックし、YESならこのプログラムの処理を終了する。NOならステップS483で受信部6からページ開始コマンドを検知したとの知らせが来たかチェックし、NOならステップS482の直前に戻りループを形成して、受信部6からのページ開始の知らせが来るまで待つ。
【0341】
ステップS483でYESなら、ステップS484でそのページの種別コマンドがページ種別A91かチェックし、YESならステップS485で変数mem_newに1をセットし、NOならステップS486で変数mem_newに2をセットした後、ステップS487に移って変数memが変数mem_newと一致しているかチェックする。
【0342】
ステップS487でYESなら、それは前のページも「合成方式」で出力し、今度のページも「合成方式」で出力するか、あるいは、前のページも「簡易同期式」で出力し、今度のページも「簡易同期式」で出力するか、いずれにしてもRAM9上のメモリマップに変更のない状態であって、図55のステップS495へ飛んで本来の受信処理を開始する。
【0343】
ステップS487でNOなら、それは前のページと今度のページで出力方式が異なり、ステップS488以降で先ずRAM9のメモリマップを「合成方式」用か「簡易同期式」用か、いずれかに変更してから図55のステップS495へ飛び、本来の受信処理を開始する。
【0344】
その場合、先ずステップS488で受信が完了したページのデータの残りが受信バッファ10上にまだ残っているかチェックし、残っているならその残りページが解析プログラム52によって全て排紙されるまでループを形成して待つ。
【0345】
受信済みのページデータが受信バッファ10からなくなったことを確認したら、ステップS489で変数mem_enwが1かチェックし、YESならステップS490で「合成方式」用としてRAM9上に受信バッファ10、バンドメモリ71,72、ページ管理表13、登録文字管理表14、登録文字データ領域15を設け、それぞれをクリアする。ここで言うクリアとは必ずしも0クリアをさしてはいない。初期化すると言う意味である。そして、ステップS491で変数memに1をセットしてステップS494に飛ぶ。
【0346】
ステップS489でNOの場合は、ステップS492で「簡易同期式」用として、RAM9上に受信バッファ10、ページ管理表13だけを設け、それぞれクリアする。そして、ステップS493で変数memに2をセットして、ステップS494へ飛ぶ。
【0347】
ステップS494では、新しい書き込み位置は、受信バッファ10の先頭位置、新しい限界値は受信バッファ10の最後部として、受信部6に対して指示を行なう。そして、図55のステップS495に飛ぶ。
【0348】
次に、図55のステップS495では、ページ管理表13に、これから受信を開始するページデータの受信バッファ10上の開始アドレスをセットし、ステップS496で受信部6に書き込み位置と書き込みの限界値を知らせ、次にステップS497で0.2秒待つ。この待っている間は、受信部6により受信バッファ10への受信データの書き込みが進んでいるはずである。
【0349】
そして、ステップS498で受信部6から受信管理プログラム51に対して、何らかの知らせが届いていないかチェックし、届いていないのであればステップS497の直前に戻り、ループを形成して受信部6からの知らせを待つ。
【0350】
ステップS498で受信部6からの知らせが届いたと判断できたのであれば、ステップS499以降でその知らせの種類に応じて各種の処理を行なう。
【0351】
先ず、ステップS449では、受信部6からの知らせがページ開始コマンド32を検知したものかチェックし、YESならステップS500で受信中の前のページがあったかチェックし、なければそのままステップS484の直前に戻り、新しいページの受信作業に入る。ステップS500でYESなら、ステップS501で受信中であった前のページの終了アドレスをページ管理表13にセットしてから、ステップS484の直前に戻り、新しいページの受信作業に入る。
【0352】
ステップS499でNOなら、ステップS502で受信部6からの知らせがページクリアコマンドを検知したものであるかチェックし、YESならステップS503で受信中だったページをページ管理表13からクリアする。そして、ステップS482の直前に戻り、次のページ開始の知らせを待つ。
【0353】
ステップS504でNOならば、受信部6からの知らせが受信バッファ10への受信データの書き込みが限界に達したことを意味するので、先ず、ステップS506でページ管理表をチェックして受信バッファ10に受信データの書き込み可能な空きがあるか調べる。
【0354】
空きがあるなら、新しい限界値が設定可能なので、ステップS496へ飛んで、受信部6に対して新しい書き込み位置と新しい限界値を知らせて、受信作業を続行する。
ステップS506で空きがないとわかったら、ステップS507で受信バッファ10には現在受信中のページデータしか存在しなくて、受信バッファ10全てに書込んでもまだそのページのデータが続く状況にあるのかチェックし、つまり、1ページのデータが大きすぎるのかチェックし、大きすぎるわけではないのであれば、ステップS508で1秒待つ。
【0355】
この待っている間は、解析プログラム52による受信完了済みのページデータの排紙作業と、排紙済みのページデータの受信バッファ10上からのクリアを待つ。ステップS508の後は、ステップS506の直前に戻ってループを形成して、とにかく、解析プログラム52の解析処理、排紙処理の進行を待つ。
【0356】
ステップS507で、1ページデータが大きすぎると判断できたなら、図56のステップS509で変数memが1かチェックする。変数memが1なら、現在のRAM9上のメモリマップは、「合成方式」であることを示しており、「合成方式」では、大きすぎる1ページデータ、つまり巨大ページの出力は不可能なので、ステップS515以降で受信中止処理に移る。
【0357】
ステップS509でNOの場合は、ステップS510以降で解析プログラム52と共同で、巨大ページの「簡易同期式」での排紙出力処理に移る。
【0358】
先ず、ステップS510でページ管理表13に大きなページであることを示す印をつけ、ステップS511で解析プログラム52に巨大ページを受信中であることを知らせ、また、受信バッファ10上への最後の書き込み位置を知らせる。
【0359】
そして、ステップS512でループを形成して、解析プログラム52からの知らせを待つ。解析プログラム52からの知らせの中身は、受信済みイメージブロックをエンジンにビデオ転送したので、その空いた場所に、次のイメージブロックの受信を催促する知らせか、あるいは、紙ジャムエラーが発生した知らせか、あるいは、エンジンへのビデオ転送にイメージブロックの受信が追いつかない状態になった「オーバーランエラー」が発生した知らせかの3つのうちひとつである。
【0360】
解析プログラム52からの知らせがあったならステップS513へ飛んで、知らせの中身がエラーかどうかチェックし、NOなら、つまりエラーでなくて次のイメージブロックの受信の催促なら、ステップS514でページ管理表13のページ開始アドレスを修正した後で、ステップS496の直前に戻り、巨大ページのイメージブロックの受信を続行する。
【0361】
ステップS509でYESの場合、あるいはステップS513でYESの場合は、ページデータ受信の中止処理に入るが、先ずステップS515で受信部6に書き込み終了の指示をし、ステップS516で受信中だったページをページ管理表13上からクリアし、ステップS517でRAM9上の各バッファ、ワーク領域等をクリアする。「合成方式」であるなら、バンドメモリや、登録文字管理表14、登録文字データ領域15のクリアを含む。
【0362】
ステップS517の後は、ステップS482の直前に戻り、次のページ開始の知らせを待つ。
【0363】
(解析プログラム)
図57,図58は、解析プログラム52の動作を説明するためのプログラムである。第3の実施の形態の図40〜図43で説明した解析プログラム52の動作の先頭部分に、ステップS521以降の処理を追加した形になっている。
【0364】
図57,図58では、追加した部分だけを説明する。その他の部分は、図40〜図43と同様であるので、説明は省略する。
【0365】
解析プログラム52は、プリンタ2の電源オンと同時に動作を開始するが、先ず、ステップS321でユーザによってプリンタ2が電源オフされたかチェックし、YESならこのプログラムの動作を終了する。
【0366】
ステップS321でNOなら、ステップS322で受信済みのページデータが受信バッファ10上にあるかチェックし、あるなら図40のステップS323以降の処理に進む。
【0367】
ステップS322でNOなら、ステップS521で受信管理プログラム51から受信バッファ10に蓄えるには大きすぎるページがあるとの知らせがあったかチェックし、NOならステップS321の直前に戻りループを形成してページデータの受信完了を待つ。
【0368】
ステップS521でYESなら、ステップS522以降で受信バッファ10に収まりきらない巨大なページデータの「簡易同期式」での出力作業に移る。
【0369】
ステップS522では、エンジン部4に対して、給紙開始の指示を送り、ステップS523でエンジン部4が用紙なしを検知したかチェックし、用紙が無いならステップS524でループを形成して、ユーザが用紙をセットするまで待つ。用紙がセットされたか、あるいは、ステップS523でNOなら、ステップS525でこのページの先頭バンドに所属する単一イメージブロックの圧縮イメージデータの伸長作業と、エンジン部4へのビデオ転送作業をイメージ伸長・ビデオ転送回路73に対して指示する。
【0370】
そして、ステップS526でビデオ転送作業が終了したかチェックし、YESなら、ステップS527で受信管理プログラム51に対してビデオ転送作業が終了したので、受信バッファ10上に空きができたことを知らせる。つまり、後述するバンド群のデータの受信を催促する。
【0371】
次に、ステップS528で1ページ全てのビデオ送信作業が完了したかチェックし、YESならステップS529でページ管理表13上の排紙済みページをクリアし、ステップS321の直前に戻り、次のページの解析処理に移る。
【0372】
ステップS528でNOならば、ステップS530で次の受信済みバンドが受信バッファ10に存在するかチェックし、YESならステップS531でイメージ伸長・ビデオ転送回路73に対して転送を完了したバンドの次のバンドに所属する単一イメージブロックの圧縮イメージデータの伸長作業と、エンジン部4へのビデオ転送作業を指示する。そしてステップS526の直前に戻って、ビデオ転送の完了を待つ。
【0373】
ステップS530でNOの場合は、1ページ分のビデオ転送が完了したわけではなく、しかも、次のバンドのデータはまだ受信完了していないと言うことで、ステップS532でプリンタ2に「オーバーランエラー発生」のパネル表示を行い、ステップS535へ飛んでエラー処理を実行する。
【0374】
ステップS526でNOの場合は、ステップS533で紙ジャム、つまりエンジン部4で紙詰まりが発生したかチェックし、NOならばステップS526の直前に戻ってループを形成して、ビデオ転送の終了を待つ。
【0375】
ステップS533でYESなら、ステップS534で「紙詰りが発生しました」とパネル表示をし、ステップS535では、受信管理プログラム51に「エラー発生」を知らせる。この知らせるべき「エラー」の種類としては、「紙ジャムエラー」及び「オーバーランエラー」が含まれる。
【0376】
そして、ステップS536でユーザが詰まった紙を取り除くまでチェックを繰り返し、その後、ステップS321の直前まで戻って、次のページの解析に移る。
【0377】
もちろん、ステップS532で「オーバーランエラー」が発生した時は、紙が詰まったわけではないので、ステップS536でのチェックは素通りする。なお、「オーバーラン」発生時は、オーバーランの発生したバンド位置以下の部分が白いままのページが排紙出力される。
<第4の実施の形態特有の効果>
(1)本実施の形態では、第3の実施の形態の「合成方式」による出力と、「簡易同期式」による出力とをプリンタドライバで自動判断して切り換えるので、ユーザは特に切り替えの操作が不要である。
(2)(1)の前提の上で、文字を主体とした文書ページは、「合成方式」によって文字はほとんどコードで出力できるので、すばやく排紙出力できる。
(3)(1)の前提の上で、写真等のイメージを主体とした文書ページは、受信バッファ10の大きさを超えるページデータでも、「簡易同期式」によって容量限界を超えて排紙出力できる。
[第5の実施の形態]
第5の実施の形態として、第1〜第4の実施の形態において説明した、ホストのドライバにおいて、文字とその他の画像とを区別して、文字は文字コードで、その他はビットマップ画像データでプリンタに送信するという方式と、従来の、すべての印刷データをビットマップ画像データでプリンタに送信するという方式とを組み合わせた方式を本実施の形態で説明する。
【0378】
図61,62は、本実施の形態のプリンタドライバのフローチャートである。なお、このドライバが制御できるプリンタは、第1の実施の形態において説明したプリンタである。
【0379】
プリンタドライバは、ユーザが用いるアプリケーションソフトで作成した文書データから図20で説明した文字やイメージのプリンタコマンドを作成、プリンタ2へ転送する。ユーザがアプリケーションソフトから文書の印刷を指示すると、ホスト1内でプリンタドライバが起動される。
【0380】
図示されてはいないが、ドライバは起動時にはホスト1のメモリ上に1ページ分の大きさのイメージ展開領域としてのフレームバッファを確保し、同時にフレームバッファをクリアする。また、ドライバの文書印刷処理の終了時には、フレームバッファとして使われていたメモリ領域は開放される。
【0381】
処理としては、まずステップS6101でジョブ開始コマンド31をプリンタ2へ転送し、次にステップ6102で変数mに印刷しようとしている文書のページ数に1を加算した値をセットし、ステップS6103で、処理中のページ番号を示す変数mpに1をセットする。そして、ステップS6104で変数mpが変数mより小さいかチェックし、NOなら文書の全てのページ数の処理が終わったので、ステップS172でジョブ終了コマンドを転送して、ドライバの処理を終了する。
【0382】
ステップS6104でYESなら、ステップS6105でページ開始コマンド32をプリンタ2へ転送し、ステップS6106でmpページ目のアプリケーションからの文字印字指示を蓄積し、ステップS6107で、蓄積された文字印字指示の数を、別途定義された所定値pと比較する。もし文字印字指示の数が所定数pよりも大きいならば、ステップS6108に進んで、蓄積された文字印字指示に基づいて、そのページに出現した文字については、文字登録及び文字コードにより、その他はビットマップ画像データとしてプリンタへと送信する。文字印字指示の数が所定数pよりも小さい場合には、ステップS6121に進み、そのページの描画指示を文字も含めてすべてビットマップ画像データに展開する。その後、後述するステップS6122に進んでプリンタへと展開されたイメージの送信を行う。
【0383】
ステップS6108では、mpページ目のアプリケーションからの文字印字指示以外の描画指示をホスト1上のフレームバッファに展開する。ここで文字印字指示以外の描画指示とは、罫線や図形描画、イメージの貼り付け等である。
【0384】
次に、ステップS6109で、変数sに蓄積された文字数に1を加算した値をセットして、ステップS6110で、処理中の文字が1つのバンドにおいて何番目であるか示す変数spヘ1をセットする。
【0385】
次にステップS6111で変数spが変数sより小さいかチェックし、NOならmpページ目に含まれる文字データの転送処理は全て済んだことになるので、ステップS6122以降でnpバンド目のイメージデータの転送処理に移る。つまり、ステップS6122では、空白のページかチェックし、YESなら何もせずステップS6126に移る。
【0386】
ステップS6122でNOなら、ステップS6123でイメージが実際に含まれる矩形領域を、単一のブロックとして切り出し、ステップS6124でブロックの貼り付け位置を示す位置移動コマンド33をプリンタ2へ転送し、ステップS6125で種別5に対応するコマンド、つまりイメージブロックコマンド45,46,47,48をプリンタ2へ転送する。当然ながら、イメージブロックデータはデータ圧縮されて転送される。
【0387】
そして、ステップS6126で処理中のページ番号を示す変数mpに1を加算し、ステップS6104の直前に戻り、次のページの転送処理に移る。
【0388】
ステップS6111でYESの場合は、ステップS6116でsp番目の文字はこの文書で初めて現れる文字の印字の指示かチェックし、初めてならばステップS6117でその文字の印字位置を示す位置移動コマンド33をプリンタ2へ転送し、ステップS6114で、プリンタ2側が登録可能な文字数の限界に達したかチェックし、限界に達したならステップS6119で種別3に対応するコマンド、つまり、sp番目の文字の文字イメージ印字のみのコマンド43,44をプリンタ2へ転送して、ステップS6115へ移る。
【0389】
ステップS6117で限界に達していないと分かれば、ステップS6118で種別2に対応するコマンド、つまり文字登録+印字コマンド41,42,43,44をプリンタ2へ転送してからステップS6114ヘ移る。当然ながら、プリンタ2へ転送される一文字のドットイメージは、データ圧縮されて転送される。
【0390】
ステップS6112でNOならば、この文字の印字の指示が文書の中で二度目以降の指示であることを示しているので、ステップS6113でその文字の印字位置を示す位置移動命令33をプリンタ2へ転送し、次にステップS6114で、その文字についての種別コマンド34が4、つまり文字コード印字コマンド41,42をプリンタ2へ転送する。
【0391】
そして、ステップS6115で何番目の文字かを示す変数spに1を加算してステップS6111の直前に戻り、次の文字データのプリンタ2への転送処理を行なう。
【0392】
以上の手順により、1ページに含まれる文字数が所定数以上であれば文字とその他のデータとを区別して、文字を文字登録と文字コードとでプリンタに送信してプリンタにおいてイメージに展開させ、1ページに含まれる文字数が所定数より小さければ、文字も含めてそのページの画像データを全てビットマップ画像に展開してプリンタに送り付ける。こうすることで、わずかの数の文字が含まれている場合に、その文字について、ドライバで文字を抽出して文字登録及び文字を除いてイメージへの展開を行うことと、プリンタにおいて文字をイメージに展開するという、双方における処理のオーバーヘッドを小さくすることができる。
【0393】
また、上述の第1〜第4の実施形態におけるプリンタは、従来のすべての印刷データをイメージとしてホストコンピュータから受信した場合でも対応できるため、本実施形態のように、両方式が混在していても特別にプリンタ側の処理手順を変更する必要がない。
【0394】
上記手順は1ページを単位とする場合に行われる手順であるが、第2の実施の形態におけるように、バンド単位でホストコンピュータからプリンタへと印刷データが送信される場合であっても、上述の要領でデータ転送の方式を変更することができる。
【0395】
図63は、この方式に係るプリンタドライバによる制御手順の一部である。なお、このプリンタドライバにより送信されるデータを適正に処理できるプリンタは、第2の実施の形態に記載されたプリンタである。
【0396】
このドライバの手順は、そのほとんどが第2の実施形態におけるドライバのフローチャートである図22〜24と共通であるため、共通な部分については図22〜24と同一の符号を付し、説明を省略する。第2の実施形態とことなるのは、図63のステップS146とステップS147との間に、ステップS6301〜ステップS6302が挿入されているという点である。
【0397】
ステップS6301では、蓄積された文字印字指示の数を、別途定義された所定値pと比較する。もし文字印字指示の数が所定数pよりも大きいならば、ステップS147に進んで、それ以降の処理により、蓄積された文字印字指示に基づいて、そのページに出現した文字については、文字登録及び文字コードにより、その他はビットマップ画像データとしてプリンタへと送信する。文字印字指示の数が所定数pよりも小さい場合には、ステップS6302に進み、そのページの描画指示を文字も含めてすべてビットマップ画像データに展開する。その後、ステップS158に進んでプリンタへと展開されたイメージの送信を行う。
【0398】
以上のようにプリンタドライバが処理を行うことで、1ページに含まれる文字数が所定数以上であれば文字とその他のデータとを区別して、文字を文字登録と文字コードとでプリンタに送信してプリンタにおいてイメージに展開させ、1ページに含まれる文字数が所定数より小さければ、文字も含めてそのページの画像データを全てビットマップ画像に展開してプリンタに送り付ける。こうすることで、わずかの数の文字が含まれている場合に、その文字について、ドライバで文字を抽出して文字登録及び文字を除いてイメージへの展開を行うことと、プリンタにおいて文字をイメージに展開するという、双方における処理のオーバーヘッドを小さくすることができる。
【0399】
なお、図63の手順では、1ページ含まれる文字数を所定の数と比較しているが、1つのバンドごとにそれに含まれる文字数を所定の数と比較し、1ページに含まれる文字数が所定数以上であれば、文字は文字コードとして、その他はイメージとしてそのバンドをプリンタに送信、そうでなければそのバンドのすべての印刷データおイメージとしてプリンタに送信する。
【0400】
そのためには、図64に示すように、第2の実施形態の図23におけるステップS154とステップS155との間にステップS6401,S6402を挿入する。ステップS6401においては、ピックアップされたnpバンド目の文字印字指示の数を所定数p’と比較し、文字の数の方が多ければステップS155に進み、そうでなければ、ステップS6402において、そのバンドの印刷データを全てイメージに展開し、ステップS148で展開されたフレームバッファ上のイメージと合成してステップS158に分岐することになる。こうすることで、バンド単位で本発明に係る印刷制御方式と従来の印刷制御方式とを切り替えることができる。
【0401】
【他の実施形態】
なお、本発明は、複数の機器(例えばホストコンピュータ,インタフェイス機器,リーダ,プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機,ファクシミリ装置など)に適用してもよい。
【0402】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、ホストあるいはプリンタに供給し、そのホストあるいはプリンタのCPUやMPUが記憶媒体に格納されたプログラムコードを読出し実行することによっても達成される。
【0403】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成する。
【0404】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
【0405】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【0406】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【0407】
【発明の効果】
以上説明したように、本発明によれば、文字部分については、ほとんど文字コードによる処理なので、ホスト上では文字展開時間がそれほどいらないし、データ量も小さいので文書データの高速出力ができるという効果がある。
【0408】
また、フレームメモリの代わりにバンドメモリを備えることで、必要とするメモリ容量を小さく押さえられるという効果がある。
【0409】
また、バンド内で実際にイメージが含まれる矩形部分だけをイメージデータとして扱い、イメージを全く含まないバンドはイメージデータをプリンタに送らないことで、イメージデータの転送量を小さく抑えられるという効果がある。
【0410】
また、文字を含まないイメージだけのバンド部分の出力については、ハードウェア回路によって圧縮イメージデータの伸長作業とエンジンへのビデオ転送作業を行ない、バンドメモリへの展開作業を省略してプリンタのコントローラの負荷を小さくすることで、「オーバーラン」等のエラーを発生しにくくできるという効果がある。
【0411】
また、ホスト上のパターン分析でバンド単位に同じパターンのあるバンドが存在する場合はそのバンドのイメージデータは以前転送済みのバンドのイメージデータと同一であることを示すコマンドをプリンタへ転送することで、イメージデータの転送量を小さく抑えられるという効果がある。
【0412】
また、受信バッファにデータが納まる場合には、文字を文字コードとしてプリンタで展開する方式で印刷出力するが、データは全てイメージであり、受信バッファに納まりきらない場合には、イメージを所定の大きさに区切ってホストから送信し、プリンタでは受信する都度印刷するような方式に自動切り換えすることで、巨大なイメージデータを含んだページも出力できるという効果がある。
【0413】
【図面の簡単な説明】
【図1】第1の実施の形態のシステム全体のブロック構成図である。
【図2】イメージデータと文字データの合成の原理の説明図である。
【図3】コマンドの構造の説明図である。
【図4】コマンド列の構造の説明図である。
【図5】ROMに内蔵されたプログラムの図である。
【図6】受信バッファのポインタの説明図である。
【図7】プリンタドライバの動作のフローチャートである。
【図8】プリンタドライバの動作のフローチャートである。
【図9】受信管理プログラムの動作のフローチャートである。
【図10】受信管理プログラムの動作のフローチャートである。
【図11】受信部の動作のフローチャートである。
【図12】受信部の動作のフローチャートである。
【図13】解析プログラムの動作のフローチャートである。
【図14】解析プログラムの動作のフローチャートである。
【図15】登録プログラムの動作のフローチャートである。
【図16】印字プログラムの動作のフローチャートである。
【図17】排紙プログラムの動作のフローチャートである。
【図18】第2の実施の形態のシステム全体のブロック構成図である。
【図19】コントローラ部のバンド処理の原理の説明図である。
【図20】コマンドの構造の説明図である。
【図21】ROMに内蔵されてたプログラムの図である。
【図22】プリンタドライバの動作のフローチャートである。
【図23】プリンタドライバの動作のフローチャートである。
【図24】プリンタドライバの動作のフローチャートである。
【図25】解析プログラムの動作のフローチャートである。
【図26】解析プログラムの動作のフローチャートである。
【図27】解析プログラムの動作のフローチャートである。
【図28】解析プログラムの動作のフローチャートである。
【図29】印字プログラムの動作のフローチャートである。
【図30】バンドのビデオ出力をする際の各変数の説明図である。
【図31】イメージ伸長・ビデオ転送回路の動作のフローチャートである。
【図32】イメージ伸長・ビデオ転送回路の動作のフローチャートである。
【図33】イメージ伸長・ビデオ転送回路の動作のフローチャートである。
【図34】第3の実施の形態のイメージバンドの繰り返しの原理の説明図である。
【図35】イメージバンドの繰り返しの例の説明図である。
【図36】コマンドの構造の説明図である。
【図37】プリンタドライバの動作のフローチャートである
【図38】プリンタドライバの動作のフローチャートである
【図39】プリンタドライバの動作のフローチャートである
【図40】解析プログラムの動作のフローチャートである。
【図41】解析プログラムの動作のフローチャートである。
【図42】解析プログラムの動作のフローチャートである。
【図43】解析プログラムの動作のフローチャートである。
【図44】第4の実施の形態のシステム全体のブロック構成図である。
【図45】コマンドの構造の説明図である。
【図46】ページ管理表の構造の説明図である。
【図47】プリンタドライバの動作のフローチャートである。
【図48】プリンタドライバの動作のフローチャートである。
【図49】プリンタドライバの動作のフローチャートである。
【図50】プリンタドライバの動作のフローチャートである。
【図51】プリンタドライバの動作のフローチャートである。
【図52】受信部の動作のフローチャートである。
【図53】受信部の動作のフローチャートである。
【図54】受信管理プログラムの動作のフローチャートである
【図55】受信管理プログラムの動作のフローチャートである
【図56】受信管理プログラムの動作のフローチャートである
【図57】解析プログラムの動作のフローチャートである。
【図58】解析プログラムの動作のフローチャートである。
【図59】巨大イメージを出力する手順の原理を示す図である。
【図60】巨大イメージを出力する際のプリンタのようすを示す図である。
【図61】第5の実施の形態に係るプリンタドライバの動作のフローチャートである。
【図62】第5の実施の形態に係るプリンタドライバの動作のフローチャートである。
【図63】第5の実施の形態に係るプリンタドライバの動作のフローチャートである。
【図64】第5の実施の形態に係るプリンタドライバの動作のフローチャートである。
【符号の説明】
1 ホストコンピュータ
2 プリンタ
3 コントローラ
4 エンジン
5,21 CPU
6 受信部
7 ビデオ転送回路
9 RAM
10 受信バッファ
11 フレームバッファ
12 ワーク領域
13 ページ管理表
14 登録文字管理表
15 登録文字データ
16 イメージ伸長回路
17 文字伸長回路
25 ビデオ受信部
26 給紙部
27 現像定着部
28 排紙部

Claims (19)

  1. 注目バンドが単一の圧縮イメージであるか否かを判別する第1判別手段と、
    前記第1判別手段により注目バンドが単一の圧縮イメージでないと判別された場合、圧縮イメージデータを伸長したイメージデータと他のイメージデータとをバンドメモリに展開し、バンドメモリに展開されたイメージデータをビデオ転送部に出力し、前記第1判別手段により注目バンドが単一の圧縮イメージであると判別された場合、圧縮イメージデータを伸長したイメージデータをバンドメモリに展開することなく圧縮イメージデータをビデオ転送部に出力する制御手段とを有することを特徴とする印刷制御装置。
  2. 注目バンドが単一の圧縮イメージであるか否かを判別する第1判別手段と、
    前記第1判別手段により注目バンドが単一の圧縮イメージでないと判別された場合、圧縮イメージデータを伸長したイメージデータと他のイメージデータとをバンドメモリに展開し、バンドメモリに展開されたイメージデータを出力し、前記第1判別手段により注目バンドが単一の圧縮イメージであると判別された場合、圧縮イメージデータを伸長したイメージデータをバンドメモリに展開することなく圧縮イメージデータを出力する制御手段と、
    前記制御手段により出力されるイメージデータをビデオ信号に変換して出力し、また前記制御手段により出力される圧縮イメージデータをイメージデータに伸長し、伸長したイメージデータをビデオ信号に変換して出力するビデオ転送手段と、
    前記ビデオ転送手段により出力されるビデオ信号に基づき印刷を行うプリントエンジンとを有することを特徴とする印刷制御装置。
  3. 注目バンドがブランクバンドであるか否かを判別する第2判別手段を有し、
    前記制御手段は、前記第2判別手段によりブランクバンドであると判別された場合、前記ビデオ転送手段に空白バンドの出力処理を指示することを特徴とする請求項記載の印刷制御装置。
  4. 前記他のイメージデータは、文字イメージデータを含むことを特徴とする請求項、または記載の印刷制御装置。
  5. 前記圧縮イメージデータは、ホストコンピュータから入力されたものであり、
    前記文字イメージデータは、ホストコンピュータから登録されたものであることを特徴とする請求項記載の印刷制御装置。
  6. 前記他のイメージデータは、圧縮されたイメージデータを含むことを特徴とする請求項、または記載の印刷制御装置。
  7. 前記ビデオ転送手段は、空白バンドの出力指示に応じてビデオ信号を出力しないことを特徴とする請求項記載の印刷制御装置。
  8. 注目バンドが単一の圧縮イメージであるか否かを判別する第1判別ステップと、
    前記第1判別ステップにより注目バンドが単一の圧縮イメージでないと判別された場合、圧縮イメージデータを伸長したイメージデータと他のイメージデータとをバンドメモリに展開し、バンドメモリに展開されたイメージデータをビデオ転送部に出力し、前記第1判別ステップにより注目バンドが単一の圧縮イメージであると判別された場合、圧縮イメージデータを伸長したイメージデータをバンドメモリに展開することなく圧縮イメージデータをビデオ転送部に出力する制御ステップとを有することを特徴とする印刷制御方法。
  9. 注目バンドが単一の圧縮イメージであるか否かを判別する第1判別ステップと、
    前記第1判別ステップにより注目バンドが単一の圧縮イメージでないと判別された場合、圧縮イメージデータを伸長したイメージデータと他のイメージデータとをバンドメモリに展開し、バンドメモリに展開されたイメージデータを出力し、前記第1判別ステップにより注目バンドが単一の圧縮イメージであると判別された場合、圧縮イメージデータを伸長したイメージデータをバンドメモリに展開することなく圧縮イメージデータを出力する制御ステップと、
    前記制御ステップにより出力されるイメージデータをビデオ信号に変換して出力し、また前記制御ステップにより出力される圧縮イメージデータをイメージデータに伸長し、伸長したイメージデータをビデオ信号に変換して出力するビデオ転送ステップと、
    前記ビデオ転送ステップにより出力されるビデオ信号に基づき印刷を行うプリントステップとを有することを特徴とする印刷制御方法。
  10. 注目バンドがブランクバンドであるか否かを判別する第2判別ステップを有し、
    前記制御ステップは、前記第2判別ステップによりブランクバンドであると判別された場合、前記ビデオ転送ステップに空白バンドの出力処理を指示することを特徴とする請求項記載の印刷制御方法。
  11. 前記他のイメージデータは、文字イメージデータを含むことを特徴とする請求項、または記載の印刷制御方法。
  12. 前記圧縮イメージデータは、ホストコンピュータから入力されたものであり、
    前記文字イメージデータは、ホストコンピュータから登録されたものであることを特徴とする請求項11記載の印刷制御方法。
  13. 前記他のイメージデータは、圧縮されたイメージデータを含むことを特徴とする請求項、または記載の印刷制御方法。
  14. 前記ビデオ転送ステップは、空白バンドの出力指示に応じてビデオ信号を出力しないことを特徴とする請求項記載の印刷制御方法。
  15. 注目バンドが単一の圧縮イメージであるか否かを判別する第1判別ステップと、
    前記第1判別ステップにより注目バンドが単一の圧縮イメージでないと判別された場合、圧縮イメージデータを伸長したイメージデータと他のイメージデータとをバンドメモリに展開し、バンドメモリに展開されたイメージデータをビデオ転送部に出力し、前記第1判別ステップにより注目バンドが単一の圧縮イメージであると判別された場合、圧縮イメージデータを伸長したイメージデータをバンドメモリに展開することなく圧縮イメージデータをビデオ転送部に出力する制御ステップとをコンピュータに実行させるプログラムを記憶したことを特徴とする記憶媒体。
  16. 注目バンドがブランクバンドであるか否かを判別する第2判別ステップを有し、
    前記制御ステップは、前記第2判別ステップによりブランクバンドであると判別された場合、前記ビデオ転送ステップに空白バンドの出力処理を指示することを特徴とする請求項15記載の記憶媒体。
  17. 前記他のイメージデータは、文字イメージデータを含むことを特徴とする請求項15記載の記憶媒体。
  18. 前記圧縮イメージデータは、ホストコンピュータから入力されたものであり、
    前記文字イメージデータは、ホストコンピュータから登録されたものであることを特徴とする請求項15記載の記憶媒体。
  19. 前記他のイメージデータは、圧縮されたイメージデータを含むことを特徴とする請求項15記載の記憶媒体。
JP14269497A 1996-12-27 1997-05-30 情報処理装置及び印刷制御装置及び方法とプログラム記憶媒体 Expired - Fee Related JP3814373B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP14269497A JP3814373B2 (ja) 1996-12-27 1997-05-30 情報処理装置及び印刷制御装置及び方法とプログラム記憶媒体

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP35038196 1996-12-27
JP8-350381 1996-12-27
JP14269497A JP3814373B2 (ja) 1996-12-27 1997-05-30 情報処理装置及び印刷制御装置及び方法とプログラム記憶媒体

Publications (2)

Publication Number Publication Date
JPH10240468A JPH10240468A (ja) 1998-09-11
JP3814373B2 true JP3814373B2 (ja) 2006-08-30

Family

ID=26474613

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14269497A Expired - Fee Related JP3814373B2 (ja) 1996-12-27 1997-05-30 情報処理装置及び印刷制御装置及び方法とプログラム記憶媒体

Country Status (1)

Country Link
JP (1) JP3814373B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4923899B2 (ja) * 2006-09-19 2012-04-25 セイコーエプソン株式会社 プリンタ・ドライバ・プログラム
JP5061314B2 (ja) 2007-02-27 2012-10-31 京セラドキュメントソリューションズ株式会社 画像形成装置及び画像形成プログラム
JP6394304B2 (ja) * 2014-11-13 2018-09-26 セイコーエプソン株式会社 印刷制御装置の制御方法、印刷制御装置、及び、印刷システム
JP6394303B2 (ja) * 2014-11-13 2018-09-26 セイコーエプソン株式会社 ドライバープログラム、印刷システム、及び、データ処理方法
JP6743470B2 (ja) * 2016-04-20 2020-08-19 富士ゼロックス株式会社 画像蓄積装置及び画像蓄積プログラム

Also Published As

Publication number Publication date
JPH10240468A (ja) 1998-09-11

Similar Documents

Publication Publication Date Title
US4989163A (en) Photo printer having a host computer assist function and method of controlling the same
JP3792823B2 (ja) 印刷装置及び印刷制御装置
JPH0713717A (ja) 像形成装置,像形成システムおよびその像形成方法
US6480295B1 (en) Image forming apparatus for efficiently storing developed print data depending on situations and an image forming method thereof
US5371873A (en) Image data processing terminal equipment coupled to an external device allowing independent use of memory area by the external device
KR100253103B1 (ko) 인쇄 시스템
JP3814373B2 (ja) 情報処理装置及び印刷制御装置及び方法とプログラム記憶媒体
US6084687A (en) Image processing system, drawing system, drawing method, medium, printer, and image display unit
JPH10222319A (ja) 印刷装置及び印刷制御方法
JP3728076B2 (ja) 画像入出力装置及び方法
JPH10278362A (ja) 印刷制御装置及び方法と印刷システム
JP2002103697A (ja) 画像処理装置
JPH10320152A (ja) 印刷処理システム、印刷処理装置ならびに、印刷処理方法
JPH05224846A (ja) 印刷記録装置
JPH10309835A (ja) ページプリンタ
JP2000168170A (ja) 白紙検出装置ならびにそれを用いた画像記録装置、画像形成装置および画像読取り装置
JP2690028B2 (ja) 印刷制御装置および印刷用データバッファ装置
JP3004656B2 (ja) 出力制御装置
JPH08282064A (ja) 記録装置及び記録制御方法
JPH11170656A (ja) 画像出力装置及び方法
JP2715475B2 (ja) 図形出力装置
JPH0691979A (ja) 画像形成装置におけるフォームデータ処理方式
JPH09150564A (ja) 印刷装置
JPH04334261A (ja) 印刷装置
JPH09248943A (ja) ページプリンタにおけるデータ圧縮方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040524

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040524

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20040524

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20040524

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050421

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050510

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050630

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20051206

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051226

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20060106

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060522

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060605

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090609

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100609

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110609

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120609

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120609

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130609

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees