情報処理装置及びプログラム、制御方法
【課題】 プリントキューに印刷装置に印刷される印刷データが送信されないジョブである非印刷ジョブが追加されると、印刷装置から非印刷ジョブの処理完了情報が来ない為、プリントキューに非印刷ジョブの管理情報が残ったままになる問題がある。
【解決手段】 情報処理装置はジョブ終了処理時に、非印刷ジョブの場合はダミーデータを印刷装置に書き込む。もしくは、ジョブ終了処理時に、印刷データを印刷装置に書き込んでいなければ、直接プリントキューに非印刷ジョブの管理情報を非表示にすることを指示する。
【解決手段】 情報処理装置はジョブ終了処理時に、非印刷ジョブの場合はダミーデータを印刷装置に書き込む。もしくは、ジョブ終了処理時に、印刷データを印刷装置に書き込んでいなければ、直接プリントキューに非印刷ジョブの管理情報を非表示にすることを指示する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は非印刷ジョブをスプールする情報処理装置に関する。
【背景技術】
【0002】
印刷装置に接続された情報処理装置が、印刷装置で印刷を行う方法の一つとして、次の方法が挙げられる。
この方法では、情報処理装置が印刷装置に印刷を指示すると、情報処理装置のプリントキューにジョブの管理情報が表示され、情報処理装置がジョブを印刷装置に送信する。その後、印刷装置はジョブの処理を完了した後に、プリントキューのジョブの管理情報の表示を完了状態に変更する処理完了情報を情報処理装置に送信する。
特許文献1には印刷装置に印刷ジョブを送信し、印刷装置の状態を取得し、印刷ジョブの印刷が完了したことを認識すると、プリントキューから印刷ジョブの情報が削除されることが開示されている。
また、プリンタ業界ではオーバレイ印字という技術が広く知られている。オーバレイ印字とは、雛型のデータと合成の対象となるデータを重ね合わせて印刷するものである。通常、雛型のデータは情報処理装置又は印刷装置のいずれかに保存される。
情報処理装置に雛型のデータを保存してオーバレイ印字をするにあたっては、スプールした雛型のデータをフォームファイルとして情報処理装置に保存する。そして、合成の対象となるデータを印刷装置に印刷指示する際に、保存したフォームファイルを合成の対象となるデータと重ね合わせて印刷する。
なお、本明細書では、フォームファイルのように印刷装置に印刷データが送信されないジョブを非印刷ジョブと呼ぶ。印刷データとは、そのデータを、変換し又は変換をせずに印刷装置に送信すると、印刷装置による印刷がされるデータである。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2009−3778号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
情報処理装置が非印刷ジョブをスプールすると、スプールした非印刷ジョブの管理情報がプリントキューに表示される。しかし、非印刷ジョブの印刷データは印刷装置に送信する必要がないため、印刷データを含む非印刷ジョブは印刷装置には送信されない。よって、印刷装置は情報処理装置から非印刷ジョブを受信せず、非印刷ジョブの処理完了情報を情報処理装置に送信しない。
その結果、情報処理装置は非印刷ジョブの処理完了情報を受信することができないため、プリントキューに非印刷ジョブの管理情報が未完了状態で残ったままになる。これにより、非印刷ジョブが再度処理される課題や、ユーザが非印刷ジョブの管理情報をプリントキューから手動で完了状態に変更する手間が生じる課題がある。
【課題を解決するための手段】
【0005】
上記の目的を達成するための本発明に係る情報処理装置は、ジョブを管理するための管理情報を情報処理装置のプリントキューに表示し、通信経路を介して印刷装置に前記ジョブを送信した後に、前記プリントキューにおける前記ジョブの管理情報の表示を未完了状態から完了状態に変更する処理完了情報を前記印刷装置から受信する情報処理装置において、
前記プリントキューに表示した前記管理情報に対応するジョブが、前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信しない、非印刷ジョブであるか否かを判断する判断手段と、
前記判断手段において前記ジョブが前記非印刷ジョブであると判断された場合に、前記非印刷ジョブに対応した前記印刷装置によって印刷されないダミーデータを前記印刷装置に送信する送信手段と、を有し、
前記送信手段によって前記ダミーデータが前記印刷装置に送信された後に前記ダミーデータの処理完了情報を受信することにより、前記プリントキューにおける前記非印刷ジョブの管理情報が未完了状態から完了状態に変更されることを特徴とする。
上記の目的を達成するための本発明に係る他の情報処理装置は、ジョブを管理するための管理情報を情報処理装置のプリントキューに表示し、通信経路を介して印刷装置に前記ジョブを送信した後に、前記プリントキューにおける前記ジョブの管理情報の表示を未完了状態から完了状態に変更する処理完了情報を前記印刷装置から受信する情報処理装置において、
前記プリントキューに表示した管理情報に対応するジョブが、前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信しない、非印刷ジョブであるか否かを判断する判断手段と、
前記判断手段において前記ジョブが前記非印刷ジョブであると判断された場合に、前記印刷装置からの処理完了情報を待たずに、前記プリントキューにおける前記非印刷ジョブの管理情報の表示を完了状態に変更する完了手段と、を有することを特徴とする。
【発明の効果】
【0006】
本発明によれば、印刷装置に印刷データが送信されない非印刷ジョブであっても、プリントキューに表示された非印刷ジョブの管理情報が未完了状態で残ることによる課題を解決できる。
【図面の簡単な説明】
【0007】
【図1】情報処理装置とネットワークを介して接続された印刷装置により構成された印刷システムの構成を示すブロック図。
【図2】印刷システムの構成を示す機能コンポーネント。
【図3】通常印刷ジョブの印刷処理の流れを示す図。
【図4】フォーム作成ジョブの印刷処理の流れを示す図。
【図5】グラフィックスドライバがランゲージモニタへジョブのジョブタイプを通知する処理を示すフローチャート。
【図6】ジョブのジョブタイプを通知するスキーマを表す図。
【図7】ジョブのジョブタイプを通知するスキーマを表す図。
【図8】ランゲージモニタが印刷データの書き込みを行ったかどうかを記憶する処理を示すフローチャート。
【図9】ランゲージモニタのEndDocPort()の処理を示すフローチャート。
【図10】ランゲージモニタのEndDocPort()の処理を示すフローチャート。
【図11】ダミーデータを表す図。
【図12】フォーム作成ジョブの印刷処理の流れを示す図。
【図13】スプーラの印刷終了処理を示すフローチャート。
【図14】ポートモニタが印刷データの書き込みを行ったかどうかを記憶する処理を示すフローチャート。
【図15】ポートモニタのEndDocPort()の処理を示すフローチャート。
【図16】スプーラがランゲージモニタのWritePort()を呼び出す処理を示すフローチャート。
【図17】スプーラの印刷終了処理を示すフローチャート。
【図18】プリントキューの表示状態を表す図。
【発明を実施するための形態】
【0008】
[実施形態1]
図1から図11を参照し、本発明を適用できる実施形態1を説明する。
【0009】
(システムの構成)
図1を用いて、情報処理装置と通信経路であるネットワークを介して接続された印刷装置により構成された印刷システムの構成を説明する。
なお、通信経路は有線/無線のネットワークだけでなく、後述するインターフェース部108によるUSBや赤外線の通信であってもよい。
【0010】
図1において、100は情報処理装置であり、一般的なPCで構成される。情報処理装置100はRAM101、外部記憶装置102、マウスやキーボード等の入力装置103、CPU104、ネットワークボード105、表示用ディスプレイ106、インターフェース部108、以上の構成要素を互いに接続するバス107から構成される。
【0011】
RAM101は外部記憶装置102に保存される各種プログラムがワークメモリとして使用する。外部記憶装置102にはアプリケーションプログラム群とOS、プリンタドライバやその他各種のデータが保存されている。入力装置103はデータ入力あるいは動作指示に使用される。表示用ディスプレイ106は接続される印刷装置又は情報処理装置のデータ表示や状態の通知に使用される。ネットワークボード105はネットワークを介する通信を行い、ネットワーク109と接続されている。なお、インターフェース部108によっても、上述したように印刷装置110と接続することができる。
【0012】
また、CPU104は、表示用ディスプレイ106上に表示されたGUIのマウスカーソルや、キーボードのキー入力により、外部記憶装置102のプログラムのウインドウを開き、種々のデータ処理を実行する。これにより、ユーザは印刷を実行する際、印刷の設定に関するウインドウを開き、印刷装置110の設定や、印刷モードの選択を含むプリンタドライバに対する印刷処理方法の設定を行える。
【0013】
加えて、CPU104が外部記憶装置102に記憶されているプログラムに基づき処理を実行することによって、図2に示されるような情報処理装置100のソフトウェア構成及び後述するフローチャートの各ステップの処理が実現される。
【0014】
印刷装置110は、ネットワークボード111、RAM112、ROM113、CPU114、印刷エンジン115、インターフェース部116を有する。また、以上の構成要素を互いに接続するバス117を有する。
【0015】
ネットワークボード111はネットワーク109に接続してある。ROM113には制御プログラムなどが格納されている。CPU114はROM113に格納してある制御プログラムに従って印刷装置110を制御する。RAM112はCPU114のワークメモリとして使用され、受信したデータをいったん保存する受信バッファとしても用いられる。印刷エンジン115はRAM112に保存されたデータを印刷する。
【0016】
(機能コンポーネント)
図2は、図1に示した情報処理装置100に適用可能な印刷システムを表すブロック図である。図において、ユーザインターフェースモジュール203、グラフィックスドライバ204、ランゲージモニタ208は、各々、プリンタドライバ210を構成するモジュールである。
これらはOS又は他のプログラムから呼び出されることで外部記憶装置102からRAM112にロードされ実行される。
【0017】
アプリケーション201はOSの印刷サポート機能202を介して、ユーザインターフェースモジュール203から印刷設定情報を取得し、ジョブの印刷データを作成する。
【0018】
なお、本明細書では印刷データとは、そのデータを、変換し又は変換をせずに印刷装置110に送信すると、印刷装置110により印刷されるデータである。
【0019】
アプリケーション201が作成したデータは、OSの印刷サポート機能202を介して、スプーラ205に渡される。スプーラ205は受け取ったデータをスプールデータ保存場所207に保存する。
【0020】
プリントキュー206はデータがスプールデータ保存場所207に保存されると、当該データを含むジョブがスプールされたことを表示する。具体的にはプリントキュー206にジョブの管理情報を表示し、その管理情報の状態の表示として当該ジョブがスプール中であることを示す。
プリントキューの詳細な表示方法は後述する。
【0021】
(スプール後の通常印刷ジョブとフォーム作成ジョブの処理の流れ)
これ以降の処理はジョブの種類が「通常印刷ジョブ」か「フォーム作成ジョブ」で異なる。
【0022】
「通常印刷ジョブ」とは印刷装置110に送信されて、通常印刷ジョブの印刷データに基づいて印刷装置に印刷が指示されるジョブである。
【0023】
ジョブの処理の順番が来ると、スプールデータ保存場所207のデータはOSの印刷サポート機能202に送られ、グラフィックスドライバ204の助けを借りて、印刷装置110が解釈できるコマンド形式のデータに変換される。グラフィックスドライバ204はスプーラ205に対して変換されたデータを渡すことで、変換されたデータを印刷装置110が印刷をするために送信することを指示する。スプーラ205は渡されたデータをランゲージモニタ208に渡す。ランゲージモニタ208は変換されたデータをポートモニタ209に出力する。ポートモニタ209がネットワーク109を経由して、渡されたデータをジョブとして、印刷装置110に送信する。
【0024】
「フォーム作成ジョブ」とはフォームファイル211を作成する為のジョブであり、印刷装置110には送信されず、印刷装置110に印刷が指示されない。
【0025】
ユーザがフォームファイル211を作成する手順を説明する。
【0026】
ユーザはアプリケーション201に印刷の設定を指示し、アプリケーション201がユーザインターフェースモジュール203を呼び出す。ユーザはユーザインターフェースモジュール203を用いて印刷の出力方法の設定の一部として、ジョブタイプを通常印刷ジョブからフォーム作成ジョブに変更する。変更後、ジョブタイプを含む印刷の出力方法の設定が、RAM101に変数として保存される。
【0027】
その後、ユーザがアプリケーション201から印刷指示をすると、印刷データがスプーラ205によってスプールされる。スプーラ205が印刷データをグラフィックスドライバ204に渡し、グラフィックスドライバ204はRAM101の印刷の出力方法の設定が保存された変数を呼び出し、ジョブタイプがフォーム作成ジョブであることを把握して動作する。これにより、スプールされた印刷データはオーバレイ印字を行う際のフォームファイル211として使う為に、グラフィックスドライバ204によりフォームファイル211として保存される。よって、印刷装置への印刷の指示として、グラフィックスドライバ204から印刷データがスプーラ205に送信されることはない。
【0028】
作成されたフォームファイル211はオーバレイ印字における雛型である。先の雛型と後からアプリケーションにより出力される装飾ジョブとが合成されて、印刷ジョブとして印刷装置に送信され、印刷装置が合成物の印刷を行う。
【0029】
なお、本明細書ではデータがスプールデータ保存場所207に保存され、当該データが印刷装置には送信されない非印刷ジョブの一例としてフォーム作成ジョブを挙げる。この他にデータがスプールデータ保存場所207に保存されるが、印刷装置には送信されない非印刷ジョブは、プレビュー及びスタンプ、地紋が指定された場合に生成されてもよい。プレビューの場合は、閲覧のために印刷データがスプールされ、スプールされた印刷データは閲覧後に破棄される。スタンプと地紋、又はこれらが合成される前のデータは、フォーム作成ジョブと同じく情報処理装置にファイルとして保存され、印刷装置に送信されない。よって、これらを扱う情報処理装置に対しても本発明は適用することができる。
【0030】
以降、通常印刷ジョブとフォーム作成ジョブは明確に分けて使う必要がある際には使い分け、区別せずに分かる場合はどちらであってもジョブと表現することとする。
【0031】
本実施形態では印刷方法としてWindows Vista(登録商標)から採用されているWeb Services on Devices(以降、WSDと呼ぶ)を用いた印刷を例に説明する。これに限定されることなく、異なる印刷方法についても本発明を適用することができる。
【0032】
また同様に、ポートモニタ209としてWSD印刷用のポートモニタを想定しているが、これに限定されることなく様々なポートモニタに本発明は適用することができる。
【0033】
(通常印刷ジョブの処理の流れ)
図3はWSDを用いた印刷における通常印刷ジョブの処理の流れを示したものである。
【0034】
なお、図3の301が開始される前にプリントキュー206にはこれから印刷処理が行われるジョブの管理情報が既に表示されている。
【0035】
301でスプーラ205はランゲージモニタ208の関数であるStartDocPort()を呼び出し、ランゲージモニタ208に印刷処理の開始を指示する。302でランゲージモニタ208はポートモニタの関数であるStartDocPort()を呼び出す。
【0036】
303でスプーラ205はランゲージモニタ208の関数であるWritePort()を呼び出し、ジョブの印刷データの送信を開始する。304でランゲージモニタ208はポートモニタ209の関数であるWritePort()を呼び出す。305でポートモニタ209はCreatePrintJob Requestを印刷装置110に送信し印刷の開始を通知する。306で印刷装置110はCreatePrintJob Responseをポートモニタ209に送信する。
【0037】
307でポートモニタ209はSendDocument Requestを印刷装置110に送信する。308でポートモニタ209が印刷装置110に最初の印刷データの送信を行う。308の後に、ポートモニタ209が304のWritePort()をランゲージモニタ208にリターンする。
【0038】
309では、スプーラ205は続けて印刷データを印刷装置110に送信するためにランゲージモニタ208の関数であるWritePort()を呼び出し、ランゲージモニタ208はポートモニタ209の関数であるWritePort()を呼び出す。ポートモニタ209はWritePort()の処理で、印刷データを印刷装置110に送信する。スプーラ205とランゲージモニタ208とポートモニタ209は、これらの処理を印刷データの全てを送信するまで繰り返す。
【0039】
スプーラ205はランゲージモニタ208に全ての印刷データの送信を完了すると、310でランゲージモニタ208の関数であるEndDocPort()を呼び出す。続いて311でランゲージモニタ208はポートモニタ209の関数であるEndDocPort()を呼び出す。312でポートモニタ209は、308及び309による印刷データの送信終了を示す送信完了情報を印刷装置110に送信する。
【0040】
印刷装置110はジョブの印刷データに基づく印刷を行い、313で、処理完了情報であるJobEndStateEventをポートモニタ209に送信する。これにより印刷装置110が情報処理装置100にジョブの処理が完了したことを伝える。
【0041】
プリントキュー206から通常印刷ジョブの管理情報が非表示になる流れを説明する。
【0042】
印刷装置110が通常印刷ジョブを処理するために、情報処理装置100が、CreatePrintJob Requestを印刷装置110に送信後、印刷装置110から受信したCreatePrintJob Responseに対応するJobEndStateEventを印刷装置110から受信する。印刷装置によるジョブの処理が正常に行われた場合、処理完了情報であるJobEndStateEventは、情報処理装置にプリントキューにおける通常印刷ジョブの管理情報の表示を、完了状態に変更させることを意味する。
【0043】
よって、前述したJobEndStateEventを印刷装置110から受信すると、プリントキュー206の通常印刷ジョブの管理情報が完了状態である非表示となる。
【0044】
(プリントキューの表示方法)
図18を用いてプリントキューの表示方法について説明する。
【0045】
図18(a)にプリントキューがスプール中のジョブの管理情報を表示している状態の一例を示す。このように表示されているジョブを未完了状態にあるという。前述したように、プリントキュー206のジョブの管理情報が非表示となった状態を図18の(d)に示す。このように表示されているジョブを完了状態にあるという。
【0046】
一般的に、プリントキューのジョブの管理(表示)の様に、一覧にして個々の対象を管理する方法としては「変更」、「非表示」、「削除」の3つが考えられる。
【0047】
「変更」とは、図18(a)に示すように、ジョブの印刷を指示し印刷装置110による印刷を待っている状態から、図18(b)に示すように、当該ジョブが印刷済みであることを示すように管理情報の表示を変更することを意味する。
【0048】
「非表示」とは、図18(d)に示すように、文字通りジョブの管理情報が非表示となることを意味する。なお非表示は、プリントキューが内部に過去に表示されたジョブの管理情報の履歴を保持しており、図18(c)に示すように、ジョブが印刷済みとなった後にその履歴を表示できる場合を含む。
【0049】
「削除」は前述の非表示に含まれるが、ジョブの履歴を閲覧することはできず、ジョブの管理情報そのものが削除され、再度閲覧することができなくなることを意味する。
【0050】
プリントキューがジョブの管理情報を前述した「変更」、「非表示」、「削除」のいずれによっても管理を行う事ができる。
【0051】
本明細書ではプリントキューに表示されたジョブの印刷処理が完了されると、プリントキューのジョブの管理情報が非表示となる例を記載するが、管理情報を変更することでジョブの管理(表示)を行ってもよい。
【0052】
(フォーム作成ジョブの処理の流れ)
図4を用いて、本実施形態の、WSD印刷におけるフォーム作成ジョブの処理の流れについて説明する。
【0053】
401でスプーラ205はランゲージモニタ208の関数であるStartDocPort()を呼び出し印刷処理の開始を行う。402でランゲージモニタ208はポートモニタの関数であるStartDocPort()を呼び出す。
【0054】
フォーム作成ジョブは、印刷装置110に印刷データを送信しない非印刷ジョブである。この為、スプーラ205は図3の303のようなランゲージモニタ208のWritePort()を呼び出さず、403でランゲージモニタ208の関数であるEndDocPort()を呼び出す。
【0055】
その後、404でランゲージモニタ208はポートモニタ209に対してWritePort()を呼び出し、ダミーデータの書き込みを行う。
【0056】
ダミーデータとは印刷装置110が受信して読み捨てるだけのデータである。図11でダミーデータの一例を説明する。図11においてダミーデータの値は、長さが1バイトで、値が0である。
【0057】
なお、本発明は印刷装置110がダミーデータを受信した際に、当該ダミーデータを読み捨てる仕様であるものに対して適用することができる。読み捨てるとは、印刷装置110が印刷処理を一切行わずにジョブの処理を完了することを意味する。
【0058】
もし、404で、非印刷ジョブに対応するダミーデータの書き込みを行わないと、405乃至408、410の各ステップが実行されない。これらのステップが実行されなければ後述する411で、印刷装置110は処理完了情報であるJobEndStateEventを送信しないので、プリントキュー206のフォーム作成ジョブの管理情報が未完了状態で表示されたままとなる。
【0059】
405でポートモニタ209はCreatePrintJob Requestを印刷装置110に送信し印刷処理の開始(この場合はダミーデータの書き込み)を通知する。406で印刷装置110はCreatePrintJob Responseをポートモニタ209に送信する。407でポートモニタ209はSendDocument Requestを印刷装置110に送信後、408でダミーデータを印刷装置110に送信する。408のダミーデータ送信後に、ポートモニタ209が404のWritePort()をランゲージモニタ208にリターンする。
【0060】
ランゲージモニタ208はダミーデータの書き込みが完了後、409でポートモニタ209の関数であるEndDocPort()を呼び出す。410でポートモニタ209は、408によるダミーデータの送信が完了したことを示す送信完了情報を印刷装置110に送信する。印刷装置110はダミーデータの処理が完了すると、411で処理完了情報であるJobEndStateEventをポートモニタ209に送信し、ダミーデータの処理が完了したことを通知する。
【0061】
プリントキュー206からフォーム作成ジョブの管理情報が非表示になる流れを説明する。
【0062】
ダミーデータを印刷装置110が処理するために、情報処理装置100が、CreatePrintJob Requestを印刷装置110に送信後、印刷装置110から受信したCreatePrintJob Responseに対応するJobEndStateEventを印刷装置110から受信する。印刷装置によるダミーデータの処理が正常に行われた場合、処理完了情報であるJobEndStateEventは、情報処理装置にプリントキューにおけるフォーム作成ジョブの管理情報の表示を、完了状態に変更させることを意味する。
【0063】
よって、前述したJobEndStateEventを印刷装置110から受信すると、プリントキュー206のフォーム作成ジョブの管理情報が完了状態である非表示となる。
【0064】
(Printing and Print Spooler Interfaces)
次に、ランゲージモニタ208のジョブのジョブタイプ判定処理について詳細に説明する。
【0065】
ここで判定されたジョブタイプに基づいて、後述するランゲージモニタ208のEndDocPort()の処理において、ダミーデータが印刷装置110に送信されるか否かが決定される。
【0066】
ここでは、MSDNのサイトで公開されているPrinting and Print Spooler Interfacesを利用して、グラフィックスドライバ204がランゲージモニタ208にジョブのジョブタイプを通知する方法について説明する。
【0067】
グラフィックスドライバ204はPrinting and Print Spooler Interfacesを利用して、ジョブのジョブタイプが通常印刷ジョブかフォーム作成ジョブであるかを、ランゲージモニタ208に通知することができる。
【0068】
図5の501で、グラフィックスドライバ204はジョブタイプの通知処理を開始する。502で、前述したRAM101の印刷の出力方法の設定が保存された変数が呼び出され、現在処理中のジョブのジョブタイプを取得する。503でスキーマパスとして¥Printer.JobType:Valueをセットし、504でそのValueとして502で取得したジョブタイプをセットし、505でランゲージモニタ208の処理を呼び出す。
【0069】
具体的には、グラフィックスドライバ204はPrinting and Print Spooler Interfacesで用意されているCOMインターフェースIBidiSplのAPI関数IBidiSpl::SendRecv()を呼び出す。グラフィックスドライバ204がIBidiSpl::SendRecv()を呼び出すと、ランゲージモニタ208のエクスポート関数であるSendRecvBidiDataFromPort()が呼び出される。
【0070】
506でランゲージモニタ208はSendRecvBidiDataFromPort()の処理を開始する。507で関数の引数にセットされたスキーマパスを取得する。508でスキーマパスが¥Printer.JobType:Valueかどうかを判定する。判定の結果、Yesであれば509に進み、¥Printer.JobTypeのValue(値)を参照する。508の判定の結果がNoの場合は512に進む。510でValueがFormかどうかを判定し、Formの場合は、511でジョブタイプを表す変数に「フォーム作成ジョブ」を設定しRAM101に記憶した後、512に進む。510で、ValueがFormでないと判定した場合は512に進む。512でランゲージモニタ208のSendRecvBidiDataFromPort()の処理が終了すると、505のIBidiSpl::SendRecv()を呼び出しがリターンし、513に進む。513で、グラフィックスドライバ204はジョブタイプ通知処理を終了する。
【0071】
図6はグラフィックスドライバ204が、ランゲージモニタ208にジョブタイプを通知する時に使用するスキーマを表す図である。これらのスキーマは、グラフィックスドライバ204がIBidiSpl::SendRecv()をコールする際に引数として指定される。図6において、JobTypeはジョブの種類を表すValueであり、スキーマのフルパスの指定は¥Printer.JobType:Valueである。データ型はBIDI_STRINGである。設定可能な値は、図7に示している様に、NormalとFormである。Normalはジョブが通常印刷ジョブであることを示す。Formはジョブがフォーム作成ジョブであることを示す。
【0072】
(ランゲージモニタのEndDocPort()の処理)
図9でランゲージモニタ208がEndDocPort()の処理をジョブタイプで切り換える動作について説明する。
【0073】
901でランゲージモニタ208はスプーラ205にコールされたEndDocPort()の処理を開始し、902でRAM101のジョブタイプを表す変数を参照する。903でジョブタイプが「フォーム作成ジョブ」かどうかを判定し、フォーム作成ジョブの場合は、904に進みダミーデータをポートモニタ209に書き込み、905に進む。903でフォーム作成ジョブではないと判定した場合は、905に進む。905でポートモニタ209のEndDocPort()を呼び出し、906に進み、処理を終了する。
【0074】
以上により、グラフィックスドライバ204がジョブのジョブタイプがフォーム作成ジョブであることをランゲージモニタ208に通知し、ランゲージモニタ208がEndDocPort()の処理でダミーデータの書き込みを行う。こうすることで印刷装置110からJobEndStateEventがポートモニタ209へ送信され、プリントキュー206は正常にフォーム作成ジョブの管理情報を非表示にすることができる。
【0075】
なお、本実施形態ではジョブタイプが通常印刷ジョブであるか、フォーム作成ジョブであるかで処理を切り替える例を示した。これによらず、印刷を指示されたジョブのジョブタイプが通常印刷ジョブであるか、印刷装置に送信して印刷を行わない非印刷ジョブであるかを基に処理を切り替えてもよい。
【0076】
[実施形態2]
本実施形態では図8を用いて、実施形態1で用いたジョブタイプとは別の判断材料でランゲージモニタ208のEndDocPort()の処理を切り替える例(詳細は図10で説明する)を示す。
【0077】
印刷システムの構成は、実施形態1と同一であり、図1と図2で表すことができる。また、本実施形態の、WSD印刷におけるフォーム作成ジョブの処理の流れは図4に表される。
【0078】
なお、図8に示す処理は通常印刷ジョブに対してのみ行われる。図4に示すようにフォーム作成ジョブに対してはランゲージモニタ208がスプーラ205からコールされてWritePort()の処理を実行することがない。
【0079】
また、RAM101にデータ書き込みを行ったかどうかを示す変数が格納されており、これは図8の処理を実行する前に初期値としてFALSEが代入されている。
【0080】
図8を用いて、通常印刷ジョブに対するランゲージモニタ208のWritePort()の処理について詳細に説明する。
【0081】
801でランゲージモニタ208はWritePort()の処理を開始し、802でスプーラ205から印刷データを受信する。803で印刷データをポートモニタ209に書き込む。804でデータ書き込みを行ったかどうかを示す変数にTRUEを代入し、805に進み処理を終了する。
【0082】
図10でランゲージモニタ208がEndDocPort()の処理を、ジョブ処理中に印刷データの書き込みを行ったかどうかで切り換える動作について説明する。1001で、ランゲージモニタ208はEndDocPort()の処理を開始し、1002でデータ書き込みを行ったかどうかを示す変数を参照する。1003でデータ書き込みを行ったかどうかを示す変数の値がTRUEであるかどうかを判定し、TRUEの場合は、1005に進む。1003で変数の値がTRUEでない場合、すなわちFALSEである場合は、1004に進みでWritePort()でダミーデータをポートモニタ209に書き込み、1005に進む。1005でポートモニタ209のEndDocPort()を呼び出し、1006に進み、処理を終了する。
【0083】
以上により、フォーム作成ジョブのように、印刷装置110へのデータ書き込みが行われないジョブの場合においても、ランゲージモニタ208がそれを検知し、EndDocPort()の処理でダミーデータの書き込みを行う。これにより印刷装置110からJobEndStateEventがポートモニタ209へ送信され、プリントキュー206は正常にフォーム作成ジョブの管理情報を非表示することができる。
【0084】
なお、本実施形態は、グラフィックスドライバ204とランゲージモニタ208によって課題を解決する実施形態1と異なり、グラフィックスドライバ204を用いずに課題を解決することができる。
【0085】
[実施形態3]
本実施形態では、グラフィックスドライバ204がOSの印刷サポート機能202にジョブのジョブタイプを通知する。その後、スプーラ205の印刷終了処理において、ジョブタイプがフォーム作成ジョブの場合は処理完了情報を待たずに処理を終了することにより、課題を解決する。
【0086】
印刷システムの構成は、実施形態1と同一であり、図1と図2で表すことができる。
【0087】
(フォーム作成ジョブの処理の流れ)
図12を用いて、本実施形態の、WSD印刷におけるフォーム作成ジョブの処理の流れについて説明する。
【0088】
1201でスプーラ205はランゲージモニタ208の関数であるStartDocPort()を呼び出し印刷処理の開始を行う。1202でランゲージモニタ208はポートモニタの関数であるStartDocPort()を呼び出す。
【0089】
フォーム作成ジョブは、印刷装置110に印刷データを送信しないジョブである為、スプーラ205はランゲージモニタ208のWritePort()の呼び出しは行わず、1203でランゲージモニタ208の関数であるEndDocPort()を呼び出す。1204でランゲージモニタ208はポートモニタ209の関数であるEndDocPort()を呼び出す。
【0090】
スプーラ205は1203のEndDocPort()のリターンがあった後に、印刷終了処理を実行し、プリントキュー206に印刷処理を行ったフォーム作成ジョブの管理情報を非表示にすることを指示する。
【0091】
(グラフィックスドライバからOSの印刷サポート機能へのジョブタイプの通知)
図2を用いて、グラフィックスドライバ204からOSの印刷サポート機能202にジョブタイプが通知される流れを説明する。
【0092】
アプリケーション201はOSの印刷サポート機能202が提供するAPI(Application Program Interface)を呼び出し、データを作成する。アプリケーション201が作成したデータは、OSの印刷サポート機能202を介して、スプーラ205に渡される。スプーラ205は受け取ったデータを、ジョブごとにスプールデータ保存場所207に保存する。ジョブの処理の順番が来ると、スプールデータはOSの印刷サポート機能202を介して、グラフィックスドライバ204に渡される。本実施形態では、この時、グラフィックスドライバ204からOSの印刷サポート機能202に対してジョブのジョブタイプの通知が行われる。
【0093】
ジョブのジョブタイプの通知は、OSの印刷サポート機能202が、予め決められたグラフィックスドライバ204のエクスポート関数を呼ぶことによって行われる。OSの印刷サポート機能202がグラフィックスドライバ204のエクスポート関数を呼ぶと、グラフィックスドライバ204は、エクスポート関数の戻り値にジョブタイプをセットして、エクスポート関数の処理を終了する。これによりグラフィックスドライバ204からOSの印刷サポート機能202に対してジョブタイプが通知される。
【0094】
これに限らず別の方法でOSの印刷サポート機能202にジョブタイプを通知してもよい。例えば、アプリケーション201がAPIを呼び出してジョブを作成する時に、API経由でジョブタイプをOSの印刷サポート機能202に通知してもよい。
【0095】
その後、OSの印刷サポート機能202は通知されたジョブタイプをスプーラが参照可能な変数としてRAM101に格納する。
【0096】
(スプーラの印刷終了処理)
図13でグラフィックスドライバ204から通知されたジョブタイプにより、スプーラ205の印刷終了処理を切り替える場合について説明する。
【0097】
1301でスプーラ205は印刷終了処理を開始する。1302でスプーラ205は、RAM101の変数に格納されている、前述のグラフィックスドライバ204から通知されたジョブタイプを参照する。1303で、1302において参照されたジョブタイプがフォーム作成ジョブかどうかを判定し、フォーム作成ジョブの場合は1306に進む。1306で、プリントキュー206に、ジョブタイプが通知された当該フォーム作成ジョブの管理情報を非表示にすることを指示し、1307でスプーラ205の印刷終了処理を終了する。
【0098】
1303でフォーム作成ジョブでない、すなわち通常印刷ジョブであると判定した場合は1304に進む。1304で、印刷装置110から処理完了情報を受信したかどうか判定する。1304で処理完了情報を受信していない場合は、処理完了情報を受信するのを待ち、再び1304で処理完了情報を受信したかどうか判定する。1304で、処理完了情報を受信した場合は、1306に進み、プリントキュー206に、ジョブタイプが通知された当該通常印刷ジョブの管理情報を非表示にすることを指示し、1307でスプーラ205の印刷終了処理を終了する。
【0099】
以上により、スプーラ205の印刷終了処理において、ジョブのジョブタイプがフォーム作成ジョブの場合、印刷装置110からの処理完了情報の受信を待たずにプリントキュー206にフォーム作成ジョブの管理情報を非表示することを指示する。これにより印刷装置110から処理完了情報を待ち続けてしまい、プリントキュー206のフォーム作成ジョブの管理情報が未完了状態のまま非表示にされないという問題を解決できる。
【0100】
本実施形態は実施形態1及び2と異なり、印刷装置110との通信を行わずに、プリントキュー206のフォーム作成ジョブの管理情報を非表示にすることができる。よって、印刷装置110の電源が切れている場合や、情報処理装置100と印刷装置110間の通信経路が途絶えている場合であっても、課題を解決することができる。
【0101】
この効果は以降の実施形態についても同じである。
【0102】
[実施形態4]
本実施形態では図16及び図17を用いて、実施形態3で用いたジョブタイプとは別の判断材料で、スプーラ205の終了処理を切り替える例を説明する。
【0103】
印刷システムの構成は、実施形態1と同一であり、図1と図2で表すことができる。WSD印刷における通常印刷ジョブの処理の流れは図3に表される。フォーム作成ジョブの処理の流れは図12に表される。
【0104】
なお、図16に示す処理は通常印刷ジョブに対してのみ行われる。図12に示すようにフォーム作成ジョブに対してはランゲージモニタ208がスプーラ205から呼び出されてWritePort()の処理を実行することがない。
【0105】
また、RAM101にデータ書き込みを行ったかどうかを示す変数が格納されており、これは図16の処理を実行する前に初期値としてFALSEが代入されている。
【0106】
図16では、スプーラ205が通常印刷ジョブの処理中に印刷データの書き込みを行ったかどうかを判定する。
【0107】
1601でスプーラ205は処理を開始し、1602でスプールされた印刷データをランゲージモニタ208のWritePort()により書き込む。1603で、データ書き込みを行ったかどうかを示す変数にTRUEを設定し、1604に進み処理を終了する。
【0108】
図17でジョブ処理中に印刷データの書き込みを行ったかどうかにより、スプーラ205の印刷終了処理を切り替える場合について説明する。なお、スプーラの印刷終了処理は、図12の1203のEndDocPort()のリターン後に行われる。
【0109】
1701でスプーラ205は印刷終了処理を開始する。1702でスプーラ205はデータ書き込みを行ったかどうかを示す変数を参照する。1703で、1702で参照した変数の値がTRUEかどうかを判定する。1703でTRUEでないと判定した場合は、1706に進み、プリントキュー206に、印刷データの書き込みを行っていない当該ジョブの管理情報を非表示にすることを指示し、1707で処理を終了する。
【0110】
1703でTRUEと判定した場合は1704に進み、印刷装置110から処理完了情報を受信したかどうか判定する。1704で受信していないと判定した場合は、再び1704で処理完了情報を受信したかどうか判定する。1704で処理完了情報を受信したと判定した場合は、1706に進み、プリントキュー206に、印刷データの書き込みを行っていない当該ジョブの管理情報を非表示にすることを指示し、1707で処理を終了する。
【0111】
図16と図17による処理をまとめると以下の通りである。
【0112】
通常印刷ジョブの場合は図16の処理が実行され、データ書き込みを行ったかどうかを示す変数がTRUEとなる。よって、図17のスプーラ205の処理では印刷装置110から処理完了情報を受信するまで待機する。
【0113】
フォーム作成ジョブの場合は図16の処理が実行されないため、データ書き込みを行ったかどうかを示す変数が初期値のFALSEのままである。よって、図17のスプーラ205の処理で印刷装置110から処理完了情報を待たずに、プリントキュー206にフォーム作成ジョブの管理情報を非表示にするように指示する。
【0114】
以上により、ジョブ処理中に印刷データの書き込みを行わなかった場合は、印刷装置110からの処理完了情報の受信を待たずに、スプーラ205がプリントキュー206に印刷データの書き込みを行わなかったジョブの管理情報を非表示することを指示する。これにより印刷装置110から処理完了情報を待ち続けてしまい、プリントキュー206の印刷データの書き込みを行わなかったジョブの管理情報が非表示にされないという問題を解決できる。
【0115】
[実施形態5]
本実施形態では、ポートモニタ209はポートモニタ209自身のWritePort()の書き込み処理の有無を判断し、スプーラ205を経由してプリントキュー206にジョブの管理情報を非表示にすることを指示することにより、課題を解決する。
【0116】
印刷システムの構成は、実施形態1と同一であり、図1、図2で表すことができる。WSD印刷における通常印刷ジョブの処理の流れは図3に表される。フォーム作成ジョブの処理の流れは図12に表される。
【0117】
また、RAM101にデータ書き込みを行ったかどうかを示す変数が格納されており、これは図14の処理を実行する前に初期値としてFALSEが代入されている。
【0118】
図14を用いて、通常印刷ジョブに対するポートモニタ209のWritePort()の処理について説明する。
【0119】
1401でポートモニタ209はWritePort()の処理を開始し、1402でランゲージモニタ208から印刷データを受信する。1403で、1402で受信した印刷データを印刷装置110に書き込む。1404で、データ書き込みを行ったかどうかを示す変数にTRUEを代入し、1405に進み処理を終了する。
【0120】
図15でポートモニタ209がEndDocPort()の処理をジョブ処理中に印刷データの書き込みを行ったかどうかで切り分ける動作について説明する。
【0121】
1501でポートモニタ209はEndDocPort()の処理を開始し、1502でデータ書き込みを行ったかどうかを示す変数を参照する。1503で、1502で参照した変数の値がTRUEかどうかを判定し、TRUEでないと判定した場合は、1504に進む。1504で、スプーラ205を介してプリントキュー206に、印刷データの書き込みを行っていない当該ジョブの管理情報を非表示にするように指示し、1505に進み、処理を終了する。1503でTRUEと判定した場合は、1505に進み、処理を終了する。
【0122】
図14と図15による処理をまとめると以下の通りである。
【0123】
通常印刷ジョブの場合は図14の処理が実行され、データ書き込みを行ったかどうかを示す変数がTRUEとなる。よって、図15のポートモニタ209の処理では何も行われない。
【0124】
フォーム作成ジョブの場合は図14の処理が実行されないため、データ書き込みを行ったかどうかを示す変数が初期値のFALSEのままである。よって、図15のポートモニタ209の処理でプリントキュー206にフォーム作成ジョブの管理情報を非表示にするように指示する。
【0125】
以上により、非印刷ジョブの場合においても、ポートモニタ209がそれを検知し、EndDocPort()でスプーラ205を介してプリントキュー206のジョブの管理情報を非表示にするように指示する。これにより印刷装置110からJobEndStateEventがポートモニタ209へ送信されず、印刷終了が通知されない場合においても、正常にプリントキュー206のフォーム作成ジョブの管理情報を非表示にすることができる。
【0126】
[実施形態6]
実施形態3では、スプーラ205の印刷終了処理で、OSの印刷サポート機能202が変数に格納したジョブタイプを参照して処理を行った。これによらず、OSの印刷サポート機能202がプリントキュー206に管理情報を非表示にすることを直接指示してもよい。
【0127】
この場合は、OSの印刷サポート機能202がジョブタイプを変数に格納する際に、プリントキュー206に直接ジョブタイプを通知し、プリントキュー206が非印刷ジョブであることを判断して、非印刷ジョブの管理情報を非表示にする。
【0128】
[実施形態7]
実施形態1では、WSD印刷により情報処理装置100から送信完了情報を印刷装置110に送信することで送信完了を印刷装置に通知する例を説明した。
【0129】
これによらず、ジョブの送信の最初に、情報処理装置100が送信するジョブの容量を印刷装置110に通知する方法によって、印刷装置110がジョブの送信の終了を認識してもよい。この場合、ジョブの送信完了後に、印刷装置110が情報処理装置100から受信したジョブの容量と、情報処理装置100が印刷装置110に通知したジョブの容量を比較し、一致した場合にジョブの送信が完了したと判断する。
【0130】
また、本発明は、以下の処理を実行することによっても実現される。
【0131】
即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【符号の説明】
【0132】
100 情報処理装置
109 ネットワーク(通信経路に対応)
110 印刷装置
206 プリントキュー
【技術分野】
【0001】
本発明は非印刷ジョブをスプールする情報処理装置に関する。
【背景技術】
【0002】
印刷装置に接続された情報処理装置が、印刷装置で印刷を行う方法の一つとして、次の方法が挙げられる。
この方法では、情報処理装置が印刷装置に印刷を指示すると、情報処理装置のプリントキューにジョブの管理情報が表示され、情報処理装置がジョブを印刷装置に送信する。その後、印刷装置はジョブの処理を完了した後に、プリントキューのジョブの管理情報の表示を完了状態に変更する処理完了情報を情報処理装置に送信する。
特許文献1には印刷装置に印刷ジョブを送信し、印刷装置の状態を取得し、印刷ジョブの印刷が完了したことを認識すると、プリントキューから印刷ジョブの情報が削除されることが開示されている。
また、プリンタ業界ではオーバレイ印字という技術が広く知られている。オーバレイ印字とは、雛型のデータと合成の対象となるデータを重ね合わせて印刷するものである。通常、雛型のデータは情報処理装置又は印刷装置のいずれかに保存される。
情報処理装置に雛型のデータを保存してオーバレイ印字をするにあたっては、スプールした雛型のデータをフォームファイルとして情報処理装置に保存する。そして、合成の対象となるデータを印刷装置に印刷指示する際に、保存したフォームファイルを合成の対象となるデータと重ね合わせて印刷する。
なお、本明細書では、フォームファイルのように印刷装置に印刷データが送信されないジョブを非印刷ジョブと呼ぶ。印刷データとは、そのデータを、変換し又は変換をせずに印刷装置に送信すると、印刷装置による印刷がされるデータである。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2009−3778号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
情報処理装置が非印刷ジョブをスプールすると、スプールした非印刷ジョブの管理情報がプリントキューに表示される。しかし、非印刷ジョブの印刷データは印刷装置に送信する必要がないため、印刷データを含む非印刷ジョブは印刷装置には送信されない。よって、印刷装置は情報処理装置から非印刷ジョブを受信せず、非印刷ジョブの処理完了情報を情報処理装置に送信しない。
その結果、情報処理装置は非印刷ジョブの処理完了情報を受信することができないため、プリントキューに非印刷ジョブの管理情報が未完了状態で残ったままになる。これにより、非印刷ジョブが再度処理される課題や、ユーザが非印刷ジョブの管理情報をプリントキューから手動で完了状態に変更する手間が生じる課題がある。
【課題を解決するための手段】
【0005】
上記の目的を達成するための本発明に係る情報処理装置は、ジョブを管理するための管理情報を情報処理装置のプリントキューに表示し、通信経路を介して印刷装置に前記ジョブを送信した後に、前記プリントキューにおける前記ジョブの管理情報の表示を未完了状態から完了状態に変更する処理完了情報を前記印刷装置から受信する情報処理装置において、
前記プリントキューに表示した前記管理情報に対応するジョブが、前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信しない、非印刷ジョブであるか否かを判断する判断手段と、
前記判断手段において前記ジョブが前記非印刷ジョブであると判断された場合に、前記非印刷ジョブに対応した前記印刷装置によって印刷されないダミーデータを前記印刷装置に送信する送信手段と、を有し、
前記送信手段によって前記ダミーデータが前記印刷装置に送信された後に前記ダミーデータの処理完了情報を受信することにより、前記プリントキューにおける前記非印刷ジョブの管理情報が未完了状態から完了状態に変更されることを特徴とする。
上記の目的を達成するための本発明に係る他の情報処理装置は、ジョブを管理するための管理情報を情報処理装置のプリントキューに表示し、通信経路を介して印刷装置に前記ジョブを送信した後に、前記プリントキューにおける前記ジョブの管理情報の表示を未完了状態から完了状態に変更する処理完了情報を前記印刷装置から受信する情報処理装置において、
前記プリントキューに表示した管理情報に対応するジョブが、前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信しない、非印刷ジョブであるか否かを判断する判断手段と、
前記判断手段において前記ジョブが前記非印刷ジョブであると判断された場合に、前記印刷装置からの処理完了情報を待たずに、前記プリントキューにおける前記非印刷ジョブの管理情報の表示を完了状態に変更する完了手段と、を有することを特徴とする。
【発明の効果】
【0006】
本発明によれば、印刷装置に印刷データが送信されない非印刷ジョブであっても、プリントキューに表示された非印刷ジョブの管理情報が未完了状態で残ることによる課題を解決できる。
【図面の簡単な説明】
【0007】
【図1】情報処理装置とネットワークを介して接続された印刷装置により構成された印刷システムの構成を示すブロック図。
【図2】印刷システムの構成を示す機能コンポーネント。
【図3】通常印刷ジョブの印刷処理の流れを示す図。
【図4】フォーム作成ジョブの印刷処理の流れを示す図。
【図5】グラフィックスドライバがランゲージモニタへジョブのジョブタイプを通知する処理を示すフローチャート。
【図6】ジョブのジョブタイプを通知するスキーマを表す図。
【図7】ジョブのジョブタイプを通知するスキーマを表す図。
【図8】ランゲージモニタが印刷データの書き込みを行ったかどうかを記憶する処理を示すフローチャート。
【図9】ランゲージモニタのEndDocPort()の処理を示すフローチャート。
【図10】ランゲージモニタのEndDocPort()の処理を示すフローチャート。
【図11】ダミーデータを表す図。
【図12】フォーム作成ジョブの印刷処理の流れを示す図。
【図13】スプーラの印刷終了処理を示すフローチャート。
【図14】ポートモニタが印刷データの書き込みを行ったかどうかを記憶する処理を示すフローチャート。
【図15】ポートモニタのEndDocPort()の処理を示すフローチャート。
【図16】スプーラがランゲージモニタのWritePort()を呼び出す処理を示すフローチャート。
【図17】スプーラの印刷終了処理を示すフローチャート。
【図18】プリントキューの表示状態を表す図。
【発明を実施するための形態】
【0008】
[実施形態1]
図1から図11を参照し、本発明を適用できる実施形態1を説明する。
【0009】
(システムの構成)
図1を用いて、情報処理装置と通信経路であるネットワークを介して接続された印刷装置により構成された印刷システムの構成を説明する。
なお、通信経路は有線/無線のネットワークだけでなく、後述するインターフェース部108によるUSBや赤外線の通信であってもよい。
【0010】
図1において、100は情報処理装置であり、一般的なPCで構成される。情報処理装置100はRAM101、外部記憶装置102、マウスやキーボード等の入力装置103、CPU104、ネットワークボード105、表示用ディスプレイ106、インターフェース部108、以上の構成要素を互いに接続するバス107から構成される。
【0011】
RAM101は外部記憶装置102に保存される各種プログラムがワークメモリとして使用する。外部記憶装置102にはアプリケーションプログラム群とOS、プリンタドライバやその他各種のデータが保存されている。入力装置103はデータ入力あるいは動作指示に使用される。表示用ディスプレイ106は接続される印刷装置又は情報処理装置のデータ表示や状態の通知に使用される。ネットワークボード105はネットワークを介する通信を行い、ネットワーク109と接続されている。なお、インターフェース部108によっても、上述したように印刷装置110と接続することができる。
【0012】
また、CPU104は、表示用ディスプレイ106上に表示されたGUIのマウスカーソルや、キーボードのキー入力により、外部記憶装置102のプログラムのウインドウを開き、種々のデータ処理を実行する。これにより、ユーザは印刷を実行する際、印刷の設定に関するウインドウを開き、印刷装置110の設定や、印刷モードの選択を含むプリンタドライバに対する印刷処理方法の設定を行える。
【0013】
加えて、CPU104が外部記憶装置102に記憶されているプログラムに基づき処理を実行することによって、図2に示されるような情報処理装置100のソフトウェア構成及び後述するフローチャートの各ステップの処理が実現される。
【0014】
印刷装置110は、ネットワークボード111、RAM112、ROM113、CPU114、印刷エンジン115、インターフェース部116を有する。また、以上の構成要素を互いに接続するバス117を有する。
【0015】
ネットワークボード111はネットワーク109に接続してある。ROM113には制御プログラムなどが格納されている。CPU114はROM113に格納してある制御プログラムに従って印刷装置110を制御する。RAM112はCPU114のワークメモリとして使用され、受信したデータをいったん保存する受信バッファとしても用いられる。印刷エンジン115はRAM112に保存されたデータを印刷する。
【0016】
(機能コンポーネント)
図2は、図1に示した情報処理装置100に適用可能な印刷システムを表すブロック図である。図において、ユーザインターフェースモジュール203、グラフィックスドライバ204、ランゲージモニタ208は、各々、プリンタドライバ210を構成するモジュールである。
これらはOS又は他のプログラムから呼び出されることで外部記憶装置102からRAM112にロードされ実行される。
【0017】
アプリケーション201はOSの印刷サポート機能202を介して、ユーザインターフェースモジュール203から印刷設定情報を取得し、ジョブの印刷データを作成する。
【0018】
なお、本明細書では印刷データとは、そのデータを、変換し又は変換をせずに印刷装置110に送信すると、印刷装置110により印刷されるデータである。
【0019】
アプリケーション201が作成したデータは、OSの印刷サポート機能202を介して、スプーラ205に渡される。スプーラ205は受け取ったデータをスプールデータ保存場所207に保存する。
【0020】
プリントキュー206はデータがスプールデータ保存場所207に保存されると、当該データを含むジョブがスプールされたことを表示する。具体的にはプリントキュー206にジョブの管理情報を表示し、その管理情報の状態の表示として当該ジョブがスプール中であることを示す。
プリントキューの詳細な表示方法は後述する。
【0021】
(スプール後の通常印刷ジョブとフォーム作成ジョブの処理の流れ)
これ以降の処理はジョブの種類が「通常印刷ジョブ」か「フォーム作成ジョブ」で異なる。
【0022】
「通常印刷ジョブ」とは印刷装置110に送信されて、通常印刷ジョブの印刷データに基づいて印刷装置に印刷が指示されるジョブである。
【0023】
ジョブの処理の順番が来ると、スプールデータ保存場所207のデータはOSの印刷サポート機能202に送られ、グラフィックスドライバ204の助けを借りて、印刷装置110が解釈できるコマンド形式のデータに変換される。グラフィックスドライバ204はスプーラ205に対して変換されたデータを渡すことで、変換されたデータを印刷装置110が印刷をするために送信することを指示する。スプーラ205は渡されたデータをランゲージモニタ208に渡す。ランゲージモニタ208は変換されたデータをポートモニタ209に出力する。ポートモニタ209がネットワーク109を経由して、渡されたデータをジョブとして、印刷装置110に送信する。
【0024】
「フォーム作成ジョブ」とはフォームファイル211を作成する為のジョブであり、印刷装置110には送信されず、印刷装置110に印刷が指示されない。
【0025】
ユーザがフォームファイル211を作成する手順を説明する。
【0026】
ユーザはアプリケーション201に印刷の設定を指示し、アプリケーション201がユーザインターフェースモジュール203を呼び出す。ユーザはユーザインターフェースモジュール203を用いて印刷の出力方法の設定の一部として、ジョブタイプを通常印刷ジョブからフォーム作成ジョブに変更する。変更後、ジョブタイプを含む印刷の出力方法の設定が、RAM101に変数として保存される。
【0027】
その後、ユーザがアプリケーション201から印刷指示をすると、印刷データがスプーラ205によってスプールされる。スプーラ205が印刷データをグラフィックスドライバ204に渡し、グラフィックスドライバ204はRAM101の印刷の出力方法の設定が保存された変数を呼び出し、ジョブタイプがフォーム作成ジョブであることを把握して動作する。これにより、スプールされた印刷データはオーバレイ印字を行う際のフォームファイル211として使う為に、グラフィックスドライバ204によりフォームファイル211として保存される。よって、印刷装置への印刷の指示として、グラフィックスドライバ204から印刷データがスプーラ205に送信されることはない。
【0028】
作成されたフォームファイル211はオーバレイ印字における雛型である。先の雛型と後からアプリケーションにより出力される装飾ジョブとが合成されて、印刷ジョブとして印刷装置に送信され、印刷装置が合成物の印刷を行う。
【0029】
なお、本明細書ではデータがスプールデータ保存場所207に保存され、当該データが印刷装置には送信されない非印刷ジョブの一例としてフォーム作成ジョブを挙げる。この他にデータがスプールデータ保存場所207に保存されるが、印刷装置には送信されない非印刷ジョブは、プレビュー及びスタンプ、地紋が指定された場合に生成されてもよい。プレビューの場合は、閲覧のために印刷データがスプールされ、スプールされた印刷データは閲覧後に破棄される。スタンプと地紋、又はこれらが合成される前のデータは、フォーム作成ジョブと同じく情報処理装置にファイルとして保存され、印刷装置に送信されない。よって、これらを扱う情報処理装置に対しても本発明は適用することができる。
【0030】
以降、通常印刷ジョブとフォーム作成ジョブは明確に分けて使う必要がある際には使い分け、区別せずに分かる場合はどちらであってもジョブと表現することとする。
【0031】
本実施形態では印刷方法としてWindows Vista(登録商標)から採用されているWeb Services on Devices(以降、WSDと呼ぶ)を用いた印刷を例に説明する。これに限定されることなく、異なる印刷方法についても本発明を適用することができる。
【0032】
また同様に、ポートモニタ209としてWSD印刷用のポートモニタを想定しているが、これに限定されることなく様々なポートモニタに本発明は適用することができる。
【0033】
(通常印刷ジョブの処理の流れ)
図3はWSDを用いた印刷における通常印刷ジョブの処理の流れを示したものである。
【0034】
なお、図3の301が開始される前にプリントキュー206にはこれから印刷処理が行われるジョブの管理情報が既に表示されている。
【0035】
301でスプーラ205はランゲージモニタ208の関数であるStartDocPort()を呼び出し、ランゲージモニタ208に印刷処理の開始を指示する。302でランゲージモニタ208はポートモニタの関数であるStartDocPort()を呼び出す。
【0036】
303でスプーラ205はランゲージモニタ208の関数であるWritePort()を呼び出し、ジョブの印刷データの送信を開始する。304でランゲージモニタ208はポートモニタ209の関数であるWritePort()を呼び出す。305でポートモニタ209はCreatePrintJob Requestを印刷装置110に送信し印刷の開始を通知する。306で印刷装置110はCreatePrintJob Responseをポートモニタ209に送信する。
【0037】
307でポートモニタ209はSendDocument Requestを印刷装置110に送信する。308でポートモニタ209が印刷装置110に最初の印刷データの送信を行う。308の後に、ポートモニタ209が304のWritePort()をランゲージモニタ208にリターンする。
【0038】
309では、スプーラ205は続けて印刷データを印刷装置110に送信するためにランゲージモニタ208の関数であるWritePort()を呼び出し、ランゲージモニタ208はポートモニタ209の関数であるWritePort()を呼び出す。ポートモニタ209はWritePort()の処理で、印刷データを印刷装置110に送信する。スプーラ205とランゲージモニタ208とポートモニタ209は、これらの処理を印刷データの全てを送信するまで繰り返す。
【0039】
スプーラ205はランゲージモニタ208に全ての印刷データの送信を完了すると、310でランゲージモニタ208の関数であるEndDocPort()を呼び出す。続いて311でランゲージモニタ208はポートモニタ209の関数であるEndDocPort()を呼び出す。312でポートモニタ209は、308及び309による印刷データの送信終了を示す送信完了情報を印刷装置110に送信する。
【0040】
印刷装置110はジョブの印刷データに基づく印刷を行い、313で、処理完了情報であるJobEndStateEventをポートモニタ209に送信する。これにより印刷装置110が情報処理装置100にジョブの処理が完了したことを伝える。
【0041】
プリントキュー206から通常印刷ジョブの管理情報が非表示になる流れを説明する。
【0042】
印刷装置110が通常印刷ジョブを処理するために、情報処理装置100が、CreatePrintJob Requestを印刷装置110に送信後、印刷装置110から受信したCreatePrintJob Responseに対応するJobEndStateEventを印刷装置110から受信する。印刷装置によるジョブの処理が正常に行われた場合、処理完了情報であるJobEndStateEventは、情報処理装置にプリントキューにおける通常印刷ジョブの管理情報の表示を、完了状態に変更させることを意味する。
【0043】
よって、前述したJobEndStateEventを印刷装置110から受信すると、プリントキュー206の通常印刷ジョブの管理情報が完了状態である非表示となる。
【0044】
(プリントキューの表示方法)
図18を用いてプリントキューの表示方法について説明する。
【0045】
図18(a)にプリントキューがスプール中のジョブの管理情報を表示している状態の一例を示す。このように表示されているジョブを未完了状態にあるという。前述したように、プリントキュー206のジョブの管理情報が非表示となった状態を図18の(d)に示す。このように表示されているジョブを完了状態にあるという。
【0046】
一般的に、プリントキューのジョブの管理(表示)の様に、一覧にして個々の対象を管理する方法としては「変更」、「非表示」、「削除」の3つが考えられる。
【0047】
「変更」とは、図18(a)に示すように、ジョブの印刷を指示し印刷装置110による印刷を待っている状態から、図18(b)に示すように、当該ジョブが印刷済みであることを示すように管理情報の表示を変更することを意味する。
【0048】
「非表示」とは、図18(d)に示すように、文字通りジョブの管理情報が非表示となることを意味する。なお非表示は、プリントキューが内部に過去に表示されたジョブの管理情報の履歴を保持しており、図18(c)に示すように、ジョブが印刷済みとなった後にその履歴を表示できる場合を含む。
【0049】
「削除」は前述の非表示に含まれるが、ジョブの履歴を閲覧することはできず、ジョブの管理情報そのものが削除され、再度閲覧することができなくなることを意味する。
【0050】
プリントキューがジョブの管理情報を前述した「変更」、「非表示」、「削除」のいずれによっても管理を行う事ができる。
【0051】
本明細書ではプリントキューに表示されたジョブの印刷処理が完了されると、プリントキューのジョブの管理情報が非表示となる例を記載するが、管理情報を変更することでジョブの管理(表示)を行ってもよい。
【0052】
(フォーム作成ジョブの処理の流れ)
図4を用いて、本実施形態の、WSD印刷におけるフォーム作成ジョブの処理の流れについて説明する。
【0053】
401でスプーラ205はランゲージモニタ208の関数であるStartDocPort()を呼び出し印刷処理の開始を行う。402でランゲージモニタ208はポートモニタの関数であるStartDocPort()を呼び出す。
【0054】
フォーム作成ジョブは、印刷装置110に印刷データを送信しない非印刷ジョブである。この為、スプーラ205は図3の303のようなランゲージモニタ208のWritePort()を呼び出さず、403でランゲージモニタ208の関数であるEndDocPort()を呼び出す。
【0055】
その後、404でランゲージモニタ208はポートモニタ209に対してWritePort()を呼び出し、ダミーデータの書き込みを行う。
【0056】
ダミーデータとは印刷装置110が受信して読み捨てるだけのデータである。図11でダミーデータの一例を説明する。図11においてダミーデータの値は、長さが1バイトで、値が0である。
【0057】
なお、本発明は印刷装置110がダミーデータを受信した際に、当該ダミーデータを読み捨てる仕様であるものに対して適用することができる。読み捨てるとは、印刷装置110が印刷処理を一切行わずにジョブの処理を完了することを意味する。
【0058】
もし、404で、非印刷ジョブに対応するダミーデータの書き込みを行わないと、405乃至408、410の各ステップが実行されない。これらのステップが実行されなければ後述する411で、印刷装置110は処理完了情報であるJobEndStateEventを送信しないので、プリントキュー206のフォーム作成ジョブの管理情報が未完了状態で表示されたままとなる。
【0059】
405でポートモニタ209はCreatePrintJob Requestを印刷装置110に送信し印刷処理の開始(この場合はダミーデータの書き込み)を通知する。406で印刷装置110はCreatePrintJob Responseをポートモニタ209に送信する。407でポートモニタ209はSendDocument Requestを印刷装置110に送信後、408でダミーデータを印刷装置110に送信する。408のダミーデータ送信後に、ポートモニタ209が404のWritePort()をランゲージモニタ208にリターンする。
【0060】
ランゲージモニタ208はダミーデータの書き込みが完了後、409でポートモニタ209の関数であるEndDocPort()を呼び出す。410でポートモニタ209は、408によるダミーデータの送信が完了したことを示す送信完了情報を印刷装置110に送信する。印刷装置110はダミーデータの処理が完了すると、411で処理完了情報であるJobEndStateEventをポートモニタ209に送信し、ダミーデータの処理が完了したことを通知する。
【0061】
プリントキュー206からフォーム作成ジョブの管理情報が非表示になる流れを説明する。
【0062】
ダミーデータを印刷装置110が処理するために、情報処理装置100が、CreatePrintJob Requestを印刷装置110に送信後、印刷装置110から受信したCreatePrintJob Responseに対応するJobEndStateEventを印刷装置110から受信する。印刷装置によるダミーデータの処理が正常に行われた場合、処理完了情報であるJobEndStateEventは、情報処理装置にプリントキューにおけるフォーム作成ジョブの管理情報の表示を、完了状態に変更させることを意味する。
【0063】
よって、前述したJobEndStateEventを印刷装置110から受信すると、プリントキュー206のフォーム作成ジョブの管理情報が完了状態である非表示となる。
【0064】
(Printing and Print Spooler Interfaces)
次に、ランゲージモニタ208のジョブのジョブタイプ判定処理について詳細に説明する。
【0065】
ここで判定されたジョブタイプに基づいて、後述するランゲージモニタ208のEndDocPort()の処理において、ダミーデータが印刷装置110に送信されるか否かが決定される。
【0066】
ここでは、MSDNのサイトで公開されているPrinting and Print Spooler Interfacesを利用して、グラフィックスドライバ204がランゲージモニタ208にジョブのジョブタイプを通知する方法について説明する。
【0067】
グラフィックスドライバ204はPrinting and Print Spooler Interfacesを利用して、ジョブのジョブタイプが通常印刷ジョブかフォーム作成ジョブであるかを、ランゲージモニタ208に通知することができる。
【0068】
図5の501で、グラフィックスドライバ204はジョブタイプの通知処理を開始する。502で、前述したRAM101の印刷の出力方法の設定が保存された変数が呼び出され、現在処理中のジョブのジョブタイプを取得する。503でスキーマパスとして¥Printer.JobType:Valueをセットし、504でそのValueとして502で取得したジョブタイプをセットし、505でランゲージモニタ208の処理を呼び出す。
【0069】
具体的には、グラフィックスドライバ204はPrinting and Print Spooler Interfacesで用意されているCOMインターフェースIBidiSplのAPI関数IBidiSpl::SendRecv()を呼び出す。グラフィックスドライバ204がIBidiSpl::SendRecv()を呼び出すと、ランゲージモニタ208のエクスポート関数であるSendRecvBidiDataFromPort()が呼び出される。
【0070】
506でランゲージモニタ208はSendRecvBidiDataFromPort()の処理を開始する。507で関数の引数にセットされたスキーマパスを取得する。508でスキーマパスが¥Printer.JobType:Valueかどうかを判定する。判定の結果、Yesであれば509に進み、¥Printer.JobTypeのValue(値)を参照する。508の判定の結果がNoの場合は512に進む。510でValueがFormかどうかを判定し、Formの場合は、511でジョブタイプを表す変数に「フォーム作成ジョブ」を設定しRAM101に記憶した後、512に進む。510で、ValueがFormでないと判定した場合は512に進む。512でランゲージモニタ208のSendRecvBidiDataFromPort()の処理が終了すると、505のIBidiSpl::SendRecv()を呼び出しがリターンし、513に進む。513で、グラフィックスドライバ204はジョブタイプ通知処理を終了する。
【0071】
図6はグラフィックスドライバ204が、ランゲージモニタ208にジョブタイプを通知する時に使用するスキーマを表す図である。これらのスキーマは、グラフィックスドライバ204がIBidiSpl::SendRecv()をコールする際に引数として指定される。図6において、JobTypeはジョブの種類を表すValueであり、スキーマのフルパスの指定は¥Printer.JobType:Valueである。データ型はBIDI_STRINGである。設定可能な値は、図7に示している様に、NormalとFormである。Normalはジョブが通常印刷ジョブであることを示す。Formはジョブがフォーム作成ジョブであることを示す。
【0072】
(ランゲージモニタのEndDocPort()の処理)
図9でランゲージモニタ208がEndDocPort()の処理をジョブタイプで切り換える動作について説明する。
【0073】
901でランゲージモニタ208はスプーラ205にコールされたEndDocPort()の処理を開始し、902でRAM101のジョブタイプを表す変数を参照する。903でジョブタイプが「フォーム作成ジョブ」かどうかを判定し、フォーム作成ジョブの場合は、904に進みダミーデータをポートモニタ209に書き込み、905に進む。903でフォーム作成ジョブではないと判定した場合は、905に進む。905でポートモニタ209のEndDocPort()を呼び出し、906に進み、処理を終了する。
【0074】
以上により、グラフィックスドライバ204がジョブのジョブタイプがフォーム作成ジョブであることをランゲージモニタ208に通知し、ランゲージモニタ208がEndDocPort()の処理でダミーデータの書き込みを行う。こうすることで印刷装置110からJobEndStateEventがポートモニタ209へ送信され、プリントキュー206は正常にフォーム作成ジョブの管理情報を非表示にすることができる。
【0075】
なお、本実施形態ではジョブタイプが通常印刷ジョブであるか、フォーム作成ジョブであるかで処理を切り替える例を示した。これによらず、印刷を指示されたジョブのジョブタイプが通常印刷ジョブであるか、印刷装置に送信して印刷を行わない非印刷ジョブであるかを基に処理を切り替えてもよい。
【0076】
[実施形態2]
本実施形態では図8を用いて、実施形態1で用いたジョブタイプとは別の判断材料でランゲージモニタ208のEndDocPort()の処理を切り替える例(詳細は図10で説明する)を示す。
【0077】
印刷システムの構成は、実施形態1と同一であり、図1と図2で表すことができる。また、本実施形態の、WSD印刷におけるフォーム作成ジョブの処理の流れは図4に表される。
【0078】
なお、図8に示す処理は通常印刷ジョブに対してのみ行われる。図4に示すようにフォーム作成ジョブに対してはランゲージモニタ208がスプーラ205からコールされてWritePort()の処理を実行することがない。
【0079】
また、RAM101にデータ書き込みを行ったかどうかを示す変数が格納されており、これは図8の処理を実行する前に初期値としてFALSEが代入されている。
【0080】
図8を用いて、通常印刷ジョブに対するランゲージモニタ208のWritePort()の処理について詳細に説明する。
【0081】
801でランゲージモニタ208はWritePort()の処理を開始し、802でスプーラ205から印刷データを受信する。803で印刷データをポートモニタ209に書き込む。804でデータ書き込みを行ったかどうかを示す変数にTRUEを代入し、805に進み処理を終了する。
【0082】
図10でランゲージモニタ208がEndDocPort()の処理を、ジョブ処理中に印刷データの書き込みを行ったかどうかで切り換える動作について説明する。1001で、ランゲージモニタ208はEndDocPort()の処理を開始し、1002でデータ書き込みを行ったかどうかを示す変数を参照する。1003でデータ書き込みを行ったかどうかを示す変数の値がTRUEであるかどうかを判定し、TRUEの場合は、1005に進む。1003で変数の値がTRUEでない場合、すなわちFALSEである場合は、1004に進みでWritePort()でダミーデータをポートモニタ209に書き込み、1005に進む。1005でポートモニタ209のEndDocPort()を呼び出し、1006に進み、処理を終了する。
【0083】
以上により、フォーム作成ジョブのように、印刷装置110へのデータ書き込みが行われないジョブの場合においても、ランゲージモニタ208がそれを検知し、EndDocPort()の処理でダミーデータの書き込みを行う。これにより印刷装置110からJobEndStateEventがポートモニタ209へ送信され、プリントキュー206は正常にフォーム作成ジョブの管理情報を非表示することができる。
【0084】
なお、本実施形態は、グラフィックスドライバ204とランゲージモニタ208によって課題を解決する実施形態1と異なり、グラフィックスドライバ204を用いずに課題を解決することができる。
【0085】
[実施形態3]
本実施形態では、グラフィックスドライバ204がOSの印刷サポート機能202にジョブのジョブタイプを通知する。その後、スプーラ205の印刷終了処理において、ジョブタイプがフォーム作成ジョブの場合は処理完了情報を待たずに処理を終了することにより、課題を解決する。
【0086】
印刷システムの構成は、実施形態1と同一であり、図1と図2で表すことができる。
【0087】
(フォーム作成ジョブの処理の流れ)
図12を用いて、本実施形態の、WSD印刷におけるフォーム作成ジョブの処理の流れについて説明する。
【0088】
1201でスプーラ205はランゲージモニタ208の関数であるStartDocPort()を呼び出し印刷処理の開始を行う。1202でランゲージモニタ208はポートモニタの関数であるStartDocPort()を呼び出す。
【0089】
フォーム作成ジョブは、印刷装置110に印刷データを送信しないジョブである為、スプーラ205はランゲージモニタ208のWritePort()の呼び出しは行わず、1203でランゲージモニタ208の関数であるEndDocPort()を呼び出す。1204でランゲージモニタ208はポートモニタ209の関数であるEndDocPort()を呼び出す。
【0090】
スプーラ205は1203のEndDocPort()のリターンがあった後に、印刷終了処理を実行し、プリントキュー206に印刷処理を行ったフォーム作成ジョブの管理情報を非表示にすることを指示する。
【0091】
(グラフィックスドライバからOSの印刷サポート機能へのジョブタイプの通知)
図2を用いて、グラフィックスドライバ204からOSの印刷サポート機能202にジョブタイプが通知される流れを説明する。
【0092】
アプリケーション201はOSの印刷サポート機能202が提供するAPI(Application Program Interface)を呼び出し、データを作成する。アプリケーション201が作成したデータは、OSの印刷サポート機能202を介して、スプーラ205に渡される。スプーラ205は受け取ったデータを、ジョブごとにスプールデータ保存場所207に保存する。ジョブの処理の順番が来ると、スプールデータはOSの印刷サポート機能202を介して、グラフィックスドライバ204に渡される。本実施形態では、この時、グラフィックスドライバ204からOSの印刷サポート機能202に対してジョブのジョブタイプの通知が行われる。
【0093】
ジョブのジョブタイプの通知は、OSの印刷サポート機能202が、予め決められたグラフィックスドライバ204のエクスポート関数を呼ぶことによって行われる。OSの印刷サポート機能202がグラフィックスドライバ204のエクスポート関数を呼ぶと、グラフィックスドライバ204は、エクスポート関数の戻り値にジョブタイプをセットして、エクスポート関数の処理を終了する。これによりグラフィックスドライバ204からOSの印刷サポート機能202に対してジョブタイプが通知される。
【0094】
これに限らず別の方法でOSの印刷サポート機能202にジョブタイプを通知してもよい。例えば、アプリケーション201がAPIを呼び出してジョブを作成する時に、API経由でジョブタイプをOSの印刷サポート機能202に通知してもよい。
【0095】
その後、OSの印刷サポート機能202は通知されたジョブタイプをスプーラが参照可能な変数としてRAM101に格納する。
【0096】
(スプーラの印刷終了処理)
図13でグラフィックスドライバ204から通知されたジョブタイプにより、スプーラ205の印刷終了処理を切り替える場合について説明する。
【0097】
1301でスプーラ205は印刷終了処理を開始する。1302でスプーラ205は、RAM101の変数に格納されている、前述のグラフィックスドライバ204から通知されたジョブタイプを参照する。1303で、1302において参照されたジョブタイプがフォーム作成ジョブかどうかを判定し、フォーム作成ジョブの場合は1306に進む。1306で、プリントキュー206に、ジョブタイプが通知された当該フォーム作成ジョブの管理情報を非表示にすることを指示し、1307でスプーラ205の印刷終了処理を終了する。
【0098】
1303でフォーム作成ジョブでない、すなわち通常印刷ジョブであると判定した場合は1304に進む。1304で、印刷装置110から処理完了情報を受信したかどうか判定する。1304で処理完了情報を受信していない場合は、処理完了情報を受信するのを待ち、再び1304で処理完了情報を受信したかどうか判定する。1304で、処理完了情報を受信した場合は、1306に進み、プリントキュー206に、ジョブタイプが通知された当該通常印刷ジョブの管理情報を非表示にすることを指示し、1307でスプーラ205の印刷終了処理を終了する。
【0099】
以上により、スプーラ205の印刷終了処理において、ジョブのジョブタイプがフォーム作成ジョブの場合、印刷装置110からの処理完了情報の受信を待たずにプリントキュー206にフォーム作成ジョブの管理情報を非表示することを指示する。これにより印刷装置110から処理完了情報を待ち続けてしまい、プリントキュー206のフォーム作成ジョブの管理情報が未完了状態のまま非表示にされないという問題を解決できる。
【0100】
本実施形態は実施形態1及び2と異なり、印刷装置110との通信を行わずに、プリントキュー206のフォーム作成ジョブの管理情報を非表示にすることができる。よって、印刷装置110の電源が切れている場合や、情報処理装置100と印刷装置110間の通信経路が途絶えている場合であっても、課題を解決することができる。
【0101】
この効果は以降の実施形態についても同じである。
【0102】
[実施形態4]
本実施形態では図16及び図17を用いて、実施形態3で用いたジョブタイプとは別の判断材料で、スプーラ205の終了処理を切り替える例を説明する。
【0103】
印刷システムの構成は、実施形態1と同一であり、図1と図2で表すことができる。WSD印刷における通常印刷ジョブの処理の流れは図3に表される。フォーム作成ジョブの処理の流れは図12に表される。
【0104】
なお、図16に示す処理は通常印刷ジョブに対してのみ行われる。図12に示すようにフォーム作成ジョブに対してはランゲージモニタ208がスプーラ205から呼び出されてWritePort()の処理を実行することがない。
【0105】
また、RAM101にデータ書き込みを行ったかどうかを示す変数が格納されており、これは図16の処理を実行する前に初期値としてFALSEが代入されている。
【0106】
図16では、スプーラ205が通常印刷ジョブの処理中に印刷データの書き込みを行ったかどうかを判定する。
【0107】
1601でスプーラ205は処理を開始し、1602でスプールされた印刷データをランゲージモニタ208のWritePort()により書き込む。1603で、データ書き込みを行ったかどうかを示す変数にTRUEを設定し、1604に進み処理を終了する。
【0108】
図17でジョブ処理中に印刷データの書き込みを行ったかどうかにより、スプーラ205の印刷終了処理を切り替える場合について説明する。なお、スプーラの印刷終了処理は、図12の1203のEndDocPort()のリターン後に行われる。
【0109】
1701でスプーラ205は印刷終了処理を開始する。1702でスプーラ205はデータ書き込みを行ったかどうかを示す変数を参照する。1703で、1702で参照した変数の値がTRUEかどうかを判定する。1703でTRUEでないと判定した場合は、1706に進み、プリントキュー206に、印刷データの書き込みを行っていない当該ジョブの管理情報を非表示にすることを指示し、1707で処理を終了する。
【0110】
1703でTRUEと判定した場合は1704に進み、印刷装置110から処理完了情報を受信したかどうか判定する。1704で受信していないと判定した場合は、再び1704で処理完了情報を受信したかどうか判定する。1704で処理完了情報を受信したと判定した場合は、1706に進み、プリントキュー206に、印刷データの書き込みを行っていない当該ジョブの管理情報を非表示にすることを指示し、1707で処理を終了する。
【0111】
図16と図17による処理をまとめると以下の通りである。
【0112】
通常印刷ジョブの場合は図16の処理が実行され、データ書き込みを行ったかどうかを示す変数がTRUEとなる。よって、図17のスプーラ205の処理では印刷装置110から処理完了情報を受信するまで待機する。
【0113】
フォーム作成ジョブの場合は図16の処理が実行されないため、データ書き込みを行ったかどうかを示す変数が初期値のFALSEのままである。よって、図17のスプーラ205の処理で印刷装置110から処理完了情報を待たずに、プリントキュー206にフォーム作成ジョブの管理情報を非表示にするように指示する。
【0114】
以上により、ジョブ処理中に印刷データの書き込みを行わなかった場合は、印刷装置110からの処理完了情報の受信を待たずに、スプーラ205がプリントキュー206に印刷データの書き込みを行わなかったジョブの管理情報を非表示することを指示する。これにより印刷装置110から処理完了情報を待ち続けてしまい、プリントキュー206の印刷データの書き込みを行わなかったジョブの管理情報が非表示にされないという問題を解決できる。
【0115】
[実施形態5]
本実施形態では、ポートモニタ209はポートモニタ209自身のWritePort()の書き込み処理の有無を判断し、スプーラ205を経由してプリントキュー206にジョブの管理情報を非表示にすることを指示することにより、課題を解決する。
【0116】
印刷システムの構成は、実施形態1と同一であり、図1、図2で表すことができる。WSD印刷における通常印刷ジョブの処理の流れは図3に表される。フォーム作成ジョブの処理の流れは図12に表される。
【0117】
また、RAM101にデータ書き込みを行ったかどうかを示す変数が格納されており、これは図14の処理を実行する前に初期値としてFALSEが代入されている。
【0118】
図14を用いて、通常印刷ジョブに対するポートモニタ209のWritePort()の処理について説明する。
【0119】
1401でポートモニタ209はWritePort()の処理を開始し、1402でランゲージモニタ208から印刷データを受信する。1403で、1402で受信した印刷データを印刷装置110に書き込む。1404で、データ書き込みを行ったかどうかを示す変数にTRUEを代入し、1405に進み処理を終了する。
【0120】
図15でポートモニタ209がEndDocPort()の処理をジョブ処理中に印刷データの書き込みを行ったかどうかで切り分ける動作について説明する。
【0121】
1501でポートモニタ209はEndDocPort()の処理を開始し、1502でデータ書き込みを行ったかどうかを示す変数を参照する。1503で、1502で参照した変数の値がTRUEかどうかを判定し、TRUEでないと判定した場合は、1504に進む。1504で、スプーラ205を介してプリントキュー206に、印刷データの書き込みを行っていない当該ジョブの管理情報を非表示にするように指示し、1505に進み、処理を終了する。1503でTRUEと判定した場合は、1505に進み、処理を終了する。
【0122】
図14と図15による処理をまとめると以下の通りである。
【0123】
通常印刷ジョブの場合は図14の処理が実行され、データ書き込みを行ったかどうかを示す変数がTRUEとなる。よって、図15のポートモニタ209の処理では何も行われない。
【0124】
フォーム作成ジョブの場合は図14の処理が実行されないため、データ書き込みを行ったかどうかを示す変数が初期値のFALSEのままである。よって、図15のポートモニタ209の処理でプリントキュー206にフォーム作成ジョブの管理情報を非表示にするように指示する。
【0125】
以上により、非印刷ジョブの場合においても、ポートモニタ209がそれを検知し、EndDocPort()でスプーラ205を介してプリントキュー206のジョブの管理情報を非表示にするように指示する。これにより印刷装置110からJobEndStateEventがポートモニタ209へ送信されず、印刷終了が通知されない場合においても、正常にプリントキュー206のフォーム作成ジョブの管理情報を非表示にすることができる。
【0126】
[実施形態6]
実施形態3では、スプーラ205の印刷終了処理で、OSの印刷サポート機能202が変数に格納したジョブタイプを参照して処理を行った。これによらず、OSの印刷サポート機能202がプリントキュー206に管理情報を非表示にすることを直接指示してもよい。
【0127】
この場合は、OSの印刷サポート機能202がジョブタイプを変数に格納する際に、プリントキュー206に直接ジョブタイプを通知し、プリントキュー206が非印刷ジョブであることを判断して、非印刷ジョブの管理情報を非表示にする。
【0128】
[実施形態7]
実施形態1では、WSD印刷により情報処理装置100から送信完了情報を印刷装置110に送信することで送信完了を印刷装置に通知する例を説明した。
【0129】
これによらず、ジョブの送信の最初に、情報処理装置100が送信するジョブの容量を印刷装置110に通知する方法によって、印刷装置110がジョブの送信の終了を認識してもよい。この場合、ジョブの送信完了後に、印刷装置110が情報処理装置100から受信したジョブの容量と、情報処理装置100が印刷装置110に通知したジョブの容量を比較し、一致した場合にジョブの送信が完了したと判断する。
【0130】
また、本発明は、以下の処理を実行することによっても実現される。
【0131】
即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【符号の説明】
【0132】
100 情報処理装置
109 ネットワーク(通信経路に対応)
110 印刷装置
206 プリントキュー
【特許請求の範囲】
【請求項1】
ジョブを管理するための管理情報を情報処理装置のプリントキューに表示し、通信経路を介して印刷装置に前記ジョブを送信した後に、前記プリントキューにおける前記ジョブの管理情報の表示を未完了状態から完了状態に変更する処理完了情報を前記印刷装置から受信する情報処理装置において、
前記プリントキューに表示した前記管理情報に対応するジョブが、前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信しない、非印刷ジョブであるか否かを判断する判断手段と、
前記判断手段において前記ジョブが前記非印刷ジョブであると判断された場合に、前記非印刷ジョブに対応した前記印刷装置によって印刷されないダミーデータを前記印刷装置に送信する送信手段と、を有し、
前記送信手段によって前記ダミーデータが前記印刷装置に送信された後に前記ダミーデータの処理完了情報を受信することにより、前記プリントキューにおける前記非印刷ジョブの管理情報が未完了状態から完了状態に変更されることを特徴とする情報処理装置。
【請求項2】
ジョブを管理するための管理情報を情報処理装置のプリントキューに表示し、通信経路を介して印刷装置に前記ジョブを送信した後に、前記プリントキューにおける前記ジョブの管理情報の表示を未完了状態から完了状態に変更する処理完了情報を前記印刷装置から受信する情報処理装置において、
前記プリントキューに表示した管理情報に対応するジョブが、前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信しない、非印刷ジョブであるか否かを判断する判断手段と、
前記判断手段において前記ジョブが前記非印刷ジョブであると判断された場合に、前記印刷装置からの処理完了情報を待たずに、前記プリントキューにおける前記非印刷ジョブの管理情報の表示を完了状態に変更する完了手段と、を有することを特徴とする情報処理装置。
【請求項3】
前記ジョブが非印刷ジョブであることを通知する非印刷ジョブ通知手段を更に有し、
前記非印刷ジョブ通知手段の通知に基づいて、前記判断手段は前記ジョブが非印刷ジョブであると判断することを特徴とする請求項1又は請求項2に記載の情報処理装置。
【請求項4】
前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信することを指示する指示手段を更に有し、
前記指示手段が前記印刷データを前記印刷装置に送信する指示をしないときに、前記判断手段は前記ジョブが非印刷ジョブであると判断することを特徴とする請求項1又は請求項2に記載の情報処理装置。
【請求項5】
前記完了状態は前記ジョブの管理情報の表示が、非表示となる状態、又は前記印刷装置が前記ジョブの処理を完了したことを示す情報を表示する状態のいずれかであることを特徴とする請求項1乃至4のいずれかの1項に記載の情報処理装置。
【請求項6】
ジョブを管理するための管理情報をコンピュータのプリントキューに表示し、通信経路を介して印刷装置に前記ジョブを送信した後に、前記プリントキューにおける前記ジョブの管理情報の表示を未完了状態から完了状態に変更する処理完了情報を前記印刷装置から受信するコンピュータにおいて実行されるプログラムであって、
前記プリントキューに表示した前記管理情報に対応するジョブが、前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信しない、非印刷ジョブであるか否かを判断する判断手段と、
前記判断手段において前記ジョブが前記非印刷ジョブであると判断された場合に、前記非印刷ジョブに対応した前記印刷装置によって印刷されないダミーデータを前記印刷装置に送信する送信手段と、をコンピュータに実行させ、
前記送信手段によって前記ダミーデータが前記印刷装置に送信された後に前記ダミーデータの処理完了情報を受信することにより、前記プリントキューにおける前記非印刷ジョブの管理情報が未完了状態から完了状態に変更されることを特徴とするコンピュータが実行可能なプログラム。
【請求項7】
ジョブを管理するための管理情報をコンピュータのプリントキューに表示し、通信経路を介して印刷装置に前記ジョブを送信した後に、前記プリントキューにおける前記ジョブの管理情報の表示を未完了状態から完了状態に変更する処理完了情報を前記印刷装置から受信するコンピュータにおいて実行されるプログラムであって、
前記プリントキューに表示した管理情報に対応するジョブが、前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信しない、非印刷ジョブであるか否かを判断する判断手段と、
前記判断手段において前記ジョブが前記非印刷ジョブであると判断された場合に、前記印刷装置からの処理完了情報を待たずに、前記プリントキューにおける前記非印刷ジョブの管理情報の表示を完了状態に変更する完了手段と、を有することを特徴とするコンピュータが実行可能なプログラム。
【請求項8】
前記ジョブが非印刷ジョブであることを通知する非印刷ジョブ通知手段を更に有し、
前記非印刷ジョブ通知手段の通知に基づいて、前記判断手段は前記ジョブが非印刷ジョブであると判断することを特徴とする請求項6又は請求項7に記載のプログラム。
【請求項9】
前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信することを指示する指示手段を更に有し、
前記指示手段が前記印刷データを前記印刷装置に送信する指示をしないときに、前記判断手段は前記ジョブが非印刷ジョブであると判断することを特徴とする請求項6又は請求項7に記載のプログラム。
【請求項10】
前記完了状態は前記ジョブの管理情報の表示が、非表示となる状態、又は前記印刷装置が前記ジョブの処理を完了したことを示す情報を表示する状態のいずれかであることを特徴とする請求項6乃至9のいずれかの1項に記載のプログラム。
【請求項11】
ジョブを管理するための管理情報を制御方法のプリントキューに表示し、通信経路を介して印刷装置に前記ジョブを送信した後に、前記プリントキューにおける前記ジョブの管理情報の表示を未完了状態から完了状態に変更する処理完了情報を前記印刷装置から受信する制御方法において、
前記プリントキューに表示した前記管理情報に対応するジョブが、前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信しない、非印刷ジョブであるか否かを判断する判断工程と、
前記判断工程において前記ジョブが前記非印刷ジョブであると判断された場合に、前記非印刷ジョブに対応した前記印刷装置によって印刷されないダミーデータを前記印刷装置に送信する送信工程と、を有し、
前記送信工程によって前記ダミーデータが前記印刷装置に送信された後に前記ダミーデータの処理完了情報を受信することにより、前記プリントキューにおける前記非印刷ジョブの管理情報が未完了状態から完了状態に変更されることを特徴とする制御方法。
【請求項12】
ジョブを管理するための管理情報を制御方法のプリントキューに表示し、通信経路を介して印刷装置に前記ジョブを送信した後に、前記プリントキューにおける前記ジョブの管理情報の表示を未完了状態から完了状態に変更する処理完了情報を前記印刷装置から受信する制御方法において、
前記プリントキューに表示した管理情報に対応するジョブが、前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信しない、非印刷ジョブであるか否かを判断する判断工程と、
前記判断工程において前記ジョブが前記非印刷ジョブであると判断された場合に、前記印刷装置からの処理完了情報を待たずに、前記プリントキューにおける前記非印刷ジョブの管理情報の表示を完了状態に変更する完了工程と、を有することを特徴とする制御方法。
【請求項1】
ジョブを管理するための管理情報を情報処理装置のプリントキューに表示し、通信経路を介して印刷装置に前記ジョブを送信した後に、前記プリントキューにおける前記ジョブの管理情報の表示を未完了状態から完了状態に変更する処理完了情報を前記印刷装置から受信する情報処理装置において、
前記プリントキューに表示した前記管理情報に対応するジョブが、前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信しない、非印刷ジョブであるか否かを判断する判断手段と、
前記判断手段において前記ジョブが前記非印刷ジョブであると判断された場合に、前記非印刷ジョブに対応した前記印刷装置によって印刷されないダミーデータを前記印刷装置に送信する送信手段と、を有し、
前記送信手段によって前記ダミーデータが前記印刷装置に送信された後に前記ダミーデータの処理完了情報を受信することにより、前記プリントキューにおける前記非印刷ジョブの管理情報が未完了状態から完了状態に変更されることを特徴とする情報処理装置。
【請求項2】
ジョブを管理するための管理情報を情報処理装置のプリントキューに表示し、通信経路を介して印刷装置に前記ジョブを送信した後に、前記プリントキューにおける前記ジョブの管理情報の表示を未完了状態から完了状態に変更する処理完了情報を前記印刷装置から受信する情報処理装置において、
前記プリントキューに表示した管理情報に対応するジョブが、前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信しない、非印刷ジョブであるか否かを判断する判断手段と、
前記判断手段において前記ジョブが前記非印刷ジョブであると判断された場合に、前記印刷装置からの処理完了情報を待たずに、前記プリントキューにおける前記非印刷ジョブの管理情報の表示を完了状態に変更する完了手段と、を有することを特徴とする情報処理装置。
【請求項3】
前記ジョブが非印刷ジョブであることを通知する非印刷ジョブ通知手段を更に有し、
前記非印刷ジョブ通知手段の通知に基づいて、前記判断手段は前記ジョブが非印刷ジョブであると判断することを特徴とする請求項1又は請求項2に記載の情報処理装置。
【請求項4】
前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信することを指示する指示手段を更に有し、
前記指示手段が前記印刷データを前記印刷装置に送信する指示をしないときに、前記判断手段は前記ジョブが非印刷ジョブであると判断することを特徴とする請求項1又は請求項2に記載の情報処理装置。
【請求項5】
前記完了状態は前記ジョブの管理情報の表示が、非表示となる状態、又は前記印刷装置が前記ジョブの処理を完了したことを示す情報を表示する状態のいずれかであることを特徴とする請求項1乃至4のいずれかの1項に記載の情報処理装置。
【請求項6】
ジョブを管理するための管理情報をコンピュータのプリントキューに表示し、通信経路を介して印刷装置に前記ジョブを送信した後に、前記プリントキューにおける前記ジョブの管理情報の表示を未完了状態から完了状態に変更する処理完了情報を前記印刷装置から受信するコンピュータにおいて実行されるプログラムであって、
前記プリントキューに表示した前記管理情報に対応するジョブが、前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信しない、非印刷ジョブであるか否かを判断する判断手段と、
前記判断手段において前記ジョブが前記非印刷ジョブであると判断された場合に、前記非印刷ジョブに対応した前記印刷装置によって印刷されないダミーデータを前記印刷装置に送信する送信手段と、をコンピュータに実行させ、
前記送信手段によって前記ダミーデータが前記印刷装置に送信された後に前記ダミーデータの処理完了情報を受信することにより、前記プリントキューにおける前記非印刷ジョブの管理情報が未完了状態から完了状態に変更されることを特徴とするコンピュータが実行可能なプログラム。
【請求項7】
ジョブを管理するための管理情報をコンピュータのプリントキューに表示し、通信経路を介して印刷装置に前記ジョブを送信した後に、前記プリントキューにおける前記ジョブの管理情報の表示を未完了状態から完了状態に変更する処理完了情報を前記印刷装置から受信するコンピュータにおいて実行されるプログラムであって、
前記プリントキューに表示した管理情報に対応するジョブが、前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信しない、非印刷ジョブであるか否かを判断する判断手段と、
前記判断手段において前記ジョブが前記非印刷ジョブであると判断された場合に、前記印刷装置からの処理完了情報を待たずに、前記プリントキューにおける前記非印刷ジョブの管理情報の表示を完了状態に変更する完了手段と、を有することを特徴とするコンピュータが実行可能なプログラム。
【請求項8】
前記ジョブが非印刷ジョブであることを通知する非印刷ジョブ通知手段を更に有し、
前記非印刷ジョブ通知手段の通知に基づいて、前記判断手段は前記ジョブが非印刷ジョブであると判断することを特徴とする請求項6又は請求項7に記載のプログラム。
【請求項9】
前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信することを指示する指示手段を更に有し、
前記指示手段が前記印刷データを前記印刷装置に送信する指示をしないときに、前記判断手段は前記ジョブが非印刷ジョブであると判断することを特徴とする請求項6又は請求項7に記載のプログラム。
【請求項10】
前記完了状態は前記ジョブの管理情報の表示が、非表示となる状態、又は前記印刷装置が前記ジョブの処理を完了したことを示す情報を表示する状態のいずれかであることを特徴とする請求項6乃至9のいずれかの1項に記載のプログラム。
【請求項11】
ジョブを管理するための管理情報を制御方法のプリントキューに表示し、通信経路を介して印刷装置に前記ジョブを送信した後に、前記プリントキューにおける前記ジョブの管理情報の表示を未完了状態から完了状態に変更する処理完了情報を前記印刷装置から受信する制御方法において、
前記プリントキューに表示した前記管理情報に対応するジョブが、前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信しない、非印刷ジョブであるか否かを判断する判断工程と、
前記判断工程において前記ジョブが前記非印刷ジョブであると判断された場合に、前記非印刷ジョブに対応した前記印刷装置によって印刷されないダミーデータを前記印刷装置に送信する送信工程と、を有し、
前記送信工程によって前記ダミーデータが前記印刷装置に送信された後に前記ダミーデータの処理完了情報を受信することにより、前記プリントキューにおける前記非印刷ジョブの管理情報が未完了状態から完了状態に変更されることを特徴とする制御方法。
【請求項12】
ジョブを管理するための管理情報を制御方法のプリントキューに表示し、通信経路を介して印刷装置に前記ジョブを送信した後に、前記プリントキューにおける前記ジョブの管理情報の表示を未完了状態から完了状態に変更する処理完了情報を前記印刷装置から受信する制御方法において、
前記プリントキューに表示した管理情報に対応するジョブが、前記印刷装置によって印刷される前記ジョブの印刷データを前記印刷装置に送信しない、非印刷ジョブであるか否かを判断する判断工程と、
前記判断工程において前記ジョブが前記非印刷ジョブであると判断された場合に、前記印刷装置からの処理完了情報を待たずに、前記プリントキューにおける前記非印刷ジョブの管理情報の表示を完了状態に変更する完了工程と、を有することを特徴とする制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2012−243025(P2012−243025A)
【公開日】平成24年12月10日(2012.12.10)
【国際特許分類】
【出願番号】特願2011−111584(P2011−111584)
【出願日】平成23年5月18日(2011.5.18)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年12月10日(2012.12.10)
【国際特許分類】
【出願日】平成23年5月18日(2011.5.18)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]