(57)【要約】【課題】画像形成装置における印刷データのバッファの管理技術であって、処理の高速化と省メモリとの両立を図る技術を提供すること。【解決手段】プリンタ１００は、画処理部３０３にてラインデータを生成し、ラインメモリ３３３への書込開始の指示を出力する。プリンタ１００は、印刷制御部３０５にてラインメモリ３３３を構成し、ラインメモリ３３３のライン幅と、書込開始の指示のライン幅とが同じか否かを判断する。そして、プリンタ１００は、ラインメモリ３３３のライン幅と書込開始の指示のライン幅とが同じであると判断した場合、全ての先行ページのラインデータの読み出しが終了する前から、画処理部３０３によるラインメモリ３３３への書き込みを許可する。一方、ラインメモリ３３３のライン幅と、書込開始の指示のライン幅とが異なると判断した場合、プリンタ１００は、ラインメモリ３３３を再構成する。【選択図】図５
2019130772.tif 000002
【特許請求の範囲】
【請求項１】
印刷データ生成手段と、
記憶手段と、
メモリ制御手段と、
画像形成手段と、
を備え、
前記印刷データ生成手段は、
印刷データを生成する生成処理と、
前記記憶手段に構成されて前記印刷データを記憶するバッファへの前記印刷データの書き込みを開始する書込み開始指示であって、前記印刷データのライン幅に関する情報であるライン幅情報を含む前記書込み開始指示を、前記印刷データのページごとに、前記メモリ制御手段に出力する書込み開始指示処理と、
前記書込み開始指示処理の後、前記記憶手段への書き込みが許可されていることを条件として、前記印刷データを前記記憶手段の前記バッファに書き込む書込み処理と、
を実行し、
前記メモリ制御手段は、
前記記憶手段の前記印刷データの記憶用の領域を所定ラインごとに区分した前記バッファを構成するバッファ構成処理と、
前記印刷データ生成手段からページごとの前記書込み開始指示を受け付けた場合に、前記書込み開始指示に含まれる前記ライン幅情報に基づいて、今回のページのライン幅が、構成されている前記バッファの前記所定ラインに対応するライン幅と同じか否かを判断する判断処理と、
前記判断処理にて今回のページのライン幅が前記バッファの前記所定ラインに対応するライン幅と同じと判断された場合、前記画像形成手段による全ての先行ページの印刷データの読み出しが終了する前から、前記印刷データ生成手段による前記記憶手段の前記バッファへの書き込みを許可する第１許可処理と、
前記判断処理にて今回のページのライン幅が前記バッファの前記所定ラインに対応するライン幅と異なると判断された場合、前記印刷データ生成手段による前記記憶手段の前記バッファへの書き込みを禁止する禁止処理と、
前記判断処理にて今回のページのライン幅が前記バッファの前記所定ラインに対応するライン幅と異なると判断された場合、前記画像形成手段による前記全ての先行ページの印刷データの読み出しが終了した後に、前記書込み開始指示に含まれる前記ライン幅情報に基づいて、前記バッファを再構成するバッファ再構成処理と、
前記バッファ再構成処理によるバッファの再構成が終了した後に、前記印刷データ生成手段による前記記憶手段の前記バッファへの書き込みを許可する第２許可処理と、
を実行することを特徴とする画像形成装置。
【請求項２】
請求項１に記載する画像形成装置において、
前記印刷データ生成手段は、
前記バッファを前記記憶手段に構成する構成指示であって前記印刷データの情報である印刷データ情報を含む前記構成指示を、前記メモリ制御手段に出力するバッファ構成指示処理、
をさらに実行し、
前記メモリ制御手段は、
前記バッファ構成処理および前記バッファ再構成処理では、前記印刷データ生成手段から前記構成指示を受け付けた場合に、前記構成指示に含まれる前記印刷データ情報に基づいて、前記バッファを構成する、
ことを特徴とする画像形成装置。
【請求項３】
請求項１または請求項２に記載する画像形成装置において、
前記記憶手段に構成される前記バッファはリングバッファである、
ことを特徴とする画像形成装置。
【請求項４】
請求項１から請求項３のいずれか１つに記載する画像形成装置において、
前記所定ラインは、１ラインである、
ことを特徴とする画像形成装置。
【請求項５】
請求項１から請求項４のいずれか１つに記載する画像形成装置において、
前記ライン幅情報は、印刷媒体の種別を特定する情報であり、
前記メモリ制御手段は、
前記判断処理では、
前記書込み開始指示に含まれる前記ライン幅情報に基づく印刷媒体が、前記バッファの前記所定ラインに対応するライン幅に対応した印刷媒体と同じグループに含まれる場合、今回のページのライン幅がバッファの前記所定ラインに対応するライン幅と同じと判断する、
ことを特徴とする画像形成装置。
【請求項６】
請求項１から請求項５のいずれか１つに記載する画像形成装置において、
前記印刷データ生成手段は、
前記書込み開始指示処理の後、前記バッファへの書き込みが禁止された場合、前記バッファへの書き込みが許可されるまで定期的に、前記書込み開始指示を前記メモリ制御手段に出力する、
ことを特徴とする画像形成装置。
【請求項７】
請求項１から請求項６のいずれか１つに記載する画像形成装置において、
前記メモリ制御手段は、
前記バッファを構成した場合、前記バッファの各領域にインデックスを割り当て、
前記インデックスを用いて前記バッファへの前記印刷データの書き込みおよび読み出しの制御を行う、
ことを特徴とする画像形成装置。
【請求項８】
印刷データを生成する印刷データ生成手段と、
記憶手段と、
メモリ制御手段と、
画像形成手段と、
を備える画像形成装置の前記メモリ制御手段に、
前記記憶手段の前記印刷データの記憶用の領域を所定ラインごとに区分したバッファを構成するバッファ構成処理と、
前記印刷データ生成手段からページごとの書込み開始指示を受け付けた場合に、前記書込み開始指示に含まれるライン幅情報に基づいて、今回のページのライン幅が、構成されている前記バッファの前記所定ラインに対応するライン幅と同じか否かを判断する判断処理と、
前記判断処理にて今回のページのライン幅が前記バッファの前記所定ラインに対応するライン幅と同じと判断された場合、前記画像形成手段による全ての先行ページの印刷データの読み出しが終了する前から、前記印刷データ生成手段による前記記憶手段の前記バッファへの書き込みを許可する第１許可処理と、
前記判断処理にて今回のページのライン幅が前記バッファの前記所定ラインに対応するライン幅と異なると判断された場合、前記印刷データ生成手段による前記記憶手段の前記バッファへの書き込みを禁止する禁止処理と、
前記判断処理にて今回のページのライン幅が前記バッファの前記所定ラインに対応するライン幅と異なると判断された場合、前記画像形成手段による前記全ての先行ページの印刷データの読み出しが終了した後に、前記書込み開始指示に含まれる前記ライン幅情報に基づいて、前記バッファを再構成するバッファ再構成処理と、
前記バッファ再構成処理によるバッファの再構成が終了した後に、前記印刷データ生成手段による前記記憶手段の前記バッファへの書き込みを許可する第２許可処理と、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置およびプログラムに関する。さらに詳細には、印刷データを記憶するバッファの管理技術に関するものである。
【背景技術】
【０００２】
従来、画像形成に用いる印刷データを記憶するバッファを、所定ラインごとに区分して管理する技術が知られている。データの管理を所定サイズごとに管理する技術を開示した文献としては、例えば特許文献１がある。特許文献１には、受信したデータを、複数のブロックからなるリングバッファに記憶する構成が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−１８４１９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
複数ページのジョブを印刷する場合、ページごとに１ライン分のサイズが異なる場合がある。そのため、印刷データを記憶するバッファをライン単位で区分して構成する場合、そのバッファを１ページごとにメモリ内に生成し、そのページの利用が終了する度に次のページ用にバッファを構成し直している。つまり、１ページ分のメモリの利用が終了するまで、次のページのメモリの利用を制限している。そのため、処理の遅延が問題になり、メモリの利用効率も低い。
【０００５】
仮に、メモリ内にライン幅ごとのバッファを予め構成すれば、異なるサイズのページを同時に処理できるため、先行ページのメモリの利用終了を待つことなく次のページがメモリを利用できるため、メモリの利用効率を高められる。しかしながら、複数のバッファの構成に必要な大容量のメモリが必要となり、コストアップを招く。また、メモリ容量が大きくなる分、空きメモリの検索に時間がかかるようになり、かえって処理遅延を招く可能性がある。
【０００６】
本発明は、前記した従来の技術が有する問題点を解決するためになされたものである。すなわちその課題とするところは、画像形成装置における印刷データのバッファの管理技術であって、処理の高速化と省メモリとの両立を図る技術を提供することにある。
【課題を解決するための手段】
【０００７】
この課題の解決を目的としてなされた画像形成装置は、印刷データ生成手段と、記憶手段と、メモリ制御手段と、画像形成手段と、を備え、前記印刷データ生成手段は、印刷データを生成する生成処理と、前記記憶手段に構成されて前記印刷データを記憶するバッファへの前記印刷データの書き込みを開始する書込み開始指示であって、前記印刷データのライン幅に関する情報であるライン幅情報を含む前記書込み開始指示を、前記印刷データのページごとに、前記メモリ制御手段に出力する書込み開始指示処理と、前記書込み開始指示処理の後、前記記憶手段への書き込みが許可されていることを条件として、前記印刷データを前記記憶手段の前記バッファに書き込む書込み処理と、を実行し、前記メモリ制御手段は、前記記憶手段の前記印刷データの記憶用の領域を所定ラインごとに区分した前記バッファを構成するバッファ構成処理と、前記印刷データ生成手段からページごとの前記書込み開始指示を受け付けた場合に、前記書込み開始指示に含まれる前記ライン幅情報に基づいて、今回のページのライン幅が、構成されている前記バッファの前記所定ラインに対応するライン幅と同じか否かを判断する判断処理と、前記判断処理にて今回のページのライン幅が前記バッファの前記所定ラインに対応するライン幅と同じと判断された場合、前記画像形成手段による全ての先行ページの印刷データの読み出しが終了する前から、前記印刷データ生成手段による前記記憶手段の前記バッファへの書き込みを許可する第１許可処理と、前記判断処理にて今回のページのライン幅が前記バッファの前記所定ラインに対応するライン幅と異なると判断された場合、前記印刷データ生成手段による前記記憶手段の前記バッファへの書き込みを禁止する禁止処理と、前記判断処理にて今回のページのライン幅が前記バッファの前記所定ラインに対応するライン幅と異なると判断された場合、前記画像形成手段による前記全ての先行ページの印刷データの読み出しが終了した後に、前記書込み開始指示に含まれる前記ライン幅情報に基づいて、前記バッファを再構成するバッファ再構成処理と、前記バッファ再構成処理によるバッファの再構成が終了した後に、前記印刷データ生成手段による前記記憶手段の前記バッファへの書き込みを許可する第２許可処理と、を実行することを特徴としている。
【０００８】
本明細書に開示される画像形成装置は、所定ラインごとに区分したバッファに印刷データを記憶する。そして、本画像形成装置は、印刷データの書き込み開始指示に含まれるライン幅情報に基づいて、今回のページとバッファの所定ラインに対応するライン幅とが同じであると判断した場合、全ての先行ページの印刷データの読み出しが終了する前から、印刷データのバッファへの書き込みを許可する。つまり、同じライン幅のページが連続する場合には、バッファを再構成することなく、読み出し終了を待つ必要もない。また、本画像形成装置では、ライン幅ごとのバッファを予め構成する必要はない。従って、処理の高速化と省メモリとの両立が期待できる。
【０００９】
上記画像形成装置の機能を実現するための制御方法、コンピュータプログラム、および当該コンピュータプログラムを格納するコンピュータにて読取可能な記憶媒体も、新規で有用である。
【発明の効果】
【００１０】
本発明によれば、画像形成装置における印刷データのバッファの管理技術であって、処理の高速化と省メモリとの両立を図る技術が実現される。
【図面の簡単な説明】
【００１１】
【図１】実施の形態にかかるプリンタの電気的構成を示すブロック図である。
【図２】プリンタによるデータ生成の手順を示す説明図である。
【図３】インデックス情報の例を示す説明図である。
【図４】ページ管理情報の例を示す説明図である。
【図５】ラインデータの生成手順を示すシーケンス図である。
【図６】プリンタのラインデータ生成処理の手順を示すフローチャートである。
【図７】インデックス生成処理の手順を示すフローチャートである。
【図８】印刷エンジン制御処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明にかかる画像形成装置を具体化した実施の形態について、添付図面を参照しつつ詳細に説明する。本形態は、画像形成機能を備えたプリンタに本発明を適用したものである。
【００１３】
本形態のプリンタ１００の電気的構成について説明する。本形態のプリンタ１００は、図１に示すように、ＣＰＵ３１と、ＲＯＭ３２と、ＲＡＭ３３と、不揮発性メモリ３４と、を含むコントローラ３０を備えている。また、プリンタ１００は、画像形成部１０と、ネットワークインターフェース（ネットワークＩＦ）３７と、ＵＳＢインターフェース（ＵＳＢ−ＩＦ）３８と、操作パネル４０と、を備え、これらがコントローラ３０に電気的に接続されている。
【００１４】
ＲＯＭ３２には、プリンタ１００を動作するための動作プログラム等が記憶されている。ＲＡＭ３３は、各種の処理が実行される際の作業領域として、あるいは、データを一時的に記憶する記憶領域として利用される。不揮発性メモリ３４は、例えば、ＨＤＤ、フラッシュメモリであり、各種のプログラムや画像データ等のデータや各種設定を記憶する領域として利用される。ＲＡＭ３３は、記憶手段の一例である。
【００１５】
ＣＰＵ３１は、ＲＯＭ３２や不揮発性メモリ３４から読み出したプログラムに従って、その処理結果をＲＡＭ３３または不揮発性メモリ３４に記憶させながら、プリンタ１００の各構成要素を制御する。なお、図１中のコントローラ３０は、ＣＰＵ３１等、プリンタ１００の制御に利用されるハードウェアまたはソフトウェアを纏めた総称であって、実際にプリンタ１００に存在する単一のハードウェアを表すとは限らない。
【００１６】
画像形成部１０は、シートに画像を形成するための構成およびシートを搬送するための構成を含む。本形態のプリンタ１００は、例えば、インクジェット方式で画像を形成するプリンタであり、画像形成部１０は、インクの吐出ノズルを備えた印字ヘッドを有している。画像形成部１０は、印字ヘッドをキャリッジにて走査させて１走査分の画像形成を行い、１走査分の画像形成と１走査分のシートの搬送とを交互に繰り返すことで、１ページ分の印刷を完了させる。なお、画像形成部１０の印刷方式は、インクジェット方式に限らず、電子写真方式、熱転写方式等であってもよい。また、プリンタ１００は、カラー画像の印刷が可能な装置であっても、モノクロ印刷専用の装置であってもよい。
【００１７】
ネットワークＩＦ３７は、ネットワークを介して接続された外部装置と通信を行うためのハードウェアを含む。通信方法は、有線であっても無線であってもよい。プリンタ１００は、例えば、ネットワークＩＦ３７を介して、ＰＣ等の外部装置から送信された印刷ジョブを受け付ける。ＵＳＢ−ＩＦ３８は、ＵＳＢメモリ等のＵＳＢ接続機器が接続されるハードウェアを含む。プリンタ１００は、例えば、ＵＳＢ−ＩＦ３８に接続されたＵＳＢメモリに記憶されている画像データに基づく印刷を行うことができる。操作パネル４０は、動作状況の表示やユーザによる入力操作の受付を行う。
【００１８】
本形態のプリンタ１００は、例えば、ネットワークＩＦ３７を介して、ＰＣから印刷ジョブを受信し、印刷ジョブの画像データを受信する。あるいは、プリンタ１００は、操作パネル４０の操作により、ＵＳＢ−ＩＦ３８に挿入されたＵＳＢメモリに保存されている画像データの印刷指示を受け付ける。
【００１９】
続いて、本形態のプリンタ１００における印刷ジョブの処理手順について説明する。プリンタ１００は、受け付けた印刷ジョブの画像データを、例えば、図２に示すように、順次処理して、最終的に画像形成部１０にて使用するデータ形式であるラインデータを生成する。ラインデータは、印刷データの一例である。
【００２０】
画像データの処理を行う構成として、プリンタ１００のコントローラ３０は、図２に示すように、データ受信部３０１と、ラスタライズ部３０２と、画処理部３０３と、印刷エンジン制御部３０４と、印刷制御部３０５と、を備えている。画処理部３０３は、印刷データ生成手段の一例であり、印刷エンジン制御部３０４は、画像形成手段の一例であり、印刷制御部３０５は、メモリ制御手段の一例である。
【００２１】
プリンタ１００では、データ受信部３０１とラスタライズ部３０２と画処理部３０３と印刷エンジン制御部３０４と印刷制御部３０５とは、それぞれＣＰＵ等の制御機能を有し、並行してそれぞれの処理を実行可能である。図１のＣＰＵ３１は、各部の制御機能をまとめた概念であり、１つのハードウェアで構成されていても良いし、複数個のハードウェアの協働にて動作するものでも良い。
【００２２】
また、プリンタ１００は、各種のデータを一時的に記憶するために、図２に示すように、画像メモリ３３１と、ページメモリ３３２と、ラインメモリ３３３と、をそれぞれ必要に応じてＲＡＭ３３に構成する。ラインメモリ３３３は、バッファの一例である。図１のＲＡＭ３３は、１つのハードウェアで構成されていても良いし、複数個のハードウェアを含んでいても良い。
【００２３】
データ受信部３０１は、図２に示すように、ＰＣ２００等の外部装置から画像データを受信し、受信した画像データを画像メモリ３３１に書き込む。画像データは、例えば、ページ記述言語（ＰＤＬ）によって記述されたデータである。ＰＤＬとしては、例えば、Ｐｒｉｎｔ  Ｃｏｎｔｒｏｌ  Ｌａｎｇｕａｇｅ、ＰｏｓｔＳｃｒｉｐｔ（登録商標）、ＡｉｒＰｒｉｎｔ（登録商標）がある。
【００２４】
ラスタライズ部３０２は、図２に示すように、画像メモリ３３１から画像データを読み出し、ラスタライズ処理を行ってページデータを生成し、生成したページデータをページメモリ３３２に書き込む。ページデータは、画像の各ドットの色情報などを含むドットデータであり、１ページ単位で処理される。ラスタライズ部３０２は、画像データの種類に応じて、ＲＧＢ形式、または、ＣＭＹＫ形式のドット単位のデータであるページデータを生成する。また、ラスタライズ部３０２は、読み出しの終了した画像データを、画像メモリ３３１から破棄する。
【００２５】
画処理部３０３は、図２に示すように、ページメモリ３３２からページデータを読み出して、誤差拡散処理等の画処理を行ってラインデータを生成し、生成したラインデータをラインメモリ３３３に書き込む。ラインデータは、各吐出ノズルからのインクの吐出量などの情報を含み、画像形成部１０の印字ヘッドを制御するためのデータであり、所定の処理単位である１ライン単位で処理される。
【００２６】
印刷エンジン制御部３０４は、図２に示すように、ラインメモリ３３３からラインデータを読み出して画像形成部１０に受け渡すことで、画像形成部１０に印刷を実行させる。印刷エンジン制御部３０４は、読み出しが終了したラインデータを、ラインメモリ３３３から破棄する。なお、ラインデータは、ランダムアクセス可能なデータであり、１ラインごとに読み出しや破棄が可能である。一方、ページメモリ３３２に記憶されるページデータは、シーケンシャル構造のデータであり、その読み出しや破棄は、ページの先頭から順に行われる。
【００２７】
印刷制御部３０５は、図２に示すように、画像形成部１０の状態を監視し、ラスタライズ部３０２と画処理部３０３と印刷エンジン制御部３０４とを制御する。また、印刷制御部３０５は、画像形成部１０から、例えば、ジャムの発生等のエラー情報、印刷完了情報を含む状態情報を受け取る。
【００２８】
なお、プリンタ１００は、ページデータやラインデータの生成に際して、まず、ＲＡＭ３３に記憶領域を確保する。印刷制御部３０５は、保存しようとしているデータのデータ量に見合う空き領域がＲＡＭ３３に有るか否かを判断し、空き領域が不足している場合には、メモリ不足と判断して、ラスタライズ部３０２や画処理部３０３によるデータの生成を中断させる。
【００２９】
続いて、本形態のプリンタ１００におけるラインメモリ３３３の管理について説明する。ラインメモリ３３３は、ラインデータの記億用の領域を１ライン分のデータ量ごとに区分したバッファである。１ライン分のデータ量は、所定ラインの一例である。ラインデータは、前述したように、画処理部３０３によって１ライン分ごとにラインメモリ３３３に書き込まれ、印刷エンジン制御部３０４によって１ライン分ごとにラインメモリ３３３から読み出される。プリンタ１００は、印刷ジョブを受け付けた際に、ＲＡＭ３３にラインメモリ３３３が構成されていない場合には、必要な記憶領域を確保し、ラインメモリ３３３を構成する。
【００３０】
具体的に、プリンタ１００は、受け付けた印刷ジョブの印刷設定または印刷ページのページ設定に基づいて、印刷媒体であるシートのサイズを取得する。そして、プリンタ１００は、シートのサイズから、印字ヘッドをスキャンする方向（主走査方向）についての画像の長さを取得し、取得した画像の長さに基づいて、ラインデータの１ライン分のデータ量を取得する。そして、プリンタ１００は、１ライン分のデータ量ごとに区分した記憶領域であるラインメモリ３３３を、ＲＡＭ３３に構成する。以下では、ラインデータの１ライン分のデータ量を、ライン幅とする。
【００３１】
プリンタ１００は、ラインメモリ３３３に記憶されるラインデータを管理するために、図３に示すように、ラインメモリ３３３のラインごとに、インデックス番号とアドレス情報とを関連付けて記憶するインデックス情報３３４を利用する。アドレス情報は、例えば、各ラインデータの記憶されるアドレスを示す情報であり、インデックス番号は、例えば、各アドレス情報に付与された連番の符号である。本形態のプリンタ１００で用いるインデックス情報３３４は、図３に模式的に示すように、リングバッファ形式の情報であり、順に参照することで、終わりなく次々と参照できる。
【００３２】
さらに、プリンタ１００は、ページ単位のラインデータを管理するために、図４に示すように、各ページの先端のラインのインデックス番号と、そのページの終端のラインのインデックス番号と、そのページのライン幅情報と、を組み合わせて記憶するページ管理情報３３５を利用する。ライン幅情報は、ライン幅に関する情報である。なお、プリンタ１００は、インデックス情報３３４やページ管理情報３３５を記憶するための領域を、ＲＡＭ３３に予め確保しており、その領域に、インデックス情報３３４やページ管理情報３３５は記憶される。
【００３３】
ライン幅情報は、ライン幅そのものであっても良いし、ライン幅と関係づけられる情報であっても良い。ライン幅と関係づけられる情報としては、例えば、印字ヘッドをスキャンする方向の画像の長さ、同方向のシートの幅、シートの種別が挙げられる。シートの種別とは、例えば、定型サイズのシートであれば、Ａ４、Ａ３等のサイズを示す名称が該当する。また、ライン幅情報は、印刷媒体のシートの種別をサイズに基づいてグループ分けしたグループを示す情報であっても良い。例えば、Ａ３とＡ４であっても、印刷向きを変えてシートをセットすることで同じグループになり得る。この場合、ライン幅情報が同じグループであるシートは、同じライン幅であると判断できる。
【００３４】
印刷用の画像データに基づくラインデータの生成に際して、印刷制御部３０５は、ＲＡＭ３３にラインメモリ３３３を構成して、ページの先端のラインのインデックス番号を決定し、ページ管理情報３３５のページの先端の情報として、そのインデックス番号を書き込む。画処理部３０３は、ラインデータを生成し、ページ管理情報３３５のページの先端の情報の位置からインデックス情報３３４を参照して、ラインデータをラインメモリ３３３の所定の位置に書き込む。つまり、画処理部３０３は、１ラインごとのラインデータを、ページの先端のインデックス番号から、各インデックス番号に対応するアドレス情報によって示されるアドレスに順に書き込む。そして、画像データにページの終端を示す情報が現れたら、印刷制御部３０５は、ページ管理情報３３５に、ページの終端のラインのインデックス番号を書き込む。
【００３５】
印刷エンジン制御部３０４は、インデックス情報３３４を参照して、必要なラインのラインデータを読み出し、画像形成部１０に受け渡すことで印刷を実行させる。印刷エンジン制御部３０４は、読み出しの終わったラインデータをラインメモリ３３３から破棄する。さらに、印刷エンジン制御部３０４は、ページの終端まで読み出し終わったら、ページ管理情報３３５のうち、読み出しの終わったページの情報を破棄する。
【００３６】
次に、本形態のプリンタ１００における、印刷ジョブを受け付けた際のラインデータの生成手順について、図５のシーケンス図を参照して説明する。前述したように、プリンタ１００は、印刷ジョブを受け付けると、受信した画像データをラスタライズ部３０２にてラスタライズし、ページデータを生成してページメモリ３３２に書き込む。
【００３７】
画処理部３０３は、ページメモリ３３２からページデータを読み出して、ラインデータを生成する。画処理部３０３は、ラインデータの生成に際して、インデックス情報３３４が生成されていない場合には、まず、印刷制御部３０５に、ラインメモリ３３３の構成と、インデックス情報３３４の生成とを指示する（Ｄ１）。Ｄ１の指示は、構成指示の一例である。Ｄ１の指示には、ページデータの情報として、ライン幅情報、例えば、シートのサイズの情報が含まれる。
【００３８】
印刷制御部３０５は、Ｄ１に含まれるライン幅情報に基づいてライン幅を決定し、決定したライン幅ごとに区分したラインメモリ３３３をＲＡＭ３３に構成する。さらに、印刷制御部３０５は、インデックス情報３３４を生成し、各区分の先頭アドレスに対応するアドレス情報を、連番のインデックス番号に対応させて書き込む（Ｄ２）。
【００３９】
インデックス情報３３４が生成されたら、プリンタ１００は、以下の動作を、印刷ジョブの全ページのラインデータの書き込みが終了するまで繰り返す（Ｆ１）。画処理部３０３は、まず、ページ開始指示を印刷制御部３０５に送信する（Ｄ３）。つまり、画処理部３０３は、印刷制御部３０５に、ページの先端のラインデータを書き込むアドレスに対応するインデックス番号を要求する。ページ開始指示には、開始するページのライン幅情報が含まれる。例えば、Ｄ３が先頭ページのページ開始指示であれば、先頭ページのライン幅情報が含まれる。Ｄ３の指示は、書込み開始指示の一例である。
【００４０】
印刷制御部３０５は、受信したページ開始指示に基づいて、今回のページのライン幅が、書き込みの終了している前ページのライン幅と、同じであるか否かに応じて、異なる動作を行う（Ｆ２）。今回のページのライン幅が前ページのライン幅と同じである場合には、印刷制御部３０５は、今回のページの先端位置を応答する（Ｄ４）。今回のページの先端位置は、例えば、前ページの終端位置のインデックス番号の次のインデックス番号である。
【００４１】
つまり、プリンタ１００は、これから形成する今回のページのライン幅が、前ページのライン幅と同じであれば、ラインメモリ３３３の再構成やインデックス情報３３４の再生成を行わない。構成済みのラインメモリ３３３をそのまま利用し、前ページの続きのインデックス番号から参照して、該当するアドレスにラインデータを書き込む。
【００４２】
一方、今回のページのライン幅が前ページのライン幅と異なる場合には、印刷制御部３０５は、さらに、印刷エンジン制御部３０４による全ての先行ページのラインデータの読み出しが、終了しているか否かに応じて異なる動作を行う（Ｆ３）。
【００４３】
全ての先行ページのラインデータの読み出しが終了している場合、印刷制御部３０５は、インデックス情報３３４を再度生成する（Ｄ５）。つまり、前ページにて使用したインデックス情報３３４を破棄し、今回のページのライン幅に基づいてラインメモリ３３３を区切り直し、各区切りの先頭のアドレスを示すアドレス情報にインデックス番号を付けたインデックス情報３３４を生成する。そして、印刷制御部３０５は、再生成したインデックス情報３３４に基づいて、今回のページの先端位置を応答する（Ｄ６）。一方、全ての先行ページのラインデータの読み出しが終了していない場合、印刷制御部３０５は、ページ開始の失敗を応答する（Ｄ７）。
【００４４】
そして、ページ開始に成功した場合（Ｆ４）、つまり、Ｄ４またはＤ６にて先端位置の応答を受け付けた場合、画処理部３０３は、１ページ分のラインデータの書き込みが終了するまで（Ｆ５）、インデックス情報３３４を参照して、ラインデータをラインメモリ３３３に書き込む（Ｄ８）。また、書き込みが開始されたことに応じて、印刷エンジン制御部３０４は、ラインメモリ３３３からラインデータの読み出しを開始する。印刷エンジン制御部３０４は、ラインデータを読み出し（Ｄ９）、読み出したラインデータを画像形成部１０に受け渡す（Ｄ１０）。画像形成部１０は、受け渡されたラインデータに基づいて、印刷を実行する。
【００４５】
画処理部３０３は、１ページ分のラインデータの書き込みが終了したら、書き込み終了を印刷制御部３０５に通知する（Ｄ１１）。また、印刷エンジン制御部３０４は、１ページの読み出しが終了したら（Ｆ６）、印刷制御部３０５に１ページの読み出しが終了した旨の通知を行う（Ｄ１２）。Ｄ１２の通知に基づいて、印刷制御部３０５は、Ｆ３にて、全ての先行ページの読み出しが終了したか否かの判断を行う。
【００４６】
なお、Ｄ７にて失敗の通知を受け付けた場合、画処理部３０３は、条件を満たさないことからＦ４に進まず、Ｆ１のループを繰り返す。すなわち、画処理部３０３は、Ｄ３のページ開始指示を繰り返す。画処理部３０３は、全ての先行ページの読み出しが終了するまで、例えば、定期的にページ開始指示をリトライする。
【００４７】
次に、本形態のプリンタ１００における印刷ジョブを受信した場合の処理の手順について、図６〜図８のフローチャートを参照して説明する。前述したように、印刷ジョブを受信すると、プリンタ１００は、ラスタライズ部３０２にてページデータを生成する。そして、プリンタ１００のＣＰＵ３１は、図６のラインデータ生成処理と、図７のインデックス生成処理と、図８の印刷エンジン制御処理とを並行して実行する。以下では、ラインデータ生成処理とインデックス生成処理と印刷エンジン制御処理とを、いずれもＣＰＵ３１が行うものとして説明する。これらの処理は、１つのＣＰＵ３１にて行われても良いし、複数のＣＰＵにて分担して行われても良い。
【００４８】
具体的には、図６のラインデータ生成処理は、ページデータの生成が開始されたことを契機に、画処理部３０３の処理としてＣＰＵ３１にて実行される。図７のインデックス生成処理は、画処理部３０３から書込開始の指示が出力されたことを契機に、印刷制御部３０５の処理としてＣＰＵ３１にて実行される。図８の印刷エンジン制御処理は、ページ管理情報が生成されたことを契機に、印刷エンジン制御部３０４の処理としてＣＰＵ３１にて実行される。なお、以下のフローチャートの各処理ステップは、基本的に、プログラムに記述された命令に従ったＣＰＵ３１の処理を示す。ＣＰＵ３１の処理には、プリンタ１００のＯＳのＡＰＩを用いたハードウェア制御も含む。
【００４９】
まず、図６のラインデータ生成処理について説明する。ラインデータ生成処理では、画処理部３０３の処理としてＣＰＵ３１は、生成されたページデータに基づいて、ページに関する情報であるページ情報を取得する（Ｓ１０１）。ページ情報は、印刷対象のシートのサイズの情報、ページの画像のサイズの情報、ライン幅に関する情報の少なくとも１つを含む。そして、ＣＰＵ３１は、取得したページ情報に基づいて、ライン幅を取得する（Ｓ１０２）。
【００５０】
ＣＰＵ３１は、ライン幅ごとに区分したラインメモリ３３３の構成と、構成したラインメモリ３３３のインデックスの生成との指示を出力する（Ｓ１０３）。Ｓ１０３は、バッファ構成指示処理の一例である。この指示により、印刷制御部３０５にてラインメモリ３３３が構成され、インデックス情報３３４が生成される。既にラインメモリ３３３が構成済みであれば、Ｓ１０３をスキップしても良い。
【００５１】
そして、ＣＰＵ３１は、印刷制御部３０５に、書込開始の指示を出力する（Ｓ１０４）。Ｓ１０４は、書込み開始指示処理の一例である。つまり、ＣＰＵ３１は、ラインメモリ３３３への、書き込み開始位置の情報を求める。ＣＰＵ３１は、Ｓ１０４の指示に書き込みを開始するページのライン幅の情報を付加して出力し、書込開始位置であるページ先端のインデックス番号を要求する。
【００５２】
そして、ＣＰＵ３１は、印刷制御部３０５から、ページ先端のインデックス番号を受け付けたか否かを判断する（Ｓ１０５）。インデックス番号を受け付けていないと判断した場合（Ｓ１０５：ＮＯ）、ＣＰＵ３１は、Ｓ１０４に戻って、書込開始の指示を出力する。ＣＰＵ３１は、インデックス番号を受け付けたと判断するまで、定期的にＳ１０４を繰り返して実行する。ＣＰＵ３１は、ページ先端のインデックス番号を受け付けるまで、ラインメモリ３３３への書き込みを行わない。
【００５３】
インデックス番号を受け付けたと判断した場合（Ｓ１０５：ＹＥＳ）、ＣＰＵ３１は、受け付けたインデックス番号を、ページ先端の情報としてページ管理情報３３５に書き込む（Ｓ１０６）。さらに、ＣＰＵ３１は、ページデータからラインデータを生成する（Ｓ１０７）。Ｓ１０７は、生成処理の一例である。そして、ＣＰＵ３１は、生成したラインデータを、インデックス情報３３４を参照してラインメモリ３３３の所定のアドレスに書き込む（Ｓ１０８）。Ｓ１０８は、書込み処理の一例である。
【００５４】
そして、ＣＰＵ３１は、ページデータのページ終端に到達したか否かを判断する（Ｓ１０９）。ページデータの終端に到達していないと判断した場合（Ｓ１０９：ＮＯ）、ＣＰＵ３１は、ラインデータの生成と書き込みとを継続する。ページデータの終端に到達したと判断した場合（Ｓ１０９：ＹＥＳ）、ＣＰＵ３１は、ページデータの終端に対応するインデックス番号を、ページ終端の情報としてページ管理情報３３５に書き込む（Ｓ１１０）。
【００５５】
そして、ＣＰＵ３１は、次のページのページデータが有るか否かを判断する（Ｓ１１１）。次のページが有ると判断した場合（Ｓ１１１：ＹＥＳ）、ＣＰＵ３１は、Ｓ１０１に戻って、次のページのページ情報を取得する。一方、次のページが無いと判断した場合（Ｓ１１１：ＮＯ）、ＣＰＵ３１は、ラインデータ生成処理を終了する。
【００５６】
次に、図７のインデックス生成処理について説明する。インデックス生成処理では、印刷制御部３０５の処理としてＣＰＵ３１は、インデックス情報３３４が有るか否かを判断する（Ｓ２０１）。インデックス情報３３４が無いと判断した場合（Ｓ２０１：ＮＯ）、ＣＰＵ３１は、受け付けた書込開始の指示に含まれるライン幅に基づいて、ラインメモリ３３３を構成する（Ｓ２０２）。Ｓ２０２は、バッファ構成処理の一例である。インデックス情報３３４が無い場合には、ラインメモリ３３３が構成されていない可能性が高いことから、ＣＰＵ３１は、今回のページのライン幅を用いて、ラインメモリ３３３を構成する。
【００５７】
ＣＰＵ３１は、構成したラインメモリ３３３に基づいて、インデックス情報３３４を生成する（Ｓ２０３）。さらに、ＣＰＵ３１は、生成したインデックス情報３３４に基づいて、構成したラインメモリ３３３のうち、例えば、インデックス情報３３４の先頭位置のインデックス番号をページ先端に決定し、決定したページ先端のインデックス番号を通知して（Ｓ２０４）、インデックス生成処理を終了する。この通知によって、ＣＰＵ３１は、画処理部３０３によるラインメモリ３３３への書き込みを許可する。なお、Ｓ２０４にて通知するページ先端のインデックス番号は、インデックス情報３３４の先頭位置に限らず、所定の空き領域を確保できる位置であればよい。
【００５８】
インデックス情報３３４が有ると判断した場合（Ｓ２０１：ＹＥＳ）、ＣＰＵ３１は、受け付けた書込開始の指示に含まれるライン幅が、インデックス情報３３４のライン幅と同じであるか否かを判断する（Ｓ２１０）。Ｓ２１０は、判断処理の一例である。
【００５９】
書込開始の指示に含まれるライン幅が、インデックス情報３３４のライン幅と同じであると判断した場合（Ｓ２１０：ＹＥＳ）、ＣＰＵ３１は、前のページのページ終端のインデックス番号の次のインデックス番号を、今回のページのページ先端のインデックス番号として通知し（Ｓ２１１）、インデックス生成処理を終了する。この通知によって、ＣＰＵ３１は、画処理部３０３によるラインメモリ３３３への書き込みを許可する。Ｓ２１１は、第１許可処理の一例である。Ｓ２１１の通知は、ラインメモリ３３３にラインデータが残っていても行われる。つまり、ＣＰＵ３１は、全ての先行ページのラインデータの読み出しが終了する前であっても、今回のページのラインデータの書き込みを許可する。
【００６０】
一方、書込開始の指示に含まれるライン幅が、インデックス情報３３４のライン幅と同じではないと判断した場合（Ｓ２１０：ＮＯ）、ＣＰＵ３１は、印刷エンジン制御部３０４から全ての先行ページのラインデータの読み出しが終了した旨の通知を受け付けたか否かを判断する（Ｓ２１２）。
【００６１】
全ての先行ページのラインデータの読出終了の通知を受け付けていないと判断した場合（Ｓ２１２：ＮＯ）、ＣＰＵ３１は、画処理部３０３によるラインメモリ３３３への書き込み禁止を通知して（Ｓ２１３）、インデックス生成処理を終了する。Ｓ２１３は、禁止処理の一例である。Ｓ２１３では、ＣＰＵ３１は、例えば、書込開始の失敗、インデックス番号の未決定を通知することで、書き込み禁止の通知としても良い。
【００６２】
一方、印刷エンジン制御部３０４から全ての先行ページのラインデータの読出終了の通知を受け付けたと判断した場合（Ｓ２１２：ＹＥＳ）、ＣＰＵ３１は、構成されているラインメモリ３３３を一旦全て解放し、受け付けた書込開始の指示に含まれるライン幅に基づいて、ラインメモリ３３３を再度構成する（Ｓ２０２）。この場合のＳ２０２は、バッファ再構成処理の一例である。
【００６３】
さらに、ＣＰＵ３１は、構成したラインメモリ３３３に基づいて、インデックス情報３３４を生成し（Ｓ２０３）、生成したインデックス情報３３４に基づいて、先頭のインデックス番号を通知して（Ｓ２０４）、インデックス生成処理を終了する。この通知によって、ＣＰＵ３１は、画処理部３０３によるラインメモリ３３３への書き込みを許可する。この場合のＳ２０４は、第２許可処理の一例である。
【００６４】
次に、図８の印刷エンジン制御処理について説明する。印刷エンジン制御処理では、印刷エンジン制御部３０４の処理としてＣＰＵ３１は、画像形成部１０に１枚のシートを給紙させる（Ｓ３０１）。そして、ＣＰＵ３１は、ラインメモリ３３３から１ライン分のラインデータを読み出し（Ｓ３０２）、読み出したラインデータを画像形成部１０に受け渡すことで、１ライン分の印刷を行わせる（Ｓ３０３）。そして、ＣＰＵ３１は、読み出しの終わったラインデータを破棄する（Ｓ３０４）。なお、Ｓ３０２からＳ３０４までの処理は、複数ラインずつまとめて行うようにしても良い。
【００６５】
そして、ＣＰＵ３１は、ページの終端までラインデータを読み出したか否かを判断する（Ｓ３０５）。ページの終端まで読み出し終わっていないと判断した場合（Ｓ３０５：ＮＯ）、ＣＰＵ３１は、Ｓ３０２に戻って、さらにラインデータの読み出し、印刷、ラインデータの破棄を繰り返す。
【００６６】
ページの終端まで読み出したと判断した場合（Ｓ３０５：ＹＥＳ）、ＣＰＵ３１は、ページ読出終了の通知を出力する（Ｓ３０６）。ＣＰＵ３１は、画像形成部１０に、印刷の終わったシートを排紙させ（Ｓ３０７）、読み出しの終わったページのページデータを破棄する（Ｓ３０８）。さらに、ＣＰＵ３１は、ページ管理情報３３５の該当ページに関する情報も破棄する。
【００６７】
そして、ＣＰＵ３１は、ページ管理情報３３５に次のページの情報が有るか否かを判断する（Ｓ３０９）。次のページが有ると判断した場合（Ｓ３０９：ＹＥＳ）、ＣＰＵ３１は、Ｓ３０１に戻り、画像形成部１０に次のページの印刷を開始させる。一方、次のページが無いと判断した場合（Ｓ３０９：ＮＯ）、ＣＰＵ３１は、印刷エンジン制御処理を終了する。
【００６８】
以上、詳細に説明したように、本形態のプリンタ１００は、ライン幅ごとに区分したラインメモリ３３３を構成し、ライン幅ごとにラインデータの書き込み及び読み出しを行う。そして、ページの書込開始の指示に基づいて、プリンタ１００は、今回のページのライン幅が、構成済みのラインメモリ３３３のライン幅と同じであれば、ラインメモリ３３３を再構成することなく、そのまま使用する。この場合、プリンタ１００は、印刷エンジン制御部３０４による全ての先行ページのラインデータの読み出しが終了していなくても書込みを許可し、構成済みのラインメモリ３３３をそのまま用いて空き領域に今回のページのラインデータを記憶する。一方、今回のページのライン幅が、構成済みのラインメモリ３３３のライン幅と異なれば、印刷エンジン制御部３０４による全ての先行ページのラインデータの読み出し終了を待って、構成済みのラインメモリ３３３を破棄し、新たなライン幅のラインメモリ３３３を構成する。つまり、今回のページのライン幅とラインメモリ３３３のライン幅とが同じであれば、構成済みのラインメモリ３３３を継続して利用し、ラインデータの読み出しの終了を待つ必要もないため、処理の遅延が生じ難い。また、異なるライン幅ごとのバッファを予め構成する必要はないため、省メモリで実現できる。
【００６９】
なお、本実施の形態は単なる例示にすぎず、本発明を何ら限定するものではない。したがって本発明は当然に、その要旨を逸脱しない範囲内で種々の改良、変形が可能である。例えば、プリンタに限らず、複合機、複写機、ＦＡＸ装置等、画像形成機能を備えるものであれば適用可能である。
【００７０】
また、本形態では、１ラインごとにラインメモリ３３３を区切るとしたが、ラインメモリ３３３の区切りは、１ラインに限らず、２ライン以上であっても良い。ただし、１ラインごとの方が、画像形成部１０でのデータの使用に適していることから好ましい。
【００７１】
また、本形態では、書込開始の指示に対して、インデックス生成処理のＳ２１３では書き込み禁止などを通知するとしたが、通知しなくても良い。ラインデータ生成処理のＳ１０５では、例えば、所定時間が経過してもインデックス番号を受け付けなかった場合に、書き込み禁止状態であると判断しても良い。また、書き込み禁止と判断した場合に、定期的に書込開始の指示を出力するとしたが、定期的でなくても良い。例えば、処理負荷の小さいタイミングで行うとしても良い。
【００７２】
また、例えば、印刷媒体のシートの種別をグループ分けしてライン幅情報として用いる場合、僅かなライン幅の違いであれば、同じグループとしても良い。例えば、レターサイズとＡ４とを同じグループとしても良い。
【００７３】
また、例えば、電源投入直後などの処理の開始時は、ページ情報を用いず、デフォルトのページサイズに基づいて、印刷制御部３０５にてラインメモリ３３３を構成するとしても良い。
【００７４】
また、実施の形態に開示されている処理は、単一のＣＰＵ、複数のＣＰＵ、ＡＳＩＣなどのハードウェア、またはそれらの組み合わせで実行されてもよい。また、実施の形態に開示されている処理は、その処理を実行するためのプログラムを記録した記録媒体、または方法等の種々の態様で実現することができる。
【符号の説明】
【００７５】
３１  ＣＰＵ
３３  ＲＡＭ
１００  プリンタ
３０３  画処理部
３０４  印刷エンジン制御部
３０５  印刷制御部
３３３  ラインメモリ
３３４  インデックス情報
【図１】
2019130772.tif 000003
【図２】
2019130772.tif 000004
【図３】
2019130772.tif 000005
【図４】
2019130772.tif 000006
【図５】
2019130772.tif 000007
【図６】
2019130772.tif 000008
【図７】
2019130772.tif 000009
【図８】
2019130772.tif 000010