説明

画像形成装置、画像制御方法における制御方法、及びプログラム

【課題】 保持しているPDLデータを再度読み出して印刷する動作と、ホストと対話型で印刷を行う動作とを同時に実行しようとした場合、ホストとの対話処理に問題が発生する可能性があった。
【解決手段】 画像形成装置1のジョブ制御部211において、対話型の印刷モードをサポートしているPDLインタプリタ206を搭載しているか、受信したジョブがホストと対話型の印刷モードをサポートしているか否かに応じて、保持しているPDLデータを再読み出しして印刷するような特定の印刷動作を制限する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ホストから受信した印刷ジョブの印刷データ(PDL(page description language)データ)に基づき様々な機能を実現する画像形成装置、画像制御方法における制御方法、及びプログラムに関するものである。
【背景技術】
【0002】
従来、ホストから受信した印刷ジョブの印刷データ(PDLデータ)を画像形成出力する装置において、受信した印刷ジョブの印刷データ(PDLデータ)を保持しておくことにより様々な機能を実現している。
【0003】
例えば、実行中の印刷ジョブに割り込んで印刷する割り込み印刷を可能とした装置が考案されている(例えば、特許文献2参照)。
【0004】
また、例えば、ジョブ単位で仕分けして印刷するコレート印刷を可能とした装置が考案されている(例えば、特許文献1参照)。
【0005】
また、例えば、パスワードが入力されるまで印刷を留め置いておく、留め置き印刷を可能とした装置が考案されている(例えば、特許文献3参照)。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特登録02803087
【特許文献2】特開平07−096638
【特許文献3】特開平08−039898
【発明の概要】
【発明が解決しようとする課題】
【0007】
ところで、PDLによっては、ホストとプリンタとの間で、対話型で印刷処理を進める、対話型の印刷モードをサポートしている言語がある。
【0008】
例えば、PostScript(アドビ社の商標登録)では、ホストから送信されたPostScriptデータ(コマンド)に対して、プリンタがその実行結果を返送するという対話型のやり取りをサポートしている。
【0009】
図2は、その一例を示した図で、ホストから送信された/Times−Romanフォントが実装されているか?という問い合わせ(コマンド)に対して、プリンタがその結果(true=実装されている)を返している。
【0010】
ここで、従来の画像形成装置において、受信した印刷データを保持しておくことにより実現している機能(割り込み印刷、コレート印刷、留め置き印刷など)と、ホストと対話型の印刷モードとを同時に実行した場合、それぞれ、以下のような問題が発生する。
【0011】
図3は、課題の説明で使用する印刷データ(PDLデータ)の例を示す。
【0012】
PDLデータ301は、コマンド1〜4で構成されていて、コマンド1、コマンド3を実行すると、それぞれ、ホストへの応答データ1、応答データ2が発生する。
【0013】
また、コマンド1〜2の実行によりページ1が、コマンド3から4の実行によりページ2が生成される。
【0014】
プリンタは、ホストから受信したPDLデータ301を保持しておくことにより、割り込み印刷、コレート印刷、留め置き印刷を実現する。
【0015】
<割り込み印刷の場合>
図4は、プリンタが、PDLデータ301の処理途中で、割り込みジョブを受信したときの例を示す。
【0016】
図示した通り、割り込みジョブが発生した時点で、プリンタのPDLインタプリタの処理は中断されるので、未実行のコマンドに対する応答データがホストに返信されず、ホスト側はプリンタからの応答データ待ちのままとなってしまう。
【0017】
また、割り込みジョブの処理が終了し、割り込まれたジョブの処理を再開(割り込み復帰)する場合、PDLインタプリタは、プリンタに保持しているPDLデータ301を先頭から解釈する。
【0018】
これは、PDLによっては(例えば、PostScriptの場合)、データが再帰的に記述されているため、一度解釈を中断したデータに対して、データの途中から解釈を再開することはできないからである。
【0019】
PDLインタプリタが、再びPDLデータ301の先頭から解釈していくと、コマンド1を実行した時点で、応答データ1が発生し、これを再びホストに返信する。
【0020】
これに対し、ホスト側は、コマンド3に対する応答データ2を待っている状態なので、応答データ1が返信されると不整合が生じてしまう。
【0021】
なお、割り込み発生時に、印刷済みページ数を記憶しておき、割り込み復帰時に印刷済みページの画像を印刷しないようにすることは容易に実現できる。
【0022】
しかし、印刷済みページ数と、割り込み前のコマンドの実行状況とは、必ずしも対応が取れないので(先述の通り、PDLによってはデータが再帰的に記述されているため)、応答データをホストに返送しないようにすることは困難である。
【0023】
このように、対話型の印刷ジョブを処理中に割り込みジョブを受信した場合、割り込み発生時、割り込み復帰時、それぞれで問題が生じる。
【0024】
<コレート印刷の場合>
図5は、プリンタが、PDLデータ301を、コレート印刷で2部以上印刷したときの例を示す。
【0025】
図示した通り、2部目以降の印刷時にも、PDLインタプリタが、プリンタに保持しているPDLデータ301を再び先頭から解釈することにより実現しているので、解釈を複数回行う度に、応答データ1、2をホストに返信してしまう。
【0026】
これに対し、ホスト側は、PDLデータ301を1回しか送信していないにも関わらず、複数回応答データが返信されると不整合が生じてしまう。
【0027】
このように、対話型の印刷ジョブをコレート印刷で2部以上印刷した場合に、問題が生じる。
【0028】
<留め置き印刷の場合>
留め置き印刷の場合、プリンタに保持されたPDLデータは、ユーザが印刷開始を指示するまで解釈されない。
【0029】
したがって、対話型の印刷ジョブにも関わらず、ユーザが印刷開始を指示するまで、ホストには応答データが一切返信されず、ホスト側はプリンタからの応答データ待ちのままとなってしまう、という問題が生じる。
【課題を解決するための手段】
【0030】
上述した課題を解決するために、本発明の画像形成装置は、
ホストから受信した印刷データを記憶する記憶手段と、
前記記憶手段に記憶された印刷データを読み出して中間コードを生成する生成手段と、
前記生成手段により生成された中間コードに基づき画像を形成する画像形成手段と、
受信した印刷データがPostScriptの印刷データでない場合、ホストから受信した印刷データの保持動作を利用した特定の印刷機能の実行を制限せず、受信した印刷データがPostScriptの印刷データの場合、ホストから受信した印刷データの保持動作を利用した特定の印刷機能の実行を制限する制限手段とを有することを特徴とする。
【発明の効果】
【0031】
また、本発明によれば、ホストと対話型で印刷を行う印刷データを受信した場合に、特定の印刷機能を問題なく実現することができる。
【図面の簡単な説明】
【0032】
【図1】コントローラ10の機能ブロック図。
【図2】ホストからの問い合わせに対してプリンタが応答する例を示す図
【図3】ホストへの応答データが発生するPDLデータ301の例を示す図
【図4】プリンタがPDLデータ301の処理途中で割り込みジョブを受信した時の例を示す図。
【図5】プリンタがPDLデータ301をコレート印刷で2部以上印刷したときの例を示す図。
【図6】画像形成装置1のハード構成図。
【図7】ジョブ識別部202のジョブ受信処理を示すフローチャート。
【図8】PDLスプーラ203の受信データ格納処理を示すフローチャート。
【図9】受信データ管理テーブル204の構成を示す図。
【図10】PDLスプーラ203の受信データ転送処理を示すフローチャート。
【図11】PDLスプーラ203の受信データ削除処理を示すフローチャート。
【図12】PDLインタプリタ206の処理開始時の処理を示すフローチャート。
【図13】PDLインタプリタ206の処理停止時の処理を示すフローチャート。
【図14】実施例1における、ジョブ制御部211のジョブ受信処理を示すフローチャート。
【図15】実施例1における、ジョブ管理テーブル212の構成を示す図。
【図16】従来の画像形成装置における、ジョブ管理テーブル212の生成処理を示すフローチャート。
【図17】実施例1における、ジョブ管理テーブル212の生成処理を示すフローチャート。
【図18】ジョブ制御部211のジョブ実行処理を示す第1のフローチャート。
【図19】ジョブ制御部211のジョブ実行処理を示す第2のフローチャート。
【図20】ジョブ制御部211のジョブ実行処理を示す第3のフローチャート。
【図21】ジョブ制御部211のジョブ実行処理を示す第4のフローチャート。
【図22】ジョブ制御部211の留め置き印刷実行処理を示すフローチャート。
【図23】実施例2における、ジョブ管理テーブル212の構成を示す図。
【図24】実施例2における、ジョブ管理テーブル212の生成処理を示すフローチャート。
【図25】実施例2における、ジョブ制御部211のジョブ受信処理を示すフローチャート。
【発明を実施するための形態】
【0033】
(実施例1)
<ハード構成>
図6は、本発明が適用される画像形成装置のハード構成の概要を示すブロック図である。
【0034】
画像形成装置1は、全体の制御を司るプリンタ・コントローラ(コントローラ)10を有する。さらにユーザからの指示を受け付けたり表示を行うパネル20、ホスト2から受信した印刷ジョブの印刷データ等を記憶しておく記憶装置(HDDなど)30、印刷を行うプリンタ・エンジン40を有する。
【0035】
次にコントローラ10を説明する。CPU101のCPUバス102に、パネル・インターフェース(パネルI/F)103、ネットワーク・インターフェース(Network I/F)104、画像生成器105、プリンタ・エンジン・インターフェース(プリンタI/F)106が接続されている。さらにCPU101のCPUバス102には、記憶装置インターフェース107、RAM108、ROM109が接続されている。
【0036】
パネルI/F103は、パネル20に接続し、パネル20より入力されたユーザの指示をCPU101に通知したり、ROM109、RAM108に格納されている画面情報や設定情報をパネル20に表示する。
【0037】
Network I/F104は、ネットワークに接続するホスト2との間でデータの送受信を行う。
【0038】
画像生成器105は、ホスト2から受信したデータを解釈して得られたDisplayListからビットマップ画像を生成する。
【0039】
プリンタI/F106は、CPU101の指示の基、画像生成器105で生成されたビットマップ画像をプリンタ・エンジン40に出力する。
【0040】
記憶装置I/F107は、記憶装置30との間でデータの送受信を行う。
【0041】
RAM108は、CPU101の作業領域として使用されるメモリである。
【0042】
ROM109は、制御プログラムやパネル20に表示する画面情報が格納されたメモリである。
【0043】
CPU101は、ROM109に格納された制御プログラムに従って、コントローラ10の各部を制御する。
【0044】
<ソフト構成>
図1は、本実施例におけるコントローラ10の機能ブロック図である。
【0045】
論理チャネル制御部201は、Network I/F104で受信した印刷ジョブのジョブパケットと管理パケットを、それぞれ異なるチャネルに割り振り、OSI7階層におけるトランスポート層の多重化を行う。
【0046】
また、論理チャネル制御部201は、PDLインタプリタ206で発生したホストへの応答データ208を、Network I/F104を介してホスト2に送信する。
【0047】
ジョブ識別部202は、受信したジョブパケットを解析し、ジョブ設定情報をジョブ制御部211に、印刷データ(PDLデータ)をPDLスプーラ203に渡す。
PDLスプーラ203は、受信したPDLデータ205を、PDLインタプリタ206に送信したり、RAM108や記憶装置30に記憶する。
【0048】
受信データ管理テーブル204は、PDLスプーラ203が、受信したPDLデータ205をジョブ毎に管理するためのテーブルである。
【0049】
PDLインタプリタ206は、PDLスプーラ203から読み出したPDLデータ205を解釈し、Display List(中間コード)207を生成して、RAM108に格納する。
【0050】
また、PDLデータ205を解釈した結果、ホストへの応答データ208が発生した場合、これをRAM108に格納し、論理チャネル制御部201に通知する。
【0051】
なお、PDLインタプリタ206は、複数搭載可能であって(図1では、206a、206b)、PDLデータ205の種別に応じて、該当のPDLインタプリタが処理する。
【0052】
画像形成出力部209は、Display List(中間コード)207を画像生成器105でページ画像210に展開し、展開したページ画像210をプリンタI/F106を介してプリンタ・エンジン40に出力する。プリンタエンジン40はページ画像に基づき用紙に印刷を行う。
【0053】
機器管理部214は、パネル20から入力した操作指示や、ホスト2から管理パケットで入力した操作指示をジョブ制御部211に通知したり、機器の状態をパネル20に表示したりする。
【0054】
ジョブ制御部211は、ジョブ識別部202、PDLスプーラ203、PDLインタプリタ206、画像形成出力部209、機器管理部213と接続し、これらの機能部とやり取りして、印刷ジョブを実行する。
【0055】
ジョブ管理テーブル212は、ジョブ制御部211が、ジョブを管理するためのテーブルで、ジョブ毎に、ジョブ識別202から入力したジョブ設定情報や、ジョブの制御情報が格納される。
【0056】
ジョブ実行キュー213は、ジョブ制御部211が、ジョブの実行順を制御するためのテーブルで、実行順にジョブ管理テーブル212へのポインタが格納されている。
【0057】
次に、本発明に係る、コントローラ10の主な機能部(ジョブ識別部202、PDLスプーラ203、PDLインタプリタ206、ジョブ制御部211)の処理について、詳細に説明する。
【0058】
<ジョブ識別部の処理>
図7は、ジョブ識別部202において、Network I/F104から新たなジョブを受信した時の処理プログラムを示すフローチャートである。
【0059】
ジョブ識別部202は、新たなジョブを受信すると、まず、当該ジョブを識別するためのジョブ識別子(JobID)を付与する(S701)。
【0060】
続いて、ジョブ識別部202は、付与したJobIDと、当該ジョブに設定されたジョブ設定情報とともに、ジョブ制御部211に新たなジョブを受信したことを通知する(S702)。
【0061】
次に、ジョブ識別部202は、PDLスプーラ203に、新たなジョブを受信したことを通知する(S703)。
【0062】
次に、ジョブ識別部202は、PDLスプーラ203に、受信したジョブに含まれる一連の受信データを転送する(S704)。
【0063】
ジョブ識別部202は、ジョブの終端を検知すると(S705)、PDLスプーラ203に受信データの転送終了を通知して(S706)、一連の処理を終える。
【0064】
<PDLスプーラの受信データ格納処理>
図8は、PDLスプーラ203において、ジョブ識別部202から受信したデータを格納する処理プログラムを示すフローチャートである。
【0065】
PDLスプーラ203は、ジョブ識別部202から各種通知を受信すると、まず、その通知種別を判別する(S801)。
【0066】
通知種別が、ジョブ受信通知の場合、PDLスプーラ203は、新たな受信データ管理テーブル204を生成し、受信データの格納領域をRAM108または、記憶装置30上に確保する(S802)。
【0067】
<受信データ管理テーブル>
図9は、受信データ管理テーブル204の構成を示す。
【0068】
受信データ管理テーブル204は、ジョブ毎に生成され、「JobID」「書き込みポインタ」「読み出しポインタ」「読み出しモード」から構成される。
【0069】
「JobID」は、ジョブ識別子を示し、ジョブ識別部202から通知されたJobIDがセットされる。
【0070】
「書き込みポインタ」は、受信データ205の格納先を示し、PDLスプーラ203が確保した受信データ格納先のアドレスがセットされる。
【0071】
「読み出しポインタ」は、受信データ205の読み出し先を示し、テーブルが生成された時点では、「書き込みポインタ」と同じアドレスがセットされる。
【0072】
「読み出しモード」は、受信データ205が読み出された後の処理を示し、「バックアップ」は、受信データ205が読み出された後も保持しておくことを示し、「読み捨て」は、受信データ205が読み出された時点で削除することを示す。
【0073】
なお、「読み出しモード」は、PDLインタプリタ206からの読み出し開始時に指定されるので、テーブルが生成された時点ではセットされない。
【0074】
再び、図8のフローチャートに戻って説明する。
【0075】
通知種別が、受信データの転送通知の場合、PDLスプーラ203は、ジョブ識別部202から受信したデータを、当該ジョブの受信データ格納領域に書き込み(S803)、「書き込みポインタ」を更新する(S804)。
【0076】
通知種別が、受信データの転送終了通知の場合、PDLスプーラ203は、当該ジョブの受信データ205の最後に、データの終端であることを示す「EOF」を追加して、一連の処理を終える(S805)。
【0077】
<PDLスプーラの受信データ読み出し処理>
図10は、PDLスプーラ203において、PDLインタプリタ206に受信データ205を転送する処理プログラムを示すフローチャートである。
【0078】
PDLスプーラ203は、PDLインタプリタ206から各種通知を受信すると、まず、その通知種別を判別する(S1001)。
【0079】
通知種別が、受信データの読み出し開始通知の場合、PDLスプーラ203は、PDLインタプリタ206から指定された「読み出しモード」を、当該ジョブの受信管理テーブル204にセットする(S1002)。
【0080】
通知種別が、受信データの読み出し通知の場合、PDLスプーラ203は、当該ジョブの「読み出しポインタ」から受信データ205を読み出して、PDLインタプリタ206に送信する(S1003)。
【0081】
続いて、PDLインタプリタ206に送信したデータサイズ分「読み出しポインタ」を更新する(S1004)。
【0082】
また、「読み出しモード」が「読み捨て」の場合は(S1005)、この時点でPDLインタプリタ206に送信した受信データ205を、受信データ格納領域から削除する(S1006)。
【0083】
通知種別が、受信データの読み出し終了通知の場合、「読み出しモード」によって処理が異なる(S1007)。
【0084】
「読み出しモード」が「読み捨て」の場合、PDLスプーラ203は、この時点で、当該ジョブの受信データ管理テーブル204を削除する(S1008)。
【0085】
「読み出しモード」が「バックアップ」の場合、PDLスプーラ203は、受信データ管理テーブル204は削除せず、当該ジョブの「読み出しポインタ」を、受信データ格納領域の先頭に戻す(S1009)。
【0086】
これにより、PDLインタプリタ206が、受信データ205を再読み出しする際、受信データ205の先頭から解釈を開始することができる。
【0087】
図11は、PDLスプーラ203において、ジョブ制御部211から、受信データ205の削除通知を受信した時の処理プログラムを示すフローチャートである。
【0088】
PDLスプーラ203は、ジョブ制御部211から指定されたジョブの受信データ205を、受信データ格納領域から削除し、当該ジョブの受信管理テーブル204を削除する(S1101)。
【0089】
<PDLインタプリタの起動時の処理>
図12は、PDLインタプリタ206(206a、206b)において、ジョブ制御部211から処理の開始が指示された時の処理プログラムを示すフローチャートである。
【0090】
処理開始を指示されたPDLインタプリタ206(206aまたは206b)は、まず、PDLスプーラ203に、受信データ205の読み出し開始を通知する(S1201)。
【0091】
なお、読み出し開始通知では、ジョブ制御部211から指定された「読み出しモード」を指定する。
【0092】
続いて、PDLスプーラ203から、順次受信データ205を読み出し(S1202)、読み出した受信データ205を解釈してDisplay List207を生成し、RAM108に格納する(S1203)。
【0093】
また、受信データ205を解釈して、ホストへの応答データ208が発生した場合は(S1204)、これをRAM108に格納するとともに、論理チャネル制御部201に通知する(S1205)。
【0094】
受信データ205の終端(EOF)を検知するまで、ステップS1202〜S1205の処理を繰り返す。
【0095】
PDLインタプリタ206は、受信データ205の終端(EOF)を検知すると(S1206)、PDLスプーラ203に、受信データ205の読み出し終了を通知(S1207)する。
【0096】
続いて、PDLインタプリタ206は、ジョブ制御部211に、受信データ205の解釈終了を通知する(S1208)。
【0097】
なお、ジョブ制御部211への解釈終了通知には、ジョブの総ページ数が含まれていて、この通知を受け取ったジョブ制御部211は、当該ジョブのジョブ管理テーブル212の「総ページ数(TP)」にこの値をセットする。
【0098】
<PDLインタプリタの停止時の処理>
図13は、PDLインタプリタ206(206a、206b)において、ジョブ制御部211から処理停止が指示された時の処理プログラムを示すフローチャートである。
【0099】
処理停止を指示されたPDLインタプリタ206(206aまたは206b)は、まず、現在処理中の受信データ205の解釈を停止する(S1301)。
【0100】
続いて、PDLスプーラ206から読み出して一時的に保持している受信データ、および、生成途中のDisplay List207を削除する(S1302)。
【0101】
また、受信データ205の読み出しを終えていない場合は(S1303)、PDLスプーラ203に、受信データ205の読み出し終了を通知して(S1304)処理を終える。
【0102】
<ジョブ制御部のジョブ受信時の処理>
図14は、ジョブ制御部211において、ジョブ識別部202からジョブ受信通知を受けた時の処理プログラムを示すフローチャートである。
【0103】
ジョブ制御部211は、まず、ジョブ管理テーブル212を生成する(S1401)。
【0104】
<ジョブ管理テーブル>
ここで、ジョブ管理テーブル212について説明する。
【0105】
図15は、実施例1におけるジョブ管理テーブル212の構成を示す。
【0106】
ジョブ管理テーブル212は、「JobID」「ジョブ設定情報」「ジョブ制御情報」から構成される。
【0107】
「JobID」は、ジョブ識別子を示し、ジョブ識別部202から通知されたJobIDがセットされる。
【0108】
「ジョブ設定情報」は、ジョブ識別部202が、ホスト2から受信したジョブパケットを解釈して得られたジョブに関する設定情報で、ジョブ識別部202が、ジョブ受信通知に含めてジョブ制御部211に通知する。
【0109】
「ジョブ設定情報」には、例えば、「ジョブ実行モード」「PDL種別」「部数」「コレート印刷」などが含まれる。
【0110】
「ジョブ実行モード」は、ジョブの実行タイミングを示し、「通常」は、受付け順に処理することを示し、「割り込み」は、現在実行中のジョブに割り込んで実行することを示し、「留め置き」は、ユーザが実行指示を与えるまで実行を待機することを示す。
【0111】
「PDL種別」は、ジョブに含まれるPDLデータの種別を示し、例えば、LIPSやPostScriptといったPDL名称がセットされる。
【0112】
「部数」は、ジョブの印刷部数を指定する。
【0113】
「コレート印刷」は、ジョブをコレートで印刷するか否かを指定する。
【0114】
「ジョブ制御情報」は、ジョブ制御部211が、ジョブを制御する際に用いる情報で、ジョブ制御部211によりセットされる。
【0115】
「ジョブ制御情報」は、「ステータス」「読み出しモード」「総ページ数(TP)」「生成済ページ数(RP)」「印刷済みページ数(OP)」から構成される。
【0116】
「ステータス」は、ジョブの実行状況を示し、状況に応じて「実行待ち」「実行中」「割り込み要求」「停止待ち」「停止中」の何れかの値がセットされる。
【0117】
「読み出しモード」は、受信データ管理テーブル204の「読み出しモード」と同じである。
【0118】
「総ページ数(TP)」は、1ジョブの総ページ数を示す。
【0119】
「生成済みページ数(RP)」は、画像形成出力部209でページ画像210の生成を終えたページ数を示す。
【0120】
「印刷済みページ数(OP)」は、プリンタ・エンジン40で印刷を終えたページ数を示す。
【0121】
各メンバーの使われ方や更新については、後述の処理で説明する。
【0122】
<ジョブ管理テーブルの生成処理>
図16は、従来の画像形成装置における、ジョブ管理テーブル212の生成処理プログラムを示すフローチャートである。
【0123】
ジョブ制御部211は、まず、「ジョブ設定情報」の各メンバーに、それぞれ、ジョブ識別202から通知された値をセットする(S1601)。
【0124】
次に、「ステータス」に「実行待ち」を、「総ページ数(TP)」に「未確定」を、「生成済みページ数(RP)」「印刷済みページ数(OP)」に0をセットする(S1602)。
【0125】
次に、ジョブ制御部211は、記憶装置(HDD)30の装着状況を判別し(S1603)、記憶装置(HDD)30が装着されている場合は、「読み出しモード」に「バックアップ」をセットする(S1606)。
【0126】
記憶装置(HDD)30が装着されていない場合は、「ジョブ実行モード」を「通常」に、「コレート印刷」を「OFF」に上書きし(S1604)、「読み出しモード」に「読み捨て」をセットする(S1605)。
【0127】
これは、記憶装置(HDD)30が装着されていない場合、受信データ205の格納領域が十分確保できないため、受信データ205を保持しておく動作や、これにより実現している機能(割り込み印刷、コレート印刷、留め置き印刷)を制限するためである。
【0128】
図17は、本実施例における、ジョブ管理テーブル212の生成処理プログラムを示すフローチャートである。
【0129】
従来の画像形成装置との違いは、ステップS1703で、記憶装置(HDD)30の装着状況に加え、搭載しているPDLインタプリタ206の種別を判別するようにした点である。
【0130】
本実施例では、PDLインタプリタの種別として、PostScriptを搭載しているか否かを判別している。
【0131】
これは、PDLによっては、ホストと対話型の印刷モードをサポートしているので、この場合、受信データ205を保持しておく動作や、これにより実現している機能(割り込み印刷、コレート印刷、留め置き印刷)を制限するためである。
【0132】
再び、図14のフローチャートに戻って、ジョブ制御部211におけるジョブ受信時の処理を説明する。
【0133】
ステップS1401で、ジョブ管理テーブル212の生成を終えると、ジョブ制御部211は、当該ジョブの「ジョブ実行モード」に応じて、ジョブ実行キュー213への追加を判断する(S1402)。
【0134】
「ジョブ実行モード」が「留め置き」の場合は、ユーザの指示があるまで実行しないので、この時点ではジョブ実行キュー213には追加せずに処理を終える。
【0135】
「ジョブ実行モード」が「通常」の場合は、当該ジョブをジョブ実行キュー213の末尾に追加する(S1403)。
【0136】
「ジョブ実行モード」が「割り込み」の場合は、まず、ジョブ実行キュー213にジョブがあるか否かを判別し(S1404)、無い場合は、ジョブ実行キュー213の末尾(=先頭)に追加する(S1403)。
【0137】
ジョブ実行キュー213にジョブがある場合、次に、ジョブ実行キュー213の先頭ジョブの「ジョブ実行モード」を確認し、「割り込み」か否かを判別する(S1405)。
【0138】
先頭ジョブが割り込みジョブの場合、当該ジョブをジョブ実行キュー213の2番目に追加する(S1410)。
【0139】
これは、割り込みジョブに対する割り込みは、禁止するためである。
【0140】
先頭ジョブが割り込みジョブでない場合、次に、先頭ジョブの「ステータス」を確認し、「実行中」か否かを判別する(S1406)。
【0141】
先頭ジョブが実行中でない場合、当該ジョブをジョブ実行キュー213の先頭に追加する(S1409)。
【0142】
先頭ジョブが実行中の場合、まずこれを中断する必要があるので、先頭ジョブの「ステータス」を「割り込み要求」に変更し(S1407)、当該ジョブの「ステータス」を「停止待ち」に変更する(S1408)。
【0143】
続いて、当該ジョブをジョブ実行キュー213の先頭に追加する(S1409)。
【0144】
<ジョブ制御部のジョブ実行処理>
図18は、ジョブ制御部211におけるジョブ実行処理プログラムのフローチャートを示す。
【0145】
ジョブ制御部211は、まず、ジョブ実行キュー213にジョブがあるか否かを判別し(S1801)、ジョブが無ければ、ジョブが発生するまで待機する。
【0146】
ジョブがある場合は、当該ジョブのジョブ管理テーブル212の「ステータス」を確認する(S1802)。
【0147】
「ステータス」が「停止待ち」の場合、ジョブ制御部211は、「ステータス」が「実行待ち」に遷移するまで待機する。
【0148】
「ステータス」が「実行待ち」の場合、ジョブ制御部211は、当該ジョブの「ステータス」を「実行中」に変更する(S1803)。
【0149】
続いて、ジョブ制御部211は、ジョブ管理テーブル212の「PDL種別」で示されるPDLインタプリタ206(206aまたは206b)、および、画像形成出力部209に処理開始を通知する(S1804)。
【0150】
なお、PDLインタプリタ206に対しては、ジョブ管理テーブル212の「読み出しモード」を指定して、処理開始を通知する。
【0151】
PDLインタプリタ206(206または206b)、および、画像形成出力部209の処理が開始されると、実際の印刷シーケンスに入る。
【0152】
印刷シーケンスに入ると、ジョブ制御部211は、まず、画像形成出力部209に、生成済みのページ画像210があるか否かを問い合わせる(S1805)。
【0153】
生成済みのページ画像210があれば、ジョブ制御部211は、続いて、ページ画像出力処理を行う(S1806)。
【0154】
<ページ画像出力処理>
図19は、ステップS1806のページ画像出力処理プログラムを示すフローチャートである。
【0155】
ジョブ制御部211は、まず、ジョブ管理テーブル212の「生成済みページ数(RP)」をインクリメントし(S1901)、これを「印刷済みページ数(OP)」と比較して、当該ページが未印刷のページであるか否かを判別する(S1902)。
【0156】
未印刷のページの場合、ジョブ制御部211は、画像形成出力部209に、当該ページ画像210の出力を指示して、プリンタ・エンジン40で印刷を行う(S1903)。
【0157】
印刷済みのページの場合、ジョブ制御部211は、画像形成出力部209に、当該ページ画像210の破棄を指示して(S1907)処理を終える。
【0158】
これは、被割り込みジョブの再開時(割り込み復帰時)には、割り込み発生前に既に印刷したページは、重複して印刷しないようにするためである。
【0159】
ステップS1903で1ページの印刷を終えると、ジョブ制御部211は、ジョブ管理テーブル212の「コレート印刷」を参照し、当該ジョブの設定が、コレート印刷であるか否かを判別する(S1904)。
【0160】
「コレート印刷」が「OFF」の場合は、ページ単位で複数部の印刷を行うので、部数で指定された回数、当該ページの印刷を行う(S1905)。
【0161】
当該ページの印刷が完了すると、ジョブ制御部211は、ジョブ管理テーブル212の「印刷済みページ数(OP)」をインクリメントし(S1906)、画像形成出力部209に、当該ページ画像210の破棄を指示して(S1907)処理を終える。
【0162】
再び、図18のフローチャートに戻って説明する。
【0163】
ステップS1805で、生成済みのページ画像210がない場合、続いて、当該ジョブのジョブ管理テーブル212を参照し、「総ページ数(TP)」が確定していて、且つ、全ページ印刷完了したか(OPとTP等しいか)を判別する(S1807)。
【0164】
全ページの印刷が完了していた場合、ジョブ制御部211は、ジョブ管理テーブル212の「コレート印刷」を参照し、当該ジョブの設定が、コレート印刷か否かを判別する(S1808)。
【0165】
「コレート印刷」が「ON」の場合は、ジョブ単位で複数部の印刷を行うので、続いて、全部数の印刷完了したか否かを判別する(S1809)。
【0166】
判別の結果、未だ印刷する部数が残っている場合は、ステップS1804に戻って、次の部数の印刷を継続する。
【0167】
この通知を受けたPDLインタプリタ206(206aまたは206b)が、PDLスプーラ203で保持しているジョブの受信データ205を再び先頭から読み出して解釈することにより、複数部の印刷が行われる。
【0168】
ステップS1808で「コレート印刷」が「OFF」の場合、また、ステップS1809で全部数の印刷完了した場合、続いて、ジョブ終了処理に移行する(S1812)。
【0169】
<ジョブ終了処理>
図20は、ステップS1812のジョブ終了処理プログラムのフローチャートを示す。
【0170】
ジョブ制御部211は、まず、ジョブ管理テーブル212の「読み出しモード」を確認し(S2001)、「バックアップ」の場合、PDLスプーラ203にジョブ終了を通知する(S2002)。
【0171】
この通知を受けたPDLスプーラ203は、図11のステップS1101で、当該ジョブの受信データ205、および、受信データ管理テーブル204を削除する。
【0172】
続いて、ジョブ制御部211は、ジョブ管理テーブル212の「ジョブ実行モード」を確認して、当該ジョブが割り込みジョブであるか否かを判別する(S2003)。
【0173】
当該ジョブが割り込みジョブだった場合、ジョブ制御部211は、被割り込みジョブ(「ステータス」=「停止中」のジョブ)の「ステータス」を「実行待ち」に変更する(S2004)。
【0174】
最後に、ジョブ制御部211は、ジョブ実行キュー213から当該ジョブを削除して(S2005)、一連の処理を終える。
【0175】
再び図18のフローチャートに戻って説明する。
【0176】
ステップS1807で、全ページの印刷が完了していなかった場合、ジョブ制御部211は、続いて、ジョブ管理テーブル212の「ステータス」を参照し、「割り込み要求」に変更されていないか確認する(S1811)。
【0177】
「ステータス」が「割り込み要求」の場合、割り込みジョブが発生したことを示しているので、続いて、ジョブ割り込み処理へと移行する(S1812)。
【0178】
なお、「ステータス」が「割り込み要求」でない場合は、ステップS1805に戻って、次ページの印刷を継続する。
【0179】
<ジョブ割り込み処理>
図21は、ステップS1812のジョブ割り込み処理プログラムを示すフローチャートである。
【0180】
ジョブ制御部211は、まず、当該ジョブを処理しているPDLインタプリタ206(206または206b)、および、画像形成出力部209に、処理の停止を通知する(S2101)。
【0181】
この通知を受けたPDLインタプリタ206、画像形成出力部209は、それぞれ処理中のデータ(Display List207、ページ画像210)を削除する。
【0182】
続いて、ジョブ制御部211は、当該ジョブのジョブ管理テーブル212の「生成済みページ数(RP)」をクリアし、「ステータス」を「停止中」に変更する。
【0183】
最後に、ジョブ制御部211は、割り込みジョブ(「ステータス」=「停止待ち」のジョブ)の「ステータス」を「実行待ち」に変更して(S2103)、処理を終える。
【0184】
<留め置き印刷実行処理>
図22は、ジョブ制御部211において、留め置き印刷の開始が指示された時の処理プログラムを示すフローチャートである。
【0185】
なお、この指示は、ユーザが、パネル20、または、ホスト2から、画像形成装置1に留め置かれているジョブ(JobID)を指定して、印刷開始を指示することにより発生し、機器管理部214を介してジョブ制御部211に入力される。
【0186】
ジョブ制御部211は、まず、指定されたJobIDに該当するジョブ管理テーブル212が存在するか否かを判別し(S2201)、存在しない場合は、何もせず処理を終える。
【0187】
該当するジョブ管理テーブル212が存在する場合、続いて、ジョブ制御部211は、ジョブ実行キュー213にジョブがあるか否かを判別し(S2202)、ジョブがない場合は、当該ジョブをジョブ実行キュー213の先頭に追加する(S2203)。
【0188】
ジョブがある場合、続いて、ジョブ制御部211は、先頭ジョブのジョブ管理テーブル212を参照し、先頭ジョブが割り込みジョブ、または、「ステータス」が「実行中」であるか否かを判別する(S2204)。
【0189】
先頭ジョブが割り込みジョブや「ステータス」が「実行中」の場合は、当該ジョブをジョブ実行キューの2番目に追加する(S2205)。それ以外の場合は、ジョブ実行キューの先頭に追加して(S2203)処理を終える。
【0190】
以上説明したように、搭載しているPDLインタプリタの種別によっては、特定の印刷機能(ホスト2から受信したPDLデータをPDLスプーラ203に保持し、割り込み印刷、コレート印刷、留め置き印刷)の動作を制限するようにした。
【0191】
したがって、例えば、PostScriptのように、ホストと対話型の印刷モードをサポートしているPDLインタプリタを搭載している場合、上述の動作を制限することにより、対話型の印刷モードを問題なく実行することができる。
【0192】
(実施例2)
実施例1では、画像形成装置1に搭載しているPDLインタプリタの種別によって、動作を制限するようにしたが、受信したジョブ毎に動作を制限するようにしても良い。
【0193】
例えば、PostScriptデータを、AppleTalkのPAP(Printer Access Protocol) Directモードで受信した場合、画像形成装置1は、ホストと対話型の印刷モードをサポートする。
【0194】
この際、画像形成装置1は、データを受信したネットワークのソケットにより、受信したジョブがPAP Directジョブであるか否かを識別できるので、これを基に、ジョブ毎に動作を制限することができる。
【0195】
図23は、実施例2における、ジョブ管理テーブル212の構成を示す。
【0196】
実施例1のジョブ管理テーブル(図15)との違いは、ジョブ設定情報に、当該ジョブがPAP Directジョブであるか否かを示す「PAP Direct」という情報を追加している。
【0197】
この「PAP Direct」の情報は、以下のようにして、ジョブ管理テーブル212にセットされる。
【0198】
まず、Network I/F104が、データを受信したネットワークのソケット情報を論理チャネル制御部201に通知する。
【0199】
次に、論理チャネル制御部201が、ジョブ識別部202にジョブパケットを送信する際に、PAP Directで受信したジョブの場合、これを明示する。
【0200】
そして、ジョブ識別部202が、ジョブ制御部211に通知するジョブ受信通知で、ジョブ設定情報に「PAP Direct」情報を付加することにより、ジョブ管理テーブル212にセットされる。
【0201】
<ジョブ管理テーブルの生成処理>
図24は、実施例2における、ジョブ制御部211のジョブ管理テーブル212の生成処理プログラムを示すフローチャートである。
【0202】
ステップS2401、S2402は、それぞれ、実施例1のステップS1701、S1702と同じであるため、説明を割愛する。
【0203】
ジョブ制御部211は、ステップS2403で、記憶装置(HDD)30の装着状況を確認する。
【0204】
記憶装置(HDD)30が装着されている場合は、次に、ジョブ管理テーブル212の「PAP Direct」を参照し、当該ジョブがPAP Directジョブであるか否かを判別する(S2406)。
【0205】
当該ジョブがPAP Directジョブでない場合は、特に動作を制限する必要はないので、「読み出しモード」に「バックアップ」をセットして(S2410)処理を終える。
【0206】
当該ジョブがPAP Directジョブの場合、ジョブ制御部211は、ジョブ管理テーブル212の「コレート印刷」を「OFF」に上書きする(S2407)。
また、「ジョブ実行モード」が「留め置き」の場合は(S2408)、これを「通常」に上書きする(S2409)。
【0207】
なお、PAP Directジョブを割り込みジョブとして実行する分には、特に問題ないので(割り込みジョブに対する割り込みは禁止しているので)、「ジョブ実行モード」が「割り込み」であっても、「通常」に上書きはしない。
【0208】
記憶装置(HDD)30が装着されていない場合や、当該ジョブがPAP Directジョブの場合、ジョブ制御部211は、「読み出しモード」に「読み捨て」をセットして(S2405)処理を終える。
【0209】
以上の処理により、PAP Directジョブの場合、コレート印刷や留め置き印刷が指定されていても、これらの動作を制限するので、ホストとの対話型の印刷処理を問題なく実行することができる。
【0210】
<ジョブ制御部のジョブ受信時の処理>
図25は、実施例2におけるジョブ制御部211のジョブ受信時の処理プログラムを示すフローチャートである。
【0211】
実施例1との違いは、ステップS2505で、受信したジョブが割り込みジョブであって、且つ、ジョブ実行キュー213にジョブがあった場合に、実施例1では、先頭ジョブが割り込みジョブの場合のみ、当該ジョブに対する割り込みを禁止している。
【0212】
これに対し、実施例2では、上記に加え、先頭ジョブがPAP Directジョブの場合も、当該ジョブに対する割り込みを禁止している点である。
【0213】
これにより、PAP Directジョブに対する割り込みは禁止されるので、PAPDirectジョブは、ホストとの対話型の印刷処理を問題なく実行することができる。
【0214】
以上説明したように、割り込み印刷、コレート印刷、留め置き印刷を行う際、受信したジョブがホストと対話型の印刷モードをサポートするジョブの場合に、これらの特定の印刷機能の動作を制限した。
【0215】
したがって、AppleTalkのPAP Directモードで投入されたジョブのように、ホストと対話型の印刷モードをサポートするジョブの場合、上述の動作を制限することにより、対話型の印刷モードを問題なく実行することができる。
【0216】
なお、実施例1、2において、画像形成装置がPostScriptを搭載している場合や、PAP Directジョブの場合、「コレート印刷」を行わないようにしたが、以下のような方法を取ることもできる。
【0217】
画像形成装置1が、コレート印刷の実現方法として、本実施例で説明した受信データ205を保持しておく方法以外に、Display List207やページ画像210を保持しておく方法もサポートしていた場合、後者の方法を選択するようにすれば良い。
【0218】
後者の方法では、コレート印刷でも受信データ205を再度読み出すことはないので、ホストと対話型の印刷モードも問題なく実行することができる。
【符号の説明】
【0219】
1 画像形成装置
2 ホスト
10 プリンタ・コントローラ
20 パネル
30 記憶装置
40 プリンタ・エンジン
101 CPU
102 CPUバス
103 パネルI/F
104 Network I/F
105 画像生成器
106 プリンタI/F
107 記憶装置I/F
108 RAM
109 ROM
201 論理チャネル制御部
202 ジョブ識別部
203 PDLスプーラ
204 受信データ管理テーブル
205 受信データ
206、206a、206b PDLインタプリタ
207 Display List
209 画像形成出力部
208 応答データ
210 ページ画像
211 ジョブ制御部
212 ジョブ管理テーブル
213 ジョブ実行キュー
214 機器管理部

