(57)【特許請求の範囲】
【請求項１】
第１データから第２データを作成し、前記第２データから第３データを作成するデータ処理装置であり、
前記第１データを入力する第１データ入力手段と、
前記第１データに含まれる複数個の部分第１データから前記第２データに含まれる複数個の部分第２データを順次作成するための第１プログラムを記憶している第１プログラム記憶手段と、
前記第２データに含まれる前記複数個の部分第２データから前記第３データを作成するための第２プログラムを記憶している第２プログラム記憶手段と、
前記第２データと前記第３データの両方を格納するために利用されるメモリと、
前記第１プログラムに従って処理を実行することが可能であり、前記第２プログラムに従って処理を実行することが可能であり、それらの両処理のためのメモリ管理を統括して実行する制御手段とを備え、
前記制御手段は、
前記メモリ内の使用可能メモリサイズよりも小さいメモリサイズであって、前記第２データの作成に使用されるべき前記メモリサイズである所定値を特定し、
前記複数個の部分第１データのうちの処理対象の部分第１データを処理すべき毎に、仮に、当該処理対象の部分第１データから１個の部分第２データを前記メモリ内に作成したら、前記１個の部分第２データを含む前記メモリ内の２個以上の部分第２データの合計データサイズが、前記所定値以上になるのか否かを判断し、
前記合計データサイズが前記所定値以上にならないと判断される場合に、前記処理対象の部分第１データから前記１個の部分第２データを前記メモリ内に作成し、
前記合計データサイズが前記所定値以上になると判断される場合において、前記メモリ内に圧縮状態の第３データが存在しない場合に、
（Ａ１）前記メモリ内のＭ個（前記Ｍは１以上の整数）の部分第２データから前記第３データを前記メモリ内に作成し、
（Ａ２）前記メモリ内の前記第３データを圧縮して、前記圧縮状態の第３データを前記メモリ内に作成し、
（Ａ３）前記Ｍ個の部分第２データを前記メモリから削除し、
前記合計データサイズが前記所定値以上になると判断される場合において、前記メモリ内に前記圧縮状態の第３データが存在する場合に、
（Ｂ１）前記圧縮状態の第３データを伸張して、伸張状態の第３データを前記メモリ内に作成し、
（Ｂ２）前記メモリ内のＮ個（前記Ｎは１以上の整数）の部分第２データと、前記メモリ内の前記伸張状態の第３データと、から、新たな第３データを前記メモリ内に作成し、
（Ｂ３）前記メモリ内の前記新たな第３データを圧縮して、新たな圧縮状態の第３データを前記メモリ内に作成し、
（Ｂ４）前記Ｎ個の部分第２データを前記メモリから削除し、
前記制御手段は、前記メモリ内の前記第３データの合計データサイズが、前記使用可能メモリサイズから前記所定値が減算された値よりも大きくなるのか否かに関わらず、前記（Ｂ２）を実行する、
ことを特徴とするデータ処理装置。
【請求項２】
前記第１データは、ページ記述言語で記述されたデータであり、
前記第２データは、前記ページ記述言語と異なる種類の言語で記述されたデータであり、
前記第３データは、ビットマップデータである
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
１ページ分のデータである前記第１データに、前記複数個の部分第１データが含まれる、ことを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
第１データから第２データを作成し、前記第２データから第３データを作成するためのコンピュータプログラムであり、
そのコンピュータプログラムは、前記第１データに含まれる複数個の部分第１データから前記第２データに含まれる複数個の部分第２データを順次作成するための第１プログラムと、前記第２データに含まれる前記複数個の部分第２データから前記第３データを作成するための第２プログラムとを含んでおり
そのコンピュータプログラムは、前記第１プログラムに従った処理と、前記第２プログラムに従った処理と、それらの両処理のためのメモリ管理を統括して実行する処理とを含む制御処理をコンピュータに実行させ、
前記制御処理では、
メモリ内の使用可能メモリサイズよりも小さいメモリサイズであって、前記第２データの作成に使用されるべき前記メモリサイズである所定値を特定し、
前記複数個の部分第１データのうちの処理対象の部分第１データを処理すべき毎に、仮に、当該処理対象の部分第１データから１個の部分第２データを前記メモリ内に作成したら、前記１個の部分第２データを含む前記メモリ内の２個以上の部分第２データの合計データサイズが、前記所定値以上になるのか否かを判断し、
前記合計データサイズが前記所定値以上にならないと判断される場合に、前記処理対象の部分第１データから前記１個の部分第２データを前記メモリ内に作成し、
前記合計データサイズが前記所定値以上になると判断される場合において、前記メモリ内に圧縮状態の第３データが存在しない場合に、
（Ａ１）前記メモリ内のＭ個（前記Ｍは１以上の整数）の部分第２データから前記第３データを前記メモリ内に作成し、
（Ａ２）前記メモリ内の前記第３データを圧縮して、前記圧縮状態の第３データを前記メモリ内に作成し、
（Ａ３）前記Ｍ個の部分第２データを前記メモリから削除し、
前記合計データサイズが前記所定値以上になると判断される場合において、前記メモリ内に前記圧縮状態の第３データが存在する場合に、
（Ｂ１）前記圧縮状態の第３データを伸張して、伸張状態の第３データを前記メモリ内に作成し、
（Ｂ２）前記メモリ内のＮ個（前記Ｎは１以上の整数）の部分第２データと、前記メモリ内の前記伸張状態の第３データと、から、新たな第３データを前記メモリ内に作成し、
（Ｂ３）前記メモリ内の前記新たな第３データを圧縮して、新たな圧縮状態の第３データを前記メモリ内に作成し、
（Ｂ４）前記Ｎ個の部分第２データを前記メモリから削除し、
前記制御処理では、前記メモリ内の前記第３データの合計データサイズが、前記使用可能メモリサイズから前記所定値が減算された値よりも大きくなるのか否かに関わらず、前記（Ｂ２）を実行する、
ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１データから第２データを作成し、第２データから第３データを作成するデータ処理に関する。
【背景技術】
【０００２】
様々な処理を実行する過程において、メモリフルのエラーが生じないようにメモリ管理を行なう必要がある。例えば、下記の特許文献１には、印刷用データを作成するための２つの処理（ジョブ）を並列的に実行する場合に、各ジョブの状態情報（印刷枚数等の情報）及び優先度情報（コピー優先、プリンタ優先等の情報）に基づいて、一方のジョブのためのメモリ回路と他方のジョブのためのメモリ回路についてメモリ量の配分を修正する技術が開示されている。
【０００３】
【特許文献１】特開２００６−１７４２４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記の特許文献１のメモリ管理技術は確かに有用かもしれないが、その手法をあらゆるデータ処理技術に適用することはできない。本発明者は、二段階に亘ってデータが変換されるデータ処理装置の開発に携わっている。即ち、この種のデータ処理装置では、第１データから第２データを作成し、その第２データから第３データを作成する。本明細書では、このような二段階に亘ってデータを変換する処理のための新規なメモリ管理技術を提供する。
【課題を解決するための手段】
【０００５】
本発明は、第１データから第２データを作成し、前記第２データから第３データを作成するデータ処理装置であり、前記第１データを入力する第１データ入力手段と、前記第１データに含まれる複数個の部分第１データから前記第２データに含まれる複数個の部分第２データを順次作成するための第１プログラムを記憶している第１プログラム記憶手段と、前記第２データに含まれる前記複数個の部分第２データから前記第３データを作成するための第２プログラムを記憶している第２プログラム記憶手段と、前記第２データと前記第３データの両方を格納するために利用されるメモリと、前記第１プログラムに従って処理を実行することが可能であり、前記第２プログラムに従って処理を実行することが可能であり、それらの両処理のためのメモリ管理を統括して実行する制御手段とを備え、前記制御手段は、前記メモリ内の使用可能メモリサイズよりも小さいメモリサイズであって、前記第２データの作成に使用されるべき前記メモリサイズである所定値を特定し、前記複数個の部分第１データのうちの処理対象の部分第１データを処理すべき毎に、仮に、当該処理対象の部分第１データから１個の部分第２データを前記メモリ内に作成したら、前記１個の部分第２データを含む前記メモリ内の２個以上の部分第２データの合計データサイズが、前記所定値以上になるのか否かを判断し、前記合計データサイズが前記所定値以上にならないと判断される場合に、前記処理対象の部分第１データから前記１個の部分第２データを前記メモリ内に作成し、前記合計データサイズが前記所定値以上になると判断される場合において、前記メモリ内に圧縮状態の第３データが存在しない場合に、（Ａ１）前記メモリ内のＭ個（前記Ｍは１以上の整数）の部分第２データから前記第３データを前記メモリ内に作成し、（Ａ２）前記メモリ内の前記第３データを圧縮して、前記圧縮状態の第３データを前記メモリ内に作成し、（Ａ３）前記Ｍ個の部分第２データを前記メモリから削除し、前記合計データサイズが前記所定値以上になると判断される場合において、前記メモリ内に前記圧縮状態の第３データが存在する場合に、（Ｂ１）前記圧縮状態の第３データを伸張して、伸張状態の第３データを前記メモリ内に作成し、（Ｂ２）前記メモリ内のＮ個（前記Ｎは１以上の整数）の部分第２データと、前記メモリ内の前記伸張状態の第３データと、から、新たな第３データを前記メモリ内に作成し、（Ｂ３）前記メモリ内の前記新たな第３データを圧縮して、新たな圧縮状態の第３データを前記メモリ内に作成し、（Ｂ４）前記Ｎ個の部分第２データを前記メモリから削除し、前記制御手段は、前記メモリ内の前記第３データの合計データサイズが、前記使用可能メモリサイズから前記所定値が減算された値よりも大きくなるのか否かに関わらず、前記（Ｂ２）を実行する、ことを特徴とするデータ処理装置である。
本明細書によって開示される１つの形態の技術は、第１データから第２データを作成し、その第２データから第３データを作成するデータ処理装置である。このデータ処理装置は、第１データ入力手段と、第１プログラム記憶手段と、第２プログラム記憶手段と、メモリと、制御手段とを有する。第１データ入力手段は、第１データを入力する。例えば、第１データが他のデバイスから送信される場合、第１データ入力手段は、他のデバイス（パーソナルコンピュータ、サーバ、ポータブルメモリ等）から送信された第１データを入力してもよい。第１プログラム記憶手段は、第１データから第２データを作成するための第１プログラムを記憶している。第２プログラム記憶手段は、第２データから第３データを作成するための第２プログラムを記憶している。メモリは、第２データと第３データの両方を格納するために利用される。制御手段は、第１プログラムに従って処理を実行することが可能であり、第２プログラムに従って処理を実行することが可能であり、それらの両処理のためのメモリ管理を統括して実行する。
【０００６】
具体的に言うと、制御手段は、以下の各処理を実行する。
（１）第１データを構成するデータから第２データを作成する。
（２）第１データを構成する次のデータが存在するのか否かを判断する。
（３）上記の（２）で肯定的に判断された場合に、第１データを構成する次のデータから第２データが作成されたら第２データの合計データサイズが所定値以上になるのか否かを判断する。
（４）上記の（３）で否定的に判断された場合に、上記の（１）を実行させる。
（５）第２データから第３データを作成する。
（６）第３データを圧縮することによって圧縮第３データを作成する。
（７）第２データを削除する。
（８）上記の（３）で肯定的に判断された場合に、上記の（５）と（６）と（７）を実行させる。
（９）圧縮第３データを伸張する。
（１０）上記の（２）で否定的に判断された場合に、圧縮第３データが存在することを条件として上記の（９）を実行させる。
【０００７】
なお、上記の（３）の処理は、様々な手法を利用して実行することができる。例えば、以下の（Ａ）及び（Ｂ）のいずれかの手法を利用することができる。
（Ａ）例えば、制御手段は、第２データを記憶するための第２データ用メモリサイズが予め決められている場合、第１データを構成する次のデータから第２データが作成されたら第２データの合計データサイズが第２データ用メモリサイズ以上になるのか否かを判断してもよい。この場合、第２データ用メモリサイズが上記の（３）の「所定値」になる。
（Ａ’）なお、この例において圧縮第３データが存在している場合、制御手段は、第２データの合計データサイズのみが第２データ用メモリサイズ以上になるのか否かを判断してもよいし、第２データの合計データサイズと圧縮第３データのデータサイズとの和が第２データ用メモリサイズ以上になるのか否かを判断してもよい。後者の場合、上記の（３）の所定値は、第２データ用メモリサイズから圧縮第３データのデータサイズが減算された値になる。即ち、上記の（３）の所定値は、変動値であってもよい（逆に上記の（Ａ）のように固定値でもよい）。
【０００８】
（Ｂ）また、例えば、制御手段は、第３データを記憶するための第３データ用メモリサイズが予め決められている場合、第１データを構成する次のデータから第２データが作成されたら上記の第３データ用メモリサイズを圧迫することになることになるのか否かを判断してもよい。即ち、制御手段は、第２データの合計データサイズが増加することに起因して、残存メモリサイズが上記の第３データ用メモリサイズ以下になるのか否かを判断してもよい。この例の構成も、「第２データの合計データサイズが所定値以上になるのか否かを判断する」ことに等しい。即ち、「第１データを構成する次のデータから第２データが作成されたら第２データの合計データサイズが所定値以上になるのか否かを判断する」ことは、「第１データを構成する次のデータから第２データが作成されたら第２データの合計データサイズが増加することに起因して、残存メモリサイズが所定値以下になるのか否かを判断する」ことに等しい。この点については、後述の実施例においてさらに詳しく説明する。
【０００９】
このデータ処理装置は、第１プログラムと第２プログラムのそれぞれの処理のメモリ管理を統括的に実行しながら、上記の（１）〜（１０）の処理を実行する。メモリを効率的に利用しながら二段階に亘ってデータを変換することができる。仮に、メモリ管理を個別に行なうと、各プログラムの処理のためにメモリを分配する必要がある。この場合、一方のプログラムの処理ではメモリが余っているにもかかわらず、他方のプログラムの処理でメモリがフルになると、その時点でエラーになってしまう。例えば、第２データ用メモリと第３データ用メモリとを個別に管理すると、以下の事象が生じることがある。例えば、上記の（３）で肯定的に判断された場合に、第２データから第３データを作成すると、第３データ用メモリがメモリフルになる可能性がある。第２データ用メモリが余っている状況であっても、第３データ用メモリがメモリフルになると、エラーになってしまう。これに対し、本技術のように各プログラムの処理のためのメモリ管理を統括的に実行すると、各プログラムの処理でメモリを共用することができる。このために、メモリの一部が余っているにもかかわらずメモリフルのエラーが生じてしまうという事象が発生することを避けることができる。上記の例の場合、第２データ用メモリが余っている状況であるのであれば、その余っているメモリを利用して第３データを作成し、その第３データを圧縮することができる（メモリフルのエラーを回避できる）。本技術によると、二段階に亘ってデータを変換する処理においてメモリフルのエラーの発生を抑制することができる。
【００１０】
上記の制御手段は、以下の処理を実行するようにしてもよい。即ち、制御手段は、圧縮第３データが存在する状態において上記の（３）で肯定的に判断された場合に、上記の（９）を実行させるとともに、上記の（５）で作成された第３データと上記の（９）で伸張された第３データとを含む新たな第３データについて上記の（６）を実行させてもよい。
【００１１】
上記の第１データは、例えば、ページ記述言語で記述されたデータ（例えばベクタデータ）であってもよい。また、上記の第２データは、例えば、ページ記述言語と異なる種類の言語で記述されたデータ（例えばベクタデータ）であってもよい。また、上記の第３データは、例えば、ビットマップデータであってもよい。この構成によると、ページ記述言語のデータを異なる種類の言語のデータに変換し、変換後のデータをビットマップデータに変換する処理において、メモリフルのエラーの発生を抑制することができる。なお、本明細書で使用する「ページ記述言語」という用語は、ページという概念を利用してデータを記述するためのあらゆる言語を含む概念である。ページ記述言語の例として、例えば、ＰＤＦ（Ｐｏｒｔａｂｌｅ  ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）、ＰＳ（Ｐｏｓｔ  Ｓｃｒｉｐｔ）等を挙げることができる。また、ワープロソフト、表計算ソフト、描画ソフト等で利用されている言語の中でページという概念を利用してデータを記述する言語も、ページ記述言語と呼ぶことができる。なお、以下では、ページ記述言語のことをＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）と呼ぶことがある。また、この技術は、印刷用ビットマップデータを作成するための技術に限定されることはなく、表示用ビットマップデータを作成するための技術にも利用することができる。上記の「ビットマップデータ」は、多諧調ビットマップデータであってもよいし、印刷用ビットマップデータ（例えば「０」と「１」の二値）であってもよい。
【００１２】
なお、制御手段が、上記の（２）の判断を行なうために利用する第１データの単位は、特に限定されない。例えば、制御手段は、上記の（２）において、１ページ分の第１データの中に次のデータが存在するのか否かを判断してもよい。この場合、ページ単位で上記の（２）の判断が行なわれる。即ち、制御手段は、１ページ分のＰＤＬのデータから上記の異なる言語のデータが作成された場合に、上記の（２）で肯定的に判断することになる。一方において、制御手段は、例えば、複数ページ単位（例えば２ページ単位）で上記の（２）の判断を行なってもよいし、所定量のデータサイズを単位として上記の（２）の判断を行なってもよい。
【００１３】
本明細書では、上記のデータ処理装置を実現するためのコンピュータプログラムも提供する。このコンピュータプログラムは、第１データから第２データを作成するための第１プログラムと、第２データから第３データを作成するための第２プログラムとを含んでいる。さらに、このコンピュータプログラムは、第１プログラムに従って第１データから第２データを作成する処理と、第２プログラムに従って第２データから第３データを作成する処理と、それらの両処理のためのメモリのメモリ管理を統括して実行する処理とを含む制御処理をコンピュータに実行させる。この制御処理では、上記の（１）〜（１０）の処理が実行される。このコンピュータプログラムによると、二段階に亘ってデータを変換する処理においてメモリフルのエラーの発生を抑制することができるデータ処理装置を実現することができる。
【発明を実施するための最良の形態】
【００１４】
ここでは、以下の実施例に記載の技術の特徴の一部をまとめておく。
（形態１）第１データは、複数のコマンドを含んでいてもよい。上記の（１）の処理では、第１データを構成するコマンドから第２データを作成してもよい。上記の（２）の処理では、第１データを構成する次のコマンドが存在するのか否かを判断してもよい。
（形態２）制御手段は、１ページ分の第１データから中間言語データが作成されたことを条件として、そのページのビットマップデータを作成することを開始してもよい。
（形態３）制御手段は、ビットマップデータをバンド単位で順に作成してもよい。「バンド」は、１ページより小さい単位である。即ち、１ページは、複数のバンドの集合である。制御手段は、先頭のバンドのビットマップデータを作成する第１処理と、次のバンドのビットマップデータを作成する第２処理とを実行し、１ページ分の全てのビットマップデータが作成されるまで上記の第２処理を繰り返す。
【００１５】
（形態４）制御手段は、使用可能なメモリサイズを特定する処理を実行してもよい。
（形態５）制御手段は、第３データを記憶するためのメモリサイズを特定する処理を実行してもよい。
（形態６）制御手段は、第２データを記憶するためのメモリサイズを特定する処理を実行してもよい。
（形態７）制御手段は、形態４〜形態６のいずれかで特定されたメモリサイズに基づいて、上記の（３）の処理を実行してもよい。
【実施例】
【００１６】
図面を参照して実施例を説明する。図１は、本実施例のプリンタネットワークシステム２を示す。プリンタネットワークシステム２は、プリンタ１０とＰＣ６０とを備える。プリンタ１０とＰＣ６０は、ＬＡＮ回線７０を介して相互に通信可能である。ＰＣ６０は、データファイル群（図示省略）を記憶している。ＰＣ６０は、ユーザの操作に応じて、データファイルを印刷するようにプリンタ１０に指示することができる。この場合、ＰＣ６０は、ユーザの指示に応じてデータファイルをＰＤＬに変換し、ＰＤＬで記述されたデータファイルをプリンタ１０に送信する。
【００１７】
（プリンタの構成）
図１では、プリンタ１０の構成を簡単に示している。プリンタ１０は、ネットワークインターフェイス１２と、インターフェイス用バッファ１３と、ＰＤＬデータ変換処理部１４と、印刷部４０等を有する。ネットワークインターフェイス１２には、ＬＡＮ回線７０が接続されている。ＬＡＮ回線７０は、ＰＣ６０に接続されている。プリンタ１０は、ネットワークインターフェイス１２とＬＡＮ回線７０とを介してＰＣ６０と通信することができる。インターフェイス用バッファ１３は、ネットワークインターフェイス１２に入力されたデータを一時的に記憶するためのバッファである。
【００１８】
ＰＤＬデータ変換処理部１４は、制御部１６と、プログラム記憶領域１８と、共通メモリ２８等を有する。制御部１６は、プログラム記憶領域１８に記憶されているプログラムに従って様々な処理を実行する。制御部１６が実行する処理の内容については、後で詳しく説明する。プログラム記憶領域１８は、中間言語データ作成プログラム２０と、多値ＢＭＰデータ作成プログラム２２と、メモリ管理プログラム２４と、その他のプログラム２６とを記憶している。
【００１９】
中間言語データ作成プログラム２０は、ＰＤＬで記述されたデータ（以下では「ＰＤＬデータ」と呼ぶことがある）を中間言語で記述されたデータ（以下では「中間言語データ」と呼ぶことがある）に変換するためのプログラムである。中間言語データ作成プログラム２０は、複数種類のＰＤＬのそれぞれに対応するプログラムを含んでいる。例えば、中間言語データ作成プログラム２０は、ＰＤＦで記述されたデータを中間言語データに変換するためのプログラムと、ＰＳで記述されたデータを同じ中間言語データに変換するためのプログラムとを記憶している。また、本実施例の中間言語では、色を表現するためにＣＭＹＫを利用する。ＰＤＬデータにおいてＲＧＢを利用して色が表現されている場合、中間言語に変換する際にＣＭＹＫに変換される。
【００２０】
ＰＤＬデータから中間言語データを介してビットマップデータを作成する手法（以下では「前者の手法」と呼ぶ）は、ＰＤＬデータから直接的にビットマップデータを作成する手法（以下では「後者の手法」と呼ぶ）と比べて、以下の点において効果的である。多くのＰＤＬは、同じタイプのデータを記述することができる。例えば、多くのＰＤＬは、線型グラデーションやテキストを記述することができる。第１ＰＤＬと第２ＰＤＬのそれぞれによって同じ線型グラデーション（例えば左から右に向かって赤色から青色に変わっていくグラデーション）が記述されている場合を例として説明する。
【００２１】
上記の例の場合、後者の手法を採用するためには、第１ＰＤＬのフォーマットで記述された線型グラデーションのベクタデータからビットマップデータを作成するためのプログラムと、第２ＰＤＬのフォーマットで記述された線型グラデーションのベクタデータからビットマップデータを作成するためのプログラムとが必要になる。
【００２２】
これに対し、上記の例の場合、前者の手法を採用すると、第１ＰＤＬの線型グラデーションのベクタデータから中間言語データが作成され、第２ＰＤＬの線型グラデーションのベクタデータから中間言語データ（ベクタデータ）が作成される。この場合、２つの中間言語データは同じになる。そうすると、この中間言語データをビットマップデータに変換するためのプログラムがあれば、第１ＰＤＬと第２ＰＤＬのどちらで記述された線型グラデーションであっても、ビットマップデータを作成することができる。即ち、前者の手法を採用するためには、第１ＰＤＬの線型グラデーションのベクタデータから中間言語データを作成するための第１プログラムと、第２ＰＤＬの線型グラデーションのベクタデータから中間言語データを作成するための第２プログラムと、その中間言語データからビットマップデータを作成するための第３プログラムとが必要になる。即ち、第１ＰＤＬと第２ＰＤＬを処理するためのプログラムにおいて、線型グラデーションのベクタデータからビットマップデータを作成するための第３プログラム（図１の例では多値ＢＭＰデータ作成プログラム２２）を共通化することができる。確かに、後者の手法と比べると、上記の第１プログラムと第２プログラムが新たに必要になる。しかしながら、ベクタデータ（ＰＤＬ）をベクタデータ（中間言語）に変換するためのプログラムは、それほど大きなプログラム量を必要としない。ベクタデータをビットマップデータに変換するためのプログラムの方が大きなプログラム量を要する。第１プログラムと第２プログラムが新たに必要にはなるが、第３プログラムを共通化することができるために、全体のプログラム量は後者の手法よりも少なくて済む。
【００２３】
多値ＢＭＰデータ作成プログラム２２は、中間言語データを多諧調（本実施例ではＣＭＹＫの２５６階調）のビットマップデータに変換するためのプログラムである。なお、以下では、多諧調のビットマップデータのことを「多値ＢＭＰデータ」と呼ぶことがある。本実施例では、ＰＤＬデータから中間言語データを作成する処理と、中間言語データから多値ＢＭＰデータを作成する処理との両方において、共通メモリ２８が使用される。これらの両処理で利用される共通メモリ２８を管理するために、メモリ管理プログラム２４が用意されている。即ち、メモリ管理プログラム２４は、上記の両処理のメモリ管理を統括して実行するためのプログラムである。共通メモリ２８を利用して上記の両処理がどのようにして実行されるのかについては、後で詳しく説明する。プログラム２６は、ＰＤＬデータ変換処理において必要な他の処理を実行するためのプログラムである。
【００２４】
印刷部４０は、プログラム記憶領域４２と、バッファ４８と、バンドメモリ５０と、印刷機構５２等を有する。なお、本実施例では、ＰＤＬデータ変換処理部１４の制御部１６が、印刷部４０の制御部を兼用している。即ち、プログラム記憶領域４２に記憶されているプログラム４４，４６に従って制御部１６が処理を実行する。しかしながら、ＰＤＬデータ変換処理部１４の制御部１６とは別の専用の制御部を印刷部４０に設けてもよい。
【００２５】
プログラム記憶領域４２は、二値ＢＭＰデータ作成プログラム４４と、その他のプログラム４６とを記憶している。二値ＢＭＰデータ作成プログラム４４は、ＰＤＬデータ変換処理部１４で作成された多値ＢＭＰデータから印刷用の低階調（本実施例では「０」と「１」の二階調）のビットマップデータを作成するためのプログラムである。なお、以下では、印刷用のビットマップデータのことを「二値ＢＭＰデータ」と呼ぶことがある。プログラム４６は、印刷処理において必要な他の処理を実行するためのプログラム（例えば印刷機構５２を制御するためのプログラム）である。
【００２６】
バッファ４８は、ＰＤＬデータ変換処理部１４から送信された多値ＢＭＰデータを一時的に記憶するためのバッファである。バンドメモリ５０は、少なくとも１バンド分の二値ＢＭＰデータを記憶するためのメモリである。「バンド」について簡単に説明しておく。ＰＣ６０から印刷するように指示された全てのＰＤＬデータに対応する多値ＢＭＰデータを作成し、その後に全ての多値ＢＭＰデータから全ての二値ＢＭＰデータを作成し、その後に印刷を開始するという手法が考えられる。しかしながら、この場合、全てのＰＤＬデータに対応する多値ＢＭＰデータ及び二値ＢＭＰデータを記憶するための大容量のメモリが必要になる。本実施例のプリンタ１０は、多値ＢＭＰデータ及び二値ＢＭＰデータを記憶するためのメモリ容量を圧縮するために、「バンド」という概念を用いて多値ＢＭＰデータ及び二値ＢＭＰデータを少しずつ作成して順に印刷する手法を採用する。本実施例では、１つのバンドのバンド幅は、例えば、インクジェットヘッドが１回の走査によって印刷することが可能である範囲（１ページより少ない範囲）に基づいて設定される。
【００２７】
詳しくは後述するが、本実施例では、ＰＤＬデータ変換処理部１４は、１ページ分のＰＤＬデータから１ページ分の中間言語データを作成する。ＰＤＬデータ変換処理部１４は、１ページ分の中間言語データからページの先頭の１バンド分の多値ＢＭＰデータを作成する。１バンド分の多値ＢＭＰデータは、ＰＤＬデータ変換処理部１４から印刷部４０に送信される。ＰＤＬデータ変換処理部１４は、送信された多値ＢＭＰデータを削除する。ＰＤＬデータ変換処理部１４は、これらの処理をバンド単位で繰り返す。例えば、ＰＤＬデータ変換処理部１４は、１バンド分の多値ＢＭＰデータを作成し、それを全て送信し終えてから多値ＢＭＰデータを削除し、その後に次のバンドの多値ＢＭＰデータを作成してもよい。この場合、ＰＤＬデータ変換処理部１４は、１バンド分のメモリサイズを共通メモリ２８に確保すれば足りる。しかしながら、本実施例では、ＰＤＬデータ変換処理部１４は、１バンド分の多値ＢＭＰデータを印刷部４０に送信している間に、次のバンドの多値ＢＭＰデータを作成することを開始する。これにより、多値ＢＭＰデータを高速で作成して印刷部４０に提供することを実現している。この処理を実行する場合、ＰＤＬデータ変換処理部１４は、少なくとも２バンド分の多値ＢＭＰデータを記憶するためのメモリサイズを共通メモリ２８に確保する必要がある。１バンド分の多値ＢＭＰデータを削除する前に、次のバンドの多値ＢＭＰデータを作成することを開始するからである。
【００２８】
印刷部４０は、ＰＤＬデータ変換処理部１４から送信された１バンド分の多値ＢＭＰデータを受信する。印刷部４０は、１バンド分の多値ＢＭＰデータから１バンド分の二値ＢＭＰデータを作成する。印刷部４０は、１バンド分の二値ＢＭＰデータに従って印刷する。印刷部４０は、印刷が終了した二値ＢＭＰデータを削除する。例えば、印刷部４０は、１バンド分の二値ＢＭＰデータを作成し、それを全て印刷し終えてから二値ＢＭＰデータを削除し、その後に次のバンドの二値ＢＭＰデータを作成してもよい。この場合、バンドメモリ５０は、１バンド分のメモリサイズがあれば足りる。しかしながら、本実施例では、印刷部４０は、１バンド分の二値ＢＭＰデータに従って印刷している間に、次のバンドの二値ＢＭＰデータを作成することを開始する。これにより、高速で印刷することを実現している。この処理を実行する場合、バンドメモリ５０は、少なくとも２バンド分のＢＭＰデータを記憶するためのメモリサイズが必要である。１バンド分の二値ＢＭＰデータを削除する前に、次のバンドの二値ＢＭＰデータを作成することを開始するからである。
【００２９】
印刷機構５２は、印刷媒体を搬送するための機構と、印刷媒体に印刷するための機構（例えばインクジェットタイプやレーザタイプの印刷機構）とを有する。制御部１６は、プログラム記憶領域４２に記憶されているプログラム４６とバンドメモリ５０の記憶内容に従って、印刷機構５２の駆動制御を実行する。
【００３０】
（ＰＤＬデータ変換処理）
続いて、制御部１６が実行するＰＤＬデータ変換処理の内容について説明する。制御部１６は、プログラム２０，２２，２４，２６に従ってＰＤＬデータ変換処理を実行する。図２〜図４は、ＰＤＬデータ変換処理のフローチャートを示す。ＰＤＬデータ変換処理は、ＰＣ６０からの印刷指示及びＰＤＬデータがネットワークインターフェイス１２に入力されたことをトリガとして開始される。ネットワークインターフェイス１２に入力されたＰＤＬデータは、インターフェイス用バッファ１３に格納される。インターフェイス用バッファ１３は、ＰＣ６０からの全てのＰＤＬデータを同時に記憶することができる程度の大きなメモリサイズを有している必要はなく、少ないメモリサイズを有している。制御部１６は、インターフェイス用バッファ１３に格納されたＰＤＬデータに対して後述の処理を実行するとＰＤＬデータを削除し、その後に次のＰＤＬデータをＰＣ６０からダウンロードすることを繰り返す。
【００３１】
まず、制御部１６は、共通メモリ２８の中の使用可能なメモリサイズを特定する（Ｓ１０）。次いで、制御部１６は、多値ＢＭＰデータを作成するために必要なメモリサイズ（以下では「多値ＢＭＰデータ用メモリサイズ」と呼ぶことがある）を特定する（Ｓ１２）。本実施例のＳ１２の処理では、制御部１６は、２バンド分の多値ＢＭＰデータを作成するために必要なメモリサイズを特定する。しかしながら、制御部１６は、２バンド分以上の多値ＢＭＰデータを作成するために必要なメモリサイズを特定してもよい。なお、Ｓ１０で使用可能なメモリサイズを特定するとともにＳ１２で多値ＢＭＰデータ用メモリサイズを特定するということは、「ＰＤＬデータから中間言語を作成するための処理で使用可能なメモリサイズ（以下では「中間言語データ用メモリサイズ」と呼ぶことがある）を特定する」と言うこともできる。
【００３２】
次いで、制御部１６は、処理対象ページＰＮとして「１」を特定する（Ｓ１４）。即ち、１ページ目のＰＤＬデータに基づいて以下の各処理を実行する。制御部１６は、処理対象ページ（現段階では１ページ目）のＰＤＬデータがインターフェイス用バッファ１３に存在するのか否かを判断する（Ｓ１６）。ここでＮＯの場合、図４のＳ５０に進む。一方において、ここでＹＥＳの場合、Ｓ１８に進む。
【００３３】
実際のＰＤＬデータは、複数のコマンド（ベクタデータ）によって構成される。１ページ分のＰＤＬデータの中にも複数のコマンドが含まれている。図５は、ＰＤＬデータ１００の構成を簡単に示す。ＰＤＬデータ１００は、複数ページ分のデータを含んでいる。第１ページは、複数のコマンドＣＰ１，ＣＰ２，ＣＰ３、・・・ＣＰｎによって構成されている（図５においてはＣＰ１〜ＣＰ３のみを記載している）。即ち、第１ページの先頭のコマンドがＣＰ１であり、２番目のコマンドがＣＰ２であり、３番目のコマンドがＣＰ３である。同様に、第２ページ以降も、複数のコマンド（図示省略）によって構成されている。以下の各処理は、１つのコマンドを単位として実行される。即ち、図５の例の場合、コマンドＣＰ１についてＳ１８以降の処理が実行され、次いでコマンドＣＰ２についてＳ１８以降の処理が実行される。第１ページに含まれる最後のコマンドＣＰ３についてＳ１８以降の処理が実行されるまで、このルーチンが繰り返される。
【００３４】
Ｓ１８では、制御部１６は、インターフェイス用バッファ１３に格納されているＰＤＬデータの１つのコマンド（現段階ではコマンドＣＰ１）のデータサイズに基づいて、そのコマンドを中間言語に変換したら多値ＢＭＰデータ用のメモリサイズを圧迫してしまうのか否かを判断する。具体的には、以下の処理を行なって判断する。
【００３５】
まず、制御部１６は、ＰＤＬデータのコマンドのデータサイズを特定する。制御部１６は、特定されたデータサイズに基づいて、コマンドから作成されるべき中間言語データのデータサイズを特定する。本実施例では、制御部１６は、コマンドのデータサイズと、コマンドから作成されるべき中間言語データのデータサイズとが等しくなるものと推定して、中間言語データのデータサイズを特定する。例えば、コマンドＣＰ１のデータサイズが「ＸＸバイト」である場合、制御部１６は、中間言語データのデータサイズとして「ＸＸバイト」を特定する。なお、制御部１６は、上記と異なる手法を利用して、ＰＤＬデータのコマンドから作成されるべき中間言語データのデータサイズを特定してもよい。例えば、プリンタ１０は、ＰＤＬデータの各コマンドについて、当該コマンドから作成されるべき中間言語データのデータサイズを記憶していてもよい。この場合、制御部１６は、上記の記憶内容を読み込むことによって中間言語データのデータサイズを特定してもよい。また、例えば、プリンタ１０は、ＰＤＬデータのコマンドのデータサイズに乗算するべき比率を記憶しておいてもよい。この場合、制御部１６は、ＰＤＬデータのコマンドのデータサイズに上記の比率を乗算することによって、中間言語データのデータサイズを特定してもよい。
【００３６】
次いで、制御部１６は、上記のようにして特定されたデータサイズと、共通メモリ２８内に存在する中間言語データのデータサイズとの和（以下では「合計データサイズ」と呼ぶ）とを算出する。例えば、図５のＰＤＬデータ１００のコマンドＣＰ１について本処理が実行されている場合、共通メモリ２８内に中間言語データは存在しない。この場合、コマンドＣＰ１から作成されるべき中間言語データのデータサイズが上記の合計データサイズになる。続いて、制御部１６は、上記の合計データサイズが中間言語データ用メモリサイズ（Ｓ１０で特定された使用可能なメモリサイズからＳ１２で特定された多値ＢＭＰ用データサイズを減算した値）を超えるのか否かを判断する。これにより、Ｓ１８の処理が実行される。なお、Ｓ１８の処理を実行するための手法は、上記の手法に限られない。他の手法を採用することができる。他の手法については、後で述べる。
【００３７】
図６は、共通メモリ２８を概略的に示す。符号１２０は、Ｓ１０で特定された使用可能なメモリサイズを示す。符号１３０は、Ｓ１２で特定された多値ＢＭＰデータ用のメモリサイズを示す。符号１４０は、中間言語データ用メモリサイズを示す。上記のＳ１８の処理では、ＰＤＬデータ１００のコマンド（現時点ではＣＰ１）を中間言語データに変換したら中間言語データの合計データサイズが中間言語データ用のメモリサイズ１４０を超えてしまうのか否かを判断する。ここでＮＯと判断された場合、Ｓ２０に進む。
【００３８】
Ｓ２０では、制御部１６は、ＰＤＬデータ１００のコマンドＣＰ１から作成されるべき中間言語データのデータサイズを共通メモリ２８内に確保する。次いで、制御部１６は、中間言語データ作成プログラム２０に従って、ＰＤＬデータ１００のコマンドＣＰ１を中間言語データに変換する（Ｓ２２）。制御部１６は、この中間言語データを共通メモリ２８に書き込む。図７は、コマンドＣＰ１から作成された中間言語データＣＭ１が共通メモリ２８に格納されている様子を示す。
【００３９】
続いて、制御部１６は、Ｓ１６に戻って次のコマンドＣＰ２を読み込む。次いで、制御部１６は、コマンドＣＰ２を中間言語に変換したら多値ＢＭＰデータ用のメモリサイズ１３０を圧迫してしまうのか否かを判断する（Ｓ１８）。図７に示すように、コマンドＣＰ２から作成されるべき中間言語データＣＭ２を共通メモリ２８に書き込むと、合計データサイズが中間言語データ用メモリサイズ１４０を超えてしまう。この場合、制御部１６は、Ｓ１８でＹＥＳと判断し、図３のＳ３０に進む。
【００４０】
Ｓ３０では、制御部１６は、共通メモリ２８内に圧縮された多値ＢＭＰデータ（以下では「圧縮多値ＢＭＰデータ」と呼ぶことがある）が存在するのか否かを判断する。コマンドＣＰ２を処理する時点では、圧縮多値ＢＭＰデータは存在しない。この場合、制御部１６は、Ｓ３０でＮＯと判断し、Ｓ３２をスキップし、Ｓ３４に進む。Ｓ３４では、制御部１６は、多値ＢＭＰデータ作成プログラム２２に従って、中間言語データＣＭ１を多値ＢＭＰデータに変換する。制御部１６は、この多値ＢＭＰデータを共通メモリ２８に書き込む。図８は、中間言語データＣＭ１から作成された多値ＢＭＰデータＣＢ１が共通メモリ２８に格納されている様子を示す。
【００４１】
次いで、制御部１６は、Ｓ３４で作成された多値ＢＭＰデータＣＢ１を圧縮することによって、圧縮多値ＢＭＰデータＣＢ１’を作成する（Ｓ３６）。図９は、圧縮多値ＢＭＰデータＣＢ１’が共通メモリ２８に格納されている様子を示す。続いて、制御部１６は、中間言語データＣＭ１を共通メモリ２８から削除する（Ｓ３８）。この場合、図９に示されるように、中間言語データＣＭ１を格納していた部分が開放される。Ｓ３８を終えると、制御部１６は、図２のＳ２０及びＳ２２を実行する。これにより、コマンドＣＰ２から中間言語データＣＭ２に変換され、中間言語データＣＭ２が共通メモリ２８に書き込まれる。図１０は、中間言語データＣＭ２が共通メモリ２８に格納されている様子を示す。
【００４２】
続いて、制御部１６は、Ｓ１６に戻って次のコマンドＣＰ３を読み込む。次いで、制御部１６は、コマンドＣＰ３を中間言語に変換したら多値ＢＭＰデータ用のメモリサイズ１３０を圧迫してしまうのか否かを判断する（Ｓ１８）。図１０に示すように、コマンドＣＰ３から作成されるべき中間言語データＣＭ３を共通メモリ２８に書き込むと、合計データサイズ（ＣＭ２とＣＭ３の合計データサイズ）が中間言語データ用メモリサイズ１４０を超えてしまう。この場合、制御部１６は、Ｓ１８でＹＥＳと判断し、図３のＳ３０に進む。なお、Ｓ１８の判断処理は、圧縮多値ＢＭＰデータＣＢ１’を考慮して実行してもよい。即ち、制御部１６は、ＣＭ２とＣＭ３の合計データサイズと圧縮多値ＢＭＰデータＣＢ１’のデータサイズとの和が、中間言語データ用メモリサイズ１４０を超えるのか否かを判断してもよい。即ち、この場合、共通メモリ２８内のフリーのメモリサイズが多値ＢＭＰデータ用メモリサイズ１３０以下になるのか否かを判断することに等しい。
【００４３】
圧縮多値ＢＭＰデータＣＢ１’が存在するために、制御部１６は、Ｓ３０でＹＥＳと判断する。この場合、制御部１６は、圧縮多値ＢＭＰデータＣＢ１’を伸張することによって、多値ＢＭＰデータＣＢ１を作成する（Ｓ３２）。図１１は、多値ＢＭＰデータＣＢ１が共通メモリ２８に格納されている様子を示す。次いで、制御部１６は、中間言語データＣＭ２を多値ＢＭＰデータＣＢ２に変換する（Ｓ３４）。なお、図１１に示されるように、本実施例では、多値ＢＭＰデータＣＢ２を作成すると、多値ＢＭＰデータの合計データサイズ（ＣＢ１とＣＢ２の合計データサイズ）が多値ＢＭＰデータ用メモリサイズ１３０を超えてしまう。しかしながら、中間言語データ用メモリサイズ１４０が余っているために、その部分も利用しながら多値ＢＭＰデータを作成する。即ち、この時点でメモリフルのエラーにならない。Ｓ３４を実行することによって、多値ＢＭＰデータＣＢ１と多値ＢＭＰデータＣＢ２とから新たな多値ＢＭＰデータＣＢ１，ＣＢ２が作成される。
【００４４】
次いで、制御部１６は、Ｓ３４で作成された多値ＢＭＰデータＣＢ１，ＣＢ２を圧縮することによって、圧縮多値ＢＭＰデータＣＢ１’＋ＣＢ２’を作成する（Ｓ３６）。図１２は、圧縮多値ＢＭＰデータＣＢ１’＋ＣＢ２’が共通メモリ２８に格納されている様子を示す。次いで、制御部１６は、中間言語データＣＭ２を共通メモリ２８から削除する（Ｓ３８）。Ｓ３８を終えると、制御部１６は、図２のＳ２０及びＳ２２を実行する。これにより、コマンドＣＰ３から中間言語データＣＭ３に変換され、中間言語データＣＭ３が共通メモリ２８に書き込まれる。図１２は、中間言語データＣＭ３が共通メモリ２８に格納されている様子を示す。
【００４５】
図５のＰＤＬデータ１００のコマンドＣＰ１，ＣＰ２，ＣＰ３についてＳ１８以降の処理が実行されると、制御部１６は、Ｓ１６でＮＯと判断する。この場合、図４のＳ５０に進む。Ｓ５０では、制御部１６は、処理対象バンドＢＮとして「１」を特定する（Ｓ５０）。制御部１６は、処理対象バンド（現時点では「１」）に含まれる圧縮多値ＢＭＰデータが共通メモリ２８に存在するのか否かを判断する（Ｓ５２）。例えば、図１２に示される圧縮多値ＢＭＰデータＣＢ１’＋ＣＢ２’が処理対象バンドに含まれる場合、制御部１６は、Ｓ５２でＹＥＳと判断し、Ｓ５４に進む。Ｓ５４では、制御部１６は、圧縮多値ＢＭＰデータＣＢ１’＋ＣＢ２’を伸張することによって、多値ＢＭＰデータＣＢ１＋ＣＢ２を作成する。多値ＢＭＰデータＣＢ１＋ＣＢ２は、共通メモリ２８に書き込まれる。
【００４６】
次いで、制御部１６は、処理対象バンド（現時点では「１」）に含まれる中間言語データが共通メモリ２８に存在するのか否かを判断する（Ｓ５６）。例えば、図１２に示される中間言語データＣＭ３が処理対象バンドに含まれる場合、制御部１６は、Ｓ５６でＹＥＳと判断し、Ｓ５８に進む。Ｓ５８では、制御部１６は、中間言語データＣＭ３を多値ＢＭＰデータＣＢ３に変換する。多値ＢＭＰデータＣＢ３は、共通メモリ２８に書き込まれる。これにより、上記の多値ＢＭＰデータＣＢ１＋ＣＢ２と多値ＢＭＰデータＣＢ３とから新たな多値ＢＭＰデータが作成される。制御部１６は、多値ＢＭＰデータに変換された中間言語データＣＭ３を共通メモリ２８から削除する（Ｓ６０）。
【００４７】
続いて、制御部１６は、処理対象バンド（現時点では「１」）の多値ＢＭＰデータを印刷部４０に送信する（Ｓ６２）。これにより、印刷部４０（制御部１６）は、処理対象バンドの多値ＢＭＰデータから二値ＢＭＰデータを作成し、その二値ＢＭＰデータに従って印刷を開始する。制御部１６は、Ｓ６２で多値ＢＭＰデータの送信を開始するとすぐにＳ６４以降の処理を実行する。まず、制御部１６は、処理対象バンドＢＮをインクリメントする（Ｓ６４）。現時点では、処理対象バンドＢＮが「２」になる。次いで、制御部１６は、処理対象バンドＢＮが１ページの最終バンドを超えたのか否かを判断する（Ｓ６６）。ここでＮＯの場合、制御部１６は、Ｓ５２以降の処理を繰り返す。なお、制御部１６は、Ｓ６２で１バンド分の多値ＢＭＰデータが送信された後に、その多値ＢＭＰデータを共通メモリ２８から削除する。
【００４８】
一方において、Ｓ６６でＹＥＳの場合、即ち、１ページ分の全てのバンドについて処理を終えた場合、制御部１６は、処理対象ページＰＮ（現時点では「１」）の次のページのＰＤＬデータがインターフェイス用バッファ１３に存在するのか否かを判断する（Ｓ６８）。例えば、図５のＰＤＬ１００の場合、第２ページ以降が存在する。この場合、制御部１６は、Ｓ６８でＹＥＳと判断し、処理対象ページＰＮをインクリメントする（Ｓ７０）。現時点では、処理対象ページＰＮが「２」になる。次いで、制御部１６は、Ｓ１８に戻って、２ページ目以降について同様に処理を実行する。
【００４９】
上記のプリンタ１０は、中間言語データ作成プログラム２０と多値ＢＭＰデータ作成プログラム２２のそれぞれの処理のメモリ管理を統括的に実行する。メモリを効率的に利用しながら二段階に亘ってデータを変換することができる。仮に、メモリ管理を個別に行なうと、各プログラム２０，２２の処理のためにメモリを分配する必要がある。この場合、例えば、図１１に示すように、中間言語データ用メモリサイズ１４０ではメモリが余っているにもかかわらず、多値ＢＭＰデータ用メモリサイズ１３０がフルになると、その時点でエラーになってしまう。これに対し、本実施例のプリンタ１０のように各プログラム２０，２２の処理のためのメモリ管理を統括的に実行すると、各プログラム２０，２２の処理で共通メモリ２８を共用することができる。このために、メモリの一部が余っているにもかかわらずメモリフルのエラーが生じてしまうという事象が発生することを避けることができる。本実施例によると、二段階に亘ってデータを変換する処理においてメモリフルのエラーの発生を抑制することができる。
【００５０】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
【００５１】
（１）上述したように、図２のＳ１８の判断処理の手法は様々である。以下の各手法を採用してもよい。例えば、図２のＳ１０において使用可能なメモリサイズとして１００００キロバイトが特定され、図２のＳ１２において多値ＢＭＰデータ用メモリサイズとして２０００キロバイトが特定されたものとする（即ち中間言語データ用及びその他で使用可能なメモリサイズは８０００キロバイトである）。この例に基づいて、各手法について説明する。
【００５２】
（１−１）上記の（１）の例において、７０００キロバイトの中間言語データのみが共通メモリ２８に存在し、ＰＤＬデータの次のコマンドから中間言語データが作成されたら中間言語データの合計データサイズが９０００キロバイトになる場合、制御部１６は、Ｓ１８でＹＥＳと判断してもよい。即ち、この例の場合、中間言語データの合計データサイズ（９０００キロバイト）と中間言語データ用メモリサイズ（８０００キロバイト）とを比較することによって、Ｓ１８の処理を実行することになる。これが上記の実施例の手法である。
【００５３】
（１−２）上記の（１）の例において、６０００キロバイトの中間言語データと１０００キロバイトの圧縮多値ＢＭＰデータとが共通メモリ２８に存在し、次のコマンドから中間言語データが作成されたら中間言語データの合計データサイズが７５００キロバイトになる場合、制御部１６は、Ｓ１８でＮＯと判断してもよい。中間言語データの合計データサイズが７５００キロバイトであり、中間言語データ用メモリサイズ（８０００キロバイト）を超えないからである。この例の場合、中間言語データの合計データサイズ（７５００キロバイト）と中間言語データ用メモリサイズ（８０００キロバイト）とを比較することによって、Ｓ１８の処理を実行することになる。これも上記の実施例の手法である。
【００５４】
（１−３）一方において、上記の（１−２）の例において、制御部１６は、Ｓ１８でＹＥＳと判断してもよい。中間言語データの合計データサイズ（７５００キロバイト）と圧縮多値ＢＭＰデータのデータサイズ（１０００キロバイト）との和が８５００キロバイトであり、中間言語データ用メモリサイズ（８０００キロバイト）を超えるからである。即ち、この例の場合、中間言語データの合計データサイズ（７５００キロバイト）と、中間言語データ用メモリサイズ（８０００キロバイト）から圧縮多値ＢＭＰデータのデータサイズ（１０００キロバイト）が減算された値（７０００キロ）とを比較することによって、Ｓ１８の処理を実行することになる。
【００５５】
（１−４）また、上記の（１）の例において、５０００キロバイトの中間言語データと他の処理で作成された１０００キロバイトの他処理データと１０００キロバイトの圧縮多値ＢＭＰデータとが共通メモリ２８に存在し、次のコマンドから中間言語データが作成されたら中間言語データの合計データサイズが６５００キロバイトになる場合、制御部１６は、Ｓ１８でＮＯと判断してもよい。この例の場合、中間言語データの合計データサイズ（６５００キロバイト）と中間言語データ用メモリサイズ（８０００キロバイト）とを比較することによって、Ｓ１８の処理を実行することになる。これは、上記の（１−２）と同様の手法である。
【００５６】
（１−５）一方において、上記の（１−４）の例において、制御部１６は、Ｓ１８でＹＥＳと判断してもよい。中間言語データの合計データサイズ（６５００キロバイト）と上記の他処理データのデータサイズ（１０００キロバイト）と圧縮多値ＢＭＰデータのデータサイズ（１０００キロバイト）との和が８５００キロバイトであり、中間言語データ用メモリサイズ（８０００キロバイト）を超えるからである。即ち、この例の場合、中間言語データの合計データサイズ（６５００キロバイト）と、中間言語データ用メモリサイズ（８０００キロバイト）から上記の他処理データ及び圧縮多値ＢＭＰデータのデータサイズ（１０００＋１０００キロバイト）が減算された値（６０００キロ）とを比較することによって、Ｓ１８の処理を実行することになる。なお、メモリ容量が不足する場合、上記の他処理データにより占有されているメモリを開放する構成を採用することもできる。
【００５７】
上記の（１−１）〜（１−５）のいずれの手法であっても、ＰＤＬデータの次のコマンドから中間言語データが作成されたら中間言語データの合計データサイズが第１所定値以上になるのか否かを判断することになる。即ち、上記の（１−１）、（１−２）、及び、（１−４）では、上記の第１所定値が８０００キロバイトである。上記の（１−３）では、上記の第１所定値が７０００キロバイトである。上記の（１−５）では、上記の第１所定値が６０００キロバイトである。
【００５８】
なお、上記の（１−３）及び（１−５）の手法は、ＰＤＬデータの次のコマンドから中間言語データが作成されたら中間言語データの合計データサイズが増加することに起因して、共通メモリ内の残存メモリサイズが第２所定値以下になるのか否か判断することに等しい。即ち、上記の（１−３）では、上記の残存メモリサイズが１５００キロバイト（１００００−７５００−１０００）になり、上記の第２所定値が２０００キロバイト（多値ＢＭＰデータ用メモリサイズ）になる。また、上記の（１−５）でも、上記の残存メモリサイズが１５００キロバイトになり（１００００−６５００−１０００−１０００）、上記の第２所定値が２０００キロバイトになる。
【００５９】
（２）上記の実施例では、プリンタ１０は、中間言語データから多値ＢＭＰデータを作成し、多値ＢＭＰデータから二値ＢＭＰデータを作成する。しかしながら、プリンタ１０は、中間言語データから直接的に二値ＢＭＰデータを作成してもよい。この場合、図２〜図４の各処理において、二値ＢＭＰデータが作成されることになる。
【００６０】
（３）また、上記の実施例では、プリンタ１０は、ＰＤＬデータから中間言語データを作成し、中間言語データからＢＭＰデータを作成する。しかしながら、上記の実施例の技術は、二段階に亘ってデータを変換するあらゆる技術に適用することができる。例えば、ＰＤＬデータから所定種類のＰＤＬデータ（例えばＰＤＦ）を作成し、その所定種類のＰＤＬデータからＢＭＰデータを作成する技術にも適用することができる。
【００６１】
（４）上記の実施例では、多値ＢＭＰデータをバンド単位で作成するとともに、二値ＢＭＰデータをバンド単位で作成する（バンドメモリ５０を利用する）。これに代えて、ＰＤＬデータ変換処理部１４は、１ページ分の多値ＢＭＰデータを作成した後に、多値ＢＭＰデータを印刷部４０に送信するようにしてもよい。この場合、印刷部４０は、バンドメモリ５０に代えて、少なくとも１ページ分の二値ＢＭＰデータを記憶することができるページメモリを利用する。
【００６２】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【図面の簡単な説明】
【００６３】
【図１】プリンタネットワークシステムの構成の一例を示す。
【図２】ＰＤＬ変換処理のフローチャートを示す。
【図３】図２の続きのフローチャートを示す。
【図４】図２の続きのフローチャートを示す。
【図５】ＰＤＬデータの構成を簡単に示す。
【図６】共通メモリを示す。
【図７】中間言語データが格納されている状態の共通メモリを示す。
【図８】中間言語データと多値ＢＭＰデータが格納されている状態の共通メモリを示す。
【図９】圧縮多値ＢＭＰデータが格納されている状態の共通メモリを示す。
【図１０】中間言語データと圧縮多値ＢＭＰデータが格納されている状態の共通メモリを示す。
【図１１】中間言語データと多値ＢＭＰデータが格納されている状態の共通メモリを示す。
【図１２】中間言語データと圧縮多値ＢＭＰデータが格納されている状態の共通メモリを示す。
【符号の説明】
【００６４】
１０：プリンタ
１２：ネットワークインターフェイス
１３：インターフェイス用バッファ
１４：ＰＤＬデータ変換処理部
１６：制御部
１８：プログラム記憶領域
２０：中間言語データ作成プログラム
２２：多値ＢＭＰデータ作成プログラム
２４：メモリ管理プログラム
２８：共通メモリ
４０：印刷部
４２：プログラム記憶領域
４４：二値ＢＭＰデータ作成プログラム
４８：バッファ
５０：バンドメモリ
５２：印刷機構
７０：ＬＡＮ回線
１００：ＰＤＬデータ
１２０：使用可能なメモリサイズ
１３０：多値ＢＭＰデータ用メモリサイズ
１４０：中間言語データ用メモリサイズ
ＣＰ１，ＣＰ２，ＣＰ３：ＰＤＬデータのコマンド
ＣＭ１，ＣＭ２，ＣＭ３：中間言語データ
ＣＢ１，ＣＢ２，ＣＢ３：多値ＢＭＰデータ
ＣＢ１’，ＣＢ２’，ＣＢ３’：圧縮多値ＢＭＰデータ
【図１】
0005194952.tif 000002
【図２】
0005194952.tif 000003
【図３】
0005194952.tif 000004
【図４】
0005194952.tif 000005
【図５】
0005194952.tif 000006
【図６】
0005194952.tif 000007
【図７】
0005194952.tif 000008
【図８】
0005194952.tif 000009
【図９】
0005194952.tif 000010
【図１０】
0005194952.tif 000011
【図１１】
0005194952.tif 000012
【図１２】
0005194952.tif 000013