(57)【要約】【課題】複数のページを含む画像データの印刷を可能なプリンタを提供する。【解決手段】解析モジュール５３は、圧縮画像データを解凍することなく、ページの区切りを示す単位データを特定する解析処理（Ｓ１５）を実行する。解析モジュール５３は、解析処理で特定した単位データを含むページ情報をジョブ管理モジュール５４に通知する（Ｓ１７）。ジョブ管理モジュール５４は、通知されたページ情報を用いて、圧縮画像データをページごとの部分圧縮データに分割する。ジョブ管理モジュール５４は、部分圧縮画像データを順に解凍及び変換し、ページごとの部分印刷データを生成する（Ｓ１９）。ジョブ管理モジュール５４は、生成した部分印刷データを、印刷エンジン１５に対して、順に出力する（Ｓ２０）。【選択図】図２
2020131618.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、コントローラと、を備えており、
前記コントローラは、
複数ページ分の画像データが圧縮されたデータである圧縮画像データの入力を受け付ける受付処理と、
前記圧縮画像データを前記メモリに記憶させる第１記憶処理と、
前記メモリに記憶された前記圧縮画像データを解析することで、前記圧縮画像データのどの部分が前記複数ページ内の各ページをそれぞれ示す部分圧縮データであるかを特定する第１特定処理と、
前記複数ページ内の各ページをそれぞれ示す複数の前記部分圧縮データを前記メモリに記憶させる、或いは複数の当該部分圧縮データをそれぞれ示す情報を前記メモリに記憶させる第２記憶処理と、
前記メモリに記憶された複数の前記部分圧縮データのうち、一の前記部分圧縮データを解凍し、解凍によって得られた１ページ分のデータである解凍ページデータに基づいて、１ページ分の印刷データを生成する第１生成処理と、
前記印刷データを出力する第１出力処理と、を実行し、
前記コントローラは、前記第１生成処理及び前記第１出力処理を前記圧縮画像データに含まれるページ数分だけ繰り返して実行し、
前記第１出力処理によって出力された前記印刷データに基づいて印刷を実行するプリンタ。
【請求項２】
前記コントローラは、前記第１特定処理において、前記圧縮画像データが示す画素数をカウントして得られたカウント値が、１ページ分に相当する画素数である第１閾値に到達したことに応じてページを特定する処理を、繰り返し実行し、前記圧縮画像データに含まれる複数のページを特定する請求項１に記載のプリンタ。
【請求項３】
前記コントローラは、
前記圧縮画像データに含まれるドキュメント情報を取得する取得処理と、
前記ドキュメント情報に基づいて、前記第１閾値を決定する閾値決定処理と、をさらに実行する請求項２に記載のプリンタ。
【請求項４】
前記コントローラは、
前記第１特定処理で１ページ分の前記部分圧縮データを特定できたことに応じて、前記第２記憶処理、前記第１生成処理、及び前記第１出力処理を実行し、
前記第１特定処理で１ページ分の前記部分圧縮データを特定できなかったことに応じて、
前記圧縮画像データを解凍しつつ縮小し、１ページ分の縮小された画像データである縮小ページデータを取得する縮小ページデータ取得処理と、
前記縮小ページデータに基づいて、印刷データを生成する第２生成処理と、
前記第２生成処理で生成した前記印刷データを出力する第２出力処理と、を実行し、
前記コントローラは、前記圧縮画像データに含まれるページ数分だけ前記第２生成処理及び前記第２出力処理を繰り返して実行し、
前記第１出力処理或いは前記第２出力処理で出力された前記印刷データに基づいて、印刷を実行する請求項１から３のいずれかに記載のプリンタ。
【請求項５】
前記コントローラは、
前記圧縮画像データのデータ量が、前記第１記憶処理、前記第１特定処理、前記第２記憶処理、前記第１生成処理、及び前記第１出力処理の実行条件として前記メモリに記憶された第２閾値を超えるか否かを判断するデータ量判断処理をさらに実行し、
前記データ量が前記第２閾値を超えないと判断したことに応じて、前記第１記憶処理、前記第１特定処理、前記第２記憶処理、前記第１生成処理、及び前記第１出力処理を実行し、
前記データ量が前記第２閾値を超えると判断したことに応じて、前記圧縮画像データを解凍しつつ縮小し、１ページ分の縮小された画像データである縮小ページデータを取得する縮小ページデータ取得処理と、
前記縮小ページデータに基づいて、前記印刷データを生成する第２生成処理と、
前記第２生成処理で生成した前記印刷データを出力する第２出力処理と、を実行し、
前記コントローラは、前記圧縮画像データに含まれるページ数分だけ前記第２生成処理及び前記第２出力処理を繰り返して実行し、
前記第１出力処理或いは前記第２出力処理で出力された前記印刷データに基づいて、印刷を実行する請求項１から４のいずれかに記載のプリンタ。
【請求項６】
ディスプレイ及びユーザインタフェースをさらに備えており、
前記コントローラは、
前記圧縮画像データが、出力指示の入力を必要とする蓄積印刷の圧縮画像データであると判断したことに応じて、前記第１生成処理で生成した前記印刷データを、前記出力指示を待機するために前記メモリに記憶させる待機処理と、
前記ユーザインタフェースを通じて前記出力指示の入力を受け付けたことに応じて、前記出力指示を待機するために前記メモリに記憶された前記印刷データを出力する前記第１出力処理と、を実行する請求項１から５のいずれかに記載のプリンタ。
【請求項７】
前記コントローラは、
前記第１出力処理で出力した前記印刷データに対する印刷が終了したか否かを判断する終了判断処理と、
印刷再開を可能にする再開可能入力を受け付ける再開可能入力受付処理と（Ｓ７４）、をさらに実行し、
前記第１出力処理で出力した一の前記印刷データに対する印刷が終了していないと前記終了判断処理で判断したことに応じて、当該一の印刷データを前記メモリにおいて維持し、前記再開可能入力を受け付けたことに応じて、前記第１出力処理を再度実行する（Ｓ７５）請求項１から６のいずれかに記載のプリンタ。
【請求項８】
前記コントローラは、
前記部分圧縮データが示す値に基づいて、前記部分圧縮データに対して前記第１生成処理を実行可能か否かを判断する実行判断処理をさらに実行し、
前記コントローラは、
前記部分圧縮データに対して前記第１生成処理を実行可能と判断したことに応じて、当該第１生成処理及び前記第１出力処理を実行し、
前記部分圧縮データに対して前記第１生成処理を実行不可能と判断したことに応じて、
前記部分圧縮データが示す１ページの画像を分割した複数の部分画像を示す複数の分割部分圧縮データを特定する第２特定処理と、
前記分割部分圧縮データ或いは当該分割部分圧縮データを示す情報を前記メモリに記憶させる第３記憶処理と、
前記分割部分圧縮データを解凍し、解凍によって得られた解凍部分画像データに基づいて、前記部分画像を示す前記印刷データを生成する部分印刷データ生成処理と、
前記部分画像を示す前記印刷データを出力する部分出力処理と、を実行し、
前記コントローラは、部分画像の数に応じた回数だけ前記部分印刷データ生成処理と、前記部分出力処理とを繰り返して実行する請求項１から７のいずれかに記載のプリンタ。
【請求項９】
前記コントローラは、
コンピュータと、
前記コンピュータによって実行されるアプリケーション、受付モジュール、解析モジュール、及びジョブ管理モジュールと、を備え、
前記受付モジュールは、
前記アプリケーションからの指示を受け付けて、前記圧縮画像データを受け付ける前記受付処理と、
受け付けた当該圧縮画像データを、前記アプリケーションが指示する前記メモリの記憶領域に記憶させる前記第１記憶処理と、を前記コンピュータに実行させ、
前記解析モジュールは、
前記アプリケーションからの指示を受け付けて、当該アプリケーションが指示する前記メモリの記憶領域に記憶された前記圧縮画像データを読み込んで解析することで、前記部分圧縮データを特定する前記第１特定処理を前記コンピュータに実行させ、
前記解析モジュール或いは前記ジョブ管理モジュールは、
前記アプリケーションからの指示を受け付けて、前記圧縮画像データを複数の前記部分圧縮データに分割し、当該部分圧縮データを、前記アプリケーションが指示する前記メモリの記憶領域に記憶させる前記第２記憶処理を前記コンピュータに実行させ、
前記ジョブ管理モジュールは、
前記アプリケーションからの指示を受け付けて、前記メモリから前記部分圧縮データを読み出し、読み出した当該部分圧縮データを解凍して１ページ分の印刷データを生成する前記第１生成処理と前記第１出力処理とを、前記圧縮画像データに含まれるページ数分だけ繰り返して前記コンピュータに実行させる請求項１から８のいずれかに記載のプリンタ。
【請求項１０】
コントローラ及びメモリを備えるプリンタの当該コントローラに実装されるモジュールであって、
前記コントローラは、
複数ページ分の画像データが圧縮されたデータである圧縮画像データの入力を受け付ける受付処理と、
前記圧縮画像データを前記メモリに記憶させる第１記憶処理と、
前記メモリに記憶された前記圧縮画像データを解析することで、前記圧縮画像データのどの部分が前記複数ページ内の各ページをそれぞれ示す部分圧縮データであるかを特定する特定処理と、
前記複数ページ内の各ページをそれぞれ示す複数の前記部分圧縮データを前記メモリに記憶させる、或いは複数の当該部分圧縮データをそれぞれ示す情報を前記メモリに記憶させる第２記憶処理と、
前記メモリに記憶された複数の前記部分圧縮データのうち、一の前記部分圧縮データを解凍し、解凍によって得られた１ページ分のデータである解凍ページデータに基づいて、１ページ分の印刷データを生成する生成処理と、
前記印刷データを出力する出力処理と、を実行し、
前記コントローラは、前記生成処理及び前記出力処理を前記圧縮画像データに含まれるページ数分だけ繰り返して実行し、
前記特定処理を実行するモジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、圧縮された画像データを解凍して印刷を行うプリンタに関する。
【背景技術】
【０００２】
パーソナルコンピュータなどの端末装置にインストールされたプリンタドライバから、ＰＤＬ（Page Description Languageの略）などで記述された印刷データを受信し、受信した印刷データをシートに印刷するプリンタがある（例えば、特許文献１参照）。
【０００３】
パーソナルコンピュータなどの端末装置にインストールされたプリンタドライバは、端末装置のメモリのＲＡＭを用いて、印刷が指示された画像データを、プリンタが印刷を実行可能な形式の印刷データに変換して出力する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−１３４７１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近年は、プリンタドライバを介さずに、端末装置から画像データを受信して印刷するプリンタが望まれつつある。すなわち、端末装置から画像データを受信し、受信した画像データを印刷データに変換して印刷を行えるプリンタが望まれつつある。
【０００６】
しかしながら、データの変換に用いられるＲＡＭは高価であるため、プリンタに実装されるメモリのＲＡＭの容量は、パーソナルコンピュータなどの端末装置のメモリのＲＡＭの容量に比べて小さいことが一般的である。ＲＡＭの容量が小さいと、画像データのデータ量が大きい場合に、印刷データに変換することができなくなる。画像データが複数のページを含む場合に、画像データのデータ量が大きくなる。
【０００７】
本発明は、前記の事情に鑑みてなされたものであり、その目的は、複数のページを含む画像データの印刷を可能なプリンタを提供することである。
【課題を解決するための手段】
【０００８】
本明細書では様々な開示を行う。開示例のプリンタは、メモリと、コントローラと、を備える。前記コントローラは、複数ページ分の画像データが圧縮されたデータである圧縮画像データの入力を受け付ける受付処理と、前記圧縮画像データを前記メモリに記憶させる第１記憶処理と、前記メモリに記憶された前記圧縮画像データを解析することで、前記圧縮画像データのどの部分が前記複数ページ内の各ページをそれぞれ示す部分圧縮データであるかを特定する第１特定処理と、前記複数ページ内の各ページをそれぞれ示す複数の前記部分圧縮データを前記メモリに記憶させる、或いは複数の当該部分圧縮データをそれぞれ示す情報を前記メモリに記憶させる第２記憶処理と、前記メモリに記憶された複数の前記部分圧縮データのうち、一の前記部分圧縮データを解凍し、解凍によって得られた１ページ分のデータである解凍ページデータに基づいて、１ページ分の印刷データを生成する第１生成処理と、前記印刷データを出力する第１出力処理と、を実行する。前記コントローラは、前記第１生成処理及び前記第１出力処理を前記圧縮画像データに含まれるページ数分だけ繰り返して実行し、前記第１出力処理によって出力された前記印刷データに基づいて印刷を実行する。
【０００９】
コントローラは、一の部分圧縮データを解凍し、解凍によって得られた解凍ページデータに基づいて、１ページ分の印刷データを生成し、生成した１ページ分の印刷データを出力する。そして、コントローラは、１ページ分の印刷データの生成と出力とを繰り返す。したがって、解凍された複数ページの画像データ全体を処理することができるだけの容量を有さないメモリを備えたプリンタであっても、複数ページを含む圧縮画像データの印刷を行うことができる。
【図面の簡単な説明】
【００１０】
【図１】図１（Ａ）は、プリンタ１０の構成を示す図であり、図１（Ｂ）は、制御プログラム２７の構成を示す図である。
【図２】図２は、制御プログラム２７が印刷データを生成して出力するまでの処理を説明する図である。
【図３】図３は、解析処理のフローチャートである。
【図４】図４は、ジョブ管理モジュール５４が実行する処理を説明する図である。
【図５】図５は、部分圧縮データを説明する説明図である。
【図６】図６（Ａ）は、画像における画素を示す図であり、図６（Ｂ）は、リプリント処理のフローチャートである。
【図７】図７は、変形例６における解析処理のフローチャートである。
【図８】図８（Ａ）は、１ページの画像の分割を説明する説明図であり、図８（Ｂ）は、第１単位データ及び第２単位データの生成を説明する説明図である。
【発明を実施するための形態】
【００１１】
以下、適宜図面を参照して本発明の実施形態について説明する。なお、以下に説明される実施形態は開示例にすぎず、本発明の要旨を変更しない範囲で適宜変更できることは言うまでもない。例えば、後述する各処理の実行順序は、本発明の要旨を変更しない範囲で、適宜変更することができる。
【００１２】
本実施形態では、図１に示されるプリンタ１０を説明する。プリンタ１０は、パーソナルコンピュータなどの情報処理装置に実装されたプリンタドライバが生成した印刷データを受け付けて印刷を実行可能なだけでなく、圧縮された画像データである圧縮画像データを受け付けて印刷を実行可能なプリンタである。すなわち、プリンタ１０は、プリンタドライバが実装された情報処理装置だけでなく、プリンタドライバが実装されていない情報処理装置からも、印刷の実行指示を受け付けることができる。
【００１３】
プリンタ１０は、インク滴をシートに吐出してシートに印刷を行う、いわゆるインクジェットプリンタであってもよいし、ドラムに付着させたトナーをシートに押圧して印刷を行う、いわゆるレーザプリンタであってもよいし、フィルムインクを用いてシートに印刷を行う、いわゆるサーマルプリンタであってもよい。すなわち、プリンタ１０がシートに対して印刷を行う方式は、どのような方式であってもよい。以下では、プリンタ１０が、いわゆるインクジェットプリンタである例を説明する。
【００１４】
プリンタ１０は、コントローラ１１と、通信Ｉ／Ｆ１２と、ディスプレイ１３と、操作スイッチ１４と、印刷エンジン１５と、を備える。「Ｉ／Ｆ」は、インタフェースを意味する。
【００１５】
通信Ｉ／Ｆ１２は、不図示の通信回線と接続されている。通信回線は、情報処理装置を接続されている。すなわち、通信Ｉ／Ｆ１２は、通信回線を通じて情報処理装置と接続されている。通信回線は、ＵＳＢケーブルや、有線ＬＡＮや、無線ＬＡＮや、ＷＡＮや、インターネットなどである。すなわち、通信回線は、情報処理装置からプリンタ１０に圧縮画像データを送信可能であれば、どのような種類の通信回線であってもよい。なお、ＵＳＢメモリなどの可搬記憶媒体をプリンタ１０に装着して圧縮画像データをプリンタ１０に入力可能であれば、プリンタ１０は、通信回線に接続されていなくてもよい。
【００１６】
ディスプレイ１３は、文字や図形などを表示する表示パネルと、表示パネルに重畳された透明な膜状のタッチセンサと、を有する。すなわち、ディスプレイ１３は、いわゆるタッチパネルである。なお、ディスプレイ１３は、表示パネルのみを有していてもよい。
【００１７】
操作スイッチ１４は、ユーザの操作入力を受け付けるスイッチである。なお、プリンタ１０は、操作スイッチ１４と、ディスプレイ１３のタッチセンサとの一方のみを有していてもよい。操作スイッチ１４及びディスプレイ１３のタッチセンサは、ユーザインタフェースの一例である。
【００１８】
印刷エンジン１５は、給紙トレイと、ヘッド３１と、給送ローラ３２と、搬送ローラ３３と、排紙ローラ３４と、排紙トレイと、駆動回路３５と、駆動モータ３６と、を有する。駆動モータ３６は、給送ローラ３２、搬送ローラ３３、及び排紙ローラ３４を回転駆動させる。給紙トレイに載置されたシートは、回転駆動された給送ローラ３２によって給紙トレイから給送され、次いで、回転駆動された搬送ローラ３３によって搬送される。シートは、搬送ローラ３３によって搬送されつつ、ヘッド３１からインク滴を吐出され、画像を印刷される。すなわち、印刷エンジン１５は、シートを搬送し、搬送するシートに印刷を行い、印刷を行ったシートを排紙トレイに排出する。
【００１９】
ヘッド３１は、インク滴を吐出する駆動素子３７を有する。駆動素子３７は、例えば、圧電素子やヒータである。圧電素子は、直流電圧を印加されることによって変形し、変形することによってインク滴を吐出する。ヒータは、直流電圧を印加されることによってインクを加熱して突沸させ、インク滴を吐出させる。
【００２０】
駆動回路３５は、駆動素子３７を駆動させる回路である。駆動回路３５は、入力された印刷データに応じたタイミング及び電圧値で駆動素子３７に直流電圧を印加する。印刷データは、コントローラ１１によって、駆動回路３５に入力される。
【００２１】
コントローラ１１は、中央演算処理装置であるＣＰＵ２１と、プログラムや情報やデータを記憶するメモリ２２と、通信バス２３と、を備える。ＣＰＵ２１は、コンピュータの一例である。
【００２２】
コントローラ１１は、例えば、パターン回路基板と、パターン回路基板に実装されたマイクロコンピュータや種々のＩＣやコンデンサやダイオードなどの種々の電子部品によって実現される。
【００２３】
ＣＰＵ２１及びメモリ２２は、通信バス２３と接続されている。ＣＰＵ２１は、メモリ２２に記憶された後述のＯＳ２６及び制御プログラム２７を実行する。ＣＰＵ２１によって実行されるＯＳ２６や制御プログラム２７は、データや情報をメモリ２２から読み出し、或いはメモリ２２に書き込む。詳しくは後述される。
【００２４】
また、通信バス２３は、上述の通信Ｉ／Ｆ１２、ディスプレイ１３、操作スイッチ１４、印刷エンジン１５の駆動モータ３６、及び駆動回路３５と接続されている。すなわち、後述のＯＳ２６及び制御プログラム２７を実行するＣＰＵ２１は、通信Ｉ／Ｆ１２を通じて情報やデータを情報処理装置から受信可能であり、ディスプレイ１３に文字や画像を表示可能であり、ディスプレイ１３のタッチセンサや操作スイッチ１４を通じてユーザの指示を受付可能であり、印刷エンジン１５の駆動モータ３６や駆動回路３５に情報やデータを入力可能である。
【００２５】
メモリ２２は、ＲＯＭ２４及びＲＡＭ２５を有している。ただし、メモリ２２は、ＲＯＭ２４及びＲＡＭ２５の他、ＥＥＰＲＯＭ、ＨＤＤ、ＵＳＢメモリ等の可搬記憶媒体、ＣＰＵ２１が備えるバッファ等を有していてもよい。
【００２６】
メモリ２２は、コンピュータが読み取り可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体である。ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体には、上記の例の他に、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等の記録媒体も含まれる。また、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体は、ｔａｎｇｉｂｌｅな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙなコンピュータが読み取り可能なストレージ媒体には含まれない。
【００２７】
ＲＯＭ２４は、オペレーティングシステムであるＯＳ２６及び制御プログラム２７を記憶している。
【００２８】
また、ＲＯＭ２４は、プリンタ１０の仕様を示すモデル情報２８を記憶する。モデル情報２８は、例えば、プリンタ１０のモデル名や、プリンタ１０が印刷を実行可能なシートのサイズを示す情報や、カラー印刷を実行可能であることを示す情報や、両面印刷を実行可能であることを示す情報や、搬送するシートの向きを示す情報などの情報を含む。搬送するシートの向きを示す情報とは、例えば、Ａ４サイズのシートを搬送する場合、シートの長手方向が搬送向きに沿う縦給紙を行うことを示す情報や、シートの短手方向が搬送向きに沿う横給紙を行うことを示す情報などである。モデル情報２８は、例えば、ＭＩＢ（Management Information Baseの略）情報としてＲＯＭ２４に記憶される。なお、モデル情報２８は、ＥＥＰＲＯＭに記憶されていてもよい。
【００２９】
ＲＡＭ２５は、ＯＳ２６や制御プログラム２７の実行に用いられ、また、圧縮画像データから印刷データを生成するための処理の実行に用いられる。詳しくは後述する。
【００３０】
制御プログラム２７は、圧縮された画像データである圧縮画像データを受け付け、受け付けた圧縮画像データを印刷データに変換し、印刷データを駆動回路３５及び駆動モータ３６に出力して印刷エンジン１５に印刷を実行させるプログラムである。
【００３１】
制御プログラム２７は、図１（Ｂ）に示されるように、複数のモジュールと、複数のモジュールの上位に位置するプロトコル階層であるアプリケーション５１と、を有する。複数のモジュールは、受付モジュール５２、解析モジュール５３、ジョブ管理モジュール５４である。ジョブ管理モジュール５４の下位には、分割モジュール５５、解凍モジュール５６、変換モジュール５７、及び印刷制御モジュール５８が設けられている。以下では、受付モジュール５２、解析モジュール５３、ジョブ管理モジュール５４、分割モジュール５５、解凍モジュール５６、変換モジュール５７、及び印刷制御モジュール５８を、受付モジュール５２等と記載して説明することがある。また、分割モジュール５５、解凍モジュール５６、変換モジュール５７、及び印刷制御モジュール５８を分割モジュール５５等と記載して説明することがある。
【００３２】
アプリケーション５１及び受付モジュール５２等は、疑似的に並行して実行される。すなわち、アプリケーション５１及び受付モジュール５２等は、いわゆるマルチタスク処理によって実行される。
【００３３】
受付モジュール５２は、画像データを圧縮したデータである圧縮画像データ（図５）を受け付ける受付処理を実行するモジュールである。受付モジュール５２は、通信Ｉ／Ｆ１２を通じて情報処理装置から、圧縮画像データを受け付け、或いは、プリンタ１０に装着されたＵＳＢメモリ等から圧縮画像データを受け付ける。受付モジュール５２は、受け付けた圧縮画像データを、ＲＡＭ２５の、アプリケーション５１が指定する所定の記憶領域に記憶させる。
【００３４】
解析モジュール５３は、受付モジュール５２がメモリ２２に記憶させた圧縮画像データを解析してジョブ登録及びページジョブ登録を行うモジュールである。解析モジュール５３は、受付モジュール５２が圧縮画像データを受け付けたことに応じて、印刷ジョブを後述のジョブ管理モジュール５４に登録する。そして、解析モジュール５３は、圧縮画像データを解凍することなく、圧縮画像データに含まれるページを見つけ出す解析処理（図３）を実行する。解析モジュール５３は、ページを発見したことに応じて、ジョブ管理モジュールにページジョブを登録する。詳しくは後述する。解析モジュール５３は、モジュールの一例である。
【００３５】
ジョブ管理モジュール５４は、分割モジュール５５等に後述の処理を実行させて、印刷エンジン１５に対して印刷データを出力する処理を実行する。すなわち、ジョブ管理モジュール５４は、登録された印刷ジョブ及びページジョブを管理及び処理するモジュールである。
【００３６】
分割モジュール５５は、圧縮画像データに基づいて、圧縮画像データを解凍することなく、１ページ分の画像データを圧縮した部分圧縮データ（図５）を生成するモジュールである。詳しく説明すると、複数のページを含む圧縮画像データを解凍して得られるデータは、ページ数や、当該データが示す画像の解像度によっては、メモリ２２が有するＲＡＭ２５の容量では処理できないことが考えられる。分割モジュール５５は、圧縮画像データの全てを後述の解凍モジュール５６が解凍しないように、圧縮画像データから１ページ分ずつの部分圧縮データを生成する。
【００３７】
解凍モジュール５６は、分割モジュール５５が生成した部分圧縮データを解凍して解凍ページデータを生成するモジュールである。
【００３８】
変換モジュール５７は、解凍モジュール５６が生成した解凍ページデータを印刷データに変換するモジュールである。変換は、例えば、回転、色変換、誤差拡散、５値化などである。
【００３９】
回転は、解凍ページデータが示す画像を９０°や１８０°や２７０°（−９０°でもよい）などの回転角度で回転させて画像の向きを変える変換を意味する。
【００４０】
色変換は、解凍ページデータが有するＲＧＢの色データを、印刷エンジン１５が印刷を実行可能なＢＭＣＹなどの色データに変換することを意味する。ＢＭＣＹとは、ブラック、マゼンタ、シアン、イエローを意味する。
【００４１】
誤差拡散は、２値化手法の１つであって、画質を高めるために実行される変換である。
【００４２】
５値化は、解凍ページデータから、駆動素子３７に印加する直流電圧の電圧値に応じた駆動信号を生成する変換を意味する。電圧値は、例えば、「小」「中」「大」「特大」「ゼロ」である。
【００４３】
印刷制御モジュール５８は、印刷データを駆動回路３５及び駆動モータ３６に対して出力して、印刷エンジン１５に印刷を実行させるモジュールである。
【００４４】
以下、図２から図６を参照して、制御プログラム２７が、圧縮画像データから印刷データを生成して出力し、印刷エンジン１５に印刷を実行させる処理について説明する。なお、受付モジュール５２、解析モジュール５３、及びジョブ管理モジュール５４は、アプリケーション５１からの指示を受けて以下に説明する各処理を実行する。
【００４５】
本明細書では、基本的に、制御プログラム２７に記述された命令に従ったＣＰＵ２１の処理を説明する。すなわち、以下の説明における「判断」、「抽出」、「選択」、「算出」、「決定」、「特定」、「取得」、「受付」、「制御」、「設定」等の処理は、ＣＰＵ２１の処理を表している。ＣＰＵ２１による処理は、ＯＳ２６などのコントローラを介したハードウェア制御も含む。なお、「取得」は要求を必須とはしない概念で用いる。すなわち、ＣＰＵ２１が要求することなくデータを受信するという処理も、「ＣＰＵ２１がデータを取得する」という概念に含まれる。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。「命令」「応答」「要求」等の処理は、「命令」「応答」「要求」等を示す情報を通信することにより行われる。また、「命令」「応答」「要求」等の文言を、「命令」「応答」「要求」等を示す情報そのものという意味で記載してもよい。
【００４６】
また、制御プログラム２７に記述された命令に従ったＣＰＵ２１の処理を、省略した文言で記載することがある。例えば、「ＣＰＵ２１が行う」「コントローラ１１が行う」「制御プログラム２７が行う」のように記載することがある。
【００４７】
また、ＣＰＵ２１による、情報Ａは事柄Ｂであることを示しているか否かを判断する処理を、「情報Ａから、事柄Ｂであるか否かを判断する」のように概念的に記載することがある。ＣＰＵ２１による、情報Ａが事柄Ｂであることを示しているか、事柄Ｃであるかを示しているかを判断する処理を、「情報Ａから、事柄Ｂであるか事柄Ｃであるかを判断する」のように概念的に記載することがある。
【００４８】
また、本明細書中の「データ」と「情報」とは、コンピュータによって取り扱い可能なビット或いはビット列である点において共通する。「データ」とは、各ビットが示す意味内容をコンピュータが考慮することなく取り扱えるものを指す。これに対して、「情報」とは、各ビットが示す意味内容によってコンピュータの動作が分岐するものを指す。さらに、「指示」は、送信先の装置に対して次の動作を促すための制御信号であって、情報を含んでいることもあるし、それ自体が情報としての性質を有していることもある。
【００４９】
また、「データ」及び「情報」は、形式（例えば、テキスト形式、バイナリ形式、フラグ形式等）がコンピュータ毎に変更されたとしても、同一の意味内容と認識される限り、同一のデータ及び情報として取り扱われる。例えば、「２つ」であることを示す情報が、あるコンピュータではＡＳＣＩＩコードで”０ｘ３２”というテキスト形式の情報として保持され、別のコンピュータでは二進数表記で”１０”というバイナリ形式の情報として保持されてもよい。
【００５０】
但し、上記の「データ」及び「情報」の区別は厳密なものではなく、例外的な取り扱いも許容される。例えば、データが一時的に情報として扱われてもよいし、情報が一時的にデータとして扱われてもよい。また、ある装置ではデータとして扱われるものが、他の装置では情報として扱われてもよい。さらには、データの中から情報が取り出されてもよいし、情報の中からデータが取り出されてもよい。
【００５１】
また、本明細書中の「に応じて」は、当該文字列の前に記載された条件が満たされた場合に、当該文字列の後に記載された処理が実行されることを示す。なお、処理が実行されるタイミングは、条件が満たされた後であればよく、当該条件が満たされた直後である必要は必ずしもない。
【００５２】
なお、図２において破線で示されたステップＳ２５については、変形例６において説明する。
【００５３】
受付モジュール５２は、図２に示されるように、情報処理装置から、ドキュメント情報、ページヘッダ情報、及び圧縮データを含む圧縮画像データ（図６）の入力を受け付ける（Ｓ１０）。ステップＳ１０の処理は、受付処理の一例である。
【００５４】
ドキュメント情報、ページヘッダ情報、及び圧縮データは、１つのまとまったデータである。図５に示される例では、圧縮画像データは、ドキュメント情報、第１ページヘッダ情報、第１ページ画像の圧縮データ、第２ページヘッダ情報、第２ページ画像の圧縮データ、第３ページヘッダ情報、及び第３ページ画像の圧縮データを有する。
【００５５】
ドキュメント情報は、データの種類を判定するためのコマンドなどである。ページヘッダ情報は、印刷設定や解像度を含む情報である。印刷設定は、Ａ４やＡ５などのシートのサイズを示す情報や、普通紙や光沢紙などのシートの種類を示す情報や、片面印刷や両面印刷などの印刷面を示す情報や、モノクロ印刷やカラー印刷などの印刷色を示す情報などである。解像度は、ページの縦方向における画素数及び横方向における画素数を示す情報である。解像度は、例えば、４００（横）×４００（縦）や、６００（横）×６００（縦）である。
【００５６】
受付モジュール５２は、図２に示されるように、受け付けた圧縮画像データをメモリ２２のＲＡＭ２５に記憶させる（Ｓ１１）。ステップＳ１１の処理は、第１記憶処理の一例である。
【００５７】
解析モジュール５３は、圧縮画像データがＲＡＭ２５に記憶されたか否かを判断する（Ｓ１２）。解析モジュール５３は、例えば、圧縮画像データが記憶されるＲＡＭ２５の所定の領域を監視することにより（Ｓ１２：Ｎｏ）、圧縮画像データがＲＡＭ２５に記憶されたか否かを判断する。
【００５８】
解析モジュール５３は、圧縮画像データがＲＡＭ２５に記憶されたと判断すると（Ｓ１２：Ｙｅｓ）、印刷ジョブをジョブ管理モジュール５４に登録する（Ｓ１３）。そして、解析モジュール５３は、圧縮画像データに含まれるドキュメント情報を読み込んで取得する。解析モジュール５３は、取得したドキュメント情報に含まれる印刷設定を含むジョブ情報をジョブ管理モジュール５４に通知する（Ｓ１４）。
【００５９】
次に、解析モジュール５３は、圧縮画像データに含まれるページの情報（以下、ページ情報と記載する）を取得する解析処理を実行する（Ｓ１５）。ページ情報は、ジョブ管理モジュール５４にページジョブを登録するために必要である。ステップＳ１５の解析処理は、第１特定処理及び特定処理の一例である。
【００６０】
ページ情報とは、圧縮画像データに含まれる第１ページや第２ページや第３ページ等を特定する情報である。ページ情報は、例えば、圧縮画像データが有する複数の単位データにおいて、各ページの最後の画素を示す単位データを特定する情報である。例えば、圧縮画像データにおける１バイトから３００バイトまでが第１ページを示し、３０１バイトから５００バイトまでが第２ページを示し、５０１バイトから８００バイトまでが第３ページを示す場合、例えば「３００」、「５００」、「８００」がページ情報となる。なお、ページ情報は、圧縮画像データにおける「３００」や「５００」や「８００」などのデータサイズに限定されるものではなく、各ページを特定可能であれば、他の情報やデータであってもよい。
【００６１】
なお、圧縮画像データに含まれるページの総数や、上述のページ情報は、圧縮画像データのドキュメント情報には含まれていない。また、解析モジュール５３は、解析処理において、圧縮画像データの全体の解凍によって生成される画像データ全てを保持する必要なく、ページ情報を取得する。すなわち、圧縮画像データの全体の解凍で得られる画像データすべてを記憶可能なほど大容量のＲＡＭを必要としない。以下、図３を参照して、解析処理について詳しく説明する。
【００６２】
以下では、図６（Ａ）に示す画像を有するページの圧縮画像データを解析する場合を例にして、解析処理を説明する。画像の解像度は、８（横）×１０（縦）である。すなわち、横方向における画素数が「８」で、縦方向における画素数が「１０」である。横方向に並ぶ８個の画素で１つの列が構成され、縦方向に１０個の列が並んでいる。各列を、上から順に第１列、第２列、第３列、第４列、第５列、第６列、第７列、第８列、第９列、第１０列と記載して説明する。
【００６３】
また、以下では、画像データが、packbitsの圧縮方法で圧縮された圧縮画像データである場合について説明する。なお、図３において破線で示されたステップＳ３１、Ｓ３２については、変形例２において説明する。
【００６４】
図３に示されるように、解析モジュール５３は、解析データサイズＫを初期値のゼロにする（Ｓ３３）。解析データサイズＫは、読み込んで解析が終了した単位データの数を示す。
【００６５】
次に、解析モジュール５３は、圧縮画像データを読み込んでドキュメント情報を取得し、ドキュメント情報に含まれる解像度を取得する（Ｓ３４）。そして、解析モジュール５３は、取得した解像度に基づいて、縦値Ｂ及び横値Ｃを決定する（Ｓ３５）。縦値Ｂは、解像度が示す縦方向の画素数であり、横値Ｃは、解像度が示す横方向の画素数である。図６（Ａ）に示す例では、縦値Ｂは「１０」であり、横値Ｃは「８」である。解析モジュール５３がドキュメント情報を取得するステップＳ３４の処理は、取得処理の一例である。縦値Ｂは、第１閾値の一例である。解析モジュール５３が縦値Ｂを決定するステップＳ３５の処理は、閾値決定処理の一例である。
【００６６】
次に、解析モジュール５３は、解析高さＤを初期値のゼロにする（Ｓ３６）。解析高さＤは、解析が終了した解析データサイズＫが示す総画素数が示す縦方向における画素の数を示す。すなわち、解析高さＤは、ページの何列目まで解析したかを示す値である。解析が終了した解析データサイズＫが示す総画素は、カウント値の一例である。
【００６７】
解析モジュール５３は、解析高さＤが縦値Ｂ未満か否かを判断する（Ｓ３７）。図６（Ａ）に示す例では、解析モジュール５３は、解析高さＤが縦値Ｂ＝１０に達して、第１０列まで解析が終了したか否かを判断する。すなわち、ステップＳ２４では、１ページ分の解析が終了したか否かを判断する。
【００６８】
解析モジュール５３は、解析高さＤが縦値Ｂ未満であると判断したことに応じて（Ｓ３７：Ｙｅｓ）、すなわち、１ページ分の解析が終了していないと判断したことに応じて、次の列以降の解析を開始する。
【００６９】
具体的には、解析モジュール５３は、未だ解析していない単位データを読み込む（Ｓ３８）。そして、読み込んだ単位データから、連続ライン数Ｅを決定する（Ｓ３９）。図６（Ａ）に示す例では、第４列と第５列と第６列とが同内容の画素で構成されおり、第８列と第９列とが同内容の画素で構成されている。解析モジュール５３は、連続ライン数Ｅ＝１やＥ＝２やＥ＝３を決定する。
【００７０】
解析モジュール５３は、決定したライン数Ｅを解析高さＤに加算する（Ｓ４０）。例えば、連続ライン数Ｅ＝３である場合、解析高さＤに「３」を加える。また、解析モジュール５３は、単位データを読み込んだことに応じて、解析データサイズＫに「１」を加える（Ｓ４１）。
【００７１】
次に、解析モジュール５３は、解析幅Ｆを初期値のゼロにする（Ｓ４２）。解析幅Ｆは、解析する単位データが示す横方向における画素数を示す。解析モジュール５３は、解析幅Ｆが横値Ｃ未満であるか否かを判断する（Ｓ４３）。すなわち、ステップＳ４３では、解析する単位データが示す画素が図６（Ａ）における右端の画素まで到達したか否かが判断される。
【００７２】
解析モジュール５３は、解析幅Ｆが横値Ｃ以上であると判断すると（Ｓ４３：Ｎｏ）、ステップＳ３７以降の処理を実行する。解析モジュール５３は、解析幅Ｆが横値Ｃ未満であると判断すると（Ｓ４３：Ｙｅｓ）、単位データを読み込んで、読み込んだ単位データのデータ長を取得する（Ｓ４４）。データ長は、同じ色の画素が続くこと、及び、異なる色の画素が続くことを示す。また、解析モジュール５３は、単位データを読み込んだことに応じて、解析データサイズＫに「１」を加える（Ｓ４５）。
【００７３】
解析モジュール５３は、ステップＳ４４で取得したデータ長が指定値未満であるか否かを判断する（Ｓ４６）。すなわち、ステップＳ４６では、同じ色の画素が続くか、異なる色の画素が続くかが判断される。具体的には、解析モジュール５３は、単位データが８ビットである場合、データ長が指定値である１２８未満であるか否かを判断する。指定値は、メモリ２２のＲＯＭ２４やＥＥＰＲＯＭに予め記憶される。
【００７４】
解析モジュール５３は、ステップＳ４４で取得したデータ長が指定値未満であって、同じ色の画素が続くと判断すると（Ｓ４６：Ｙｅｓ）、ステップＳ４４で取得したデータ長が示す同じ色の画素の数に応じた数だけ単位データを読み込む（Ｓ４７）。そして、解析モジュール５３は、読み込んだ単位データの数だけ解析データサイズＫを加算する（Ｓ４８）。また、解析モジュール５３は、ステップＳ４４で取得したデータ長が示す同じ色の画素の数だけ解析幅Ｆを加算する（Ｓ４９）。
【００７５】
一方、解析モジュール５３は、ステップＳ４４で取得したデータ長が指定値以上であって、異なる色の画素が続くと判断すると（Ｓ４６：Ｎｏ）、ステップＳ４４で取得したデータ長が示す異なる色の画素の数に応じた数だけ単位データを読み込む（Ｓ５０）。そして、解析モジュール５３は、読み込んだ単位データの数だけ解析データサイズＫを加算する（Ｓ５１）。また、解析モジュール５３は、ステップＳ４４で取得したデータ長が示す異なる色の画素の数だけ解析幅Ｆを加算する（Ｓ５２）。
【００７６】
解析モジュール５３は、ステップＳ４９、Ｓ５２の処理の実行後、ステップＳ４３以降の処理を再度実行する。
【００７７】
解析モジュール５３は、ステップＳ３７において、解析高さＤが縦値Ｂ以上であって、読み込んだ単位データが示す画素数が１ページ分の総画素数に到達したと判断すると（Ｓ３７：Ｎｏ）、読み込んだ単位データの総数を示す解析データサイズＫをメモリ２２のＲＡＭ２５或いはＥＥＰＲＯＭに保存する（Ｓ５３）。図５に示す例では、解析モジュール５３は、第１ページの最後の画素を示す単位データまでの第１解析データサイズＫと、第２ページの最後の画素を示す単位データまでの第２解析データサイズＫと、第３ページの最後の画素を示す単位データまでの第３解析データサイズＫと、をメモリ２２に記憶させる。解析データサイズＫをメモリ２２に記憶させるステップＳ５３の処理は、第２記憶処理の一例である。
【００７８】
次に、解析モジュール５３は、圧縮画像データが、未だ読み込んでいない単位データを有するか否かを判断する（Ｓ５４）。すなわち、ステップＳ５４では、圧縮画像データが次のページを有するか否かが判断される。
【００７９】
解析モジュール５３は、次のページがあると判断すると（Ｓ５４：Ｙｅｓ）、ステップＳ３６以降の処理を再度実行する。解析モジュール５３は、次のページがないと判断すると（Ｓ５４：Ｎｏ）、解析処理を終了する。
【００８０】
解析モジュール５３は、図２に示されるように、解析処理（Ｓ１５）の終了後、発見したページの数だけページジョブをジョブ管理モジュール５４に要録する（Ｓ１６）。なお、解析モジュール５３は、解析処理において、ページを発見するごとに、ページジョブをジョブ管理モジュール５４に登録してもよい。
【００８１】
また、解析モジュール５３は、登録したページジョブのページ情報をジョブ管理モジュール５４に通知する（Ｓ１７）。ページ情報は、解析処理のステップＳ５３で保存した解析データサイズＫなどである。
【００８２】
ジョブ管理モジュール５４は、解析モジュール５３によってページジョブが登録されたことに応じて、メモリ２２のＲＡＭ２５に、印刷キューを記憶させる（Ｓ１８）。すなわち、ジョブ管理モジュール５４は、印刷キューを生成する。そして、ジョブ管理モジュール５４は、生成した順に印刷キューの処理を開始する（Ｓ１８）。すなわち、登録されたページジョブを順に処理する。以下、詳しく説明する。
【００８３】
まず、ジョブ管理モジュール５４は、第１ページなど一のページの印刷データを圧縮画像データから生成する印刷データ生成処理を実行する（Ｓ１９）。図４を参照して印刷データ生成処理について詳しく説明する。なお、以下では、第１ページの印刷データを生成する場合を例として説明する。また、図４において破線で示されたステップＳ７０については、変形例６において説明する。
【００８４】
ジョブ管理モジュール５４は、分割指示コマンドを分割モジュール５５に入力する（Ｓ６１）。分割指示コマンドは、メモリ２２のＲＡＭ２５に記憶された圧縮画像データを分割して第１ページの部分圧縮データを生成し、生成した第１ページの部分圧縮データをＲＡＭ２５に記憶させることを指示するコマンドである。分割指示コマンドは、ステップＳ１７で解析モジュール５３から通知されたページ情報に含まれる上述の第１解析データサイズＫと、ＲＡＭ２５の記憶領域を指定する領域指定情報とを付帯する。
【００８５】
分割モジュール５５は、分割指示コマンドを受け付けると（Ｓ６１）、分割処理を実行する（Ｓ６２）。詳しく説明すると、分割モジュール５５は、圧縮画像データをメモリ２２のＲＡＭ２５から読み出す。そして、分割モジュール５５は、第１解析データサイズＫを用いて、図５に示されるように、第１ページ画像の圧縮データと第２ページヘッダ情報との間で圧縮画像データを分割し、第１ページの部分圧縮データとその余のデータとを生成する。そして、分割モジュール５５は、生成した第１ページの部分圧縮データを、ジョブ管理モジュール５４に指定されたＲＡＭ２５の記憶領域に記憶させる（Ｓ６３）。その余のデータは、メモリ２２に記憶されることなく、破棄される。
【００８６】
なお、ジョブ管理モジュール５４は、第２ページに対するページジョブ処理を実行する場合、例えば、第１解析データサイズＫ及び第２解析データサイズＫと、ＲＡＭ２５の記憶領域を指定する領域指定情報とを付帯する分割指示コマンドを分割モジュール５５に入力する。分割モジュール５５は、第１解析データサイズＫ及び第２解析データサイズＫを用いて、図５に示されるように、第１ページ画像の圧縮データと第２ページヘッダ情報との間、及び、第２ページ画像の圧縮データと第３ページヘッダ情報との間で圧縮画像データを分割し、さらに、ドキュメント情報を付加して、第２ページの部分圧縮データと、その余のデータとを生成する。ジョブ管理モジュール５４は、生成した第２ページの部分圧縮データをメモリ２２のＲＡＭ２５の所定の記憶領域に記憶させる（Ｓ６３）。その余のデータは、メモリ２２に記憶されることなく、破棄される。
【００８７】
ジョブ管理モジュール５４は、第３ページに対するページジョブ処理を実行する場合、例えば、第２解析データサイズＫ及び第３解析データサイズＫと、ＲＡＭ２５の記憶領域を指定する領域指定情報とを付帯する分割指示コマンドを分割モジュール５５に入力する。分割モジュール５５は、第２解析データサイズＫ及び第３解析データサイズＫを用いて、図６に示されるように、第２ページ画像の圧縮データと第３ページヘッダ情報との間で圧縮画像データを分割し、さらに、ドキュメント情報を付加して、第３ページの部分圧縮データと、その余のデータとを生成する。ジョブ管理モジュール５４は、生成した第３ページの部分圧縮データをメモリ２２のＲＡＭ２５の所定の記憶領域に記憶させる（Ｓ６３）。その余のデータは、メモリ２２に記憶されることなく、破棄される。
【００８８】
分割モジュール５５が、第１ページや第２ページや第３ページの部分圧縮データをメモリ２２に記憶させるステップＳ６３の処理は、第２記憶処理の一例である。
【００８９】
ジョブ管理モジュール５４は、分割指示コマンドを分割モジュール５５に入力した後、分割モジュール５５が分割処理及び記憶処理（Ｓ６３）を実行したか否かを判断する。例えば、ジョブ管理モジュール５４は、分割指示コマンドで指示したＲＡＭ２５の記憶領域をポーリングなどを用いて監視し、当該記憶領域に部分圧縮データが記憶されたことにより、分割処理及び記憶処理が実行されたと判断する。或いは、ジョブ管理モジュール５４は、分割処理を実行した分割モジュール５５から、分割指示コマンドに対する応答を受け付けたことにより、分割処理及び記憶処理が実行されたと判断する。
【００９０】
ジョブ管理モジュール５４は、分割処理及び記憶処理が実行されたと判断すると、解凍を行うことを指示する解凍指示コマンドを解凍モジュール５６に入力する（Ｓ６４）。解凍指示コマンドは、部分圧縮データが記憶されたＲＡＭ２５の記憶領域と、解凍後の解凍ページデータを記憶するＲＡＭ２５の記憶領域と、を示す領域指定情報を付帯する。
【００９１】
解凍モジュール５６は、解凍指示コマンドを受け付けると（Ｓ６４）、解凍処理を実行する（Ｓ６５）。詳しく説明すると、解凍モジュール５６は、部分圧縮データをメモリ２２のＲＡＭ２５から読み出す。そして、解凍モジュール５６は、ＲＡＭ２５から読み出した部分圧縮データを解凍して解凍ページデータを生成する。解凍モジュール５６は、解凍ページデータを、ジョブ管理モジュール５４に指定されたＲＡＭ２５の記憶領域に記憶させる（Ｓ６６）。
【００９２】
なお、ジョブ管理モジュール５４は、分割処理が実行されたか否かを判断することなく解凍指示コマンドを出力してもよい。その場合、解凍指示コマンドを受け付けた解凍モジュール５６は、ポーリングなどによって、メモリ２２のＲＡＭ２５に部分圧縮データが記憶されたか否かを監視し、部分圧縮データがＲＡＭ２５に記憶されたことに応じて、解凍処理（Ｓ６５）を実行する。
【００９３】
ジョブ管理モジュール５４は、解凍指示コマンドを解凍モジュール５６に入力した後、解凍モジュール５６が解凍処理及び記憶処理（Ｓ６６）を実行したか否かを判断する。例えば、ジョブ管理モジュール５４は、解凍指示コマンドで指示したＲＡＭ２５の記憶領域をポーリングなどを用いて監視し、当該記憶領域に解凍ページデータが記憶されたことにより、解凍処理及び記憶処理が実行されたと判断する。或いは、ジョブ管理モジュール５４は、解凍処理を実行した解凍モジュール５６から、解凍指示コマンドに対する応答を受け付けたことにより、解凍処理及び記憶処理が実行されたと判断する。
【００９４】
ジョブ管理モジュール５４は、解凍処理及び記憶処理が実行されたと判断すると、変換指示コマンドを変換モジュール５７に入力する（Ｓ６７）。変換指示コマンドは、解凍ページデータが記憶されたＲＡＭ２５の記憶領域と、印刷データを記憶するＲＡＭ２５の記憶領域と、を示す領域指定情報を付帯する。
【００９５】
変換モジュール５７は、変換指示コマンドを受け付けると（Ｓ６７）、変換処理を実行する（Ｓ６８）。詳しく説明すると、変換モジュール５７は、解凍ページデータをメモリ２２のＲＡＭ２５から読み出す。そして、変換モジュール５７は、ＲＡＭ２５から読み出した解凍ページデータに、回転や色変換や誤差拡散や５値化の変換を行って、１ページ分の印刷データを生成する。そして、変換モジュール５７は、生成した１ページ分の印刷データを、ジョブ管理モジュール５４に指定されたＲＡＭ２５の記憶領域に記憶させる（Ｓ６９）。変換モジュール５７が、解凍ページデータを変換して印刷データを生成するステップＳ６８の処理は、第１生成処理及び生成処理の一例である。
【００９６】
なお、ジョブ管理モジュール５４は、解凍処理が実行されたか否かを判断することなく変換指示コマンドを出力してもよい。その場合、変換指示コマンドを受け付けた変換モジュール５７は、ポーリングなどによって、メモリ２２のＲＡＭ２５に解凍ページデータが記憶されているか否かを監視し、解凍ページデータがＲＡＭ２５に記憶されたことに応じて、変換処理（Ｓ６８）を実行する。
【００９７】
ジョブ管理モジュール５４は、変換指示コマンドを変換モジュール５７に入力した後、変換モジュール５７が変換処理及び記憶処理（Ｓ６９）を実行したか否かを判断する。例えば、ジョブ管理モジュール５４は、変換指示コマンドで指示したＲＡＭ２５の記憶領域をポーリングなどを用いて監視し、当該記憶領域に印刷データが記憶されたことにより、変換処理及び記憶処理が実行されたと判断する。或いは、ジョブ管理モジュール５４は、変換処理及び記憶処理を実行した変換モジュール５７から、変換指示コマンドに対する応答を受け付けたことにより、変換処理及び記憶処理が実行されたと判断する。
【００９８】
ジョブ管理モジュール５４は、変換処理及び記憶処理が実行されたと判断すると、図２に示されるように、印刷データを駆動回路３５及び駆動モータ３６に出力する印刷データ出力処理を実行する（Ｓ２０）。具体的には、ジョブ管理モジュール５４は、変換処理及び記憶処理が実行されたと判断すると、出力指示コマンドを印刷制御モジュール５８に入力する。出力指示コマンドは、印刷データが記憶されたＲＡＭ２５の記憶領域を示す領域指定情報を付帯する。
【００９９】
印刷制御モジュール５８は、出力指示コマンドを受け付けると、印刷データをメモリ２２のＲＡＭ２５から読み出す。そして、印刷制御モジュール５８は、ＲＡＭ２５から読み出した印刷データを、駆動回路３５及び駆動モータ３６に対して出力する。ステップＳ２０の処理は、第１出力処理及び出力処理の一例である。
【０１００】
印刷データを受け付けた印刷エンジン１５は、シートに画像を印刷する（Ｓ２１）。
【０１０１】
また、ジョブ管理モジュール５４は、印刷エンジン１５がシートに第１ページの画像を印刷したことに応じて、第１ページのページジョブを終了させる（Ｓ２２）。そして、ジョブ管理モジュール５４は、未処理のページジョブがメモリ２２に記憶されているか否かを判断する（Ｓ２３）。すなわち、ステップＳ２３では、印刷すべきページがあるか否かが判断される。
【０１０２】
ジョブ管理モジュール５４は、未処理のページジョブがメモリ２２に記憶されていると判断すると（Ｓ２３：Ｙｅｓ）、ステップＳ１８以降の処理を再度実行し、第２ページや第３ページの印刷データを生成して印刷エンジン１５に出力する。
【０１０３】
なお、フローチャートには示されていないが、ジョブ管理モジュール５４は、印刷エンジン１５が１ページの印刷を終了したことに応じて、印刷を終了したページの印刷キューをメモリ２２から削除する。
【０１０４】
ジョブ管理モジュール５４は、ステップＳ２３において、未処理のページジョブがないと判断すると（Ｓ２３：Ｎｏ）、印刷ジョブを終了させて（Ｓ２４）、処理を終了する。
【０１０５】
[実施形態の作用効果]
コントローラ１１は、一の部分圧縮データを解凍し（Ｓ６５）、解凍によって得られた解凍ページデータに基づいて、１ページ分の印刷データを生成し（Ｓ６８）、生成した１ページ分の印刷データを出力する（Ｓ２０）。そして、コントローラは、１ページ分の印刷データの生成と出力とを繰り返す（Ｓ２３：Ｙｅｓ）。したがって、解凍された複数ページの画像データ全体を処理することができるだけの容量を有さないメモリ２２を備えたプリンタ１０であっても、複数ページを含む圧縮画像データの印刷を行うことができる。或いは、プリンタ１０が備えるメモリ２２のＲＡＭ２５の容量を低減することができる。
【０１０６】
本実施形態では、解析高さＤが縦値Ｂ以上であることに応じて、ページの最後の画素を示す単位データを特定する解析データサイズＫがメモリ２２に記憶され、メモリ２２に記憶された解析データサイズＫを用いて、圧縮画像データが部分圧縮データに分割される。したがって、圧縮画像データを解凍することなく、ページの区切りとなる単位データを特定して、圧縮画像データを部分圧縮データに分割することができる。
【０１０７】
[変形例１]
上述の実施形態では、圧縮画像データが、ジョブ管理モジュール５４の分割モジュール５５によって分割される例を説明した。しかしながら、圧縮画像データは、解析モジュール５３において分割されてもよい。この場合、分割モジュール５５は、ジョブ管理モジュール５４に設けられない。解析モジュール５３は、ステップＳ１５（図２）の解析処理の実行後、ステップＳ６２の分割処理（図４）を実行し、第１ページの部分圧縮データ、第２ページの部分圧縮データ、及び第３ページの部分圧縮データをメモリ２２のＲＡＭ２５に記憶させる。具体的には、解析モジュール５３は、アプリケーション５１がＲＡＭ２５に確保した第１記憶領域に第１ページの部分圧縮データを記憶させ、アプリケーション５１がＲＡＭ２５に確保した第２記憶領域に第２ページの部分圧縮データを記憶させ、アプリケーション５１がＲＡＭ２５に確保した第３記憶領域に第３ページの部分圧縮データを記憶させる。ジョブ管理モジュール５４は、第１記憶領域に記憶された部分圧縮データを第１ページの部分圧縮データとして取り扱い、第２記憶領域に記憶された部分圧縮データを第２ページの部分圧縮データとして取り扱い、第３記憶領域に記憶された部分圧縮データを第３ページの部分圧縮データとして取り扱う。すなわち、ジョブ管理モジュール５４は、部分圧縮データが記憶されている記憶領域によって、部分圧縮データがいずれのページの部分圧縮データであるかを判断する。解析モジュール５３が、第１ページの部分圧縮データを第１記憶領域に記憶させ、第２ページの部分圧縮データを第２記憶領域に記憶させ、第３ページの部分圧縮データを第３記憶領域に記憶させる処理は、第２記憶処理の一例である。
【０１０８】
このように、解析モジュール５３において圧縮画像データを複数の部分圧縮データに分割する場合、第１ページの部分圧縮データ、第２ページの部分圧縮データ、及び第３ページの部分圧縮データを記憶するだけの容量のＲＡＭ２５が必要になる。すなわち、第１ページの部分圧縮データと、第２ページの部分圧縮データと、第３ページの部分圧縮データとを個々に記憶するだけの容量のＲＡＭ２５があればよい上述の実施形態に比べ、大きな容量のＲＡＭ２５が必要になる。しかしながら、上述の実施形態では、第１ページの部分圧縮データを生成するための分割処理、第２ページの部分圧縮データを生成するための分割処理、及び第３ページの部分圧縮データを生成するための分割処理の３回の分割処理の実行が必要であるのに対し、圧縮画像データを解析モジュール５３において分割する場合、１回の分割処理で全ての部分圧縮データを生成することができる。すなわち、圧縮画像データを解析モジュール５３において分割する場合、実施形態に比べ大きな容量のＲＡＭ２５が必要になるが、印刷データの生成に要する時間をさらに短くすることができる。
[変形例２]
【０１０９】
図３に示されるように、解析モジュール５３は、圧縮画像データのデータ量が、メモリ２２に記憶された基準値未満であるか否かを判断する（Ｓ３１）。基準値は、例えば、圧縮画像データを分割して部分圧縮データを生成しても、生成した部分圧縮画像データから印刷データを生成する処理を実行できないほど、部分圧縮データのデータ量が大きいか否かを判断する値であって、メモリ２２のＲＡＭ２５の容量に応じて、メモリ２２のＲＯＭ２４やＥＥＰＲＯＭに予め記憶される値である。基準値は、第２閾値の一例である。ステップＳ３１の処理は、データ量判断処理の一例である。
【０１１０】
解析モジュール５３は、圧縮画像データのデータ量が、基準値未満であると判断すると（Ｓ３１：Ｙｅｓ）、ステップＳ３３以降の処理を実行する。
【０１１１】
解析モジュール５３は、圧縮画像データのデータ量が、基準値未満でないと判断すると（Ｓ３１：Ｎｏ）、圧縮画像データを解凍しつつ、圧縮画像データが示す画像を縮小し、解凍及び縮小した解凍縮小データをメモリ２２のＲＡＭ２５に記憶させ（Ｓ３２）、解析処理を終了する。圧縮画像データの縮小は、例えば、画像を示す画素を間引くことによって行われる。縮小率は、例えば、予め決められてメモリ２２に記憶され、或いは、圧縮画像データのデータ量によって、解析モジュール５３が決定する。ステップＳ３２の処理は、縮小ページデータ取得処理の一例である。解凍縮小データは、縮小ページデータの一例である。
【０１１２】
図２のフローチャートには示されていないが、ジョブ管理モジュール５４は、ステップＳ３２の処理を実行した場合、ステップＳ１７の処理をスキップし、ステップＳ１８において、第１ページの解凍縮小データを、変換モジュール５７を用いて回転変換や色変換や誤差拡散や５値化を行った後、拡大させて、第１ページの印刷データを生成する。そして、生成した第１ページの印刷データを印刷エンジン１５に対して出力する（Ｓ２０）。ジョブ管理モジュール５４が、解凍縮小データに変換及び拡大を行って第１ページの印刷データを生成する処理は、第２生成処理の一例である。第２生成処理で生成した第１ページの印刷データを出力するステップＳ２０の処理は、第２出力処理の一例である。
【０１１３】
ジョブ管理モジュール５４は、第２ページや第３ページなど、印刷データを生成していないページがあると判断すると（Ｓ２３：Ｙｅｓ）、第１ページと同様にして、第２ページの印刷データや第３ページの印刷データを生成し、生成した印刷データを順に出力する（Ｓ２０）。すなわち、圧縮画像データに含まれるページ数分だけ、解凍縮小データから各ページの印刷データを生成する第２生成処理及び生成した印刷データを出力する第２出力処理が繰り返し実行される。
【０１１４】
本変形例では、圧縮画像データのデータサイズが、圧縮画像データを分割して各ページごとの部分圧縮データを生成しても、生成した部分圧縮画像データから印刷データを生成する処理を実行できないほど大きい場合であっても、圧縮画像データが示す画像をシートに印刷することができる。
【０１１５】
なお、ステップＳ３１の処理は、ジョブ管理モジュール５４が実行してもよい。その場合、解析モジュール５３は、実施形態と同様に解析処理を実行し、発見した各ページをジョブ管理モジュール５４にそれぞれ登録する。ジョブ管理モジュール５４は、圧縮画像データのデータ量が基準値未満でないと判断すると、分割指示コマンド（Ｓ６１）に代えて、ステップＳ３２の処理の実行を分割モジュール５５に指示する。分割モジュール５５は、ジョブ管理モジュール５４からの指示にしたがって、ステップＳ３２の処理を実行して解凍縮小データを生成し、生成した解凍縮小データをメモリ２２に記憶させる。
【０１１６】
[変形例３]
上述の変形例２では、圧縮画像データのデータ量が、メモリ２２に記憶された基準値未満である場合に、ステップＳ３２の処理が実行されて解凍縮小データが生成される例を説明した。しかしながら、上述の実施形態或いは変形例２において、解析処理のステップＳ５３で解析データサイズＫをメモリ２２に記憶させることができなかったことに応じて、ステップＳ３２の処理が実行されてもよい。
【０１１７】
[変形例４]
本変形例では、画像の印刷に認証情報の入力が必要な、いわゆるセキュアプリントについて説明する。
【０１１８】
ステップＳ１１で受付モジュール５２が取得する圧縮画像データは、認証情報、及び認証情報の入力が必要であるか否かを示す確認情報を含む。アプリケーション５１は、確認情報に基づいて、受付モジュール５２が取得した圧縮画像データが、認証情報の入力が必要な圧縮画像データであるか否かを判断する。アプリケーション５１は、受付モジュール５２が取得した圧縮画像データが、認証情報の入力が必要な圧縮画像データでないと判断すると、実施形態と同様にしてジョブ管理モジュール５４に印刷データを生成させ、生成された印刷データを印刷エンジン１５に出力してシートに画像を印刷させる。
【０１１９】
アプリケーション５１は、受付モジュール５２が取得した圧縮画像データが、認証情報の入力が必要な圧縮画像データであると判断すると、実施形態と同様にしてジョブ管理モジュール５４に印刷データを生成させる。そして、アプリケーション５１は、生成された印刷データをメモリ２２に記憶させて、認証情報の入力を待つ。認証情報は、出力指示の一例である。アプリケーション５１が、生成された印刷データをメモリ２２に記憶させて、認証情報の入力を待つ処理は、待機処理の一例である。
【０１２０】
認証情報は、例えば、ユーザによって設定されたＰＩＮである。認証情報は、例えば、情報処理装置からプリンタ１０に入力される。或いは、認証情報は、ディスプレイ１３に設けられたタッチセンサや、操作スイッチ１４によって、プリンタ１０に直接入力される。
【０１２１】
アプリケーション５１は、認証情報が入力されると、入力された認証情報である入力認証情報と、圧縮画像データに含まれる認証情報とが一致するか否かを判断する。アプリケーション５１は、入力認証情報と、圧縮画像データに含まれる認証情報とが一致しないと判断すると、一致しない旨を示す画像をディスプレイ１３に表示させ、或いは、一致しない旨を示す画像を、通信Ｉ／Ｆ１２を通じて情報処理装置に送信する。
【０１２２】
アプリケーション５１は、入力認証情報と、圧縮画像データに含まれる認証情報とが一致すると判断すると、ジョブ管理モジュール５４に指示を入力し、メモリ２２に記憶された印刷データを印刷エンジン１５に対して出力させる。
【０１２３】
本変形例のプリンタ１０は、いわゆるセキュアプリントにおいても、圧縮画像データが示す画像をシートに印刷することができる。
【０１２４】
なお、本変形例では、いわゆるセキュアプリントを、蓄積印刷の例として説明した。しかしながら、蓄積印刷は、認証情報などの出力指示の入力を必要とする印刷であれば、他の印刷であってもよい。
【０１２５】
[変形例５]
本変形例では、制御プログラム２７が、図６（Ｂ）に示されるリプリント処理を実行する例を説明する。リプリント処理は、印刷エンジン１５において、シートの詰まりなどが生じた場合に、制御プログラム２７が印刷データを印刷エンジン１５に対して再度出力して、詰まりが生じたシートに印刷される予定であった画像を、新たなシートに印刷させる処理である。
【０１２６】
ジョブ管理モジュール５４は、ステップＳ２０（図２）において、印刷データを印刷エンジン１５に対して出力した後、出力した印刷データが示す画像がシートに印刷されたか否かを判断する（Ｓ７１）。例えば、ジョブ管理モジュール５４は、搬送ローラ３３に設けられたロータリエンコーダから入力された検出信号によって、搬送ローラ３３の回転量を算出し、算出した搬送ローラ３３の回転量が示すシートの搬送量が、１ページ分の搬送量に到達したことに応じて、出力した印刷データが示す画像がシートに印刷されたと判断する（Ｓ７１：Ｙｅｓ）。なお、出力した印刷データが示す画像がシートに印刷されたか否かを判断可能であれば、ジョブ管理モジュール５４は、どのような方法を用いて判断してもよい。ステップＳ７１の処理は、終了判断処理の一例である。
【０１２７】
ジョブ管理モジュール５４は、出力した印刷データが示す１ページ分の画像がシートに印刷されたと判断すると（Ｓ７１：Ｙｅｓ）、出力した印刷データであって、メモリ２２に記憶された印刷データの上書きを許可し（Ｓ７６）、リプリント処理を終了する。
【０１２８】
一方、ジョブ管理モジュール５４は、出力した印刷データが示す１ページ分の画像を印刷エンジン１５が印刷中であると判断すると（Ｓ７１：Ｎｏ）、出力した印刷データであって、メモリ２２に記憶された印刷データの上書きを禁止する（Ｓ７２）。すなわち、印刷エンジン１５に対して出力された１ページ分の印刷データは、印刷データが示す画像がシートに印刷されるまでは、メモリ２２において上書きされない。
【０１２９】
次に、ジョブ管理モジュール５４は、エラーが発生したか否かを判断する（Ｓ７３）。例えば、ジョブ管理モジュール５４は、算出した搬送ローラ３３の回転量が示すシートの搬送量が、印刷データが示す予定の搬送量と一致しないことに応じて、シートの詰まりを示すエラーが発生したと判断する。或いは、ジョブ管理モジュール５４は、センサから所定の検出信号が入力したことに応じて、エラーが発生したと判断する。センサは、例えば、印刷エンジン１５を覆うカバーの開閉を検出する開閉センサや、給紙トレイの着脱を検出する着脱センサや、搬送されるシートを検出するシートセンサなどである。開閉センサが出力する信号の値は、カバーの開閉に応じて変化する。着脱センサが出力する信号の値は、給紙トレイがプリンタ１０に装着されている場合と、給紙トレイがプリンタ１０から外されている場合とで、変化する。シートセンサが出力する信号の値は、シートが搬送されている場合と、シートが搬送されていない場合とで、変化する。ジョブ管理モジュール５４は、センサから入力した信号の変化により、閉じられていたカバーが開かれたと判断すると、或いは、装着されていた給紙トレイがプリンタ１０から外されたと判断すると、さらに或いは、給紙トレイにシートがなく、シートが搬送されていないと判断すると、印刷を続行できないエラーが発生したと判断する。なお、エラーの例は、上述の例に限られない。印刷を続行できないようなエラーであれば、どのようなエラーであってもよい。
【０１３０】
ジョブ管理モジュール５４は、印刷エンジン１５が印刷データに対する印刷を実行中である間（Ｓ７１：Ｎｏ）、エラーの発生を監視する（Ｓ７３：Ｎｏ）。
【０１３１】
ジョブ管理モジュール５４は、エラーが発生したと判断すると（Ｓ７３：Ｙｅｓ）、エラーが解消したか否かを判断する（Ｓ７４）。例えば、ジョブ管理モジュール５４は、ユーザが上述のカバーを開いて、詰まったシートを印刷エンジン１５から除去した後、カバーを閉じたことにより、エラーが解消したと判断する。具体的には、ジョブ管理モジュール５４は、上述の開閉センサが出力する信号の変化により、カバーが開かれたことを検出した後、開閉センサが出力する信号の変化により、カバーが閉じられたことを検出すると、エラーが解消したと判断する（Ｓ７４：Ｙｅｓ）。
【０１３２】
或いは、ジョブ管理モジュール５４は、給紙トレイがプリンタ１０から外されて、ユーザによって給紙トレイに新たなシートが給紙トレイに追加された後、給紙トレイがプリンタ１０に装着されたことにより、エラーが解消したと判断する。具体的には、ジョブ管理モジュール５４は、上述の着脱センサが出力する信号の変化により、給紙トレイがプリンタから外されたことを検出した後、着脱センサが出力する信号の変化により、給紙トレイがプリンタ１０に装着されたことを検出すると、エラーが解消したと判断する（Ｓ７４：Ｙｅｓ）。
【０１３３】
さらに或いは、ジョブ管理モジュール５４は、ディスプレイ１３のタッチセンサや、操作スイッチ１４によって、印刷再開を示す指示の入力を受け付けたことに応じて、エラーが解消したと判断する（Ｓ７４：Ｙｅｓ）。エラーが解消したことを示すセンサからの信号や、印刷再開を示す指示は、再開可能入力の一例である。エラーが解消したことを示すセンサからの信号や、印刷再開を示す指示を受け付けるステップＳ７４の処理は、再開可能入力受付処理の一例である。
【０１３４】
ジョブ管理モジュール５４は、エラーが解消するまで、ステップＳ７４の処理を実行する（Ｓ７４：Ｎｏ）。ジョブ管理モジュール５４は、エラーが解消したと判断すると（Ｓ７４：Ｙｅｓ）、再出力処理を実行する（Ｓ７５）。再出力処理は、メモリ２２に記憶された１ページ分の印刷データを印刷エンジン１５に再度出力する処理である。
【０１３５】
ジョブ管理モジュール５４は、再出力処理（Ｓ７５）の実行後、ステップＳ７１以降の処理を再度実行する。
【０１３６】
本変形例では、シートの詰まりやシートが無くなって印刷ができない等のエラーが発生した場合、分割処理、解凍処理、変換処理を再度実行することなく、１ページ分の印刷データを印刷エンジン１５に対して即座に出力することができる。したがって、再出力処理において、印刷データが再度生成される場合に比べ、印刷に要する時間が短くなる。
[変形例６]
【０１３７】
本変形例では、１ページ分の部分圧縮データを複数の分割部分圧縮データにさらに分割して印刷データを生成する例を説明する。本変形例は、例えば、圧縮画像データを各ページごとに分割しただけでは、印刷データを生成できない場合に実行される。例えば、解像度が高い場合に、本変形例が実行される。
【０１３８】
各分割部分圧縮データは、図８（Ａ）に示される分割画像をそれぞれ示す。図８（Ａ）に示す例では、１ページ分の部分圧縮データが４つの分割部分圧縮データに分割されている。そして、４つの分割部分圧縮データは、第１分割画像、第２分割画像、第３分割画像、及び第４分割画像をそれぞれ示す。以下では、図６（Ａ）に示される画像が、図８（Ａ）に示されるように縦横に２分割される場合を例に説明する。具体的には、横８画素、縦１０画素の解像度の画像が、等分に４つに分割される場合を説明する。分割画像は、部分画像の一例である。
【０１３９】
フローチャートには示されていないが、解析モジュール５３は、圧縮画像データから取得したドキュメント情報に含まれる解像度が、メモリ２２に予め記憶された閾値以上であることに応じて、図３に示される解析処理に代えて、図７に示される解析処理を実行する。なお、図３に示される解析処理において説明した処理については、図３と同一の符号を付して説明を省略する。解像度は、圧縮画像データが示す値の一例である。解析モジュール５３が、解像度が閾値以上であるか否かを判断する処理は、実行判断処理の一例である。
【０１４０】
解析モジュール５３は、図７に示すように、ステップＳ３１からＳ３５までの処理を実行する。そして、解析モジュール５３は、縦値Ｂと、縦方向の分割数＝２に基づいて、分割縦閾値Ｇを決定し、横値Ｃ及び横方向の分割数＝２に基づいて、分割横閾値Ｈを決定する（Ｓ８１）。具体的には、解析モジュール５３は、縦値Ｂ＝１０を「２」で除した値である「５」を分割縦閾値Ｇとし、横値Ｃ＝８を「２」で除した値である「４」を分割横閾値Ｈとして決定する。分割数は、メモリ２２に予め記憶され、或いは、圧縮画像データのデータ量に基づいて、解析モジュール５３或いはアプリケーション５１が決定する。なお、画像を縦方向のみ、或いは、横方向にのみ分割する場合は、ステップＳ８１において、分割縦閾値Ｇのみ、或いは、分割横閾値Ｈのみが決定される。
【０１４１】
解析モジュール５３は、解析高さＤをゼロにした後（Ｓ３６）、解析高さＤが分割縦閾値Ｇ＝５に到達したか否かを判断する（Ｓ８２）。解析モジュール５３は、解析高さＤが分割縦閾値Ｇ＝５に到達したと判断すると（Ｓ８２：Ｙｅｓ）、読み込んだ単位データの個数を示す解析データサイズＫをメモリ２２に記憶させて保存する（Ｓ８３）。すなわち、ステップＳ８３では、縦方向における分割位置を示す単位データを特定する解析データサイズＫがメモリ２２に記憶される。
【０１４２】
解析モジュール５３は、解析高さＤが分割縦閾値Ｇ＝５に到達していない、或いは、解析高さＤが分割閾値Ｇ＝５に既に到達した後であると判断したことに応じて（Ｓ８２：Ｎｏ）、ステップＳ８３の処理をスキップし、解析高さＤが縦値Ｂに到達したか否かを判断する（Ｓ８４）。すなわち、ステップＳ８４では、１ページ分の画像の解析が終了したか否かが判断される。
【０１４３】
解析モジュール５３は、解析高さＤが縦値Ｂに到達したと判断すると（Ｓ８４：Ｙｅｓ）、ステップＳ５３、Ｓ５４の処理を実行する。一方、解析モジュール５３は、解析高さＤが縦値Ｂに到達していないと判断すると（Ｓ８４：Ｎｏ）、ステップＳ３８からＳ４２までの処理を実行する。
【０１４４】
次に、解析モジュール５３は、解析幅Ｆが分割横閾値Ｈ＝４に到達したか否かを判断する（Ｓ８５）。解析モジュール５３は、解析幅Ｆが分割横閾値Ｈ＝４に到達したと判断すると（Ｓ８５：Ｙｅｓ）、解析データサイズＫをメモリ２２に記憶させて保存する（Ｓ８６）。すなわち、ステップＳ８６では、横方向における分割位置を示す単位データを特定する解析データサイズＫがメモリ２２に記憶される。
【０１４５】
解析モジュール５３は、解析幅Ｆが分割横閾値Ｈ＝４に到達していない、或いは、解析幅Ｆが分割横閾値Ｈ＝４に既に到達した後であると判断すると（Ｓ８５：Ｎｏ）、ステップＳ８６の処理をスキップし、解析幅Ｆが横値Ｃに到達したか否かを判断する（Ｓ８７）。すなわち、ステップＳ８７では、画像の右端まで解析が終了したか否かが判断される。
【０１４６】
解析モジュール５３は、解析幅Ｆが横値Ｃに到達したと判断すると（Ｓ８７：Ｙｅｓ）、解析データサイズＫをメモリ２２に記憶させて保存し（Ｓ８８）、ステップＳ８２以降の処理を再度実行する。すなわち、ステップＳ８８では、横方向における分割位置を示す単位データを特定する解析データサイズＫがメモリ２２に記憶される。
【０１４７】
解析モジュール５３は、解析幅Ｆが横値Ｃに到達していないと判断すると（Ｓ８７：Ｎｏ）、ステップＳ４４からＳ５２までの処理を実行した後、ステップＳ８５の処理を再度実行する。
【０１４８】
解析モジュール５３が解析データサイズをメモリ２２に記憶させるステップＳ８３、Ｓ８６、Ｓ８８の処理は、第２特定処理及び第３記憶処理の一例である。
【０１４９】
ジョブ管理モジュール５４は、ステップＳ１９で説明した印刷データ生成処理（図４）に代えて、以下で説明する印刷データ生成処理を実行する。
【０１５０】
ジョブ管理モジュール５４は、実施形態で説明した分割指示（Ｓ６１）に代えて、圧縮画像データを分割して分割部分圧縮データを生成する分割指示を分割モジュール５５に対して行う。分割モジュール５５は、実施形態で説明した分割処理（Ｓ６２）に代えて、分割部分圧縮データを生成する分割処理を実行する。
【０１５１】
詳しく説明すると、分割モジュール５５は、圧縮画像データをメモリ２２のＲＡＭ２５から読み出す。そして、分割モジュール５５は、解析データサイズＫを用いて、第１分割画像を示す分割部分圧縮データである第１分割部分圧縮データと、その余のデータとに圧縮画像データを分割する。そして、その余のデータを破棄し、第１分割部分圧縮データをメモリ２２のＲＡＭ２５に記憶させる。
【０１５２】
さらに詳しく説明する。図８（Ｂ）に示されるグレー表示の単位データは、解析データサイズＫが示す単位データであって、分割位置の画素を示す単位データである。当該単位データは、複数の画素を示す。この複数の画素間の分割位置で第１分割画像と第２分割画像とに画像が分割される。分割位置は、図８（Ｂ）における一点鎖線で示されている。
【０１５３】
分割モジュール５５は、解析データサイズＫが示す単位データが示す複数の画素であって、分割位置よりも図における左方の複数の画素からなる第１画素列と、分割位置よりも図における右方の複数の画素からなる第２画素列とのうち、いずれの画素列が第１分割画像に含まれるかを判断する。そして、第１分割画像に含まれる方の画素列を、圧縮画像データと同じ圧縮方法で圧縮し、第１単位データを生成する。そして、分割モジュール５５は、生成した第１単位データを、解析データサイズＫが示すグレー表示の単位データと置き換える。分割モジュール５５は、第１単位データまでの複数の単位データ、或いは、第１単位データ以降の複数の単位データを、第１分割部分圧縮データに含める。なお、第２分割画像を示す第２分割部分圧縮データが生成される場合、第１単位データと同様にして、第２単位データが生成される。
【０１５４】
分割モジュール５５は、解析データサイズＫが示す単位データにおいて第１分割画像とその他の分割画像とに画像が分割されると判断すると、第１単位データや第２単位データを生成することなく、解析データサイズＫが示す単位データまでの単位データを第１分割部分圧縮データに含め、或いは、解析データサイズＫが示す単位データ以降の単位データを第１分割部分圧縮データに含める。
【０１５５】
なお、第１単位データや第２単位データを生成する方法は一例であり、他の方法によって第１単位データ及び第２単位データが生成されてもよい。
【０１５６】
分割モジュール５５は、分割位置情報に含まれる複数の解析データサイズＫが示す複数の分割位置について、それぞれ上述の処理を実行し、第１部分圧縮データと、その余のデータとに圧縮画像データを分割する。
【０１５７】
分割モジュール５５は、分割処理の実行後、分割処理で生成した第１分割部分圧縮データをメモリ２２のＲＡＭ２５の所定の記憶領域に記憶させる。所定の記憶領域は、分割指示において、ジョブ管理モジュール５４によって指定された領域である。ＲＡＭ２５の所定の記憶領域に第１分割部分圧縮データを記憶させる処理は、第３記憶処理の一例である。
【０１５８】
ジョブ管理モジュール５４は、ステップＳ６４の解凍指示に代えて、ＲＡＭ２５の所定の記憶領域に記憶された第１分割部分圧縮データを解凍して第１分割部分解凍データを生成することを指示する解凍指示コマンドを解凍モジュール５６に対して行う。解凍モジュール５６は、解凍指示コマンドが示すＲＡＭ２５の記憶領域をポーリング等によって監視し、ＲＡＭ２５に第１分割部分圧縮データが記憶されたことに応じて、第１分割部分圧縮データをＲＡＭ２５から読み出して解凍する。そして、解凍によって得られた第１分割部分解凍データを、解凍指示コマンドにおいて指定されたＲＡＭ２５の記憶領域に記憶させる。分割部分解凍データは、解凍部分画像データの一例である。
【０１５９】
ジョブ管理モジュール５４は、ステップＳ６７の変換指示コマンドに代えて、ＲＡＭ２５の所定の記憶領域に記憶された第１分割部分解凍データを第１部分印刷データに変換することを指示する変換指示コマンドを変換モジュール５７に入力する。変換モジュール５７は、変換指示コマンドが示すＲＡＭ２５の記憶領域をポーリング等によって監視し、ＲＡＭ２５に第１分割部分解凍データが記憶されたことに応じて、第１分割部分解凍データをＲＡＭ２５から読み出して第１部分印刷データに変換して生成する。変換モジュール５７が第１部分印刷データを生成する処理は、部分印刷データ生成処理の一例である。
【０１６０】
ジョブ管理モジュール５４は、第１部分印刷データを出力するために変換が必要な分割部分圧縮データがあるか否かを判断する（図４：Ｓ７０）。詳しく説明すると、ヘッド３１（図１）は、図８（Ａ）に示す走査方向においてシートを走査してシートに画像を印刷する。したがって、ヘッド３１がシートに画像を印刷するためには、第１部分印刷データだけなく、第２分割画像を示す部分印刷データである第２部分印刷データが必要となる。ジョブ管理モジュール５４は、モデル情報及び分割情報に基づいて、印刷データを出力するために変換が必要な部分圧縮データがあるか否かを判断する。
【０１６１】
ジョブ管理モジュール５４は、印刷データを出力するために変換が必要な部分圧縮データがあると判断すると（Ｓ７０：Ｙｅｓ）、印刷データを出力するために変換が必要な分割部分圧縮データを生成するための分割指示コマンドを分割モジュール５５に入力する。
【０１６２】
分割モジュール５５は、上述と同様にして、第２分割画像を示す第２分割部分圧縮データと、その余のデータとに圧縮画像データを分割し、その余のデータを破棄して、第２分割部分圧縮データのみをメモリ２２のＲＡＭ２５の所定の記憶領域に記憶させる。
【０１６３】
ジョブ管理モジュール５４は、上述と同様にして、解凍指示コマンドや変換指示コマンドを解凍モジュール５６や変換モジュール５７に入力し、第２分割画像を示す第２部分印刷データを変換モジュール５７に生成させる。
【０１６４】
ジョブ管理モジュール５４は、印刷データを出力するために変換が必要な分割部分圧縮データがないと判断すると（Ｓ７０：Ｎｏ）、印刷データ生成処理を終了する。そして、ジョブ管理モジュール５４は、図２に示されるように、生成した第１部分印刷データ及び第２部分印刷データを印刷エンジン１５の駆動回路３５及び駆動モータ３６に出力する（Ｓ２０）。第１部分印刷データ及び第２部分印刷データを出力するステップＳ２０の処理は、部分出力処理の一例である。
【０１６５】
ジョブ管理モジュール５４は、ステップＳ２０の処理の実行後、部分印刷データに変換していない分割画像があるか否かを判断する（Ｓ２５）。ジョブ管理モジュール５４は、部分印刷データに変換していない分割画像である第３分割画像及び第４分割画像があると判断すると（Ｓ２５：Ｙｅｓ）、上述の印刷データ生成処理を実行し、第３分割画像を示す第３部分印刷データ及び第４分割画像を示す第４部分印刷データを生成する。そして、ジョブ管理モジュール５４は、生成した第３部分印刷データ及び第４部分印刷データを印刷エンジン１５に対して出力する（Ｓ２０）。すなわち、ジョブ管理モジュール５４は、分割画像の数に応じた回数だけ部分印刷データの生成と出力とを繰り返して実行する。
【０１６６】
本変形例では、解像度が高くても、圧縮画像データが示す画像をシートに印刷することができる。
【０１６７】
[その他の変形例]
上述の実施形態では、解析処理において、解析高さＤが縦値Ｂ未満か否かにより（Ｓ２４）、１ページの解析が終了したか否かを判断する例を説明した。すなわち、ドキュメント情報が示す縦方向の解像度を示す縦値Ｂが第１閾値である例を説明した。しかしながら、解析した単位データが示す総画素数が、解像度が示す１ページ分の総画素数に到達したか否かにより、１ページの解析が終了したか否かが判断されてもよい。解像度が示す１ページ分の総画素数は、例えば、解像度が６００×６００である場合、３６００００である。すなわち、ドキュメント情報が示す解像度によって決まる総画素数が、第１閾値であってもよい。
【符号の説明】
【０１６８】
１０・・・プリンタ
１１・・・コントローラ
２１・・・ＣＰＵ
２２・・・メモリ
２７・・・制御プログラム
５１・・・アプリケーション
５２・・・受付モジュール
５３・・・解析モジュール
５４・・・ジョブ管理モジュール
【図１】
2020131618.tif 000003
【図２】
2020131618.tif 000004
【図３】
2020131618.tif 000005
【図４】
2020131618.tif 000006
【図５】
2020131618.tif 000007
【図６】
2020131618.tif 000008
【図７】
2020131618.tif 000009
【図８】
2020131618.tif 000010