【特許請求の範囲】
【請求項1】
ホストから受信した印刷データを記憶する記憶手段と、
前記記憶手段に記憶された印刷データを読み出して中間コードを生成する生成手段と、前記生成手段により生成された中間コードに基づき画像を形成する画像形成手段と、
受信した印刷データがPostScriptの印刷データの場合、ホストから受信した印刷データの保持動作を利用した特定の印刷機能の実行を制限せず、受信した印刷データがPostScriptの印刷データの場合、ホストから受信した印刷データの保持動作を利用した特定の印刷機能の実行を制限する制限手段とを有することを特徴とする画像形成装置。
【請求項2】
前記ホストから受信した印刷データの保持動作を利用した特定の印刷機能は、実行中のジョブに割り込んで印刷を実行する割り込み印刷を含み、
前記生成手段は、割り込み印刷が終了した後、割り込まれたジョブの印刷データに基づき中間コードを生成することを特徴とする請求項1記載の画像形成装置。
【請求項3】
前記ホストから受信した印刷データの保持動作を利用した特定の印刷機能は、ジョブ単位で指定された部数の印刷を行うコレート印刷を含み、
前記生成手段は、印刷データから中間コードを生成することを指定された部数に応じて複数回行うことを特徴とする請求項1記載の画像形成装置。
【請求項4】
前記ホストから受信した印刷データの保持動作を利用した特定の印刷機能は、ユーザから印刷開始が指示されるまで印刷を留め置く留め置き印刷を含むことを特徴とする請求項1記載の画像形成装置。
【請求項5】
受信した印刷データがPostScriptの印刷データである場合、印刷データを先頭ページから1回読みだすことにより複数部の印刷を実行し、受信した印刷データがPostScriptの印刷データでない場合、印刷データを先頭ページから複数回読みだすことにより複数部の印刷を実行する実行手段を有することを特徴とする請求項1記載の画像形成装置。
【請求項6】
ホストから受信した印刷データを記憶する記憶手段と、前記記憶手段に記憶された印刷データを読み出して中間コードを生成する生成手段と、前記生成手段により生成された中間コードに基づき画像を形成する画像形成手段とを有する画像形成装置における制御方法であって、
受信した印刷データがPostScriptの印刷データでない場合、ホストから受信した印刷データの保持動作を利用した特定の印刷機能の実行を制限せず、受信した印刷データがPostScriptの印刷データの場合、ホストから受信した印刷データの保持動作を利用した特定の印刷機能の実行を制限することを特徴とする画像形成装置における制御方法。
【請求項7】
前記ホストから受信した印刷データの保持動作を利用した特定の印刷機能は、実行中のジョブに割り込んで印刷を実行する割り込み印刷を含み、
前記生成手段は、割り込み印刷が終了した後、割り込まれたジョブの印刷データに基づき中間コードを生成することを特徴とする請求項6記載の画像形成装置における制御方法。
【請求項8】
前記ホストから受信した印刷データの保持動作を利用した特定の印刷機能は、ジョブ単位で指定された部数の印刷を行うコレート印刷を含み、
前記生成手段は、印刷データから中間コードを生成することを指定された部数に応じて複数回行うことを特徴とする請求項6記載の画像形成装置における制御方法。
【請求項9】
前記ホストから受信した印刷データの保持動作を利用した特定の印刷機能は、ユーザから印刷開始が指示されるまで印刷を留め置く留め置き印刷を含むことを特徴とする請求項6記載の画像形成装置における制御方法。
【請求項10】
受信した印刷データがPostScriptの印刷データである場合、印刷データを先頭ページから1回読みだすことにより複数部の印刷を実行し、受信した印刷データがPostScriptの印刷データでない場合、印刷データを先頭ページから複数回読みだすことにより複数部の印刷を実行することを特徴とする請求項6記載の画像形成装置における制御方法。
【請求項11】
ホストから受信した印刷データを記憶する記憶手段と、前記記憶手段に記憶された印刷データを読み出して中間コードを生成する生成手段と、前記生成手段により生成された中間コードに基づき画像を形成する画像形成手段とを有する画像形成装置で実行されるプログラムであって、
受信した印刷データがPostScriptの印刷データでない場合、ホストから受信した印刷データの保持動作を利用した特定の印刷機能の実行を制限せず、受信した印刷データがPostScriptの印刷データの場合、ホストから受信した印刷データの保持動作を利用した特定の印刷機能の実行を制限する工程を画像形成装置に実行させるプログラム。
【請求項12】
前記ホストから受信した印刷データの保持動作を利用した特定の印刷機能は、実行中のジョブに割り込んで印刷を実行する割り込み印刷を含み、
前記生成手段は、割り込み印刷が終了した後、割り込まれたジョブの印刷データに基づき中間コードを生成することを特徴とする請求項11記載のプログラム。
【請求項13】
前記ホストから受信した印刷データの保持動作を利用した特定の印刷機能は、ジョブ単位で指定された部数の印刷を行うコレート印刷を含み、
前記生成手段は、印刷データから中間コードを生成することを指定された部数に応じて複数回行うことを特徴とする請求項11記載のプログラム。
【請求項14】
前記ホストから受信した印刷データの保持動作を利用した特定の印刷機能は、ユーザから印刷開始が指示されるまで印刷を留め置く留め置き印刷を含むことを特徴とする請求項11記載のプログラム。
【請求項15】
受信した印刷データがPostScriptの印刷データである場合、印刷データを先頭ページから1回読みだすことにより複数部の印刷を実行し、受信した印刷データがPostScriptの印刷データでない場合、印刷データを先頭ページから複数回読みだすことにより複数部の印刷を実行する実行工程を有することを特徴とする請求項11記載のプログラム。
【請求項16】
ホストから受信した印刷データを記憶する記憶手段と、
前記記憶手段に記憶された印刷データを読み出して中間コードを生成する生成手段と、前記生成手段により生成された中間コードに基づき画像を形成する画像形成手段と、
受信した印刷データがホストと対話して処理を行う印刷データでない場合、ホストから受信した印刷データの保持動作を利用した特定の印刷機能の実行を制限せず、受信した印刷データがホストと対話して処理を行う印刷データの場合、ホストから受信した印刷データの保持動作を利用した特定の印刷機能の実行を制限する制限手段とを有することを特徴とする画像形成装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate


【公開番号】特開2012−254640(P2012−254640A)
【公開日】平成24年12月27日(2012.12.27)
【国際特許分類】
【出願番号】特願2012−193141(P2012−193141)
【出願日】平成24年9月3日(2012.9.3)
【分割の表示】特願2008−14461(P2008−14461)の分割
【原出願日】平成20年1月25日(2008.1.25)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】