(57)【要約】【課題】論理ページを解釈する手段とフォーム等のキャッシュ対象の要素を解釈する手段の数の比率が固定である場合よりも、印刷画像データの生成速度を高くする。【解決手段】システムは、例えば２つの論理ページ解釈部と、１つの両用解釈部とを有する。両用解釈部は、論理ページ解釈部として機能させるかフォーム解釈部として機能させるかを切り替えることができる。この切り替えを制御する手段は、フォーム解釈の進捗度合いが論理ページ解釈の進捗度合いよりも大幅に進んでいる場合（Ｓ１００４の判定結果がＹ）、両用解釈部を論理ページ解釈部に設定する（Ｓ１００６）。一方、フォーム解釈の進捗度合いが論理ページ解釈の進捗度合いに追いつかれそうになった場合（Ｓ１０１２の判定結果がＹ）、両用解釈部を論理ページ解釈部に設定する（Ｓ１０１４）。【選択図】図９
2015001882.tif 000002
【特許請求の範囲】
【請求項１】
印刷データ内の論理ページを解釈して解釈結果を出力する論理ページ解釈手段、及び、前記印刷データ内の各論理ページに含まれるキャッシュ対象要素を解釈して解釈結果をキャッシュ手段に記憶させるキャッシュ用解釈手段、として機能することが可能な１以上の両用解釈手段と、
前記各両用解釈手段を、前記論理ページ解釈手段及び前記キャッシュ用解釈手段のいずれとして機能させるかを切り替える切り替え手段と、
前記各論理ページ解釈手段から出力された各論理ページの解釈結果と、前記キャッシュ手段に記憶された前記キャッシュ対象要素の解釈結果とを用いて、前記各論理ページの印刷画像データを生成し、生成した印刷画像データを印刷装置に供給する印刷画像データ生成手段と、
を有し、
前記キャッシュ用解釈手段は、前記キャッシュ手段に解釈結果が記憶されていないキャッシュ対象要素を前記印刷データから見つけると、見つけたキャッシュ対象要素を解釈し、その解釈結果を、あらかじめ定められた生成規則に従って当該キャッシュ対象要素のデータから生成したキャッシュ識別情報と対応づけて前記キャッシュ手段に記憶させ、
前記論理ページ解釈手段は、それぞれ、処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、
前記印刷画像データ生成手段は、前記各論理ページ解釈手段が出力した各論理ページの解釈結果から印刷画像データを生成する際、前記論理ページの解釈結果から前記キャッシュ参照コマンドを見つけると、当該キャッシュ参照コマンドに含まれる前記キャッシュ識別情報に対応する解釈結果を前記キャッシュ手段から取得し、取得した解釈した解釈結果を用いて当該キャッシュ識別情報に対応するキャッシュ対象要素の印刷画像データを生成し、当該論理ページの印刷画像データに合成し、
前記切り替え手段は、前記キャッシュ用解釈手段による前記印刷データ中のキャッシュ対象要素の解釈の進捗度合いと、前記論理ページ解釈手段による前記印刷データ中の論理ページの解釈の進捗度合いと、の差分に基づき、前記１以上の両用解釈手段のうち前記キャッシュ用解釈手段として機能させるものと前記論理ページ解釈手段として機能させるものとの比率を制御する、
ことを特徴とする印刷画像処理システム。
【請求項２】
前記切り替え手段は、前記キャッシュ用解釈手段による前記印刷データ中のキャッシュ対象要素の解釈の進捗度合いと、前記論理ページ解釈手段による前記印刷データ中の論理ページの解釈の進捗度合いと、の差分があらかじめ定めた範囲内に収まるよう、前記１以上の両用解釈手段のうち前記キャッシュ用解釈手段として機能させるものと前記論理ページ解釈手段として機能させるものとの比率を制御することを特徴とする請求項１に記載の印刷画像処理システム。
【請求項３】
前記切り替え手段は、前記キャッシュ用解釈手段による前記印刷データ中のキャッシュ対象要素の解釈の進捗度合いから、前記論理ページ解釈手段による前記印刷データ中の論理ページの解釈の進捗度合いを減算して得られる先行度が大きいほど、前記１以上の両用解釈手段のうち前記キャッシュ用解釈手段として機能させるものの比率を小さくする、ことを特徴とする請求項１又は２に記載の印刷画像処理システム。
【請求項４】
前記切り替え手段は、前記キャッシュ用解釈手段による前記印刷データ中のキャッシュ対象要素の解釈の進捗度合いから、前記論理ページ解釈手段による前記印刷データ中の論理ページの解釈の進捗度合いを減算して得られる先行度が小さいほど、前記１以上の両用解釈手段のうち前記キャッシュ用解釈手段として機能させるものの比率を大きくする、ことを特徴とする請求項１〜３のいずれか１項に記載の印刷画像処理システム。
【請求項５】
コンピュータを、
印刷データ内の論理ページを解釈して解釈結果を出力する論理ページ解釈手段、及び、前記印刷データ内の各論理ページに含まれるキャッシュ対象要素を解釈して解釈結果をキャッシュ手段に記憶させるキャッシュ用解釈手段、として機能することが可能な１以上の両用解釈手段、
前記各両用解釈手段を、前記論理ページ解釈手段及び前記キャッシュ用解釈手段のいずれとして機能させるかを切り替える切り替え手段、
前記各論理ページ解釈手段から出力された各論理ページの解釈結果と、前記キャッシュ手段に記憶された前記キャッシュ対象要素の解釈結果とを用いて、前記各論理ページの印刷画像データを生成し、生成した印刷画像データを印刷装置に供給する印刷画像データ生成手段、
として機能させるためのプログラムであって、
前記キャッシュ用解釈手段は、前記キャッシュ手段に解釈結果が記憶されていないキャッシュ対象要素を前記印刷データから見つけると、見つけたキャッシュ対象要素を解釈し、その解釈結果を、あらかじめ定められた生成規則に従って当該キャッシュ対象要素のデータから生成したキャッシュ識別情報と対応づけて前記キャッシュ手段に記憶させ、
前記論理ページ解釈手段は、それぞれ、処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、
前記印刷画像データ生成手段は、前記各論理ページ解釈手段が出力した各論理ページの解釈結果から印刷画像データを生成する際、前記論理ページの解釈結果から前記キャッシュ参照コマンドを見つけると、当該キャッシュ参照コマンドに含まれる前記キャッシュ識別情報に対応する解釈結果を前記キャッシュ手段から取得し、取得した解釈した解釈結果を用いて当該キャッシュ識別情報に対応するキャッシュ対象要素の印刷画像データを生成し、当該論理ページの印刷画像データに合成し、
前記切り替え手段は、前記キャッシュ用解釈手段による前記印刷データ中のキャッシュ対象要素の解釈の進捗度合いと、前記論理ページ解釈手段による前記印刷データ中の論理ページの解釈の進捗度合いと、の差分に基づき、前記１以上の両用解釈手段のうち前記キャッシュ用解釈手段として機能させるものと前記論理ページ解釈手段として機能させるものとの比率を制御する、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷画像処理システムおよびプログラムに関する。
【背景技術】
【０００２】
一般に、パーソナルコンピュータから印刷装置に送られる印刷文書データは、ＰｏｓｔＳｃｒｉｐｔ（登録商標）やＰＤＦ( Portable Data Format: ISO 32000-1) などのページ記述言語（以下、ＰＤＬと呼ぶ。ＰＤＬはPage Description Languageの略）で記述されている。印刷装置では、ＲＩＰ( Raster Image Processor)と呼ばれるデータ処理装置により印刷文書データをビットマップ形式（ラスター形式とも呼ばれる）の画像データに変換し、その画像データをプリントエンジンにより印刷する。また、ＰＤＬデータを直接ラスター画像に変換する方式の他に、ＰＤＬデータをＰＤＬコマンドよりは粒度の小さいディスプレイリスト等の中間言語形式のデータに変換してバッファし、バッファした中間言語形式のデータをビットマップ形式に変換するという２段階の変換を行う印刷装置もよく知られている。
【０００３】
従来、ＰＤＬデータからビットマップ形式又は中間言語形式の画像データへの変換を、ページ単位などのあらかじめ定められた単位ごとに、複数のデータ処理装置で並列的に実行するシステムも知られている。
【０００４】
また、従来、あるデータ処理装置が印刷データ中のＰＤＬで記述された文書要素（オブジェクト）をビットマップ形式又は中間言語形式へ変換した場合に、その変換結果のデータを文書要素の識別情報と対応づけてキャッシュメモリにキャッシュし、後で同じ又は異なるデータ処理装置が同じ文書要素を変換する必要が生じた場合には、キャッシュされたデータを使用することで、変換処理を省略することも行われている。
【０００５】
特許文献１には、ページ記述言語の印刷データを印刷装置で取り扱い可能なビットマップ等の画像データに変換するための機構を、ＰＤＬから中間データへ変換する中間データ生成部と、中間データを画像データに変換する描画データ生成部の２段階に分け、中間データ生成部と描画データ生成部をそれぞれ複数並列動作させるシステムが開示されている。特許文献１の図１３〜図２０に関する説明では、複数のページで繰り返し利用されるフォームの取り扱いについての例が示されている。その説明では、フォームの中間データ又は画像データを描画データ生成部内のキャッシュメモリに保存し、そのフォームが含まれるページの画像データを生成する際にキャッシュメモリから取り出したフォームのデータを用いることが示されている。
【０００６】
特許文献２に開示される印刷文書変換装置では、ＲＩＰモジュール制御部が、ＲＩＰモジュールを１つのプロセスとして起動する。ＲＩＰモジュールは、内部で複数のページ変換処理スレッドを走らせ、それら各スレッドにより複数のページを並列的にＲＩＰ処理する。ページ割り当て部は、各ページ変換処理スレッドに対して、印刷文書データのうちのそれぞれ異なるページを割り当てる。複数のページ変換処理スレッドは、同じメモリ空間内にある共有キャッシュを利用することで、プロセス間通信を行うことなく、共有キャッシュ内にある他のページ変換処理スレッドの変換結果（例えばフォームの画像データ等）を再利用する。
【０００７】
特許文献３に開示された印刷システムでは、ＰＤＬの印刷データをラスター画像データに変換する処理のための装置を、前段のフロントエンド装置と後段のバックエンド装置との２つの段階の装置に分けている。そして、前段は複数のフロントエンド装置による並列構成とするとともに、後段は１つのバックエンド装置内に搭載された複数の処理回路による並列構成としている。バックエンド装置内の複数の処理回路は、そのバックエンド装置内にあるキャッシュメモリを共用する。キャッシュメモリ内には、フォームなど、複数のページで共通利用されるオブジェクトのデータがキャッシュされる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１１−０７０３３７号公報
【特許文献２】特開２０１１−２３０４７０号公報
【特許文献３】特開２０１２−２００９５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、論理ページを解釈する手段とフォーム等のキャッシュ対象の要素を解釈する手段の数の比率が固定である場合よりも、印刷画像データの生成速度を高くすることを目的とする。
【課題を解決するための手段】
【００１０】
請求項１に係る発明は、印刷データ内の論理ページを解釈して解釈結果を出力する論理ページ解釈手段、及び、前記印刷データ内の各論理ページに含まれるキャッシュ対象要素を解釈して解釈結果をキャッシュ手段に記憶させるキャッシュ用解釈手段、として機能することが可能な１以上の両用解釈手段と、前記各両用解釈手段を、前記論理ページ解釈手段及び前記キャッシュ用解釈手段のいずれとして機能させるかを切り替える切り替え手段と、前記各論理ページ解釈手段から出力された各論理ページの解釈結果と、前記キャッシュ手段に記憶された前記キャッシュ対象要素の解釈結果とを用いて、前記各論理ページの印刷画像データを生成し、生成した印刷画像データを印刷装置に供給する印刷画像データ生成手段と、を有し、前記キャッシュ用解釈手段は、前記キャッシュ手段に解釈結果が記憶されていないキャッシュ対象要素を前記印刷データから見つけると、見つけたキャッシュ対象要素を解釈し、その解釈結果を、あらかじめ定められた生成規則に従って当該キャッシュ対象要素のデータから生成したキャッシュ識別情報と対応づけて前記キャッシュ手段に記憶させ、前記論理ページ解釈手段は、それぞれ、処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、前記印刷画像データ生成手段は、前記各論理ページ解釈手段が出力した各論理ページの解釈結果から印刷画像データを生成する際、前記論理ページの解釈結果から前記キャッシュ参照コマンドを見つけると、当該キャッシュ参照コマンドに含まれる前記キャッシュ識別情報に対応する解釈結果を前記キャッシュ手段から取得し、取得した解釈した解釈結果を用いて当該キャッシュ識別情報に対応するキャッシュ対象要素の印刷画像データを生成し、当該論理ページの印刷画像データに合成し、前記切り替え手段は、前記キャッシュ用解釈手段による前記印刷データ中のキャッシュ対象要素の解釈の進捗度合いと、前記論理ページ解釈手段による前記印刷データ中の論理ページの解釈の進捗度合いと、の差分に基づき、前記１以上の両用解釈手段のうち前記キャッシュ用解釈手段として機能させるものと前記論理ページ解釈手段として機能させるものとの比率を制御する、ことを特徴とする印刷画像処理システムである。
【００１１】
請求項２に係る発明は、前記切り替え手段は、前記キャッシュ用解釈手段による前記印刷データ中のキャッシュ対象要素の解釈の進捗度合いと、前記論理ページ解釈手段による前記印刷データ中の論理ページの解釈の進捗度合いと、の差分があらかじめ定めた範囲内に収まるよう、前記１以上の両用解釈手段のうち前記キャッシュ用解釈手段として機能させるものと前記論理ページ解釈手段として機能させるものとの比率を制御することを特徴とする請求項１に記載の印刷画像処理システムである。
【００１２】
請求項３に係る発明は、前記切り替え手段は、前記キャッシュ用解釈手段による前記印刷データ中のキャッシュ対象要素の解釈の進捗度合いから、前記論理ページ解釈手段による前記印刷データ中の論理ページの解釈の進捗度合いを減算して得られる先行度が大きいほど、前記１以上の両用解釈手段のうち前記キャッシュ用解釈手段として機能させるものの比率を小さくする、ことを特徴とする請求項１又は２に記載の印刷画像処理システムである。
【００１３】
請求項４に係る発明は、前記切り替え手段は、前記キャッシュ用解釈手段による前記印刷データ中のキャッシュ対象要素の解釈の進捗度合いから、前記論理ページ解釈手段による前記印刷データ中の論理ページの解釈の進捗度合いを減算して得られる先行度が小さいほど、前記１以上の両用解釈手段のうち前記キャッシュ用解釈手段として機能させるものの比率を大きくする、ことを特徴とする請求項１〜３のいずれか１項に記載の印刷画像処理システムである。
【００１４】
請求項５に係る発明は、コンピュータを、印刷データ内の論理ページを解釈して解釈結果を出力する論理ページ解釈手段、及び、前記印刷データ内の各論理ページに含まれるキャッシュ対象要素を解釈して解釈結果をキャッシュ手段に記憶させるキャッシュ用解釈手段、として機能することが可能な１以上の両用解釈手段、前記各両用解釈手段を、前記論理ページ解釈手段及び前記キャッシュ用解釈手段のいずれとして機能させるかを切り替える切り替え手段、前記各論理ページ解釈手段から出力された各論理ページの解釈結果と、前記キャッシュ手段に記憶された前記キャッシュ対象要素の解釈結果とを用いて、前記各論理ページの印刷画像データを生成し、生成した印刷画像データを印刷装置に供給する印刷画像データ生成手段、として機能させるためのプログラムであって、前記キャッシュ用解釈手段は、前記キャッシュ手段に解釈結果が記憶されていないキャッシュ対象要素を前記印刷データから見つけると、見つけたキャッシュ対象要素を解釈し、その解釈結果を、あらかじめ定められた生成規則に従って当該キャッシュ対象要素のデータから生成したキャッシュ識別情報と対応づけて前記キャッシュ手段に記憶させ、前記論理ページ解釈手段は、それぞれ、処理対象の論理ページに含まれるキャッシュ対象要素について、そのキャッシュ対象要素を解釈する代わりに、当該キャッシュ対象要素のデータから前記生成規則に従って生成したキャッシュ識別情報を含むキャッシュ参照コマンドを生成し、生成したキャッシュ参照コマンドを当該キャッシュ対象要素の解釈結果として当該論理ページの解釈結果に組み込み、前記印刷画像データ生成手段は、前記各論理ページ解釈手段が出力した各論理ページの解釈結果から印刷画像データを生成する際、前記論理ページの解釈結果から前記キャッシュ参照コマンドを見つけると、当該キャッシュ参照コマンドに含まれる前記キャッシュ識別情報に対応する解釈結果を前記キャッシュ手段から取得し、取得した解釈した解釈結果を用いて当該キャッシュ識別情報に対応するキャッシュ対象要素の印刷画像データを生成し、当該論理ページの印刷画像データに合成し、前記切り替え手段は、前記キャッシュ用解釈手段による前記印刷データ中のキャッシュ対象要素の解釈の進捗度合いと、前記論理ページ解釈手段による前記印刷データ中の論理ページの解釈の進捗度合いと、の差分に基づき、前記１以上の両用解釈手段のうち前記キャッシュ用解釈手段として機能させるものと前記論理ページ解釈手段として機能させるものとの比率を制御する、ことを特徴とするプログラムである。
【発明の効果】
【００１５】
請求項１又は５に係る発明によれば、論理ページ解釈手段とキャッシュ用解釈手段の数の比率が固定である場合よりも、印刷画像データの生成速度を高くすることができる。
【００１６】
請求項２に係る発明によれば、論理ページの解釈とキャッシュ対象要素の解釈の一方が他方よりも大幅に先行することを許す場合よりも、印刷画像データの生成速度を速くすることができる。
【００１７】
請求項３に係る発明によれば、キャッシュ対象要素の解釈が論理ページの解釈よりも進みすぎることを防止することができる。
【００１８】
請求項４に係る発明によれば、論理ページの解釈がキャッシュ対象要素の解釈よりも進みすぎることを防止することができる。
【図面の簡単な説明】
【００１９】
【図１】画像処理システムの構成の例を示すブロック図である。
【図２】印刷コントローラの内部構成の例を示すブロック図である。
【図３】実施形態の印刷コントローラの内部構成の例を示すブロック図である。
【図４】論理ページ解釈部およびフォーム解釈部の全体的な処理手順の例を示す図である。
【図５】論理ページ解釈部のコマンドごとの処理手順の例を示す図である。
【図６】フォーム解釈部のコマンドごとの処理手順の例を示す図である。
【図７】描画部の全体的な処理手順の例を示す図である。
【図８】描画部のコマンドごとの描画処理の手順の例を示す図である。
【図９】論理ページ解釈部とフォーム解釈部の比率の制御の手順の一例を示す図である。
【図１０】印刷ジョブの初期における各論理ページ解釈部及び両用解釈部の処理の進捗の様子の例を示す図である。
【図１１】論理ページ解釈部とフォーム解釈部の比率の制御の手順の変形例を示す図である。
【図１２】論理ページ解釈部とフォーム解釈部の比率の制御の手順の第２の変形例を示す図である。
【発明を実施するための形態】
【００２０】
＜システムのハードウエア構成＞
図１は、画像処理システムの構成の一例を示すブロック図である。以下で説明する本発明の各種の実施形態の画像処理システムは、いずれも、図１に例示する構成を備えるものとする。図１の例のシステムは、端末装置１０、印刷コントローラ２０、および印刷装置５０を備える。印刷コントローラ２０は、フロントエンド装置３０およびバックエンド装置４０を有している。端末装置１０は、通信手段６０を介してフロントエンド装置３０に接続されており、ユーザの指示に従い、文書の印刷命令を含む印刷ジョブをフロントエンド装置３０に対して送信する。フロントエンド装置３０は、通信手段６２を介してバックエンド装置４０に接続され、バックエンド装置４０は、通信手段６４を介して印刷装置５０に接続される。
【００２１】
通信手段６０，６２，６４は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワークであってよい。通信手段６０，６２，６４は、互いに共通の通信手段であってもよいし、それぞれ異なる通信手段であってもよい。例えば、端末装置１０とフロントエンド装置３０との間の通信手段６０としてＬＡＮを用い、フロントエンド装置３０とバックエンド装置４０との間の通信手段６２およびバックエンド装置４０と印刷装置５０との間の通信手段６４として、それぞれ、ＬＡＮと異なる専用の通信手段を用いてもよい。
【００２２】
図１の例のシステムでは、端末装置１０から送信された印刷ジョブをフロントエンド装置３０において処理し、この処理結果のデータがバックエンド装置４０に渡され、バックエンド装置４０において生成された描画データ（ラスターデータとも言う）に従って印刷装置５０による印刷が行われる。
【００２３】
図１の例の端末装置１０、フロントエンド装置３０、およびバックエンド装置４０は、例えば汎用のコンピュータによって実現され得る。コンピュータは、ハードウエアとして、ＣＰＵ（中央演算装置）、メモリ（一次記憶）、各種Ｉ／Ｏ（入出力）インタフェース、通信インタフェースなどがバスを介して接続された回路構成を有する。コンピュータは、通信インタフェースを介して、他の装置との間でデータの授受を行う。また、バスに対し、例えばＩ／Ｏインタフェース経由で、キーボードやマウスなどの入力装置、および、ＣＲＴ（Cathode Ray Tube）や液晶ディスプレイなどの表示装置が接続される。また、バスには、Ｉ／Ｏインタフェースを介して、ＨＤＤ（ハードディスクドライブ）や、ＣＤ、ＤＶＤ、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体を読み取るためのディスクドライブが接続される。このようなドライブは、メモリに対する外部記憶装置として機能する。後述の各実施形態の処理内容が記述されたプログラムがＣＤやＤＶＤなどの記録媒体を経由して、またはネットワーク経由で、ＨＤＤなどの固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがメモリに読み出されＣＰＵにより実行されることにより、後述の各実施形態、変形例の処理が実現される。
【００２４】
なお、後述の各実施形態、変形例において、バックエンド装置４０の機能の一部は、プログラムの実行によるソフトウエア処理ではなく、ハードウエア処理により実現してよい。ハードウエア処理は、例えば、動的再構成可能プロセッサ（Ｄｙｎａｍｉｃ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｐｒｏｃｅｓｓｏｒ，ＤＲＰ）と呼ばれる、処理の実行の途中で動的に回路を再構成できるプロセッサを用いて行ってもよい。あるいは、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等の回路を用いてハードウエア処理を行ってもよい。例えば、バックエンド装置４０の機能の一部を実行する、ＤＲＰやＡＳＩＣ等のハードウエア要素を予め構成しておき、このようなハードウエア要素を汎用コンピュータのバスに対して接続することで、バックエンド装置４０を実現すればよい。
【００２５】
フロントエンド装置３０およびバックエンド装置４０を実現するハードウエアの１つの具体例として、それぞれがサーバとして機能する複数の情報処理装置を１つの筐体内に搭載したブレードサーバを用いることが考えられる。ブレードサーバは、ＣＰＵやメモリを備える汎用のコンピュータを１枚の基板（ブレード）に実装し、複数のブレードを筐体内に搭載したサーバ装置である。例えば、ブレードサーバに搭載された１つのブレードをフロントエンド装置３０として機能させ、他の１つのブレードをバックエンド装置４０として機能させてもよい。あるいは、例えば、フロントエンド装置３０およびバックエンド装置４０のそれぞれを、ブレードサーバに搭載された複数のブレードにより実現してもよい。
【００２６】
印刷装置５０は、紙等の媒体に印刷を行う装置であり、例えば、連続紙プリンタであってよい。以下では、印刷装置５０として連続紙プリンタを用いる場合を例に取り、各実施形態の例を説明する。なお、印刷装置５０は、電子写真、インクジェット、またはその他の方式の印刷エンジンにより印刷を行うものとする。
【００２７】
＜実施形態＞
図２に、印刷コントローラ２０が備えるフロントエンド装置３０およびバックエンド装置４０の機能構成の例を示す。フロントエンド装置３０は、印刷ジョブ受信部３２、ページ配信部３４、および、複数の解釈部３６を備える。バックエンド装置４０は、中間データバッファ４２、描画部４４および出力バッファ４６を備える。
【００２８】
フロントエンド装置３０の印刷ジョブ受信部３２は、端末装置１０から印刷ジョブを受信する。本実施形態の例において、印刷ジョブは、文書を印刷する旨の命令と、印刷対象の文書をページ記述言語で記述したデータと、を含む。ページ記述言語（ＰＤＬと略す：ＰＤＬはPage Description Language の略）は、ディスプレイ表示処理、印刷処理等を情報処理機器に実行させるためのコンピュータプログラミング言語である。ページ記述言語の例としては、ＰｏｓｔＳｃｒｉｐｔ（登録商標）やＰＤＦ（Portable Document Format）等がある。ページ記述言語で記述されたデータは、印刷対象の文書を構成する文字や図形、イメージ（ビットマップ画像）などのオブジェクトの位置情報、書式情報および色情報などを含む。以下の説明では、印刷対象の文書をページ記述言語で記述したデータを「ＰＤＬデータ」と呼ぶ。印刷ジョブ受信部３２は、受信した印刷ジョブに含まれるＰＤＬデータをページ配信部３４に渡す。
【００２９】
ページ配信部３４は、印刷ジョブ受信部３２から取得したＰＤＬデータに含まれるページのうち、どのページをどの解釈部３６に処理させるかを決定する。ここでいう「ページ」は、ＰＤＬデータにおいて規定されているページ、すなわち論理ページである。用紙の１つの面、すなわち１つの物理ページには、印刷設定に応じて、１つ又は複数の論理ページが印刷されることになる。なお、以下では、文脈上明らかなように、特に断りのない場合は、「ページ」という用語は、論理ページを指すものとする。
【００３０】
ページ配信部３４は、各解釈部３６の稼動状態に基づいて、各解釈部３６に対してページを割り当てる。例えば、処理を実行中でない解釈部３６、または他の解釈部３６よりも負荷の低い処理を実行中の解釈部３６を優先して、ＰＤＬ中の先頭ページから順に担当ページを割り当てる。ページ配信部３４は、各解釈部３６に対し、割り当てた担当ページを通知すると共に、印刷ジョブ受信部３２から取得したＰＤＬデータを渡す。この例では、各解釈部３６に対し、ＰＤＬデータにおける担当ページの部分だけでなく、ＰＤＬデータの全体を渡すものとする。これは、例えばページ非独立のＰＤＬ（すなわち、ページの画像の生成が、そのページ以前のＰＤＬデータの解釈結果に依存するタイプのＰＤＬ）を用いている場合の例である。別の例として、ページ独立のＰＤＬ（ページごとのＰＤＬデータのみで当該ページの画像を正しく生成できるタイプのＰＤＬ）を用いる場合は、ページ配信部３４は、各解釈部３６に対してＰＤＬデータのページごとの割り当てを行い、この割り当てに基づいて、ページごとに分割したＰＤＬデータを担当の各解釈部３６に渡してもよい。
【００３１】
解釈部３６は、ページ配信部３４から取得したＰＤＬデータを解釈し、ページ配信部３４から通知された担当ページについて、描画データの生成の手順を表す命令を含む中間データを生成し、出力する。
【００３２】
より詳しくは、解釈部３６は、ＰＤＬデータを解釈し、自身の担当ページについて、中間データを生成する。中間データは、最終的に印刷装置５０に出力されるデータに変換される前段階のデータである。中間データの例として、ディスプレイリストや区間データ形式（例えば本出願人による特開２０１１−１５０５３５号公報参照）等があげられる。ここで、解釈部３６は、印刷装置５０による印刷で用いられる基本色（例えばイエロー（Ｙ，Ｙｅｌｌｏｗ）、マゼンタ（Ｍ，Ｍａｇｅｎｔａ）、シアン（Ｃ，Ｃｙａｎ）、ブラック（Ｋ，Ｂｌａｃｋ）の４色）ごとに分版された中間データを生成するようにしてもよい。ただし、これはあくまで一例に過ぎない。
【００３３】
中間データは、印刷対象の文書の構成要素であるオブジェクトのそれぞれについて、当該文書の印刷画像において当該オブジェクトを描画する手順を表す描画命令を含む。この描画命令を記述する言語としては、ページ記述言語と比較してより詳細な手順を表現する言語が用いられる。例えば、ページ記述言語において、あるオブジェクトの印刷画像上の位置、形状、および大きさを表す情報が定義される場合、中間データにおける当該オブジェクトの描画命令では、印刷画像における走査線単位で当該オブジェクトの描画の手順を記述したものであり得る。中間データに従って、後述のバックエンド装置４０において、印刷装置５０に対して出力される描画データが生成される。
【００３４】
以下に区間データ形式（「ランリスト」形式とも呼ぶ）において用いるコマンドの例を示す。
【００３５】
（１）line, ym, xl, xr, c
ｙ座標ymの走査線において、ｘ座標xlからxr - 1まで、階調cで描画する
（２）duplicate
直前に描画した走査線と同一の態様（ｘ座標，階調）で描画する
（３）window, xl, xr
直前に描画した走査線と同一の階調でｘ座標xlからxr - 1まで描画する
【００３６】
あるページの中間データは、当該ページを構成する各オブジェクトの描画手順を表す命令の集合であると捉えられる。１つのページを表す中間データのデータ量は、当該ページを構成する各画素の値を含むラスタデータと比較して少ない。
【００３７】
なお、区間データ形式は中間データの形式のあくまで一例に過ぎない。本実施形態は、どのような中間データ形式を使用する場合にも適用可能である。バックエンド装置において、ハードウエア処理により描画データを生成する場合には、中間データの形式は、ハードウエア処理による描画データの生成を可能とする描画手順を表す形式であればよく、上に例示した区間データ形式と異なる形式のものでもよい。
【００３８】
解釈部３６が生成した中間データは、バックエンド装置４０に対して出力される。出力された中間データは、バックエンド装置４０の中間データバッファ４２に書き込まれる。描画部４４は、中間データバッファ４２に記憶された各ページの中間データを読み出し、読み出したページの中間データに従って描画データ（ラスターデータ）を生成する。生成された各ページの描画データは出力バッファ４６に格納され、印刷装置５０から順次読み出される。印刷装置５０は、出力バッファ４６から読み出した各ページの描画データを、用紙に対して印刷する。
【００３９】
次に、図３を参照して、実施形態の印刷コントローラ２０の構成を説明する。
【００４０】
１つの例では、複数の解釈部３６は、それぞれ、論理ページ解釈部３６−ｐ（図３では論理ページ解釈部３６−ｐ１及び３６−ｐ２の２つを例示）及びフォーム解釈部３６−ｆとして機能することができる。ただし、１つの解釈部３６が同時に論理ページ解釈部３６−ｐ及びフォーム解釈部３６−ｆの両方として機能することはない。すなわち、１つの解釈部３６は、１つの時点では、論理ページ解釈部３６−ｐ及びフォーム解釈部３６−ｆのうちの一方として機能する。
【００４１】
論理ページ解釈部３６−ｐは、ページ（論理ページ）についての中間データ生成を実行する。フォーム解釈部３６ｆは、フォームやイメージなどの、複数のページで共用され得る（すなわち一度解釈した結果が後のページで再利用され得る）オブジェクトについての中間データ生成を実行する。以下では、複数のページで共用され得るオブジェクトのことをフォームと総称する。ページの中には、フォームに該当するオブジェクトも、該当しないオブジェクトも含まれ得るが、フォーム解釈部３６−ｆは、ページ内のフォームに該当するオブジェクトのみを処理する。一方、論理ページ解釈部３６−ｐは、基本的に、ページに含まれる全てのオブジェクトを処理する（ただし、フォームについては後述する特殊な処理を行う）。１つの時点での論理ページ解釈部３６−ｐの数とフォーム解釈部３６−ｐの数は、フロントエンド装置３０が備える解釈部３６の合計数に等しい。
【００４２】
本実施形態では、ＰＤＬデータを先頭ページから順に処理していく中で、フロントエンド装置３０内で動作する論理ページ解釈部３６−ｐとフォーム解釈部３６−ｆとの構成比率を動的に制御する。
【００４３】
すなわち、ＰＤＬデータの解釈処理の負荷は、一般に、ページに含まれるオブジェクトの数や複雑さに応じてページごとに異なり、論理ページの解釈や、論理ページ内のフォーム群の解釈にどれだけ時間が掛かるかは、事前には予測しがたい。このため、フロントエンド装置３０内の論理ページ解釈部３６−ｐとフォーム解釈部３６−ｆの数の最適比率を事前に知ることは困難である。また、そのような最適比率があるとしても、その最適比率は１つの印刷ジョブ全体の解釈の進行の中で変化する。そこで、この実施形態では、論理ページ解釈部３６−ｐとフォーム解釈部３６−ｆとの構成比率を動的に制御するのである。
【００４４】
この構成比率の動的な制御は、論理ページの解釈（中間データ生成）の進捗状況とフォームの解釈の進捗状況との比較に基づいて行う。フロントエンド装置３０が備える解釈部３６の総数のうちに論理ページ解釈部３６−ｐ（あるいはフォーム解釈部３６−ｆ）の数が占める割合を、例えば０％〜１００％までの範囲で制御する。
【００４５】
なお、この比率制御における解釈部３６の総数のうちに論理ページ解釈部３６−ｐの数が占める割合の取り得る範囲は、上に例示した０％〜１００％（すなわちすべて解釈部３６をフォーム解釈部３６−ｆとする場合から、すべての解釈部３６を論理ページ解釈部３６−ｐとする場合まで）に限るものではない。この代わりに、例えば、論理ページ解釈部３６−ｐの数に下限（あるいは上限）を設定しておき、その下限数から解釈部３６の総数までの範囲で、論理ページ解釈部３６−ｐの数の占める割合を制御してもよい。
【００４６】
また、以上の例では、すべての解釈部３６が、論理ページ解釈部３６−ｐ及びフォーム解釈部３６−ｆとして機能可能な「両用」解釈部であったが、これは一例に過ぎない。別の例として、複数の解釈部３６のうち、一部の解釈部３６のみがそのような「両用」解釈部であり、残りは論理ページの解釈専用の解釈部である構成も考えられる。すなわち、この構成では、論理ページの解釈専用の解釈部の総数が、比率制御における論理ページ解釈部３６−ｐの下限数となる。この例では、「両用」解釈部の総数のうち論理ページ解釈部３６−ｐとして機能させるものとフォーム解釈部３６−ｆとして機能させるものとの比率を、制御する。
【００４７】
論理ページ解釈部３６−ｐとフォーム解釈部３６−ｆの比率の制御では、フォーム解釈の進捗に対するページ解釈の進捗の進み幅が大きくなる（あるいはページ解釈に対するフォーム解釈の進み幅が小さくなるほど）ほど、論理ページ解釈部３６−ｐの比率を下げ、フォーム解釈部３６−ｆの比率を上げる。逆に、フォーム解釈に対するページ解釈の進み幅が小さくなるほど（あるいはページ解釈に対するフォーム解釈の進み幅が大きくなるほど）論理ページ解釈部３６−ｐの比率を上げ、フォーム解釈部３６−ｆの比率を下げる。
【００４８】
この比率制御は、この例では、各解釈部３６への論理ページ等の割り当てを行うページ配信部３４が行う。ただし、これは一例に過ぎず、この比率制御を行う制御部をページ配信部３４とは別に設けてもよい。
【００４９】
なお、この比率制御については、後で更に詳しく説明する。
【００５０】
図３は、フロントエンド装置３０が３つの解釈部３６を有している場合において、そのうちの２つが論理ページ解釈部３６−ｐ１および３６−ｐ２として機能し、１つがフォーム解釈部３６−ｆとして機能している状況を示している。
【００５１】
さてフォームとは、前述の通り、複数のページで繰り返し使用されることが想定された画像のことである。フォームは１以上のオブジェクトから構成される。一般に、ＰＤＬデータ中では、フォームに対して、当該フォームをＰＤＬデータ中で一意に識別する識別情報（「フォームＩＤ」と呼ぶ）が付与されている。ＰＤＬデータ中に同じフォームＩＤを指定したコマンドがある場合、それらコマンドは、同じフォームを用いた画像を表す。
【００５２】
本実施形態では、一度生成したフォームの中間データをキャッシュし、再利用する枠組み（フォームキャッシュ４８）を提供することで、同じフォームの中間データが何度も生成されるといった非効率を避ける。フォームキャッシュ４８は、キャッシュ対象のフォームの中間データを一時的に記憶するキャッシュである。
【００５３】
各論理ページ解釈部３６−ｐ１および３６−ｐ２は、それぞれページ配信部３４から割り当てられたページのＰＤＬデータの中間データを生成する。ここで、１つの例では、各論理ページ解釈部３６−ｐは、割り当てられたページ中の、フォーム以外のオブジェクト群を処理する。そして、ページ中に含まれるフォームは、そのフォームを構成するＰＤＬコマンド（オブジェクト）群を中間データ形式に変換したものを代えて、フォームキャッシュ４８にキャッシュされた当該フォームの中間データを指し示す識別情報（「キャッシュＩＤ」と呼ぶ）を参照する中間データコマンドに置き換える。各論理ページ解釈部３６−ｐが生成した各ページの中間データは、バックエンド装置４０の中間データバッファ４２に送られる。
【００５４】
一方、フォーム解釈部３６−ｆは、ＰＤＬデータ中のフォームのＰＤＬコマンド群を解釈し、当該フォームを表す中間データを生成する。そして、生成したフォームの中間データをバックエンド装置４０のフォームキャッシュ４８に登録する。ここで、フォーム解釈部３６−ｆは、フォームキャッシュ４８に対して登録するフォームを表す中間データに対して、少なくとも当該印刷ジョブ中で一意なキャッシュＩＤを付与し、このキャッシュＩＤに対応づけてその中間データをフォームキャッシュ４８に登録する。
【００５５】
論理ページ解釈部３６−ｐは、印刷ジョブのＰＤＬデータのうちの割り当てられたページのみを処理（すなわち解釈および中間データの生成）するのに対し、フォーム解釈部３６−ｆは、印刷ジョブのＰＤＬデータの全ページを処理する。ただし、フォーム解釈部３６−ｆが処理するのは、ページ中のフォームのみであり、フォームに含まれない一般のオブジェクトについては処理しない。
【００５６】
論理ページ解釈部３６−ｐ１、３６−ｐ２およびフォーム解釈部３６−ｆは、典型的には、ＣＰＵ上で実行されるプロセスとして実現される。例えば、マルチコアＣＰＵを用いたシステム構成において、個々のコアでそれぞれ１つずつ解釈部３６のプロセスを実行するという構成が考えられる。
【００５７】
キャッシュ管理部３８は、フォームキャッシュ４８に保持されるキャッシュデータ（すなわちフォームの中間データ）の管理情報を保持する。キャッシュ管理部３８には、キャッシュデータごとに、キャッシュＩＤと、そのキャッシュデータのフォームキャッシュ４８の記憶空間内での記憶場所を示す情報（例えば先頭アドレスと、そのデータのサイズとの組合せ）とが記憶される。フォーム解釈部３６−ｆは、ＰＤＬデータ中のフォームを処理する際、そのフォームのキャッシュデータがフォームキャッシュ４８に登録されているかどうかをキャッシュ管理部３８から求め、登録されている場合にはそのフォームのキャッシュデータの生成は行わず、登録されていない場合にのみキャッシュデータの生成を行う。
【００５８】
バックエンド装置４０の描画部４４は、中間データバッファ４２内にある各ページの中間データを例えばページ順に読み出し、読み出したページの中間データのコマンドに従って描画データを生成していく。ここで、読み出したページの中間データ内に、キャッシュＩＤを参照する旨のコマンドが含まれる場合は、フォームキャッシュ４８からそのキャッシュＩＤに対応する中間データ（すなわちフォームの中間データ）を読み出し、読み出した中間データを処理することで、フォームの描画データを生成し、ページの描画データに対して合成する。
【００５９】
以上では、説明を簡潔にするために、フォームならばキャッシュするとして説明したが、実際の装置では、すべてのフォームをキャッシュするとは限らない。キャッシュを用いるためには、キャッシュへの登録や必要なキャッシュデータの有無の問合せ等の処理のオーバーヘッドが生じる。非常に小さい又は構造が簡単なフォームの場合、中間データの生成処理に要する時間が非常に短くて済むので、そのような処理のオーバーヘッドを考慮すると、キャッシュを利用しない方が処理が早いことも多い。そこで、本実施形態では、フォームのうちキャッシュした方が処理効率がよいもののみを、キャッシュすることとする。このために、本実施形態では、キャッシュした方が処理効率がよい（すなわちキャッシュ対象とする）フォームと、そうでないフォームとを判定するためのルールを定めている。この判定ルールの例を以下に示す。
（ルール１）当該フォームのバウンディングボックス（物理ページ上で当該フォームを囲むことができる最小の長方形）の画素数が、予め決められた数（「画素数閾値」と呼ぶ）より多い場合は、当該フォームをキャッシュ対象とし、そうでない場合はキャッシュ対象としない。
（ルール２）当該フォームに含まれるオブジェクトの数が予め決められた数（「オブジェクト数閾値」と呼ぶ）より多い場合は当該フォームをキャッシュ対象とし、そうでない場合はキャッシュ対象としない。
（ルール３）当該フォームに予め決められた大きさ（「イメージサイズ閾値」と呼ぶ）より大きいイメージ（ビットマップ）がある場合は当該フォームをキャッシュ対象とし、そうでない場合はキャッシュ対象としない。
【００６０】
例えば、以上に例示したルール１〜３のいずれか１つを用いて判定を行ってもよいし、２以上を組み合わせて判定を行ってもよい。２以上を組み合わせる場合は、少なくとも１つのルールで「キャッシュ対象」と判定されれば、他のルールによる判定結果によらず、当該フォームはキャッシュ対象とする。
【００６１】
なお、上述の画素数閾値、オブジェクト数閾値およびイメージサイズ閾値は、フロントエンド装置３０やバックエンド装置４０のシステム構成や性能に応じた値であり、実験やシミュレーション等で定めておけばよい。
【００６２】
本実施形態では、論理ページ解釈部３６−ｐ１、３６−ｐ２およびフォーム解釈部３６−ｆが、統一された共通の判定ルールを用いて、フォームをキャッシュ対象とするかどうかを判定する。したがって、例えば論理ページ解釈部３６−ｐ１がキャッシュ対象と判定したフォームは、論理ページ解釈部３６−ｐ２でもフォーム解釈部３６−ｆでもキャッシュ対象と判定される。
【００６３】
また、本実施形態では、論理ページ解釈部３６−ｐ１、３６−ｐ２およびフォーム解釈部３６−ｆは、統一された共通のＩＤ付与ルールを用いて、フォームのキャッシュデータ（中間データ）に対してキャッシュＩＤを付与する。この共通のＩＤ付与ルールでは、ＰＤＬデータ中でフォームに対して付与されているフォームＩＤに加え、そのフォームの最終的な描画結果の画像の状態を規定する各種のパラメータを考慮して、そのフォームのキャッシュデータに付与するキャッシュＩＤを決定する。同じフォームＩＤのフォームを用いる場合でも、そのフォームを描画・印刷する際のパラメータが異なれば、最終的に印刷物上に現れるフォームの画像も異なってくるので、パラメータが異なれば別のキャッシュデータとして取り扱うのである。キャッシュＩＤを規定する描画等のパラメータとしては、座標変換行列（座標の回転角や拡大縮小率を表す行列）、描画属性情報（例えば線幅、ラインキャップ、ラインジョイン、マイタ―リミット、線の形状、ストローク調整、描画方式、論理演算モード、パターン情報）、クリップ情報、カラー情報等がある。１つの例では、フォームＩＤとそれらパラメータとを結合したものをバイナリデータとして表現し、ＭＤ５ハッシュ関数（rfc1321で定義）等のハッシュ関数を用いて、そのバイナリデータからキャッシュＩＤを生成する。なお、キャッシュＩＤの材料として用いたフォームＩＤおよび上述パラメータ群を、「キーデータ（Key Data）」と呼ぶ。
【００６４】
なお、厳密には、ハッシュ関数には衝突があるため、上述の方式では異なるキャッシュデータのキャッシュＩＤ（ハッシュ値）が同じ値となる可能性がある。ハッシュの衝突を避けるために、キーデータそのものをキャッシュＩＤとして用いてもよい。
【００６５】
ただし、キーデータはかなり長いデータとなるため、利用可能なキャッシュデータが有るか無いかを調べる際、キーデータ同士の照合にある程度の時間を要する。キャッシュ管理部３８内のすべてのキャッシュエントリに対してキーデータの照合を行うにはかなりの時間がかかってしまう。そこで、以下の例では、キーデータと、そのキーデータのハッシュ値と、の組合せをキャッシュＩＤとして用いる。この例では、利用可能なキャッシュデータの有無を調べる際、まずハッシュ値で絞り込みを行うことで、キーデータの照合を行うキャッシュエントリの数を少なくする。
【００６６】
以上のように、本実施形態では、論理ページ解釈部３６−ｐ１、３６−ｐ２およびフォーム解釈部３６−ｆは、共通のＩＤ付与ルールを用いる。したがって、例えば論理ページ解釈部３６−ｐ１があるフォームに対してあるキャッシュＩＤを生成した場合（ここで論理ページ解釈部３６−ｐ１はそのフォームの中間データは生成しない）、フォーム解釈部３６−ｆは同じキャッシュＩＤを生成し、生成したそのフォームの中間データをそのキャッシュＩＤに対応づけてフォームキャッシュ４８に登録する。
【００６７】
次に、図４〜図６を参照して、論理ページ解釈部３６−ｐおよびフォーム解釈部３６−ｆが実行する処理の手順を例示する。
【００６８】
図４は、論理ページ解釈部３６−ｐおよびフォーム解釈部３６−ｆの共通の処理手順である。この例は、ページ非独立のＰＤＬで記述されたＰＤＬデータを処理する場合の例である。図４の説明では、論理ページ解釈部３６−ｐおよびフォーム解釈部３６−ｆを解釈部３６と総称する。これら各解釈部３６は、互いに独立して、非同期的に動作する。
【００６９】
この手順では、解釈部３６は、印刷ジョブ受信部３２から、印刷ジョブのＰＤＬデータ全体を取得する（Ｓ１０）。次に、そのページ配信部３４から、処理対象とするページの割り当てを受ける（Ｓ１２）。ここで、ページ配信部３４は、論理ページ解釈部３６−ｐ１および３６−ｐ２にはＰＤＬデータの全ページを分担させるが、フォーム解釈部３６−ｆには全ページを担当させる。解釈部３６は、割り当てられたページのＰＤＬデータを解釈する（Ｓ１４）。そして、そのページの解釈が終了すると、解釈部３６は、印刷ジョブ全体の解釈が完了したか否かを判定し（Ｓ１６）、未完了と判定した場合は、Ｓ１２に戻り、ページ配信部３４にページの解釈の終了を通知し、次の担当ページの割り当てを受ける。以上の処理を、印刷ジョブ全体の解釈が完了するまで繰り返す。
【００７０】
ページの解釈処理（Ｓ１４）では、解釈部３６は、当該ページの先頭から順に、ＰＤＬデータのコマンドを１つずつ抽出し（Ｓ２０）、抽出したコマンドを解釈して中間データのオブジェクトを生成する（Ｓ２２）。これらＳ２０およびＳ２２の処理を、当該ページの最後のコマンドの処理が終了するまで繰り返す（Ｓ２４）。
【００７１】
なお、ページ非独立のＰＤＬデータを処理する場合には、各論理ページ解釈部３６−ｐは、自分が担当するページか否かによらず、すべてのページのコマンドを解釈し、自分の内部状態をその解釈の結果に応じて遷移させる。そして、担当するページについては、解釈のみならず、中間データの生成も行う。これにより、先頭ページからの解釈の結果を反映した正しい中間データが生成されることになる。同様に、フォーム解釈部３６−ｆは、フォーム以外のオブジェクトの描画コマンドも含むＰＤＬデータのすべてのコマンドを解釈し、フォームの描画コマンドについては中間データの生成も行う。
【００７２】
中間データの生成処理（Ｓ２２）の内容は、論理ページ解釈部３６−ｐとフォーム解釈部３６−ｆとで異なる。
【００７３】
図５は、論理ページ解釈部３６−ｐによる中間データの生成処理（Ｓ２２）の処理手順の一例を示す。この例では、論理ページ解釈部３６−ｐは、処理対象のコマンド（Ｓ２０で抽出したもの）がフォームオブジェクトの生成を指示するコマンドか否かを判定する（Ｓ３０）。例えば、ＰｏｓｔＳｃｒｉｐｔ（登録商標）の場合、処理対象のコマンドのコマンド名が”form”であれば、そのコマンドは、フォームオブジェクトの生成を指示するコマンドである。フォームの生成を指示するコマンドには、フォームＩＤがパラメータとして付随する。
【００７４】
Ｓ３０の判定結果が否定（Ｎ：フォーム生成以外のコマンド）である場合は、論理ページ解釈部３６−ｐは、そのコマンドを解釈して中間データを生成し（Ｓ３２）、その中間データを当該ページの中間データとして出力する（Ｓ３４）。
【００７５】
Ｓ３０の判定結果が肯定（Ｙ：フォーム生成のコマンド）である場合、論理ページ解釈部３６−ｐは、次にそのコマンドに対応するフォームの中間データがキャッシュ対象であるかどうかを、前述した統一の判定ルールに従って判定する（Ｓ３６）。
【００７６】
Ｓ３６で、そのコマンドがキャッシュ対象でないと判定した場合（Ｓ３６の判定結果がＮ）、論理ページ解釈部３６−ｐは、そのコマンドに付随するフォームＩＤを抽出し、そのフォームＩＤに対応するフォームのＰＤＬデータを取得してメモリ上に展開する（Ｓ３８）。例えば、ＰＤＬデータ中の２回目以降のフォームの使用箇所では、フォームＩＤが示されるのみで、フォームの実体を表すＰＤＬデータが記述されない場合もある。このような場合でも、論理ページ解釈部３６−ｐは印刷ジョブのＰＤＬデータ中でそのフォームがはじめて使用された場所から読み取った当該フォームのＰＤＬデータをフォームＩＤと対応づけて管理しているので、２回目以降の使用箇所では、その管理しているＰＤＬデータを読み出して利用するのである。フォームのＰＤＬデータの展開の後、論理ページ解釈部３６−ｐは、展開したＰＤＬデータを解釈し、中間データを生成し（Ｓ３２）、その中間データを出力する（Ｓ３４）。
【００７７】
Ｓ３６で、判定対象のコマンドがキャッシュ対象であると判定した場合（Ｓ３６の判定結果がＹ）、論理ページ解釈部３６−ｐは、前述した統一的なＩＤ付与ルールに従い、そのコマンドに対応するキャッシュＩＤを生成する（Ｓ４０）。Ｓ４０では、そのコマンドに付随するフォームＩＤ等のパラメータ群、および論理ページ解釈部３６−ｐ自身の内部状態の情報から、キーデータを構成する各項目の値を抽出し、それら抽出した値を結合してキーデータを生成し、そのキーデータのハッシュ値を計算する。そして、そのハッシュ値とキーデータのペアを、キャッシュＩＤとする。
【００７８】
そして、論理ページ解釈部３６−ｐは、そのキャッシュＩＤで示されるキャッシュデータを参照するよう指示する中間データコマンドを生成し、生成した中間データコマンドを出力する（Ｓ４２）。このように、論理ページ解釈部３６−ｐは、キャッシュされるフォームについては、そのフォームの実体（画像）を表す中間データを生成する代わりに、キャッシュデータを参照するコマンドを生成する。
【００７９】
図６は、フォーム解釈部３６−ｆによる中間データの生成処理（Ｓ２２）の処理手順の一例を示す。この例では、フォーム解釈部３６−ｆは、処理対象のコマンド（Ｓ２０で抽出したもの）がフォームオブジェクトの生成を指示するコマンドか否かを、Ｓ３０と同様の方法で、判定する（Ｓ５０）。Ｓ５０の判定結果が否定（Ｎ）である場合、フォーム解釈部３６−ｆは、そのコマンドについては何も処理を行わずに、図６の処理を終了する。
【００８０】
Ｓ５０の判定結果が肯定（Ｙ）である場合、フォーム解釈部３６−ｆは、次にそのコマンドに対応するフォームの中間データがキャッシュ対象であるかどうかを、Ｓ３６と同様、前述した統一の判定ルールに従って判定する（Ｓ５２）。
【００８１】
Ｓ５２で、そのコマンドがキャッシュ対象でないと判定した場合（Ｓ５２の判定結果がＮ）、フォーム解釈部３６−ｆは、そのコマンドについては何も処理を行わずに、図６の処理を終了する。
【００８２】
Ｓ５２で、判定対象のコマンドがキャッシュ対象であると判定した場合（Ｓ５２の判定結果がＹ）、フォーム解釈部３６−ｆは、Ｓ４０と同様の方法で、前述した統一的なＩＤ付与ルールに従い、そのコマンドに対応するキャッシュＩＤを生成する（Ｓ５４）。そして、そのコマンドを解釈してキャッシュデータ（フォームの中間データ）を生成し（Ｓ５６）、生成したキャッシュデータをそのキャッシュＩＤと対応づけて出力する（Ｓ５８）。出力されたキャッシュＩＤおよびキャッシュデータのペアは、フォームキャッシュ４８に登録される。
【００８３】
なお、Ｓ５６およびＳ５８では、同じキャッシュデータの重複した生成および登録を避けるようにしてもよい。このためには、フォーム解釈部３６−ｆは、キャッシュデータを生成する前に、Ｓ５４で生成したキャッシュＩＤに対応するキャッシュデータがフォームキャッシュ４８内に存在するかどうかをキャッシュ管理部３８に問い合わせ、存在しないとの回答を得た場合にのみキャッシュデータを生成するようにすればよい。キャッシュデータを生成してフォームキャッシュ４８に登録した場合は、フォーム解釈部３６−ｆは、そのキャッシュデータのキャッシュＩＤをキャッシュ管理部３８に登録することで、そのキャッシュデータが登録済みであることを記録する。
【００８４】
次に、図７および図８を参照して、バックエンド装置４０の描画部４４の処理手順の例を説明する。
【００８５】
図７に示すように、この手順では、描画部４４は、まず処理対象の印刷ジョブの指定を受ける（Ｓ１００）。次に、その印刷ジョブの例えば先頭ページから順に１ページずつ、ページの中間データを中間データバッファ４２から取得し（Ｓ１０２）、取得したページの中間データを解釈する（Ｓ１０４）。これらＳ１０２およびＳ１０４の処理を、印刷ジョブの末尾まで、１ページずつ、繰り返し実行する（Ｓ１０６）。
【００８６】
ページの中間データの解釈処理（Ｓ１０４）では、は、当該ページの先頭から順に、中間データのコマンドを１つずつ抽出し（Ｓ１１０）、抽出したコマンドを解釈して、そのコマンドが示すラスター画像をメモリ上に描画する（Ｓ１１２）。これらＳ１１０およびＳ１１２の処理を、当該ページの最後の中間データコマンドの処理が終了するまで繰り返す（Ｓ１１４）。
【００８７】
ページの中間データの解釈処理（Ｓ１１２）では、描画部４４は、図８に示すように、ページの中間データを先頭から順にコマンドを読み出し、読み出したコマンドがキャッシュデータの参照を指示するコマンド（キャッシュ参照コマンドと呼ぶ）であるかどうかを判定する（Ｓ１２０）。
【００８８】
Ｓ１２０の判定結果が肯定（Ｙ）の場合、描画部４４は、そのキャッシュ参照コマンドからキャッシュＩＤを抽出し（Ｓ１２２）、そのキャッシュＩＤに対応するキャッシュデータ（中間データ）をフォームキャッシュ４８から取り出し（Ｓ１２４）、取り出したキャッシュデータを解釈してラスター画像を描画する（すなわち「ラスタライズ」する）（Ｓ１２６）。
【００８９】
Ｓ１２０の判定結果が否定（Ｎ）の場合、描画部４４は、そのコマンドを解釈してラスタライズする（Ｓ１２６）。
【００９０】
以上に説明したように、この実施形態では、論理ページ解釈部３６−ｐとフォーム解釈部３６−ｆが、統一したＩＤ付与ルールを用い、同じ材料（すなわちフォームＩＤおよびフォームの印刷結果の画像を規定するその他のパラメータ）からキャッシュＩＤを付与する。したがって、それら解釈部３６は、互いに通信することなく、同じキャッシュデータには同じキャッシュＩＤを付すことができる。したがって、論理ページ解釈部３６−ｐ１、３６−ｐ２が生成したページの中間データに含まれるキャッシュ参照コマンドのキャッシュＩＤが指し示すキャッシュデータは、フォーム解釈部３６−ｆにより遅かれ早かれ必ず生成され、同じキャッシュＩＤに対応づけてフォームキャッシュ４８に登録される。仮に、描画部４４がページ中のキャッシュ参照コマンドを処理しようとした時点で、そのコマンドが指し示すキャッシュデータがフォームキャッシュ４８にない場合でも、しばらく待機すれば、描画部４４はそのキャッシュデータをフォームキャッシュ４８から取得可能となる。印刷ジョブの最初の方を処理している間は、フォーム解釈部３６−ｆによるフォームのキャッシュデータ生成の進捗が十分でないため、このような描画部４４の待機（キャッシュデータの完成待ち）が生じる確率はある程度高い。論理ページの処理は複数の論理ページ解釈部３６−ｐで並列処理しているのに対し、フォームの処理は１つのフォーム解釈部３６−ｆがページ順に行っているため、論理ページの処理の進捗に追いつかないことがあるからである。しかし、フォーム解釈部３６−ｆは、キーデータが同じフォームが何度現れても一度しかキャッシュデータを生成しないので、ある程度処理が進みフォームキャッシュ４８に相当数のキャッシュデータが蓄積された時点では、一般的に新たにキャッシュデータを生成する必要が生じる頻度は少なくなる。このため、ページ処理速度が向上していき、並列動作する論理ページ解釈部３６−ｐの処理の進捗を追い抜くこととなる。こうなると、上述した描画部４４によるキャッシュデータ完成待ちは起こらない。
【００９１】
以上に説明したように、論理ページ解釈部３６−ｐ１、３６−ｐ２、およびフォーム解釈部３６−ｆがプロセス間通信を行わずに互いに独立して非同期的に動作しても、フォームの中間データをキャッシュし、再利用することが可能となる。この実施形態は、プロセス間通信のためのオーバーヘッドがない分だけ、プロセス間通信を行うシステムよりも処理が高速である。
【００９２】
＜比率制御＞
次に、フロントエンド装置３０内の論理ページ解釈部３６−ｐとフォーム解釈部３６−ｆとの比率の制御について説明する。以下では、ページ配信部３４がこの比率制御を行うものとして説明するが、比率制御を別の制御部が行ってもよい。
【００９３】
比率制御のため、ページ配信部３４は、論理ページ解釈部３６−ｐ群によるページ解釈の進捗度合いと、フォーム解釈部３６−ｆ群によるフォーム解釈の進捗度合いを把握している。それぞれの進捗度合いは、印刷ジョブのＰＤＬデータの先頭から解釈が済んだ部分までの長さ（言い換えれば、ＰＤＬデータの先頭からみた、解釈の済んだ部分の位置）を指標として表す。すなわち、論理ページ解釈部３６−ｐもフォーム解釈部３６−ｆも、ＰＤＬデータの先頭から順に解釈していくが、その解釈がＰＤＬデータの先頭からどの位置まで進んだのかを、進捗度合いとして把握するのである。
【００９４】
進捗度合いの単位には、例えばページ番号を用いればよい。例えば、ｎ個（ｎはフロントエンド装置３０内で現在動作している論理ページ解釈部３６−ｐの総数）の論理ページ解釈部３６−ｐが現在並列的に処理しているｎページの中の最新（最後）のページの番号を、論理ページ解釈の進捗度合いの指標値として用いる。現在処理中のページの代わりに、ｎ個の論理ページ解釈部３６−ｐが解釈を完了した最新のページの番号、あるいは、ページ配信部３４がｎ個の論理ページ解釈部３６−ｐに対して割り当てした最新のページの番号を、論理ページ解釈の進捗度合いの値として用いてもよい。同様に、ｋ個（ｋはフロントエンド装置３０内で現在動作しているフォーム解釈部３６−ｆの総数）のフォームジ解釈部３６−ｆが現在並列的に処理している、又は解釈を完了したｋページのうちの最新のページ番号、又は、ページ配信部３４がそれらｋ個のフォーム解釈部３４に割り当てた最新のページ番号、をフォーム解釈の進捗度合いの指標値として用いてもよい。
【００９５】
以上、解釈処理の進捗の指標値をページ番号で表す場合の例を示したが、これは一例に過ぎない。例えば、進捗度合いを、何ページ目の何バンド目まで解釈が終わったかにより表すようにしてもよい。なお、バンドとは、ページを、副走査方向について複数に分割することで得られる、帯状の範囲のことである。また、ページを主走査方向及び副走査方向の両方について複数に分割した結果であるタイル（すなわちページは複数のタイルから構成される）を単位として解釈の進捗度合いを表現してもよい。以下では、解釈の進捗度合いをページ番号で表す場合の例を代表にとって説明する。
【００９６】
ページ配信部３４が行う解釈部の構成比率の制御の処理手順の一例を、図９に示す。図９の例は、フロントエンド装置３０が、論理ページの解釈専用の解釈部を２つと、論理ページ解釈部３６−ｐとしてもフォーム解釈部３６−ｆとしても機能可能な両用解釈部を１つの、合計３つの解釈部３６を備える場合の制御の一例である。すなわち、この例は、図３の例において、論理ページ解釈部３６−ｐ１及び３６−ｐ２が論理ページ専用の解釈部であり、フォーム解釈部３６−ｆが両用解釈部である場合の例と考えればよい。この例では、両用解釈部の数が１つだけなので、その両用解釈部（図３の例で言えば、上から３つめの解釈部３６−ｆ）をフォーム解釈部として機能させるか論理ページ解釈部として機能させるかを制御することとなる。
【００９７】
図９の手順では、まずページ配信部３４は、印刷対象のＰＤＬデータの処理の開始時に、フロントエンド装置３０が有する唯一の両用解釈部を、フォーム解釈部に設定する（Ｓ１００２）。すなわち、両用解釈部に対し、フォーム解釈部として機能するように指示する。この指示の結果、フロントエンド装置３０は、図３に示すように、２つの論理ページ解釈部３６−ｐ１，３６−ｐ２と１つのフォーム解釈部３６−ｆを有する状態となる。
【００９８】
この状態で、ページ配信部３４は、論理ページ解釈部３６−ｐ１，３６−ｐ２に対し、ＰＤＬデータの先頭ページから順に、それぞれ別々のページを割り当てていく。例えば、各論理ページ解釈部３６−ｐが１つの論理ページの解釈（中間データ生成）を完了する都度ページ配信部３４に完了通知を送り、その完了通知に応じてページ配信部３４がその論理ページ解釈部３６−ｐに次の論理ページを割り当てる。また、ページ配信部３４は、フォーム解釈部３６−ｆに対して先頭ページから順にフォームの解釈を実行させる。フォーム解釈部３６−ｆが、１ページ中のフォーム群の解釈が完了する都度、ページ配信部３４に完了通知を送るようにしてもよい。
【００９９】
ここで、ページ配信部３４は、論理ページの解釈及びフォームの解釈が、それぞれ印刷ジョブの何ページ目まで進んでいるかを監視している。この監視は、例えば、論理ページ解釈部３６−ｐ及びフォーム解釈部３６−ｆがページ配信部３４に送ってくる完了通知を用いて行えばよい。例えば、図３の例において、論理ページ解釈部３６−ｐ１から第３ページの完了の通知を受け取っており（次に割り当てた第５ページの完了通知は未着）、論理ページ解釈部３６−ｐ２から第４ページの完了の通知を受け取っている（次に割り当てた第６ページの完了通知は未着）場合、２つの論理ページ解釈部３６−ｐ１及び３６−ｐ２全体としては、第４ページまでの論理ページ解釈が完了していると判定する。１つしかないフォーム解釈部３６−ｆの場合はもっと単純であり、印刷ジョブの開始から数えてｎ個のページ完了通知を受け取った時点では、第ｎページまでのフォーム解釈が完了していると判定できる。なお、仮に動作中のフォーム解釈部３６−ｆがフロントエンド装置３０内に複数存在する場合、フォーム解釈処理の進捗度合いは、それら複数のフォーム解釈部３４−ｆが解釈を完了したページのうちの最新のページ番号とすればよい。
【０１００】
以上では、解釈の進捗状況を、解釈が「完了」した最新のページ番号で表したが、このページ番号に１を足せば、論理ページ解釈部３６−ｐ群（又はフォーム解釈部３６−ｆ群）が現在解釈中の最新のページ番号が得られる。この現在解釈中の最新のページ番号を進捗度合いの指標値として用いてもよい。
【０１０１】
また、ページ配信部３４は、あらかじめ定められたアルゴリズムに従って論理ページ解釈部３６−ｐ群に対して、先頭ページから順にページの割り当てを行っていくので、何ページまでの割り当てを済ませたかは把握している。この割り当て済みの最新のページの番号を進捗度合いの指標値としてもよい。
【０１０２】
ページ配信部３４は、以上に例示したように、印刷ジョブの処理の進行につれて、論理ページ解釈及びフォーム解釈の進捗度合いの指標値をそれぞれ求め、更新している。そして、ページ配信部３４は、ある判定タイミングで、論理ページ解釈の進捗度合いの指標値と、フォーム解釈の進捗度合いの指標値とを比較する（Ｓ１００４，Ｓ１０１２）。判定タイミングは、例えば、あらかじめ定められた時間毎の定期的なタイミングであってもよいし、論理ページ解釈部３６−ｐ１，３６−ｐ２又はフォーム解釈部３６−ｆから１ページ分の解釈の完了通知がやってくる都度のタイミングであってもよい。
【０１０３】
まず、Ｓ１００４では、フォーム解釈の進捗が論理ページ解釈の進捗よりも十分大きく先行しているかどうかを判定する。この判定では、例えば、論理ページの解釈の進捗に対するフォームの解釈の進捗の先行度を計算し、その先行度があらかじめ定めた閾値Ｔｈ１より大きいか否かを判定する。この先行度は、例えば、フォーム解釈の進捗度合いから論理ページ解釈の進捗度合いを減算した減算結果であり、フォーム解釈及び論理ページ解釈の進捗度合いの指標値をそれぞれ記号Ｐｆ及びＰｐで表した場合、（Ｐｆ−Ｐｐ）で表される。この場合、Ｓ１００４では、「（Ｐｆ−Ｐｐ）＞Ｔｈ１」が成り立つか否かを判定する。成り立てばＳ１００４の判定結果は肯定（Ｙ）であり、成り立たなければ否定（Ｎ）である。
【０１０４】
ここで閾値Ｔｈ１は、フォーム解釈の進捗が論理ページ解釈の進捗よりも「十分大きく」先行しているか否かの判断基準となるページ数である。この閾値Ｔｈ１の値は、後述するＳ１０１２の判定で用いる閾値Ｔｈ２よりも大きい整数である。
【０１０５】
Ｓ１００４の判定結果がＹの場合、ページ配信部３４は、両用解釈部（図３ではフォーム解釈部３６−ｆとして示す）を論理ページ解釈部に設定する（Ｓ１００６）。すなわち、両用解釈部に対し、論理ページ解釈部３６−ｐとして機能するように指示する。この指示の結果、フロントエンド装置３０は、３つの論理ページ解釈部３６−ｐが動作する状態となる。すなわち、この場合、十分に先のページまでフォームの解釈が進んでいるので、論理ページ解釈部３６−ｐの数を増やして論理ページ解釈の速度を速めることで、システム全体の画像処理（解釈及び描画）の速度を向上させる。
【０１０６】
そして、ページ配信部３４は、３つの論理ページ解釈部３６−ｐに対してページの割り当てを行い（Ｓ１００８）、印刷ジョブの最後のページまで割り当てが完了したかどうかを判定する（Ｓ１０１０）。Ｓ１０１０の判定結果がＹの場合、ページ配信部３４は、この印刷ジョブについての処理を終了する。逆に判定結果がＮの場合は、処理はＳ１００４に戻る。
【０１０７】
Ｓ１００４の判定結果がＮの場合、ページ配信部Ｓ３４は、フォーム解釈の進捗が論理ページ解釈の進捗に追いつかれてきたか否かを判定する（Ｓ１０１２）。そして、この判定の結果がＹ、すなわち「追いつかれてきた」、と判定した場合、両用解釈部をフォーム解釈部に設定する（Ｓ１０１４）。例えば、それまでは３つの解釈部３６がすべて論理ページ解釈部３６−ｐとして動作していたところでＳ１０１２の判定結果がＹとなった場合、そのうちの１つがフォーム解釈部３６−ｆに切り替えられ、フォームの解釈が再開されることになる。これにより、残りの２つの論理ページ解釈部３６−ｐがこれから処理する予定の各ページで用いられるフォームの解釈が行われ、その解釈結果がフォームキャッシュ４８に蓄積されていくことになる。Ｓ１０１４の後、処理はＳ１００８に進む。
【０１０８】
なお、Ｓ１０１２の判定結果がＮの場合はＳ１０１４はスキップされるので、両用解釈部の動作モードは変更されない。
【０１０９】
ここで、Ｓ１０１２の判定では、例えば論理ページ解釈に対するフォーム解釈の先行度（Ｐｆ−Ｐｐ）が、第２の閾値Ｔｈ２以下になったか否かを判定する。（Ｐｆ−Ｐｐ）≦Ｔｈ２が成立すれば、Ｓ１０１２の判定結果はＹとなる。
【０１１０】
第２の閾値Ｔｈ２は、例えば１であってもよい。この場合、フォーム解釈が論理ページ解釈に完全に追いつかれた（すなわち先行度＝０）となった場合に、Ｓ１０１２の判定結果がＹとなる。
【０１１１】
また、別の例として、「フロントエンド装置３０内の論理ページ解釈部３６−ｐ群がそれぞれ次に処理するページまでに用いられるフォームの解釈結果が、フォームキャッシュ４８内に蓄積されている」という条件が満たされるよう、Ｔｈ２の値を定めてもよい。例えば、ここで例にとっている論理ページ専用の解釈部が２つ、両用解釈部が１つのシステム構成の場合、両用解釈部が担うフォーム解釈に課される条件は、２つの専用の論理ページ解釈部３６−ｐ１，３６−ｐ２が次に処理するページまでのフォーム解釈結果をキャッシュする、ということになる。この場合、Ｔｈ２は、論理ページ解釈部として動作していた両用解釈部をフォーム解釈部に切り替えた場合に残る論理ページ解釈部の数（この例では専用の論理ページ解釈部３６−ｐ１，３６−ｐ２の数＝２）の２倍である「４」とすればよい。すなわち、現時点で解釈が済んでいる論理ページの最大番号がｋであるとすると、２つの論理ページ解釈部３６−ｐ１，３６−ｐ２が現在処理中の論理ページの最大番号は（ｋ＋２）であり、それら論理ページ解釈部が次に処理するページの最大番号は（ｋ＋４）となる。したがって、上述の条件を満たすには、フォーム解釈は、論理ページ解釈が完了しているページ番号よりも４ページ先まで完了していなければならない。
【０１１２】
例えば、フォーム解釈の先行度（Ｐｆ−Ｐｐ）がＴｈ２＝「４」より大きい状況から、Ｔｈ２＝「４」以下に変化した時点を考えると、その時点のフォームキャッシュ４８には、２つの論理ページ解釈部３６−ｐ１，３６−ｐ２が次に処理するページで用いるフォームの解釈結果がかろうじて蓄積されているか、あるいはそれよりも少し足りなくなっている。そこで、フォームの解釈を進めるために、それまで論理ページ解釈部として機能していた両用解釈部をフォーム解釈部へと切り替えるのである。
【０１１３】
上述の条件を満たすための閾値Ｔｈ２は、上に例示したように専用の論理ページ解釈部３６−ｐの総数の２倍でよいが、論理ページ解釈部からフォーム解釈部へ切り替えるのに要する時間やその他の要因による制御の時間遅れを考慮して、「専用の論理ページ解釈部３６−ｐの総数×２」よりもある程度大きい値に設定してもよい。
【０１１４】
また、このように定めた第２の閾値Ｔｈ２を基準に、前述の第１の閾値Ｔｈ１の具体的な値（Ｔｈ２よりも大きい値）を定めればよい。
【０１１５】
図１０には、３つの専用の論理ページ解釈部と１つの両用解釈部を含んだフロントエンド装置についての、印刷ジョブの最初の方の処理の流れの具体例が示される。この例では、まず３つの論理ページ解釈部が１，２，３ページの解釈をそれぞれ実行すると共に、フォーム解釈部として機能する両用解釈部が１ページ目から順に、ページ内に含まれるフォームの解釈を進める。例えば、一番上の論理ページ解釈部は、１ページ目の解釈が終わると次に４ページ目の解釈を行う。その後、フォーム解釈部として機能している両用解釈部が第１６ページの中のフォーム群の解釈を終えた時点では、３つの論理ページ解釈部は、第６ページまでの解釈を完了し、第７〜９ページの解釈を実行中である。この例では第１の閾値Ｔｈ１が「９」であり、この時点でのフォーム解釈の先行度「１０」（＝１６−６）はその閾値Ｔｈ１より大きいので、Ｓ１００４の判定結果がＹとなり、両用解釈部が論理ページ解釈部のモードに切り替えられる。そして、第４の論理ページ解釈部として機能する両用解釈部に対して第１０ページの解釈が割り当てられる。
【０１１６】
その後、論理ページ解釈部として機能する両用解釈部が第１０ページの解釈を完了した時点では、３つの論理ページ解釈部は第１１〜第１３ページを処理中である。この時点では、フォーム解釈の先行度は、フォーム解釈の完了している最新のページ番号１６から論理ページ解釈が完了している最新のページ番号１０を引いた結果である「６」であり、この先行度の値６は、Ｓ１０１２の判定閾値Ｔｈ２＝６（専用の論理ページ解釈部の総数３の２倍）以下の値である。したがって、Ｓ１０１２の判定結果がＹとなり、Ｓ１０１４にて両用解釈部がフォーム解釈部のモードへと切り替えられる。この結果、両用解釈部は、第１７ページ以降のページのフォームの解釈を進めていくことになる。
【０１１７】
以上、フロントエンド装置３０内の両用解釈部の数が１つの場合を説明した。次に、フロントエンド装置３０内に両用解釈部が２つ設けられている場合の、解釈部の構成比率の制御の例を、図１１を参照して説明する。論理ページ解釈専用の解釈部の数は１以上であれば、いくつでもよい。
【０１１８】
この例では、まず印刷ジョブの実行開始当初に、２つの両用解釈部を、あらかじめ定めた比率で、論理ページ解釈部及びフォーム解釈部に設定する（Ｓ１０２２）。例えば、「あらかじめ定めた比率」が１対１であれば、２つの両用解釈部のうちの１つを論理ページ解釈部に、もう１つをフォーム解釈部に設定する。ただしこれは一例に過ぎず、このかわりに、２つの両用解釈部の両方をフォーム解釈部に初期設定してもよい。
【０１１９】
ページ配信部３４は、フォーム解釈と論理ページ解釈のそれぞれの進捗度合いを監視しており、判定タイミングが到来するごとに、論理ページ解釈に対するフォーム解釈の先行度が十分に大きいか否かを判定する（Ｓ１０２４）。Ｓ１０２４では、先行度があらかじめ定めた閾値ＴｈＡを超えたか否かを判定する。この閾値ＴｈＡは、後述するＳ１０３２の判定閾値ＴｈＢよりも大きい、あらかじめ定めた値である。Ｓ１０２４の判定結果がＹ（肯定）の場合、ページ配信部３４は、２つの両用解釈部の両方を論理ページ解釈部に設定する（Ｓ１０２６）。Ｓ１０２６では、Ｓ１０２６の前から既に論理ページ解釈部として動作している両用解釈部は、論理ページ解釈部としてそのまま動作を続行させ、Ｓ１０２６の前にフォーム解釈部として動作している両用解釈部は、論理ページ解釈部に切り替える。このように、Ｓ１０２６では、十分先のページまでフォームの解釈が完了していれば、論理ページ解釈部の数を増やすことで、論理ページ解釈の速度を上げ、ひいては印刷ジョブの処理速度を向上させるのである。そして、各論理ページ解釈部にページの割り当てを行い（Ｓ１０２８）、印刷ジョブの最後のページまで解釈が完了したかどうかを判定する（Ｓ１０３０）。
【０１２０】
Ｓ１０２４の判定結果がＮの場合、ページ配信部３４は、フォーム解釈の先行度を第２の閾値ＴｈＢより大きいか否かを判定する（Ｓ１０３２）。第２の閾値ＴｈＢは、前述の例における閾値Ｔｈ２と同様、フォーム解釈が論理ページ解釈に追いつかれかけてきたか否かを判定するための閾値である。Ｓ１０３２の判定の結果がＮ（否定）の場合、フォーム解釈が論理ページ解釈に追いつかれてきているということなので、フォーム解釈を高速に進める必要がある。そこで、この場合には、両用解釈部を両方ともフォーム解釈部に設定する（Ｓ１０３６）。Ｓ１０３６では、Ｓ１０３６の前から既にフォーム解釈部として動作している両用解釈部は、フォーム解釈部としてそのまま動作を続行させ、Ｓ１０３６の前に論理ページ解釈部として動作している両用解釈部は、フォーム解釈部に切り替える。このように２つのフォーム解釈部を動作させることで、フォーム解釈の速度が高くなる。
【０１２１】
また、Ｓ１０３２の判定結果がＹの場合、フォーム解釈の先行度は第１の閾値ＴｈＡと第２の閾値ＴｈＢの間である。この状況は、フォーム解釈が先行しすぎている状況と、フォーム解釈が論理ページ解釈に追いつかれそうになっている状況との間である。この状況では、２つの両用解釈部のうちの１つを論理ページ解釈部とし、もう１つをフォーム解釈部として機能させる（Ｓ１０３４）。これにより、２つの両用解釈部を共に論理ページ解釈部として動作させる場合よりもフォーム解釈の速度を上げることで、フォーム解釈が論理ページ解釈に追いつかれにくくすることができる。
【０１２２】
以上に説明した図１１の例では、２つのフォーム解釈部が並列に動作する場合がある。このような場合、２つのフォーム解釈部の解釈結果の中間データを、一方のフォーム解釈部のキャッシュ管理部３８（図３参照）にて集中管理することで、２つのフォーム解釈部が同じフォームを重複して解釈することを防止してもよい。すなわち、この場合、２つの両用解釈部のうちあらかじめ定めた一方のみがキャッシュ管理部３８を有しており、１つの両用解釈部のみをフォーム解釈部に設定する場合は、キャッシュ管理部３８を有する方をフォーム解釈部に設定することとする。そして、２つの両用解釈部をフォーム解釈部とした場合は、キャッシュ管理部３８を有しない方のフォーム解釈部は、ＰＤＬデータから新たなフォームを検出するごとに、そのフォームに対応するキャッシュＩＤを求め、そのキャッシュＩＤに対応する解釈結果が既に登録済みであるかどうかをキャッシュ管理部３８を有するフォーム解釈部に問い合わせる。そして、問い合わせの結果、既登録と判明すれば、そのフォームの解釈は取りやめて次のフォームの処理に進み、未登録であればそのフォームの解釈を実行する。
【０１２３】
図１１には、フロントエンド装置３０内に両用解釈部が２つある場合（専用の論理ページ解釈部は１以上の任意の数）の例を示したが、同様の制御は、両用解釈部が３以上ある場合にも適用可能である。すなわち、フォーム解釈の論理ページ解釈に対する先行度を監視し、先行度が下がるにつれて、両用解釈部のうちフォーム解釈部として動作させるものの数を段階的に増やしていく（すなわち論理ページ解釈部として動作させるものの数を段階的に減らしていく）制御を行うことで、解釈処理全体の効率を高めることができる。
【０１２４】
次に、図１２を参照して、解釈部の構成比率の制御についての更なる変形例を説明する。図１２に示す構成比率制御の手順のうち、図１１の手順と同様のステップには、同じ番号を付して詳細な説明を省略する。図１２の例では、フロントエンド装置３０は複数の両用解釈部と１以上の専用の論理ページ解釈部を有するものとする。
【０１２５】
図１２の手順では、まず印刷ジョブの実行開始時に、フロントエンド装置３０内の複数の両用解釈部を、あらかじめ定めた初期比率に従って、論理ページ解釈部及びフォーム解釈部に設定し（Ｓ１０２２）、各解釈部にページを割り当てて処理を実行させる。
【０１２６】
そして、論理ページ解釈に対するフォーム解釈の先行度を計算し、求めた先行度があらかじめ定めた閾値ＴｈＢ以下になると（Ｓ１０３２の判定結果がＮ）、それまで論理ページ解釈部として機能していた両用解釈部のうちの１つをフォーム解釈部に切り替える（Ｓ１０４４）。これにより、フォーム解釈部の数が１つ増える。ここで用いる閾値Ｔｈｂは、前述の例における閾値Ｔｈ２と同様、フォーム解釈が論理ページ解釈に追いつかれかけてきたか否かを判定するための閾値である。これにより、フォーム解釈の速度が向上し、フォーム解釈が論理ページ解釈に追い抜かれてしまう可能性が低くなる。
【０１２７】
一方、フォーム解釈の先行度が、閾値ＴｈＢよりも大きい閾値ＴｈＡを超えている場合（Ｓ１０２４の判定結果がＹ）は、それまでフォーム解釈部として機能していた両用解釈部のうちの１つを論理ページ解釈部に切り替える（Ｓ１０４２）。これにより、論理ページ解釈の速度が向上し、ひいては印刷速度が向上する。
【０１２８】
フォーム解釈の先行度が閾値ＴｈＡ以下かつＴｈＢより大きい場合は、論理ページ解釈部からフォーム解釈部への切り替えも、その逆も行わない。したがってこの場合は、論理ページ解釈部とフォーム解釈部の比率が維持される。
【０１２９】
論理ページ解釈部からフォーム解釈部への切り替え、及びフォーム解釈部から論理ページ解釈部への切り替えは、上述の例のように１つずつ行う必要はなく、複数ずつ行ってもよい。
【０１３０】
以上に説明した実施形態では、フォーム解釈の進捗が論理ページ解釈の進捗に追いつかれないよう（すなわちフォーム解釈が論理ページ解釈に常に先行するよう）フォーム解釈部と論理ページ解釈部の数の比率を制御したが、これは必須ではない。逆に、論理ページ解釈がフォーム解釈に先行するように制御してもよい。また、論理ページ解釈とフォーム解釈のどちらが先行してもよい制御としてもよい。
【０１３１】
いずれの場合でも重要なのは、フォーム解釈の進捗と論理ページ解釈の進捗に大きな差が出ないように制御することである。描画部４４が描画を行えるのは、論理ページの解釈結果と、その論理ページで用いるフォームの解釈結果の両方が揃っているページまでである。すなわち、描画部４４の描画速度は、論理ページ解釈とフォーム解釈のうちの遅い方の速度に制限される。このため、論理ページ解釈とフォーム解釈のうちの一方が他方より大幅に高速となっても、描画部４４の描画速度（ひいては印刷処理全体の速度）は向上しない。むしろ、解釈部３６の総数が決まっている状況では、フォーム解釈の進捗と論理ページ解釈の進捗に大きな差が出ないようにする方が、全体の処理速度を向上させることにつながる。例えば、図１２の手順において、Ｓ１０３２で用いる閾値ＴｈＢを負の値とすれば、論理ページ解釈とフォーム解釈のどちらが先行してもよく、かつ、論理ページ解釈の進捗度合いとフォーム解釈の進捗度合いの差がある一定の範囲に収まるようにすることができる。
【０１３２】
以上では、フロントエンド装置３０内に専用の論理ページ解釈部と両用解釈部がそれぞれ１以上存在する場合の例を主として説明した。これに対し、フロントエンド装置３０内の複数の解釈部３６がすべて両用解釈部であるシステム構成にも、以上に例示した各種の制御が適用可能である。複数の解釈部３６がすべて両用解釈部である場合、初期設定（Ｓ１０２２）では、それら両用解釈部のすべてをフォーム解釈部に設定するのではなく、一部を論理ページ解釈部に設定する。初期設定時の論理ページ解釈部とフォーム解釈部との数の比率は、あらかじめ定めておいた比率とする。
【０１３３】
以上、本発明の実施形態および変形例について説明した。上述した実施形態および変形例は、あくまで本発明を説明するための例に過ぎず、本発明の範囲が上記実施形態および変形例に限られるわけではない。例えば、上記実施形態ではフォームキャッシュ４８をバックエンド装置４０内に設けたが、これは一例に過ぎない。フォームキャッシュ４８は、各解釈部３６および描画部４４からアクセス可能な場所であれば、どのような場所に配置されてもよい。また、上記実施形態では、描画部４４の数は１つであったが、複数存在してももちろんよい。
【符号の説明】
【０１３４】
１０  端末装置、２０  印刷コントローラ、３０  フロントエンド装置、３２  印刷ジョブ受信部、３４  ページ配信部、３６−ｆ  フォーム解釈部、３６−ｐ１，３６−ｐ２  論理ページ解釈部、３８  キャッシュ管理部、４０  バックエンド装置、４２  中間データバッファ、４４  描画部、４６  出力バッファ、４８  フォームキャッシュ、５０  印刷装置、６０，６２，６４  通信手段、３８２  通信制御部、３８４  キャッシュ制御部、３８６  キャッシュテーブル。
【図１】
2015001882.tif 000003
【図２】
2015001882.tif 000004
【図３】
2015001882.tif 000005
【図４】
2015001882.tif 000006
【図５】
2015001882.tif 000007
【図６】
2015001882.tif 000008
【図７】
2015001882.tif 000009
【図８】
2015001882.tif 000010
【図９】
2015001882.tif 000011
【図１０】
2015001882.tif 000012
【図１１】
2015001882.tif 000013
【図１２】
2015001882.tif 000014