(57)【要約】【課題】  異なるＰＤＬから作成される複数個の画像データを１ページの印刷媒体にインデックス印刷すること。【解決手段】  プリンタ１０は、複数種類のＰＤＬで記述されたデータファイル１５０〜１６４のそれぞれについて、以下の処理を実行する。（１）データファイルの先頭ページのＰＤＬデータについて、当該ＰＤＬデータに対応する１個の画像データが配置されるべき印刷媒体１２０上の位置を特定する。（２）データファイルの先頭ページのＰＤＬデータから中間言語で記述された中間言語データを作成する。（３）中間言語データから１個の画像データを作成し、当該画像データをバンドメモリ４２に書き込む。画像データは、元のＰＤＬデータについて特定された位置に対応するメモリ内位置に書き込まれる。（４）バンドメモリ４２の記憶内容に従って複数個の画像データを１ページの印刷媒体１２０に印刷する。【選択図】  図６
2009241524.tif 000002
【特許請求の範囲】
【請求項１】
ページ記述言語で記述されたＰＤＬデータからビットマップ形式の１個の画像データを作成することが可能であるとともに、複数個の画像データを１ページの出力画像として出力することが可能である画像出力装置であり、
異なる種類のページ記述言語で記述されたデータファイル群を入力するデータファイル入力手段と、
データファイル入力手段に入力されたデータファイル毎に、当該データファイルを構成する少なくとも１ページのＰＤＬデータについて、当該ＰＤＬデータに対応する１個の画像データが配置されるべき出力画像内位置を特定する位置特定手段と、
データファイル入力手段に入力されたデータファイル毎に、当該データファイルを構成する少なくとも１ページのＰＤＬデータについて、当該ＰＤＬデータから中間言語で記述された中間言語データを作成する中間言語データ作成手段と、
画像データを記憶するためのメモリと、
中間言語データ作成手段によって作成された中間言語データ毎に、当該中間言語データから１個の画像データを作成し、当該画像データの元のＰＤＬデータについて特定された出力画像内位置に対応するメモリ内位置に当該画像データを書き込む画像データ作成手段と、
前記メモリの記憶内容に従って複数個の画像データを１ページの出力画像として出力する画像データ出力手段と
を備える画像出力装置。
【請求項２】
中間言語データ作成手段と画像データ作成手段は、１つのＰＤＬデータを単位として、当該ＰＤＬデータから中間言語データを作成し、当該中間言語データから１個の画像データを作成し、当該ＰＤＬデータについて特定された出力画像内位置に対応するメモリ内位置に当該画像データを書き込み、当該中間言語データを削除するという処理を実行する
ことを特徴とする請求項１に記載の画像出力装置。
【請求項３】
画像データ作成手段は、１ページの出力画像に対応する全ての中間言語データが作成される前に、前記データファイル群のいずれかのデータファイルを構成する１つのＰＤＬデータから中間言語データが作成されたことを条件として、当該中間言語データから１個の画像データを作成し、当該ＰＤＬデータについて特定された出力画像内位置に対応するメモリ内位置に当該画像データを書き込むことを開始する
ことを特徴とする請求項１又は２のいずれかに記載の画像出力装置。
【請求項４】
中間言語データ作成手段は、１ページの出力画像として出力されるべき画像データの個数と同数である複数の第１処理を並列的に実行し、
前記複数の第１処理のそれぞれは、異なる１個の画像データの元の１つのＰＤＬデータから中間言語データを作成する処理である
ことを特徴とする請求項１から３のいずれかに記載の画像出力装置。
【請求項５】
前記メモリは、少なくとも１ページの出力画像に対応する画像データを記憶することが可能であるページメモリであり、
画像データ作成手段は、１ページの出力画像として出力されるべき画像データの個数と同数である複数の第２処理を並列的に実行し、
前記複数の第２処理のそれぞれは、異なる１つの第１処理で作成された中間言語データから１個の画像データを作成し、当該画像データの元の１つのＰＤＬデータについて特定された出力画像内位置に対応するメモリ内位置に当該画像データを書き込み、当該中間言語データを削除する処理である
ことを特徴とする請求項４に記載の画像出力装置。
【請求項６】
中間言語データ作成手段と画像データ作成手段は、１ページの出力画像として出力されるべき画像データの個数と同数である複数の処理スレッドを並列的に実行し、
前記複数の処理スレッドのそれぞれは、前記第１処理と前記第２処理を実行する
ことを特徴とする請求項５に記載の画像出力装置。
【請求項７】
Ｍ行及びＮ列のマトリクス状に配置されている複数個の画像データを１ページの出力画像として出力する請求項１から３のいずれかに記載の画像出力装置であり、
前記Ｎが２以上の整数である場合に、中間言語データ作成手段は、前記Ｎ個の第１処理を並列的に実行し、
前記Ｎ個の第１処理のそれぞれは、同じ行に配置されるべき前記Ｎ個の画像データの中の異なる１個の画像データの元となる１つのＰＤＬデータから中間言語データを作成する処理である
ことを特徴とする画像出力装置。
【請求項８】
前記Ｍが２以上の整数である場合に、前記Ｎ個の第１処理のそれぞれは、
（１）第１行に配置されるべき画像データの元となる１つのＰＤＬデータから中間言語データを作成し、
（２）前記第１行の次の第２行に配置されるべき画像データの元となる１つのＰＤＬデータから中間言語データを作成し、
（３）前記第２行がＭ行であるか否かを判断する
ものであって、前記（３）の判断が肯定される場合、前記第１処理を終了し、前記（３）の判断が否定される場合、前記（３）における第２行を前記第１行として、前記（２）の処理を実行する
ことを特徴とする請求項７に記載の画像出力装置。
【請求項９】
前記メモリは、少なくとも１バンドの出力画像に対応する画像データを記憶することが可能であるバンドメモリであり、
画像データ作成手段は、前記Ｎ個の第２処理を並列的に実行し、
前記Ｎ個の第２処理のそれぞれは、異なる１つの第１処理で作成された中間言語データから１個の画像データを作成し、当該画像データの元となる１つのＰＤＬデータについて特定された出力画像内位置に対応するメモリ内位置に当該画像データを書き込み、当該中間言語データを削除する処理である
ことを特徴とする請求項７又は８に記載の画像出力装置。
【請求項１０】
中間言語データ作成手段と画像データ作成手段は、前記Ｎ個の処理スレッドを並列的に実行し、
前記Ｎ個の処理スレッドのそれぞれは、前記第１処理と前記第２処理を実行する
ことを特徴とする請求項９に記載の画像出力装置。
【請求項１１】
ページ記述言語で記述された１つのＰＤＬデータからビットマップ形式の１個の画像データを作成することが可能であり、複数個の画像データを１ページの出力画像として出力することが可能であり、画像データを記憶するためのメモリを備えている画像出力装置に搭載されるコンピュータに、以下の各処理、即ち、
異なる種類のページ記述言語で記述されたデータファイル群を入力するデータファイル入力処理と、
データファイル入力処理で入力されたデータファイル毎に、当該データファイルを構成する少なくとも１ページのＰＤＬデータについて、当該ＰＤＬデータに対応する１個の画像データが配置されるべき出力画像内位置を特定する位置特定処理と、
データファイル入力処理で入力されたデータファイル毎に、当該データファイルを構成する少なくとも１ページのＰＤＬデータについて、当該ＰＤＬデータから中間言語で記述された中間言語データを作成する中間言語データ作成処理と、
中間言語データ作成処理で作成された中間言語データ毎に、当該中間言語データから１個の画像データを作成し、当該画像データの元のＰＤＬデータについて特定された出力画像内位置に対応するメモリ内位置に当該画像データを書き込む画像データ作成処理と、
前記メモリの記憶内容に従って複数個の画像データを１ページの出力画像として出力する画像データ出力処理と
を実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数個の画像データを１ページの出力画像として出力することが可能である画像出力装置に関する。
【背景技術】
【０００２】
下記の特許文献１に開示されているように、多くのプリンタは、ページ記述言語で記述されたデータからビットマップ形式の画像データを作成する。画像データは、ページメモリ又はバンドメモリに書き込み、ページメモリ又はバンドメモリの記憶内容に従って、画像データを印刷媒体に印刷する。なお、以下では、ページ記述言語のことを「ＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）」と呼ぶことがある。
【０００３】
また、複数個の画像データを１ページの印刷媒体に印刷する技術（いわゆるインデックス印刷）が知られている。例えば、下記の特許文献２には、インデックス印刷について開示されている。
【０００４】
【特許文献１】特開２００６−８５５５１号公報
【特許文献２】特開２００７−２６４１５５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
近年、例えば、ＰＤＦ（Ｐｏｒｔａｂｌｅ  ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）、ＰＳ（ＰｏｓｔＳｃｒｉｐｔ）等の複数のＰＤＬが存在する。従来のプリンタは、複数種類のＰＤＬのそれぞれについて、当該ＰＤＬで記述されたデータから画像データを作成してメモリに書き込むためのモジュール（プログラム）を有している。これらの各モジュールは、独立したモジュールであり、排他的なメモリ書き込み処理を実行する。即ち、一方のモジュールに従って画像データを作成してメモリ（ページメモリやバンドメモリ）に書き込む処理が実行されている場合、他方のモジュールに従って画像データを作成して上記のメモリに書き込むことができない。従って、異なるＰＤＬから作成される複数個の画像データが書き込まれているページメモリやバンドメモリを作成することはできない。このことは、異なるＰＤＬから作成される複数個の画像データを、１ページの出力画像としてインデックス印刷することができないことを意味している。同じＰＤＬから作成される複数個の画像データをインデックス印刷する技術は存在するが、異なるＰＤＬから作成される複数個の画像データを１ページ上にインデックス印刷する技術は実現されていないものと思われる。
【０００６】
本明細書によって開示される技術は、異なるＰＤＬから作成される複数個の画像データを１ページの出力画像として出力することを実現する。
【課題を解決するための手段】
【０００７】
本明細書によって開示される画像出力装置は、ページ記述言語で記述されたＰＤＬデータからビットマップ形式の１個の画像データを作成することが可能であるとともに、複数個の画像データを１ページの出力画像として出力することが可能である。本明細書で使用する「ページ記述言語」という用語は、ページという概念を利用してデータを記述するためのあらゆる言語を含む概念である。上述したように、ページ記述言語の例として、ＰＤＦ、ＰＳ等を挙げることができる。また、ワープロソフト、表計算ソフト、描画ソフト等で利用されている言語の中でページという概念を利用してデータを記述する言語も、ページ記述言語と呼ぶことができる。なお、「１ページの出力画像として出力する」という用語は、最も広義に解釈されるべきものであり、１ページの印刷媒体に印刷するということのみならず、１つの表示画面に表示することも含む概念である。後者の例の場合、「１ページ」という単位は、１つの表示画面を意味するものであってもよいし、１つのウィンドウを意味するものであってもよい。
【０００８】
画像出力装置は、データファイル入力手段と、位置特定手段と、中間言語データ作成手段と、メモリと、画像データ作成手段と、画像データ出力手段とを備える。データファイル入力手段は、異なる種類のページ記述言語で記述されたデータファイル群を入力する。例えば、データファイル群が他のデバイスから送信される場合、データファイル入力手段は、他のデバイス（パーソナルコンピュータ、サーバ、ポータブルメモリ等）から送信されたデータファイル群を入力してもよい。
【０００９】
位置特定手段は、データファイル入力手段に入力されたデータファイル毎に、当該データファイルを構成する少なくとも１ページのＰＤＬデータについて、当該ＰＤＬデータに対応する１個の画像データが配置されるべき出力画像内位置を特定する。位置特定手段は、各画像データが配置されるべき絶対的位置を特定してもよい。例えば、位置特定手段は、第１画像データに対応する１ページのＰＤＬデータについて座標Ａを特定し、第２画像データに対応する１ページのＰＤＬデータについて座標Ｂを特定してもよい。なお、この場合、例えば、画像データが四角形状を有する場合、出力画像内位置は、対角に存在する２つの頂点の座標によって表現されてもよいし、１つの頂点の座標と画像データの横方向及び縦方向のサイズによって表現されてもよい。また、画像データの横方向及び縦方向のサイズが決まっている場合には、出力画像内位置は、画像データの１つの座標（例えば１つの頂点の座標や画像データの中心の座標）のみによって表現されてもよい。一方において、位置特定手段は、各画像データが配置されるべき相対的な位置関係を特定してもよい。例えば、位置特定手段は、第１画像データに対応する１ページのＰＤＬデータについて座標Ａが特定された場合、第２画像データに対応する１ページのＰＤＬデータについて座標Ａを基準とする位置関係を特定してもよい（例えば座標ＡからプラスＸ方向に所定距離の位置等）。
【００１０】
中間言語データ作成手段は、データファイル入力手段に入力されたデータファイル毎に、当該データファイルを構成する少なくとも１ページのＰＤＬデータについて、当該ＰＤＬデータから中間言語で記述された中間言語データを作成する。例えば、中間言語データ作成手段は、第１ＰＤＬで記述されたデータファイルを構成する少なくとも１ページのＰＤＬデータから中間言語で記述された中間言語データを作成し、第２ＰＤＬで記述されたデータファイルを構成する少なくとも１ページのＰＤＬデータから同じ中間言語で記述された中間言語データを作成する。なお、中間言語は、例えば、ベクタ形式のデータであってもよい。この場合、第１ＰＤＬがベクタ形式のデータである場合、第１ＰＤＬのベクタ形式のデータから中間言語のベクタ形式のデータが作成されてもよい。また、第２ＰＤＬがビットマップ形式のデータである場合、第２ＰＤＬのビットマップ形式のデータから中間言語のベクタ形式のデータが作成されてもよい。
【００１１】
メモリは、画像データを記憶するために利用される。メモリは、ページメモリであってもよいし、バンドメモリであってもよい。画像データ作成手段は、中間言語データ作成手段によって作成された中間言語データ毎に、当該中間言語データから１個の画像データを作成し、当該画像データの元のＰＤＬデータについて特定された出力画像内位置に対応するメモリ内位置に当該画像データを書き込む。画像データ出力手段は、上記のメモリの記憶内容に従って複数個の画像データを１ページの出力画像として出力する。
【００１２】
上記の構成によると、異なるＰＤＬで記述されたデータファイル群を同じ中間言語に変換することができる。このために、複数種類のＰＤＬにおいて、中間言語データから画像データを作成してメモリに書き込むためのモジュール（プログラム）を共通化することができる。共通のモジュールに従って各ＰＤＬから作成される画像データをメモリに書き込むことが可能であり、各ＰＤＬについて排他的なメモリ書き込み処理が行なわれない。異なるＰＤＬから作成される複数個の画像データを同じメモリに書き込むことができる。このために、異なるＰＤＬから作成される複数個の画像データを１ページの出力画像として出力することができる。
【００１３】
中間言語データ作成手段と画像データ作成手段は、中間言語データを作成し、その中間言語データから画像データを作成してメモリに書き込むという処理を実行する。この処理を実行するための単位は、特に限定されない。例えば、１ページの出力画像を単位とした場合、中間言語データ作成手段と画像データ作成手段は、１ページの出力画像に配置されるべき複数個の画像データの元となる全てのＰＤＬデータから中間言語データを作成し、その後に画像データを作成してメモリに書き込むことを開始することになる。しかしながら、この手法では、１ページの出力画像に対応する全ての中間言語データを記憶するための大容量のメモリが必要になる。少ないメモリ容量で処理を実行するために、１ページの出力画像に対応する全ての中間言語データが作成される前に、作成済の中間言語データから画像データを作成し、その中間言語データを削除し、その画像データを圧縮して記憶しておく技術を採用することもできる。しかしながら、この手法でも、１ページの出力画像に対応する全ての中間言語データが作成されるまで、圧縮データを記憶しておく必要がある。より少ないメモリ容量で処理を実行するために、以下の構成を採用してもよい。
【００１４】
即ち、中間言語データ作成手段と画像データ作成手段は、１つのＰＤＬデータを単位として（即ち作成されるべき１個の画像データを単位として）、当該ＰＤＬデータから中間言語データを作成し、当該中間言語データから１個の画像データを作成し、当該ＰＤＬデータについて特定された出力画像内位置に対応するメモリ内位置に当該画像データを書き込み、当該中間言語データを削除するという処理を実行してもよい。上述したように、１ページの出力画像を単位とした場合、１ページの出力画像に対応する全ての中間言語データ（もしくは圧縮データ）を記憶するための大容量のメモリが必要になる。これに対し、本技術によると、１つのＰＤＬデータを単位として処理を実行するために、１ページの出力画像に対応する全ての中間言語データが作成されるのを待たなくても、中間言語データから画像データに変換してメモリに書き込むとともにその中間言語データ、及び画像データを削除することができる。このために、少ないメモリ容量で処理を実行することができる。
【００１５】
１つのＰＤＬデータを単位として処理を実行するという上記の技術は、以下のように表現することもできる。即ち、画像データ作成手段は、１ページの出力画像に対応する全ての中間言語データが作成される前に、上記のデータファイル群のいずれかのデータファイルを構成する１つのＰＤＬデータから中間言語データが作成されたことを条件として、当該中間言語データから１個の画像データを作成し、当該ＰＤＬデータについて特定された出力画像内位置に対応するメモリ内位置に当該画像データを書き込むことを開始してもよい。この構成によると、画像データ作成手段は、１ページの出力画像に対応する全ての中間言語データが作成される前に、作成済の中間言語データから画像データに変換し、その画像データをページメモリやバンドメモリに書き込むことができる。この場合、画像データに変換されてメモリに書き込まれた作成済の中間言語データ、及び画像データを削除することができ、少ないメモリ容量で処理を実行することができる。
【００１６】
なお、上記の技術において、１つのＰＤＬデータについて上記の処理を実行し、その後に次の１つのＰＤＬデータについて上記の処理を実行してもよい。即ち、上記の処理を実行するための処理スレッドを１つのみ立ち上げてもよい。しかしながら、より効率的に処理を実行するために、複数の処理を並列的に実行してもよい。複数の処理を並列的に実行するためのいくつかの例を以下に記載しておく。
【００１７】
中間言語データ作成手段は、１ページの出力画像として出力されるべき画像データの個数と同数である複数の第１処理を並列的に実行してもよい。なお、「並列的に実行する」という用語は、同時的に実行することのみを意味するものではなく、複数の処理スレッドが並列的に起動されていること（処理自体は同時に行なわれていない場合）を含む概念である。上記の複数の第１処理のそれぞれは、異なる１個の画像データの元となる１つのＰＤＬデータから中間言語データを作成する処理である。この構成は、以下のようにページメモリを利用する場合に有効である。
【００１８】
即ち、上記のメモリは、少なくとも１ページの出力画像に対応する画像データを記憶することが可能であるページメモリであってもよい。画像データ作成手段は、１ページの出力画像として出力されるべき画像データの個数と同数である複数の第２処理を並列的に実行してもよい。この場合、複数の第２処理のそれぞれは、異なる１つの第１処理で作成された中間言語データから１個の画像データを作成し、当該画像データの元のＰＤＬデータについて特定された出力画像内位置に対応するメモリ内位置に当該画像データを書き込み、当該中間言語データ、及び画像データを削除する。この構成によると、１つのＰＤＬデータを単位として、中間言語データを作成し、その中間言語データから画像データを作成してページメモリに書き込むという処理を実行することができる。
【００１９】
なお、１つの第１処理と１つの第２処理は、１つの処理スレッドによって実行されてもよい。即ち、１つの処理スレッドにおいて、中間言語データを作成する処理（第１処理）と、その中間言語データから画像データを作成してページメモリに書き込む処理（第２処理）とが実行されてもよい。この場合、複数の処理スレッドを並列的に実行することは、複数の第１処理を並列的に実行するとともに複数の第２処理を並列的に実行することに等しい。即ち、中間言語データ作成手段と画像データ作成手段は、１ページの出力画像として出力されるべき画像データの個数と同数である複数の処理スレッド（第１処理と第２処理を実行するための処理スレッド）を並列的に実行してもよい。
【００２０】
上記の画像出力装置は、Ｍ行及びＮ列のマトリクス状に配置されている複数個の画像データを１ページの出力画像として出力するものであってもよい。なお、行は横の並びであり、列は縦の並びである。例えば、画像出力装置が画像データを印刷する場合、「横」は印刷媒体の送り方向に直交する方向であり、「縦」は印刷媒体の送り方向である。また、例えば、画像出力装置が画像データを表示する場合、「横」は表示画面の横方向であり、「縦」は表示画面の縦方向である。上記のＭは、１であってもよいし（この場合はＮが２以上の整数になる）、２以上の整数であってもよい。また、上記のＮは、１であってもよいし（この場合はＭが２以上の整数になる）、２以上の整数であってもよい。一方において、このように整列されていない複数個の画像データを１ページの出力画像として出力してもよい。例えば、円周に沿って並んでいる複数個の画像データを出力してもよいし、出力画像の中で斜め方向に沿って一列に並んでいる複数個の画像データを出力してもよい。
【００２１】
また、上記のＮが２以上の整数である場合に、中間言語データ作成手段は、Ｎ個の第１処理を並列的に実行してもよい。この場合、Ｎ個の第１処理のそれぞれは、同じ行に配置されるべきＮ個の画像データの中の異なる１個の画像データの元となる１つのＰＤＬデータから中間言語データを作成する処理である。なお、この場合、上記のＭが２以上の整数である場合に、Ｎ個の第１処理のそれぞれでは、以下の処理が実行されてもよい。
（１）第１行に配置されるべき画像データの元となる１つのＰＤＬデータから中間言語データを作成する。
（２）第１行の次の第２行に配置されるべき画像データの元となる１つのＰＤＬデータから中間言語データを作成する。
（３）第２行がＭ行であるか否かを判断する
ものであって、上記の（３）の判断が肯定される場合、第１処理を終了し、上記の（３）の判断が否定される場合、上記の（３）における第２行を前記第１行として、上記の（２）の処理を実行する。
この構成は、以下のようにバンドメモリを利用する場合に有効である。
【００２２】
即ち、上記のメモリは、少なくとも１バンドの出力画像に対応する画像データを記憶することが可能であるバンドメモリであってもよい。画像データ作成手段は、Ｎ個の第２処理を並列的に実行してもよい。この場合、Ｎ個の第２処理のそれぞれは、異なる１つの第１処理で作成された中間言語データから１個の画像データを作成し、当該画像データの元の１ページのＰＤＬデータについて特定された出力画像内位置に対応するメモリ内位置に当該画像データを書き込み、当該中間言語データ、及び画像データを削除する。この構成によると、１つのＰＤＬデータを単位として、中間言語データを作成し、その中間言語データから画像データを作成してバンドメモリに書き込むという処理を実行することができる。なお、この場合、Ｎ個の処理スレッド（第１処理と第２処理を実行するための処理スレッド）を並列的に実行することは、Ｎ個の第１処理を並列的に実行するとともにＮ個の第２処理を並列的に実行することに等しい。
【００２３】
なお、上記の画像出力装置を実現するためのコンピュータプログラムも有用である。このコンピュータプログラムは、画像データを記憶するためのメモリを備えている画像出力装置に搭載されるコンピュータに以下の各処理を実行させる。
（１）異なる種類のページ記述言語で記述されたデータファイル群を入力するデータファイル入力処理。
（２）データファイル入力処理で入力されたデータファイル毎に、当該データファイルを構成する少なくとも１ページのＰＤＬデータについて、当該ＰＤＬデータに対応する１個の画像データが配置されるべき出力画像内位置を特定する位置特定処理。
（３）データファイル入力処理で入力されたデータファイル毎に、当該データファイルを構成する少なくとも１ページのＰＤＬデータについて、当該ＰＤＬデータから中間言語で記述された中間言語データを作成する中間言語データ作成処理。
（４）中間言語データ作成処理で作成された中間言語データ毎に、当該中間言語データから１個の画像データを作成し、当該画像データの元のＰＤＬデータについて特定された出力画像内位置に対応するメモリ内位置に当該画像データを書き込む画像データ作成処理。
（５）上記のメモリの記憶内容に従って複数個の画像データを１ページの出力画像として出力する画像データ出力処理。
このコンピュータプログラムを利用すると、異なるＰＤＬから作成される複数個の画像データを１ページの出力画像として出力することができる画像出力装置を実現することができる。
【発明を実施するための最良の形態】
【００２４】
ここでは、以下の実施例に記載の技術の特徴の一部をまとめておく。
（形態１）位置特定手段は、データファイル入力手段に入力されたデータファイル毎に、当該データファイルを構成する先頭ページのＰＤＬデータに対応する１個の画像データが配置されるべき出力画像内位置を特定してもよい。この場合、中間言語データ作成手段は、データファイル入力手段に入力されたデータファイル毎に、当該データファイルを構成する先頭ページのみのＰＤＬデータから中間言語で記述された中間言語データを作成してもよい。この構成によると、各データファイルの先頭ページから作成される複数個の画像データを１ページの出力画像として出力することができる。
【００２５】
（形態２）位置特定手段は、１ページの出力画像として出力されるべき画像データの個数に基づいて、各ＰＤＬデータについて出力画像内位置を特定してもよい。位置特定手段は、１ページの出力画像のサイズに基づいて、各ＰＤＬデータについて出力画像内位置を特定してもよい。位置特定手段は、Ｍ行及びＮ列のマトリクス状に配置されている複数個の画像データを１ページの出力画像として出力するべき場合に、ＭとＮに基づいて、各ＰＤＬデータについて出力画像内位置を特定してもよい。ＭとＮは、ユーザによって指定されてもよい。
【００２６】
（形態３）プリンタは、複数個の画像データを１ページの印刷媒体に印刷することができる。プリンタは、バンド単位で画像データを作成する。「バンド」は、１ページより小さい単位である。即ち、１ページは、複数のバンドの集合である。プリンタは、印刷媒体の一方の端辺から他方の端辺に向かって順に印刷する。この場合、プリンタは、（１）印刷媒体の上記の一方の短辺から所定幅を有するバンドに印刷されるべき画像データを記憶しているバンドメモリを作成し、（２）上記の所定幅を有する次のバンドに印刷されるべき画像データを記憶しているバンドメモリを作成し、（３）上記の他方の端辺を含む上記の所定幅を有するバンドに印刷されるべき画像データを記憶しているバンドメモリを作成するまで上記の（２）を繰り返す。
【実施例】
【００２７】
（第１実施例）
図面を参照して実施例を説明する。図１は、本実施例のプリンタネットワークシステム２を示す。プリンタネットワークシステム２は、プリンタ１０とポータブルメモリ（いわゆるリムーバブルメモリ）６０とＰＣ７０とを備える。ポータブルメモリ６０は、プリンタ１０のＵＳＢインターフェイス１２に接続されている。ポータブルメモリ６０は、複数種類のＰＤＬで記述されたデータファイル群（図示省略）を記憶している。即ち、ポータブルメモリ６０は、第１種類のＰＤＬで記述された第１データファイルと、第２種類のＰＤＬで記述された第２データファイルとを少なくとも記憶している。プリンタ１０とＰＣ７０は、ＬＡＮ回線を介して相互に通信可能である。ＰＣ７０は、データファイル群（図示省略）を記憶している。ＰＣ７０は、ユーザの操作に応じて、データファイルを印刷するようにプリンタ１０に指示することができる。この場合、ＰＣ７０は、ユーザの指示に応じてデータファイルをＰＤＬに変換し、ＰＤＬで記述されたデータファイルをプリンタ１０に送信する。
【００２８】
（プリンタの構成）
図１では、プリンタ１０の構成を簡単に示している。プリンタ１０は、ＵＳＢインターフェイス１２と、ネットワークインターフェイス１４と、制御部１６と、プログラム記憶領域１８と、操作部２６と、表示部２８と、メモリ４０と、印刷機構４６等を有する。ＵＳＢインターフェイス１２には、ポータブルメモリ６０が接続されている。ポータブルメモリ６０に記憶されているデータファイル群は、ＵＳＢインターフェイス１２に入力される。ネットワークインターフェイス１４には、ＬＡＮ回線が接続されている。ＬＡＮ回線は、ＰＣ７０に接続されている。プリンタ１０は、ネットワークインターフェイス１４を介してＰＣ７０と通信することができる。
【００２９】
制御部１６は、プログラム記憶領域１８に記憶されているプログラムに従って様々な処理を実行する。制御部１６が実行する処理の内容については、後で詳しく説明する。プログラム記憶領域１８は、中間言語データ作成プログラム２０と、画像データ作成プログラム２２と、その他のプログラム２４とを記憶している。
【００３０】
中間言語データ作成プログラム２０は、ＰＤＬで記述されたデータ（以下では「ＰＤＬデータ」と呼ぶことがある）を中間言語で記述されたデータ（以下では「中間言語データ」と呼ぶことがある）に変換するためのプログラムである。中間言語データ作成プログラム２０は、複数種類のＰＤＬのそれぞれに対応するプログラムを含んでいる。例えば、中間言語データ作成プログラム２０は、ＰＤＦで記述されたＰＤＬデータを中間言語データに変換するためのプログラムと、ＰＳで記述されたＰＤＬデータを中間言語データに変換するためのプログラムとを記憶している。
【００３１】
ＰＤＬデータから中間言語データを介してビットマップデータを作成する手法（以下では「前者の手法」と呼ぶ）は、ＰＤＬデータから直接的にビットマップデータを作成する手法（以下では「後者の手法」と呼ぶ）と比べて、以下の点において効果的である。多くのＰＤＬは、同じタイプのデータを記述することができる。例えば、多くのＰＤＬは、線型グラデーションやテキストを記述することができる。第１ＰＤＬと第２ＰＤＬのそれぞれによって同じ線型グラデーション（例えば左から右に向かって赤色から青色に変わっていくグラデーション）が記述されている場合を例として説明する。
【００３２】
上記の例の場合、後者の手法を採用するためには、第１ＰＤＬのフォーマットで記述された線型グラデーションのベクタデータからビットマップデータを作成するためのプログラムと、第２ＰＤＬのフォーマットで記述された線型グラデーションのベクタデータからビットマップデータを作成するためのプログラムとが必要になる。
【００３３】
これに対し、前者の手法を採用すると、第１ＰＤＬの線型グラデーションのベクタデータから中間言語データ（ベクタデータ）が作成され、第２ＰＤＬの線型グラデーションのベクタデータから中間言語データが作成される。この場合、同じ中間言語データが作成される。そうすると、この中間言語データをビットマップデータに変換するためのプログラムがあれば、第１ＰＤＬと第２ＰＤＬのどちらで記述された線型グラデーションであっても、ビットマップデータを作成することができる。即ち、前者の手法を採用するためには、第１ＰＤＬの線型グラデーションのベクタデータから中間言語データを作成するための第１プログラムと、第２ＰＤＬの線型グラデーションのベクタデータから中間言語データを作成するための第２プログラムと、その中間言語データからビットマップデータを作成するための第３プログラムとが必要になる。即ち、第１ＰＤＬと第２ＰＤＬを処理するためのプログラムにおいて、線型グラデーションのベクタデータからビットマップデータを作成するための第３プログラム（図１の例では画像データ作成プログラム２２）を共通化することができる。確かに、後者の手法と比べると、上記の第１プログラムと第２プログラムが新たに必要になる。しかしながら、ベクタデータ（ＰＤＬ）をベクタデータ（中間言語）に変換するためのプログラムは、それほど大きなプログラム量を必要としない。ベクタデータをビットマップデータに変換するためのプログラムの方が大きなプログラム量を要する。第１プログラムと第２プログラムが新たに必要にはなるが、第３プログラムを共通化することができるために、全体のプログラム量は後者の手法よりも少なくて済む。
【００３４】
画像データ作成プログラム２２は、中間言語データをビットマップ形式の画像データ（本実施例では２階調のビットマップデータ）に変換するためのプログラムである。本実施例では、中間言語データから直接的に２階調のビットマップデータを作成する。しかしながら、本実施例の技術は、中間言語データから多諧調（例えば２５６階調）のビットマップデータに変換し、そのビットマップデータから２階調のビットマップデータに変換する場合にも利用することができる。プログラム２４は、プリンタ１０の各デバイスを制御するための他の様々なプログラムである。例えば、プログラム２４は、ＰＣ７０と通信するためのプログラム（プロトコル）、表示部２８の表示内容を制御するためのプログラム、印刷機構４６の駆動を制御するためのプログラム等を記憶している。
【００３５】
操作部２６は、複数のキーを有する。ユーザは、操作部２６を操作することによって様々な指示をプリンタ１０に入力することができる。例えば、ユーザは、操作部２６を操作することによってポータブルメモリ６０に記憶されているデータファイル群をインデックス印刷するようにプリンタ１０に指示することができる。表示部２８は、様々な情報を表示することができる。
【００３６】
メモリ４０は、バンドメモリ４２とその他の記憶領域４４を有する。バンドメモリ４２は、少なくとも１バンド分の画像データ（２階調のビットマップデータ）を記憶するためのメモリである。記憶領域４４は、制御部１６が処理を実行する過程で生成される種々のデータを記憶するために利用される。
【００３７】
「バンド」について簡単に説明しておく。ＰＣ７０等から印刷するように指示された全てのＰＤＬデータに対応する画像データを作成し、その後に印刷を開始するという手法が考えられる。しかしながら、この場合、全てのＰＤＬデータに対応する画像データを記憶するための大容量のメモリが必要になる。本実施例のプリンタ１０は、画像データを記憶するためのメモリ容量を圧縮するために、「バンド」という概念を用いて画像データを少しずつ作成して順に印刷する手法を採用する。印刷媒体の送り方向に沿って印刷媒体を複数のバンドに分割することができる。本実施例では、１つのバンドのバンド幅は、例えば、インクジェットヘッドが１回の走査によって印刷することが可能である範囲（１ページより少ない範囲）に基づいて設定される。
【００３８】
詳しくは後述するが、本実施例では、制御部１６は、まず、先頭の１バンド分の画像データを作成してバンドメモリ４２に書き込む。制御部１６は、バンドメモリ４２の記憶内容に従って１バンド分の画像データを印刷し、その後にバンドメモリの記憶内容を削除する。制御部１６は、これらの処理をバンド単位で繰り返す。例えば、制御部１６は、１バンド分の画像データを作成し、それを印刷し終えてからバンドメモリを削除し、その後に次のバンドの画像データを作成してもよい。この場合、バンドメモリ４２は、１バンド分のメモリサイズを有していれば足りる。しかしながら、本実施例では、制御部１６は、１バンド分の画像データを印刷している間に、次のバンドの画像データを作成することを開始する。これにより、高速で印刷することを実現している。この処理を実行する場合、バンドメモリ４２は、少なくとも２バンド分のメモリサイズを有している必要がある。１バンド分の画像データを削除する前に、次のバンドの画像データを作成することを開始するからである。
【００３９】
印刷機構４６は、印刷媒体を搬送する機構と、印刷媒体に印刷する機構（例えばインクジェットタイプやレーザータイプの画像形成機構）とを有する。印刷機構４６は、バンドメモリ４２の記憶内容に従って印刷媒体に印刷する。
【００４０】
（制御部の構成）
続いて、制御部１６の構成を図２を用いて詳しく説明する。制御部１６は、印刷制御部８０を有する。印刷制御部８０は、インデックス出力判断部８２と、インデックス出力制御部８４と、ＰＤＬ種類特定部８６と、ＰＤＬ実行制御部８８と、中間言語データ制御部１００とを有する。インデックス出力判断部８２は、プリンタ１０に入力された印刷指示がインデックス出力を指示するものであるのか否かを判断する。インデックス出力制御部８４は、インデックス出力されるべき各画像データの位置や大きさ等を制御する。インデックス出力制御部８４は、プリンタ１０に入力された各データファイルの先頭ページのみを中間言語データに変換するようにＰＤＬ実行制御部８８に指示することもできる。ＰＤＬ種類特定部８６は、プリンタ１０に入力された各データファイルを記述しているＰＤＬの種類を特定する。ＰＤＬ実行制御部８８は、ＰＤＬ種類特定部８６によって特定された種類に対応するプログラムに従って処理を実行するように指示する。この結果、例えば、第１種類のＰＤＬ（例えばＰＤＦ）から中間言語データ９２を作成する中間言語データ作成部９０と、第２種類のＰＤＬデータ（例えばＰＳ）から中間言語データ９６を作成する中間言語データ作成部９４とが実現される。中間言語データ制御部１００は、中間言語データ９２，９６を管理し、後述の中間言語データ処理部１０２を起動する処理を実行する。
【００４１】
制御部１６は、中間言語データ処理部１０２と出力制御部１０４とを有する。中間言語データ処理部１０２は、中間言語データからビットマップ形式の画像データを作成する処理を実行する。中間言語データ処理部１０２によって作成された画像データは、バンドメモリ４２に書き込まれる。出力制御部１０４は、バンドメモリ４２の記憶内容に従って印刷機構４６の駆動制御を実行する。これにより、画像データが印刷媒体に印刷される。
【００４２】
（印刷処理）
続いて、制御部１６が実行する印刷処理の内容について説明する。制御部１６は、プログラム２０，２２，２４に従って印刷処理を実行する。図３及び図４は、印刷処理のフローチャートを示す。印刷処理は、ＰＣ７０からの印刷指示がネットワークインターフェイス１４に入力されたことをトリガとして開始される。また、印刷処理は、ポータブルメモリ６０がＵＳＢインターフェイス１２に接続され、印刷指示を示す操作が操作部２６で実行されたことをトリガとして開始される。
【００４３】
制御部１６は、インデックス印刷の印刷指示であるのか否かを判断する（Ｓ１０）。例えば、ＰＣ７０からの印刷指示にインデックス印刷を示すコマンドが含まれている場合、制御部１６は、Ｓ１０でＹＥＳと判断する。また、例えば、インデックス印刷に対応する操作が操作部２６で実行された場合も、制御部１６は、Ｓ１０でＹＥＳと判断する。なお、以下では、ＰＣ７０からの印刷指示に通常印刷を示すコマンドが含まれる場合を例として、Ｓ１０でＮＯの場合の処理（Ｓ１２以降の処理）を説明する。また、以下では、ポータブルメモリ６０がＵＳＢインターフェイス１２に接続され、インデックス印刷を示す操作が操作部２６で実行された場合を例として、Ｓ１０でＹＥＳの場合の処理（図４のＳ４０以降の処理）を説明する。
【００４４】
Ｓ１０でＮＯの場合、制御部１６は、ＰＣ７０から送信されたデータファイルを読み込む（Ｓ１２）。このデータファイルは、ＰＤＬ（例えばＰＤＦ）で記述されている。従って、データファイルでは、ページという概念を利用してデータが構成されている。制御部１６は、データファイルを記述しているＰＤＬの種類を特定する（Ｓ１４）。次いで、制御部１６は、Ｓ１４で特定された種類に対応するプログラム２０に従って、データファイルを構成する１ページ分のＰＤＬデータ（現段階では先頭ページのＰＤＬデータ）から中間言語データを作成する（Ｓ１６）。２回目以降のＳ１６の処理では、前回のＳ１６で処理が実行されたページの次のページのＰＤＬデータから中間言語データが作成される。データファイルを構成する全てのページについて処理が終了するまで、このルーチンが繰り返される。
【００４５】
続いて、制御部１６は、処理対象バンドＢＮとして「１」を特定する（Ｓ１８）。制御部１６は、処理対象バンド（現時点では「１」）に対応する中間言語データから画像データを作成する（Ｓ２０）。即ち、制御部１６は、処理対象バンドに含まれるべき画像データの元になる中間言語データから画像データを作成する。Ｓ２０の処理は、画像データ作成プログラム２２に従って実行される。制御部１６は、画像データをバンドメモリ４２に書き込む。これにより、１バンド分（現時点では先頭ページの先頭バンド）の画像データが完成する。制御部１６は、Ｓ２０を終えると、画像データに変換された中間言語データを削除する（Ｓ２２）。この時点では、先頭バンド以降のバンドに対応する中間言語データは削除されない。
【００４６】
次いで、制御部１６は、Ｓ２０で作成されたバンドメモリ４２の記憶内容に従って印刷することを開始する（Ｓ２４）。具体的には、制御部１６は、バンドメモリ４２の記憶内容に従って印刷機構４６の駆動制御を実行する。制御部１６は、印刷機構４６の駆動制御を開始すると、Ｓ２６に進む。Ｓ２６では、制御部１６は、処理対象バンドＢＮをインクリメントする。例えば、先頭バンド（ＢＮ＝１）についてＳ２０〜Ｓ２４の処理が実行された場合、処理対象バンドＢＮが「２」になる。次いで、制御部１６は、処理対象バンドＢＮが１ページの最終バンドを超えたのか否かを判断する（Ｓ２８）。例えば、１ページの最終バンドが「６」であり、処理対象バンドＢＮの値が「７」である場合、Ｓ２８でＹＥＳと判断される。
【００４７】
Ｓ２８でＮＯの場合、制御部１６は、Ｓ２０に戻って、次のバンドに対応する中間言語データから画像データを作成する。これにより、例えば先頭バンドの印刷が行なわれている間に第２バンドの画像データがバンドメモリ４２に記憶される。フローチャートには示されていないが、制御部１６は、１つのバンドの印刷が終了すると、そのバンドの画像データをバンドメモリ４２から削除し、次のバンドの画像データを印刷することを開始する。１ページの全てのバンドについてＳ２０〜Ｓ２８の処理が実行されると、１ページのＰＤＬデータから作成される画像データが１ページの印刷媒体に印刷される。
【００４８】
Ｓ２８でＹＥＳの場合、制御部１６は、データファイルを構成する全てのページについて印刷が終了したのか否かを判断する（Ｓ３０）。ここでＮＯの場合、制御部１６は、次の１ページについてＳ１６以降の処理を実行する。データファイルを構成する全てのページについて印刷が終了すると、印刷処理が終了する。
【００４９】
続いて、図４を参照しながら、Ｓ１０でＹＥＳの場合に実行される処理の内容について説明する。制御部１６は、インデックス印刷の対象のデータファイル数を特定する（Ｓ４０）。例えば、制御部１６は、ポータブルメモリ６０に記憶されている全てのデータファイルに基づいてインデックス印刷を実行することができる。この場合、Ｓ４０において、制御部１６は、ポータブルメモリ６０に記憶されているデータファイル数を特定する。また、例えば、制御部１６は、ポータブルメモリ６０に記憶されている１つのフォルダ（例えばユーザによって指定されたフォルダ）に格納されている全てのデータファイルに基づいてインデックス印刷を実行することができる。この場合、Ｓ４０において、制御部１６は、上記のフォルダに格納されているデータファイル数を特定する。
【００５０】
次いで、制御部１６は、インデックス印刷のフォーマットを特定する（Ｓ４２）。ユーザは、インデックス印刷を指示する際に、縦方向に並ぶべき画像データの数（Ｍ行）と、横方向に並ぶべき画像データの数（Ｎ列）と、印刷媒体のサイズ（例えばＡ４サイズ）とを指定することができる。制御部１６は、これらの数値を特定することによって、Ｓ４２の処理を実行する。続いて、制御部１６は、Ｓ４０で特定されたデータファイル数とＳ４２で特定された各数値（ＭとＮと印刷媒体サイズ）とに基づいて、各データファイルに対応する画像データの位置を決定する（Ｓ４４）。この処理の内容を次に詳しく説明する。
【００５１】
図６は、インデックス印刷が行なわれる１ページの印刷媒体１２０を示す。図６の例では、インデックス印刷の対象のデータファイル数が８個であり、ユーザが３行３列及びＡ４サイズを指定している。１個のデータファイルから１個の画像データが作成されて印刷媒体１２０に印刷される。図６の例では、８個のデータファイル１５０〜１６４に対応する８個の画像データが３行３列のマトリクス状に配置される。各画像データは、互いに距離を隔てて配置される。図６の例の場合、同じ行に配置されるべき３つの画像データ（例えば１５０，１５２，１５４）は等間隔に並んでいる。また、同じ列に配置されるべき３つの画像データ（例えば１５０，１５６，１６２）は等間隔に並んでいる。なお、上記の８個のデータファイル１５０〜１６４は、異なるＰＤＬで記述されている。例えば、データファイル１５０〜１５６はＰＤＦで記述されており、データファイル１５８〜１６４はＰＳで記述されている。
【００５２】
プログラム２４（図１参照）は、Ａ４サイズの３行３列のパターンについて、各画像データが配置されるべき座標を記憶している。制御部１６は、この記憶内容に従って、各データファイル１５０〜１６４から作成される画像データが配置されるべき座標を特定する。例えば、データファイル１５０について座標Ｃ１及びＣ２が特定される。本実施例では、四角形状の画像データの１つの対角線上に存在する２つの頂点の座標Ｃ１，Ｃ２を利用する手法を採用している。これにより、画像データの位置と大きさの両方を表現することができる。データファイル１５０の場合と同様に、制御部１６は、他のデータファイル１５２〜１６４のそれぞれについて座標を特定する。なお、プログラム２４は、Ａ４サイズの３行３列のパターンのみならず、他のパターン（例えばＢ４サイズの１０行５列のパターン等）についても、各画像データが配置されるべき座標を記憶している。制御部１６は、他のパターンについても、各データファイルから作成される画像データが配置されるべき座標を特定することができる。
【００５３】
次いで、制御部１６は、図４のＳ４２で特定された「Ｎ」と同じ数の処理スレッドを立ち上げる（Ｓ４６）。即ち、制御部１６は、横方向に並ぶべき画像データの数と同じ数の処理スレッドを立ち上げる。例えば、図６の例の場合、制御部１６は、３つの処理スレッドを立ち上げる。処理スレッドの内容について次に詳しく説明する。
【００５４】
図５は、１つの処理スレッドのフローチャートを示す。図４のＳ４６で立ち上げられた複数個の処理スレッドは並列的に実行される。複数個の処理スレッドのそれぞれでは、印刷媒体の最上行に配置されるべき異なる１個の画像データが作成される。例えば、図６の例の場合、３つの処理スレッドのそれぞれにおいて、最上行１８０に配置されるべき異なるデータファイル１５０，１５２，１５４から、それぞれ１個の画像データが作成される。次いで、３つの処理スレッドのそれぞれでは、２行目１８２に配置されるべき異なる１個の画像データが作成される。即ち、３つの処理スレッドのそれぞれにおいて、異なるデータファイル１５６，１５８，１６０から、それぞれ１個の画像データが作成される。この処理が、最下行（図６の例では３行目１８４）に配置されるべき画像データが作成されるまで繰り返される。
【００５５】
本実施例では、１つの処理スレッドが同じ列に配置されるべき複数の画像データを順に作成する手法を採用する。例えば、データファイル１５０から１個の画像データを作成する処理スレッドでは、データファイル１５６から１個の画像データを作成するとともに、データファイル１６２から１個の画像データを作成する。即ち、この処理スレッドは、最も左の行に配置されるべき３個の画像データを順に作成する。以下では、この処理スレッド（最も左の行に対応する処理スレッド）を例にして、図５のフローチャートの内容を説明する。なお、図６の例では、最も右の行に２個の画像データしか配置されない。このために、最も右の行に対応する処理スレッドでは、２個の画像データしか作成されない。
【００５６】
制御部１６は、最上行１８０に配置されるべき画像データの元になるデータファイル１５０の先頭ページのＰＤＬデータを読み込む（Ｓ７０）。次いで、制御部１６は、データファイル１５０を記述しているＰＤＬの種類を特定する（Ｓ７２）。続いて、制御部１６は、Ｓ７２で特定された種類に対応するプログラム２０に従って、データファイル１５０の先頭ページのＰＤＬデータから中間言語データを作成する（Ｓ７４）。  
【００５７】
次いで、制御部１６は、Ｓ７４で作成された中間言語データから１個の画像データを作成する（Ｓ７６）。Ｓ７６の処理は、画像データ作成プログラム２２に従って実行される。制御部１６は、画像データをバンドメモリ４２に書き込む。図７は、画像データがバンドメモリ４２に書き込まれる様子を説明するための図である。図７は、図６の例に従って作成されている。上述したように、バンドメモリ４２は、少なくとも２バンド分のメモリサイズを有している。図７では、１つのバンドの画像データを記憶するための領域を符号４２−１で示しており、他のバンドの画像データを記憶するための領域を符号４２−２で示している。なお、図７の例では、図６の印刷媒体１２０が３つのバンドに分けられているが、より多くのバンドに分けられていてもよい。
【００５８】
制御部１６は、データファイル１５０の先頭ページから作成された画像データ２５０をバンドメモリ４２−１に書き込む。この際に、制御部１６は、データファイル１５０について図４のＳ４４で特定された座標Ｃ１，Ｃ２に対応する位置に画像データ２５０を書き込む。図６と図７の例の場合、座標Ｃ１に対応する位置Ｄ１に画像データ２５０の左上の頂点が配置され、かつ、座標Ｃ２に対応する位置Ｄ２に画像データ２５０の右下の頂点が配置されるように、画像データ２５０がバンドメモリ４２−１に書き込まれる。この処理スレッドの場合と同様に、データファイル１５２から画像データを作成する処理スレッドでは、データファイル１５２について特定された座標に対応する位置に画像データ２５２を書き込まれる。また、データファイル１５４から画像データを作成する処理スレッドでは、データファイル１５４について特定された座標に対応する位置に画像データ２５４が書き込まれる。バンドメモリ４２−１の中の３個の画像データ２５０，２５２，２５４は、３つのデータファイル１５０，１５２，１５４について図４のＳ４４で特定された位置関係を維持することになる。換言すると、バンドメモリ４２−１の中での３個の画像データ２５０，２５２，２５４の相対的な位置関係は、３つのデータファイル１５０，１５２，１５４について図４のＳ４４で特定された相対的な位置関係に等しい。
【００５９】
なお、データファイル１５０についてＳ７６の処理が実行される時点では、データファイル１５６，１６２について中間言語データが作成されていない。即ち、制御部１６は、１ページの印刷媒体１２０に対応する全ての中間言語データが作成される前に、データファイル１５０の先頭ページから１個の画像データを作成してバンドメモリ４２に書き込む処理を実行する。本実施例では、データファイル１５０〜１６４から作成される８個の画像データ２５０〜２６４が互いに独立した領域に印刷される（画像データが重複しない）。このために、１つのデータファイル（例えば１５０）から中間言語データが作成されると、他のデータファイル（例えば１５６）から中間言語データが作成されるのを待たなくても、画像データを作成してバンドメモリ４２に書き込む処理を開始することができる。
【００６０】
図７の例では、３個の画像データ２５０，２５２，２５４がバンドメモリ４２−１に書き込まれると、先頭バンドの画像データが完成する。制御部１６は、図４のＳ４６で複数の処理スレッドを同時的に立ち上げると、処理対象バンドＢＮとして「１」を特定する（Ｓ４８）。次いで、制御部１６は、処理対象バンド（現時点では「１」）データが完成することを監視する（Ｓ５０）。図７の例では、３個の画像データ２５０，２５２，２５４がバンドメモリ４２−１に書き込まれると、制御部１６は、Ｓ５０でＹＥＳと判断する。この場合、制御部１６は、バンドメモリ４２−１の記憶内容に従って３個の画像データ２５０，２５２，２５４を印刷することを開始する（Ｓ５２）。制御部１６は、印刷を開始すると、Ｓ５４に進む。Ｓ５４では、制御部１６は、処理対象バンドＢＮをインクリメントする。次いで、制御部１６は、処理対象バンドＢＮが１ページの最終バンドを超えたのか否かを判断する（Ｓ５６）。ここでＮＯの場合、制御部１６は、Ｓ５０に戻って、処理対象バンド（現時点では「２」）データが完成することを監視する。
【００６１】
なお、先頭バンドについて印刷を開始する段階（画像データ２５０，２５２，２５４の印刷を開始する段階）では、他のデータファイル１５６〜１６４の全てから中間言語データが作成されていない。即ち、本実施例では、１ページの印刷媒体１２０に対応する全ての中間言語データが作成される前に、少なくとも先頭バンドのバンドメモリ４２−１が完成するために、先頭バンドの印刷を開始することができる。
【００６２】
一方において、処理スレッドでは、図５のＳ７６で画像データが作成されると、Ｓ７８に進む。Ｓ７８では、制御部１６は、Ｓ７６で画像データに変換された中間言語データ、及び画像データを削除する（Ｓ７８）。次いで、制御部１６は、次の行に配置されるべき画像データの元になるデータファイルが存在するのか否かを判断する（Ｓ８０）。例えば、図６の例のデータファイル１５０についてＳ７２〜Ｓ７８の処理が実行された場合、２行目１８２に配置されるべき画像データ２５６の元になるデータファイル１５６が存在する。この場合、制御部１６は、Ｓ８０でＹＥＳと判断し、データファイル１５６の先頭ページのＰＤＬデータを読み込む（Ｓ８２）。次いで、制御部１６は、データファイル１５６についてＳ７２〜Ｓ７８の処理を実行する。これにより、図７に示されるように、データファイル１５６の先頭ページに対応する１個の画像データ２５６がバンドメモリ４２−２に書き込まれる。この処理スレッドの場合と同様に、他の２つの処理スレッドにおいて、データファイル１５８，１６０の先頭ページに対応する画像データ２５８，２６０がバンドメモリ４２−２に書き込まれる。これにより、第２バンドの画像データが完成する。
【００６３】
第２バンドデータが完成すると、制御部１６は、図４のＳ５０でＹＥＳと判断する。この場合、制御部１６は、先頭バンドデータの印刷が終了していることを条件として、バンドメモリ４２−２に従って第２バンドデータを印刷媒体１２０に印刷することを開始する。なお、フローチャートには示されていないが、制御部１６は、先頭バンドデータの印刷が終了すると、バンドメモリ４２−１をクリアする。これにより、バンドメモリ４２−１に次のバンドデータ（図７の例では画像データ２６２，２６４）を書き込むことができるようになる。
【００６４】
制御部１６は、先頭バンドと第２バンドの場合と同様に、第３バンド（本実施例では最終バンド）データ２６２，２６４を作成して印刷する。この場合、制御部１６は、Ｓ５６でＹＥＳと判断して印刷処理を終了する。これにより、８個の画像データ２５０〜２６４が印刷された１ページの印刷媒体１２０が完成する。
【００６５】
本実施例のプリンタ１０は、異なるＰＤＬで記述された複数のデータファイル１５０〜１６４のそれぞれについて、そのデータファイルの先頭ページのＰＤＬデータを同じ中間言語に変換する。このために、複数種類のＰＤＬにおいて、画像データを作成してバンドメモリ４２に書き込むためのプログラム２２を共通化することができる。共通のプログラム２２に従って中間言語データから画像データを作成してバンドメモリ４２に書き込むことを実現することができるために、異なるＰＤＬから作成される複数個の画像データ２５０〜２６４を同じバンドメモリ４２に書き込むことができる。このために、異なるＰＤＬから作成される複数個の画像データ２５０〜２６４を１ページの印刷媒体１２０に印刷することができる。即ち、本実施例のプリンタ１０は、異なるＰＤＬから作成される複数個の画像データ２５０〜２６４をインデックス印刷することができる。
【００６６】
また、プリンタ１０は、横方向に並ぶべき画像データの数と同じ数の処理スレッドを並列的に実行する。各処理スレッドでは、データファイルの先頭ページのＰＤＬデータから中間言語データに変換し、その中間言語データから画像データに変換してバンドメモリ４２に書き込む。即ち、１つのＰＤＬデータ（１つのデータファイル）を単位として、そのＰＤＬデータから中間言語データに変換し、その中間言語データから画像データに変換してバンドメモリ４２に書き込むという一連の処理を実行する。この結果、プリンタ１０は、データファイル１５０〜１６４の全てから中間言語データが作成される前に、画像データをバンドメモリ４２に書き込むことを開始することができる。これと対極の関係にある処理として、全てのデータファイル１５０〜１６４から中間言語データが作成されるのを待ってから、画像データを作成することを開始するという処理が考えられる。しかしながら、この処理では、全てのデータファイル１５０〜１６４から作成される中間言語データを記憶する必要があり、メモリの負担が大きい。別の手法として、全てのデータファイル１５０〜１６４から中間言語データが作成される前に、作成済の中間言語データから画像データを作成して圧縮する手法を採用することもできる。しかしながら、この手法を採用しても、全てのデータファイル１５０〜１６４から中間言語データが作成されるまで圧縮データを記憶しておく必要があり、やはりメモリの負担が大きい。これに対し、本実施例のプリンタ１０は、１つのＰＤＬデータを単位として上記の一連の処理を実行するために、そのＰＤＬデータについて中間言語データを作成すると、その中間言語データから画像データに変換してバンドメモリ４２に書き込み、その中間言語データ、及び画像データを削除することができ、メモリの負担が少ない処理を実行することができるプリンタ１０が実現されている。
【００６７】
（第２実施例）
第１実施例と異なる点を中心に説明する。本実施例では、バンドメモリ４２の代わりにページメモリ１４２を利用する。ページメモリ１４２は、少なくとも１ページ分の印刷媒体に対応する画像データを記憶するためのメモリである。
【００６８】
本実施例では、制御部１６が実行する処理の内容が第１実施例と異なる。具体的に言うと、以下の点で異なる。制御部１６は、バンド単位で画像データを作成しない。このために、図３のＳ１８、Ｓ２６、及び、Ｓ２８の処理は行なわれない。また、制御部１６は、図３のＳ２０において、画像データをページメモリ１４２に書き込む。制御部１６は、図３のＳ２４において、ページメモリ１４２の記憶内容に従って印刷を開始する。
【００６９】
また、図３のＳ１０でＹＥＳと判断された以降の処理が第１実施例と異なる。図８は、図３のＳ１０でＹＥＳと判断された以降の処理のフローチャートを示す。Ｓ１００〜Ｓ１０４は、図４のＳ４０〜Ｓ４４と同様である。制御部１６は、インデックス印刷の対象のデータファイル数と同じ数の処理スレッドを立ち上げる（Ｓ１０６）。例えば、図６の例の場合、制御部１６は、８個の処理スレッドを立ち上げる。
【００７０】
図９は、本実施例の処理スレッドのフローチャートを示す。図８のＳ１０６で立ち上げられた複数個の処理スレッドは並列的に実行される。複数個の処理スレッドのそれぞれでは、１個の画像データが作成される。例えば、図６の例の場合、８個の処理スレッドのそれぞれにおいて、異なるデータファイル１５０〜１６４から１個の画像データが作成される。以下では、データファイル１５０から１個の画像データを作成する処理スレッドを例にして、図９のフローチャートの内容を説明する。
【００７１】
Ｓ１３０〜Ｓ１３４は、図５のＳ７０〜Ｓ７４と同様である。制御部１６は、Ｓ１３４で作成された中間言語データから１個の画像データを作成する（Ｓ１３６）。制御部１６は、画像データをページメモリ１４２に書き込む。この際に、制御部１６は、データファイル１５０について図８のＳ１０４で特定された座標Ｃ１，Ｃ２に対応する位置に画像データ２５０（図７参照）を書き込む。次いで、制御部１６は、Ｓ１３４で作成された中間言語データ、及び画像データを削除する（Ｓ１３８）。データファイル１５０から１個の画像データが作成されページメモリに書き込まれると、処理スレッドが終了する。この処理スレッドの場合と同様に、他のデータファイル１５２〜１６４から作成される画像データ２５２〜２６４もページメモリ１４２に書き込まれる。
【００７２】
制御部１６は、図８のＳ１０６で複数の処理スレッドを同時的に立ち上げると、ページメモリ１４２の画像データが完成することを監視する（Ｓ１０８）。図６及び図７の例では、全ての画像データ２５０〜２６４がページメモリ１４２に書き込まれると、制御部１６は、Ｓ１０８でＹＥＳと判断する。この場合、制御部１６は、ページメモリ１４２の記憶内容に従って画像データ２５０〜２６４を印刷することを開始する（Ｓ１１０）。これにより、８個の画像データ２５０〜２６４が印刷された１ページの印刷媒体１２０が完成する。Ｓ１１０を終えると印刷処理が終了する。
【００７３】
本実施例によっても、異なるＰＤＬから作成される複数個の画像データ２５０〜２６４をインデックス印刷することができる。また、１つのＰＤＬデータ（１つのデータファイル）を単位として一連の処理を実行することができるために、メモリの負担が少ない処理を実行することができる。
【００７４】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
【００７５】
（１）上記の実施例において、制御部１６は、１つの処理スレッドのみを立ち上げてもよい。この場合、処理スレッドは、１つのデータファイルから１個の画像データを作成することを繰り返す。この例においても、１つのＰＤＬデータ（１つのデータファイル）を単位として一連の処理を実行することができる。
【００７６】
（２）上記の実施例の技術は、印刷用の画像データを作成する場合のみならず、表示用の多諧調の画像データを作成する場合にも適用することができる。
【００７７】
（３）１つのデータファイルについて先頭ページのみから画像データを作成しなくてもよい。即ち、例えば、異なるＰＤＬで記述された２つのデータファイルが存在する場合、一方のデータファイルを構成する複数ページ（例えば４ページ）のＰＤＬデータから複数個（例えば４個）の画像データを作成し、他方のデータファイルを構成する複数ページ（例えば３ページ）のＰＤＬデータから複数個（例えば３個）の画像データを作成し、それらの全ての画像データ（例えば７個の画像データ）を１ページの印刷媒体に印刷するようにしてもよい。
また、１つのデータファイルについて、データファイル内の複数のページから画像データを作成してもよい。
【００７８】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【図面の簡単な説明】
【００７９】
【図１】プリンタネットワークシステムの構成の一例を示す。
【図２】制御部の構成を示す。
【図３】印刷処理のフローチャートを示す。
【図４】図３の続きのフローチャートを示す。
【図５】処理スレッドのフローチャートを示す。
【図６】データファイル群と印刷媒体を模式的に示す。
【図７】画像データ群とバンドメモリを模式的に示す。
【図８】第２実施例で実行される印刷処理のフローチャートを示す。
【図９】第２実施例で実行される処理スレッドのフローチャートを示す。
【符号の説明】
【００８０】
２：プリンタネットワークシステム
１０：プリンタ
１２：ＵＳＢインターフェイス
１４：ネットワークインターフェイス
１６：制御部
１８：プログラム記憶領域
２０：中間言語データ作成プログラム
２２：画像データ作成プログラム
２６：操作部
２８：表示部
４０：メモリ
４２：バンドメモリ
４６：印刷機構
６０：ポータブルメモリ
７０：ＰＣ
１２０：印刷媒体
１５０〜１６４：データファイル
２５０〜２６４：画像データ
【図１】
2009241524.tif 000003
【図２】
2009241524.tif 000004
【図３】
2009241524.tif 000005
【図４】
2009241524.tif 000006
【図５】
2009241524.tif 000007
【図６】
2009241524.tif 000008
【図７】
2009241524.tif 000009
【図８】
2009241524.tif 000010
【図９】
2009241524.tif 000011