(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-04
(45)【発行日】2024-10-15
(54)【発明の名称】画像形成処理装置、画像形成処理装置の処理方法およびプログラム
(51)【国際特許分類】
B41J 5/30 20060101AFI20241007BHJP
G06F 3/12 20060101ALI20241007BHJP
G06T 11/40 20060101ALI20241007BHJP
H04N 1/21 20060101ALI20241007BHJP
【FI】
B41J5/30 Z
G06F3/12 320
G06F3/12 345
G06F3/12 347
G06T11/40
H04N1/21
(21)【出願番号】P 2020120797
(22)【出願日】2020-07-14
【審査請求日】2023-07-07
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100090273
【氏名又は名称】國分 孝悦
(72)【発明者】
【氏名】山下 洋
【審査官】小宮山 文男
(56)【参考文献】
【文献】特開2019-074916(JP,A)
【文献】特開2017-194932(JP,A)
【文献】特開2018-058295(JP,A)
【文献】特開2008-028639(JP,A)
【文献】特開2017-079003(JP,A)
【文献】特開2020-097163(JP,A)
【文献】特開平7-061062(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B41J 5/30
G06F 3/12
G06T 11/40
H04N 1/21
(57)【特許請求の範囲】
【請求項1】
印刷データに含まれる複数の描画情報を基に、前記描画情報ごとに中間データを生成し、前記生成した中間データをメモリに書き込み、前記メモリに書き込まれた中間データを外部記憶装置に書き込み、前記中間データのメモリの領域を解放し、前記外部記憶装置に書き込まれた前記複数の描画情報に基づく複数の中間データを統合する中間データ生成手段と、
前記中間データ生成手段により統合された中間データをレンダリングし、ラスタ画像を生成するレンダリング手段と
を有することを特徴とする画像形成処理装置。
【請求項2】
前記印刷データは、ページ記述言語で記述された印刷データであり、
前記描画情報は、描画命令であることを特徴とする請求項1に記載の画像形成処理装置。
【請求項3】
前記印刷データを解析し、前記印刷データを複数の描画命令に変換する解析手段をさらに有することを特徴とする請求項2に記載の画像形成処理装置。
【請求項4】
前記中間データは、エッジ情報と、合成情報と、塗り情報とを有することを特徴とする請求項1~3のいずれか1項に記載の画像形成処理装置。
【請求項5】
前記中間データ生成手段は、
前記描画情報を基に前記塗り情報を生成し、前記塗り情報を前記メモリに書き込み、前記メモリに書き込まれた前記塗り情報を前記外部記憶装置に書き込み、前記塗り情報のメモリの領域を解放し、
前記塗り情報を前記外部記憶装置から読み出し、前記塗り情報を基に前記合成情報を生成し、前記合成情報を前記メモリに書き込み、前記メモリに書き込まれた前記合成情報を前記外部記憶装置に書き込み、前記合成情報のメモリの領域を解放し、
前記塗り情報または前記合成情報を前記外部記憶装置から読み出し、前記塗り情報または前記合成情報を基に前記エッジ情報を生成し、前記エッジ情報を前記メモリに書き込み、前記メモリに書き込まれた前記エッジ情報を前記外部記憶装置に書き込み、前記エッジ情報のメモリの領域を解放することを特徴とする請求項4に記載の画像形成処理装置。
【請求項6】
前記外部記憶装置は、ハードディスクドライブまたはソリッドステートドライブであることを特徴とする請求項1~5のいずれか1項に記載の画像形成処理装置。
【請求項7】
前記中間データ生成手段は、
前記印刷データに含まれる複数の描画情報を基に、前記描画情報ごとに中間データを生成し、前記生成した中間データをメモリに書き込み、前記メモリに書き込まれた前記複数の描画情報に基づく複数の中間データを統合し、
前記中間データの生成の途中で、前記メモリの空き容量が不足した場合には、前記メモリに書き込まれた中間データを破棄し、前記印刷データに含まれる複数の描画情報を基に、前記描画情報ごとに中間データを生成し、前記生成した中間データをメモリに書き込み、前記メモリに書き込まれた中間データを外部記憶装置に書き込み、前記中間データのメモリの領域を解放し、前記外部記憶装置に書き込まれた前記複数の描画情報に基づく複数の中間データを統合することを特徴とする請求項1~6のいずれか1項に記載の画像形成処理装置。
【請求項8】
前記中間データ生成手段は、
前記印刷データに含まれる複数の描画情報を基に、前記描画情報ごとに中間データを生成し、前記生成した中間データをメモリに書き込み、前記メモリに書き込まれた前記複数の描画情報に基づく複数の中間データを統合し、
前記中間データの生成の途中で、前記中間データ生成手段の処理時間が第1の閾値以上になった場合には、前記メモリに書き込まれた中間データを破棄し、前記印刷データに含まれる複数の描画情報を基に、前記描画情報ごとに中間データを生成し、前記生成した中間データをメモリに書き込み、前記メモリに書き込まれた中間データを外部記憶装置に書き込み、前記中間データのメモリの領域を解放し、前記外部記憶装置に書き込まれた前記複数の描画情報に基づく複数の中間データを統合することを特徴とする請求項1~6のいずれか1項に記載の画像形成処理装置。
【請求項9】
前記中間データ生成手段は、
マルチスレッドモードで、前記印刷データに含まれる複数の描画情報を基に、前記描画情報ごとに中間データを生成し、前記生成した中間データをメモリに書き込み、前記メモリに書き込まれた前記複数の描画情報に基づく複数の中間データを統合し、
前記中間データの生成の途中で、前記メモリの空き容量が不足した場合には、前記メモリに書き込まれた中間データを破棄し、シングルスレッドモードで、前記印刷データに含まれる複数の描画情報を基に、前記描画情報ごとに中間データを生成し、前記生成した中間データをメモリに書き込み、前記メモリに書き込まれた中間データを外部記憶装置に書き込み、前記中間データのメモリの領域を解放し、前記外部記憶装置に書き込まれた前記複数の描画情報に基づく複数の中間データを統合することを特徴とする請求項7に記載の画像形成処理装置。
【請求項10】
前記中間データ生成手段は、
外部記憶装置の種類、出力用紙サイズ、または印刷データの描画命令数に応じて、第1のモードまたは第2のモードで動作し、
前記第1のモードでは、
前記印刷データに含まれる複数の描画情報を基に、前記描画情報ごとに中間データを生成し、前記生成した中間データをメモリに書き込み、前記メモリに書き込まれた前記複数の描画情報に基づく複数の中間データを統合し、
前記中間データの生成の途中で、前記メモリの空き容量が不足した場合または前記中間データ生成手段の処理時間が第1の閾値以上になった場合には、前記メモリに書き込まれた中間データを破棄し、前記印刷データに含まれる複数の描画情報を基に、前記描画情報ごとに中間データを生成し、前記生成した中間データをメモリに書き込み、前記メモリに書き込まれた中間データを外部記憶装置に書き込み、前記中間データのメモリの領域を解放し、前記外部記憶装置に書き込まれた前記複数の描画情報に基づく複数の中間データを統合し、
前記第2のモードでは、
前記印刷データに含まれる複数の描画情報を基に、前記描画情報ごとに中間データを生成し、前記生成した中間データをメモリに書き込み、前記メモリに書き込まれた中間データを外部記憶装置に書き込み、前記中間データのメモリの領域を解放し、前記外部記憶装置に書き込まれた前記複数の描画情報に基づく複数の中間データを統合することを特徴とする請求項1~6のいずれか1項に記載の画像形成処理装置。
【請求項11】
前記第1の閾値は、前記外部記憶装置の種類によって異なることを特徴とする請求項8または10に記載の画像形成処理装置。
【請求項12】
前記中間データ生成手段は、
前記印刷データに含まれる複数の描画情報を基に、前記描画情報ごとに中間データを生成し、前記生成した中間データをメモリに書き込み、前記中間データのサイズが第2の閾値以上になった場合には、前記メモリに書き込まれた中間データを統合し、すべての描画情報に基づく中間データの生成が終了した場合には、前記メモリに書き込まれた前記複数の描画情報に基づく複数の中間データを統合し、
前記中間データの生成の途中で、前記統合の回数が第3の閾値以上になった場合には、前記メモリに書き込まれた中間データを破棄し、前記印刷データに含まれる複数の描画情報を基に、前記描画情報ごとに中間データを生成し、前記生成した中間データをメモリに書き込み、前記メモリに書き込まれた中間データを外部記憶装置に書き込み、前記中間データのメモリの領域を解放し、前記外部記憶装置に書き込まれた前記複数の描画情報に基づく複数の中間データを統合することを特徴とする請求項1~6のいずれか1項に記載の画像形成処理装置。
【請求項13】
前記中間データ生成手段は、
前記印刷データに含まれる複数の描画情報を基に、前記描画情報ごとに中間データを生成し、前記生成した中間データをメモリに書き込み、前記メモリに書き込まれた前記複数の描画情報に基づく複数の中間データを統合し、
前記中間データの生成の途中で、前記中間データのサイズが第4の閾値以上になった場合には、前記メモリに書き込まれた中間データを破棄し、前記印刷データに含まれる複数の描画情報を基に、前記描画情報ごとに中間データを生成し、前記生成した中間データをメモリに書き込み、前記メモリに書き込まれた中間データを外部記憶装置に書き込み、前記中間データのメモリの領域を解放し、前記外部記憶装置に書き込まれた前記複数の描画情報に基づく複数の中間データを統合することを特徴とする請求項1~6のいずれか1項に記載の画像形成処理装置。
【請求項14】
印刷データに含まれる複数の描画情報を基に、前記描画情報ごとに中間データを生成し、前記生成した中間データをメモリに書き込み、前記メモリに書き込まれた中間データを外部記憶装置に書き込み、前記中間データのメモリの領域を解放し、前記外部記憶装置に書き込まれた前記複数の描画情報に基づく複数の中間データを統合する中間データ生成ステップと、
前記中間データ生成ステップで統合された中間データをレンダリングし、ラスタ画像を生成するレンダリングステップと
を有することを特徴とする画像形成処理装置の処理方法。
【請求項15】
コンピュータを、請求項1~13のいずれか1項に記載された画像形成処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像形成処理装置、画像形成処理装置の処理方法およびプログラムに関する。
【背景技術】
【0002】
大判機等、使用する印刷用紙のサイズが特別に大きいプリンタ装置は、ページ記述言語で記述された印刷データを投入しても、印刷が困難なケースが存在する。特に、印刷データのページ中に極めて大きな画像が埋め込まれている場合や、非常に多くの図形データ等が含まれる場合では、該ページを処理する途中の段階で、メモリの空き容量不足に陥ってしまい、処理が続行できない場合がある。一般に、プリンタドライバやプリンタコントローラは、いずれも定められたハードウェアリソース(例えばプロセスに割り当てられるメモリには制限がある)で処理するように構成されているために、何らかの対策を講じる必要がある。
【0003】
印刷データ処理時にメモリの空き容量が不足(メモリアロックが出来ない等)し、処理を継続できない場合の対策の一例としては、特許文献1および特許文献4の方法が知られている。特許文献1では、メモリの空き容量が不足した時点で、処理プログラムがメモリに記録されている中間データを用いて画像形成(レンダリング)を実施することにより、それまでに蓄えたデータを解放することで、データサイズを削減する。これらの技術に加え、データの統合処理によってデータサイズを削減する方法(フラット化)が知られている(特許文献2および特許文献3参照)。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2011-61555号公報
【文献】特開2018-152113号公報
【文献】特開2017-194932号公報
【文献】特開平6-261202号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、印刷データのページ中に極めて大きな画像が埋め込まれている場合や、非常に多くの図形データ等が含まれる場合では、データの統合処理を行っても、メモリの空き容量が不足してしまう場合がある。
【0006】
本発明の目的は、印刷データが大きい場合であっても、印刷データを基に中間データを適切に生成することができるようにすることである。
【課題を解決するための手段】
【0007】
本発明の画像形成処理装置は、印刷データに含まれる複数の描画情報を基に、前記描画情報ごとに中間データを生成し、前記生成した中間データをメモリに書き込み、前記メモリに書き込まれた中間データを外部記憶装置に書き込み、前記中間データのメモリの領域を解放し、前記外部記憶装置に書き込まれた前記複数の描画情報に基づく複数の中間データを統合する中間データ生成手段と、前記中間データ生成手段により統合された中間データをレンダリングし、ラスタ画像を生成するレンダリング手段とを有する。
【発明の効果】
【0008】
本発明によれば、印刷データが大きい場合であっても、印刷データを基に中間データを適切に生成することができる。
【図面の簡単な説明】
【0009】
【
図2】フラット化によってメモリが削減される一例を示す図である。
【
図3】フラット化を実施してもメモリが不足する例を示す図である。
【
図4】画像形成処理装置のハードウェア構成例を示す図である。
【
図5】中間データ生成部で生成される中間データを示す図である。
【
図6】画像形成処理装置の処理方法を示すフローチャートである。
【
図7】画像形成処理装置の処理方法を示すフローチャートである。
【
図8】画像形成処理装置の処理方法を示すフローチャートである。
【
図10】画像形成処理装置の処理方法を示すフローチャートである。
【
図12】動作モード切り替え処理を示すフローチャートである。
【
図13】画像形成処理装置の処理方法を示すフローチャートである。
【
図14】画像形成処理装置の処理方法を示すフローチャートである。
【
図16】画像形成処理装置の処理方法を示すフローチャートである。
【発明を実施するための形態】
【0010】
図1(A)は、印刷システムの構成例を示す図である。印刷システムは、画像形成処理装置100と、コンピュータ200を有する。コンピュータ200は、印刷データ生成部201を有する。印刷データ生成部201は、印刷対象データ202から印刷データ203を生成する。
【0011】
画像形成処理装置100は、入力部204と、解析部205と、ラスタ画像生成処理部206と、出力部207とを有する。入力部204は、印刷データ生成部201が生成した印刷データ203を入力する。解析部205は、入力部204が入力した印刷データ203を解析し、印刷データ203から描画命令を抽出する。
【0012】
ラスタ画像生成処理部206は、中間データ生成部208と、レンダリング部209とを有する。中間データ生成部208は、解析部205で抽出された描画命令から描画情報210と画像211を抽出し、中間データを生成し、中間データを画像形成処理装置100内のメモリに格納する。
【0013】
レンダリング部209は、中間データ生成部208で生成された中間データをレンダリングし、ラスタ画像を生成する。出力部207は、レンダリング部209で生成されたラスタ画像から出力データ212を生成する。
【0014】
図2は、中間データ生成部208のフラット化によってメモリが削減される様子を示す図である。中間データ生成部208は、中間データのフラット化を実施することで、メモリ使用量が削減され、処理を継続することが可能となる。中間データ生成部208は、画像形成処理を継続するために、内部メモリの縮退処理により、中間データの削減を実施している。縮退処理とは、中間データを最終的にスプールアウトする中間データと類似の構造として保持し、メモリが不足した場合に、フラット化と呼ばれる処理で統合する処理のことである。しかしながら、この方式では、使用可能なメモリ量が徐々に少なくなってくると、再びフラット化を実施する必要がある。ワーストケースでは、フラット化が繰り返される。
【0015】
図3は、フラット化を繰り返した結果、メモリの空き容量が不足する例を示す図である。縦軸はメモリの使用量(GB)を示し、横軸は処理時間(分)を示している。例えば、縦軸の最大値2GBがメモリ最大容量である。3回のフラット化が発生し、メモリ使用量が削減されている。しかし、処理時間Tでは、メモリ使用量が最大値2GBに到達しており、メモリの空き容量の不足が発生し、リカバリー処理が必要になる。このように、フラット化を実施しても、メモリの空き容量の不足が発生し、処理を継続出来ないケースが存在する。以下、メモリの空き容量が不足しても、画像形成処理が可能な画像形成処理装置100を説明する。
【0016】
(第1の実施形態)
図4は、第1の実施形態による画像形成処理装置100のハードウェア構成の一例を示す図である。画像形成処理装置100は、CPU101と、RAM102と、フォントROM103と、プログラムROM104と、データROM105と、バス106とを有する。画像形成処理装置100は、キーボードコントローラ(KBC)107と、CRTコントローラ(CRTC)108と、ディスクコントローラ(DKC)109と、プリンタコントローラ(PRTC)110と、ネットワークコントローラ(NC)111を有する。
【0017】
CPU101は、プログラムROM104またはHDD114からRAM102にロードされたOSやアプリケーション等のプログラムを実行し、後述するソフトウェアの機能およびフローチャートの処理を実現する。RAM102は、CPU101の主メモリ、およびワークエリア等として機能するランダムアクセスメモリである。フォントROM103は、フォントを記憶する。プログラムROM104は、プログラムを記憶する。データROM105は、データを記憶する。
【0018】
キーボードコントローラ(KBC)107は、キーボード112や不図示のポインティングデバイスからのキー入力を制御する。CRTコントローラ(CRTC)108は、CRTディスプレイ113の表示を制御する。CRTディスプレイ113は、液晶ディスプレイでもよい。ディスクコントローラ(DKC)109は、ブートプログラム、種々のアプリケーション、フォントデータ、およびユーザファイル等を記憶するハードディスクドライブ(HDD)114やソリッドステートドライブ(SSD)115等に対するアクセスを制御する。HDD114とSSD115は、外部記憶装置である。プリンタコントローラ(PRTC)110は、プリンタとの間の信号の交換を制御する。ネットワークコントローラ(NC)111は、ネットワークに接続され、ネットワークに接続された他の機器との通信制御処理を実行する。
【0019】
なお、本実施形態では、以下に示す画像形成処理装置100の機能は、ソフトウェアにより実現されるものとして説明するが、各機能を専用のハードウェアで画像形成処理装置100に実装するようにしてもよい。なお、CPU101は、マルチコアのCPUである。画像形成処理装置100は、複数のCPUを有していてもよい。
【0020】
図1(B)は、第1の実施形態による印刷システムの構成例を示す図である。印刷システムは、画像形成処理装置100と、コンピュータ200を有する。コンピュータ200は、印刷データ生成部201を有する。印刷データ生成部201は、印刷対象データ202から印刷データ203を生成する。印刷データ203は、例えば、ページ記述言語で記述された印刷データである。
【0021】
画像形成処理装置100は、入力部204と、解析部205と、ラスタ画像生成処理部206と、出力部207とを有する。入力部204は、印刷データ生成部201が生成した印刷データ203を入力する。解析部205は、入力部204が入力した印刷データ203を解析し、印刷データ203から描画命令を抽出する。
【0022】
ラスタ画像生成処理部206は、中間データ生成部208と、レンダリング部209とを有する。中間データ生成部208は、解析部205で抽出された描画命令を基に、エッジ情報213と合成情報214と塗り情報215を中間データ300(
図5)として生成する。そして、中間データ生成部208は、エッジ情報213と合成情報214と塗り情報215をファイルとしてHDD114またはSSD115に保存する。その後、中間データ生成部208は、HDD114またはSSD115に保存されたエッジ情報213と合成情報214と塗り情報215を統合し、中間データを生成する。
【0023】
レンダリング部209は、中間データ生成部208で生成された中間データをレンダリングし、ラスタ画像を生成する。出力部207は、レンダリング部209で生成されたラスタ画像から出力データ212を生成する。
【0024】
なお、コンピュータ200と画像形成処理装置100の機能ブロック図は、上記のように配置される必要はなく、いずれかをコンピュータ200で行ってもよいし、いずれかを画像形成処理装置100で行ってもよいし、自由に変更可能である。
【0025】
図5は、中間データ生成部208が生成する中間データ300を示す図である。中間データ300は、エッジ情報(境界情報)213と、合成情報214と、塗り情報215とを有する。
【0026】
エッジ情報213は、オブジェクトによって区切られる各領域のエッジの座標を示す情報であり、対応する合成情報214を参照するデータである。例えば、エッジ情報213は、各領域の上端および下端のY座標(上下位置)と、Y座標毎の左端と右端のX座標(左右位置)にて示される。
【0027】
塗り情報215は、各オブジェクト等を描画するための色を示すデータである。例えば、塗り情報215は、背景、単色オブジェクト、またはイメージオブジェクトを描画するための色を示す情報である。
【0028】
合成情報214は、各領域について、参照する塗り情報215を示す情報であり、複数の塗り情報215を参照する場合にはそれらの合成処理方法も示す。合成情報214は、エッジ情報213から参照される。このように、エッジ情報213と合成情報214と塗り情報215は、相互に関連付けられている。
【0029】
図6は、画像形成処理装置100の処理方法を示すフローチャートである。ステップS1000では、解析部205は、印刷データ203を解析し、印刷データ203を一または複数の描画命令に変換する。印刷データ203は、例えばページ記述言語で記述された印刷データであり、一または複数の描画命令を含む。描画命令は、描画情報の一例である。
【0030】
ステップS1001では、中間データ生成部208は、解析部205により変換された一または複数の描画命令の中の1つの描画命令を選択し、選択した描画命令を基に塗り情報215を生成し、生成した塗り情報215をRAM102に書き込む。次に、中間データ生成部208は、RAM102に書き込まれた塗り情報215をファイルとしてHDD114またはSSD115に書き込み、確保していたRAM102の塗り情報215のメモリ領域を解放する。
【0031】
ステップS1002では、中間データ生成部208は、塗り情報215の数があらかじめ定めた閾値以上であるか否かを判定する。中間データ生成部208は、塗り情報215の数が閾値以上でないと判定した場合には、ステップS1003に進み、塗り情報215の数が閾値以上であると判定した場合には、ステップS1004に進む。
【0032】
ステップS1003では、中間データ生成部208は、未処理の描画命令が残っているか否かを判定する。中間データ生成部208は、未処理の描画命令が残っている場合には、ステップS1001に戻り、未処理の描画命令が残っていない場合には、ステップS1004に進む。
【0033】
ステップS1004では、中間データ生成部208は、必要に応じて、HDD114またはSSD115に書き込まれた塗り情報215を読み出し、読み出した塗り情報215を基に合成情報214を生成し、生成した合成情報214をRAM102に書き込む。次に、中間データ生成部208は、RAM102に書き込まれた合成情報214をHDD114またはSSD115にファイルとして書き込み、確保していたRAM102の合成情報214のメモリ領域を解放する。
【0034】
ステップS1005では、中間データ生成部208は、必要に応じて、HDD114またはSSD115に書き込まれた合成情報214および塗り情報215を読み出し、読み出した合成情報214および塗り情報215を基にエッジ情報213を生成する。そして、中間データ生成部208は、生成したエッジ情報213をRAM102に書き込む。次に、中間データ生成部208は、RAM102に書き込まれたエッジ情報213をHDD114またはSSD115にファイルとして書き込み、確保していたRAM102のエッジ情報213のメモリ領域を解放する。上記の処理により、エッジ情報213と合成情報214と塗り情報215は、中間データ300として、HDD114またはSSD115に保存される。
【0035】
ステップS1006では、中間データ生成部208は、未処理の描画命令が残っているか否かを判定する。中間データ生成部208は、未処理の描画命令が残っている場合には、ステップS1001に戻り、未処理の描画命令が残っていない場合には、ステップS1007に進む。上記の処理により、中間データ生成部208は、描画命令ごとに、塗り情報215と、合成情報214と、エッジ情報213を生成する。
【0036】
ステップS1007では、中間データ生成部208は、中間データ300が複数あるか否かを判定する。中間データ生成部208は、中間データ300が複数ある場合には、ステップS1008に進み、中間データ300が1つである場合には、ステップS1009に進む。
【0037】
ステップS1008では、中間データ生成部208は、必要に応じて、HDD114またはSSD115に書き込まれた複数の中間データ300を読み出し、読み出した複数の中間データ300を1つの中間データ300に統合する。複数の中間データ300は、複数のエッジ情報213と、複数の合成情報214と、複数の塗り情報215を有する。例えば、中間データ生成部208は、複数のエッジ情報213と複数の合成情報214と複数の塗り情報215を、1つのエッジ情報213と1つの合成情報214と1つの塗り情報215に統合し、1つの中間データ300を生成する。その後、中間データ生成部208は、ステップS1009に進む。
【0038】
ステップS1009では、レンダリング部209は、中間データ生成部208により生成または統合された1つの中間データ300をレンダリングし、ラスタ画像を生成する。出力部207は、レンダリング部209により生成されたラスタ画像を基に出力データ212を生成し、処理を終了する。
【0039】
以上のように、中間データ生成部208は、RAM102の空き容量が不足しても、複数の中間データ300をRAM102からHDD114またはSSD115に一時退避させることにより、1つの中間データ300を生成することができる。
【0040】
(第2の実施形態)
次に、第2の実施形態について説明する。第2の実施形態では、中間データ生成部208は、中間データ300をRAM102に保存する第1のモードと、中間データ300をファイルとしてHDD114またはSSD115に一時退避させる第2のモードを有する。そして、中間データ生成部208は、印刷データ203の最初のページからは第1のモードで動作し、ジョブ処理中の途中のページでRAM102の空き容量が不足した場合に、該ページに関しては第2のモードに切り替えて処理する。
【0041】
図7は、画像形成処理装置100の処理方法を示すフローチャートである。ステップS1000では、解析部205は、印刷データ203を解析し、印刷データ203を一または複数の描画命令に変換し、ステップS1001に進む。以下、中間データ生成部208は、処理開始時点では、第1のモード(HDD114またはSSD115を使わないモード)で動作する。
【0042】
ステップS1001では、中間データ生成部208は、解析部205により変換された描画命令を基に塗り情報215を生成し、生成した塗り情報215をRAM102に書き込む。ただし、中間データ生成部208は、RAM102に書き込まれた塗り情報215をHDD114またはSSD115に書き込まない。
【0043】
ステップS1002では、中間データ生成部208は、塗り情報215の数があらかじめ定めた閾値以上であるか否かを判定する。中間データ生成部208は、塗り情報215の数が閾値以上でないと判定した場合には、ステップS1003に進み、塗り情報215の数が閾値以上であると判定した場合には、ステップS1004に進む。
【0044】
ステップS1003では、中間データ生成部208は、未処理の描画命令が残っているか否かを判定する。中間データ生成部208は、未処理の描画命令が残っている場合には、ステップS1001に戻り、未処理の描画命令が残っていない場合には、ステップS1004に進む。
【0045】
ステップS1004では、中間データ生成部208は、必要に応じて、RAM102に書き込まれた塗り情報215を読み出し、読み出した塗り情報215を基に合成情報214を生成し、生成した合成情報214をRAM102に書き込む。ただし、中間データ生成部208は、RAM102に書き込まれた合成情報214をHDD114またはSSD115に書き込まない。
【0046】
ステップS1005では、中間データ生成部208は、必要に応じて、RAM102に書き込まれた合成情報214および塗り情報215を読み出し、読み出した合成情報214および塗り情報215を基にエッジ情報213を生成する。そして、中間データ生成部208は、生成したエッジ情報213をRAM102に書き込む。ただし、中間データ生成部208は、RAM102に書き込まれたエッジ情報213をHDD114またはSSD115に書き込まない。上記の処理により、エッジ情報213と合成情報214と塗り情報215は、中間データ300として、RAM102に保存される。
【0047】
ステップS2000では、中間データ生成部208は、中間データ300のサイズが閾値以上であるか否かを判定する。中間データ生成部208は、中間データ300のサイズが閾値以上である場合には、ステップS2001に進み、中間データ300のサイズが閾値以上でない場合には、ステップS2002に進む。
【0048】
ステップS2001では、中間データ生成部208は、これまで生成された中間データ300のフラット化を行う。すなわち、中間データ生成部208は、これまで生成された複数の中間データ300を1つの中間データ300に統合し、不要となったRAM102のメモリ領域を解放する。1つの中間データ300は、1つのエッジ情報213と、1つの合成情報214と、1つの塗り情報215とを有する。1つの塗り情報215は、1つのイメージデータである。中間データ生成部208は、例えばJPEG等の非可逆圧縮方法により、イメージデータの塗り情報215を圧縮し、塗り情報215のサイズを低減する。その後、中間データ生成部208は、ステップS2002に進む。
【0049】
ステップS2002では、中間データ生成部208は、RAM102の状態 (CURRENT_USAGE)を確認し、RAM102の空き容量が不足しているか否かを判定する。中間データ生成部208は、RAM102の空き容量が不足している場合には、ステップS2100に進み、RAM102の空き容量が不足していない場合には、ステップS1006に進む。以上のように、中間データ生成部208は、中間データの生成の途中で、RAM102の空き容量が不足した場合には、ステップS2100に進む。
【0050】
ステップS1006では、中間データ生成部208は、未処理の描画命令が残っているか否かを判定する。中間データ生成部208は、未処理の描画命令が残っている場合には、ステップS1001に戻り、未処理の描画命令が残っていない場合には、ステップS1007に進む。
【0051】
ステップS1007では、中間データ生成部208は、中間データ300が複数あるか否かを判定する。中間データ生成部208は、中間データ300が複数ある場合には、ステップS1008に進み、中間データ300が1つである場合には、ステップS2003に進む。
【0052】
ステップS1008では、中間データ生成部208は、必要に応じて、HDD114またはSSD115に書き込まれた複数の中間データ300を読み出し、複数の中間データ300を1つの中間データ300に統合する。そして、中間データ生成部208は、不要となったRAM102のメモリ領域を解放する。複数の中間データ300は、複数のエッジ情報213と、複数の合成情報214と、複数の塗り情報215を有する。例えば、中間データ生成部208は、複数のエッジ情報213と複数の合成情報214と複数の塗り情報215を、1つのエッジ情報213と1つの合成情報214と1つの塗り情報215に統合し、1つの中間データ300を生成する。1つの塗り情報215は、1つのイメージデータである。その後、中間データ生成部208は、ステップS2003に進む。
【0053】
ステップS2003では、中間データ生成部208は、中間データ300をフラット化するか否かを判定する。中間データ生成部208は、中間データ300をフラット化すると判定した場合には、ステップS2004に進み、中間データ300をフラット化しないと判定した場合には、ステップS1009に進む。
【0054】
ステップS2004では、中間データ生成部208は、中間データ300のフラット化を行う。すなわち、中間データ生成部208は、例えばJPEG等の非可逆圧縮方法により、イメージデータの塗り情報215を圧縮し、塗り情報215のサイズを低減する。その後、中間データ生成部208は、ステップS1009に進む。
【0055】
ステップS1009では、レンダリング部209は、中間データ生成部208により生成された中間データ300をレンダリングし、ラスタ画像を生成する。出力部207は、レンダリング部209により生成されたラスタ画像を基に出力データ212を生成し、処理を終了する。
【0056】
ステップS2100以降では、中間データ生成部208は、第2のモード(HDD114またはSSD115を使うモード)で動作する。ステップS2100では、画像形成処理装置100は、画像形成処理の初期化を行う。ここで、中間データ生成部208は、RAM102に書き込まれた中間データ300を破棄する。
【0057】
ステップS2101では、中間データ生成部208は、中間データ300の保存先をRAM102からHDD114またはSSD115へ変更する。以降、画像形成処理装置100は、
図6と同様に、ステップS1000~S1009の処理を行う。
【0058】
ステップS1000では、解析部205は、印刷データ203を描画命令に変換する。ステップS1001~S1008では、中間データ生成部208は、描画命令から中間データ300を生成する。ステップS1001~S1005では、中間データ生成部208は、エッジ情報213と合成情報214と塗り情報215をHDD114またはSSD115に保存し、RAM102のメモリ領域を解放する。これにより、RAM102の空き容量不足を解消するためのステップS2001のフラット化が不要になる。
【0059】
また、ステップS1008では、中間データ生成部208は、中間データ300をHDD114またはSSD115に保存し、RAM102のメモリ領域を解放する。これにより、RAM102の空き容量不足を解消するためのステップS2004のフラット化が不要になる。
【0060】
ステップS1009では、レンダリング部209は、中間データ生成部208により生成された中間データ300をレンダリングし、ラスタ画像を生成する。出力部207は、レンダリング部209により生成されたラスタ画像を基に出力データ212を生成し、処理を終了する。
【0061】
(第3の実施形態)
図8は、第3の実施形態による画像形成処理装置100の処理方法を示すフローチャートである。
図8は、
図7に対して、ステップS2002の代わりに、ステップS3000を設けたものである。以下、第3の実施形態が第2の実施形態と異なる点を説明する。
【0062】
ステップS3000では、中間データ生成部208は、中間データ生成部208の処理時間が閾値t以上になったか否かを判定する。中間データ生成部208は、中間データ生成部208の処理時間が閾値t以上になっていない場合には、ステップS1006に進み、中間データ生成部208の処理時間が閾値t以上になった場合には、ステップS2100に進む。以上のように、中間データ生成部208は、中間データ300の生成の途中で、中間データ生成部の処理時間が閾値t以上になった場合には、ステップS2100に進む。
【0063】
図9は、
図8の画像形成処理装置100の処理方法による性能の改善の一例を示す図である。
図9は、
図2および
図3と同様に、縦軸がRAM102の使用量(GB)を示し、横軸が中間データ生成部208の処理時間(分)を示す。縦軸の最大値2GBは、RAM102の最大容量である。中間データ生成部208は、処理時間が閾値t以上になっていない場合には、ステップS1001~S1006、S2000、S2001およびS3000の処理を繰り返す。また、中間データ生成部208は、処理時間が閾値t以上になった場合には、ステップS2100に進む。ステップS2100では、中間データ生成部208は、RAM102の中間データ300を破棄するので、RAM102の使用量が減る。
【0064】
図3では、処理時間TでRAM102の使用量が最大値2GBに到達しており、RAM102の空き容量不足が発生し、リカバリー処理へ移行する。
図9では、中間データ生成部208は、処理時間が閾値t以上になると、ステップS2100以降のリカバリー処理へ移行する。閾値tは、処理時間Tより短いので、
図9は、
図3に対して、総印刷時間を短縮することができる。
【0065】
以上説明したように、
図3では、中間データ生成部208は、処理時間TでRAM102の使用量が最大値2GBに到達し、RAM102の空き容量不足が発生し、リカバリー処理へ移行する。
図9では、中間データ生成部208は、処理時間が閾値t以上になった場合に、ステップS2100以降のリカバリー処理を行うことで、総印刷時間を短縮することができる。
【0066】
(第4の実施形態)
図10は、第4の実施形態による画像形成処理装置100の処理方法を示すフローチャートである。
図10は、
図7に対して、ステップS4000およびS4001を追加したものである。以下、第4の実施形態が第2の実施形態と異なる点を説明する。画像形成処理装置100は、マルチスレッドモードとシングルスレッドモードの動作を切り替えることができる。中間データ生成部208は、マルチスレッドモードでは、複数のオブジェクトを並列に処理することができる。
【0067】
ステップS4000は、
図10のフローチャートの最初の処理である。ステップS4000では、画像形成処理装置100は、マルチスレッドモード(スレッド数を複数)に設定し、ステップS1000に進む。以降、中間データ生成部208は、マルチスレッドモードで動作する。
【0068】
ステップS4001は、ステップS2102とステップS1000との間の処理である。ステップS4001では、画像形成処理装置100は、シングルスレッドモード(スレッド数を1つ)に設定し、ステップS1000に進む。以降、中間データ生成部208は、シングルスレッドモードで動作する。
【0069】
画像形成処理装置100は、マルチスレッドモードで動作する場合には、シングルスレッドモードで動作する場合よりも、RAM102の消費量が多くなる傾向がある。そのために、画像形成処理装置100は、ステップS4001以降では、RAM102の空き容量が不足しないように、シングルスレッドモードで動作させ、RAM102の消費を低減することができる。
【0070】
また、中間データ生成部208は、ステップS4001以降では、中間データ300の保存先として、RAM102と、HDD114またはSSD115の両方を使用してもよい。例えば、中間データ生成部208は、RAM102の空き容量不足を発生させやすい描画命令に対する中間データ300をHDD114またはSSD115に保存し、それ以外の描画命令に対する中間データ300をRAM102に保存してもよい。上記のRAM102の空き容量不足を発生させやすい描画命令は、例えば、大きな画像オブジェクトを含むオブジェクトの描画命令等である。
【0071】
次に、中間データ生成部208がHDD114またはSSD115に保存するタイミングを説明する。中間データ生成部208は、中間データ300の生成処理中に、RAM102の使用状況をリアルタイムに確認し、RAM102の使用状況に問題がないことが確認できた場合には、中間データ300をRAM102に保存し、処理を続行する。また、中間データ生成部208は、RAM102の空き容量が不足する状況になったと判定された場合には、中間データ300をHDD114またはSSD115に保存する。
【0072】
(第5の実施形態)
次に、第5の実施形態について説明する。以下、第5の実施形態が第2~第4の実施形態と異なる点を説明する。
図11の印刷ジョブ情報と
図12のフローチャートを使用して、モード切り替え処理について説明する。第5の実施形態では、中間データ生成部208は、外部記憶装置の種類、出力用紙サイズ、印刷データの描画内容に応じて、印刷データ203の最初のページから第1のモードで動作するか、第2のモードで動作するかを切り替える。
【0073】
図11は、入力部204が印刷データ203を処理して作成する印刷ジョブ情報の一例を示す図である。印刷データ203を含む印刷ジョブ情報は、一行で表現されており、印刷ジョブ識別子1101と、出力用紙サイズ1102と、描画命令数1103と、外部記憶装置の種類1104と、動作モード1105を有する。
【0074】
印刷ジョブ識別子1101は、印刷ジョブを識別するための識別子である。出力用紙サイズ1102は、印刷データ生成部201で指定される。描画命令数1103は、印刷データ203内の描画命令の数である。入力部204は、印刷データ203を空読みして、印刷データ203内の描画命令数1103をカウントする。
【0075】
外部記憶装置の種類1104は、HDD114とSSD115のどちらかを示す。入力部204は、オペレーティングシステムの機能を必要に応じて使用することにより、外部記憶装置の種類1104の判別を行う。外部記憶装置の種類1104の判別のタイミングは、外部記憶装置が接続されるタイミングでもよいし、入力部204が印刷データ203を受け付けたタイミングでもよい。
【0076】
動作モード1105は、該当する印刷データ203が動作するモードを示す。動作モード1105は、第2の実施形態のように、中間データ300をRAM102に保存する第1のモードと、中間データ300をファイルとして外部記憶装置に一時退避させる第2のモードである。外部記憶装置は、HDD114またはSSD115である。
【0077】
図12は、入力部204が印刷データ203を受け付け、中間データ300をRAM102に保存する第1のモードと、中間データ300をファイルとして外部記憶装置に一時退避させる第2のモードを決定する処理を示すフローチャートである。
【0078】
ステップS1201では、入力部204は、
図11の外部記憶装置の種類1104を確認する。ステップS1202では、入力部204は、外部記憶装置の種類1104がSSD115であるか否かを判定する。入力部204は、外部記憶装置の種類1104がSSD115である場合には、ステップS1204に進み、外部記憶装置の種類1104がHDD114である場合には、ステップS1203に進む。
【0079】
ステップS1204では、入力部204は、
図11の出力用紙サイズ1102を確認する。ステップS1205では、入力部204は、出力用紙サイズ1102が閾値以上であるか否かを判定する。入力部204は、出力用紙サイズ1102が閾値以上である場合には、ステップS1206に進み、出力用紙サイズ1102が閾値以上でない場合には、ステップS1203に進む。例えば、閾値は、A1の用紙サイズである。中間データ生成部208は、
図11のジョブ3の場合、A4の出力用紙サイズ1102がA1の閾値以上でないので、ステップS1203に進む。
【0080】
ステップS1206では、入力部204は、
図11の描画命令数(オブジェクト数)1103を確認する。ステップS1207では、入力部204は、描画命令数1103が閾値以上であるか否かを判定する。入力部204は、描画命令数1103が閾値以上である場合には、ステップS1208に進み、描画命令数1103が閾値以上でない場合には、ステップS1203に進む。
【0081】
例えば、中間データ生成部208は、
図11のジョブ1の場合、10,000の描画命令数1103が閾値以上でないので、ステップS1203に進む。また、中間データ生成部208は、
図11のジョブ2の場合、1,000,000の描画命令数1103が閾値以上であるので、ステップS1208に進む。
【0082】
ステップS1203では、入力部204は、中間データ生成部208に対して、印刷データ203の最初のページでは、中間データ300をRAM102に保存する第1のモードで動作させるように、
図11の動作モード1105に第1のモードを設定する。その後、入力部204は、処理を終了する。この場合、画像形成処理装置100は、第2~第4の実施形態と同様の処理を行う。
【0083】
ステップS1208では、入力部204は、中間データ生成部208に対して、印刷データ203の最初のページから、中間データ300をファイルとして外部記憶装置に一時退避させる第2のモードで動作させるように設定する。入力部204は、
図11の動作モード1105に第2のモードを設定し、処理を終了する。この場合、画像形成処理装置100は、第1の実施形態と同様の処理を行う。
【0084】
中間データ生成部208は、
図11の動作モード1105に応じて、印刷データ203の最初のページでは、第1のモードまたは第2のモードで動作を開始する。外部記憶装置は、HDD114またはSSD115である。一般的に、SSD115は、HDD114に対して、ファイルアクセスが高速である。
【0085】
以上説明したように、入力部204は、ステップS2100以降のリカバリー処理が必要になる可能性が高い条件の印刷ジョブの場合には、中間データ生成部208に対して、最初のページから第2のモードで動作させる。その結果、不要となる可能性の高い処理時間を省き、最適な処理時間で動作させることが可能となる。
【0086】
(第6の実施形態)
次に、第6の実施形態について説明する。以下、第6の実施形態が第2~第5の実施形態と異なる点を説明する。
図11の印刷ジョブ情報と
図13のフローチャートを使用し、第6の実施形態を説明する。
【0087】
図13は、第6の実施形態による画像形成処理装置100の処理方法を示すフローチャートである。
図13は、
図8に対して、ステップS5000を追加したものである。ステップS5000は、
図13のフローチャートの最初の処理である。ステップS5000では、入力部204は、
図11の外部記憶装置の種類1104を確認する。入力部204は、外部記憶装置の種類1104がHDD114である場合には、ステップS3000の処理時間の閾値をtに設定し、外部記憶装置の種類1104がSSD115である場合には、ステップS3000の処理時間の閾値をt’に設定する。閾値t’は、閾値tとは異なる値である。ステップS3000の処理時間の閾値は、外部記憶装置の種類1104によって異なる。その後、画像形成処理装置100は、
図8と同様に、ステップS1000以降の処理を行う。
【0088】
ステップS3000では、外部記憶装置の種類1104がHDD114である場合には、中間データ生成部208は、中間データ生成部208の処理時間が閾値t以上になったか否かを判定する。中間データ生成部208は、中間データ生成部208の処理時間が閾値t以上になっていない場合には、ステップS1006に進み、中間データ生成部208の処理時間が閾値t以上になった場合には、ステップS2100に進む。
【0089】
また、ステップS3000では、外部記憶装置の種類1104がSSD115である場合には、中間データ生成部208は、中間データ生成部208の処理時間が閾値t’以上になったか否かを判定する。中間データ生成部208は、中間データ生成部208の処理時間が閾値t’以上になっていない場合には、ステップS1006に進み、中間データ生成部208の処理時間が閾値t’以上になった場合には、ステップS2100に進む。
【0090】
以上説明したように、入力部204は、外部記憶装置の種類1104に応じて、ステップS3000の処理時間の閾値tまたはt’を設定することができる。
【0091】
(第7の実施形態)
次に、第7の実施形態について説明する。以下、第7の実施形態が第2の実施形態と異なる点を説明する。
図14のフローチャートを使用し、第7の実施形態を説明する。
【0092】
図14は、第7の実施形態による画像形成処理装置100の処理方法を示すフローチャートである。
図14は、
図7に対して、ステップS2002の代わりに、ステップS6000を設けたものである。
【0093】
ステップS2000では、中間データ生成部208は、中間データ300のサイズが閾値以上である場合には、ステップS2001に進み、中間データ300のサイズが閾値以上でない場合には、ステップS6000に進む。
【0094】
ステップS2001では、中間データ生成部208は、
図7と同様のフラット化を行い、フラット化を行った回数をインクリメントし、フラット化を行った回数を保存し、不要となったRAM102のメモリ領域を解放し、ステップS6000に進む。
【0095】
ステップS6000では、中間データ生成部208は、ステップS2001でフラット化(統合)を行った回数を確認する。中間データ生成部208は、フラット化を行った回数が閾値以上でない場合には、ステップS1006に進み、フラット化を行った回数が閾値以上である場合には、ステップS2100に進む。以上のように、中間データ生成部208は、中間データ300の生成の途中で、フラット化の回数が閾値以上になった場合には、ステップS2100に進む。これ以降の処理は、
図7と同様である。
【0096】
図15は、
図14の画像形成処理装置100の処理方法による性能の改善の一例を示す図である。
図15は、
図2および
図3と同様に、縦軸がRAM102の使用量(GB)を示し、横軸が中間データ生成部208の処理時間(分)を示す。縦軸の最大値2GBは、RAM102の最大容量である。
【0097】
ステップS6000の閾値は、例えば、2回である。中間データ生成部208は、フラット化を行った回数が閾値(2回)以上でない場合には、ステップS1006に進み、フラット化を行った回数が閾値(2回)以上である場合には、ステップS2100に進む。中間データ生成部208は、フラット化を行った回数が2回以上になると、ステップS2100に進み、RAM102の中間データ300を破棄するので、RAM102の使用量が減る。
【0098】
図3では、フラット化が3回発生した後、RAM102の空き容量不足が発生し、リカバリー処理へ移行している。これに対し、
図15では、フラット化が2回発生した後に、ステップS2100以降のリカバリー処理へ移行するので、
図3の場合よりも早くリカバリー処理へ移行することが可能となり、総印刷時間を短縮することができる。
【0099】
(第8の実施形態)
次に、第8の実施形態について説明する。以下、第8の実施形態が第2の実施形態と異なる点を説明する。
図16のフローチャートを使用し、第8の実施形態を説明する。
【0100】
図16は、第8の実施形態による画像形成処理装置100の処理方法を示すフローチャートである。
図16は、
図7に対して、ステップS2001およびS2002を削除したものである。以下、
図16が
図7と異なる点を説明する。
【0101】
ステップS2000では、中間データ生成部208は、中間データ300のサイズが閾値以上である場合には、ステップS2100に進み、中間データ300のサイズが閾値以上でない場合には、ステップS1006に進む。以上のように、中間データ生成部208は、中間データ300の生成の途中で、中間データ300のサイズが閾値以上になった場合には、ステップS2100に進む。これ以降の処理は、
図7と同様である。
【0102】
図16では、
図7のステップS2001のフラット化が削除されている。フラット化は、それまでの中間データ300を統合するため、RAM102の使用量削減の効果は高いが、処理コストが高くなり、全体的な処理時間が延びてしまう。そのため、
図16では、
図7のステップS2001のフラット化が削除されている。
【0103】
以上説明した通り、中間データ生成部208は、ステップS2001のフラット化を行わず、中間データ300のサイズが閾値以上になった場合に、ステップS2100以降のリカバリー処理を行う。
【0104】
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0105】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【0106】
100 画像形成処理装置、204 入力部、205 解析部、206 ラスタ画像生成処理部、207 出力部、208 中間データ生成部、209 レンダリング部