図1を参照して、本実施形態の印刷システムの構成の一例を説明する。
この印刷システムは、コントローラ100とプリントエンジン200を含む。
コントローラ100は、パーソナルコンピュータ(PC)等のクライアント装置から入力されるジョブすなわちPDL(Page Description Language:ページ記述言語)データを印刷可能データに変換する。この変換処理をRIP処理と呼ぶ。印刷可能データは、RIP処理を担う装置(図1ではコントローラ100のRIP処理部110)の後段にある印刷のための処理を行う装置(例えばプリントエンジン200)が取扱可能な形式のデータのことである。本実施形態の方式にとっては、印刷可能データのデータ形式は、ラスター形式でもよいし、PDL形式とラスター形式の中間の中間データ形式であってもよい。またコントローラ100は、印刷可能データを(必要に応じてRIP処理部110とプリントエンジン200の間で何らかの処理を施した上で)プリントエンジン200に渡し、プリントエンジン200を制御してその印刷可能データを用紙等の媒体に印刷させる。
コントローラ100には、印刷システムのUI(ユーザインタフェース)を提供するUI装置300が接続されている。UI装置300は、コントローラ100に対してLAN(ローカルエリアネットワーク)等のネットワークを介して接続されたPC(例えば、印刷システムに印刷を指示したクライアントPC)であってもよいし、ケーブル等で直接接続されたタッチパネル表示装置等の装置であってもよい。
プリントエンジン200は、コントローラ100から受け取った印刷可能データが表す画像を媒体上に印刷する。
コントローラ100について、更に詳しく説明する。コントローラ100は、ジョブ入力部102、ジョブ管理部104、RIP制御部106、RIP処理部110、印刷データ管理部120及びUI制御部130を含む。
ジョブ入力部102は、クライアント装置からPDLデータ(以下「ジョブ」とも呼ぶ)を受け取り、そのPDLデータをジョブ管理部104に登録する。
ジョブ管理部104は、入力されたジョブを管理する。ジョブの管理には、例えば、待ち行列や優先度等に基づくジョブの実行順序の管理や、一度印刷したジョブの再印刷の管理等が含まれる。ジョブ管理部104は、待ち行列内のジョブの実行タイミングが来ると、そのジョブをRIP(Raster Image Processor)制御部106に渡してRIPを実行させる。
RIP制御部106は、ジョブのRIP処理を制御する。RIP処理とは、ジョブ(PDLデータ)を印刷可能データに変換する処理である。より詳しくは、RIP制御部106は、1以上のRIP処理部110を制御し、それら1以上のRIP処理部110にRIP処理を実行させる。コントローラ100がRIP処理部110を複数有する場合、RIP制御部106は、それら複数のRIP処理部110に対して1つのジョブを並列にRIP処理させることもできる。この場合、RIP制御部106は、各RIP処理部110に対して、ジョブ中で当該RIP制御部106が担当するページの割り当てを行う。この割り当ては、RIP制御部106からトップダウンの形(例えば2つのRIP処理部110の一方には奇数ページを他方には偶数ページを割り当てる等)で行ってもよいし、各RIP処理部110が1ページのRIP処理を実行するごとにRIP制御部106に次のページの割り当てを要求するといったボトムアップの形でもよい。またRIP制御部106は、各RIP処理部110に対して、割り当てたページのRIPのために必要なPDLデータを渡す。1ページ分のPDL記述のみでそのページのRIPが可能なページ独立のPDLで記述されたジョブの場合は、割り当てたページのPDLデータのみを割当先のRIP処理部110に渡せばよいし、そうでないページ非独立のPDLで記述されたジョブの場合は、ジョブのPDLデータ全部を各RIP処理部110に渡せばよい。なお、複数のRIP処理部110による並列のRIP処理の単位はページ毎に限らない。例えば、1つのページを副走査方向に複数に分けたバンドごと等、別の単位での並列処理であってもよい。
RIP処理部110は、PDL制御部106からRIP処理の実行を指示されたページ等の単位についてのRIP処理を実行し、その単位についての印刷可能データを生成し、印刷データ管理部120に渡す。RIP処理部110が生成する印刷可能データとしてラスター形式及び中間データ形式のいずれの形式を用いるかは、後段のプリントエンジン200がいずれの形式に対応しているかによる。図1を含め、以下の説明では、説明を簡素化するために、RIP処理部110が生成する印刷可能データがラスターデータである場合を例にとって説明する。また同様の趣旨から、以下では、複数のRIP処理部110が並列処理を実行する場合の並列の単位がページである場合を例にとって説明する。
RIP処理部110は、割り当てられたページのPDLデータを解釈し、例えばシアン(C)、マゼンタ(M)、イエロー(Y)、黒(K)の4原色の各版のラスターデータを生成し、対応する各版のラスターバッファ116に書き込んでいく。あくまで一例であるが、各版のラスターバッファ116はそれぞれ、1画素の濃度値を8ビットで表現する。また、CMYKの4色版を用いるのもあくまで一例に過ぎない。
またRIP処理部110は、CMYKの各色版のラスターデータを生成するのに伴い、タグ版に対してキャッシュデータの再利用の記録のための情報を書き込んで行く(詳細は後述)。タグ版(Tag)は、CMYKの各色版とは別に用意された版(ラスターバッファ116)であり、何らかの制御のために利用される。本実施形態では、タグ版をキャッシュデータの再利用状況の記録に用いる。このタグ版への書き込みの処理や、生成されたタグ版データの利用については、後で詳しく説明する。
RIP処理部110は、ジョブの中に現れる繰り返し印刷されるオブジェクトのRIP結果の印刷可能データ(この例ではラスターデータ)をキャッシュして再利用することで、同じ画像を表すオブジェクトを何度もRIPすることによる処理時間の無駄を低減する。キャッシュデータ管理部112は、キャッシュ対象であるオブジェクトのRIP結果のデータ(以下キャッシュデータと呼ぶ)を再利用のために保持する手段である。キャッシュデータ管理部112は、例えば、コントローラ100のメインメモリ上に確保されたキャッシュデータ格納用の領域に、各オブジェクトのキャッシュデータを格納する。
またRIP処理部110は、キャッシュデータの再利用の管理のために、オブジェクト管理テーブル114に対して情報を書き込み、またそのテーブル114の情報を参照する。
RIP処理部110は、ラスターバッファ116群に書き込んだ各版のラスターデータを印刷データ管理部120に渡す。印刷データ管理部120は、受け取った各版のラスターデータを(例えば圧縮した上で)保存する。そして、印刷データ管理部120は、プリントエンジン200の印刷処理の進行に合わせて、保存したラスターデータを(圧縮されている場合は展開した上で)プリントエンジン200に供給する。
UI制御部130は、UI装置300に表示させる画面を生成したり、その画面に関連してユーザがUI装置300に入力した指示やデータを取得してジョブ管理部104に伝えたりする。
以下、具体例として、図2に示す2ページ物の請求書のバリアブル印刷のジョブを図1の印刷システムで実行する場合を考える。
図2に示す請求書は、第1ページ400と第2ページ402からなる。
第1ページ400は、再利用可能なオブジェクトとして、表罫線や枠線、文書タイトル(「請求書」)等を含んだ第1フォーム(定型データ)410と、2つの写真412及び414(図では「写真1」及び「写真2」と表記)を含んでいる。これら3つの再利用可能なオブジェクトは、同じバリアブル印刷のジョブの中で印刷される複数の請求書に繰り返し利用される。また第1ページ400は、個々の請求書ごとに個別のオブジェクトとして、請求書番号(図では「No.1」と表記)、住所及び氏名(図では「住所1氏名1」と表記)、請求金額(図では「金額1」と表記)、及び表罫線内の個別請求費目の項目名及び金額(図示は省略)を含んでいる。これら請求書ごとに個別のオブジェクトは、請求書ごとに値が変わる。
第2ページ402は、再利用可能なオブジェクトとして、ページ下方の罫線群を表す第2フォーム416と、1つの写真418(図では「写真A」と表記)とを含んでいる。また第2ページは、請求書ごとに個別のオブジェクトとして、フォーム2の罫線に沿って記載される請求書宛先ごとのメッセージ(図示省略)を含む。
請求書ごとに個別のオブジェクトは、このRIP処理部110が請求印刷ジョブを実行する際に、指定された請求書データベースから読み出し、第1フォーム410や第2フォーム416、写真412、414及び418等の再利用可能オブジェクトと組み合わせることで、第1ページ400及び第2ページ402を生成する。
図3に、このジョブを実行した場合に生成される印刷結果を模式的に示す。図示のように、請求書番号、住所及び氏名、金額等の個別の情報のみが請求書ごとに差し替えられた2ページ物の請求書が順に印刷される。図示例では、第1フォーム410、写真412及び414、第2フォーム416及び写真418はすべての請求書に印刷される。
次に、図4を参照して、オブジェクト管理テーブル114のデータ内容を例示する。
図示のように、オブジェクト管理テーブル114には、管理対象のオブジェクトごとに、オブジェクトID、オブジェクト名、種別、識別コード、文書ID、キャッシュデータのアドレス、キャッシュデータのサイズ、使用回数、キャッシュ使用ページ番号、及びキャッシュ未使用ページ番号が記録される。
オブジェクト管理テーブル114に記録される管理対象のオブジェクトは、ジョブに含まれるオブジェクトのうち、再利用可能なオブジェクトである。再利用可能なオブジェクトは、再利用可能なものとして予め定められたいくつかの種類のオブジェクトである。例えばPDLとしてPostScript(登録商標)を用いる場合、フォームオブジェクトの描画を指示するコマンド「execform」により記述されるオブジェクトが再利用可能なオブジェクトの例である。またPDLとしてPDF(Portable Document Format)を用いる場合、「ImageXObject」というイメージ(ラスター画像)の外部オブジェクトや、フォームのオブジェクトなどが再利用可能オブジェクトの例である。一般に、写真等のラスター画像、及び、線画や文字列からなるフォーム等が、再利用可能オブジェクトとして取り扱われる。
オブジェクト管理テーブル114において、「オブジェクトID」は、オブジェクト管理テーブル114に登録された個々のオブジェクトの識別情報である。オブジェクトIDは、RIP処理部110が付与する。
「オブジェクト名」は、ジョブ中でのそのオブジェクトの識別情報であり、ユーザーへ提示するときに用いる。例えばPDF形式のジョブに含まれるImageXObject形式のオブジェクトを描画する場合には、その形式のオブジェクトには識別名が付けられており、この識別名に”I_”を加えた文字列をオブジェクト名として用いる。なお、RIP処理部110は、ジョブのPDLデータの各行を順に処理し、その処理に応じてRIP処理部110が持つ内部状態変数(例えばPostScriptのグラフィック状態)を変化させ、その内部状態変数に応じてPDLデータ内の描画コマンドを処理していくことで、ラスター画像を生成する。したがって、同じオブジェクト名のオブジェクトでも、そのオブジェクトを描画する際のRIP処理部110の内部状態変数が異なれば、描画されるラスター画像も異なってくる。したがって、PDL上では同じオブジェクト(すなわちオブジェクト名が同一)であっても、描画時の内部状態変数が異なる場合は、オブジェクト管理テーブル114上では異なるオブジェクト(すなわちオブジェクトIDが異なる)として取り扱う。
「種別」は、当該再利用可能オブジェクトの種別を示す。図示例では、「Image」(写真等のラスター画像)と「Form」(フォーム)の2つの種別を示しているが、他の種別があってもよい。
「識別コード」は、当該オブジェクトのコンテンツ情報と、これを描画する際のRIP処理部110の内部状態変数と、の組合せに基づいて生成される、描画された当該オブジェクトの識別情報である。例えば、オブジェクトのコンテンツ情報と内部状態変数群とをマージしたデータ列のハッシュ値を識別コードとして用いてもよい。コンテンツ情報には、例えばオブジェクトが含むフォーム辞書やイメージ辞書、オブジェクトのサイズ情報等が含まれる。また、図示は省略したが、識別コードの生成に用いた内部状態変数群を、オブジェクトを特定するキー情報としてオブジェクト管理テーブル114に登録してもよい。なお、内部状態変数には、例えば、座標変換行列、様々な描画属性(線幅、ラインキャップ、ラインジョイン等)、クリップ情報(画像の一部分をクリップ(切り抜き)して印刷する場合の、その部分を規定するパスやマスク等)、カラー情報等がある。
「文書ID」は、当該オブジェクトが含まれる文書(PDLデータ)のIDである。同じジョブに含まれるオブジェクトについては、文書IDは同じ値となる。
「キャッシュデータのアドレス」は、当該オブジェクトのRIP結果(キャッシュデータ)をキャッシュデータ管理部112に格納した場合の、RIP結果の格納先アドレスである。
「キャッシュデータのサイズ」は、当該オブジェクトのキャッシュデータのデータサイズである。
「使用回数」は、当該オブジェクトのキャッシュデータが使用された回数を示す。
「キャッシュ使用ページ番号」は、ジョブの処理結果のページのうち、当該オブジェクトのキャッシュデータが使用されたページの番号のリストである。
「キャッシュ未使用ページ番号」は、ジョブの処理結果のページのうち、当該オブジェクトのキャッシュデータが使用されなかったページの番号のリストである。
なお、図4に例示したオブジェクト管理テーブル114の項目群はあくまで一例に過ぎない。例えばこのほかに、当該オブジェクトの描画領域のサイズ(画素数)、座標、RIP処理に要した時間等といった他の項目をオブジェクト管理テーブル114に記録してもよい。
次に図5及び図6を参照して、タグ版について説明する。
図5は、タグ版の1画素についてのデータのビット割当の例を示す。タグ版の1画素は、ビット0〜7の8ビットで構成されている。その8ビットのうちビット0〜2の3ビットは、オブジェクト種別を示す。各オブジェクト種別のビット列表現の例を図6に示す。例えば文字オブジェクト内の画素のオブジェクト種別は「010」と表される。ビット3〜4の2ビットはカラー情報(RGB、CMYKなどのカラースペースの情報)を示す。またビット5はその画素が特色か否かを示す。特色は、CMYK等のプロセス色ではない、特別な色名で表される色である。ビット6はこの例では未使用である。そして、最後のビット7が、その画素の描画にキャッシュデータを再利用したか否かを示す。
次に図7を参照して、RIP処理部110の処理手順を例示する。
RIP処理部110は、割り当てられたページのPDLデータを先頭から順に解析していく(S10)。この解析の中で、オブジェクトを検知するごとに、そのオブジェクトが再利用可能オブジェクトに該当するか否かを判定する(S12)。検知したオブジェクトが再利用可能なオブジェクトに該当しない場合、RIP処理部110は、そのオブジェクトを描画する(S14)。すなわち、そのオブジェクトのPDL記述を解釈し、その結果得られたそのオブジェクトの各画素の値をCMYKの各版のラスターバッファ116に書き込む。例えば、住所や氏名等の請求書ごとに変わる文字列のオブジェクトは、再利用可能オブジェクトではないので、S12の判定結果はNoとなり、S14でそのオブジェクトが描画される。
S14の後、RIP処理部110は、ジョブの最後までの処理が完了したかどうかを判定し(S34)、完了していない場合はS10に戻って次のオブジェクトを解析する。
S12で、検知したオブオブジェクトが再利用可能オブジェクトである場合、RIP処理部110は、そのオブジェクトがオブジェクト管理テーブル114に登録済であるかどうかを判定する(S16)。この判定処理では、例えば、そのオブジェクトのオブジェクトコンテンツ情報、及びRIP処理部110の内部状態変数から識別コードを生成し、その識別コードと同じ識別コードを持つエントリがオブジェクト管理テーブル114にあれば、S16の判定結果Yesとなり、そうでなければNoとなる。S16の判定結果がNoの場合、RIP処理部110は、そのオブジェクトを描画する(S18)と共に、オブジェクト管理テーブル114にそのオブジェクトのエントリを作成し、そのオブジェクトについての各項目の情報を登録する(S20)。なお、この時点では、まだそのオブジェクトについてのキャッシュデータをキャッシュデータ管理部112に登録していない。したがって、この時点でオブジェクト管理テーブル114に登録されるのは、図4に例示した項目のうち、オブジェクトID、オブジェクト名、種別、識別コード、文書ID、及びキャッシュ未使用ページ番号である。キャッシュ未使用ページ番号の項目には、このオブジェクトを含んでいるページの番号を追加する。このオブジェクトについては、この時点ではまだキャッシュデータを生成していないので、このオブジェクトについてキャッシュ未使用ページ番号にこのオブジェクトを含むページを追加するのである。
このように、図7の手順では、再利用可能なオブジェクトを最初に検知した時点では、まだキャッシュデータをキャッシュデータ管理部112に登録することはしない。これは、実際のジョブでは、再利用可能な種類のオブジェクトであってもジョブ中で1回しか使用されない、すなわち再利用されない場合が多いからである。キャッシュデータを作成し、キャッシュデータ管理部112に登録する処理にはある程度の時間とキャッシュデータ記憶用のメモリ容量を要するので、これら時間と容量の無駄遣いを避けるため、再利用可能オブジェクトの初出の時点ではキャッシュをしないのである。
S20の後、RIP処理部110は、ジョブの最後までの処理が完了したかどうかを判定し(S34)、完了していない場合はS10に戻って次のオブジェクトを解析する。
識別コードが同じ再利用可能オブジェクトの2回目以降の出現で、S16の判定結果はYesとなる。S16の判定結果がYes(そのオブジェクトが登録済)である場合、RIP処理部110は、そのオブジェクトのキャッシュデータが作成済み(すなわちキャッシュデータ管理部112に登録済)かどうかを判定する(S22)。オブジェクト管理テーブル114のキャッシュデータのアドレス及びデータサイズの項目に値が登録済であれば、S22の判定結果はYesとなり、そうでなければNoとなる。識別コードが同じ再利用可能オブジェクトが2回目に出現した時点では、まだそのオブジェクトのキャッシュデータは作成されていないので、S22の判定はNoとなる。
S22の判定結果がNo(キャッシュデータ未作成)の場合、RIP処理部110は、そのオブジェクトを描画すると共に、その描画結果のラスターデータをキャッシュデータ管理部112に登録する(S24)。そして、オブジェクト管理テーブル114におけるそのオブジェクトのエントリの更新を行う(S26)。すなわち、キャッシュデータ管理部112に登録したラスターデータ(キャッシュデータ)の格納先アドレス及びデータサイズを、オブジェクト管理テーブル114における当該オブジェクトの「キャッシュデータのアドレス」及び「キャッシュデータのサイズ」に記録する。また、そのオブジェクトのキャッシュデータの「使用回数」を1増加させると共に、「キャッシュ使用ページ番号」に、当該オブジェクトを含むページの番号を追加する。このオブジェクト自体は、PDLデータから描画したものであって、キャッシュデータを再利用したものではないが、キャッシュデータを作成して再利用の用意をしたという点で、キャッシュ使用ページ番号の一員に加えている。
S26の後、RIP処理部110は、ジョブの最後までの処理が完了したかどうかを判定し(S34)、完了していない場合はS10に戻って次のオブジェクトを解析する。
識別コードが同じ再利用可能オブジェクトの3回目以降の出現で、S22の判定結果はYesとなる。S22の判定結果がYesの場合、RIP処理部110は、そのオブジェクトのPDL記述を処理する代わりに、そのオブジェクトのキャッシュデータをキャッシュデータ管理部112から読み出してCMYK各版のラスターバッファ116群に書き込む(S28)。すなわち、RIP処理部110は、オブジェクト管理テーブル114のそのオブジェクトの「キャッシュデータのアドレス」が示すメモリ上のアドレスから、「キャッシュデータのサイズ」が示すデータサイズ分のデータを読み出し、そのデータをCMYKのラスターバッファ116に書き込む。このように、図7の手順では、ジョブの先頭から処理を行うなかで識別コードが同じ再利用可能オブジェクトが3回出現してはじめて、その再利用可能オブジェクトがキャッシュデータを利用して描画されることになる。
また、RIP処理部110は、タグ版のラスターバッファ116の画素群のうち、S28でキャッシュデータの書き込みを行った画素について、キャッシュ利用描画を表すビット7(図5参照)の値を「0」(キャッシュデータを利用しなかった)から「1」(キャッシュデータを利用した)にセットする(S30)。タグ版のビット7は、ジョブの開始時には全ての画素について「0」に初期化されており、一度でもキャッシュデータの再利用により描画された画素については値が「1」に変更される。
S30の後、RIP処理部110は、オブジェクト管理テーブル114を更新する(S32)。すなわち、オブジェクト管理テーブル114内のそのオブジェクトのキャッシュデータの「使用回数」を1増加させると共に、「キャッシュ使用ページ番号」に、当該オブジェクトを含むページの番号を追加する。
S32の後、RIP処理部110は、ジョブの最後までの処理が完了したかどうかを判定し(S34)、完了していない場合はS10に戻って次のオブジェクトを解析する。
以上の処理を繰り返した結果、S34でジョブの最後のページまで処理が完了したと判定した場合、RIP処理部110は、現在のジョブの実行モードが単一(シングル)ジョブモードが否かを判定する(S36)。単一ジョブモードとは、ジョブを実行した後そのジョブを再度印刷することがないモードである。この場合、ジョブの実行が完了すると、例えば、そのジョブのデータやそのジョブを実行する際に作成したキャッシュデータ等のデータは、削除される。単一ジョブモードでない場合、そのジョブのデータやそのジョブの実行時に作成したキャッシュデータ等のデータは再度の印刷に備えて保存される。単一ジョブモードか否かは、ジョブの実行開始時点でユーザがUI装置300から指定している。
S36の判定で現在のジョブの実行モードが単一ジョブモードであれば、RIP処理部110は、キャッシュデータ管理部112内の、当該ジョブの実行時に格納したキャッシュデータ群を削除し(S38)、一連の処理を終了する。このとき、オブジェクト管理テーブル114における当該ジョブ内のオブジェクトについてのエントリも削除する。
一方、単一ジョブモードでない場合、今回のジョブで作成したキャッシュデータを後のジョブで再利用する可能性があるため、S38をスキップして、一連の処理を終了する。この場合、そのジョブで作成したキャッシュデータ群及びオブジェクト管理テーブル114内のエントリは残る。ジョブの再印刷の際には、RIP処理部110は、オブジェクト管理テーブル114内の、再印刷するジョブの文書IDと同じ文書IDを持つエントリの中から、当該再印刷ジョブ内の各再印刷可能オブジェクトに対応するキャッシュデータを探せばよい。
図7は、オブジェクトのキャッシュデータの使用を記録することに焦点を当てたものであるため、タグ版に対する書き込みのステップとして、キャッシュデータの使用(S28)の後のS30のみを示している。しかし、当然ながら、タグ版の他のビット(例えば図5参照)は、キャッシュデータを使用したか否かによらずに決まる。したがって、図7では省略したが、RIP処理部110は、各描画ステップS14、S18、S24、S28の後に、描画したオブジェクトの属性に応じて、タグ版内のそのオブジェクトに該当する画素のビット群(図5の例ではビット0〜2、ビット3〜4、及びビット5)の値を書き込む。
以上、図7の処理手順について説明した。
図3に例示した請求書ジョブの第5及び第6ページについて、図7の処理により作成される各版の画像を図8に例示する。図8の上段は第5ページの各版を、下段は第6ページの各版を示している。また、図8に示すタグ版は、ビット7(キャッシュ再利用の有無)のみに着目して画像化したものである。
図7の手順では、オブジェクトの描画にキャッシュデータを用いた場合(S28)にのみ、タグ版のそのオブジェクトの画素のビット7を「1」にセットしたが、オブジェクトのキャッシュデータを作成した際(S24)にも、タグ版のそのオブジェクトの画素のビット7を「1」にセットする例も考えられる。この例は、キャッシュデータの作成も、キャッシュデータの使用と捉える考え方に従ったものである。
図7の手順では、タグ版の各画素のビット7(キャッシュ使用の有無)は、ジョブ中のその画素を含むオブジェクトの中に1つでもキャッシュデータを再利用したものがあれば、最終的に「1」(キャッシュデータを使用した)となる。したがって、このタグ版のビット7を見れば、どの画素がジョブ中でキャッシュデータを用いて描画されたかが分かる。
ただし、これはあくまで一例に過ぎない。この代わりに、キャッシュデータを使用して描画された画素に対して、その後で別のキャッシュデータを使用しないオブジェクトが上書きされる際に、タグ版のその画素のビット7を「0」にリセットしてもよい。この例では、RIP処理部110は、例えば図7の手順のS14の実行後に、S14で描画した画素群に対応するタグ版の画素群のビット7の値を「0」にリセットする。
図7の手順は、典型的には、ジョブを媒体に印刷する場合に実行される。また別の例として、媒体への印刷を行わずに図7の手順を実行し、その結果得られるジョブの各ページのRIP結果データを蓄積してもよい。蓄積したRIP結果データは、後でユーザからの指示に応じて媒体に印刷してもよい。また、ユーザは、例えばジョブの一部分(例えば先頭の予め定めたページ数)を指定して、その部分についての図7の手順の実行をUI装置300からコントローラ100に指示することもできる。
本実施形態では、ジョブ管理部104は、次に説明するキャッシュ利用状況の確認用画面の生成のために、図7の手順で生成された、ジョブの各ページのCMYKの各版及びタグ版のラスターデータを、そのジョブの識別情報(例えば図5に示した文書ID)に対応付けて保持する。なおジョブの全ページについてCMYK及びタグ版のラスターデータを保存すると、多大な記憶容量が必要となるので、予めユーザが指定したいくつかのページについてのみ、それら各版のラスターデータを保存するようにしてもよい。
UI制御部130は、ユーザからの要求に応じて、ジョブ管理部104に保持されたジョブの各ページのタグ版及びCMYKの各版を利用して、各ページについてのキャッシュ利用状況の分析のための確認用画面を生成し、UI装置300の画面に表示する。
図9に、UI制御部130が生成する確認用画面の一例を示す。この例は、図3に例示した請求書ジョブの第5及び第6ページについての確認用画面500を模式的に示す。この確認用画面500は、例えば、ユーザが、UI制御部130からUI装置300に表示されたメニュー画面(図示省略)から、キャッシュ利用状況分析のホーム画面を呼び出し、そのホーム画面にて表示対象のページとして第5及び第6ページを指定した場合の画面である(表示対象のジョブは別途指定されているものとする)。
図9の確認用画面500は、表示項目の選択欄502を含む。この選択欄502は、プルダウンメニューとして構成されており、プルダウンボタンを押下することで、表示項目の選択肢がメニュー表示される。図9の例では、それら表示項目の選択肢のうちデフォルトである「キャッシュ情報の表示」が選ばれた状態を示している。「キャッシュ情報の表示」は、表示対象として指定されたページ(図示例では第5及び第6ページ)のうちのキャッシュデータを用いて描画された部分を示す表示である。
図示例の「キャッシュ情報の表示」には、「キャッシュ描画部のみ」、「画像と重ねて表示」、「オブジェクト毎に色変更」、「リスト表示」という4つの表示モード504がある。図9の例は、この4つのモードのうち「キャッシュ描画部のみ」が選択された場合の確認用画面500を示している。このモードで表示される第5ページ510及び第6ページ512は、それら各ページのうちタグ版のビット7が「1」である画素のみを、キャッシュデータを用いて描画された領域として、予め設定された色で表示したものである。
図10に示す確認用画面500は、「画像と重ねて表示」モードが選択された場合の第5及び第6ページ514及び516を表示する。このモードでは、UI制御部130は、ジョブの第5及び第6ページについて、当該ページのCMYKの版から合成した表示用のラスター画像の上に、当該ページのタグ版のビット7が「1」の画素群を予め設定した色で上書きする。第5及び第6ページ514及び516は、このように生成された画像である。
「オブジェクト毎に色変更」モードを使用する場合、ユーザは、RIP処理を開始する前にUI装置300からその旨をジョブ管理部104に指定する。ジョブ管理部104は、その指定を受けると、ジョブの実行をはじめる際に、各RIP処理部110に対して「オブジェクト毎に色変更」モードでの処理を指示する。このモードが指示されたRIP処理部110は、RIP処理時に、タグ版の各画素の8ビットに対して、図11に示すビット割り当てでデータ書き込みを行う。図11のビット割り当ては、ビット6とビット0〜2の割り当てが、図5に例示した通常モードでのビット割り当てと異なる。すなわち、図11のビット割り当てでは、図5の例では未使用だったビット6をオン(「1」)にする。タグ版のビット6がオンの場合、「オブジェクト毎に色変更」モードであることを示す。そして、ビット0〜2は、図5の例ではオブジェクト種別を表していたが、図11の例では当該画素を含むオブジェクトのオブジェクトIDの下位3ビットを表す。すなわちこのモードでは、タグ版の画素のビット0〜2により、最大8個のオブジェクトを識別することができる。RIP処理部110は、RIP処理の際に、CMYKのラスターバッファ116へオブジェクトの描画を行うごとに、タグ版内のそのオブジェクトに含まれる各画素のビット0〜2に、そのオブジェクトIDの下位3ビットを書き込む。
確認用画面500(例えば図9参照)でユーザから「オブジェクト毎に色変更」モードが選択された場合、UI制御部130は、表示対象のページのタグ版の画素のビット6の値が「1」であり、かつビット7が「1」(キャッシュ利用)である場合に、その画素のビット0〜2の3ビットの値に対応する予め割り当てられた色でその画素を表示する。このモードでは、確認用画面上に、図2に例示した請求書の2ページの場合、キャッシュデータを用いて描画されたフォーム1、フォーム2、写真1、写真2、写真Aという5つのオブジェクトが、それぞれ異なる色で表示されることになる。
なお、このように「オブジェクト毎に色変更」モードを使用する場合にタグ版のビット割り当てを通常から変えるのは、タグ版のビット幅が8ビットであるからである。8ビットでは、図5に示したオブジェクト種別等の各項目に加えて、オブジェクトIDの下位3ビットをその8ビットに収めることはできない。これに対して、タグ版のビット幅を16ビット等のようにより大きくし、オブジェクトIDの下位の数ビット等、必要な項目をすべてタグ版に書き込むようにしてもよい(例えば後述の図14のキャッシュ非適用、非適用の理由、非適用の原因領域を表すビットも含め)。
図12に示す確認用画面500は、「リスト表示」モードが選択された場合の表示画面である。このモードでは、ユーザは対象のジョブ中の1つのページをリスト表示の対象として指定する。すると、UI制御部130は、そのジョブのそのページに該当する各エントリのデータをオブジェクト管理テーブル114から取得し、それらエントリのうちの予め定められた1以上の項目を示した表518を表示する。図に例示した表518は、オブジェクト管理テーブル114に登録されたオブジェクトのうち、ジョブの第4ページに含まれるオブジェクトの種別、登録ページ、領域サイズが表示される。登録ページは、そのオブジェクトのキャッシュデータがキャッシュデータ管理部112に登録されたときのページの番号である。領域サイズは、そのオブジェクトのバウンディングボックスの縦横の画素数である。図4には例示されていないが、RIP処理部110が、当該オブジェクトのキャッシュデータをキャッシュデータ管理部112に登録する際に、登録ページ及び領域サイズを求めてオブジェクト管理テーブル114に登録しているものとする。
また、確認用画面500の選択欄502では、プルダウンメニューにより「キャッシュ情報の印刷」を選ぶことができる(図示省略)。この項目が選ばれた場合、UI制御部130は、確認用画面500に表示するページ510、512等や表518の画像(図9、図10、図12等参照)の元になった画像データから印刷用のPDLデータを生成し、そのPDLデータをジョブ管理部104に対して、一般のジョブとは異なる属性のジョブとして登録する。ジョブ管理部104は、登録されたそのジョブをRIP制御部106に渡す。これにより、確認用画面500に表示される各ページのキャッシュ利用状況の画像がプリントエンジン200から印刷出力される。
「キャッシュ情報の印刷」が選ばれた場合も、「キャッシュ情報の表示」の場合と同様、4つの表示モード504のいずれかがユーザにより選択され、選択されたモードで確認用画面500に表示されるページ又は表が印刷される。
さて、以上に説明した例では、キャッシュデータ管理部112に保持されたキャッシュデータを再利用した部分をタグ版に記録し(図7のS30)、そのような再利用を行った部分をタグ版を参照して表示した(図9、図10参照)。ここで、キャッシュデータ管理部112にキャッシュデータを格納したとしても、そのキャッシュデータが再利用されない場合があり得る。そのようにキャッシュデータを格納したにもかかわらず再利用がなされなかった部分が分かると、例えばジョブ(PDLデータ)の改善につながる。
このためには、例えば、タグデータ(図5参照)に、キャッシュデータを再利用したか否かを示すビット(図5のビット7)の他に、キャッシュデータを作成・登録したか否かを示すビットを設ければよい(例えば図5の例で未使用のビット6を利用するなど)。キャッシュデータを作成・登録したか否かを示すビットを、キャッシュ作成ビットと呼ぶこととする。
この例では、RIP処理部110は、図7の手順において、S24でオブジェクトのキャッシュデータをキャッシュデータ管理部112に登録した際、そのキャッシュデータに該当する各画素のタグデータのキャッシュ作成ビットを「1」にセットする(キャッシュ作成ビットの初期値は、キャッシュデータ未作成を示す「0」とする)。
この例では、UI制御部130が生成する確認用画面のモードとして、例えば、「キャッシュ未利用部分」モードや「キャッシュ状況」モードを設けてもよい。
「キャッシュ未利用部分」モードが選択された場合、UI制御部130は、タグ版のキャッシュ作成ビットが「1」かつビット7(キャッシュ再利用を示すビット)が「0」である画素を予め定めた表示形態(例えばある色)で描画した画像情報を生成し、UI装置300に提供する。この画像情報では、ビット7が「1」である画素は、キャッシュ作成ビットが「0」である画素と同様、無色に設定される。
また、「キャッシュ状況」モードが選択された場合、UI制御部130は、タグ版のビット7が「1」である画素を第1の表示形態(例えばある特定の色)で示し、キャッシュ作成ビットが「1」かつビット7(キャッシュ再利用を示すビット)が「0」である画素を第1の表示形態と異なる第2の表示形態(例えば別の色)で示した画像情報を生成し、UI装置300に提供する。この画像情報は、キャッシュデータが作成されたが再利用は行われなかった部分と、作成されたキャッシュデータが再利用された部分とを、視覚的に区別可能な形で示す。
また、これら「キャッシュ未利用部分」モード及び「キャッシュ状況」モードの他に、キャッシュ作成ビットが「1」である画素をある表示形態で描画した画像情報をUI装置300に提供するモードがあってもよい。このモードで生成する画像情報は、作成されたキャッシュデータに含まれる画素群を表す。
また、以上の例では、同じ再利用可能オブジェクトがジョブ中に複数回現れる場合に、そのオブジェクトのRIP結果をキャッシュして再利用した。しかし、再利用可能オブジェクトが非常に小さい場合等、キャッシュ処理のオーバーヘッドを考えると、むしろキャッシュしないで、その都度PDLデータからラスターデータを作成した方がよいケースがある。この点を考慮して、RIP処理部110は、再利用可能オブジェクトを処理する際にはそのサイズを予め設定した閾値と比較し、その閾値より小さいサイズの場合には、キャッシュデータを作成・再利用せずに毎回PDLデータをRIP処理する。
また、フォーム等の再利用可能なオブジェクトが、特色や透明効果(以下「特色等」と総称)が用いられている部分を含むことがある。特色等の部分は、RIP処理の際、その部分の下地の各画素の色とブレンド処理(その部分の色と下地の色を指定された割合で混合する処理)する。このため特色等の部分だけでなくその部分を含んだオブジェクト全体について、そのオブジェクトのキャッシュデータをそのまま再利用して描画することができない。そこで1つの例では、RIP処理部110は、特色等の部分を含んだオブジェクトについては、再利用可能オブジェクトに該当する場合でも、RIP結果のキャッシュデータ管理部112への登録及び再利用は行わない。また、別の例として、特色等の部分を含んだオブジェクトであっても、下地に画像データが存在しない場合にはキャッシュデータを使用する実装にすることも可能である。この場合、RIP処理部110は、特色等の部分を含む再利用可能オブジェクトの下層に画像データがある場合にのみ、キャッシュ利用不可と判定する。
図13に例示するバリアブル印刷のジョブでは、フォーム2に特色の部分が含まれているので、フォーム2全体がキャッシュ非適用となる。
オブジェクトが非常に小さい、又は特色等の部分を含んでいる等の理由でキャッシュデータの再利用を行わなかったことをユーザが確認できるようにするために、1つの例では、タグ版のビット割り当てを通常とは別のものにする。このためのタグ版のビット割り当ての例を図14に示す。図14に示すビット割り当てでは、ビット6を、キャッシュ非適用を示すビットとして用いる。ビット0〜2の3ビットを、キャッシュ非適用と判定した理由を示すのに用いる。図15に、キャッシュ非適用の理由を表す3ビットのコードの例を示す。例えば、特色部分を含むという理由は3ビットコード「100」で表される。また、再利用可能オブジェクトがジョブで最初に現れた時点では、そのオブジェクトはキャッシュしないが、この理由でキャッシュしないことをコード「110」(「ジョブで最初の出現」)で表す。
また、図14の例では、ビット7を、キャッシュ非適用の原因となった領域を示すのに用いている。例えば、図13の例で、フォーム2は一部に特色の部分を含んでいるためにキャッシュ非適用となるので、タグ版では、フォーム2に該当するすべての画素のビット6が「1」にセットされ、そのうち特色の部分の画素のみビット7が「1」にセットされる。また、オブジェクトのサイズが小さいという理由や、オブジェクトに適用されるグラフィック状態など、オブジェクト全体に関する理由でキャッシュ非適用となる場合は、そのオブジェクトの全画素のビット7が「1」にセットされる。
RIP処理部110は、再利用可能オブジェクトにもかかわらず、予め定められたいずれかの理由(例えば図15参照)によりキャッシュしないと判定した場合には、タグ版のそのオブジェクトの各画素のビット6を「1」にセットする。また、その判定の理由を示すコードをそれら各画素のビット0〜2にセットする。また、その判定の原因となった領域の各画素については、ビット7を「1」にセットする。
なお、再利用可能オブジェクトをキャッシュ非適用とした場合でも、オブジェクト管理テーブル114にはその再利用可能オブジェクトの情報を登録する。例えば、あるページ内のある再利用可能オブジェクトをキャッシュ非適用と判定した場合、オブジェクト管理テーブル114のそのオブジェクトのエントリの「キャッシュ未使用ページ番号」欄に、そのページの番号を追加する。
図16に、選択欄502で「キャッシュ非適用部の表示」という表示メニューが選択された場合の確認用画面500の表示例を示す。「キャッシュ非適用部の表示」には、表示モードとして「キャッシュ非適用部のみ」、「画像と重ねて表示」、「リスト表示」の3つがある。
表示モード「キャッシュ非適用部のみ」が選択された場合は、図17に示すように、確認用画面500には、ユーザの指定したページ520及び522のうちタグ版のビット6が「1」の画素のみを予め設定された色で表示する(他の画素は白地のまま)。
また表示モード「画像と重ねて表示」が選択された場合は、ユーザの指定したページのCMYKの版から合成した表示用のラスター画像の上に、当該ページのタグ版のビット6(キャッシュ非適用)が「1」の画素群を予め設定した色で上書きしたものを、確認用画面500に表示する。
また、図示は省略したが、ユーザがキャッシュ非適用の原因領域の表示を指示すると、UI制御部130は確認用画面500のページ520及び522内のその原因領域(図13の例ではフォーム2の特色部分)の部分を強調表示する。この強調表示は、例えば、原因領域に該当する画素を、キャッシュ非適用のオブジェクトに該当する画素とは異なる色で表示することにより行えばよい。
また、図17に示すように、確認用画面500にキャッシュ非適用の理由を示すメッセージ524を表示してもよい。例えば、確認用画面500に表示されたページ520及び522内のキャッシュ非適用部分の表示箇所をタッチ操作等で指し示すと、UI制御部130がその箇所の画素のビット0〜2を読み出し、それら3ビットの値に対応する理由を示すメッセージ524を確認用画面500に表示する。このメッセージ524には、理由(図示例では「特色あり」)の他に、そのキャッシュ非適用のオブジェクトの種別(「フォーム」)とオブジェクト名(「F_F234」)とが含まれる。これらは、オブジェクト管理テーブル114から読み出されて表示される。
ここでは、キャッシュ非適用部分を画面表示する例を示したが、キャッシュ利用状況の場合と同様、キャッシュ非適用部分を示すページ画像を印刷出力する機能を設けてもよい。
以上では、RIP処理部110が、ラスターデータをキャッシュして再利用する場合を例にとって説明したが、本実施形態の手法は中間データをキャッシュして再利用する場合にも適用可能である。中間データ形式は、一般にPDLデータのオブジェクトをよりも粒度が細かいオブジェクト(単純形状やランレングス等)に分けて表現したものである。中間データを出力するRIP処理部110は、ラスターデータのタグ版に書き込むのと同様の制御情報を、中間データ形式のオブジェクトにタグ情報として付属させる。このタグ情報の空きビットの1つを、キャッシュを利用したか否かを示すビット(図5のビット7に相当)として用いる。画像形成のために記録したい制御情報は、ラスター形式でも中間データ形式でも基本的に同じなので、中間データのオブジェクトに付属するタグ情報は、ラスターデータの画素あたりのタグデータのビット割り当て(図5、図11、図14参照)と同様のデータを用いればよい。中間データのタグ情報へのデータの記録の仕方や、記録されタグ情報を参照したキャッシュ利用状況の表示(図9、図10等参照)の仕方は、ラスターデータのタグ版の記録やそれに基づく表示の仕方と同様でよい。
以上では、一つのキャッシュ方式を用いる例を説明してきたが、本実施形態の手法は、キャッシュ方式を限定しない。例えば、印刷を行わないでRIP処理だけを行ってキャッシュ状況を確認するチェックモードを設けてもよい。また、膨大なジョブの最初の少しのページを試し刷りし、その中でのキャッシュ状況を確認する試し刷りモードを設けてもよい。また、ジョブ開始前に、RIP処理部110又はジョブ管理部104がジョブのPDLデータを解析してジョブ中に現れる再利用可能オブジェクトを検出し、オブジェクト管理テーブル(ただし実際に描画は行わないので、キャッシュデータのサイズやアドレスは求められない)を作成してもよい。そして、ユーザが、このオブジェクト管理テーブルを参照し、キャッシュするオブジェクトを選択するなどの構成をとることも可能である。この場合、ユーザは、ジョブを実際に実行した時に作成されたタグ版やオブジェクト管理テーブル114から、上述の図9、図10等の確認画面を生成し、選択したオブジェクトが正しくキャッシュデータを再利用しているかどうかを確認する。
以上に例示したコントローラ100の情報処理機構は、例えば、コンピュータにそれら各装置についての上述の機能を表すプログラムを実行させることにより実現される。ここで、コンピュータは、例えば、ハードウエアとして、CPU等のマイクロプロセッサ、ランダムアクセスメモリ(RAM)およびリードオンリメモリ(ROM)等のメモリ(一次記憶)、フラッシュメモリやSSD(ソリッドステートドライブ)、HDD(ハードディスクドライブ)等の固定記憶装置を制御するコントローラ、各種I/O(入出力)インタフェース、ローカルエリアネットワークなどのネットワークとの接続のための制御を行うネットワークインタフェース等が、たとえばバス等を介して接続された回路構成を有する。それら各機能の処理内容が記述されたプログラムがネットワーク等の経由でフラッシュメモリ等の固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがRAMに読み出されCPU等のマイクロプロセッサにより実行されることにより、上に例示した機能モジュール群が実現される。