(57)【要約】      （修正有）【課題】キャッシュをされた中間データをクリアするタイミングを指示することができる画像形成装置を提供する。【解決手段】印刷データを格納する印刷データ格納手段１３と、前記印刷データを解析し、印刷対象物の描画命令を含む描画命令データを生成する描画命令生成手段１２と、印刷データにおける前記印刷対象物の出現情報が前記印刷対象物毎に登録された印刷対象物出現テーブルを生成するテーブル作成手段１４と、描画命令データの命令を実行して印刷対象物の描画処理を行い、描画処理した印刷対象物の前記出現情報を削除する描画処理手段１６と、を有し、描画命令生成手段１２は、印刷対象物出現テーブルの出現情報がすべて削除された印刷対象物の描画命令を描画命令データから削除する。【選択図】図５
2012081711.tif 000002
【特許請求の範囲】
【請求項１】
印刷データを格納する印刷データ格納手段と、
前記印刷データを解析し、印刷対象物の描画命令を含む描画命令データを生成する描画命令生成手段と、
前記印刷データを解析し、前記印刷データにおける前記印刷対象物の出現情報が前記印刷対象物毎に登録された印刷対象物出現テーブルを生成するテーブル作成手段と、
前記描画命令を実行して前記印刷対象物の描画処理を行い、描画処理した前記印刷対象物の前記出現情報を前記印刷対象物出現テーブルから削除する描画処理手段と、を有し、
前記描画命令生成手段は、前記印刷対象物出現テーブルの前記出現情報がすべて削除された前記印刷対象物の前記描画命令を前記描画命令データから削除する、
ことを特徴とする画像形成装置。
【請求項２】
前記印刷対象物出現テーブルには、前記印刷対象物が出現するページのページ番号と印刷位置が前記印刷対象物毎に登録されている、
ことを特徴とする請求項１記載の画像形成装置。
【請求項３】
前記印刷対象物出現テーブルには、前記印刷対象物が文書内で出現する回数が前記印刷対象物毎に登録されている、
ことを特徴とする請求項１記載の画像形成装置。
【請求項４】
前記描画命令生成手段は、前記印刷対象物の前記描画命令を生成する際、前記描画命令を生成した前記印刷対象物の作成済みリストを作成し、
前記描画命令を生成する対象となっている前記印刷対象物の前記描画命令に、すでに前記作成済みリストに登録されている前記印刷対象物の前記描画命令への参照情報を記述する、
ことを特徴とする請求項１〜３いずれか１項記載の画像形成装置。
【請求項５】
前記描画命令生成手段による前記描画命令の生成と、前記テーブル作成手段による前記印刷対象物出現テーブルの生成とは、少なくとも一部が時間的に重複して実行される、
ことを特徴とする請求項１〜４いずれか１項記載の画像形成装置。
【請求項６】
前記描画処理手段は、描画処理を行った前記印刷対象物のページ番号と印刷位置に基づき、前記印刷対象物出現テーブルの前記印刷対象物を特定し、前記出現情報を削除する、
ことを特徴とする請求項２記載の画像形成装置。
【請求項７】
前記描画処理手段は、１ページ内の複数の領域毎に前記印刷対象物の描画処理を行う、
ことを特徴とする請求項１〜６いずれか１項記載の画像形成装置。
【請求項８】
前記印刷対象物は、繰り返し使うことを目的としたいくつかの印刷対象物の集合である、
ことを特徴とする請求項１〜７いずれか１項記載の画像形成装置。
【請求項９】
マルチコア型のＣＰＵ、又は、複数のＣＰＵを有し、
前記描画命令生成手段に１つのコア又はＣＰＵを、
前記テーブル作成手段及び前記描画処理手段に１つのコア又はＣＰＵを、割り当て、各手段がそれぞれ処理を実行する、
ことを特徴とする請求項１〜８いずれか１項記載の画像形成装置。
【請求項１０】
前記印刷データはＰＤＦフォーマットにより記述されている、ことを特徴とする請求項１〜９いずれか１項記載の画像形成装置。
【請求項１１】
入力データ取得手段が、印刷データを取得して印刷データ格納手段に格納するステップと、
描画命令生成手段が、前記印刷データを解析し、印刷対象物の描画命令を含む描画命令データを生成するステップと、
テーブル作成手段が、前記印刷データを解析し、前記印刷データにおける前記印刷対象物の出現情報が前記印刷対象物毎に登録された印刷対象物出現テーブルを生成するステップと、
描画処理手段が、前記描画命令データの命令を実行して前記印刷対象物の描画処理を行い、描画処理した前記印刷対象物の前記出現情報を削除するステップ、
前記描画命令生成手段が、前記印刷対象物出現テーブルの前記出現情報がすべて削除された前記印刷対象物の前記描画命令を前記描画命令データから削除するステップと、
と有することを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷データを描画処理して印刷する画像形成装置等に関し、特に、印刷データから生成される中間データのキャッシュ期間を決定できる画像形成装置及び画像処理方法に関する。
【背景技術】
【０００２】
プリンタが印刷対象のデータを解釈するためのフォーマットとしてＰｏｓｔＳｃｒｉｐｔ、ＰＣＬ、ＲＰＣＳ、ＰＤＦ（Ｐｏｒｔａｂｌｅ Ｄｏｃｕｍｅｎｔ Ｆｏｒｍａｔ）、又は、ＸＰＳなどが知られている。これらは総称してＰＤＬデータと呼ばれる。
【０００３】
ＰＤＬデータをプリンタで印刷する際、ＰＤＬデータを受け取ってから印刷までの時間を短縮する目的で、ＰＤＬデータに含まれる描画コマンドを並び替え、ハードウェア用のＰＤＬデータとソフトウェア用のＰＤＬデータに振り分けを行ってからディスプレイリストを作成する印刷装置が考案されている（例えば、特許文献１参照。）。特許文献１では、処理が高速なハードウェアにハードウェア用のＰＤＬデータを適切に振り分けることで、印刷処理を高速化することができるとしている。
【０００４】
しかしながら、特許文献１に開示された印刷方法では、ＰＤＬデータを並び替えるだけで、中間データの再利用については考慮されていないので、高速化はハードウェアの性能に依存してしまう。
【０００５】
ところで、プリンタはＰＤＬデータを受け取ると、ＰＤＬデータ内の描画命令を解釈して中間データに変換し、印刷用のメモリにその中間データを記憶する。これを利用して、中間データをメモリ上にキャッシュしておくことで、再度、プリンタが同一の描画命令を検出した場合、ＰＤＬデータを中間データに変換せずにメモリ内の中間データを再利用するという技術が知られている。こうすることで、中間データへの変換が不要な描画命令が生じるので、印刷処理の時間を短縮できる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来、メモリに中間データをキャッシュするプリンタは、キャッシュをされた中間データをクリアするタイミングを詳細に指示することができないという問題がある。
【０００７】
すなわち、ＰＤＬデータは複数ページで同一の印刷対象物（イメージなどのオブジェクト）を参照する場合があり、キャッシュされた中間データをクリアするタイミングによっては、ＰＤＬデータが複数ページで参照する同一の印刷対象物を、プリンタが再度、中間データに変換する必要が生じる。したがって、このような状況を未然に防ごうとすると、プリンタは1回の印刷ジョブの間はキャッシュされた中間データを保持する必要があった。
【０００８】
しかし印刷用のメモリにも容量の制限があるので、キャッシュ用のメモリが足りなくなると、一定の方針に基づいてキャッシュを削除する必要がある。この場合、例えば参照回数が少ない中間データから削除する、などの方法が考えられるが、これでは、プリンタが１つの印刷ジョブ内で再度、同じ印刷対象物の中間データを生成する必要が生じることを防止できない。
【０００９】
このように、キャッシュをされた中間データをクリアするタイミングを詳細に指示することができないため、従来は、印刷の処理時間を必ずしも最適にできないという問題があった。
【００１０】
本発明は、上記課題に鑑み、キャッシュをされた中間データをクリアするタイミングを指示することができる画像形成装置及び画像処理方法を提供することをも目的とする。
【課題を解決するための手段】
【００１１】
上記課題に鑑み、本発明は、印刷データを格納する印刷データ格納手段と、前記印刷データを解析し、印刷対象物の描画命令を含む描画命令データを生成する描画命令生成手段と、前記印刷データを解析し、前記印刷データにおける前記印刷対象物の出現情報が前記印刷対象物毎に登録された印刷対象物出現テーブルを生成するテーブル作成手段と、前記描画命令データの命令を実行して前記印刷対象物の描画処理を行い、描画処理した前記印刷対象物の前記出現情報を削除する描画処理手段と、を有し、前記描画命令生成手段は、前記印刷対象物出現テーブルの前記出現情報がすべて削除された前記印刷対象物の前記描画命令を前記描画命令データから削除する、ことを特徴とする画像形成装置を提供する。
【発明の効果】
【００１２】
キャッシュをされた中間データをクリアするタイミングを指示することができる画像形成装置を提供できる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態の印刷処理を模式的に説明する図の一例である。
【図２】印刷システムの一例を示す図である。
【図３】ＭＦＰのハードウェア構成図の一例である。
【図４】コントローラの機能を模式的に説明する図の一例である。
【図５】ＰＤＬ部の機能ブロック図の一例を示す図である。
【図６】ＰＤＦ（Ｐｏｒｔａｂｌｅ Ｄｏｃｕｍｅｎｔ Ｆｏｒｍａｔ）ファイルのフォーマット例を示す図である。
【図７】ボディ内の構造を模式的に示す図の一例である。
【図８】中間データの一例を示す図である。
【図９】ＰＤＬ部の処理の内部的な手順を模式的に示す図の一例である。
【図１０】オブジェクト参照テーブルの一例を示す図である。
【図１１】ＣＰＵコアと各機能の割り当てを模式的に示す図の一例である。
【図１２】オブジェクト参照情報作成部がオブジェクト参照テーブルを作成する手順を示すフローチャート図の一例である。
【図１３】ＤＬ作成部、描画処理部の処理手順を示すフローチャート図の一例である。
【図１４】参照済みリストの一例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための形態について図面を参照しながら説明する。
図１は、本実施形態の印刷処理を模式的に説明する図の一例である。図示するようにある印刷ジョブの１ページ目にはＡＢＣというベクトルデータのオブジェクトとイメージのオブジェクトがあり、２ページ目にＡＢＣというオブジェクトがあるとする。本実施形態では、「繰り返し使うことを目的としたいくつかの描画コマンドの集合」をフォームオブジェクトという。例えば、複数のページに同じロゴマークを描画する場合に、いくつかの描画コマンドの集合を１つのフォームオブジェクトとすることで描画処理の取り扱いが容易になる。
【００１５】
図では２つのＡＢＣというオブジェクトがフォームオブジェクトであり、ＰＤＬデータ内では同じオブジェクトとして扱われている。なお、イメージのオブジェクトがフォームオブジェクトとなることもある。以下、区別する必要がなければ、フォームオブジェクトやイメージオブジェクトを単にオブジェクトという。
【００１６】
Ｉ．本実施例のＭＦＰ（Multi Function Peripheral）は、重複の有無に関係なくページ上に出現するオブジェクトのリストであるオブジェクト参照テーブルを作成する。図ではＡＢＣが重複しているのでＡＢＣが２つ登録されている。
【００１７】
II．また、ＭＦＰは同じフォームオブジェクトの描画オブジェクトは１つだけしか作成しない。こうすることで、メモリ容量を節約でき、印刷処理の処理時間も短縮できる。なお、ＰＤＬデータのオブジェクトから生成されたディスプレイリストのオブジェクトを描画オブジェクトという。
【００１８】
III．ＭＦＰがディスプレイリストを用いて描画処理（レンダリング）すると、ＭＦＰは描画処理の終わったページのオブジェクトを、オブジェクト参照テーブルから削除する。図では１番目のＡＢＣとイメージの描画処理が終わったものとする。
【００１９】
ＩＶ．そして、ＭＦＰは、オブジェクト参照テーブルに残っていないオブジェクトの描画オブジェクトだけをディスプレイリストから削除する。オブジェクト参照テーブルに残っていないオブジェクトは、もはやその印刷ジョブで参照されることないので、描画オブジェクトを削除することでメモリを解放することができる。図では、ＡＢＣというオブジェクトはまだオブジェクト参照テーブルに残っているので、ディスプレイリストから削除されず、イメージの描画オブジェクトがディスプレイリストから削除されている。
【００２０】
このように、描画オブジェクト（中間データ）を削除するタイミングを最適化できる点が本実施形態のＭＦＰの特徴の１つである。
【００２１】
また、後述するように、ＭＦＰはオブジェクト参照テーブルを作成するＣＰＵと、ディスプレイリストの作成や描画処理を行うＣＰＵを別々にすることで、オブジェクト参照テーブルの作成とディスプレイリストの作成をある並列に実行できる。よって、印刷処理を高速化することができる。
【００２２】
〔構成〕
図２は、印刷システム３００の一例を示す図である。ホストＰＣ（Personal Computer）１５０とＭＦＰ２００がネットワークを介して接続されている。
【００２３】
ホストＰＣ１５０がユーザの操作を受け付け、例えば何らかのアプリケーションプログラムがＯＳのグラフィック制御部（例えばＧＤＩ）に文書データの印刷を要求する。グラフィック制御部は、アプリケーションに依存しないＡＰＩ（基本関数）により文書データを描画する描画命令（中間ファイル）を生成する。
【００２４】
この後、グラフィック制御部は、ＭＦＰ２００が対応したＰＤＬデータを生成するプリンタドライバを呼び出す。グラフィック制御部とプリンタドライバの間には、ＤＤＩ(Device Driver Interface)と呼ばれるインタフェースが定義されている。プリンタドライバは、中間ファイルをプリンタが解釈可能なＰＤＬデータに変換し、ＭＦＰ２００に送信する。
【００２５】
ＰＤＬデータとしては、ＰｏｓｔＳｃｒｉｐｔ、ＰＣＬ、ＲＰＣＳ、ＰＤＦ（Ｐｏｒｔａｂｌｅ Ｄｏｃｕｍｅｎｔ Ｆｏｒｍａｔ）、又は、ＸＰＳなどのフォーマットが知られており、ＰＤＬデータのフォーマットはＭＦＰ２００が解析可能なフォーマットである必要がある。
【００２６】
ＭＦＰ２００は、ＰＤＬデータからディスプレイリストとオブジェクト参照テーブルを作成し、描画処理（レンダリング処理）などを行い、印刷する。なおＭＦＰ２００は、プリンタ機能さえ有していればよいが、複写機、スキャナ、送信機能（FAX、電子メール、フォルダ）等を有していてもよい。
【００２７】
図３は、ＭＦＰ２００のハードウェア構成図の一例である。ＭＦＰ２００は、ＭＦＰ２００の全体を制御するコントローラ １００ と、用紙に画像を印刷するためのエンジン１６０ と、ユーザが入力を行う操作パネル・状態を表示するパネル装置 １７０ とを有する。
【００２８】
コントローラ１００ は、ＣＰＵ１１０、ＲＯＭ１２０、ＲＡＭ１３０、ＮＶＲＡＭ１４０、ネットワークＩ／Ｆ１５１、エンジンＩ／Ｆ１６１、パネルＩ／Ｆ１７１、ＨＤＤ１８０を有する。
【００２９】
ＣＰＵ１１０は、第１コア１１１、第２コア１１２、第３コア１１３、及び、第４コア１１４を有するマルチコア型のＣＰＵであり、プログラム１８１に記述された命令を実行する。プログラム１８１は、第１コア１１１、第２コア１１２、第３コア１１３、及び、第４コア１１４のそれぞれ専用に、４つに分かれていてもよいし、１つのプログラムを４つのコアが重複して実行してもよい。ＣＰＵ１１０のコア数は２個以上であれば５個以上でもよい。また、マルチコア型でなく、マルチプロセッサ又はマルチＣＰＵと呼ばれる、複数の独立したＣＰＵを搭載してもよい。
【００３０】
ＲＯＭ１２０は、起動用のプログラムや初期設定値などが記憶されている。ＲＡＭ１３０は、コントローラ１００が作成するページメモリやソフトウエアが動作するために必要なワークメモリとして利用される。ＮＶＲＡＭ１４０は、ＭＦＰ２００に設定された印刷条件などを保存しておく不揮発性メモリである。ネットワークＩ／Ｆ１５１は、ネットワーク上に接続されたホストＰＣ１５０とデータを送受信する。エンジンＩ／Ｆ１６１は印刷指示等を行いエンジン１６０を制御する。
【００３１】
エンジン１６０は、少なくとも画像形成を行うプロッタエンジンを有する。プロッタエンジンは、例えばタンデム型の感光ドラムを有し、ホストＰＣ１５０から受信したＰＤＬデータをレンダリングして得られた画像データに基づきレーザビームを変調し感光ドラムを走査して潜像を形成する。そして、潜像にトナーを付着して現像した１ページ毎のトナー画像を用紙に熱と圧力で転写する。なお、プロッタエンジンは、インクジェット方式でもよい。また、エンジン１６０には、スキャナエンジンやＦＡＸエンジンがある。
【００３２】
パネルＩ／Ｆ１７１はパネル装置１７０との入出力を制御する。ＨＤＤ１８０はデータやプログラム１８１を記憶する。
【００３３】
図４は、コントローラ１００の機能を模式的に説明する図の一例である。図４において図３と同一部には同一の符号を付しその説明は省略する。コントローラ１００の機能は、ＣＰＵ１１０がプログラム１８１を実行して実現される、プリンタコントロールシステム２０４とＰＤＬ部２０５に代表される。
【００３４】
ＰＤＬ部２０５は、ＰＤＬデータをプリンタコントロールシステム２０４から受け取り印刷画像を作成する。ＰＤＬ部２０５は、ＰＤＬデータのフォーマットとしてＰｏｓｔＳｃｒｉｐｔ  ＰＣＬ、ＲＰＣＳ、ＰＤＦ、ＸＰＳ等に対応している。
【００３５】
プリンタコントロールシステム２０４は、ネットワークＩ／Ｆ１５１が受信するＰＤＬデータを印刷するため、ＰＤＬ部２０５にレンダリングを要求し、その後、エンジンＩ／Ｆ１６１に印刷を要求するなど、印刷の手順を制御する。
【００３６】
図５は、ＰＤＬ部２０５の機能ブロック図の一例を示す図である。ＰＤＬ部２０５は、入力データ受信部１１、ＤＬ作成部１２、オブジェクト参照情報作成部１４、複数の描画処理部１６、ＰＤＬデータ格納部１３、及び、中間データ格納部１５、を有する。ＰＤＬデータ格納部１３や中間データ格納部１５はＨＤＤ１８０やＲＡＭ１３０を実体とする。
【００３７】
入力データ受信部１１は、ネットワークＩ／Ｆ１５１がホストＰＣ１５０から受信したＰＤＬデータを、ＰＤＬデータ格納部１３に記憶する。ＤＬ作成部１２は、ＰＤＬデータを構文解析し、ＰＤＬデータに含まれるオブジェクト（テキスト、イメージ、ベクターグラフィックス等）を抽出するとともに、これとＰＤＬデータに含まれる描画情報に基づき、ディスプレイリスト（中間データ）を作成する。ディスプレイリストは中間データ格納部１５に格納される。
【００３８】
オブジェクト参照情報作成部１４は、ＰＤＬデータからオブジェクトのオブジェクト参照テーブルを作成する。オブジェクト参照テーブルはディスプレイリストと同時並行的に作成される。オブジェクト参照テーブルは中間データ格納部１５に格納される。オブジェクト参照テーブルについては後述するが、オブジェクト参照テーブルは、オブジェクトが参照されるページとその参照位置を対応づけたテーブルである。
【００３９】
描画処理部１６は、中間データ格納部１５に保存されているディスプレイリストに基づいて、描画領域毎に出力イメージデータをレンダリングする。なお、描画領域はページを長手方向に等間隔又は予め定めた間隔で区分したページ上の一範囲をいい、描画処理部１６にとって既知である。
【００４０】
図示する描画処理部１６が３つなのは、ＣＰＵ１１０のコア数を考慮したためであり、本実施形態では、１つの描画処理部１６が描画処理する。すなわち、４つのＣＰＵコアの１つをＤＬ作成部１２と描画処理部１６に、４つのコアの１つをオブジェクト参照情報作成部１４に、それぞれ割り当てる。ただし、後述するようにこの割り当ては一例に過ぎない。
【００４１】
〔ＰＤＬデータ等について〕
図６は、ＰＤＦ（Ｐｏｒｔａｂｌｅ Ｄｏｃｕｍｅｎｔ Ｆｏｒｍａｔ）ファイルのフォーマット例を示す図である。ここではＰＤＬデータを説明するため、ＰＤＦファイルを用いた。
【００４２】
ＰＤＦファイルは、ヘッダ、ボディ、相互参照表、トレーラから構成されている。ヘッダにはファイルのフォーマットがＰＤＦであることを示すために、ＰＤＦのバージョン情報を含めた１行が記述される（例えば、「%ＰＤＦ-1.4」）。 
ボディには、テキストやイメージなどのページを構成するデータの本体がオブジェクトとして記述されている。
なお、各オブジェクトには識別番号が付与されており、各オブジェクトは、ボディ内において、表示される文書のページ順とは無関係に任意の順序で記述される。 
オブジェクト番号  世代番号（通常はゼロ） obj
<<
/Type/Page
/Parent オブジェクト番号 世代番号 R
/Contents オブジェクト番号ｎ   世代番号 R
>>
endobj
ＰＤＦでは文書の全体、ページ、ページ内の図形や文字を全てオブジェクトとして扱うので、全てにオブジェクト番号が割り当てられる。この例では、Parentの行のオブジェクト番号がこのページの親のページのオブジェクト番号を示す。なお、"R"はこのページが参照するという意味の記号である。
【００４３】
また、Contentsの行のオブジェクト番号ｎは、このページの中身のオブジェクトのオブジェクト番号を示す。
【００４４】
Contentsオブジェクトがオブジェクト番号ｎを以下のように記述しているとする(説明に用いない記述は省略した)。
【００４５】
オブジェクト番号ｎ 世代番号 obj
<<
/Length バイト数
>>
stream
……ここに描画命令が入る……
endstream
endobj
Lengthはstream〜endstreamで指定されるオブジェクトのサイズ（バイト数）を表す。例えば、文字の場合の描画命令は「BT〜ET」で囲まれる範囲に「フォント識別情報  フォントサイズ  最初の文字の座標系指定  文字列」などの命令が記述される。
【００４６】
ベクターグラフィックスの場合「q〜Q」で囲まれる範囲に「座標系の指定  色の指定、座標＋移動命令  座標＋直線描画命令  座標＋曲線描画命令  …」などの命令が記述される。
【００４７】
イメージの場合「BI〜EI」で囲まれる範囲に「サイズ、エンコード方法  ID（Image Data）」という形式で記述される。
【００４８】
相互参照表には、上記ボディに記述されたオブジェクトのファイル内における位置情報がオフセットとして記述される。すなわち、ファイル先頭から各オブジェクトのデータの先頭までのバイト数が記述される。このように、ボディの記述位置はページ上の位置と何ら関係がない。
【００４９】
トレーラには、/Root属性で文書構造の頂上を示すオブジェクト（これをカタログオブジェクトという）がオブジェクト番号で指定される。
trailer
<<
/Root オブジェクト番号 R
/Size 10
>>
この例では"Root オブジェクト番号"のオブジェクトがカタログオブジェクトであることを示している。構造の頂点のオブジェクトが分かれば、以降は、ボディの記述と相互参照表により各オブジェクトの位置が定まる。
【００５０】
上述したように、ＰＤＦファイル内には、表示される文書のページ順とは無関係に任意の順序でオブジェクトが配置されているため、コントローラ１００は、各オブジェクトへのアクセスの際、トレーラの内容を参照・解析し、その結果に基づいて、相互参照表の内容を参照・解析することによって、はじめて可能になる。 すなわち標準的なＰＤＦファイルにおいては、データ本体へアクセスする前に参照すべきトレーラおよび相互参照表が、ファイルの末尾、すなわち、ボディ（データ本体）より後ろに記述されているため、ＤＬ作成部１２やオブジェクト参照情報作成部１４は、ＰＤＦファイルの全ページが転送されＨＤＤ１８０などの記憶媒体に記憶されから処理を開始する必要がある。
【００５１】
図７は、ボディ内の構造を模式的に示す図の一例である。上記のように、ボディ内は、オブジェクトの参照関係で成り立っている。図７は本実施形態の説明に関連するボディの構造を簡略したものである。
【００５２】
まず、トレーラによって、オブジェクトの頂上に位置するカタログオブジェクトが特定される。カタログにはさまざまな情報への参照が存在するが、カタログにはページの情報をまとめているページツリー（上記の"/Type/Page"の記述）と呼ばれるオブジェクトがある。ページツリーオブジェクトは、各ページへの参照を持っている。
【００５３】
また、上記の"/Contents オブジェクト番号ｎ 世代番号R"のように、ページはページに含まれるオブジェクト（以下、使用オブジェクト情報という）への参照を持っている。
使用オブジェクト情報は、フォームオブジェクトやイメージオブジェクトへの参照を持っている。
【００５４】
図７の例では、ページ１はフォームオブジェクト１、イメージオブジェクト１への参照を有し、ページ２はフォームオブジェクト１、イメージオブジェクト２への参照を有し、ページ３はイメージオブジェクト２への参照を有する。すなわち、フォームオブジェクト１はページ１とページ２から参照され、イメージオブジェクト２はページ２とページ３から参照されている。
【００５５】
このように複数のページに同時に参照されるオブジェクトについて、本実施形態では効率よく、オブジェクトの生成・消滅を管理することができる。
【００５６】
図８は、ディスプレイリストの一例を示す図である。図８の左側のディスプレイリストは各描画処理部１６が処理可能なデータ形式であり、ＰＤＬデータの各種の描画命令や設定情報をリスト化したものである。
【００５７】
例えば、「set foreground color（R,G,B）」は前景の色を指示する命令で、「set  raster operation（Op Code）」は画像に施す演算を指示する命令で、「draw rectangle（x、ｙ、ｗ、ｈ）」は描画位置とサイズを含む矩形の描画命令である。
【００５８】
ＤＬ作成部１２が作成したディスプレイリストは、中間データ格納部１５に格納され、順次、描画処理部１６が解釈し領域毎にレンダリングを行う。
【００５９】
ディスプレイリストは、ＰＤＦのオブジェクトを描画命令に変換したものなので、図８の右側に模式的に示すように、ディスプレイリストの描画オブジェクト（同じオブジェクトは１度しかディスプレイリストに記述されない）とＰＤＦのオブジェクトとは１対１に対応する。
【００６０】
本実施形態では、後述するオブジェクト参照テーブルの参照位置により、ディスプレイリストの描画オブジェクトとＰＤＦのオブジェクトとの紐付けが可能である。ディスプレイリストには描画オブジェクトの位置情報が含まれている。また、ＤＬ作成部１２が、ＰＤＦのオブジェクト名を、ディスプレイリストの描画オブジェクトに識別可能に記述するなどして、ディスプレイリストの描画オブジェクトとオブジェクト参照テーブルのオブジェクトを紐付けることも可能である。
【００６１】
〔ＰＤＬ部の処理内容〕
図９は、ＰＤＬ部２０５の処理の内部的な手順を模式的に示す図の一例である。
（１）入力データ受信部１１は、ＰＤＦの入力を受け付ける。
PCLやPSといったＰＤＬデータは先頭から順番に、ＤＬ作成部１２がデータを読み込み、解析し、描画することが可能である。
（２）これに対し、ＰＤＦやＸＰＳといったＰＤＬデータでは解析すべきデータの先頭位置は入力データの後半（相互参照表、トレーラ）に添付されているため、入力データ受信部１１はＰＤＬデータ格納部１３にＰＤＬデータを一時保存する必要がある。
（３）しかし、ＰＤＬデータ格納部１３に保存されたＰＤＬデータは、先頭からの順次アクセスや所望の場所のランダムアクセスだけでなく、複数の処理手段からの同時アクセスが可能となる。
【００６２】
そこで、マルチコア環境を利用すれば、第２コア１１２にＤＬ作成部１２と描画処理部１６を割り当てＰＤＬデータを解析させ、中間データであるディスプレイリストを作成する一方で、第１コア１１１にオブジェクト参照情報作成部１４を割り当てＰＤＬデータを解析し、オブジェクト参照テーブルを作成させるといった並列処理が可能となる。
【００６３】
（３−１）オブジェクト参照情報作成部１４はＰＤＬデータ格納部１３からＰＤＬデータを読み出してオブジェクト参照テーブルを作成する。
【００６４】
（３−２）ＤＬ作成部１２は、オブジェクト参照情報作成部１４と並行してＰＤＦのデータをページ順に読み取り、ページごとにディスプレイリストを作成する。この際、ＤＬ作成部１２は、すでに作成した描画オブジェクトを記録していき、同じ描画オブジェクトの作成を省略することで、印刷処理の高速化を図っている。
（４）また、描画処理部１６は、作成されたディスプレイリストから描画データを生成する処理を行う。
（５）印刷処理完了後、例えば描画処理部１６は、オブジェクト参照テーブルから描画に用いた箇所のオブジェクト名を削除する。なお、オブジェクト参照テーブルの操作をオブジェクト参照情報作成部１４に要求してもよい。
（６）ＤＬ作成部１２は、描画処理部１６から例えば描画領域毎の処理の完了の通知を受け、オブジェクト参照テーブルを参照する。
（７）ＤＬ作成部１２は、削除の結果、オブジェクト参照テーブルからオブジェクト名が全てなくなったら（１つ以上あった同じオブジェクト名の最後のオブジェクト名が削除されたら）、ディスプレイリストからそのオブジェクトの描画オブジェクトを削除する。例えば、１ページ分の描画処理が完了したのち、１ページ分のディスプレイリストから描画オブジェクトを削除する。
【００６５】
ここで従来の技術と比較すると、従来は（７）の判断基準が明確に存在しなかった。このため、次のような方法でオブジェクトをディスプレイリストから削除していた。
Ａ．１つのオブジェクトを描画する毎に、生成したオブジェクトを削除する
Ｂ．１ページの描画が終了後に削除する
Ｃ．１ジョブ終了後に削除する
Ａの方法は１ページ内に同じオブジェクトの描画が繰り返し有る印刷ジョブの場合、Ｂの方法は複数ページに同じオブジェクトの描画がある場合、同じオブジェクトのディスプレイリストの生成処理が繰り返し発生し、印刷速度が低下していた。
Ｃの方法ではＡ、Ｂの問題は解消するが、ページ内のオブジェクト数が多い場合やページ数が多い場合に、ディスプレイリスト用のメモリを多く消費してしまうという問題があった。
【００６６】
これに対し、本実施形態では、オブジェクト参照テーブルにより、削除せずに残しておくべきオブジェクトが判明するので、繰り返し使うオブジェクトはディスプレイリスト内に確実に残したままにすることができる。また、本実施形態は１ジョブ中でもディスプレイリストからオブジェクトを削除できるので、Ｃの方式に比べてメモリを多く消費せず、メモリを効率よく利用することができる。
【００６７】
＜オブジェクト参照テーブル＞
図１０（ａ）によりオブジェクト参照テーブルについて説明する。図１０（ａ）は、オブジェクト参照テーブルの一例を示す。オブジェクト参照情報作成部１４は、図７のようなファイル構造を辿ることにより、どのページでどのオブジェクトが参照されているかを解析する。図１０では、オブジェクト名に対応付けて、そのオブジェクトを参照するページと、参照位置が登録されている。この参照位置はページ内の座標である。
【００６８】
なお、オブジェクト名は例えば、ＰＤＦのオブジェクト番号とすることができる。また、オブジェクト名は、ＰＤＦのボディ部の参照関係に基づく参照順やＰＤＦのボディ部の記述順に、連番にて付けることができる。また、この場合、図１０（ａ）のようにオブジェクトの種類毎に連番を振ってもよい。
【００６９】
オブジェクト参照テーブルのオブジェクト名とディスプレイリストの描画オブジェクトを参照位置以外で紐付ける場合は、このオブジェクト名がディスプレイリストの描画オブジェクトに記述される。なお、オブジェクト参照情報作成部１４とＤＬ作成部１２は、共通の規則でオブジェクト参照テーブルのオブジェクト名を付与する。
【００７０】
オブジェクト参照情報作成部１４は、ファイル構造を辿るだけでよく具体的な描画命令の解釈を行う必要がないため、通常のディスプレイリストの作成処理やレンダリングなどの描画処理に比べて少ない処理量でオブジェクト参照テーブルを作成することができる。
【００７１】
後述するように、オブジェクト参照テーブルの各レコードは、描画オブジェクトの描画処理が完了したタイミングで削除される。なお、レコードそのものを削除するのでなく、描画処理が完了したことを示すフラグを立てるなどしてレコードの削除の代わりとすることが好ましい。
【００７２】
オブジェクト名の列にオブジェクト名がなくなった場合、そのオブジェクトの描画オブジェクトをディスプレイリストに保持しておく必要がないことを意味する。例えばフォームオブジェクト１は、ページ１内の座標（１００，２００）を始点とする描画に使われた後、ページ２内の座標（１００，２００）を始点とする描画に使われた時点で、ＰＤＦファイル内での他のページから参照されることがなくなり、描画オブジェクトとして保持しておく必要がなくなることになる。
【００７３】
図１０（ｂ）はオブジェクト参照テーブルの別の一例を示す。参照されなくなった描画オブジェクトを検出する方法に、オブジェクトの参照回数（出現回数）を用いてもよい。図示するように、オブジェクト毎に、全ページ内での参照回数のみを登録しておく。
【００７４】
例えば、描画処理部があるオブジェクトの描画処理が終わった時点で、オブジェクト参照テーブルの参照回数を「−１」すれば、オブジェクト参照テーブルの参照回数が「０」になった時点、ディスプレイリストの描画オブジェクトを削除してよいことがわかる。
【００７５】
＜マルチコア又はマルチＣＰＵの利用態様＞
なお、図では本実施形態の効果が確認しやすい構成として、第１コア１１１にオブジェクト参照情報作成部１４、第２コア１１２にはＤＬ作成部１２と描画処理部１６の処理を割り当てている。しかし、ＤＬ作成部１２と描画処理部１６を第１コア１１１に割り当てるのでなく、ＤＬ作成部１２を第２コア１１２に、描画処理部１６を第３コア１１３に割り当てるなどとすることも可能である。また、描画処理部１６は、第３コア１１３と第４コア１１４のように、複数のコアに割り当てることが可能である。
【００７６】
図１１は、ＣＰＵコアと各機能の割り当てを模式的に示す図の一例である。図１１(a)は図９の態様を、図１１（ｂ）は第２コア１１２にＤＬ作成部１２を第３コア１１３に描画処理部１６を、図１１（ｃ）は第２コア１１２にＤＬ作成部１２を第３コア１１３と第４コア１１４に描画処理部１６を、それぞれ割り当てている。
【００７７】
いずれの態様でも、オブジェクト参照情報作成部１４のオブジェクト参照テーブルの作成と、ＤＬ作成部１２のディスプレイリストの作成は同時並行に実行されている。これにより、印刷処理の時間を短縮できる。
【００７８】
また、図１１（ｂ）のように、第２コア１１２にＤＬ作成部１２を第３コア１１３に描画処理部１６を割り当てることで、描画処理部１６は、ＤＬ作成部１２がディスプレイリストを作成している間に描画処理を行うことができるので、印刷処理全体の時間を短縮できる。
【００７９】
また、図１１(ｃ)のように、複数のＣＰＵコアに描画処理部１６を割り当てることで、複数の描画処理を同時並行に実行することが可能になる。また、描画処理部１６はディスプレイリストの全体が作成されなくても、描画処理を開始することができる場合がある。このような場合、描画処理部１６の並列度が上がり、描画処理の開始時点を前倒しにできるので、さらに印刷処理の時間を短縮することが期待できる。
【００８０】
〔動作手順〕
＜オブジェクト参照テーブルの作成＞
図１２は、オブジェクト参照情報作成部１４がオブジェクト参照テーブルを作成する手順を示すフローチャート図の一例である。図１２の手順は、例えば、ＭＦＰ２００がＰＤＬデータ（ＰＤＦ）を受信するとスタートする。なお、図１２の手順は図１０（ａ）のオブジェクト参照テーブルの生成に対応した処理になっている。
【００８１】
入力データ受信部１１は、ＰＤＬデータ格納部１３にＰＤＦを格納する。上記のように、ＰＤＦの全体がＰＤＬデータ格納部１３に格納されると、オブジェクト参照情報作成部１４はＰＤＦを読み出す（Ｓ１０）。
【００８２】
オブジェクト参照情報作成部１４はＰＤＦのトレーラの情報を参照して、カタログオブジェクトに読み取り位置を移動する（Ｓ２０）。そして、カタログオブジェクトからページツリーの参照情報を取得し、ページツリーオブジェクトに読み取り位置を移動する。
【００８３】
ページツリーオブジェクトにより最初のページのページオブジェクトに読み取り位置を移動させ、最初のページが参照する参照情報を読み出す（Ｓ３０）。
【００８４】
オブジェクト参照情報作成部１４は、最初のページのページオブジェクトに記述されている使用オブジェクト情報を読み取り、オブジェクト名とページ番号と参照位置をオブジェクト参照テーブルに記録していく（Ｓ４０）。
【００８５】
なお、図１０（ｂ）のオブジェクト参照テーブルを生成する場合、オブジェクト参照情報作成部１４は、使用オブジェクト情報から読み出したオブジェクト名が、すでにオブジェクト参照テーブルに登録されているか否かを判定する。すでにオブジェクト参照テーブルにオブジェクト名が登録されていなければ、新たにオブジェクト名と参照回数１をオブジェクト参照テーブルに登録し、オブジェクト名が登録されていれば参照回数を１つ大きくする。
【００８６】
１ページのオブジェクト情報の記録が完了すると、オブジェクト参照情報作成部１４は、ページツリーオブジェクトに戻り、全てのページのオブジェクト情報を読み出したか否かを判定する（Ｓ５０）。
【００８７】
他にページが有る場合（Ｓ５０のＮｏ）、オブジェクト参照情報作成部１４はそのページのページオブジェクトに読み取り位置を移動させＳ４０の処理を行う（Ｓ６０）。全てのページからオブジェクト情報の記録が完了すると処理を終了する。
【００８８】
＜ディスプレイリストの削除処理＞
図１３は、ＤＬ作成部１２と描画処理部１６の処理手順を示すフローチャート図の一例である。図１３の手順は、例えば、ＭＦＰ２００がＰＤＬデータ（ＰＤＦ）を受信するとスタートする。
【００８９】
ＰＤＦの全体がＰＤＬデータ格納部１３に格納されると、ＤＬ作成部１２はＰＤＦを読み出す（Ｓ１１０）。
【００９０】
ＤＬ作成部１２はＰＤＦのトレーラの情報を参照して、カタログオブジェクトに読み取り位置を移動する。そして、カタログオブジェクトからページツリーの参照情報を取得し、ページツリーオブジェクトに読み取り位置を移動する。ページツリーオブジェクトにより最初のページのページオブジェクトに読み取り位置を移動させ、最初のページが参照する参照情報を読み出す（Ｓ１２０）。
【００９１】
そして、ＤＬ作成部１２は、ページ内のオブジェクトごとに、オブジェクトが使用されるページおよび位置情報を参照済みリストに記録する（Ｓ１３０）。すなわち、ディスプレイリストを作成する前に参照済みリストを作る。
【００９２】
図１４は、参照済みリストの一例を示す。例えばページ１では、フォームオブジェクト１とイメージオブジェクト１があるので、これらのうちどちらかがＳ１３０で参照済みリストに登録される（２つ目は次のサイクルで登録される）。なお、参照位置は、同じオブジェクトが同一ページに存在する場合に識別するための情報である。次のステップに示すように、参照済みリストに登録されたオブジェクトは、ディスプレイリストに描画オブジェクトが作成されていることになる。
【００９３】
次に、ＤＬ作成部１２はディスプレイリストにそのオブジェクトの描画オブジェクトが作成済みか否かを判定する（Ｓ１４０）。この判定は、同一ページか否かを問わずに、参照済みリストに同じオブジェクト名が登録されているかどうかにより判定される。すでに同じオブジェクト名が参照済みリストに登録されている場合、ＤＬ作成部１２は、描画オブジェクトが作成済みと判定し、同じオブジェクト名のオブジェクトが登録済みでない場合、描画オブジェクトが作成済みでないと判定する。
【００９４】
例えば、図１４ではページ２のフォームオブジェクト１に着目した場合、フォームオブジェクト１の描画オブジェクトはページ１のディスプレイリストにて作成済みであると判定される。
【００９５】
描画オブジェクトが作成済みである場合（Ｓ１５０のＹｅｓ）、ＤＬ作成部１２はディスプレイリストに描画オブジェクトへの参照を加える（Ｓ１５０）。すなわち、同じオブジェクトの描画オブジェクトを作成しなくても描画できるように、着目しているページの着目しているオブジェクトの描画オブジェクトを記述すべきディスプレイリストの箇所に、描画オブジェクトでなく、すでに作成済みの描画オブジェクトへの参照を記述する。例えば、ページ２のフォームオブジェクト１に着目している場合、ＤＬ作成部１２はページ２のフォームオブジェクト１の描画オブジェクトを記述すべき箇所に、参照を意味するコマンドと共に"ページ１／フォームオブジェクト１／（１００，２００）"と記述する。これにより、ＤＬ作成部１２は１つの文書内に同じオブジェクトが複数個あっても、作成する描画オブジェクトを１つだけにすることができる。
【００９６】
描画オブジェクトが作成済みでない場合（Ｓ１５０のＮｏ）、ＤＬ作成部１２はこのページのディスプレイリストにそのオブジェクトの描画オブジェクトを作成する（Ｓ１６０）。
【００９７】
次に描画処理部１６は、ディスプレイリストをエンジンＩ／Ｆ１６１に転送する為のメモリに描画を行う（Ｓ１７０）。ディスプレイリストに「作成済みの描画オブジェクトへの参照」が記述されている場合、描画処理部１６は参照先の描画オブジェクトを読み出して、描画処理を行う。例えば、描画処理部１６は、ページ２のフォームオブジェクト１を描画する際、ディスプレイリストに記述された参照に基づき、ページ１のディスプレイリストのフォームオブジェクト１の描画オブジェクトを読み出して描画処理する。
【００９８】
描画処理部１６は、描画が完了した時点で、オブジェクト参照テーブルから、描画した描画オブジェクトと参照ページ及び参照位置が同じオブジェクトのオブジェクト情報を削除する（Ｓ１８０）。例えば、描画処理部１６がページ１のフォームオブジェクト１の描画オブジェクトにより描画した場合、オブジェクト参照テーブルから、参照ページがページ１及び参照位置が（１００，２００）のオブジェクトのオブジェクト情報を削除する。
【００９９】
図１０（ｂ）のオブジェクト参照テーブルの場合、描画処理部は、描画が完了した時点で、紐付け情報によりオブジェクト参照テーブルの描画したオブジェクトを特定し、オブジェクト参照テーブルの描画したオブジェクトの参照回数を１つ小さくする。
【０１００】
その後、ＤＬ作成部１２は、描画処理したオブジェクトが他のページ又は同じページの別の場所で参照されていないかどうかを、オブジェクト参照テーブルを参照して判定する（Ｓ１９０）。
【０１０１】
すなわち、オブジェクト参照テーブルから削除したオブジェクト名と同じオブジェクト名が登録されているか否かを判定する。例えば、ページ１のフォームオブジェクト１のオブジェクト情報が削除されても、オブジェクト参照テーブルには同じオブジェクト名のフォームオブジェクト１が登録されている。
【０１０２】
図１０（ｂ）のオブジェクト参照テーブルの場合、ＤＬ作成部は、オブジェクト参照テーブルの描画したオブジェクトの参照回数が「０」か否かを判定すればよい。
【０１０３】
描画処理したオブジェクトが他の箇所で参照されていない場合（Ｓ２００のＮｏ）、ＤＬ作成部１２は描画オブジェクトを削除する（Ｓ２１０）。これにより、もはや描画処理の対象とならない描画オブジェクトを使用が終わった直後に削除できメモリを解放できる。なお、ＤＬ作成部１２にとって、削除する描画オブジェクトの記述位置は、オブジェクト参照テーブルのオブジェクト情報がフラグなどにより削除されたことが示されている場合は、オブジェクト参照テーブルの参照位置から明らかである。または、図１０（ｂ）のオブジェクト参照テーブルの場合は、ディスプレイリストに記述されたオブジェクト名を利用してもよいし、描画処理部１６が描画した描画オブジェクトのページ番号と参照位置又はオブジェクト名をＤＬ作成部１２に通知してもよい。
【０１０４】
処理したオブジェクトが他の箇所で参照されている場合（Ｓ２００のＹｅｓ）、描画オブジェクトをそのまま保持する。これにより、まだ使用される描画オブジェクトをキャッシュしたままにできるので、再度の描画オブジェクトの作成が不要になる。
【０１０５】
次に、ＤＬ作成部１２はページ内に他のオブジェクトがあるか否かを判定し（Ｓ２２０）、ある場合は、次のオブジェクトの読み出し位置に移動してステップＳ１３０からの処理を繰り返す（Ｓ２３０）。
【０１０６】
ページ内に他のオブジェクトがない場合（Ｓ２２０のＮｏ）、描画処理部１６はページの印刷命令をエンジンＩ／Ｆ１６１に指示する。そして、未処理のページがあるか否かを判定する（Ｓ２４０）。
【０１０７】
他のページが有る場合、ページツリーオブジェクトにより次のページのページオブジェクトに読み取り位置を移動させ、そのページが参照する参照情報を読み出す（Ｓ２５０）。全てのページの処理が完了した時点で図１３の処理は終了となる。
【０１０８】
以上説明したように、本実施形態の画像形成装置は、オブジェクト毎に全ページからの参照有無を調べオブジェクト参照テーブルに登録するので、描画オブジェクトの描画の度にオブジェクト参照テーブルからオブジェクトを削除することで、描画オブジェクト（中間データ）を削除するタイミングを決定できる。したがって、描画する描画オブジェクトを誤って削除することを防止でき、この結果、再度の中間データの生成が必要になることを防止でき、印刷の処理時間を最小化できる。
【符号の説明】
【０１０９】
１００      コントローラ
１１０      ＣＰＵ
１１１      第１コア
１１２      第２コア
１１３      第３コア１１３
１１４      第４コア
１２０      ＲＯＭ
１３０      ＲＡＭ
１４０      ＮＶＲＡＭ
１５０      ホストＰＣ
１５１      ネットワークＩ／Ｆ
１６１      エンジンＩ／Ｆ
１７１      パネルＩ／Ｆ
１６０      エンジン
１７０      パネル装置
１８０      ＨＤＤ
２００      ＭＦＰ
２０４      プリンタコントロールシステム
２０５      ＰＤＬ部  
３００      印刷システム
【先行技術文献】
【特許文献】
【０１１０】
【特許文献１】特開２００６−００７４９６号公報
【図２】
2012081711.tif 000003
【図３】
2012081711.tif 000004
【図４】
2012081711.tif 000005
【図５】
2012081711.tif 000006
【図６】
2012081711.tif 000007
【図７】
2012081711.tif 000008
【図８】
2012081711.tif 000009
【図９】
2012081711.tif 000010
【図１０】
2012081711.tif 000011
【図１１】
2012081711.tif 000012
【図１２】
2012081711.tif 000013
【図１３】
2012081711.tif 000014
【図１４】
2012081711.tif 000015
【図１】
2012081711.tif 000016