(57)【特許請求の範囲】
【請求項１】
印刷データに基づき中間データを生成する第１のプロセッサと、
印刷データに基づき中間データを生成する第２のプロセッサと、
印刷データを受信する受信手段と、
リソースを複数のページで共有する非独立な印刷データであるか否かを判断する第１の判断手段と、
前記第１の判断手段により非独立な印刷データではないと判断された印刷データが、夫々のページにおける先頭の解析命令にダイレクトアクセスできるダイレクトアクセス可能な印刷データであるか否かを判断する第２の判断手段と、
を有し、
前記受信手段により受信された印刷データが前記第１の判断手段により非独立な印刷データであると判断された場合、前記第１のプロセッサは、ｎページ目までの印刷データのリソースを展開し、ｎページ目より前の中間データは生成せずに展開されたリソースを利用してｎページ目の中間データを生成し、前記第２のプロセッサは、印刷データのｎページ目よりも後ろのページであるｍページ目までの印刷データのリソースを展開し、ｍページ目より前の中間データは生成せずに展開されたリソースを利用してｍページ目の中間データを生成し、
前記受信手段により受信された印刷データが前記第２の判断手段によりダイレクトアクセス可能な印刷データであると判断された場合、前記第１のプロセッサは、印刷データのｎページ目より前のページの印刷命令を解析せずに、ｎページ目の先頭の印刷命令から解析を始めてｎページ目の中間データを生成し、前記第２のプロセッサは、印刷データのｍページ目より前のページの印刷命令を解析せずに、ｍページ目の先頭の印刷命令から解析を始めてｍページ目の中間データを生成し、
前記受信手段により受信された印刷データが前記第２の判断手段によりダイレクトアクセス可能な印刷データでないと判断された場合、前記第１のプロセッサは、印刷データのリソースを展開せずに、ｎページ目の先頭の解析命令を見つけるために印刷命令をｎページ目より前のページから解析し、ｎページ目の中間データを生成し、前記第２のプロセッサは、印刷データのリソースを展開せずに、ｍページ目の先頭の解析命令を見つけるために印刷命令をｍページ目より前のページから解析し、ｍページ目の中間データを生成することを特徴とする印刷データ処理装置。
【請求項２】
前記受信手段により受信された印刷データが前記第１の判断手段により非独立な印刷データであると判断された場合、前記第１のプロセッサは、ｎページ目の中間データを生成する前に中間データを生成したページの次のページであるｘページ目からｎページ目までの印刷データのリソースを展開し、前記第２のプロセッサは、ｍページ目の中間データを生成する前に中間データを生成したページの次のページであるｙページ目からｍページ目までの印刷データのリソースの内、前記第１のプロセッサが展開をしていない印刷データのリソースを展開することを特徴とする請求項１に記載の印刷データ処理装置。
【請求項３】
第１のプロセッサは、印刷データに基づき中間データを生成し、
第２のプロセッサは、印刷データに基づき中間データを生成し、
受信手段は、印刷データを受信し、
第１の判断手段は、リソースを複数のページで共有する非独立な印刷データであるか否かを判断し、
第２の判断手段は、前記第１の判断手段により非独立な印刷データではないと判断された印刷データが、夫々のページにおける先頭の解析命令にダイレクトアクセスできるダイレクトアクセス可能な印刷データであるか否かを判断し、
前記受信手段により受信された印刷データが前記第１の判断手段により非独立な印刷データであると判断された場合、前記第１のプロセッサは、ｎページ目までの印刷データのリソースを展開し、ｎページ目より前の中間データは生成せずに展開されたリソースを利用してｎページ目の中間データを生成し、前記第２のプロセッサは、印刷データのｎページ目よりも後ろのページであるｍページ目までの印刷データのリソースを展開し、ｍページ目より前の中間データは生成せずに展開されたリソースを利用してｍページ目の中間データを生成し、
前記受信手段により受信された印刷データが前記第２の判断手段によりダイレクトアクセス可能な印刷データであると判断された場合、前記第１のプロセッサは、印刷データのｎページ目より前のページの印刷命令を解析せずに、ｎページ目の先頭の印刷命令から解析を始めてｎページ目の中間データを生成し、前記第２のプロセッサは、印刷データのｍページ目より前のページの印刷命令を解析せずに、ｍページ目の先頭の印刷命令から解析を始めてｍページ目の中間データを生成し、
前記受信手段により受信された印刷データが前記第２の判断手段によりダイレクトアクセス可能な印刷データでないと判断された場合、前記第１のプロセッサは、印刷データのリソースを展開せずに、ｎページ目の先頭の解析命令を見つけるために印刷命令をｎページ目より前のページから解析し、ｎページ目の中間データを生成し、前記第２のプロセッサは、印刷データのリソースを展開せずに、ｍページ目の先頭の解析命令を見つけるために印刷命令をｍページ目より前のページから解析し、ｍページ目の中間データを生成することを特徴とする印刷データ処理方法。
【請求項４】
請求項３に記載の印刷データ処理方法を印刷データ処理装置に実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷データ処理装置、印刷データ処理方法、プログラムに関するものである。
【背景技術】
【０００２】
複写機を始めとする画像形成装置において画像出力を行う際、印刷データであるＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）を解析して中間データを生成しラスターデータへと展開することが知られている。ＰＤＬには文字や図形と言ったデータの描画命令が定義されている。
【０００３】
このＰＤＬには様々な種類がある。例えば、文字や図形と言ったデータがページ間で依存性がなく夫々のページ毎に独立している「独立ＰＤＬ」形式がある。
【０００４】
また、逆に、上述のデータを複数のページで共有する「非独立ＰＤＬ」形式がある。なお、上述のデータをリソースと呼ぶ。さらに、独立ＰＤＬについては、ページの先頭データへダイレクトにアクセス可能な「ダイレクトアクセス可能なＰＤＬ」形式がある。
【０００５】
ところで、近年、ハードウェア技術の向上によりマルチコアのプロセッサが開発されＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）においてもマルチコアのプロセッサが搭載されている。搭載することで、コピー及びプリント等の複数の機能をストレスなく並列実行できる。
【０００６】
特許文献１には、マルチコアのプロセッサを利用し、ＰＤＬに基づく描画処理を高速化する技術が開示されている。
【０００７】
上述の特許文献に開示された発明は、ＰＤＬをページ単位に異なるプロセッサに割り当てる際、複数ページにわたる印刷コマンド列（ＰＤＬ）を読み、実際の描画（実描画）を行うことなく各ページの描画属性パラメータの設定を行う空描画を実行する。次に、空描画の終了したページの印刷コマンド列の実描画処理を各プロセッサに実行させる発明である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平０５−２０１０７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、従来のマルチコアのプロセッサを利用した描画処理は、ＰＤＬの特性を考慮して描画処理を行っていなかった。
【課題を解決するための手段】
【００１０】
本発明の一実施形態に係る装置は、印刷データに基づき中間データを生成する第１のプロセッサと、印刷データに基づき中間データを生成する第２のプロセッサと、印刷データを受信する受信手段と、リソースを複数のページで共有する非独立な印刷データであるか否かを判断する第１の判断手段と、前記第１の判断手段により非独立な印刷データではないと判断された印刷データが、夫々のページにおける先頭の解析命令にダイレクトアクセスできるダイレクトアクセス可能な印刷データであるか否かを判断する第２の判断手段と、を有し、前記受信手段により受信された印刷データが前記第１の判断手段により非独立な印刷データであると判断された場合、前記第１のプロセッサは、ｎページ目までの印刷データのリソースを展開し、ｎページ目より前の中間データは生成せずに展開されたリソースを利用してｎページ目の中間データを生成し、前記第２のプロセッサは、印刷データのｎページ目よりも後ろのページであるｍページ目までの印刷データのリソースを展開し、ｍページ目より前の中間データは生成せずに展開されたリソースを利用してｍページ目の中間データを生成し、前記受信手段により受信された印刷データが前記第２の判断手段によりダイレクトアクセス可能な印刷データであると判断された場合、前記第１のプロセッサは、印刷データのｎページ目より前のページの印刷命令を解析せずに、ｎページ目の先頭の印刷命令から解析を始めてｎページ目の中間データを生成し、前記第２のプロセッサは、印刷データのｍページ目より前のページの印刷命令を解析せずに、ｍページ目の先頭の印刷命令から解析を始めてｍページ目の中間データを生成し、前記受信手段により受信された印刷データが前記第２の判断手段によりダイレクトアクセス可能な印刷データでないと判断された場合、前記第１のプロセッサは、印刷データのリソースを展開せずに、ｎページ目の先頭の解析命令を見つけるために印刷命令をｎページ目より前のページから解析し、ｎページ目の中間データを生成し、前記第２のプロセッサは、印刷データのリソースを展開せずに、ｍページ目の先頭の解析命令を見つけるために印刷命令をｍページ目より前のページから解析し、ｍページ目の中間データを生成することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、ＰＤＬの特性を考慮することでより高速に描画処理することができる。
【図面の簡単な説明】
【００１２】
【図１】実施例１における画像形成装置１０２のシステム構成の一例を示した図。
【図２】実施例１における画像形成装置１０２のモジュール構成の一例を示した図。
【図３】実施例１における印刷処理のフローチャート。
【図４】実施例１におけるＰＤＬ判定処理のフローチャート。
【図５】実施例１におけるページ非独立なＰＤＬのスケジューリングのフローチャート。
【図６】実施例１におけるページ独立なＰＤＬのスケジューリングのフローチャート。
【図７】実施例１におけるページダイレクトアクセス可能なＰＤＬのスケジューリングのフローチャート。
【図８】実施例１におけるページ非独立なＰＤＬの解析処理のフローチャート。
【図９】実施例１におけるページ独立なＰＤＬの解析処理のフローチャート。
【図１０】実施例１におけるページダイレクトアクセス可能なＰＤＬの解析処理のフローチャート。
【図１１】実施例１におけるＤＬ生成処理のフローチャートを示した図。
【図１２】実施例１における展開処理のフローチャートを示した図。
【図１３】実施例１におけるＰＤＬ管理テーブルの一例を示した図。
【図１４】実施例１におけるページ管理テーブルの一例を示した図。
【図１５】実施例１におけるスケジューリングによる処理時間の一例を示した図。
【発明を実施するための形態】
【００１３】
本発明の各実施例にて使われる用語について説明する。ＰＤＬとは、文書を印刷する際、文字や図形の位置情報、書式情報などが定義された印刷データのことである。リソースとは、複数のページで構成されるＰＤＬを中間データへ変換する際に、繰り返し利用される一度展開されたデータのことである。リソースの展開とは、例えば、圧縮されたイメージデータをＢｉｔｍａｐへ変換することや、文字コードを文字パターン（文字のイメージ）へ変換することである。非独立ＰＤＬとは、リソースを複数のページで共有するＰＤＬのことである。独立ＰＤＬとは、各ページ毎に文字や図形と言ったデータが定義されており、リソースを複数のページで共有する必要のないＰＤＬのことである。ダイレクトアクセス可能なＰＤＬとは、ＰＤＬの夫々のページにおける先頭の解析命令にダイレクトにアクセスできる、リソースを複数のページで共有する必要のないＰＤＬのことである。なお、独立ＰＤＬは、ＰＤＬの夫々のページにおける先頭の解析命令にダイレクトにアクセスできない。解析とは、ＰＤＬの印刷命令を読み込み、読み込んだ印刷命令がどのような命令なのかを解釈することである。
【００１４】
以下に、本発明の好ましい実施の形態を、添付の図面に基づいて詳細に説明する。
【実施例１】
【００１５】
以下、図１を参照して実施例１における画像形成装置の構成について詳細に説明をする。
【００１６】
図１は、実施例１における、印刷データ処理を行う画像形成装置１０２の構成の一例を示す図である。図１に示す画像形成装置１０２は、次の構成を有する。ネットワークＩ／Ｆ２０２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０８、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｃ  Ｄｒｉｖｅ）２１７を備える。さらに、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１  ２１８およびＣＰＵ２  ２１９、エンジンＩ／Ｆ２１２、プリンタエンジン２１３を備える。
【００１７】
ネットワークＩ／Ｆ２０２は、外部デバイスと情報の入出力を行うためのユニットであり、外部デバイスが送信したＰＤＬを、ネットワーク１０４を通して受信する。
【００１８】
ＲＡＭ２０３は、様々な情報を一時的に格納するユニットであり、受信バッファ２０４、ワークメモリ２０５、フレームバッファ２０６、ラスタメモリ２０７、共有メモリ２２０から構成される。
【００１９】
受信バッファ２０４は、ネットワークＩ／Ｆ２０２を介して外部デバイスから受信したＰＤＬを格納する記憶領域である。ワークメモリ２０５は、受信したＰＤＬを中間コードに変換する際に、一時的に使用するワーク用の記憶領域である。フレームバッファ２０６は、画像形成装置１０２内部で変換された中間コードなどを格納する記憶領域である。ラスタメモリ２０７は、中間コードを展開しレンダリングが行われたデータを格納する記憶領域である。
【００２０】
共有メモリ２２０は、ＣＰＵ１  ２１８またはＣＰＵ２  ２１９、または両方のユニットが、ＲＯＭ２０８内のプログラムを実行することで生成したデータを格納するための記憶領域である。また、両方のユニットから共有メモリ２２０にアクセスを可能にすることで夫々のユニットはデータを共有することができる。例えば、共有メモリ２２０にリソースを格納することで両方のＣＰＵはリソースを共有することができる。
【００２１】
ＲＯＭ２０８は、画像形成装置１０２におけるＣＰＵ１  ２１８またはＣＰＵ２  ２１９、または両方のユニットが処理を実行する制御プログラムを格納するためのユニットである。ＲＯＭ２０８は、ＰＤＬ解析プログラム２０９、ＤＬ（Ｄｉｓｐｌａｙ  Ｌｉｓｔ）である中間データを生成するＤＬ生成プログラム２１０、展開処理プログラム２１４、ページスケジューラ２１５を含む。
【００２２】
ＰＤＬ解析プログラム２０９は、受信バッファ２０４から読み出したＰＤＬが複数種のＰＤＬ形式の内どのＰＤＬ形式であるかを特定し、ＰＤＬの形式が特定されたことに応じて、ＰＤＬ解析処理をＣＰＵに実行させるためのプログラムである。
【００２３】
ＤＬ生成プログラム２１０は、ＰＤＬ解析プログラム２０９において解析されたデータから中間データを生成し、中間データをフレームバッファ２０６に格納する処理をＣＰＵに実行させるためのプログラムである。
【００２４】
展開処理プログラム２１４は、フレームバッファ２０６に格納された中間データをレンダリングしてビットマップへ展開し、展開されたビットマップをラスタメモリ２０７に格納する処理をＣＰＵに実行させるプログラムである。
【００２５】
ページスケジューラ２１５は、ＣＰＵ１  ２１８とＣＰＵ２  ２１９が実行するＰＤＬ解析プログラム２０９、ＤＬ生成プログラムに、ＰＤＬの各ページの解析処理またはＤＬの生成処理の実行を依頼する処理をＣＰＵに実行させるプログラムである。なお、ＰＤＬ解析プログラムやＤＬ生成プログラム等の印刷データから中間データを生成する際に用いられるプログラムを印刷データ処理プログラムと称する。
【００２６】
また、外部デバイスから受信したＰＤＬの形式を判別し、その判別結果に応じて、画像形成装置１０２が搭載する２つのＣＰＵ夫々にＰＤＬ内の所定のページを振り分ける処理を行う。なお、ページスケジューラの詳細は後述する。また、上述のＲＯＭ２０８に格納されているプログラムは、ＣＰＵ１  ２１８またはＣＰＵ２  ２１９以外の第３のプロセッサであるＣＰＵ（ここでは、図示しない）が実行しても良い。
【００２７】
第１のプロセッサに相当するＣＰＵ２１８および第２のプロセッサに相当するＣＰＵ２１９は、画像形成装置２０１の演算処理や制御を行う中央演算処理装置（ＣＰＵ）である。２つのユニットは、ＲＯＭ２０８に格納された所定のプログラムをＲＡＭ２０３にロードしてデータ処理を実行する。夫々のＣＰＵには、コアプロセッサと呼ばれる命令発行器や演算器などを組み合わせて動作する集合体を１つずつ持っている。
【００２８】
エンジンＩ／Ｆ２１２は、プリンタエンジン２１３との信号の入出力を行うエンジンＩ／Ｆである。プリンタエンジン２１３は、イメージデータに基づき周知の電子写真プロセスによって感光ドラム上に潜像を形成し、用紙に転写してトナーを定着させ印字するプリンタエンジンである。
【００２９】
次に、本発明の実施例１におけるページスケジューラ２１５による処理の概要について説明する。図２は、ページスケジューラ２１５のモジュール構成の一例を示す図である。
【００３０】
点線で囲まれた３０２は、ＣＰＵ１  ２１８に実行させる、ＰＤＬ解析プログラム２０９とＤＬ生成プログラム２１０を示しており、ＰＤＬはページ単位で処理される。点線で囲まれた３０３は、ＣＰＵ２  ２１９に実行させる、ＰＤＬ解析プログラム２０９とＤＬ生成プログラム２１０を示しており、ＰＤＬはページ単位で処理される。
【００３１】
３１０は、ページスケジューラからＣＰＵ１  ２１８のＰＤＬ解析プログラム２０９への制御を示す。３１１は、ページスケジューラからＣＰＵ２  ２１９のＰＤＬ解析プログラム２０９への制御を示す。３２０は、ページスケジューラからＣＰＵ１  ２１８のＤＬ生成プログラム２１０への制御を示す。３２１は、ページスケジューラからＣＰＵ２  ２１９のＤＬ生成プログラム２１０への制御を示す。
【００３２】
これらの制御については、関数コール、プロセス間通信等により行なう。ＣＰＵ１  ２１８で動作するＰＤＬ解析プログラム２０９は、ページスケジューラ２１５からの制御３１０に従い、受信バッファ２０４に格納されたＰＤＬを読み込みＰＤＬ解析処理を実行する。
【００３３】
ＣＰＵ１  ２１８で動作するＤＬ生成プログラム２１０は、ページスケジューラ２１５からの制御３２０とＰＤＬ解析プログラム２０９から渡された解析結果に基づきＤＬ生成処理を実行し、フレームバッファ２０６にＤＬを格納する。
【００３４】
ＣＰＵ２  ２１９で動作するＰＤＬ解析プログラム２０９、ＤＬ生成プログラム２１０も同様の処理を行なう。このようなモジュール構成により、ＰＤＬのページ並列処理を実現している。
【００３５】
図３は、実施例１における印刷処理のフローチャートを示す図である。
【００３６】
ステップＳ１００１で、ネットワーク１０４に接続されたＰＣ等から送信されたＰＤＬをネットワーク１０４経由して、ネットワークＩ／Ｆ２０２が受信し、受信バッファ２０４に格納する。ステップＳ１００２で、ページスケジューラ２１５は、ＰＤＬ解析プログラム２０９に、受信したＰＤＬの種類がどのＰＤＬかを判定するためのＰＤＬ判定処理を依頼する。
【００３７】
ステップＳ１００３で、ＰＤＬ解析プログラム２０９が判定したＰＤＬが、非独立なＰＤＬかをページスケジューラ２１５が判定する。非独立なＰＤＬと判定した場合、ステップＳ１００７で、ページスケジューラ２１５は、非独立ＰＤＬ用のページスケジューリング処理を実行する。ＰＤＬ解析プログラム２０９が判定したＰＤＬがページ独立なＰＤＬの場合、ステップＳ１００４で、ページスケジューラ２１５は、さらにページの先頭データへダイレクトアクセス可能なＰＤＬかを判定する。
【００３８】
判定したＰＤＬがダイレクトアクセス不可能なＰＤＬの場合、ステップＳ１００６で、ページスケジューラ２１５は、ページ独立ＰＤＬ用のページスケジューリング処理を実行する。判定したＰＤＬがダイレクトアクセス可能なＰＤＬの場合、ステップＳ１００７で、ページスケジューラ２１５は、ダイレクトアクセスＰＤＬ用のページスケジューリング処理を実行する。このように、夫々のＰＤＬの種類に応じた適切なＰＤＬ解析処理とＤＬ生成処理を実行することで、複数のプロセッサによる描画処理を適切に行うことができる。
【００３９】
例えば、独立ＰＤＬ／ダイレクトアクセス可能なＰＤＬの場合、複数のページでリソースを共有しないので、複数のＰＤＬ解析処理がリソースを共有するような処理は不要である。そこで、この場合は、複数のＰＤＬ解析処理がリソースを共有するような処理を省く。逆に、非独立の場合、複数のページでリソースを共有するので、複数のＰＤＬ解析処理がリソースを共有するような処理が必要となる。そこで、この場合は、複数のＰＤＬ解析処理がリソースを共有するような処理を行う。さらに、ダイレクトアクセス可能なＰＤＬの場合、目的のページより前のＰＤＬ解析処理が不要になるので、ＰＤＬ解析処理プログラムは、目的のページより前のＰＤＬ解析処理を行わない。
【００４０】
図４は、実施例１におけるＰＤＬ解析プログラム２０９でのＰＤＬ判定処理のフローチャートを示す図である。なお、以下の処理はＰＤＬ解析プログラム２０９が実行する。
【００４１】
ステップＳ１１０１で、ページスケジューラ２１５からＰＤＬ判定依頼がきたら、ステップＳ１１０２で、受信バッファ２０４に格納されたデータを読み出す。Ｓ１１０３で、後述するＰＤＬ管理テーブルに判定していないＰＤＬ解析処理があるかを判定する。まだ判定していないＰＤＬ解析処理がある場合、ステップＳ１１０４で、そのＰＤＬの印刷命令の一部分を解析し、ステップＳ１１０５で解析できるデータかを判定する。
【００４２】
判定できた場合は、ステップＳ１１０６で、判定したＰＤＬ解析処理を実行するＰＤＬ解析処理として設定し、ステップＳ１１０７で、ページスケジューラ２１５に判定したＰＤＬを返す。Ｓ１１０３で、判定していないＰＤＬ解析処理がない場合は、ステップＳ１１１０で、あらかじめ設定された優先ＰＤＬ解析処理を実行する解析処理として設定し、ステップＳ１１１１で、ページスケジューラ２１５に優先ＰＤＬを返す。
【００４３】
図１３は、本実施例におけるＰＤＬ判定処理で使うＰＤＬ管理テーブルの一例を示す図である。
【００４４】
ＰＤＬ管理テーブル６００は、各ＰＤＬの種別とＰＤＬ解析処理６０１へのポインタを格納したテーブルである。６０１は、各ＰＤＬのデータの解析処理を行なう関数を含んだＰＤＬ解析処理である。ＰＤＬ判定処理においては、ＰＤＬ１、ＰＤＬ２、、、ＰＤＬＮの順に解析処理を実行し、解析できたＰＤＬを判定する。
【００４５】
図１４（ａ）は、実施例１におけるページスケジューラ２１５のページ管理を行うためのページ管理テーブルの一例を示す図である。
【００４６】
ページ管理テーブル５００は、処理中のページを管理するページ管理テーブルである。ページ管理テーブル５００は、ページ情報５０１のアドレス５１０と、処理中のページ数５１１から構成される。５０１は、処理中のページの情報を格納するページ情報である。ページ情報５１０は、処理中のページを特定するページＩＤ５２０と、どの処理でページの処理が実行されているかを特定する処理ＩＤ５２１と、次のページ管理リストへ結合するためのリンクアドレス５２２から構成される。図１４（ｂ）は、初期化時のページ管理テーブルであり、ページ情報のアドレス５１０はＮＵＬＬであり、処理中のページ数５１１は０である。図１４（ｃ）は、処理中のページ管理テーブルであり、処理中のページ数が２ページあり、ページ情報が２つ存在している。最終のページ情報のリンクアドレス５２２は、ＮＵＬＬである。
【００４７】
図５は、実施例１におけるページスケジューラ２１５が実行する、ページ非独立なＰＤＬのページスケジューリングのフローチャートを示す図である。なお、以下の処理はＰＤＬ解析プログラム２０９が実行する。また、ＣＰＵ１  ２１８が担当するページをｎページ目とし、ＣＰＵ２  ２１９が担当するページをｍページ目とする。また、ｎページ目より前にＣＰＵ１  ２１８が中間データを生成したページの次のページをｘページ目とする。また、ｍページ目より前にＣＰＵ２  ２１９が中間データを生成したページの次のページをｙページ目とする。
【００４８】
ステップＳ１２０２で、ページカウンタＰｃｎｔに０を代入し、ステップＳ１２０３で、ワークメモリ２０５内のページ管理テーブルの初期化を行なう。ステップＳ１２０４で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１，２と、ＤＬ生成プログラム２１０のＤＬ生成処理１，２へジョブ開始を通知する。ステップＳ１２０５で、ＤＬ生成プログラム２１０のＤＬ生成処理１または、ＤＬ生成処理２からのページ終了通知あったかを判定する。
【００４９】
ステップＳ１２０５で、ページ終了通知でないと判定した場合、ステップＳ１２０６で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１または、ＰＤＬ解析処理２からのジョブ終了通知があったかを判定する。ステップＳ１２０６で、ジョブ終了通知でないと判定した場合、ステップＳ１２０７で、ワークメモリ２０５内のページ管理テーブルを検索し、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１が処理中かを判定する。
【００５０】
ステップＳ１２０７で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１が処理中でない場合、ステップＳ１２１０で、ページカウンタＰｃｎｔをインクリメントする。ステップＳ１２１１で、ワークメモリ２０５内のページ管理テーブルにＰｃｎｔのページ情報を追加する。例えば、追加されたページが３ページ目だとするとｍは３となる。ステップＳ１２１２で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１へＰｃｎｔページまでの処理を依頼する。上述の例の場合、ｍページ目までのＰＤＬ解析を行う。さらに、ステップＳ１２１３で、ＤＬ生成プログラム２１０のＤＬ生成処理１へＰｃｎｔ−１ページまでの読み飛ばしを依頼する。即ち、Ｐｃｎｔ−１ページ目（２ページ目）までの中間データは生成しない。そして、ＤＬ生成処理１は、Ｐｃｎｔページ（ｍページ目）のＰＤＬに基づき中間データを生成する。
【００５１】
ステップＳ１２０７で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１が処理中の場合、ステップＳ１２０８で、ワークメモリ２０５内のページ管理テーブルを検索し、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理２が処理中かを判定する。上述の例の場合、ＰＤＬ解析処理１はｍページ目を処理している。ＰＤＬ解析プログラム２０９のＰＤＬ解析処理２が処理中でない場合、ステップＳ１２２０で、ページカウンタＰｃｎｔをインクリメントする。この場合、Ｐｃｎｔは４になるので、ｎも４となる。ステップＳ１２２１で、ワークメモリ２０５内のページ管理テーブルにＰｃｎｔのページ情報を追加する（４ページ目が追加される）。ステップＳ１２２２で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理２へＰｃｎｔページ（ｎページ目）までの処理を依頼する。さらに、ステップＳ１２２３で、ＤＬ生成プログラム２１０のＤＬ生成処理２へＰｃｎｔ−１ページ（３ページ目）までの読み飛ばしを依頼する。即ち、Ｐｃｎｔ−１ページ目（３ページ目）までの中間データは生成しない。そして、ＤＬ生成処理２は、Ｐｃｎｔページ（ｎページ目）のＰＤＬに基づき中間データを生成させる。
【００５２】
ステップＳ１２０５で、ページ終了通知と判定した場合、ステップＳ１２３０で、ページ終了通知で渡されたページに該当するページ情報をワークメモリ２０５内のページ管理テーブルから削除する。ステップＳ１２３１で、ページ終了通知で渡されたフレームバッファ２０６内のＤＬの格納先とページを展開処理プログラム２１４に通知し、処理を依頼する。
ステップＳ１２０６で、ジョブ終了通知と判定した場合、ステップＳ１２４０で、ワークメモリ２０５内のページ管理テーブルから処理中のページが残っているかを判定する。判定した結果、処理中のページが残っていたら、ステップＳ１２４１で、ＤＬ生成プログラム２１０のＤＬ生成処理１または、ＤＬ生成処理２からのページ終了通知待ちになる。ページ終了通知がきたら、ステップＳ１２４２で、ページ終了通知で渡されたページに該当するページ情報をワークメモリ２０５内のページ管理テーブルから削除する。ステップＳ１２４３で、ページ終了通知で渡されたフレームバッファ２０６内のＤＬの格納先とページを展開処理プログラム２１４に通知し、処理を依頼する。ページ管理テーブルがなくなると、ステップＳ１２４４で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１，２と、ＤＬ生成プログラム２１０のＤＬ生成処理１，２へジョブ終了を通知する。
【００５３】
図６は、実施例１におけるページスケジューラ２１５でのページ独立なＰＤＬのページスケジューリングを行うフローチャートを示す図である。なお、以下の処理は、ページスケジューラ２１５が実行する。
【００５４】
ステップＳ１３０２で、ページカウンタＰｃｎｔに０を代入し、ステップＳ１３０３で、ワークメモリ２０５内のページ管理テーブルの初期化を行なう。ステップＳ１３０４で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１，２と、ＤＬ生成プログラム２１０のＤＬ生成処理１，２へジョブ開始を通知する。ステップＳ１３０５で、ＤＬ生成プログラム２１０のＤＬ生成処理１または、ＤＬ生成処理２からのページ終了通知があったかを判定する。  ステップＳ１３０５で、ページ終了通知でないと判定した場合、ステップＳ１３０６で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１または、ＰＤＬ解析処理２からのジョブ終了通知があったかを判定する。ステップＳ１３０６で、ジョブ終了通知でないと判定した場合、ステップＳ１３０７で、ワークメモリ２０５内のページ管理テーブルを検索し、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１が処理中かを判定する。
【００５５】
ステップＳ１３０７で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１が処理中でない場合、ステップＳ１３１０で、ページカウンタＰｃｎｔをインクリメントする。ステップＳ１３１１で、ワークメモリ２０５内のページ管理テーブルにＰｃｎｔのページ情報を追加する。ステップＳ１３１２で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１へＰｃｎｔ−１ページまでの読み飛ばしとＰｃｎｔページの処理を依頼する。そして、ＤＬ生成処理１へＰｃｎｔページの処理を依頼する。
【００５６】
ステップ１２０７で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１が処理中の場合、ステップＳ１３０８で、ワークメモリ２０５内のページ管理テーブルを検索し、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理２が処理中かを判定する。ＰＤＬ解析プログラム２０９のＰＤＬ解析処理２が処理中でない場合、ステップＳ１３２０で、ページカウンタＰｃｎｔをインクリメントし、ステップＳ１３２１で、ワークメモリ２０５内のページ管理テーブルにＰｃｎｔのページ情報を追加する。ステップＳ１３２２で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理２へＰｃｎｔ−１ページまでの読み飛ばしとＰｃｎｔページの処理を依頼する。そして、ＤＬ生成処理２へＰｃｎｔページの処理を依頼する。
【００５７】
ステップＳ１３０５で、ページ終了通知と判定した場合、ステップＳ１３３０で、ページ終了通知で渡されたページに該当するページ情報をワークメモリ２０５内のページ管理テーブルから削除する。ステップＳ１３３１で、ページ終了通知で渡されたフレームバッファ２０６内のＤＬの格納先とページを展開処理プログラム２１４に通知し、処理を依頼する。
【００５８】
ステップＳ１３０６で、ジョブ終了通知と判定した場合、ステップＳ１３４０で、ワークメモリ２０５内のページ管理テーブルから処理中のページが残っているかを判定する。判定した結果、処理中のページが残っていたら、ステップＳ１３４１で、ＤＬ生成プログラム２１０のＤＬ生成処理１または、ＤＬ生成処理２からのページ終了通知待ちになる。ページ終了通知がきたら、ステップＳ１３４２で、ページ終了通知で渡されたページに該当するページ情報をワークメモリ２０５内のページ管理テーブルから削除する。ステップＳ１３４３で、ページ終了通知で渡されたフレームバッファ２０６内のＤＬの格納先とページを展開処理プログラム２１４に通知し、処理を依頼する。ページ管理テーブルがなくなると、ステップＳ１３４４で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１，２と、ＤＬ生成プログラム２１０のＤＬ生成処理１，２へジョブ終了を通知する。
【００５９】
図７は、実施例１におけるページスケジューラ２１５でのダイレクトアクセス可能なＰＤＬのページスケジューリングを行なうフローチャートを示す図である。なお、以下の処理は、ページスケジューラ２１５が実行する。
【００６０】
ステップＳ１４０２で、ページカウンタＰｃｎｔに０を代入し、ステップＳ１４０３で、ワークメモリ２０５内のページ管理テーブルの初期化を行う。ステップＳ１４０４で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１，２と、ＤＬ生成プログラム２１０のＤＬ生成処理１，２へジョブ開始を通知する。ステップＳ１４０５で、ＤＬ生成プログラム２１０のＤＬ生成処理１または、ＤＬ生成処理２からのページ終了通知あったかを判定する。
ステップＳ１４０５で、ページ終了通知でないと判定した場合、ステップＳ１４０６で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１または、ＰＤＬ解析処理２からのジョブ終了通知があったかを判定する。
ステップＳ１４０６で、ジョブ終了通知でないと判定した場合、ステップＳ１４０７で、ワークメモリ２０５内のページ管理テーブルを検索し、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１が処理中かを判定する。
ステップＳ１４０７で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１が処理中でない場合、ステップＳ１４１０で、ページカウンタＰｃｎｔをインクリメントする。ステップＳ１４１１で、ワークメモリ２０５内のページ管理テーブルにＰｃｎｔのページ情報を追加する。ステップＳ１４１２で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１へＰｃｎｔページの処理を依頼する。
【００６１】
ステップ１２０７で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１が処理中の場合、ステップＳ１４０８で、ワークメモリ２０５内のページ管理テーブルを検索し、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理２が処理中かを判定する。ＰＤＬ解析プログラム２０９のＰＤＬ解析処理２が処理中でない場合、ステップＳ１４２０で、ページカウンタＰｃｎｔをインクリメントし、ステップＳ１４２１で、ワークメモリ２０５内のページ管理テーブルにＰｃｎｔのページ情報を追加する。ステップＳ１４２２で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理２へＰｃｎｔページの処理を依頼する。
【００６２】
ステップＳ１４０５で、ページ終了通知と判定した場合、ステップＳ１４３０で、ページ終了通知で渡されたページに該当するページ情報をワークメモリ２０５内のページ管理テーブルから削除する。ステップＳ１４３１で、ページ終了通知で渡されたフレームバッファ２０６内のＤＬの格納先とページを展開処理プログラム２１４に通知し、処理を依頼する。
【００６３】
ステップＳ１４０６で、ジョブ終了通知と判定した場合、ステップＳ１４４０で、ワークメモリ２０５内のページ管理テーブルから処理中のページが残っているかを判定する。判定した結果、処理中のページが残っていたら、ステップＳ１４４１で、ＤＬ生成プログラム２１０のＤＬ生成処理１または、ＤＬ生成処理２からのページ終了通知待ちになる。ページ終了通知がきたら、ステップＳ１４４２で、ページ終了通知で渡されたページに該当するページ情報をワークメモリ２０５内のページ管理テーブルから削除する。ステップＳ１４４３で、ページ終了通知で渡されたフレームバッファ２０６内のＤＬの格納先とページを展開処理プログラム２１４に通知し、処理を依頼する。ページ管理テーブルがなくなると、ステップＳ１４４４で、ＰＤＬ解析プログラム２０９のＰＤＬ解析処理１，２と、ＤＬ生成プログラム２１０のＤＬ生成処理１，２へジョブ終了を通知する。
【００６４】
図８は、本実施例におけるページ非独立なＰＤＬの解析処理のフローチャートを示す図である。なお、以下の処理はＰＤＬ解析処理プログラム２０９が実行する。
【００６５】
ステップＳ２００１で、ページスケジューラ２１５からのジョブ開始通知を待つ。ジョブ開始通知を受けると、ステップＳ２００２で、ページカウンタＰＦｃｎｔを０に初期化する。ステップＳ２００３で、ページスケジューラ２１５からのページ処理依頼を、ステップＳ２００４で、ジョブ終了通知を待つ。
【００６６】
ページ処理依頼を受けると、ステップＳ２００５で、ＰＦｃｎｔとステップＳ２００３で処理依頼されたページを比較する。例えば、図５で説明したＰＤＬ解析処理２がｍページ目を依頼した場合、４ページ目とＰＦｃｎｔを比較する。比較した結果、処理依頼されたページがＰＦｃｎｔより大きい場合は、ステップＳ２００６で、ＰＦｃｎｔをインクリメントし、ステップＳ２００７で、ＤＬ生成プログラム２１０のＤＬ生成処理にＰＦｃｎｔとページ開始を通知する。上述の場合、ＰＤＬ解析処理２がｍページ目を解析する前に、ＤＬ生成処理２が中間データを生成したページはｙページ目なので、インクリメントされる前のＰＦｃｎｔは３ページ目となる。ステップＳ２００８で、受信バッファ２０４に格納されたデータを読み出し、解析処理を行なう。なお、ＰＤＬ解析処理プログラムは、文字や図形の描画命令や、リソースの展開または利用の命令等の命令を解析する。
【００６７】
ステップＳ２００８において、複数のページで共有するリソースを展開する命令を解析した場合、既に同じ命令が実行されていればリソースの展開を行う必要はない。既に同じ命令が実行されているかどうかを確認するためには、ＰＤＬ解析処理プログラム２０９がページスケジューラ２１５のページ管理テーブルを参照する必要がある。ＰＤＬ解析処理プログラム２０９は、別のＣＰＵで実行されている解析処理プログラム２０９が、どのページの解析処理を実行したかを確認する。別のＣＰＵで実行されている解析処理プログラムが解析処理を行っているページまでは既にリソースは展開されていることになるので、その分のリソース展開処理を省くことができる。例えば、図５で説明したＰＤＬ解析処理２は、既にＰＤＬ解析処理１が展開したｎページ目までのリソース展開処理を行わず、ＰＤＬ解析処理１が展開をしていない４ページ目のリソース展開処理を行うことになる。
【００６８】
ステップＳ２００９で、解析した結果ジョブ終了かを判定し、ジョブ終了でない場合は、ステップＳ２０１０で、ページ終了かを判定する。ページ終了でもない場合は、ステップＳ２０１１で、解析した情報が次のページ以降でも必要な情報かを判定し、必要なら情報なら、ステップＳ２０１２で、ワークメモリ２０５内に情報を格納する。
【００６９】
また、解析した情報が複数のページで共有するリソースを展開する命令であり、かつ、ワークメモリ２０５内に同じリソースが格納されていない場合、展開したリソースをワークメモリ２０５内に格納することになる。例えば、図５で説明したＰＤＬ解析処理１は、３ページ目までのリソースを格納し、ＰＤＬ解析処理２は、４ページ目のリソースを格納する。ステップＳ２００８の解析処理を行うＰＤＬ解析処理プログラム２０９は、必要に応じてワークメモリ２０５内のリソースを利用する。これにより、以降のＰＤＬの解析処理において展開を行う必要のないリソースの展開処理を省くことができる。
【００７０】
ステップＳ２０１３で、ＤＬ生成プログラム２１０のＤＬ生成処理にＤＬ生成を依頼する。ステップＳ２００９で、ジョブ終了だった場合、ステップＳ２０２０で、ページスケジューラ２１５にジョブ終了を通知し、ステップＳ２０２１で、ページスケジューラ２１５からのジョブ終了通知待ちになる。ページスケジューラ２１５からのジョブ終了通知を受けると、ステップＳ２００１で、ジョブ開始通知待ちになる。
ステップＳ２０１０で、ページ終了だった場合、ステップＳ２０３０で、ＤＬ生成プログラム２１０のＤＬ生成処理にページ終了を通知し、ステップＳ２００５に戻る。
【００７１】
図９は、本実施例におけるページ独立なＰＤＬの解析処理のフローチャートを示す図である。なお、以下の処理はＰＤＬ解析処理プログラム２０９が実行する。
【００７２】
ステップＳ２１０１で、ページスケジューラ２１５からのジョブ開始通知を待つ。ジョブ開始通知を受けると、ステップＳ２１０２で、ページカウンタＰＦｃｎｔを０に初期化する。ステップＳ２１０３で、ページスケジューラ２１５からのページ処理依頼を、ステップＳ２１０４で、ジョブ終了通知を待つ。
【００７３】
ページ処理依頼を受けると、ステップＳ２１０５で、ＰＦｃｎｔとステップＳ２１０４で処理依頼されたページを比較する。比較した結果、処理依頼されたページがＰＦｃｎｔ＋１と異なる場合は、ステップＳ２１０６で、受信バッファ２０４に格納されたデータを処理依頼されたページの先頭まで読み飛ばす。ステップＳ２１０７で、ＰＦｃｎｔに依頼されたページを代入する。ステップＳ２１０８で、ＤＬ生成プログラム２１０のＤＬ生成処理にＰＦｃｎｔとページ開始を通知する。ステップＳ２１０９で受信バッファ２０４に格納されたデータを読み出し、解析処理を行なう。
【００７４】
ステップＳ２１１０で、解析した結果ジョブ終了かを判定し、ジョブ終了でない場合は、ステップＳ２１１１で、ページ終了かを判定する。ページ終了でもない場合は、ステップＳ２１１２で、ＤＬ生成プログラム２１０のＤＬ生成処理にＤＬ生成を依頼する。
【００７５】
ステップＳ２１１０で、ジョブ終了だった場合、ステップＳ２１２０で、ページスケジューラ２１５にジョブ終了を通知し、ページスケジューラ２１５からのジョブ終了通知待ちになる。ページスケジューラ２１５からのジョブ終了通知を受けると、ステップＳ２１０１で、ジョブ開始通知待ちになる。
【００７６】
ステップＳ２１１１で、ページ終了だった場合、ステップＳ２１３０で、ＤＬ生成プログラム２１０のＤＬ生成処理にページ終了を通知し、ステップＳ２１０３のページ処理通知、ステップＳ２１０４のジョブ終了通知待ちに戻る。
【００７７】
図１０は、本実施例におけるＰＤＬ解析処理部２０９でのダイレクトアクセス可能なＰＤＬの解析処理のフローチャートを示す図である。なお、以下の処理はＰＤＬ解析処理プログラム２０９が実行する。
ステップＳ２２０１で、ページスケジューラ２１５からのジョブ開始通知を待つ。ジョブ開始通知を受けると、ステップＳ２２０２で、ページカウンタＰＦｃｎｔを０に初期化する。ステップＳ２２０３で、ページスケジューラ２１５からのページ処理依頼を、ステップＳ２２０４で、ジョブ終了通知を待つ。
【００７８】
ページ処理依頼を受けると、ステップＳ２２０７で、ＰＦｃｎｔに依頼されたページを代入する。ステップＳ２２０８で、ＤＬ生成プログラム２１０のＤＬ生成処理にＰＦｃｎｔとページ開始を通知する。ステップＳ２２０９で受信バッファ２０４に格納されたデータからＰＦｃｎｔのページを読み出し、解析処理を行なう。
【００７９】
ステップＳ２２１０で、解析した結果ジョブ終了かを判定し、ジョブ終了でない場合は、ステップＳ２２１１で、ページ終了かを判定する。ページ終了でもない場合は、ステップＳ２２１２で、ＤＬ生成プログラム２１０のＤＬ生成処理にＤＬ生成を依頼する。
【００８０】
ステップＳ２２１０で、ジョブ終了だった場合、ステップＳ２２２０で、ページスケジューラ２１５にジョブ終了を通知し、ページスケジューラ２１５からのジョブ終了通知待ちになる。ページスケジューラ２１５からのジョブ終了通知を受けると、ステップＳ２２０１で、ジョブ開始通知待ちになる。
【００８１】
ステップＳ２２１１で、ページ終了だった場合、ステップＳ２２３０で、ＤＬ生成プログラム２１０のＤＬ生成処理にページ終了を通知し、ステップＳ２２０３のページ処理通知、ステップＳ２２０４のジョブ終了通知待ちに戻る。
【００８２】
図１１は、本実施例におけるＤＬ生成プログラム２１０でのＤＬ生成処理のフローチャートを示す図である。なお、以下の処理はＤＬ生成プログラムが実行する。
【００８３】
ステップＳ３００１で、ページスケジューラ２１５からのジョブ開始通知を待つ。ジョブ開始通知を受けると、ステップＳ３００２で、読み飛ばしページＰｓｋｉｐを０ｘＦＦＦＦＦＦＦＦに初期化する。
【００８４】
ステップＳ３００３で、ページスケジューラ２１５からのジョブ終了通知かを判定し、ジョブ終了通知でない場合、ステップＳ３００４で、ページスケジューラ２１５からのページ読み飛ばし依頼かを判定する。ページ読み飛ばし依頼の場合、ステップＳ３００５で、読み飛ばしページＰｓｋｉｐに、ページ読み飛ばし依頼されたページを代入する。例えば、図５のＤＬ生成処理２が４ページ目を生成する場合、ページスケジューラから３ページ目までの読み飛ばしが依頼される。そして、３ページの次のページである４ページが代入される。
【００８５】
ステップＳ３００６で、ＰＤＬ解析プログラム２０９の解析処理からのページ開始通知かを判定し、ページ開始通知の場合、ステップＳ３００７で、Ｐｓｋｉｐとページ開始通知のページＩＤを比較する。Ｐｓｋｉｐがページ開始通知のページより大きい場合、ステップＳ３００８で、ＤＬ生成処理に何も処理しない空関数を設定する。この処理により、上述の場合、ＤＬ生成処理２は３ページ目までの中間データを生成しない。Ｐｓｋｉｐがページ開始通知のページより小さい場合、ステップＳ３００９で、ＤＬ生成処理に処理を実行し、フレームバッファ２０６にＤＬを格納する関数を設定する。図５のＤＬ生成処理２は４ページ目を依頼されているのでページＩＤは４となる。なお、この場合、ステップＳ２００９が実行される。
【００８６】
ステップＳ３０１０で、ＰＤＬ解析プログラム２０９の解析処理からのＤＬ生成依頼を受けると、ステップＳ３０１１で、ＤＬ生成処理の関数を実行する。ステップＳ３０１０で、ＤＬ生成依頼でない場合、ステップＳ３０２０で、ページ終了通知の場合、ステップＳ３０２１で、ページスケジューラ２１５に、ページ終了、ページＩＤ、フレームバッファ２０６内のＤＬの格納先を通知する。
【００８７】
図１２は、本実施例における展開処理プログラム２１４での展開処理のフローチャートを示す図である。
【００８８】
ステップＳ４００１で、ページスケジューラ２１５からの処理依頼を受けると、ステップ４００２で、処理依頼されたＤＬをフレームバッファ２０６から読み出し、ビットマップへ展開し、ラスタメモリ２０７に格納する。ステップ４００３で、ラスタメモリ２０７に格納したビットマップをエンジンＩ／Ｆ２１２を介してプリンタエンジン２１３に出力し、印刷する。
【００８９】
図１５は、本実施例におけるスケジューリング処理のモジュール制御と処理時間の一例を示す。  図１５（ａ）は、ページ非独立なＰＤＬにおけるもジュール制御と処理時間である。ページスケジューラから、ＣＰＵ１  ２１８のＰＤＬ解析プログラム２０９へ１ページ目処理依頼３１０を行い、ＣＰＵ２  ２１９のＰＤＬ解析プログラム２０９へ２ページ目までの処理依頼３１１を行う。この処理を実行する理由は、依頼されたページより前のページのリソースを展開しないと、ＤＬ生成プログラムが依頼されたページのＤＬ生成が実行できないためである。ＤＬ生成プログラム２１０へ１ページ目読み飛ばし依頼３２１を行なう。処理時間は、読み飛ばしページの時間がそれぞれかかるが、従来より時間が短縮される。このように、ページ間でリソースを共有するＰＤＬをより高速に描画処理することができる。
【００９０】
図１５（ｂ）は、ページ独立なＰＤＬにおけるもジュール制御と処理時間である。ページスケジューラから、ＣＰＵ１  ２１８のＰＤＬ解析プログラム２０９へ１ページ目処理依頼３１０を行い、ＣＰＵ２  ２１９のＰＤＬ解析プログラム２０９へ１ページ目読み飛ばし依頼と２ページの処理依頼３１１とを行なう。処理時間は、ページ非独立なＰＤＬよりも読み飛ばしページの時間が短縮され、全体的にさらに処理時間が短縮される。
【００９１】
図１５（Ｃ）は、ページダイレクトアクセス可能なＰＤＬにおけるもジュール制御と処理時間である。ページスケジューラから、ＣＰＵ１  ２１８のＰＤＬ解析プログラム２０９へ１ページ目処理依頼３１０を行い、ＣＰＵ２  ２１９のＰＤＬ解析プログラム２０９へ２ページの処理依頼３１１を行なう。処理時間は、読み飛ばす必要がないため、全体的にさらに処理時間が短縮される。
【００９２】
以上説明した実施例では、第１のプロセッサであるＣＰＵ１  ２１８、第２のプロセッサであるＣＰＵ２  ２１９の２つのＣＰＵで実行したが、それ以外の第３のプロセッサを用いてＰＤＬ解析処理とＤＬ生成処理を行っても良い。なお、コアプロセッサ１つに対してＰＤＬ解析処理プログラムとＤＬ生成処理プログラムが１つずつ実行されれば良いので、マルチコアプロセッサのＣＰＵを用いても良い。また、ＰＤＬ解析処理とＤＬ生成処理をＣＰＵを用いて実行したが、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いて実行しても良い。
【００９３】
また、以上説明した実施例では、ＰＤＬの種類に応じてＰＤＬ解析処理とＤＬ生成処理を切り替えたが、特定のＰＤＬ解析処理とＤＬ生成処理をユーザが指定しても良い。その場合、画像形成装置１０２の操作パネルかネットワーク１０４を介して接続されているＰＣから指定する。
【００９４】
また、以上説明した実施例では、非独立ＰＤＬ、独立ＰＤＬ、ダイレクトアクセスＰＤＬの夫々に応じたＰＤＬ解析処理とＤＬ生成処理を画像形成装置１０２に持たせたが、３つの内から２つまたは１つだけ選択し、画像形成装置１０２に持たせても良い。例えば、非独立ＰＤＬと独立ＰＤＬの２つのＰＤＬに応じた、ＰＤＬ解析処理とＤＬ生成処理を画像形成装置１０２に持たせる形態が考えられる。
【００９５】
また、非独立ＰＤＬの場合、解析処理の高速化のために複数のページで共有するリソースを、ＣＰＵ１  ２１８およびＣＰＵ２  ２１９が共有できるようにした。しかし、この効果を落として、リソースを共有せずに夫々のＣＰＵで独立して複数のページで共有するリソースを保持する形態も考えられる。
【００９６】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００９７】
２０９  ＰＤＬ解析プログラム
２１０  ＤＬ生成プログラム
２１４  展開処理プログラム
２１５  ページスケジューラ
２１８  ＣＰＵ１
２１９  ＣＰＵ２
【図１】
0005393343.tif 000002
【図２】
0005393343.tif 000003
【図３】
0005393343.tif 000004
【図４】
0005393343.tif 000005
【図５】
0005393343.tif 000006
【図６】
0005393343.tif 000007
【図７】
0005393343.tif 000008
【図８】
0005393343.tif 000009
【図９】
0005393343.tif 000010
【図１０】
0005393343.tif 000011
【図１１】
0005393343.tif 000012
【図１２】
0005393343.tif 000013
【図１３】
0005393343.tif 000014
【図１４】
0005393343.tif 000015
【図１５】
0005393343.tif 000016