(57)【特許請求の範囲】
【請求項１】
ページ記述言語で記述されたデータからビットマップデータを作成するページ記述言語処理装置であり、
複数種類のページ記述言語のそれぞれについて、当該ページ記述言語の所定のコマンドで記述されたベクタデータから中間言語で記述されたベクタデータを作成するためのプログラムを記憶している中間言語作成プログラム記憶手段と、
前記中間言語で記述されたベクタデータからビットマップデータを作成するためのプログラムを記憶している第１ビットマップデータ作成プログラム記憶手段と、
前記複数種類のページ記述言語のうちの特定のページ記述言語の前記所定のコマンド以外の第１の特定のコマンドで記述されたベクタデータから、前記中間言語を経由せずに、ビットマップデータを作成するためのプログラムを記憶している第２ビットマップデータ作成プログラム記憶手段と、
ページ記述言語で記述された特定のベクタデータを入力するベクタデータ入力手段であって、前記特定のベクタデータは、少なくとも第１のコマンドを含む、前記ベクタデータ入力手段と、
前記特定のベクタデータに含まれる前記第１のコマンドが、中間言語作成プログラム記憶手段に記憶されている前記プログラムに対応するものであるのか否かを判断する第１判断手段と、
前記第１のコマンドについて第１判断手段によって肯定的に判断されたことを条件として、中間言語作成プログラム記憶手段に記憶されている前記プログラムに従って、前記第１のコマンドから前記中間言語で記述された第１のベクタデータを作成する中間言語ベクタデータ作成手段と、
前記第１のコマンドについて第１判断手段によって肯定的に判断されたことを条件として、第１ビットマップデータ作成プログラム記憶手段に記憶されている前記プログラムに従って、中間言語ベクタデータ作成手段によって作成された第１のベクタデータから第１のビットマップデータを作成する第１ビットマップデータ作成手段と、
前記第１のコマンドについて第１判断手段によって否定的に判断されたことを条件として、第２ビットマップデータ作成プログラム記憶手段に記憶されている前記プログラムに従って、前記第１のコマンドから、前記中間言語を経由せずに、第２のビットマップデータを作成する第２ビットマップデータ作成手段と
を備え、
前記中間言語作成プログラム記憶手段は、前記第１の特定のコマンドで記述されたベクタデータから前記中間言語で記述されたベクタデータを作成するためのプログラムを記憶していない
ことを特徴とするページ記述言語処理装置。
【請求項２】
前記特定のベクタデータは、さらに、第２のコマンドを含み、
第１判断手段は、さらに、前記特定のベクタデータに含まれる前記第２のコマンドが、中間言語作成プログラム記憶手段に記憶されている前記プログラムに対応するものであるのか否かを判断し、
中間言語ベクタデータ作成手段は、さらに、前記第２のコマンドについて第１判断手段によって肯定的に判断されたことを条件として、中間言語作成プログラム記憶手段に記憶されている前記プログラムに従って、前記第２のコマンドから前記中間言語で記述された第２のベクタデータを作成し、
第１ビットマップデータ作成手段は、さらに、前記第２のコマンドについて第１判断手段によって肯定的に判断されたことを条件として、第１ビットマップデータ作成プログラム記憶手段に記憶されている前記プログラムに従って、中間言語ベクタデータ作成手段によって作成された第２のベクタデータから第３のビットマップデータを作成し、
第２ビットマップデータ作成手段は、さらに、前記第２のコマンドについて第１判断手段によって否定的に判断されたことを条件として、第２ビットマップデータ作成プログラム記憶手段に記憶されている前記プログラムに従って、前記第２のコマンドから、前記中間言語を経由せずに、第４のビットマップデータを作成し、
前記ページ記述言語処理装置は、さらに、
１枚の印刷媒体の印刷に利用されるべき１ページ分のビットマップデータに従った印刷を実行するように、印刷機構に指示する指示部を備え、
前記１ページ分のビットマップデータは、作成済みの第１のビットマップデータ又は第２のビットマップデータと、作成済みの第３のビットマップデータ又は第４のビットマップデータと、を含む
ことを特徴とする請求項１に記載のページ記述言語処理装置。
【請求項３】
前記特定のベクタデータに含まれる前記第１のコマンドが、第２ビットマップデータ作成プログラム記憶手段に記憶されている前記プログラムに対応するものであるのか否かを判断する第２判断手段をさらに備え、
第２ビットマップデータ作成手段は、
前記第１のコマンドについて第１判断手段によって否定的に判断され、かつ、前記第１のコマンドについて第２判断手段によって肯定的に判断されたことを条件として、第２ビットマップデータ作成プログラム記憶手段に記憶されている前記プログラムに従って、前記第１のコマンドの全部から、前記中間言語を経由せずに、前記第２のビットマップデータを作成するとともに、
前記第１のコマンドについて第１判断手段によって否定的に判断され、かつ、前記第１のコマンドについて第２判断手段によって否定的に判断されたことを条件として、前記第１のコマンドの一部のみから、前記中間言語を経由せずに、第５のビットマップデータを作成する
ことを特徴とする請求項１に記載のページ記述言語処理装置。
【請求項４】
第２ビットマップデータ作成プログラム記憶手段に記憶されている前記プログラムでは、少なくとも２種類のページ記述言語の間で共通するコマンドで記述されたベクタデータから、前記中間言語を経由せずに、ビットマップデータを作成するためのプログラムが共通化されている
ことを特徴とする請求項１から３のいずれか一項に記載のページ記述言語処理装置。
【請求項５】
中間言語作成プログラム記憶手段は、
少なくとも２種類のページ記述言語のそれぞれについて、当該ページ記述言語の前記所定のコマンド以外の第２の特定のコマンドであって、前記第１の特定のコマンドと異なる前記第２の特定のコマンドで記述されたベクタデータから前記中間言語と異なる中間言語で記述されたベクタデータを作成するための第１プログラムと、前記異なる中間言語で記述されたベクタデータから前記中間言語で記述されたベクタデータを作成するための第２プログラムとをさらに記憶しており、
中間言語ベクタデータ作成手段は、さらに、
前記特定のベクタデータに含まれる前記第１のコマンドが前記第１プログラムに対応することを条件として、前記第１プログラムに従って、前記第１のコマンドから前記異なる中間言語で記述された第３のベクタデータを作成するとともに、
前記第２プログラムに従って、前記異なる中間言語で記述された第３のベクタデータから前記中間言語で記述された第４のベクタデータを作成し、
第１ビットマップデータ作成手段は、さらに、
前記特定のベクタデータに含まれる前記第１のコマンドが前記第１プログラムに対応することを条件として、第１ビットマップデータ作成プログラム記憶手段に記憶されている前記プログラムに従って、中間言語ベクタデータ作成手段によって作成された第４のベクタデータから第６のビットマップデータを作成する
ことを特徴とする請求項１のいずれかに記載のページ記述言語処理装置。
【請求項６】
ページ記述言語で記述されたデータからビットマップデータを作成するためのコンピュータプログラムであり、
前記コンピュータプログラムは、
複数種類のページ記述言語のそれぞれについて、当該ページ記述言語の所定のコマンドで記述されたベクタデータから中間言語で記述されたベクタデータを作成するための中間言語作成プログラムと、
前記中間言語で記述されたベクタデータからビットマップデータを作成するための第１種のプログラムと、
前記複数種類のページ記述言語のうちの特定のページ記述言語の前記所定のコマンド以外の第１の特定のコマンドで記述されたベクタデータから、前記中間言語を経由せずに、ビットマップデータを作成するための第２種のプログラムと、を含んでおり、
前記第１の特定のコマンドで記述されたベクタデータから前記中間言語で記述されたベクタデータを作成するためのプログラムを含んでおらず、
前記コンピュータプログラムは、
ページ記述言語で記述された特定のベクタデータを入力するベクタデータ入力処理であって、前記特定のベクタデータは、少なくとも第１のコマンドを含む、前記ベクタデータ入力処理と、
前記特定のベクタデータに含まれる前記第１のコマンドが、前記中間言語作成プログラムに対応するものであるのか否かを判断する判断処理と、
前記第１のコマンドについて判断処理で肯定的に判断されたことを条件として、前記中間言語作成プログラムに従って、前記第１のコマンドから前記中間言語で記述された第１のベクタデータを作成する中間言語ベクタデータ作成処理と、
前記第１のコマンドについて判断処理で肯定的に判断されたことを条件として、前記第１種のプログラムに従って、中間言語ベクタデータ作成処理で作成された第１のベクタデータから第１のビットマップデータを作成する第１ビットマップデータ作成処理と、
前記第１のコマンドについて判断処理によって否定的に判断されたことを条件として、前記第２種のプログラムに従って、前記第１のコマンドから、前記中間言語を経由せずに、第２のビットマップデータを作成する第２ビットマップデータ作成処理と
をコンピュータに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ページ記述言語で記述されたデータからビットマップデータを作成する技術に関する。本明細書で使用する「ページ記述言語」という用語は、ページという概念を利用してデータを記述するためのあらゆる言語を含む概念である。ページ記述言語の例として、例えば、ＰＤＦ（Ｐｏｒｔａｂｌｅ  ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）、ＰＳ（Ｐｏｓｔ  Ｓｃｒｉｐｔ）等を挙げることができる。また、ワープロソフト、表計算ソフト、描画ソフト等で利用されている言語の中でページという概念を利用してデータを記述する言語も、ページ記述言語と呼ぶことができる。なお、以下では、ページ記述言語のことをＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）と呼ぶことがある。
【背景技術】
【０００２】
例えば、多くのプリンタは、ＰＤＬで記述されたベクタデータを入力し、そのベクタデータから多階調（例えば２５６階調）のビットマップデータを作成する。この種のプリンタは、多階調ビットマップデータをページメモリ又はバンドメモリ（例えば２階調（ドットのＯＮ／ＯＦＦ））に書き込み、ページメモリ又はバンドメモリの記憶内容に従って印刷媒体に印刷する。
【０００３】
近年、上述したように、ＰＤＦやＰＳのように複数種類のＰＤＬが存在する。各ＰＤＬは独自のフォーマットに従ってベクタデータを記述することができるため、複数種類のＰＤＬを処理することができる技術が求められている。即ち、複数種類のＰＤＬのいずれで記述されたベクタデータでもビットマップデータを作成することができる技術が求められている。例えば、下記の特許文献１には、複数種類のＰＤＬのそれぞれについて、当該ＰＤＬで記述されたベクタデータからビットマップデータを作成することができるプリンタが開示されている。
【０００４】
【特許文献１】特開平４−１２８０６８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記の特許文献１の技術を利用すると、様々な種類のＰＤＬで記述されたベクタデータからビットマップデータを作成することができる。しかしながら、この技術を実現するためには、複数種類のＰＤＬのそれぞれについて、当該ＰＤＬの様々なフォーマットに従って記述されたベクタデータからビットマップデータを作成するためのプログラムが必要になる。例えば、第１ＰＤＬと第２ＰＤＬが存在し、どちらのＰＤＬでも線型グラデーションとテキストを記述することができるものとする。この場合、第１ＰＤＬの第１フォーマットで記述された線型グラデーションからビットマップデータを作成するためのプログラムと、第１ＰＤＬの第２フォーマットで記述されたテキストからビットマップデータを作成するためのプログラムと、第２ＰＤＬの第３フォーマットで記述された線型グラデーションからビットマップデータを作成するためのプログラムと、第２ＰＤＬの第４フォーマットで記述されたテキストからビットマップデータを作成するためのプログラムとが必要になる。ＰＤＬの種類が増加したり、各ＰＤＬで利用されるフォーマット（表現機能と換言することもできる）の数が増加したりすると、膨大な量のプログラムが必要になる。
【０００６】
本明細書では、複数種類のＰＤＬを処理することができるデバイスを少ないプログラム量で実現することができる技術を提供する。
【課題を解決するための手段】
【０００７】
本発明は、ページ記述言語で記述されたデータからビットマップデータを作成するページ記述言語処理装置である。本発明のページ記述言語処理装置は、複数種類のページ記述言語のそれぞれについて、当該ページ記述言語の所定のコマンドで記述されたベクタデータから中間言語で記述されたベクタデータを作成するためのプログラムを記憶している中間言語作成プログラム記憶手段と、前記中間言語で記述されたベクタデータからビットマップデータを作成するためのプログラムを記憶している第１ビットマップデータ作成プログラム記憶手段と、前記複数種類のページ記述言語のうちの特定のページ記述言語の前記所定のコマンド以外の第１の特定のコマンドで記述されたベクタデータから、前記中間言語を経由せずに、ビットマップデータを作成するためのプログラムを記憶している第２ビットマップデータ作成プログラム記憶手段と、ページ記述言語で記述された特定のベクタデータを入力するベクタデータ入力手段であって、前記特定のベクタデータは、少なくとも第１のコマンドを含む、前記ベクタデータ入力手段と、前記特定のベクタデータに含まれる前記第１のコマンドが、中間言語作成プログラム記憶手段に記憶されている前記プログラムに対応するものであるのか否かを判断する第１判断手段と、前記第１のコマンドについて第１判断手段によって肯定的に判断されたことを条件として、中間言語作成プログラム記憶手段に記憶されている前記プログラムに従って、前記第１のコマンドから前記中間言語で記述された第１のベクタデータを作成する中間言語ベクタデータ作成手段と、前記第１のコマンドについて第１判断手段によって肯定的に判断されたことを条件として、第１ビットマップデータ作成プログラム記憶手段に記憶されている前記プログラムに従って、中間言語ベクタデータ作成手段によって作成された第１のベクタデータから第１のビットマップデータを作成する第１ビットマップデータ作成手段と、前記第１のコマンドについて第１判断手段によって否定的に判断されたことを条件として、第２ビットマップデータ作成プログラム記憶手段に記憶されている前記プログラムに従って、前記第１のコマンドから、前記中間言語を経由せずに、第２のビットマップデータを作成する第２ビットマップデータ作成手段と、を備える。前記中間言語作成プログラム記憶手段は、前記第１の特定のコマンドで記述されたベクタデータから前記中間言語で記述されたベクタデータを作成するためのプログラムを記憶していない。
なお、以下の「グラデーション」や「テキスト」という具体例は、技術を理解し易いように記載するものであり、あくまで例示である。本明細書によって開示される技術は、この具体例によって限定的に解釈されることはない。多くのＰＤＬは、同じタイプのデータを記述することができる。例えば、多くのＰＤＬは、線型グラデーションやテキストを記述することができる。この知見に鑑みて、本明細書によって開示される技術では、ＰＤＬで記述されたベクタデータから中間言語で記述されたベクタデータを作成し、中間言語で記述されたベクタデータからビットマップデータを作成する技術を採用する。即ち、様々な種類のＰＤＬで記述されたベクタデータを、ビットマップデータに変換する前に同じ中間言語で記述されたベクタデータに変換する技術を採用する。
【０００８】
例えば、上記の第１ＰＤＬと第２ＰＤＬのそれぞれによって同じ線型グラデーション（例えば左から右に向かって赤色から青色に変わっていくグラデーション）が記述されている場合、第１ＰＤＬのフォーマットで記述された線型グラデーションから中間言語で記述されたベクタデータが作成され、第２ＰＤＬのフォーマットで記述された線型グラデーションから同じ中間言語で記述されたベクタデータが作成される。この場合、中間言語で記述されたベクタデータは同じになる。そうすると、この中間言語のベクタデータをビットマップデータに変換するためのプログラムがあれば、第１ＰＤＬと第２ＰＤＬのどちらで記述された線型グラデーションであっても、ビットマップデータを作成することができる。この例の場合、第１ＰＤＬのフォーマットで記述された線型グラデーションから中間言語で記述されたベクタデータを作成するための第１プログラムと、第２ＰＤＬのフォーマットで記述された線型グラデーションから中間言語で記述されたベクタデータを作成するための第２プログラムと、中間言語で記述された線型グラデーションのベクタデータからビットマップデータを作成するための第３プログラムとが必要になる。即ち、第１ＰＤＬと第２ＰＤＬを処理するためのプログラムにおいて、線型グラデーションのベクタデータからビットマップデータを作成するための第３プログラムを共通化することができる。確かに、上記の第１プログラムと第２プログラムが新たに必要になる。しかしながら、ベクタデータ（ＰＤＬ）をベクタデータ（中間言語）に変換するためのプログラムは、それほど大きなプログラム量を必要としない。ベクタデータをビットマップデータに変換するためのプログラムの方が大きなプログラム量を要する。上記の例の場合、第１プログラムと第２プログラムが新たに必要にはなるが、第３プログラムを共通化することができるために、全体のプログラム量は特許文献１の技術よりも少なくすることができる。
【０００９】
近年のＰＤＬは、様々なフォーマット（表現機能）を利用してベクタデータを記述することができる。例えば、線型グラデーションのみならず、非線型グラデーションを記述することができるフォーマットを有するＰＤＬが存在する。即ち、他のＰＤＬでは記述することができず、１種類（もしくは少ない種類）のＰＤＬのみが有する特殊なフォーマットが存在する。例えば、上記の第１ＰＤＬのみが非線型グラデーションを記述することができるフォーマットを有しており、他の種類のＰＤＬ（例えば上記の第２ＰＤＬ）は非線型グラデーションを記述することができないことがある。この例の場合、複数種類のＰＤＬが有する全てのフォーマットを中間言語に変換する手法を利用すると、第１ＰＤＬで記述された非線型グラデーションのベクタデータから中間言語で記述されたベクタデータを作成するためのプログラムと、そのベクタデータからビットマップデータを作成するためのプログラムとが必要になる。ここでの後者のプログラムは、他の種類のＰＤＬと共通化することができない。他の種類のＰＤＬは、非線型グラデーションを記述することができないからである。そうすると、非線型グラデーションに限って言うと、中間言語に変換する手法を採用しているにもかかわらず、必要なプログラム量を少なくすることができない。それどころか、非線型グラデーションのベクタデータから中間言語で記述されたベクタデータを作成するためのプログラムが必要であるために、プログラム量が増大するという事態を招いてしまう。本発明者は、１種類（もしくは少ない種類）のＰＤＬのみが有する特殊なフォーマットは中間言語に変換しない方が必要なプログラム量を少なくすることができることを見出した。本明細書によって開示される一つの形態の技術は、このような知見に鑑みて創作されたものであり、以下の構成を備える。
【００１０】
本明細書によって開示される１つの形態の技術は、ページ記述言語で記述されたデータからビットマップデータを作成するページ記述言語処理装置である。なお、この技術は、印刷用にビットマップデータを作成するための技術に限定されることはなく、表示用にビットマップデータを作成するための技術にも利用することができる。また、上記の「ビットマップデータ」は、多諧調ビットマップデータであってもよいし、２階調のビットマップデータであってもよい。ページ記述言語処理装置は、中間言語作成プログラム記憶手段と、ベクタデータ入力手段と、第１判断手段と、中間言語ベクタデータ作成手段と、第１ビットマップデータ作成手段と、第２ビットマップデータ作成手段とを備える。
【００１１】
中間言語作成プログラム記憶手段は、複数種類のページ記述言語のそれぞれについて、当該ページ記述言語の所定のフォーマットで記述されたベクタデータから中間言語で記述されたベクタデータを作成するためのプログラムを記憶している。ベクタデータ入力手段は、ページ記述言語で記述されたベクタデータを入力する。例えば、ページ記述言語で記述されたベクタデータが他のデバイスから送信される場合、ベクタデータ入力手段は、他のデバイス（パーソナルコンピュータ、サーバ、ポータブルメモリ等）から送信されたベクタデータを入力してもよい。第１判断手段は、ベクタデータ入力手段に入力された入力ベクタデータを記述している記述フォーマットが、中間言語作成プログラム記憶手段に記憶されているプログラムに対応するものであるのか否かを判断する。
【００１２】
中間言語ベクタデータ作成手段は、第１判断手段によって肯定的に判断されたことを条件として、中間言語作成プログラム記憶手段に記憶されているプログラムに従って、上記の記述フォーマットで記述された入力ベクタデータから中間言語で記述されたベクタデータを作成する。第１ビットマップデータ作成手段は、中間言語ベクタデータ作成手段によって作成されたベクタデータからビットマップデータを作成する。第２ビットマップデータ作成手段は、第１判断手段によって否定的に判断されたことを条件として、上記の記述フォーマットで記述された入力ベクタデータからビットマップデータを作成する。なお、上記の「条件として」という用語は、他の条件（ＡＮＤ条件、ＯＲ条件）が加わることを排除するものではない。以下の記載でも、「条件として」という用語を使用する場合は同様である。
【００１３】
なお、以下で記載される「グラデーション」もあくまで例示であり、この具体例によって本明細書によって開示される技術が限定的に解釈されることはない。例えば、中間言語作成プログラム記憶手段は、複数種類のＰＤＬのそれぞれについて、当該ＰＤＬのフォーマットで記述された線型グラデーションのベクタデータから中間言語で記述されたベクタデータを作成するためのプログラムを記憶している。一方において、中間言語作成プログラム記憶手段は、１種類（あるいは少ない種類）のＰＤＬのみが記述することができる非線型グラデーションのベクタデータから中間言語で記述されたベクタデータを作成するためのプログラムを記憶していない。この場合、様々なＰＤＬが独自のフォーマットに従って記述している線型グラデーションのベクタデータについては、第１判断手段で肯定的に判断され、中間言語で記述されたベクタデータが作成され、このベクタデータからビットマップデータが作成される。複数種類のＰＤＬを処理するためのプログラムにおいて、線型グラデーションのベクタデータ（中間言語）からビットマップデータを作成するためのプログラムを共通化することができる。このために、必要なプログラム量を少なくすることができる。
【００１４】
一方において、非線型グラデーションのベクタデータについては、第１判断手段で否定的に判断され、中間言語で記述されたベクタデータが作成されない。非線型グラデーションのベクタデータは、中間言語に変換されることなく、ビットマップデータに変換される。非線型グラデーションのベクタデータから中間言語で記述されたベクタデータを作成するためのプログラムが必要ないために、必要なプログラム量を少なくすることができる。この技術によると、複数種類のＰＤＬを処理することができるデバイスを少ないプログラム量で実現することができる。
【００１５】
ページ記述言語処理装置は、第１ビットマップデータ作成プログラム記憶手段と第２ビットマップデータ作成プログラム記憶手段とをさらに備えていてもよい。第１ビットマップデータ作成プログラム記憶手段は、中間言語で記述されたベクタデータからビットマップデータを作成するためのプログラムを記憶している。第２ビットマップデータ作成プログラム記憶手段は、複数種類のページ記述言語のそれぞれについて、当該ページ記述言語の上記の所定のフォーマット以外のフォーマットで記述されたベクタデータからビットマップデータを作成するためのプログラムを記憶している。なお、ここでの「複数種類のページ記述言語」は、中間言語作成プログラム記憶手段の「複数種類のページ記述言語」と同じであってもよいし、そうでなくてもよい。例えば、所定のＰＤＬで利用される全てのフォーマットから中間言語を作成することができる場合、第２ビットマップデータ作成プログラム記憶手段は、その所定のＰＤＬからビットマップデータを作成するためのプログラムを記憶していなくてもよい。
【００１６】
上記の構成の場合、第１ビットマップデータ作成手段は、第１ビットマップデータ作成プログラム記憶手段に記憶されているプログラムに従って、中間言語ベクタデータ作成手段によって作成されたベクタデータからビットマップデータを作成することができる。また、第２ビットマップデータ作成手段は、第２ビットマップデータ作成プログラム記憶手段に記憶されているプログラムに従って、上記の記述フォーマットで記述された入力ベクタデータからビットマップデータを作成することができる。
【００１７】
ページ記述言語処理装置は、入力ベクタデータを記述している上記の記述フォーマットが、第２ビットマップデータ作成プログラム記憶手段に記憶されているプログラムに対応するものであるのか否かを判断する第２判断手段をさらに備えていてもよい。この場合、第２ビットマップデータ作成手段は、第１判断手段によって否定的に判断され、かつ、第２判断手段によって肯定的に判断されたことを条件として、第２ビットマップデータ作成プログラム記憶手段に記憶されているプログラムに従って、上記の記述フォーマットで記述された入力ベクタデータの全部からビットマップデータを作成してもよい。一方において、第２ビットマップデータ作成手段は、第１判断手段によって否定的に判断され、かつ、第２判断手段によって否定的に判断されたことを条件として、上記の記述フォーマットで記述された入力ベクタデータの一部のみからビットマップデータを作成してもよい。なお、この構成を実現するために、入力ベクタデータの一部のみからビットマップデータを作成するための専用プログラムを用意しておいてもよい。
【００１８】
例えば、非常に特殊な非線型グラデーションを記述している入力ベクタデータの場合、その入力ベクタデータの全部を解釈することができないが、その入力ベクタデータの一部（例えば形状、色等）を解釈することができることがある。このような場合、その入力ベクタデータについては第２判断手段で否定的に判断され、その入力ベクタデータの一部のみ（即ち解釈可能な部分のみ）からビットマップデータが作成される。この結果、例えば、特殊な非線型グラデーションの全てをビットマップデータに変換することはできないが、例えば形状のような単純な部分のみについてはビットマップデータに変換することができる。
【００１９】
複数種類のページ記述言語の間で同じフォーマットが利用されることがある。例えば、ＰＤＦとＰＳは、同概念のフォーマットが利用されることがある。この場合、ＰＤＦの第１フォーマットで記述されたベクタデータからビットマップデータを作成するためにプログラムと、ＰＳの同概念の第１フォーマットで記述されたベクタデータからビットマップデータを作成するためにプログラムとを共通化することができる。この技術思想をより一般的に表現すると、以下のようになる。即ち、第２ビットマップデータ作成プログラム記憶手段に記憶されているプログラムでは、少なくとも２種類のページ記述言語の間で同概念のフォーマットで記述されたベクタデータからビットマップデータを作成するためのプログラムが共通化されていることが好ましい。この構成によると、必要なプログラム量をより少なくすることができる。
【００２０】
ページ記述言語で記述されたベクタデータから中間言語で記述されたベクタデータを作成するプログラムについても、上記と同様に共通化してもよい。即ち、中間言語作成プログラム記憶手段に記憶されているプログラムでは、少なくとも２種類のページ記述言語の間で共通するフォーマットで記述されたベクタデータから中間言語で記述されたベクタデータを作成するためのプログラムが共通化されていてもよい。
【００２１】
例えば、第１ＰＤＬと第２ＰＤＬの両方が同じ特殊色を表現することができるものとする。ただし、第１ＰＤＬと第２ＰＤＬでは、上記の特殊色を記述するためのフォーマットは異なるものとする。さらに、このような特殊色は一般色に変換されてからビットマップデータに変換されることがある。この例の場合、第１ＰＤＬのフォーマットで記述された特殊色から一般色に変換するためのプログラムと、第２ＰＤＬのフォーマットで記述された特殊色から一般色に変換するためのプログラムとが必要になる。このようなプログラム量を圧縮するために、以下の構成を採用してもよい。
【００２２】
即ち、中間言語作成プログラム記憶手段は、少なくとも２種類のページ記述言語のそれぞれについて、当該ページ記述言語の第１の所定のフォーマットで記述されたベクタデータから中間言語と異なる中間言語で記述されたベクタデータを作成するための第１プログラムと、上記の異なる中間言語で記述されたベクタデータから中間言語で記述されたベクタデータを作成するための第２プログラムとをさらに記憶していてもよい。この場合、中間言語ベクタデータ作成手段は、入力ベクタデータを記述している上記の記述フォーマットが第１プログラムに対応することを条件として、第１プログラムに従って、上記の記述フォーマットで記述された入力ベクタデータから上記の異なる中間言語で記述されたベクタデータを作成してもよい。また、中間言語ベクタデータ作成手段は、第２プログラムに従って、上記の異なる中間言語で記述されたベクタデータから中間言語で記述されたベクタデータを作成してもよい。
【００２３】
上記の「第１の所定のフォーマット」は、例えば、上記の特殊色を記述するためのフォーマットである。中間言語ベクタデータ作成手段は、第１ＰＤＬのフォーマットで記述された特殊色のベクタデータから上記の異なる中間言語（特殊色のベクタデータ）に変換することができ、第２ＰＤＬのフォーマットで記述された特殊色のベクタデータから上記の異なる中間言語（特殊色のベクタデータ）に変換することができる。即ち、同じベクタデータが作成される。そうすると、上記の異なる中間言語（特殊色のベクタデータ）から中間言語に変換するための第２プログラムを共通化することができる。即ち、この例の場合、第１ＰＤＬと第２ＰＤＬを処理するためのプログラムにおいて、特殊色から一般色に変換するためのプログラムを共通化することができる。このために、プログラム量を少なくすることができる。なお、上記の「特殊色」や「一般色」も単なる例示であり、この具体例によって本明細書によって開示される技術が限定的に解釈されることはない。色以外のものを表現するためのフォーマットについても、上記の異なる中間言語に変換した後に中間言語に変換する手法を採用してもよい。
【００２４】
例えば、上記の第１ＰＤＬと第２ＰＤＬにおいて、それらのＰＤＬで利用される全てのフォーマットを上記の異なる中間言語に変換しなくてもよい。即ち、一部のフォーマットのみを上記の異なる中間言語に変換し、他のフォーマットについては上記の異なる中間言語に変換せずに直接的に中間言語に変換してもよい（もしくは直接的にビットマップデータに変換してもよい）。上記の特殊色の例のように上記の異なる中間言語に変換した方がプログラム量を圧縮することができるフォーマットが存在する一方において、上記の異なる中間言語に変換する必要のないフォーマットが存在する。フォーマットに応じて処理を変えることが好ましい。これを実現するために、以下の構成を採用してもよい。
【００２５】
即ち、中間言語作成プログラム記憶手段は、上記の少なくとも２種類のページ記述言語のそれぞれについて、当該ページ記述言語の第２の所定のフォーマットで記述されたベクタデータから中間言語で記述されたベクタデータを作成するための第３プログラムを記憶していてもよい。この場合、中間言語ベクタデータ作成手段は、入力ベクタデータを記述している上記の記述フォーマットが第３プログラムに対応することを条件として、第３プログラムに従って、上記の記述フォーマットで記述された入力ベクタデータから中間言語で記述されたベクタデータを作成してもよい。
【００２６】
本明細書では、上記のページ記述言語処理装置を実現するためのコンピュータプログラムを開示する。このコンピュータプログラムは、複数種類のページ記述言語のそれぞれについて、当該ページ記述言語の所定のフォーマットで記述されたベクタデータから中間言語で記述されたベクタデータを作成するための中間言語作成プログラムを含んでいる。このコンピュータプログラムは、以下の各処理をコンピュータに実行させる。
（１）ページ記述言語で記述されたベクタデータを入力するベクタデータ入力処理。
（２）ベクタデータ入力処理で入力された入力ベクタデータを記述している記述フォーマットが、中間言語作成プログラムに対応するものであるのか否かを判断する判断処理。
（３）判断処理で肯定的に判断されたことを条件として、中間言語作成プログラムに従って、上記の記述フォーマットで記述された入力ベクタデータから中間言語で記述されたベクタデータを作成する中間言語ベクタデータ作成処理。
（４）中間言語ベクタデータ作成処理で作成されたベクタデータからビットマップデータを作成する第１ビットマップデータ作成処理。
（５）判断処理によって否定的に判断されたことを条件として、上記の記述フォーマットで記述された入力ベクタデータからビットマップデータを作成する第２ビットマップデータ作成処理。
このコンピュータプログラムによると、複数種類のＰＤＬを処理することができるデバイスを少ないプログラム量で実現することができる。
【発明を実施するための最良の形態】
【００２７】
ここでは、以下の実施例に記載の技術の特徴の一部をまとめておく。
（形態１）ＰＤＬで利用されるフォーマットは、コマンドと言い換えることができる。
（形態２）ページ記述言語処理装置は、中間言語に変換されるべき各コマンドのリスト（例えば以下の実施例のＡｌｌＰＤＬコマンドテーブル）を記憶していてもよい。
（形態３）ページ記述言語処理装置は、上記の異なる中間言語に変換されるべき各コマンドのリスト（例えば以下の実施例のＰＤＬ１／２コマンドテーブル）を記憶していてもよい。
【００２８】
（形態４）ＰＤＬデータから、中間言語、上記の異なる中間言語、又は、ビットマップデータに変換し、変換後のデータを第１バッファに書き込む処理が実行される。
（形態５）第１バッファに記憶されている上記の異なる中間言語で記述されたデータから中間言語に変換し、変換後のデータを第２バッファに書き込む処理が実行される。第１バッファに記憶されている中間言語で記述されたデータ又はビットマップデータは、そのまま第２バッファに書き込まれる。
（形態６）第２バッファに記憶されている中間言語で記述されたデータからビットマップデータに変換し、変換後のデータを所定のメモリ（例えばページメモリ、バンドメモリ）に書き込む処理が実行される。第２バッファに記憶されているビットマップデータは、そのまま上記の所定のメモリに書き込まれる。
【実施例】
【００２９】
図面を参照して実施例を説明する。図１は、本実施例のプリンタネットワークシステム２を示す。プリンタネットワークシステム２は、プリンタ１０とＰＣ４０とを備える。プリンタ１０とＰＣ４０は、相互に通信可能に接続されている。ＰＣ４０は、データファイル群（図示省略）を記憶している。ＰＣ４０は、ユーザの操作に応じて、データファイルを印刷するようにプリンタ１０に指示することができる。この場合、ＰＣ４０は、ユーザの指示に応じてデータファイルをＰＤＬに変換し、ＰＤＬで記述されたデータファイルをプリンタ１０に送信する。
【００３０】
（プリンタの構成）
図１では、プリンタ１０の構成を極めて簡単に示している。プリンタ１０は、ネットワークインターフェイス１２と制御部１４と記憶部１６と印刷機構２８等を有する。ネットワークインターフェイス１２には、ＬＡＮ等の通信回線３０が接続されている。通信回線３０は、ＰＣ４０に接続されている。プリンタ１０は、ネットワークインターフェイス１２と通信回線３０とを介してＰＣ４０と通信することができる。制御部１４は、記憶部１６に記憶されているプログラムに従って様々な処理を実行する。制御部１４が実行する処理の内容については、後で詳しく説明する。
【００３１】
記憶部１６は、ＲＯＭ、ＥＥＰＲＯＭ、ＲＡＭ等によって構成されている。記憶部１６は、プログラム記憶領域１８と第１バッファ２０と第２バッファ２２とページメモリ２４とその他の記憶領域２６を有する。プログラム記憶領域１８は、様々なプログラムを記憶している。プログラム記憶領域１８に記憶されているプログラムの内容については、後で詳しく説明する。第１バッファ２０と第２バッファ２２は、後述するＰＤＬ変換処理で利用されるバッファである。ページメモリ２４は、１ページの印刷媒体に印刷されるべきビットマップデータを記憶するためのメモリである。記憶領域２６は、上記の各記憶領域１８〜２４に記憶されるべき情報以外の情報を記憶することができる。印刷機構２８は、印刷媒体を搬送する機構と、印刷媒体に画像を形成する機構（例えばインクジェットタイプやレーザータイプの画像形成機構）とを有する。印刷機構２８は、ページメモリ２４の印刷用ＢＭＰデータに従って印刷媒体に画像を形成する。
【００３２】
本実施例のプリンタ１０は、ＰＤＬで記述されたベクタデータ（以下では「ＰＤＬデータ」と呼ぶことがある）を中間言語で記述されたベクタデータ（以下では「中間言語データ」と呼ぶことがある）に変換する。次いで、プリンタ１０は、中間言語データを多諧調ビットマップデータ（以下では「ＢＭＰデータ」と呼ぶことがある）に変換し、多諧調ＢＭＰデータをページメモリ２４に変換する。
【００３３】
（プログラムの内容）
続いて、プログラム記憶領域１８に記憶されているプログラムの内容について説明する。図２は、プログラム記憶領域１８の記憶内容の一例を示す。プログラム記憶領域１８は、ＰＤＬ１用プログラム５０とＰＤＬ２用プログラム６０とＰＤＬ３用プログラム７０とを記憶している。ＰＤＬ１用プログラム５０は、第１種類のＰＤＬ（以下では「第１ＰＤＬ」と呼ぶ）を処理するためのプログラムである。ＰＤＬ２用プログラム６０は、第２種類のＰＤＬ（以下では「第２ＰＤＬ」と呼ぶ）を処理するためのプログラムである。ＰＤＬ３用プログラム７０は、第３種類のＰＤＬ（以下では「第３ＰＤＬ」と呼ぶ）を処理するためのプログラムである。本実施例では、３つの種類のＰＤＬに関するプログラムのみを図示しているが、実際には、より多くの種類のＰＤＬに関するプログラムを記憶していてもよい。
【００３４】
ＰＤＬ１用プログラム５０は、ＰＤＬ１で利用される各コマンドについて、そのコマンドから他のデータに変換するためのプログラム５２，５４，５６を含んでいる。これらの各プログラム５２，５４，５６について、以下に詳しく説明する。
【００３５】
プログラム５２は、ＰＤＬ１で利用されるコマンドを全種類のＰＤＬに共通の中間言語（以下では「全ＰＤＬ共通中間言語」と呼ぶ）に変換するためのプログラムである。図２では、このプログラム５２の一例として、ＰＤＬ１のコマンドＣＭ１１（ＰＤＬ１−ＣＭ１１）を全ＰＤＬ共通中間言語のコマンドＣＭ１０（ＡｌｌＰＤＬ−ＣＭ１０）に変換するためのプログラムが示されている。
【００３６】
プログラム５４は、ＰＤＬ１で利用されるコマンドをＰＤＬ１とＰＤＬ２のみに共通の中間言語（以下では「ＰＤＬ１／２共通中間言語」と呼ぶ）に変換するためのプログラムである。図２では、このプログラム５４の一例として、ＰＤＬ１のコマンドＣＭ７１（ＰＤＬ１−ＣＭ７１）をＰＤＬ１／２共通中間言語のコマンドＣＭ７０（ＰＤＬ１／２−ＣＭ７０）に変換するためのプログラムが示されている。
【００３７】
プログラム５６は、ＰＤＬ１で利用されるコマンドをＢＭＰデータ（印刷用ＢＭＰデータ）に変換するためのプログラムである。図２では、このプログラム５６の一例として、ＰＤＬ１のコマンドＣＭ９１（ＰＤＬ１−ＣＭ９１）をＢＭＰデータに変換するためのプログラムが示されている。
【００３８】
ＰＤＬ２用プログラム６０は、ＰＤＬ２で利用される各コマンドについて、そのコマンドから他のデータに変換するためのプログラム６２，６４，６６を含んでいる。プログラム６２は、ＰＤＬ２で利用されるコマンド（例えばＰＤＬ２−ＣＭ１２）を全ＰＤＬ共通中間言語（例えばＡｌｌＰＤＬ−ＣＭ１０）に変換するためのプログラムである。プログラム６４は、ＰＤＬ２で利用されるコマンド（例えばＰＤＬ２−ＣＭ７２）をＰＤＬ１／２共通中間言語（例えばＰＤＬ１／２−ＣＭ７０）に変換するためのプログラムである。プログラム６６は、ＰＤＬ２で利用されるコマンド（例えばＰＤＬ２−ＣＭ９２）をＢＭＰデータに変換するためのプログラムである。
【００３９】
ＰＤＬ３用プログラム７０も、ＰＤＬ３で利用される各コマンドについて、そのコマンドから他のデータに変換するためのプログラム７２，７４を有している。プログラム７２は、ＰＤＬ３で利用されるコマンド（例えばＰＤＬ３−ＣＭ１３）を全ＰＤＬ共通中間言語（例えばＡｌｌＰＤＬ−ＣＭ１０）に変換するためのプログラムである。プログラム７４は、ＰＤＬ３で利用されるコマンド（例えばＰＤＬ３−ＣＭ９２）をＢＭＰデータに変換するためのプログラムである。なお、ＰＤＬ３用プログラム７０は、ＰＤＬ１／２共通中間言語に変換するためのプログラムを含んでいない。
【００４０】
図２を見るとわかるように、ＰＤＬ２とＰＤＬ３は、同概念のコマンドＣＭ９２を利用している。本実施例では、このように複数種類のＰＤＬの間で同概念のコマンドが利用される場合、そのコマンドを他のデータに変換するためのプログラムを共通化している。即ち、ＰＤＬ２−ＣＭ９２をＢＭＰデータに変換するためのプログラムと、ＰＤＬ３−ＣＭ９２をＢＭＰデータに変換するためのプログラムとを共通化している。具体的には、ＰＤＬ２用プログラム６０のみが、コマンドＣＭ９２をＢＭＰデータに変換するためのプログラムを含んでいる。なお、図示していないが、本実施例では、複数種類のＰＤＬの間で利用される同概念のコマンドから全ＰＤＬ共通中間言語に変換するためのプログラムも共通化している。また、ＰＤＬ１とＰＤＬ２の間で利用される同概念のコマンドからＰＤＬ１／２共通中間言語に変換するためのプログラムも共通化している。
【００４１】
プログラム記憶領域１８は、ＡｌｌＰＤＬコマンドリスト８０を記憶している。ＡｌｌＰＤＬコマンドリスト８０には、全ＰＤＬ共通中間言語に変換されるべき各ＰＤＬのコマンドが書き込まれている。例えば、ＰＤＬ１−ＣＭ１１は、全ＰＤＬ共通中間言語（ＡｌｌＰＤＬ−ＣＭ１０）に変換される。このために、ＡｌｌＰＤＬコマンドリスト８０は、ＰＤＬ１−ＣＭ１１を含んでいる。また、ＡｌｌＰＤＬコマンドリスト８０には、全ＰＤＬ共通中間言語に変換されるべきＰＤＬ１／２共通中間言語のコマンドが書き込まれている。例えば、詳しくは後述するが、ＰＤＬ１／２共通中間言語のコマンドＣＭ７０（ＰＤＬ１／２−ＣＭ７０）は、全ＰＤＬ共通中間言語（ＡｌｌＰＤＬ−ＣＭ７０）に変換される。このために、ＡｌｌＰＤＬコマンドリスト８０は、ＰＤＬ１／２−ＣＭ７０を含んでいる。
【００４２】
プログラム記憶領域１８は、ＰＤＬ１／２コマンドリスト８２を記憶している。ＰＤＬ１／２コマンドリスト８２は、ＰＤＬ１／２共通中間言語に変換されるべき各ＰＤＬ（第１ＰＤＬ及び第２ＰＤＬ）のコマンドが書き込まれている。例えば、ＰＤＬ１−ＣＭ７１は、ＰＤＬ１／２共通中間言語（ＰＤＬ１／２−ＣＭ７０）に変換される。このために、ＰＤＬ１／２コマンドリスト８２は、ＰＤＬ１−ＣＭ７１を含んでいる。
【００４３】
プログラム記憶領域１８は、ＰＤＬ１／２用プログラム９０を記憶している。ＰＤＬ１／２用プログラム９０は、ＰＤＬ１／２共通中間言語の各コマンドについて、そのコマンドから他のデータに変換するためのプログラム９２，９４を含んでいる。プログラム９２は、ＰＤＬ１／２共通中間言語のコマンドを全ＰＤＬ共通中間言語に変換するためのプログラムである。図２では、このプログラム９２の一例として、ＰＤＬ１／２共通中間言語のＣＭ７０（ＰＤＬ１／２−ＣＭ７０）を全ＰＤＬ共通中間言語（ＡｌｌＰＤＬ−ＣＭ７０）に変換するためのプログラムが示されている。また、プログラム９４は、ＰＤＬ１／２共通中間言語のコマンドをＢＭＰデータに変換するためのプログラムである。図２では、このプログラム９４の一例として、ＰＤＬ１／２共通中間言語のコマンドＣＭ８０（ＰＤＬ１／２−ＣＭ８０）をＢＭＰデータに変換するためのプログラムが示されている。
【００４４】
プログラム記憶領域１８は、ＡｌｌＰＤＬ用プログラム１００を記憶している。ＡｌｌＰＤＬ用プログラム１００は、全ＰＤＬ共通中間言語の各コマンドについて、そのコマンドからＢＭＰデータに変換するためのプログラムを有している。図２では、このプログラム１００の一例として、全ＰＤＬ共通中間言語のコマンドＣＭ１０（ＡｌｌＰＤＬ−ＣＭ１０）をＢＭＰデータに変換するためのプログラムが示されている。
【００４５】
さらに、プログラム記憶領域１８は、代替プログラム１１０とその他のプログラム１１２を記憶している。代替プログラム１１０は、ＰＤＬデータのあるコマンドをＢＭＰデータに変換することができない場合、そのコマンドの一部のみからＢＭＰデータに変換するためのプログラムである。例えば、本実施例では、特殊なグラデーションを記述するためのコマンドから、そのグラデーションの全てが表現されたＢＭＰデータを作成できない場合には、そのグラデーションの形状（輪郭）のみが表現されたＢＭＰデータが作成される。このような処理を実行するために、代替プログラム１１０が用意されている。
【００４６】
図３は、ＰＤＬの各コマンドの一例を示す。図３（１）に示されるように、ＰＤＬ１−ＣＭ１１とＰＤＬ２−ＣＭ１２とＰＤＬ３−ＣＭ１３は、単純色を利用して単純なグラデーション（以下では「単純色単純グラデーション」と呼ぶ）を記述するためのコマンドである。これらのコマンドは、図２の各プログラム５２，６２，７２に示されるように、全ＰＤＬ共通中間言語のコマンドＣＭ１０（ＡｌｌＰＤＬ−ＣＭ１０）に変換される。次いで、ＡｌｌＰＤＬ−ＣＭ１０は、図２のプログラム１００に示されるように、ＢＭＰデータに変換される。ＰＤＬ１−ＣＭ１１とＰＤＬ２−ＣＭ１２とＰＤＬ３−ＣＭ１３の間において、ベクタデータからＢＭＰデータに変換するためのプログラム１００を共通化することができるために、プログラム量を少なくすることができる。
【００４７】
また、図３（２）に示されるように、ＰＤＬ１−ＣＭ９１は、単純色を利用して複雑なグラデーション（以下では「単純色複雑グラデーション」と呼ぶ）を記述するためのコマンドである。ＰＤＬ１−ＣＭ９１で記述される単純色複雑グラデーションは、他のＰＤＬ（ＰＤＬ２やＰＤＬ３等）では記述することができないものである。本実施例では、このような少ない種類のＰＤＬのみ（本実施例ではＰＤＬ１のみ）で記述することができる単純色複雑グラデーションについては、中間言語に変換することなく、ＢＭＰデータに変換する。この場合、ＰＤＬ１−ＣＭ９１から直接的にＢＭＰデータに変換するためのプログラムがあれば足りる。仮に、ＰＤＬ１−ＣＭ９１を中間言語に変換する手法を採用すると、ＰＤＬ１−ＣＭ９１から全ＰＤＬ共通中間言語に変換するためのプログラムと、その全ＰＤＬ共通中間言語からＢＭＰデータに変換するためのプログラムが必要になる。しかしながら、ＰＤＬ−ＣＭ９１から変換された全ＰＤＬ共通中間言語をＢＭＰデータに変換するためのプログラムは、ＰＤＬ２やＰＤＬ３等の他のコマンドを処理する際に使用されることはないため、共通利用されない。従って、この場合のプログラム量は、ＰＤＬ１−ＣＭ９１から直接的にＢＭＰデータに変換するためのプログラムよりも多くなってしまう。本実施例では、ＰＤＬ１−ＣＭ９１から直接的にＢＭＰデータに変換するために、必要なプログラム量を少なくすることができる。
【００４８】
図３（３）に示されるように、ＰＤＬ１−ＣＭ７１とＰＤＬ２−ＣＭ７２は、特殊色を利用して単純なグラデーション（以下では「特殊色単純グラデーション」と呼ぶ）を記述するためのコマンドである。これらのコマンドは、図２の各プログラム５４，６４に示されるように、ＰＤＬ１／２共通中間言語のコマンドＣＭ７０（ＰＤＬ１／２−ＣＭ７０）に変換される。次いで、ＰＤＬ１／２−ＣＭ７０は、図２のプログラム９２に示されるように、全ＰＤＬ共通中間言語のコマンドＣＭ７０（ＡｌｌＰＤＬ−ＣＭ７０）に変換される。この際に、特殊色が単純色に変換される。次いで、ＡｌｌＰＤＬ−ＣＭ７０は、図２のプログラム１００に示されるように、ＢＭＰデータに変換される。ＰＤＬ１−ＣＭ７１とＰＤＬ２−ＣＭ７２の間において、特殊色から単純色に変換するためのプログラム９２を共通化することができるために、プログラム量を少なくすることができる。
【００４９】
図３（４）に示されるように、ＰＤＬ１−ＣＭ８１とＰＤＬ２−ＣＭ８２は、特殊色を利用して複雑なグラデーション（以下では「特殊色複雑グラデーション」と呼ぶ）を記述するためのコマンドである。これらのコマンドは、図２の各プログラム５４，６４に示されるように、ＰＤＬ１／２共通中間言語のコマンドＣＭ８０（ＰＤＬ１／２−ＣＭ８０）に変換される。ＰＤＬ１／２−ＣＭ８０は、中間言語に変換されることなく、ＢＭＰデータに変換される。
【００５０】
（ＰＤＬデータ変換処理）
続いて、制御部１４（図１参照）が実行するＰＤＬデータ変換処理の内容について説明する。図４と図５は、ＰＤＬデータ変換処理のフローチャートを示す。ＰＤＬデータ変換処理は、ＰＣ４０からの印刷指示及びＰＤＬデータがネットワークインターフェイス１２に入力されたことをトリガとして開始される。
【００５１】
制御部１４は、ＰＣ４０からのＰＤＬデータに含まれる先頭のコマンドを読み込む（Ｓ１０）。２回目以降のＳ１０の処理では、制御部１４は、上記のＰＤＬデータに含まれる次のコマンドを読み込む。このようなルーチンが繰り返される。制御部１４は、Ｓ１０で読み込まれたコマンドが印刷すべきコマンドであるのか否かを判断する（Ｓ１２）。例えば、印刷に不要なしおり用のコマンドの場合、Ｓ１２でＮＯと判断される。この場合、制御部１４は、Ｓ１０に戻って次のコマンドを読み込む。
【００５２】
Ｓ１２でＹＥＳの場合、制御部１４は、Ｓ１０で読み込まれたコマンドがＡｌｌＰＤＬコマンドリスト８０（図２参照）に存在するのか否かを判断する（Ｓ１４）。即ち、制御部１４は、Ｓ１０で読み込まれたコマンドが、全ＰＤＬ共通中間言語に変換するためのプログラム５２，６２，７２に対応しているのか否かを判断する。例えば、Ｓ１０で読み込まれたコマンドがＰＤＬ１−ＣＭ１１である場合、Ｓ１４でＹＥＳと判断される。この場合、制御部１４は、Ｓ１０で読み込まれたコマンドに対応するプログラム５２，６２，７２に従って、そのコマンドを全ＰＤＬ共通中間言語に変換する（Ｓ１６）。具体的には、Ｓ１０で読み込まれたコマンドのベクタデータを全ＰＤＬ共通中間言語のベクタデータに変換する。上記のＰＤＬ１−ＣＭ１１の例の場合、ＡｌｌＰＤＬ−ＣＭ１０に変換される（図２のプログラム５２及び図３（１）参照）。Ｓ１６を終えると、図５のＳ３０に進む。
【００５３】
Ｓ１４でＮＯの場合、制御部１４は、Ｓ１０で読み込まれたコマンドがＰＤＬ１／２コマンドリスト８２（図２参照）に存在するのか否かを判断する（Ｓ１８）。即ち、制御部１４は、Ｓ１０で読み込まれたコマンドが、ＰＤＬ１／２共通中間言語に変換するためのプログラム５４，６４に対応しているのか否かを判断する。例えば、Ｓ１０で読み込まれたコマンドがＰＤＬ１−ＣＭ７１である場合、Ｓ１８でＹＥＳと判断される。この場合、制御部１４は、Ｓ１０で読み込まれたコマンドに対応するプログラム５４，６４に従って、そのコマンドをＰＤＬ１／２共通中間言語に変換する（Ｓ２０）。上記のＰＤＬ１−ＣＭ７１の例の場合、ＰＤＬ１／２−ＣＭ７０に変換される（図２のプログラム５４及び図３（３）参照）。Ｓ２０を終えると、図５のＳ３０に進む。
【００５４】
Ｓ１８でＮＯの場合、制御部１４は、Ｓ１０で読み込まれたコマンドからＢＭＰデータを作成するためのプログラムが存在するのか否かを判断する（Ｓ２２）。例えば、Ｓ１０で読み込まれたコマンドがＰＤＬ１−ＣＭ９１である場合、Ｓ２２でＹＥＳと判断される。この場合、制御部１４は、Ｓ１０で読み込まれたコマンドに対応するプログラム５６，６６，７４に従って、そのコマンドをＢＭＰデータに変換する（Ｓ２４）。例えば、図３（２）に示されるように、ＰＤＬ１−ＣＭ９１は、中間言語に変換されることなく、ＢＭＰデータに変換される。Ｓ２４を終えると、図５のＳ３０に進む。
【００５５】
Ｓ２２でＮＯの場合、Ｓ１０で読み込まれたコマンドは、いずれのプログラム５０，６０，７０にも対応していないことになる。即ち、Ｓ１０で読み込まれたコマンドは、そのコマンドで表現されるＢＭＰデータを作成不能なコマンドである。この場合、制御部１４は、代替プログラム１１０に従って、Ｓ１０で読み込まれたコマンドの一部分のみをＢＭＰデータに変換する（Ｓ２６）。例えば、Ｓ１０で読み込まれたコマンドの中に輪郭を示す座標データと、複雑なグラデーションで輪郭を塗りつぶす指示が存在する場合、制御部１４は、複雑なグラデーションを単純な色に代替し、その座標データが正確に反映されたＢＭＰデータを作成する。Ｓ２６を終えると、図５のＳ３０に進む。
【００５６】
図５のＳ３０では、制御部１４は、Ｓ１６、Ｓ２０、Ｓ２４、又は、Ｓ２６で作成されたデータ（全ＰＤＬ共通中間言語、ＰＤＬ１／２共通中間言語、ＢＭＰデータ）を第１バッファ２０に書き込む。なお、詳しくは後述するが、このＢＭＰデータについては、そのままのデータが後工程（図７のＳ７４）でページメモリ２４に書き込まれる。第１バッファ２０にＢＭＰデータを書き込む際には、そのＢＭＰデータにページメモリ２４上の位置を示すデータを付加しておく。このデータを参照することによって、ＢＭＰデータをページメモリ２４に書き込むことが可能になる。なお、本実施例では採用していない手法ではあるが、Ｓ３０の段階において、ＢＭＰデータをページメモリ２４に書き込むようにしてもよい。
【００５７】
次いで、制御部１４は、ＰＤＬデータの１ページ分の全てのコマンドを解析したのか否かを判断する（Ｓ３２）。ここでＮＯの場合、制御部１４は、Ｓ１０に戻って次のコマンドを読み込む。一方において、Ｓ３２でＹＥＳの場合、１ページ分の全てのコマンドのそれぞれが、他のデータ（全ＰＤＬ共通中間言語、ＰＤＬ１／２共通中間言語、ＢＭＰデータ）に変換され、第１バッファ２０に記憶されている。この場合、制御部１４は、第１バッファ記憶内容解析処理（Ｓ３４）と第２バッファ記憶内容解析処理（Ｓ３６）を順に実行する。なお、制御部１４は、ＰＤＬデータの１ページ単位でＰＤＬデータ変換処理を実行する。従って、ＰＤＬデータに２ページ目以降が存在する場合、１ページ目のＰＤＬデータ変換処理を終えると、２ページ目以降のＰＤＬデータ変換処理を実行する。なお、制御部１４は、複数ページのＰＤＬデータ変換処理を並列的に実行してもよい。
【００５８】
（第１バッファ記憶内容解析処理）
図６は、図５のＳ３４で実行される第１バッファ記憶内容解析処理のフローチャートを示す。制御部１４は、第１バッファ２０の先頭部分の記憶内容を読み込む（Ｓ４０）。２回目以降のＳ４０の処理では、制御部１４は、第１バッファ２０の次の記憶内容を読み込む。このようなルーチンが繰り返される。制御部１４は、Ｓ４０で読み込まれたデータが、ＰＤＬ１／２共通中間言語で記述されたコマンドであるのか否かを判断する（Ｓ４２）。ここでＮＯの場合、Ｓ４０で読み込まれたデータが、全ＰＤＬ共通中間言語又はＢＭＰデータであることを意味する。この場合、制御部１４は、Ｓ４０で読み込まれたデータをそのまま第２バッファ２２に書き込む（Ｓ５４）。
【００５９】
一方において、Ｓ４２でＹＥＳの場合、制御部１４は、Ｓ４０で読み込まれたコマンド（ＰＤＬ１／２共通中間言語）がＡｌｌＰＤＬコマンドリスト８０（図２参照）に存在するのか否かを判断する（Ｓ４４）。即ち、制御部１４は、Ｓ４０で読み込まれたコマンドが、全ＰＤＬ共通中間言語に変換するためのプログラム９２に対応しているのか否かを判断する。例えば、Ｓ４０で読み込まれたコマンドがＰＤＬ１／２−ＣＭ７０である場合、Ｓ４４でＹＥＳと判断される。この場合、制御部１４は、Ｓ４０で読み込まれたコマンドに対応するプログラム９２に従って、そのコマンドを全ＰＤＬ共通中間言語に変換する（Ｓ４６）。上記のＰＤＬ１／２−ＣＭ７０の例の場合、ＡｌｌＰＤＬ−ＣＭ７０に変換される（図２のプログラム９２及び図３（３）参照）。この過程で特殊色が単純色に変換される。次いで、制御部１４は、Ｓ４６で作成されたデータ（全ＰＤＬ共通中間言語）を第２バッファ２２に書き込む（Ｓ５４）。
【００６０】
例えば、Ｓ４０で読み込まれたコマンドがＰＤＬ１／２−ＣＭ８０である場合、Ｓ４４でＮＯと判断される。この場合、制御部１４は、Ｓ４０で読み込まれたコマンドからＢＭＰデータを作成するためのプログラムが存在するのか否かを判断する（Ｓ４８）。例えば、Ｓ４０で読み込まれたコマンドがＰＤＬ１／２−ＣＭ８０である場合、Ｓ４８でＹＥＳと判断される。この場合、制御部１４は、Ｓ４０で読み込まれたコマンドに対応するプログラム９４に従って、そのコマンドをＢＭＰデータに変換する（Ｓ５０）。上記のＰＤＬ１／２−ＣＭ８０の例の場合、ＢＭＰデータに変換される（図２のプログラム９４及び図３（４）参照）。次いで、制御部１４は、Ｓ５０で作成されたＢＭＰデータを第２バッファ２２に書き込む（Ｓ５４）。
【００６１】
Ｓ４８でＮＯの場合、制御部１４は、代替プログラム１１０に従って、Ｓ４０で読み込まれたコマンド（ＰＤＬ１／２共通中間言語）の一部分をＢＭＰデータに変換する（Ｓ５２）。この処理は、図４のＳ２６と同様である。次いで、制御部１４は、Ｓ５２で作成されたＢＭＰデータを第２バッファ２２に書き込む（Ｓ５４）。
【００６２】
Ｓ５４を終えると、制御部１４は、第１バッファ２０に記憶されている１ページ分の全てのコマンドを解析したのか否かを判断する（Ｓ５６）。ここでＮＯの場合、制御部１４は、Ｓ４０に戻って次のコマンドを読み込む。Ｓ５６でＹＥＳの場合、第１バッファ記憶内容解析処理が終了する。次いで、制御部１４は、第２バッファ記憶内容解析処理を実行する（図５のＳ３６）。
【００６３】
（第２バッファ記憶内容解析処理）
図７は、図５のＳ３６で実行される第２バッファ記憶内容解析処理のフローチャートを示す。制御部１４は、第２バッファ２２の先頭部分の記憶内容を読み込む（Ｓ７０）。２回目以降のＳ７０の処理では、制御部１４は、第２バッファ２２の次の記憶内容を読み込む。このようなルーチンが繰り返される。制御部１４は、Ｓ７０で読み込まれたデータがＢＭＰデータであるのか否かを判断する（Ｓ７２）。ここでＹＥＳの場合、制御部１４は、Ｓ７０で読み込まれたＢＭＰデータをそのままページメモリ２４に書き込む（Ｓ７４）。
【００６４】
一方において、Ｓ７０で読み込まれたデータが全ＰＤＬ共通中間言語のコマンドである場合、Ｓ７２でＮＯと判断される。この場合、制御部１４は、Ｓ７０で読み込まれた全ＰＤＬ共通中間言語のコマンドに対応するプログラム１００に従って、そのコマンドをＢＭＰデータに変換する（Ｓ７６）。例えば、ＡｌｌＰＤＬ−ＣＭ１０やＡｌｌＰＤＬ−ＣＭ７０がＢＭＰデータに変換される（図２のプログラム１００及び図３（１）、（３）参照）。制御部１４は、ＢＭＰデータをページメモリ２４に書き込む。
【００６５】
Ｓ７４又はＳ７６を終えると、制御部１４は、第２バッファ２２に記憶されている１ページ分の全てのコマンドを解析したのか否かを判断する（Ｓ７８）。ここでＮＯの場合、制御部１４は、Ｓ７０に戻って次のコマンドを読み込む。Ｓ７８でＹＥＳの場合、第２バッファ記憶内容解析処理が終了する。これにより、１ページ分のページメモリ２４が完成する。制御部１４は、ページメモリ２４の記憶内容（ＢＭＰデータ）に従って印刷するように、印刷機構２８に指示する。これにより、印刷機構２８は、印刷媒体の搬送を開始し、印刷媒体に印刷する。
【００６６】
本実施例のＰＤＬ変換処理について詳しく説明した。本実施例によると、ＰＤＬ１〜ＰＤＬ３が独自のフォーマットに従って記述している単純色単純グラデーション（図３（１）参照）のベクタデータについては、全ＰＤＬ共通中間言語に変換される。次いで、全ＰＤＬ共通中間言語で記述されたベクタデータからＢＭＰデータが作成される。ＰＤＬ１〜ＰＤＬ３を処理するためのプログラムにおいて、全ＰＤＬ共通中間言語のベクタデータからＢＭＰデータを作成するためのプログラム１００を共通化することができる。このために、必要なプログラム量を少なくすることができる。また、単純色複雑グラデーション（図３（２）参照）のベクタデータについては、中間言語に変換されることなく、ＢＭＰデータに変換される。単純色複雑グラデーションのベクタデータから全ＰＤＬ共通中間言語に変換するためのプログラムが必要ないために、必要なプログラム量を少なくすることができる。
【００６７】
また、本実施例では、代替プログラム１１０を利用するために、コマンドから表現されるＢＭＰデータを作成不可能であっても、そのコマンドの一部からＢＭＰデータを作成することができる。また、本実施例では、複数種類のＰＤＬの間で同じコマンド（例えばＰＤＬ２とＰＤＬ３のＣＭ９２）が利用される場合に、そのコマンドから別のデータ（全ＰＤＬ共通中間言語、ＰＤＬ１／２共通中間言語、ＢＭＰデータ）を作成するためにプログラムを共通化している。このために、必要なプログラム量が少ない。
【００６８】
また、本実施例では、ＰＤＬデータからＰＤＬ１／２共通中間言語に変換し、ＰＤＬ１／２共通中間言語から全ＰＤＬ共通中間言語に変換する手法を採用している。このために、例えば、特殊色を一般色に変換するためのプログラムを共通化することができる（図３（３）参照）。この手法を採用しているために、必要なプログラム量をより少なくすることができる。
【００６９】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
【００７０】
（１）例えば、上記の実施例では、図４のＳ２４又はＳ２６（もしくは図６のＳ５０又はＳ５２）のタイミングでＢＭＰデータに変換している。しかしながら、ＢＭＰデータに変換するタイミングは、図７のＳ７２のタイミングであってもよい。例えば、図４のＳ１０で読み込まれたコマンドがＰＤＬ１−ＣＭ９１である場合、図４のＳ２４においてＰＤＬ１−ＣＭ９１を第１バッファ２０に書き込み、図６のＳ５４でもＰＤＬ１−ＣＭ９１を第２バッファ２２に書き込み、図７のＳ７２においてＰＤＬ１−ＣＭ９１をＢＭＰデータに変換してもよい。このようにすると、比較的に大きいデータサイズのＢＭＰデータをバッファ２０，２２に格納する必要がないために、必要なメモリサイズを少なくすることができる。この技術思想をより一般的に表現すると、以下のように記述することができる。
【００７１】
即ち、ページ記述言語で記述されたデータからビットマップデータを作成するページ記述言語処理装置であり、
複数種類のページ記述言語のそれぞれについて、当該ページ記述言語の所定のフォーマットで記述されたベクタデータから中間言語で記述されたベクタデータを作成するためのプログラムを記憶している中間言語作成プログラム記憶手段と、
ページ記述言語で記述されたベクタデータを入力するベクタデータ入力手段と、
ベクタデータ入力手段に入力された入力ベクタデータを記述している記述フォーマットが、中間言語作成プログラム記憶手段に記憶されている前記プログラムに対応するものであるのか否かを判断する第１判断手段と、
バッファメモリと、
第１判断手段によって肯定的に判断されたことを条件として、中間言語作成プログラム記憶手段に記憶されている前記プログラムに従って、前記記述フォーマットで記述された前記入力ベクタデータから前記中間言語で記述されたベクタデータを作成し、そのベクタデータを前記バッファメモリに書き込む第１メモリ書き込み作成手段と、
第１判断手段によって否定的に判断されたことを条件として、前記記述フォーマットで記述された前記入力ベクタデータを前記バッファメモリに書き込む第２メモリ書き込み手段と、
ビットマップデータを記憶するためのビットマップデータメモリと、
バッファメモリに記憶されているデータを読み込むデータ読み込み手段と、
データ読み込み手段によって読み込まれたデータが前記中間言語で記述されたベクタデータであることを条件として、そのベクタデータからビットマップデータを作成し、そのビットマップデータを前記ビットマップデータメモリに書き込む第３メモリ書き込み手段と、
データ読み込み手段によって読み込まれたデータが前記記述フォーマットで記述された前記入力ベクタデータであることを条件として、その入力ベクタデータからビットマップデータを作成し、そのビットマップデータを前記ビットマップデータメモリに書き込む第４メモリ書き込み手段と
を備えるページ記述言語処理装置。
【００７２】
（２）全てのコマンドが全ＰＤＬ共通中間言語に変換されるＰＤＬ４が存在していてもよい。
（３）全てのコマンドが直接的にＢＭＰデータに変換されるＰＤＬ５が存在していてもよい。
（４）ＰＤＬ１又はＰＤＬ２は、全てのコマンドがＰＤＬ１／２共通中間言語に変換されてもよい。
（５）ＰＤＬ１又はＰＤＬ２において、全ＰＤＬ共通中間言語に変換されるコマンドが存在しなくてもよい（即ちプログラム５２又は６２が存在しなくてもよい）。
（６）ＰＤＬ１、ＰＤＬ２、又は、ＰＤＬ３において、ＢＭＰデータに変換されるコマンドが存在しなくてもよい（即ちプログラム５６、６６、又は、７４が存在しなくてもよい）。
（７）ＰＤＬ１−ＣＭ８１及び／又はＰＤＬ２−ＣＭ８２は、ＰＤＬ１／２共通中間言語（ＰＤＬ１／２−ＣＭ８０）に変換されないで、直接的にＢＭＰデータに変換されてもよい。
【００７３】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【図面の簡単な説明】
【００７４】
【図１】プリンタネットワークシステムの構成の一例を示す。
【図２】プログラム記憶領域の記憶内容の一例を示す。
【図３】ＰＤＬの各コマンドが他のデータに変換される様子の一例を示す。
【図４】ＰＤＬデータ変換処理のフローチャートを示す。
【図５】図４の続きのフローチャートを示す。
【図６】第１バッファ記憶内容解析処理のフローチャートを示す。
【図７】第２バッファ記憶内容解析処理のフローチャートを示す。
【符号の説明】
【００７５】
１０：プリンタ
１２：ネットワークインターフェイス
１４：制御部
１６：記憶部
１８：プログラム記憶領域
２０，２２：バッファ
２４：ページメモリ
２８：印刷機構
５０：第１ＰＤＬ用プログラム
５２：第１ＰＤＬのコマンドから全ＰＤＬ共通中間言語に変換するためのプログラム
５４：第１ＰＤＬのコマンドからＰＤＬ１／２共通中間言語に変換するためのプログラム
５６：第１ＰＤＬのコマンドからＢＭＰデータに変換するためのプログラム
６０：第２ＰＤＬ用プログラム
６２：第２ＰＤＬのコマンドから全ＰＤＬ共通中間言語に変換するためのプログラム
６４：第２ＰＤＬのコマンドからＰＤＬ１／２共通中間言語に変換するためのプログラム
６６：第２ＰＤＬのコマンドからＢＭＰデータに変換するためのプログラム
７０：第３ＰＤＬ用プログラム
７２：第３ＰＤＬのコマンドから全ＰＤＬ共通中間言語に変換するためのプログラム
７４：第３ＰＤＬのコマンドからＢＭＰデータに変換するためのプログラム
８０：ＡｌｌＰＤＬコマンドリスト
８２：ＰＤＬ１／２コマンドリスト
９０：ＰＤＬ１／２用プログラム
９２：ＰＤＬ１／２共通中間言語から全ＰＤＬ共通中間言語に変換するためのプログラム
９４：ＰＤＬ１／２共通中間言語からＢＭＰデータに変換するためのプログラム
１００：ＡｌｌＰＤＬ用プログラム
１１０：代替プログラム
【図１】
0004613975.tif 000002
【図２】
0004613975.tif 000003
【図３】
0004613975.tif 000004
【図４】
0004613975.tif 000005
【図５】
0004613975.tif 000006
【図６】
0004613975.tif 000007
【図７】
0004613975.tif 000008