(57)【特許請求の範囲】
【請求項１】
文書画像の印刷を指示する印刷データを格納する第１の格納手段と、
前記文書画像に付加する付加画像であって、当該文書画像の印刷を指示した日付と当該文書画像の印刷を指示した者の名前とを含む付加画像の印刷のための付加データを格納する第２の格納手段と、
前記第１の格納手段から前記印刷データを読み込んで解釈し、当該印刷データ中に特定の命令を検出すると、前記第２の格納手段に未処理の付加データが存在するかどうかを判定し、当該未処理の付加データが存在すると判定した場合には、当該印刷データの解釈を中断し、当該特定の命令の読込みを取り消し、当該未処理の付加データを解釈した後、当該特定の命令を前記第１の格納手段から再度読み込むことにより、前記付加画像が付加された前記文書画像を生成し、当該未処理の付加データが存在しないと判定した場合には、当該印刷データの解釈を継続することにより、前記付加画像が付加されない前記文書画像を生成する解釈手段と
を備えたことを特徴とする画像処理装置。
【請求項２】
前記解釈手段による前記印刷データの解釈の中断に応じて、前記未処理の付加データを解釈するよう当該解釈手段に指示する制御手段を更に備えたことを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記特定の命令は、ページの開始を指示する命令、又は、ページの終了を指示する命令であることを特徴とする請求項１記載の画像処理装置。
【請求項４】
前記特定の命令は、印刷ジョブの開始を指示する命令、又は、印刷ジョブの終了を指示する命令であることを特徴とする請求項１記載の画像処理装置。
【請求項５】
前記特定の命令は、前記印刷データの解釈の中断点として機能する命令として予め登録された命令であることを特徴とする請求項１記載の画像処理装置。
【請求項６】
文書画像の印刷を指示する印刷データを第１の格納手段に格納する第１の格納ステップと、
前記文書画像に付加する付加画像であって、当該文書画像の印刷を指示した日付と当該文書画像の印刷を指示した者の名前とを含む付加画像の印刷のための付加データを第２の格納手段に格納する第２の格納ステップと、
前記第１の格納手段から前記印刷データを読み込んで解釈する解釈ステップと、
前記印刷データ中に特定の命令を検出すると、前記第２の格納手段に未処理の付加データが存在するかどうかを判定する判定ステップと、
前記未処理の付加データが存在すると判定した場合には、前記印刷データの解釈を中断し、当該特定の命令の読込みを取り消し、当該未処理の付加データを解釈した後、当該特定の命令を前記第１の格納手段から再度読み込むことにより、前記付加画像が付加された前記文書画像を生成し、前記未処理の付加データが存在しないと判定した場合には、前記印刷データの解釈を継続することにより、前記付加画像が付加されない前記文書画像を生成するステップと
を含むことを特徴とする画像処理方法。
【請求項７】
前記特定の命令は、ページの開始を指示する命令、又は、ページの終了を指示する命令であることを特徴とする請求項６記載の画像処理方法。
【請求項８】
前記特定の命令は、印刷ジョブの開始を指示する命令、又は、印刷ジョブの終了を指示する命令であることを特徴とする請求項６記載の画像処理方法。
【請求項９】
前記特定の命令は、前記印刷データの解釈の中断点として機能する命令として予め登録された命令であることを特徴とする請求項６記載の画像処理方法。
【請求項１０】
コンピュータに、
文書画像の印刷を指示する印刷データを第１の格納手段に格納する機能と、
前記文書画像に付加する付加画像であって、当該文書画像の印刷を指示した日付と当該文書画像の印刷を指示した者の名前とを含む付加画像の印刷のための付加データを第２の格納手段に格納する機能と、
前記第１の格納手段から前記印刷データを読み込んで解釈する機能と、
前記印刷データ中に特定の命令を検出すると、前記第２の格納手段に未処理の付加データが存在するかどうかを判定する機能と、
前記未処理の付加データが存在すると判定した場合には、前記印刷データの解釈を中断し、当該特定の命令の読込みを取り消し、当該未処理の付加データを解釈した後、当該特定の命令を前記第１の格納手段から再度読み込むことにより、前記付加画像が付加された前記文書画像を生成し、前記未処理の付加データが存在しないと判定した場合には、前記印刷データの解釈を継続することにより、前記付加画像が付加されない前記文書画像を生成する機能と
を実現させるためのプログラム。
【請求項１１】
前記特定の命令は、ページの開始を指示する命令、又は、ページの終了を指示する命令であることを特徴とする請求項１０記載のプログラム。
【請求項１２】
前記特定の命令は、印刷ジョブの開始を指示する命令、又は、印刷ジョブの終了を指示する命令であることを特徴とする請求項１０記載のプログラム。
【請求項１３】
前記特定の命令は、前記印刷データの解釈の中断点として機能する命令として予め登録された命令であることを特徴とする請求項１０記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書データの印刷を指示する印刷データをラスタデータに変換して文書画像を生成する画像処理装置等に関する。
【背景技術】
【０００２】
ホストコンピュータで作成された文書データは、例えば、ページ記述言語(Page Description Language)で記述されたデータ(以下、「ＰＤＬデータ」という)としてプリンタに送られることにより、印刷が可能となる。ところで、近年、このようにホストコンピュータからプリンタへＰＤＬデータが送信された後に、このＰＤＬデータに基づく画像データに対し、プリンタ側で何らかの加工を施して印刷する機能への要望が高まっている。例えば、情報漏洩の抑止効果を狙い、印刷を要求した時刻やユーザを特定する情報を画像データに強制的に付加する機能等である。
ここで、ホストコンピュータから送出されるＰＤＬデータに基づく画像データに対し、プリンタ側で画像データを付加する技術として、スキャナプリンタで入力された画像データを付加するものがある(例えば、特許文献１参照)。この特許文献１の技術では、ＰＤＬデータを一旦ビットマップに変換し、このビットマップとスキャナ入力された画像データとを合成している。
【０００３】
【特許文献１】特開平６−２１４９２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１の手法では、ＰＤＬデータに基づくラスタデータ及びスキャナ入力されたラスタデータについて画素単位でマージ処理を行わなければならないため、処理に時間がかかるという問題点があった。また、場合によっては、ラスタデータを保存する記憶領域が２ページ分必要となり、システム構成が大規模になってしまうという問題点もあった。
【０００５】
本発明は、以上のような技術的課題を解決するためになされたものであって、その目的は、オリジナルの印刷データに手を加えることなく、付加的な情報の追加描画を効率的に行うことにある。
【課題を解決するための手段】
【０００６】
かかる目的のもと、本発明では、印刷データをラスタデータに変換する場合、印刷データの解釈時に特定の命令を検知すると解釈を一時停止し、解釈対象のデータの読込み先を切り替えるようにした。即ち、本発明の画像処理装置は、文書画像の印刷を指示する印刷データを入力する入力手段と、文書画像に付加する付加画像の印刷のための付加データを格納する格納手段と、印刷データを解釈し、その印刷データ中に特定の命令を検出すると、その印刷データの解釈を中断し、付加データを解釈することにより、付加画像が付加された文書画像を生成する解釈手段とを備えている。ここで、特定の命令としては、ページの開始を指示する命令、ページの終了を指示する命令、印刷ジョブの開始を指示する命令、印刷ジョブの終了を指示する命令が例示される。或いは、印刷データの解釈の中断点として機能する命令として予め登録された命令であってもよい。
【０００７】
また、本発明は、このような画像処理の方法として捉えることもできる。その場合、本発明の画像処理方法は、文書画像の印刷を指示する印刷データを入力する入力ステップと、文書画像に付加する付加画像の印刷のための付加データを生成する生成ステップと、印刷データ中に特定の命令を検出するまでその印刷データを解釈する第１の解釈ステップと、印刷データ中に特定の命令を検出した後は、付加データを解釈する第２の解釈ステップと、第１の解釈ステップでの解釈結果と第２の解釈ステップでの解釈結果とに基づいて、付加画像が付加された文書画像を生成するステップとを含んでいる。
【０００８】
一方、本発明は、コンピュータに画像処理を実行させるプログラムとして捉えることもできる。その場合、本発明のプログラムは、コンピュータに、文書画像の印刷を指示する印刷データ中に特定の命令を検出するまでその印刷データを解釈する機能と、印刷データ中に特定の命令を検出した後は、文書画像に付加する付加画像の印刷のための付加データを解釈する機能とを実現させるためのものである。
【発明の効果】
【０００９】
本発明によれば、オリジナルの印刷データに手を加えることなく、付加的な情報の追加描画を効率的に行うことが可能となる。
【発明を実施するための最良の形態】
【００１０】
以下、添付図面を参照して、本発明を実施するための最良の形態(以下、「実施の形態」という)について詳細に説明する。
［第１の実施の形態］
本実施の形態は、ホストコンピュータで作成された文書(オリジナルの文書)を印刷装置で印刷する際に、印刷装置側で、文書を印刷した日付と文書の印刷を指示したユーザ名とを追加描画するものである。
まず、本実施の形態における処理のイメージについて説明する。
図１は、本実施の形態における画像の具体例を示したものである。
【００１１】
このうち、図１(ａ)は、基本ページ画像１０１を示している。この基本ページ画像１０１は、ホストコンピュータで作成され、印刷装置での印刷が指示される文書画像であり、印刷装置側では何の加工も行われていないオリジナルの文書画像である。
また、図１(ｂ)は、ページ加工画像１０２を示している。このページ加工画像１０２は、基本ページ画像１０１に対して施される加工処理を表した画像である。具体的には、ページ上部に、文書を印刷した日付を描画し、ページ下部に、文書を印刷した者の名前(ユーザ名)を描画するページ加工画像１０２が示されている。
更に、図１(ｃ)は、加工済みページ画像１０３を示している。この加工済みページ画像１０３は、基本ページ画像１０１に対して、ページ加工画像１０２をマージした結果の画像である。
【００１２】
次に、基本ページ画像１０１を描画するためのＰＤＬデータ(以下、「基本ページデータ」という)２０１、及び、ページ加工画像に対応するＰＤＬデータ(以下、「ページ加工データ」という)２０２について説明する。
図２は、基本ページデータ２０１及びページ加工データ２０２を示したものである。
このうち、図２(ａ)は、基本ページデータ２０１を示している。
基本ページデータ２０１は、ジョブ開始命令で始まり、ジョブ終了命令で終わる。ジョブ開始命令とジョブ終了命令の間には、ページを表現するデータが含まれる。本実施の形態では、１ページ分のデータしか含めていないが、複数ページ分のデータを含めることも可能である。本実施の形態における１ページ分のＰＤＬデータは、ページ開始命令で始まり、３つの文字描画命令及び１つのイメージ描画命令を含み、ページ出力命令で終わる。ページ開始命令とページ出力命令で囲まれた部分がページを記述した命令群である。ページ出力命令が現れた時点で、ページ開始命令以降の描画命令を１つのページに描画した結果が用紙に印刷される。
【００１３】
また、図２(ｂ)は、ページ加工データ２０２を示している。
ページ加工データ２０２は、日付とユーザ名を描画するための２つの文字列描画命令、及び、文字列の背景を描画する２つの矩形描画命令から構成されている。尚、ページ加工データ２０２は、基本ページデータ２０１とは異なり、ジョブ開始命令、ジョブ終了命令、ページ開始命令、及び、ページ出力命令を含まない。
【００１４】
本実施の形態は、図１に示した基本ページ画像１０１とページ加工画像１０２とから、加工済みページ画像１０３を得る機能を実現させるためのものである。
図３は、本実施の形態が適用されるコンピュータシステムの構成を示している。
図示するように、このコンピュータシステムは、印刷装置３００と、ホストコンピュータ３１１とを含んでいる。ホストコンピュータ３１１としては、ＰＣが例示されるが、印刷装置３００に対して印刷指示を送信可能なコンピュータであれば、如何なるものであってもよい。また、ホストコンピュータ３１１は、印刷指示と共に、プリンタドライバによって生成された基本ページデータ２０１(図２参照)と、印刷指示をしたユーザ名とを印刷装置３００に対して送出する。一方、印刷装置３００は、ホストコンピュータ３１１とネットワークを介して接続されており、ホストコンピュータ３１１が送信した印刷指示を、ネットワークを通じて受信する。
【００１５】
ここで、印刷装置３００の内部構成について詳細に説明する。
図示するように、印刷装置３００は、データ入力部３１２と、ページ加工データ生成部３１０と、入力データ記憶部３０１と、制御部３０２と、ＰＤＬデータ解釈部３０３とを含んでいる。また、中間データ生成部３０４と、中間データ記憶部３０５と、中間データ展開部３０６と、ラスタデータ記憶部３０７と、印刷制御部３０８と、印刷エンジン３０９とを含む。
【００１６】
データ入力部３１２は、ホストコンピュータ３１１から基本ページデータ２０１及び印刷を指示したユーザ名を受信し、基本ページデータ２０１は入力データ記憶部３０１に保存し、ユーザ名はページ加工データ生成部３１０に送る。また、制御部３０２に対し、ＰＤＬデータ解釈部３０３に対する各種制御を指示する。
ページ加工データ生成部３１０は、ユーザ名と印刷指示を受信した日付とを含んだページ加工データ２０２を作成し、入力データ記憶部３０１に保存する。
入力データ記憶部３０１は、データ入力部３１２が入力した基本ページデータ２０１と、ページ加工データ生成部３１０が生成したページ加工データ２０２とを記憶する。
【００１７】
制御部３０２は、ＰＤＬデータ解釈部３０３に対し、処理の中断及び再開の制御を指示する。また、ＰＤＬデータ解釈部３０３に対し、読込み先のデータの切替えを指示する。
ＰＤＬデータ解釈部３０３は、入力データ記憶部３０１に保存されている基本ページデータ２０１及びページ加工データ２０２を解釈し、解釈した結果を中間データ生成部３０４に送信する。また、制御部３０２の指示に従い、基本ページデータ２０１又はページ加工データ２０２のどちらからデータを読み込むかを判断する。更に、制御部３０２の指示に従い、処理の中断及び再開も行う。
【００１８】
中間データ生成部３０４は、ＰＤＬデータ解釈部３０３より送信された解釈結果を中間データに変換する。中間データとは、ＰＤＬ形式の入力データと比較して、より抽象度の低い描画命令群である。
中間データ記憶部３０５は、中間データ生成部３０４によって生成された中間データを記憶する。
中間データ展開部３０６は、中間データ記憶部３０５に１ページ分の中間データが記憶されると、その１ページ分の中間データを１ライン毎にラスタデータに展開する。
ラスタデータ記憶部３０７は、中間データ展開部３０６によって生成されたラスタデータを記憶する。
【００１９】
印刷制御部３０８は、印刷エンジン３０９を起動し、ラスタデータ記憶部３０７に記憶されたラスタデータを印刷エンジン３０９に送信する。その際、ラスタデータを印刷エンジン３０９に適合するような色に変換する色変換処理や、多値で表現されたラスタデータを２値データに変換する中間調処理等を実行する。
印刷エンジン３０９は用紙にラスタデータを印刷する。この印刷エンジン３０９としては、電子写真方式を用いた印刷エンジンが例示されるが、その他の如何なる方式を採用した印刷エンジンであっても構わない。
【００２０】
尚、これらの機能は、ソフトウェアとハードウェア資源とが協働することにより実現される。即ち、データ入力部３１２、ページ加工データ生成部３１０、制御部３０２、ＰＤＬデータ解釈部３０３、中間データ生成部３０４、中間データ展開部３０６、印刷制御部３０８は、印刷装置３００の図示しないＣＰＵが、これらの機能を実現するプログラムを、例えばハードディスク等の外部記憶装置からメインメモリに読み込むことにより実現される。
また、入力データ記憶部３０１、中間データ記憶部３０５、ラスタデータ記憶部３０７は、半導体メモリ、磁気ディスク等の種々の記憶媒体を用いて実現することができる。
【００２１】
次に、本実施の形態の動作について説明する。
本実施の形態では、ホストコンピュータ３１１から基本ページデータ２０１及び印刷を指示したユーザ名が送られると、データ入力部３１２がこれらを受信する。そして、基本ページデータ２０１を入力データ記憶部３０１に記憶し、ユーザ名をページ加工データ生成部３１０に送る。これにより、ページ加工データ生成部３１０は、ユーザ名と印刷指示を受信した日付とを含んだページ加工データ２０２を生成し、入力データ記憶部３０１に記憶する。
【００２２】
このようにして基本ページデータ２０１及びページ加工データ２０２が入力データ記憶部３０１に保持されると、ＰＤＬデータ解釈部３０３の動作が開始する。
図４は、ＰＤＬデータ解釈部３０３の動作を示したフローチャートである。
処理が開始すると、ＰＤＬデータ解釈部３０３は、データの読込み先を判定する(ステップ４０２)。尚、データの読込み先は、後述するように、制御部３０２が設定している。
まず、ステップ４０２において読込み先が基本ページデータ２０１であると判定された場合について説明する。
この場合、ＰＤＬデータ解釈部３０３は、基本ページデータ２０１中に次に読み込むべき命令が存在するかどうかを判定する(ステップ４０３)。ここで、次に読み込むべき命令がないと判定されれば、処理を終了するが、次に読み込むべき命令があると判定されれば、その命令を読み込む(ステップ４０５)。そして、読み込んだ命令がページ出力命令であるかどうかを判定する(ステップ４０６)。
【００２３】
その結果、読み込んだ命令がページ出力命令であると判定された場合、ＰＤＬデータ解釈部３０３は、ページ出力命令を処理してよいかを制御部３０２に問い合わせる(ステップ４０７)。そして、この問い合わせに対する回答(問い合わせ結果)を制御部３０２から受信するまで、処理は中断する。その後、制御部３０２から回答を受信すると、ＰＤＬデータ解釈部３０３は、問い合わせ結果の内容を判定する(ステップ４０８)。ここで、判定結果が処理可能である場合、ＰＤＬデータ解釈部３０３は、中間データ生成部３０４にページ出力命令を送る(ステップ４０９)。また、判定結果が処理不可である場合、ＰＤＬデータ解釈部３０３は、ページ出力命令の読込みを取り消し、処理しなかったものとする(ステップ４１０)。そして、ステップ４０９、ステップ４１０の処理後は、いずれの場合もステップ４０２に戻り、次の命令の処理に移る。
一方、読み込んだ命令がページ出力命令でないと判定された場合、ＰＤＬデータ解釈部３０３は、中間データ生成部３０４に描画命令(解釈結果)を送り(ステップ４１３)、その後、ステップ４０２に戻る。
【００２４】
次に、ステップ４０２において読込み先がページ加工データ２０２であると判定された場合について説明する。
この場合、ＰＤＬデータ解釈部３０３は、ページ加工データ２０２中に次に読み込むべき命令が存在するかどうかを判定する(ステップ４１１)。ここで、次に読み込むべき命令があると判定されれば、その命令を読み込む(ステップ４１２)。そして、中間データ生成部３０４に描画命令(解釈結果)を送り(ステップ４１３)、その後、ステップ４０２に戻る。また、読み込むべき命令がないと判定されれば、「データなし」を制御部３０２に通知する(ステップ４１４)。そして、制御部３０２からの処理継続許可を待つ(ステップ４１５)。その後、制御部３０２から処理継続許可を受信したら、ステップ４０２に進み、次の命令の処理に移る。
以上により、ＰＤＬデータ解釈部３０３の動作の説明を終了する。
【００２５】
ところで、このＰＤＬデータ解釈部３０３に対し、基本ページデータ２０１とページ加工データ２０２のいずれからデータを読み込むべきかを指示していたのは、制御部３０２であった。また、ＰＤＬデータ解釈部３０３がページ出力命令を検出して中断した基本ページデータ２０１の解釈処理を再開してよいかどうか、或いは、ページ加工データ２０２のデータがなくなった際に処理を継続してよいかの指示も、制御部３０２が行っていた。
【００２６】
そこで、次に、この制御部３０２の動作について説明する。
図５は、制御部３０２の動作を示したフローチャートである。
まず、制御部３０２は、ＰＤＬデータ解釈部３０３に対し、読込み先を基本ページデータ２０１に設定する(ステップ５０２)。図２のＰＤＬデータを例にとると、図２(ａ)の基本ページデータ２０１が読込み先として設定される。そして、制御部３０２は、ＰＤＬデータ解釈部３０３に解釈開始を指示する(ステップ５０３)。尚、ＰＤＬデータ解釈部３０３は、この指示を受け、ステップ４０３以降の基本ページデータ２０１の解釈処理を行うことになる。
【００２７】
その後、制御部３０２は、ＰＤＬデータ解釈部３０３からのページ出力命令の処理可否問い合わせを待つ(ステップ５０４)。尚、ＰＤＬデータ解釈部３０３は、ページ出力命令を検知すると、ステップ４０７で制御部３０２に処理可否問い合わせを行い、制御部３０２からの返答が得られるまで処理を中断している。
このように、ＰＤＬデータ解釈部３０３から問い合わせが発生すると、制御部３０２は、未処理のページ加工データ２０２が存在するかどうかを判定する(ステップ５０５)。
【００２８】
その結果、未処理のページ加工データ２０２が存在すると判定された場合は、ＰＤＬデータ解釈部３０３に対し、読込み先をページ加工データ２０２に設定する(ステップ５０６)。図２のＰＤＬデータを例にとると、図２(ｂ)のページ加工データ２０２が読込み先として設定される。そして、ＰＤＬデータ解釈部３０３からのページ出力命令の処理可否問い合わせに対して「処理不可」を返す(ステップ５０７)。尚、ＰＤＬデータ解釈部３０３は、この回答を受信した時点で処理を再開する。但し、ＰＤＬデータ解釈部３０３は、ステップ４１０でページ出力命令の読込みを取り消し、ステップ４０２で読込み先がページ加工データ２０２と判定されるので、ステップ４１１以降のページ加工データ２０２の解釈処理を行うことになる。
【００２９】
その後、制御部３０２は、ＰＤＬデータ解釈部３０３から「データなし」通知を待つ(ステップ５０８)。尚、ＰＤＬデータ解釈部３０３は、ページ加工データ２０２を全て解釈し終わると、ステップ４１４で制御部３０２に「データなし」を通知する。
制御部３０２は、「データなし」通知を受信すると、ＰＤＬデータ解釈部３０３に対し、読込み先を基本ページデータ２０１に設定する(ステップ５０９)。そして、ＰＤＬデータ解釈部３０３に「処理継続許可」を送り(ステップ５１０)、ステップ５０４に戻る。
【００３０】
一方、未処理のページ加工データ２０２が存在しないと判定された場合は、ＰＤＬデータ解釈部３０３からのページ出力命令の処理可否問い合わせに対して「処理可能」を返す(ステップ５１１)。このような場合としては、例えば、元々ページ加工データ２０２が存在しない場合、即ち、オリジナルの文書を全く加工せずに印刷する場合がある。或いは、基本ページデータ２０１に対するページ加工が完了した場合もある。即ち、ページ加工が完了すると、ステップ５０５での判定が「Ｎｏ」となり、ステップ５１１を経て、処理は終了する。
以上により、制御部３０２の動作の説明を終了する。
【００３１】
このように、本実施の形態では、印刷データをラスタデータに変換するに当たり、印刷データの解釈時にページ出力命令を検知すると解釈を一時停止し、解釈対象のデータの読込み先を切り替えるようにした。これにより、オリジナルの印刷データに手を加えることなく、ページに対する情報の追加描画を効率的に行えるようになった。即ち、一度作成したＰＤＬデータ内のページ出力命令の直前に情報の描画命令を挿入するには、一度ＰＤＬデータを解釈し、命令の挿入のためにＰＤＬデータを移動又はコピーする手法も考えられるが、本実施の形態によれば、かかる手法よりも格段に効率的な手法が得られる。
【００３２】
尚、本実施の形態では、ページ出力命令の直前に情報の描画命令を挿入することとしたため、検出対象の命令をページ出力命令としたが、これに限るものではない。１ページ分のＰＤＬデータの先頭に付加的な情報の描画命令を挿入するものとすれば、ページ開始命令の次の命令を検出対象の命令としてもよい。また、図２の例において、ページ出力命令は、ページの終了を指示する命令とページの出力を指示する命令とを兼ねた命令となっているため、本実施の形態では、ページ出力命令を検出対象の命令としたが、ページの終了を指示する命令とページの出力を指示する命令とが別々の命令である場合は、ページの終了を指示する命令を検出対象の命令としてもよい。
【００３３】
［第２の実施の形態］
本実施の形態は、ホストコンピュータで作成された文書(オリジナルの文書)を印刷装置で印刷する際に、バナーページ(例えば、印刷開始ページや印刷終了ページ)を文書の前後に挿入するものである。
まず、本実施の形態における処理のイメージについて説明する。
図６は、本実施の形態におけるバナーページ画像の具体例を示したものである。尚、本実施の形態において、基本ページ画像は任意のページ画像でよいが、例えば、図１(ａ)に示した基本ページ画像１０１を用いるものとする。
【００３４】
このうち、図６(ａ)は、印刷開始ページ画像６０１を示している。この印刷開始ページ画像６０１は、基本ページ画像１０１を印刷する前に印刷される画像である。具体的には、ページ上部に、印刷を開始した日付と時刻を描画し、その下に、ユーザ名(印刷者の名前)を描画し、更にその下に、「Ｓｔａｒｔ」という文字列を描画したものとなっている。
また、図６(ｂ)は、印刷終了ページ画像６０２を示している。この印刷終了ページ画像６０２は、基本ページ画像１０１を印刷した後に印刷される画像である。具体的には、ページ上部に、印刷を終了した日付と時刻を描画し、その下に、ユーザ名(印刷者の名前)を描画し、更にその下に、「Ｅｎｄ」という文字列を描画したものとなっている。
尚、本実施の形態では、基本ページ画像１０１には加工処理は施されない。
【００３５】
次に、バナーページ画像を描画するためのＰＤＬデータについて説明する。
図７は、印刷開始ページ画像６０１を描画するためのＰＤＬデータ(以下、「印刷開始ページデータ」という)７０１、及び、印刷終了ページ画像６０２を描画するためのＰＤＬデータ(以下、「印刷終了ページデータ」という)７０２を示したものである。
このうち、図７(ａ)は、印刷開始ページデータ７０１を示している。
印刷開始ページデータ７０１は、ページ開始命令と、ページ出力命令と、印刷を開始した日付及び時刻、ユーザ名、文字列「Ｓｔａｒｔ」を印刷するための３つの文字列描画命令と、文字列の背景を描画する２つの矩形描画命令とから構成されている。
【００３６】
また、図７(ｂ)は、印刷終了ページデータ７０２を示している。
印刷終了ページデータ７０２は、ページ開始命令と、ページ出力命令と、印刷を終了した日付及び時刻、ユーザ名、文字列「Ｅｎｄ」を印刷するための３つの文字列描画命令と、文字列の背景を描画する２つの矩形描画命令とから構成されている。
ところで、印刷開始ページデータ７０１及び印刷終了ページデータ７０２は、ページ開始命令とページ出力命令とを含んでいることから、独立したページを表現していることが分かる。但し、ジョブ開始命令及びジョブ終了命令は含んでいない。尚、印刷開始ページデータ７０１及び印刷終了ページデータ７０２において、文字列描画命令の引数の文字列内に、「日付取得()」及び「時刻取得()」という関数が使われている。これは、ＰＤＬデータの解釈中に日付と時刻を取得する命令である。
【００３７】
本実施の形態は、図６に示した印刷開始ページ画像６０１及び印刷終了ページ画像６０２を、基本ページ画像１０１の前後に挿入する機能を実現させるためのものである。
図８は、本実施の形態が適用されるコンピュータシステムの構成を示している。
図示するように、このコンピュータシステムは、印刷装置８００と、ホストコンピュータ８１１とを含んでいる。ホストコンピュータ８１１としては、ＰＣが例示されるが、印刷装置８００に対して印刷指示を送信可能なコンピュータであれば、如何なるものであってもよい。また、ホストコンピュータ８１１は、印刷指示と共に、プリンタドライバによって生成された基本ページデータ２０１(図２参照)と、印刷指示をしたユーザ名とを印刷装置８００に対して送出する。一方、印刷装置８００は、ホストコンピュータ８１１とネットワークを介して接続されており、ホストコンピュータ８１１が送信した印刷指示を、ネットワークを通じて受信する。
【００３８】
ここで、印刷装置８００の内部構成について詳細に説明する。
図示するように、印刷装置８００は、データ入力部８１２と、バナーページデータ生成部８１０と、入力データ記憶部８０１と、制御部８０２と、ＰＤＬデータ解釈部８０３とを含んでいる。また、中間データ生成部８０４と、中間データ記憶部８０５と、中間データ展開部８０６と、ラスタデータ記憶部８０７と、印刷制御部８０８と、印刷エンジン８０９とを含む。
【００３９】
データ入力部８１２は、ホストコンピュータ８１１から基本ページデータ２０１及び印刷を指示したユーザ名を受信し、基本ページデータ２０１は入力データ記憶部８０１に保存し、ユーザ名はバナーページデータ生成部８１０に送る。また、制御部８０２に対し、ＰＤＬデータ解釈部８０３に対する各種制御を指示する。
バナーページデータ生成部８１０は、ユーザ名と印刷開始時刻とを含んだ印刷開始ページデータ７０１、及び、ユーザ名と印刷終了時刻とを含んだ印刷終了ページデータ７０２を生成し、入力データ記憶部８０１に保存する。
入力データ記憶部８０１は、データ入力部８１２が入力した基本ページデータ２０１と、バナーページデータ生成部８１０が生成した印刷開始ページデータ７０１及び印刷終了ページデータ７０２とを記憶する。
【００４０】
制御部８０２は、ＰＤＬデータ解釈部８０３に対し、処理の中断及び再開の制御を指示する。また、ＰＤＬデータ解釈部８０３に対し、読込み先のデータの切替えを指示する。
ＰＤＬデータ解釈部８０３は、入力データ記憶部８０１に保存されている基本ページデータ２０１、印刷開始ページデータ７０１、印刷終了ページデータ７０２を解釈し、解釈した結果を中間データ生成部８０４に送信する。また、制御部８０２の指示に従い、基本ページデータ２０１、印刷開始ページデータ７０１、或いは、印刷終了ページデータ７０２のどちらからデータを読み込むかを判断する。更に、制御部８０２の指示に従い、処理の中断及び再開も行う。
【００４１】
一方、中間データ生成部８０４、中間データ記憶部８０５、中間データ展開部８０６、ラスタデータ記憶部８０７、印刷制御部８０８、及び、印刷エンジン８０９については、それぞれ、第１の実施の形態における中間データ生成部３０４、中間データ記憶部３０５、中間データ展開部３０６、ラスタデータ記憶部３０７、印刷制御部３０８、及び、印刷エンジン３０９と同様であるため、ここでの詳しい説明は省略する。
【００４２】
尚、これらの機能は、ソフトウェアとハードウェア資源とが協働することにより実現される。即ち、データ入力部８１２、バナーページデータ生成部８１０、制御部８０２、ＰＤＬデータ解釈部８０３、中間データ生成部８０４、中間データ展開部８０６、印刷制御部８０８は、印刷装置８００の図示しないＣＰＵが、これらの機能を実現するプログラムを、例えばハードディスク等の外部記憶装置からメインメモリに読み込むことにより実現される。
また、入力データ記憶部８０１、中間データ記憶部８０５、ラスタデータ記憶部８０７は、半導体メモリ、磁気ディスク等の種々の記憶媒体を用いて実現することができる。
【００４３】
次に、本実施の形態の動作について説明する。
本実施の形態では、ホストコンピュータ８１１から基本ページデータ２０１及び印刷を指示したユーザ名が送られると、データ入力部８１２がこれらを受信する。そして、基本ページデータ２０１を入力データ記憶部８０１に記憶し、ユーザ名をバナーページデータ生成部８１０に送る。これにより、バナーページデータ生成部８１０は、ユーザ名と印刷開始時刻とを含んだ印刷開始ページデータ７０１、及び、ユーザ名と印刷終了時刻とを含んだ印刷終了ページデータ７０２を生成し、入力データ記憶部８０１に記憶する。
【００４４】
このようにして基本ページデータ２０１、印刷開始ページデータ７０１、印刷終了ページデータ７０２が入力データ記憶部８０１に保持されると、ＰＤＬデータ解釈部８０３の動作が開始する。
図９は、ＰＤＬデータ解釈部８０３の動作を示したフローチャートである。
処理が開始すると、ＰＤＬデータ解釈部８０３は、データの読込み先を判定する(ステップ９０２)。尚、データの読込み先は、後述するように、制御部８０２が設定している。
まず、ステップ９０２において読込み先が基本ページデータ２０１であると判定された場合について説明する。
この場合、ＰＤＬデータ解釈部８０３は、基本ページデータ２０１中に次に読み込むべき命令が存在するかどうかを判定する(ステップ９０３)。ここで、次に読み込むべき命令がないと判定されれば、処理を終了するが、次に読み込むべき命令があると判定されれば、その命令を読み込む(ステップ９０５)。そして、読み込んだ命令がジョブ開始命令の次の命令(以下、「ジョブ開始後命令」という)又はジョブ終了命令であるかどうかを判定する(ステップ９０６)。
【００４５】
その結果、読み込んだ命令がジョブ開始後命令又はジョブ終了命令であると判定された場合、ＰＤＬデータ解釈部８０３は、ジョブ開始後命令又はジョブ終了命令を処理してよいかを制御部８０２に問い合わせる(ステップ９０７)。そして、この問い合わせに対する回答(問い合わせ結果)を制御部８０２から受信するまで、処理は中断する。その後、制御部８０２から回答を受信すると、ＰＤＬデータ解釈部８０３は、問い合わせ結果の内容を判定する(ステップ９０８)。ここで、判定結果が処理可能である場合、ＰＤＬデータ解釈部８０３は、中間データ生成部８０４にジョブ開始後命令又はジョブ終了命令を送る(ステップ９０９)。また、判定結果が処理不可である場合、ＰＤＬデータ解釈部８０３は、ジョブ開始後命令又はジョブ終了命令の読込みを取り消し、処理しなかったものとする(ステップ９１０)。そして、ステップ９０９、ステップ９１０の処理後は、いずれの場合もステップ９０２に戻り、次の命令の処理に移る。
一方、読み込んだ命令がジョブ開始後命令又はジョブ終了命令でないと判定された場合、ＰＤＬデータ解釈部８０３は、中間データ生成部８０４に描画命令(解釈結果)を送り(ステップ９１３)、その後、ステップ９０２に戻る。
【００４６】
次に、ステップ９０２において読込み先が印刷開始ページデータ７０１又は印刷終了ページデータ７０２であると判定された場合について説明する。
この場合、ＰＤＬデータ解釈部８０３は、印刷開始ページデータ７０１又は印刷終了ページデータ７０２中に次に読み込むべき命令が存在するかどうかを判定する(ステップ９１１)。ここで、次に読み込むべき命令があると判定されれば、その命令を読み込む(ステップ９１２)。そして、中間データ生成部８０４に描画命令(解釈結果)を送り(ステップ９１３)、その後、ステップ９０２に戻る。また、読み込むべき命令がないと判定されれば、「データなし」を制御部８０２に通知する(ステップ９１４)。そして、制御部８０２からの処理継続許可を待つ(ステップ９１５)。その後、制御部８０２から処理継続許可を受信したら、ステップ９０２に進み、次の命令の処理に移る。
以上により、ＰＤＬデータ解釈部８０３の動作の説明を終了する。
【００４７】
ところで、このＰＤＬデータ解釈部８０３に対し、基本ページデータ２０１、印刷開始ページデータ７０１、印刷終了ページデータ７０２のいずれからデータを読み込むべきかを指示していたのは、制御部８０２であった。また、ＰＤＬデータ解釈部８０３がジョブ開始後命令又はジョブ終了命令を検出して中断した基本ページデータ２０１の解釈処理を再開してよいかどうか、或いは、印刷開始ページデータ７０１又は印刷終了ページデータ７０２のデータがなくなった際に処理を継続してよいかの指示も、制御部８０２が行っていた。
【００４８】
そこで、次に、この制御部８０２の動作について説明する。
図１０は、制御部８０２の動作を示したフローチャートである。
まず、制御部８０２は、ＰＤＬデータ解釈部８０３に対し、読込み先を基本ページデータ２０１に設定する(ステップ１００２)。図２のＰＤＬデータを例にとると、図２(ａ)の基本ページデータ２０１が読込み先として設定される。そして、制御部８０２は、ＰＤＬデータ解釈部８０３に解釈開始を指示する(ステップ１００３)。尚、ＰＤＬデータ解釈部８０３は、この指示を受け、ステップ９０３以降の基本ページデータ２０１の解釈処理を行うことになる。
【００４９】
その後、制御部８０２は、ＰＤＬデータ解釈部８０３からのジョブ開始後命令の処理可否問い合わせを待つ(ステップ１００４)。尚、ＰＤＬデータ解釈部８０３は、ジョブ開始後命令を検知した時点で制御部８０２に処理可否問い合わせを行い、制御部８０２からの返答が得られるまで処理を中断している。
このように、ＰＤＬデータ解釈部８０３から問い合わせが発生すると、制御部８０２は、未処理の印刷開始ページデータ７０１が存在するかどうかを判定する(ステップ１００５)。
【００５０】
その結果、未処理の印刷開始ページデータ７０１が存在すると判定された場合は、ＰＤＬデータ解釈部８０３に対し、読込み先を印刷開始ページデータ７０１に設定する(ステップ１００６)。図７のＰＤＬデータを例にとると、図７(ａ)の印刷開始ページデータ７０１が読込み先として設定される。そして、ＰＤＬデータ解釈部８０３からのジョブ開始後命令の処理可否問い合わせに対して「処理不可」を返す(ステップ１００７)。尚、ＰＤＬデータ解釈部８０３は、この回答を受信した時点で処理を再開する。但し、ＰＤＬデータ解釈部８０３は、ステップ９１０でジョブ開始後命令の読込みを取り消し、ステップ９０２で読込み先が印刷開始ページデータ７０１と判定されるので、ステップ９１１以降の印刷開始ページデータ７０１の解釈処理を行うことになる。
【００５１】
その後、制御部８０２は、ＰＤＬデータ解釈部８０３から「データなし」通知を待つ(ステップ１００８)。尚、ＰＤＬデータ解釈部８０３は、印刷開始ページデータ７０１を全て解釈し終わると、ステップ９１４で制御部８０２に「データなし」を通知する。
制御部８０２は、「データなし」通知を受信すると、ＰＤＬデータ解釈部８０３に対し、読込み先を基本ページデータ２０１に設定する(ステップ１００９)。そして、ＰＤＬデータ解釈部８０３に「処理継続許可」を送り(ステップ１０１０)、ステップ１００４に戻る。
【００５２】
一方、未処理の印刷開始ページデータ７０１が存在しないと判定された場合は、ＰＤＬデータ解釈部８０３からのジョブ開始後命令の処理可否問い合わせに対して「処理可能」を返す(ステップ１０１１)。このような場合としては、例えば、元々印刷開始ページデータ７０１が存在しない場合、即ち、オリジナルの文書をバナーページを挿入せずに印刷する場合がある。或いは、印刷開始ページデータ７０１の挿入が完了した場合もある。
【００５３】
その後、制御部８０２は、ＰＤＬデータ解釈部８０３からのジョブ終了命令の処理可否問い合わせを待つ(ステップ１０１２)。尚、ＰＤＬデータ解釈部８０３は、ジョブ終了命令を検知すると、ステップ９０７で制御部８０２に処理可否問い合わせを行い、制御部８０２からの返答が得られるまで処理を中断している。
このように、ＰＤＬデータ解釈部８０３から問い合わせが発生すると、制御部８０２は、未処理の印刷終了ページデータ７０２が存在するかどうかを判定する(ステップ１０１３)。
【００５４】
その結果、未処理の印刷終了ページデータ７０２が存在すると判定された場合は、ＰＤＬデータ解釈部８０３に対し、読込み先を印刷終了ページデータ７０２に設定する(ステップ１０１４)。図７のＰＤＬデータを例にとると、図７(ｂ)の印刷終了ページデータ７０２が読込み先として設定される。そして、ＰＤＬデータ解釈部８０３からのジョブ終了命令の処理可否問い合わせに対して「処理不可」を返す(ステップ１０１５)。尚、ＰＤＬデータ解釈部８０３は、この回答を受信した時点で処理を再開する。但し、ＰＤＬデータ解釈部８０３は、ステップ９１０でジョブ終了命令の読込みを取り消し、ステップ９０２で読込み先が印刷終了ページデータ７０２と判定されるので、ステップ９１１以降の印刷終了ページデータ７０２の解釈処理を行うことになる。
【００５５】
その後、制御部８０２は、ＰＤＬデータ解釈部８０３から「データなし」通知を待つ(ステップ１００８)。尚、ＰＤＬデータ解釈部８０３は、印刷終了ページデータ７０２を全て解釈し終わると、ステップ９１４で制御部８０２に「データなし」を通知する。
制御部８０２は、「データなし」通知を受信すると、ＰＤＬデータ解釈部８０３に対し、読込み先を基本ページデータ２０１に設定する(ステップ１００９)。そして、ＰＤＬデータ解釈部８０３に「処理継続許可」を送り(ステップ１０１０)、ステップ１００４に戻る。
【００５６】
一方、未処理の印刷終了ページデータ７０２が存在しないと判定された場合は、ＰＤＬデータ解釈部８０３からのジョブ終了命令の処理可否問い合わせに対して「処理可能」を返す(ステップ１０１６)。このような場合としては、例えば、元々印刷終了ページデータ７０２が存在しない場合、即ち、オリジナルの文書をバナーページを挿入せずに印刷する場合がある。或いは、印刷終了ページデータ７０２の挿入が完了した場合もある。即ち、印刷終了ページデータ７０２の挿入が完了すると、ステップ１００９、１０１０でＰＤＬデータ解釈部８０３に対し基本ページデータ２０１の命令を処理させることにより、処理待ち状態になっていたジョブ終了命令が処理される。そして、ステップ１００５での判定、及び、ステップ１０１３での判定が共に「Ｎｏ」となり、ステップ１０１６を経て、処理は終了する。
以上により、制御部８０２の動作の説明を終了する。
【００５７】
このように、本実施の形態では、印刷データをラスタデータに変換するに当たり、印刷データの解釈時にジョブ開始後命令又はジョブ終了命令を検知すると解釈を一時停止し、解釈対象のデータの読込み先を切り替えるようにした。これにより、オリジナルの印刷データに手を加えることなく、バナーページの追加を効率的に行えるようになった。即ち、一度作成したＰＤＬデータの前後にバナーページを描画する命令を挿入するには、一度ＰＤＬデータを解釈し、命令の挿入のためにＰＤＬデータを移動又はコピーする手法も考えられるが、本実施の形態によれば、かかる手法よりも格段に効率的な手法が得られる。
【００５８】
［第３の実施の形態］
本実施の形態は、基本ページデータ２０１の任意の命令の前後に付加的なＰＤＬデータを挿入するものである。即ち、付加的なＰＤＬデータを挿入する基本ページデータ２０１中の位置として、第１の実施の形態では、ページ出力命令の直前を採用し、第２の実施の形態では、ジョブ開始後命令及びジョブ終了命令の直前を採用したが、ここではこのような位置には限らないものとする。
このように任意の位置へＰＤＬデータを挿入するためには、例えば、図３のＰＤＬデータ解釈部３０３に対し、処理を中断すべき条件を登録する機構を設ければよい。この場合、ＰＤＬデータ解釈部３０３は、中断条件を検出した時点で、制御部３０２に中断条件を通知し、処理継続可能かどうかを問い合わせる。制御部３０２は、中断条件を解析し、付加的なＰＤＬデータを追加すべきと判定すれば、ＰＤＬデータ解釈部８０３に対して読込み先として付加的なＰＤＬデータを設定し、「処理不可」を通知すればよい。
【００５９】
ここで、中断条件としては、命令の種類を登録することもできるし、命令の種類と引数とを組み合わせたものを登録することもできる。例えば、全ての基本ページ画像１０１の前に白紙を挿入したいときは、ページ開始命令という命令の種類を中断条件として登録すればよい。一方、特定のサイズの基本ページ画像１０１の前だけに白紙を挿入したいときは、ページ開始命令とその命令の引数である用紙サイズを中断条件として登録すればよい。
【００６０】
尚、第１から第３の実施の形態では、基本ページデータ２０１の解釈時に特定の命令を検出すると、その命令を解釈せずに、付加的なＰＤＬデータを解釈するようにした。しかしながら、特定の命令を検出した場合に、その命令を解釈してから、付加的なＰＤＬデータを解釈するような構成としてもよい。このような構成において、第１の実施の形態のようにページ出力命令の直前に付加的なＰＤＬデータを挿入する場合、ページ出力命令の直前の命令が検出対象の命令となる。一方、第２の実施の形態のようにジョブ開始後命令及びジョブ終了命令の直前に付加的なＰＤＬデータを挿入する場合、ジョブ開始命令、及び、ジョブ終了命令の直前の命令が検出対象の命令となる。
また、第１から第３の実施の形態では、文書の印刷を指示する印刷データとして、ＰＤＬデータを例示したが、ホストコンピュータから印刷装置へ送られる文書データを印刷データとしてもよい。
【図面の簡単な説明】
【００６１】
【図１】本発明の第１の実施の形態で処理される画像の例を示した図である。
【図２】本発明の第１の実施の形態で処理されるＰＤＬデータの例を示した図である。
【図３】本発明の第１の実施の形態が適用されるコンピュータシステムの構成を示した図である。
【図４】本発明の第１の実施の形態におけるＰＤＬデータ解釈部の動作例を示したフローチャートである。
【図５】本発明の第１の実施の形態における制御部の動作例を示したフローチャートである。
【図６】本発明の第２の実施の形態で処理される画像の例を示した図である。
【図７】本発明の第２の実施の形態で処理されるＰＤＬデータの例を示した図である。
【図８】本発明の第２の実施の形態が適用されるコンピュータシステムの構成を示した図である。
【図９】本発明の第２の実施の形態におけるＰＤＬデータ解釈部の動作例を示したフローチャートである。
【図１０】本発明の第２の実施の形態における制御部の動作例を示したフローチャートである。
【符号の説明】
【００６２】
３００，８００…印刷装置、３０１，８０１…入力データ記憶部、３０２，８０２…制御部、３０３，８０３…ＰＤＬデータ解釈部、３０４，８０４…中間データ生成部、３０５，８０５…中間データ記憶部、３０６，８０６…中間データ展開部、３０７，８０７…ラスタデータ記憶部、３０８，８０８…印刷制御部、３０９，８０９…印刷エンジン、３１０…ページ加工データ生成部、３１１，８１１…ホストコンピュータ、３１２，８１２…データ入力部、８１０…バナーページデータ生成部
【図１】
0004706495.tif 000002
【図２】
0004706495.tif 000003
【図３】
0004706495.tif 000004
【図４】
0004706495.tif 000005
【図５】
0004706495.tif 000006
【図６】
0004706495.tif 000007
【図７】
0004706495.tif 000008
【図８】
0004706495.tif 000009
【図９】
0004706495.tif 000010
【図１０】
0004706495.tif 000011