以下、本発明の実施の形態について図面を用いて詳細に説明する。
<実施形態1>
以下、添付図面を参照して本発明の好適な実施形態を例示的に詳細に説明する。但し、この実施形態に記載されている構成要素の相対配置、装置形状等は、あくまで例示であり、この発明の範囲をそれらのみに限定する趣旨のものではない。
本明細書において、「印刷装置」とは、印刷機能に特化した専用機に限らず、印刷機能とその他の機能を複合した複合機や、記録紙上に画像やパターンを形成する製造装置等の装置も含むものとする。
図1は、記憶媒体であるロールシート(搬送方向において印刷単位の長さよりも長い連続した連続シート)を用いる画像形成装置100の全体構成断面図である。印刷装置として機能する画像形成装置100は、ロールシートユニット101、搬送ユニット102、搬送用エンコーダ103、回転ローラ104、ヘッドユニット105、印刷ヘッド106、スキャナユニット107、制御装置108、インクタンク109、カッタユニット110、裏面印刷ユニット111、乾燥ユニット112、シート巻取りユニット113、仕分けユニット114、操作部ユニット115を備え、これらの各種構成要素が画像形成装置100の筐体内に配置されている。
制御装置108は、コントローラやユーザインタフェース、各種I/Oインタフェースを備えた制御部を内蔵し、装置全体の各種制御を司る。詳しくは、制御装置108は、内部に、CPU、RAM、ROMを備える。ROMには、後述するフローチャートで示す処理を含む各種処理を実行するためのプログラムが格納されており、CPUは、ROMに格納されているプログラムをRAM上に読み出し実行することで、各種処理を実行する。
ロールシートユニット101は、上段シートカセット101aと下段シートカセット101bの2基のカセットユニットを備える。ユーザは、ロールシート(以下、シート)をマガジンに装着して、画像形成装置100本体に正面から挿入して装着する。上段シートカセット101aから引き出されたシートは図中a方向に、下段シートカセット101bから引き出されたシートは図中b方向に搬送される。いずれのカセットユニットからのシートも図中c方向に進行して搬送ユニット102に到達する。搬送ユニット102は、複数の回転ローラ104を通して印刷中にシートを図中d方向(水平方向)に搬送する。
搬送ユニット102の上方にはヘッドユニット105が対向して配置されている。ヘッドユニット105では複数色(実施形態では、7色)分の独立した印刷ヘッド106がシートの搬送方向に沿って保持されている。搬送ユニット102によるシートの搬送に同期して、印刷ヘッド106からインクを吐出してシート上に画像を形成する。これら搬送ユニット102、ヘッドユニット105、印刷ヘッド106で印刷ユニットが構成されている。
インクタンク109は、各色のインクを独立して貯蔵する。インクタンク109からはチューブによって各色に対応して設けられたサブタンクまでインクが供給され、サブタンクから各印刷ヘッド106までチューブでインクが供給される。印刷ヘッド106は、印刷時の搬送方向d方向に沿って各色(実施形態では、7色)のラインヘッドが並んでいる。各色のラインヘッドは、継ぎ目無く単一のノズルチップで形成されたものであってもよいし、分割されたノズルチップが一列又は千鳥配列のように規則的に並べられたものであってもよい。本実施形態では、使用する最大シートの印刷幅をカバーする範囲にノズルが並んでいる所謂フルマルチヘッドである。ノズルからインクを吐出するインクジェット方式は、発熱素子を用いた方式、ピエゾ素子を用いた方式、静電素子を用いた方式、MEMS素子を用いた方式等を採用することができる。印刷データに基づいて各印刷ヘッド106のノズルからインクが吐出され、吐出のタイミングは搬送用エンコーダ103の出力信号によって決定される。
尚、図1のプリンタとして機能する画像形成装置100は、インクジェット方式のプリンタに限定されず、サーマルプリンタ(昇華型、熱転写型等)、ドットインパクトプリンタ、LEDプリンタ、レーザープリンタ等、様々な印刷方式に適用可能である。
シートに画像形成後、そのシートを搬送ユニット102からスキャナユニット107まで搬送する。スキャナユニット107では、印刷画像や特殊パターンを読み取って印刷画像に問題がないかの確認や装置の状態確認を行う。本実施形態では、画像の確認方法において、印刷ヘッド106の状態を確認するパターンを読み込む方法でもよいし、元画像との比較を行う方法等を選択することが可能である。
スキャナユニット107から搬送されたシートはe方向に搬送され、カッタユニット110に導入される。カッタユニット110では、シートを所定の印刷単位の長さ毎に切断する。印刷する画像サイズに応じて所定の印刷単位の長さは異なる。例えば、L版写真では搬送方向の長さは135mm、A4サイズでは搬送方向の長さは297mmとなる。
カッタユニット110から搬送されたシートは、図中f方向に搬送され、裏面印刷ユニット111に搬送される。裏面印刷ユニット111は、印刷画像毎の情報(例えば、オーダー管理用番号等)を印刷させるためのユニットである。
裏面印刷ユニット111から搬送される乾燥ユニット112は、インクが付与されたシートを短時間で乾燥させるために、図中g方向に通過するシートを温風で加熱する。印刷単位長さに切断されたシートは1枚ずつ乾燥ユニット112内を通過して、図中h方向に搬送されて仕分けユニット114に搬送される。仕分けユニット114では、図中i方向に通過するシートを、センサで確認しながら印刷画像毎に設定されたトレー番号に積載する。仕分けユニット114では、複数の給紙段であるトレー(実施形態では、22段)を保持しており、印刷単位の長さに応じて積載先のトレーを分別する。また、仕分けユニット114では、積載中や積載完了等の状態表示を用いて行う(例えば、LEDで表示)。仕分けユニット114の詳細については後述する。
シート巻取りユニット113は、両面印刷の際に、まず、表面画像形成から行い、カッタユニット110で切断せず、図中j方向に通過するシートを、シート巻取りユニット113で巻き取る。シート巻取りユニット113は、すべての表面画像形成終了後、再度、巻き取ったシートを、図中k方向に搬送して裏面画像形成を行わせる。
操作部ユニット115は、画像形成装置100の各種操作の指示を受け付けるためのユーザインタフェースを提供し、このユーザインタフェースに対するユーザからの指示によって各種処理を実行する。この操作部ユニット115は、例えば、タッチパネルディスプレイで構成される。ユーザは、この操作部ユニット115により、指定のオーダー画像はどこのトレーに積載されているか、あるいは印刷中、印刷終了等のオーダー毎の印刷状況の確認、インク残量や紙の残量等の装置状態の確認、ヘッドクリーニング等の装置メンテナンスの実施を行うための操作/確認を行うことができる。
図2は画像形成装置100における制御構成を示すブロック図である。画像を形成(印刷)する画像形成装置100においては、PC等の情報処理装置からなる外部装置201からのジョブデータを処理し、記憶媒体に印刷を行う。ここで、ジョブデータは、PDL等のデータ記述言語で記述されたデータであり、レンダリング処理によって画像が生成される。ここで、レンダリング処理とは、データを構成するデータ記述言語を解釈して画像を生成する処理である。
画像形成装置100では、その制御を行うための主要な構成として、コントロール部203、外部レンダリング部204、ユーザインタフェース部205、及びプリンタエンジン部206を含んでいる。これらの構成要素はそれぞれ、例えば、図1の制御装置108に実装されるハードウェアとして実現されても良いし、ハードウェアとソフトウェアと協働して実現されても良い。
コントロール部203は、受信部207と、ジョブ管理部208と、レンダリング管理部209と、通信部210と、スプール部211と、ジョブ解析部214と、ユーザ・インタフェース制御部215と、内部レンダリング部216とを含む。画像形成装置100の動作を制御するコントロール部203は、外部装置201からの受信データであるジョブデータを解析し、その解析結果やユーザインタフェース部205からの指示に基づきコマンドやデータを作成する。そして、コントロール部203は、作成したコマンドやデータを、内部レンダリング部216及び外部レンダリング部204の少なくとも一方に送信し、レンダリング部からレンダリング後のデータを受信する。その後、コントロール部203は、受信したレンダリング後のデータをプリンタエンジン部206へ送信して印刷を行う。
上述したように、コントロール部203は、自身に内蔵する内部レンダリング部216と、通信部210を介して通信接続される外部レンダリング部204を備え、これらを適応的に選択することで、画像処理の1つであるレンダリング処理を実現する処理装置として機能する。内部レンダリング部216と外部レンダリング部204との間では、コントロール部203との通信コストが、内部レンダリング部216に比べて、外部レンダリング部204のほうが高い関係となっている。
内部レンダリング部216は、コントロール部203が作成したコマンドやデータに基づきレンダリング処理を行い、印刷用ビットマップデータを生成する。その後、内部レンダリング部216は、印刷用ビットマップデータをスプール部211に格納する。
画像形成装置100は、1又は複数の外部レンダリング部204を含む。この外部レンダリング部204は、追加することが可能であり、例えば、画像形成装置100の製品出荷後に性能向上等のために後付けすることができる。各外部レンダリング部204は、通信部212及び変換処理部213を含み、コントロール部203から送信されたコマンドやデータに基づきレンダリング処理を行い、印刷用ビットマップデータを生成する。その後、外部レンダリング部204は、通信部212を経て印刷用ビットマップデータをコントロール部203へ送信する。
ユーザインタフェース部205は、操作指示の受付や装置状態の表示を行う。プリンタエンジン部206は、コントロール部203から送信されたビットマップデータに対して色変換等の画像処理を施した後、記憶媒体への印刷(画像形成)を行う印刷部である。
コントロール部203において、受信部207は、外部装置201からのジョブデータを受信し格納する。ジョブ管理部208は、受信したジョブデータを内部レンダリング部216もしくは外部レンダリング部204に指示する単位(例えば、ページ単位)に分割して分割ジョブデータを生成し、その印刷順序を決定する。このように、本実施形態では、1つの印刷ジョブ(ジョブデータ)を分割して、複数のレンダリング部(画像処理部)でレンダリング処理をすることにより、1つの印刷ジョブの処理時間を短縮することができる。
ジョブ解析部214は、その分割ジョブデータが必要とする処理内容を解析し、ジョブ管理部208に通知する。レンダリング管理部209は、ジョブ管理部208により指示された印刷順序に従って各レンダリング部にレンダリングの指示を行う。この際、レンダリング管理部209では、各レンダリング部のレンダリング処理内容一覧を有し、どのレンダリング部にレンダリングの指示を行うかを決定する。その決定方法については後述する。通信部210は、レンダリング管理部209の指示に基づき、外部レンダリング部204に対して分割ジョブデータを作成し送信する。
外部レンダリング部204は、コントロール部203から送信された分割ジョブデータを通信部212で受信し、変換処理部213でレンダリング処理を行う。変換処理部213は、画像補正処理部217及びPDLラスタライズ処理部218を含み、受信した分割ジョブデータに対して画像補正処理、PDLラスタライズ処理等の画像処理を行う。画像補正処理部217は、分割ジョブデータ中の画像データに対してコマンドで指定された画像補正処理を行う。PDLラスタライズ処理部218は、PDLを解釈して論理描画等を行い、ビットマップデータを作成する。
変換処理部213は、作成したビットマップデータを、通信部212からコントロール部203の通信部210へ送信される。同時に、変換処理部213は、そのビットマップデータに関するステータス情報を作成して、コントロール部203へ送信する。ステータス情報は、ジョブデータが正常にレンダリングされたか、エラーが発生したか等を示す情報であり、ユーザインタフェース部205上のジョブステータス表示に使用する。例えば、外部レンダリング部204の変換処理部213においてエラーが発生した場合は、通信部212及び通信部210を介してエラーのステータス情報がコントロール部203に通知される。
内部レンダリング部216は、変換処理部219を有する。変換処理部219は、外部レンダリング部204の変換処理部213と同様の変換処理部であり、変換処理部213と同様の処理を行うことができる。詳細は後述するが、変換処理部213と変換処理部219は、同様の処理を行うことができるが、異なる機能等を備えるものである。例えば、変換処理部213と変換処理部219とでバージョンの新旧が異なる場合や、動作する環境に差異がある場合(例えば、Linux(登録商標)版とWindows(登録商標)版)や、画像処理の各種設定値(パラメータ)が異なる場合が挙げられる。尚、外部レンダリング部216を複数備える場合は、外部レンダリング部216の変換処理部213のそれぞれが異なる性能・機能等を備えていてもよい。
ユーザインタフェース制御部215は、各ジョブデータのステータスをユーザインタフェース部205に表示するための制御を行う。
コントロール部203は、通信部210で受信したビットマップデータ及び内部レンダリング部216で作成したビットマップデータをスプール部211に格納させる。コントロール部203は、スプール部211内のビットマップデータを、印刷されるべき順序でプリンタエンジン部206へ送信させる。
プリンタエンジン部206は、受信したビットマップデータに対して、プリンタエンジン部206の扱う色空間であるCMYK等の色データに色変換処理を行い、更に必要に応じて2値化処理を行う。プリンタエンジン部206は、色変換処理後のデータを記憶媒体に印刷する。
次に、コントロール部203の全体処理を図3のフローチャートを用いて説明する。
尚、図3に示すフローチャートに示す処理に対応するプログラムが制御装置108のROMに格納されており、コントロール部203が制御装置108のRAM上でこのプログラムを実行することで、図3に示す処理が実現される。
まず、S121で、コントロール部203は、外部装置201からジョブデータを受信する。S122で、コントロール部203は、ジョブ解析部214でそのジョブデータを解析する。S123で、コントロール部203は、レンダリング管理部209でどのレンダリング部でレンダリングを行うか決定する。S124で、コントロール部203は、内部レンダリング部216及び外部レンダリング部204の内、決定したレンダリング部に対してレンダリング指示を発行し、レンダリング処理を行わせる。S125で、コントロール部203は、レンダリング処理の結果であるビットマップデータをプリンタエンジン部206へ送信し、印刷を指示する。S126で、コントロール部203は、ユーザインタフェース制御部215を介してユーザインタフェース部205のジョブステータスを出力中状態に更新する。S122、S123、S124に関して、処理内容の詳細を、以下、順番に説明する。
図4は図3のS122の詳細を示すフローチャートであり、受信したジョブデータを解析する処理である。
まず、S701で、コントロール部203は、ジョブ管理部208においてレンダリング部が処理しやすい単位へのジョブデータ分割処理を行う。分割の単位としては、例えば、ページ単位やページをさらに分割したバンド単位が挙げられる。S702で、コントロール部203は、ジョブ管理部208によって生成された分割ジョブデータの処理順序を決定する。レンダリング管理部209は、ここで決定された処理順序に従ってレンダリング部に処理を指示する。処理順序の決定方法としては、例えば、先頭ページから印刷を行う場合はページの昇順、最終ページから印刷を行う場合はページの降順、等がある。S703で、コントロール部203は、ジョブ解析部214で分割ジョブデータの解析処理を行う。解析処理では、分割ジョブデータにはどんなレンダリング処理が必要であるか、換言すれば、レンダリング処理の内容を解析することによって、分割ジョブデータをグループ化する。レンダリング処理の内容としては、例えば、フォントレンダリング、PDLレンダリング、人物等の顔を含む画像処理が必要なもの、細線処理が必要なもの等が挙げられる。ジョブ管理部208は、グループ化された分割ジョブデータをレンダリング管理部209に渡す。
図5は、レンダリング管理部209がジョブ管理部208から渡される分割ジョブデータの例を示している。ここでは、分割の単位をページ単位として説明する。分割ジョブデータは、図5(a)のように、Page1〜Page8の複数ページで構成されている。そして、ジョブ解析部214によって、それぞれのページが必要とする処理内容の種類によってページ(分割ジョブデータ)をグループに分類したものが図5(b)である。実施形態1では、Page1〜Page8の分割ジョブデータの内、フォントレンダリングが必要なフォントデータグループ401(Page1〜Page3)、PDLレンダリングが必要なGraphic Artグループ402(Page3、Page4、及びPage6)、顔を含む画像処理が必要な顔を含む画像グループ403(Page5及びPage7)、CADデータのような細線処理が必要なCADグループ404(Page8)に分類している。
図6は図3のS123の詳細を示すフローチャートであり、分割ジョブデータをどのレンダリング部に割り振るかを決定する処理である。
まず、S801で、コントロール部203は、レンダリング管理部209が管理する内部レンダリング部216と1以上の外部レンダリング部204のそれぞれの画像処理機能を参照し、それぞれのレンダリング部の機能に差異があるかどうかを判定する。そして、この判定結果を、レンダリング管理部209で管理する。尚、画像レンダリング部204が複数ある場合は、それぞれの画像処理機能を参照する。
レンダリング部の画像処理機能の例を、図7を用いて説明する。レンダリング管理部209は、図7に示すような画像処理機能の機能一覧である画像処理機能リストを、各レンダリング部に対して管理している。ここでは、画像処理機能として、PDLレンダラ、コーデック、フォントエンジン、赤目補正、細線設定等がある。PDLレンダラは、PDLデータをレンダリングする機能である。コーデックは、画像データをレンダリングする機能である。フォントエンジンは、フォントデータをレンダリングする機能である。赤目補正は、フラッシュ撮影などで発生した赤目現象に対して、顔画像を認識し赤目を補正する機能である。細線設定は、画像に含まれる非常に細い線に対して、線と見なすかノイズと見なすかの閾値を設定する機能である。
図7では、外部レンダリング部301と内部レンダリング部302は、PDLレンダラは、いずれもGhostScript(バージョン8.63)であり、コーデックLibjpeg(バージョン9)は同じである。しかしながら、外部レンダリング部301と内部レンダリング部302は、フォトエンジンは処理モジュールが異なり、赤目補正はバージョンが異なり、細線は設定値が異なる。このように、レンダリング管理部209が管理する画像処理機能の差異とは、レンダリング部が有する処理モジュールの差異であったり、処理モジュールのバージョンの差異であったり、処理のパラメータの差異であったりする。図7の例では、レンダリング管理部209は、内部レンダリング部216の画像処理機能リスト302と、一つの外部レンダリング部204の画像処理機能リスト301を管理している。ここで、外部レンダリング部は複数存在しても良く、その場合、レンダリング管理部209は、異なる外部レンダリング部毎に、画像処理機能リストを別途管理する。
図6の説明に戻る。S801において、レンダリング管理部209は、例えば、図7に示すようなレンダリング部の画像処理機能リストを比較し、それぞれのレンダリング部で機能に差異があるかどうかを分析する。図7を例にとって説明すると、内部レンダリング部と外部レンダリング部は、フォントエンジンの名称が異なり、赤目補正のバージョンが異なり、細線設定の設定値が異なっているため、それぞれ出力に差異があると判断する。PDLレンダラとコーデックに関しては名称もバージョンも同一であるため、出力は同一であると判断する。ここでは、S801で各レンダリング部の機能の取得、差異分析を行っているが、レンダリング管理部209において差異を静的に登録しておいても良い。また、内部レンダリング部216、外部レンダリング部204が接続された際に各レンダリング部に処理内容を問い合わせてから分析を行っても良い。
次に、S802で、コントロール部203は、レンダリング管理部209において、ジョブ管理部208から渡された分割ジョブデータを分析し、分割ジョブデータがどんなパターンでグループ化されていて、各分割ジョブデータが属するグループと、各グループが各レンダリング部で使用する機能とを関連付ける。図5(b)と図7を例にして、図8のような分析結果を得ることを想定する。
まず、図5(b)では、分割ジョブデータは、ページ単位で分割され、グループ化されているので、各ページが属するグループの内、フォントデータグループ401のレンダリングには、フォントレンダリングを行う必要があるため、フォントデータグループ401とフォントエンジンを関連付ける。Graphic Artグループ402のレンダリングには、PDLレンダリングを行う必要があるため、Graphic Artグループ402とPDLレンダラを関連付ける。顔を含む画像グループ403のレンダリングには、画像のレンダリングと赤目補正を行う必要があるため、顔を含む画像グループ403とコーデック及び赤目補正を関連付ける。CADグループ404のレンダリングには、PDLレンダリングを行い、また、非常に細かい細線描画が必要であるため、CADグループ404とPDLレンダラ及び細線設定を関連付ける。
次に、S803で、コントロール部203は、レンダリング管理部209において、分割ジョブデータをレンダリング部に依頼する単位に分割する。ここで、図8のように、ページ単位で、分割ジョブデータの各グループがレンダリング部の各機能と関連付けられている場合に、S803の処理によって図9に示す割り振り結果が得られることを例にとって説明する。
図9は、S801の機能の差異の分析結果と、各グループが使用する機能の差異とを示す図である。ページ単位の分割ジョブデータのグループの内、フォントデータグループ401は、フォントエンジンを使用するが、レンダリング部のフォントエンジンに差異があると分析されているため、同一のレンダリング部に処理を依頼することを決定する。Graphic Artグループ402は、PDLレンダラを使用するが、レンダリング部のPDLレンダラに差異は無いと分析されているため、同一グループ内のページ毎に異なるレンダリング部に処理を依頼して構わない。但し、フォントデータグループ401にもGraphic Artグループ402にも属するPage3に関しては、差異があると判断されたフォントデータグループ401の分析を優先する。顔を含む画像グループ403は、コーデック及び赤目補正を使用するが、赤目補正に差異があると分析されているため、同一のレンダリング部に処理を依頼することを決定する。CADグループ404は、細線設定に差異があると分析されているため、同一のレンダリング部に処理を依頼することを決定する。
最後に、S804で、コントロール部203は、各グループ及び各グループに含まれるデータ(例えばページ)に処理を依頼(処理を指示)するレンダリング部を決定する。この処理の詳細を図10を用いて説明する。
図10は図6のS804の詳細を示すフローチャートであり、分割ジョブデータを割り振るレンダリング部を決定する処理である。ここでは、図5(a)に示す複数ページからなる分割ジョブデータを、図5(b)のように、グループ化した場合を例に挙げて説明する。
まず、S901で、コントロール部203は、全てのグループに対してループ処理を実行するための初期設定を行う。初期設定としては、処理済のグループの数を計数するための変数gに0を設定する。尚、ループ処理が完了する毎に、変数gの値と、処理対象のグループの総数とを比較し、変数gの値が、グループの総数を超えたら処理を終了する。
ここで、全てのグループとは、処理対象のジョブデータが属するグループの全てであり、図5(b)の場合、全てのグループは、フォントデータグループ401、Graphic Artグループ402、顔を含む画像グループ403、及びCADグループ404のことである。
S902で、コントロール部203は、処理対象のグループに対して、図9に示す割り振り結果から、同一のレンダリング部で処理する必要があるか否かを判定する。同一のレンダリング部で処理する必要がある場合(S902でYES)、S903で、コントロール部203は、そのグループのレンダリング処理に必要な機能を有するレンダリング部の間でバージョンに差があるか否かを判定する。この判定は、図7のレンダリング部の画像処理機能リストを参照して判定する。例えば、グループがフォントデータグループ401である場合、レンダリング処理に必要な機能はフォントエンジンであり、バージョンは内部レンダリング部と外部レンダリング部ともに「8.63」を取得する。従って、この場合は、バージョンに差がないと判定されることになる。
S903の判定において、バージョンに差がある場合(S903でYES)、S904で、コントロール部203は、より新しいバージョンのレンダリング部で処理することを決定する。より具体的には、内部レンダリング部216のバージョンがより新しい場合は、処理対象のグループを内部レンダリング部216で処理することを決定する。一方、外部レンダリング部204のバージョンがより新しい場合は、処理対象のグループを外部レンダリング部204で処理することを決定する。処理に使用するレンダリング部を決定した後は、S901のループ処理に戻り、次のグループの処理に移行する。
一方、バージョンに差がない場合(S903でNO)、S905で、コントロール部203は、処理対象のグループに属するページの平均サイズを算出し、その平均サイズが所定閾値以上であるか否かを判定する。図5の例の場合、この平均サイズとは、グループに属する各ページのサイズにおける平均サイズを算出し、例えば、データサイズ(Byte)で表現される。平均サイズが所定閾値以上である場合(S905でYES)、S906で、コントロール部203は、処理対象のグループを内部レンダリング部216で処理することを決定する。また、コントロール部203は、この処理に使用するレンダリング部についての情報をレンダリング管理部209において管理する。
一方、平均サイズが所定閾値未満である場合(S905でNO)、S907で、コントロール部203は、処理対象のグループを外部レンダリング部204で処理することを決定する。また、コントロール部203は、この処理に使用するレンダリング部についての情報をレンダリング管理部209において管理する。処理に使用するレンダリング部を決定した後は、S901のループ処理に戻り、変数gの値を1インクリメントして、次のグループの処理に移行する。
S902の判定において、同一のレンダリング部で処理する必要がない場合(S902でNO)、S908で、コントロール部203は、処理対象のグループに含まれる全てのページに対してループ処理を実行する。このループ処理を実行するにあたり、処理済のページの数を計数するための変数pに0を設定する。また、ループ処理が完了する毎に、変数pの値と、処理対象のページの総数とを比較し、変数pの値が、ページの総数を超えたら処理を終了する。
S909で、コントロール部203は、処理対象のページが、処理対象のグループ以外の他のグループにも属していて、その他のグループとして処理するか否かを判定する。図5(b)を例にとって説明すると、Graphic Artグループ402に含まれるPage3は、フォントデータグループ401にもGraphic Artグループ402にも含まれている。図9に示す割り振り結果から、Graphic Artグループ402は同一のグループでなくてもよく、フォントデータグループ401は同一のレンダリング部で処理することがわかる。従って、Page3はGraphic Artグループ402ではなくフォントデータグループ401として処理することを決定する。
S909において、他のグループとして処理する場合(S909でYES)、S908のループ処理に戻る。一方、他のグループとして処理しない場合(S909でNO)、S910で、コントロール部203は、処理対象のページのサイズが所定閾値以上であるか否かを判定する。サイズが所定閾値以上である場合(S910でYES)、S911で、コントロール部203は、処理対象のページを内部レンダリング部216で処理することを決定する。また、コントロール部203は、この処理に使用するレンダリング部についての情報をレンダリング管理部209において管理する。
一方、サイズが所定閾値未満である場合(S910でNO)、S912で、コントロール部203は、処理対象のページを外部レンダリング部204で処理することを決定する。また、コントロール部203は、この処理に使用するレンダリング部についての情報をレンダリング管理部209において管理する。処理に使用するレンダリング部で決定した後は、S908のループ処理に戻り、変数pの値を1インクリメントして、次のページの処理に移行する。
S908のループ処理を経て、全ページの処理を終了したら、S901のループ処理に戻り、変数pの値を1インクリメントして、次のグループの処理に移行する。
このように、実施形態1では、グループを処理する機能のバージョンがより新しいレンダリング部で、グループを処理することを決定する。これは、バージョンが新しい方がより高品質の出力を行えるものと想定されるからである。即ち、この構成により、処理対象のグループは、より性能の高いレンダリング部で処理されるように決定することができる。また、グループ及びページのそれぞれのサイズが所定閾値以上である場合は内部レンダリング部216で処理することを決定し、所定閾値未満である場合は外部レンダリング部204で処理することを決定する。これは処理対象のページやグループのサイズが大きい場合、外部レンダリング部にページを送信する際の通信コストがかかるためである。この構成により、処理対象のグループをより高速に処理をすることができる。
他の選択肢として、安定性を重視してバージョンの古い方に優先して処理させるようにしてもよいし、ジョブデータの種類、例えば、写真印刷であるかアルバム印刷であるかどうか等に基づいて、特定の設定を施したレンダリング部で処理することを決定するようにしても良い。また、実施形態1では、外部レンダリング部204が1つの場合を例に挙げて説明しているが、複数の外部レンダリング部を使用することもあり得る。その場合も、レンダリング部の間でそれぞれのバージョンの新旧や通信距離の長さ等の条件に従って、処理に使用する外部レンダリング部を選択し、決定する。
尚、Page3のようにあるPageが2つ以上のグループに属しており、且つ、各グループで使用する機能がいずれもレンダリング部毎に出力差異がある場合、2つ以上のグループは同じレンダリング部で処理するように決定する。
図11は図3のS124の詳細を示すフローチャートであり、決定したレンダリング部に処理の実行を指示する処理である。
S101で、コントロール部203は、レンダリング管理部209において、分割ジョブデータを内部レンダリング部216で処理するか外部レンダリング部204で処理するかを指示するかを図9の処理結果に従って決定する。内部レンダリング部216で処理する場合(S101でYES)、S102で、コントロール部203は、内部レンダリング部216に処理の実行を指示する。
一方、外部レンダリング部204で処理する場合(S101でNO)、S103で、コントロール部203は、外部レンダリング部204に分割ジョブデータを送信する。その後、S104で、コントロール部203は、外部レンダリング部204でレンダリングによって得られるビットマップデータを受信する。
S105で、コントロール部203は、レンダリング部によるレンダリングによって得られるビットマップデータをスプール部211に格納する。内部レンダリング部216でレンダリングした場合は、通信が発生しないため直接、内部レンダリング部216がスプール部211にビットマップデータを格納する。一方、外部レンダリング部204でレンダリングした場合は、コントロール部203が、通信部210を介してS104で受信したビットマップデータをスプール部211に格納する。
次に、プリンタエンジン部206の処理について図12のフローチャートを用いて説明する。
まず、S111で、プリンタエンジン部206は、コントロール部203からビットマップデータを受信する。S112で、プリンタエンジン部206は、受信したビットマップデータに対して色変換処理を行う。色変換処理とは、ビットマップデータを、プリンタエンジン部206の扱う色空間である、例えば、CMYK色空間のデータに変換し、更に必要に応じて2値化処理を行うことである。S113で、プリンタエンジン部206は、色変換処理後のデータを印刷ユニットへ送信して、そのデータに基づく画像をシート上に印刷する。
以上説明したように、実施形態1によれば、1つの印刷ジョブを複数の描画装置で処理することにより、各印刷ジョブの処理の高速化を実現することができる。さらに、複数の描画装置(レンダリング部)の処理内容の差を管理し、描画装置によって処理結果に差が出ないようにジョブデータを分割して描画装置に割り振る。その結果、同一の文字や画像がページ間で同一の印刷結果となる印刷物を提供することができる。
<実施形態2>
実施形態2では、外部レンダリング部204が2つ、それぞれ外部レンダリング部1と外部レンダリング部2がある場合の構成について説明する。その他の構成は実施形態1と同じであるため説明を省略する。
実施形態2は、実施形態1の図3のS123の処理内容(レンダリング部の決定方法)が異なる。そこで、実施形態2における図3のS123の処理にについて、図8を用いて詳細に説明する。尚、実施形態2の構成の場合、レンダリング管理部209は、図13に示すような画像処理機能リストを各レンダリング部に対して管理している。
S801で、コントロール部203は、レンダリング管理部209が管理する内部レンダリング部216と外部レンダリング部204(外部レンダリング部1と外部レンダリング部2)のそれぞれの画像処理機能を参照し、それぞれのレンダリング部の機能に差異があるかどうかを分析する。そして、この分析結果を、レンダリング管理部209で管理する。
S801では、レンダリング管理部209は、例えば、図13に示すようなレンダリング部の機能一覧を比較し、それぞれのレンダリング部で出力に差異があるかどうかを分析する。図13では、レンダリング管理部209は、内部レンダリング部216の画像処理機能リスト131と、外部レンダリング部204である外部レンダリング部1の画像処理リスト132と、外部レンダリング部2の画像処理機能リスト133とを管理している。図13を例にとって説明すると、PDLレンダラ、コーデックに関しては全てのレンダリング部で名称もバージョンも同一であるため、出力は同一であると判断する。フォントエンジンは外部レンダリング部1と外部レンダリング部2で同一の出力であるが、内部レンダリング部とは異なる出力であると判断する。赤目補正は内部レンダリング部と外部レンダリング部1で同一の出力であるが、外部レンダリング部2とは異なる出力であると判断する。細線設定は全てのレンダリング部で設定値が異なるため、全てのレンダリング部で出力に差異があると判断する。
図8のS802の処理は、実施形態1と同様のため説明を割愛する。
S803で、コントロール部203は、レンダリング管理部209において、分割ジョブデータをレンダリング部に依頼する単位に分割する。ここで、図8のように、ページ単位で、分割ジョブデータの各グループがレンダリング部の各機能と関連付けられ、また、図13のように、各レンダリング部の画像処理機能リストが管理されている場合に、S803の処理によって図14に示す割り振り結果が得られることを例にとって説明する。
ページ単位の分割ジョブデータのグループの内、フォントデータグループ401は、外部レンダリング部1と外部レンダリング部2に分散させて並行して処理を依頼することができる。Graphic Artグループ402は、全てのページを異なるレンダリング部に処理を依頼して構わない。但し、フォントデータグループ401にもGraphic Artグループ402にも属するPage3に関しては、より分散範囲が厳しいフォントデータグループ401の分析を優先する。顔を含む画像グループ403は、赤目補正機能の分析結果から内部レンダリング部と外部レンダリング部1に分散させて並行して処理を依頼することができる。CADグループ404は、全てのレンダリング部で処理結果に差異があるため、同一のレンダリング部に処理を依頼することを決定する。
最後に、S804で、コントロール部203は、各グループ及び各グループに含まれるデータ(例えば、ページ)に処理を依頼(処理を指示)するレンダリング部を決定する。この処理の詳細を図15を用いて説明する。
図15は図6のS804の詳細を示すフローチャートであり、分割ジョブデータを割り振るレンダリング部を決定する処理である。ここでは、図5(a)に示す複数ページからなる分割ジョブデータを、図5(b)のように、グループ化した場合を例にとって説明する。尚、図15は、実施形態1の図10の応用例であり、共通の処理内容については適宜割愛する。
まず、S1501で、コントロール部203は、各レンダリング部N(Nは、画像形成装置が備えるレンダリング部(内部レンダリング部216及び外部レンダリング部204)の数)それぞれで処理するページ数PageNum[N]を定義する。S1502で、コントロール部203は、全てのグループに対してループ処理を実行するための初期設定を行う。尚、このS1502は、図10のS901に対応する。
S1503で、コントロール部203は、処理対象のグループに対して、図14に示す図14の割り振り結果から、そのグループに属するページの処理を複数のレンダリング部に分散可能であるか否かを判定する。換言すれば、同一のレンダリング部でレンダリングする必要がないか判定する。
分散可能でない場合(S1503でNO)、即ち、同一のレンダリング部でレンダリングする必要がある場合、S1504で、コントロール部203は、処理対象のグループに属するページの平均サイズを算出し、その平均サイズが所定閾値以上であるか否かを判定する。
尚、分散可能でない場合とは、例えば、図14に示す割り振り結果から、図5のCADグループ404は、細線設定が全てのレンダリング部で異なることから、分散可能でないと判定される。
平均サイズが所定閾値以上である場合(S1504でYES)、S1505で、コントロール部203は、処理対象のグループを内部レンダリング部216で処理することを決定する。S1506で、コントロール部203は、内部レンダリング部216に対するページ数PageNumの値を、そのグループに属するページ数分インクリメントする。
一方、平均サイズが所定閾値未満である場合(S1504でNO)、S1507で、コントロール部203は、処理対象のグループを、外部レンダリング部の内、ページ数PageNumの値が一番少ないレンダリング部Mで処理することを決定する。S1508で、コントロール部203は、そのレンダリング部Mに対するページ数PageNumの値を、そのグループに属するページ数分インクリメントする。処理に使用するレンダリング部を決定した後は、S1502のループ処理に戻り、変数gの値を1インクリメントして、次のグループの処理に移行する。
S1503において、分散可能である場合(S1503でYES)、即ち、同一のレンダリング部でレンダリングする必要がない場合、S1509で、コントロール部203は、処理対象のグループに含まれる全てのページに対してループ処理を実行する。尚、このS1503は、図10のS908に対応する。出力差異が無いレンダリング部が2以上ある場合、即ち、図14に示す割り振り結果で2以上の○がある場合、分散可能であると判断する。例えば、図14に示す割り振り結果を例にとると、フォントデータグループ401、Graphic Artグループ402、顔を含む画像グループ403は分散可能であると判定される。
S1510で、コントロール部203は、処理対象のページが、処理対象のグループ以外の他のグループにも属していて、その他のグループとして処理するか否かを判定する。尚、このS1510は、図10のS909に対応する。
他のグループとして処理する場合(S1510でYES)、S1509のループ処理に戻る。一方、他のグループとして処理しない場合(S1510でNO)、S1511で、コントロール部203は、処理対象のグループに属するページの処理を内部レンダリング部216と外部レンダリング部204に分散可能であるか否かを判定する。分散可能である場合(S1511でYES)、S1514で、コントロール部203は、処理対象のページのサイズが所定閾値以上であるか否かを判定する。サイズが所定閾値以上である場合(S1514でYES)、S1515で、コントロール部203は、処理対象のページを内部レンダリング部216で処理することを決定する。また、コントロール部203は、この処理に使用するレンダリング部についての情報をレンダリング管理部209において管理する。
ここで、例えば、図14に示す割り振り結果を例にとると、Graphic Artグループ402、顔を含む画像グループ403は、内部レンダリング部216と外部レンダリング部204で分散可能であると判定される。
サイズが所定閾値以上である場合(S1515でYES)、S1515で、コントロール部203は、処理対象のページを内部レンダリング部216で処理することを決定する。S1516で、コントロール部203は、内部レンダリング部216に対するページ数PageNumを1インクリメントする。
一方、サイズが所定閾値未満である場合(S1515でNO)、もしくは、分散可能でない場合(S1511でNO)、S1512で、コントロール部203は、処理対象のページを、外部レンダリング部の内、ページ数PageNumが一番少ないレンダリング部Mで処理することを決定する。S1513で、コントロール部203は、そのレンダリング部Mに対するページ数PageNumを1インクリメントする。ここで、内部レンダリング部216と外部レンダリング部204で分散可能でない場合とは、図14に示す割り振り結果を例にとると、フォントデータグループ401が相当し、内部レンダリング部216と外部レンダリング部204で出力に差があるので、分散可能でないと判定される。処理に使用するレンダリング部を決定した後は、S1509のループ処理に戻り、変数pの値を1インクリメントして、次のページの処理に移行する。
S1509のループ処理を経て、全ページの処理を終了したら、S1502のループ処理に戻り、変数pの値を1インクリメントして、次のグループの処理に移行する。
以上説明したように、実施形態2によれば、1つの印刷ジョブを複数の描画装置で処理することにより、各印刷ジョブの処理の高速化を実現することができる。さらに、複数の描画装置(レンダリング部)の処理内容の差を管理し、描画装置によって処理結果に差が出ないようにジョブデータを分割して描画装置に割り振る。その結果、同一の文字や画像がページ間で同一の印刷結果となる印刷物を提供することができる。
また、実施形態2では、グループ及びそれに属するページの処理を、内部レンダリング部と外部レンダリング部で分散できる場合は、グループ及びページをそのサイズが所定閾値以上である場合は内部レンダリング部216で処理することを決定し、所定閾値未満である場合、外部レンダリング部204で処理することを決定している。これはサイズが大きいと外部レンダリング部に通信する際に通信コストがかかるためである。この構成により、処理対象のグループをより高速に処理をすることができる。
尚、ここでは、外部レンダリング部1と2の間の通信コストは同一であると想定している。また、複数の外部レンダリング部に処理を分散可能である場合は、処理するページ数が少ない(処理負荷が一番小さい)外部レンダリング部に処理を割り振ることを決定している。
また、複数の外部レンダリング部に処理を分散可能である場合において、処理するページ数が少ない外部レンダリング部に処理を割り振るのではなく、各外部レンダリング部の処理負荷の比率に応じて、各外部レンダリング部に処理を割り振るようにしても良い。
以上説明したように、実施形態2によれば、実施形態1で説明した効果に加えて、複数の外部の描画装置(レンダリング部)を効率的に使用して、かつ良好な印刷結果を高速に提供することができる。
上述した実施形態では、内部レンダリング部で処理するか外部レンダリング部で処理するかを、グループ及びページのそれぞれのサイズが所定の閾値以上であるか否かの判断に基づいて決定したが、これに限定されるものではない。例えば、1つのジョブデータに含まれる複数の分割ジョブデータの処理の割当てに応じて、レンダリング部が選択されるようにしてもよい。より具体的には、例えば、割当てられているページ数が少ないレンダリング部が選択されるようにしてもよいし、割当てられているデータ量が少ないレンダリング部が選択されるようにしてもよいし、レンダリング部のメモリの空き容量が大きいレンダリング部が選択されるようにしてもよい。これにより、1つの印刷ジョブをより高速に処理をすることができる。
また、レンダリング部の決定方法は、上述したものに限定されるものではない。例えば、実施形態1では、S903においてバージョンに差があるか否かを判定したが、例えば、使用する機能毎に優先的に使用するレンダリング部を予め設定しておき、その設定に基づいて決定してもよい。
尚、以上の実施形態の機能は以下の構成によっても実現することができる。つまり、本実施形態の処理を行うためのプログラムコードをシステムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)がプログラムコードを実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することとなり、またそのプログラムコードを記憶した記憶媒体も本実施形態の機能を実現することになる。
また、本実施形態の機能を実現するためのプログラムコードを、1つのコンピュータ(CPU、MPU)で実行する場合であってもよいし、複数のコンピュータが協働することによって実行する場合であってもよい。さらに、プログラムコードをコンピュータが実行する場合であってもよいし、プログラムコードの機能を実現するための回路等のハードウェアを設けてもよい。またはプログラムコードの一部をハードウェアで実現し、残りの部分をコンピュータが実行する場合であってもよい。また、CPUも1つのCPUで全ての処理を行うものに限らず、複数のCPUが適宜連携をしながら処理を行うものとしてもよい。