以下、図面を参照して、本発明の実施の形態について詳細に説明する。
[第1の実施の形態]
本実施の形態では、例えば図17(A)に示されるように1台のプリンタに複数のホストコンピュータ(ホスト)が接続され、各ホストからダウンロードされた各ホスト独自のPDL形式の印刷データを共通のPDL形式の印刷データに変換して印刷する印刷システムを例に挙げて説明する。ただし、本実施の形態において、プリンタの構成は、図17(B)とは異なる。以下、本実施の形態のプリンタの構成について詳細に説明する。
図1は、本実施の形態の印刷システムを構成するプリンタ10の構成を機能的に示した構成図である。
プリンタ10は、複数のエミュレーションコンポーネント30A〜30C、コントローラ40、スプール42、描画コンポーネント44、文字資源記憶部46、及びプリントエンジン48を備えている。
文字資源記憶部46には、文字コードと文字パターンが1対1で対応付けられた標準的な文字パターン(プリンタ内蔵の文字パターン)が予め記憶されている。また、プリンタに内蔵されておらず、文字コードと文字パターンが1対多で対応付けられた文字(以下、ダイナミックロード対象文字)の文字パターンがダウンロードされたときには、該ダウンロードされた文字パターンも文字資源記憶部46に(プリンタ内蔵の文字パターンの記憶領域とは異なる記憶領域に)記憶される。
複数のエミュレーションコンポーネント30A〜30Cは、複数の印刷データ形式に対応して設けられている。なお、エミュレーションコンポーネント30A〜30Cは同一の構成であるので、以下、エミュレーションコンポーネント30A〜30Cを区別しないで説明するときは単にエミュレーションコンポーネント30と呼称して説明する。
エミュレーションコンポーネント30は、主変換部32、アドレス変換部34、及び文字コード−アドレス管理部36から構成されている。この主変換部32、アドレス変換部34、及び文字コード−アドレス管理部36は、ここでは、エミュレーションコンポーネント30用のモジュールに予め組み込まれたファームウェアにより実現される。
主変換部32は、ホストから入力されたホスト独自のPDL(ページ記述言語)形式の印刷データをプリンタ10内部で使用する共通のPDL形式のデータ(以下、共通PDL形式のデータ、あるいは共通PDLデータと呼称する)に変換する。
また、ホストからロードパターンコマンドを入力したときには、ダイナミックロード対象文字の文字パターンをホストからダウンロードし(ダイナミックロード機能)、該ダウンロードした文字パターンを文字資源記憶部46に格納するための「ダウンロードコマンド」を共通PDL形式で生成してコントローラ40に出力する。
図2は、このダウンロードコマンドの構成を示した図である。同図に示されるように、先頭2バイトには制御コード、次の4バイトには文字資源を格納する文字資源記憶部46の記憶領域のアドレス(以下、ダウンロードアドレス)、7バイトめ以降には文字パターンのデータ列が格納される。なお、ダウンロードアドレスは、アドレス変換部34から取得する。
また、印刷データの共通PDLデータへの変換過程で、印刷データ内に文字コードにより指定されたダイナミックロード対象の文字を描画(印刷)するデータが含まれていた場合には、「ダイナミックロード対象文字の描画コマンド」を生成する。
図3は、ダイナミックロード対象文字の描画コマンドの構成を示した図である。同図に示されるように、先頭2バイトには制御コード、次の2バイトにはダイナミックロード対象文字を描画するX軸方向の位置を指定するX座標値、次の2バイトにはダイナミックロード対象文字を描画するY軸方向の位置を指定するY座標値、最後の4バイトにはダウンロードアドレスが格納される。このダウンロードアドレスは、文字コード−アドレス管理部36から取得する。
アドレス変換部34は、主変換部32から要求があったときに(すなわち、主変換部32がダウンロードコマンドを生成するときに)、ダイナミックロード対象文字の文字パターンを格納するための適切なダウンロードアドレスを取得して主変換部32に渡す。具体的には、主変換部32からダイナミックロード対象文字を指定した文字コードを受け取ると、該文字コードと共にアドレス取得要求を文字コード−アドレス管理部36に送出する。文字コード−アドレス管理部36は、該アドレス取得要求に従って適切なダウンロードアドレスを検索し、アドレス変換部34に返す。主変換部32は、アドレス変換部34からダウンロードアドレスを取得することにより、上記ダウンロードコマンドを生成することができる。
文字コード−アドレス管理部36は、図4に示されるような文字コード−アドレス記憶テーブル80を備えている。この文字コード−アドレス記憶テーブル80には、文字コードと最新のダウンロードアドレスが対応付けて記憶される。本実施の形態では、文字コード−アドレス記憶テーブル80において、文字コードが重複するレコードは存在しない。
更に文字コード−アドレス管理部36は、図5に示されるようなアドレス使用割当てテーブル82を備えている。このアドレス使用割当てテーブルには、各レコードは、ダウンロードアドレス、該ダイナミックロードアドレスに格納した文字パターンを指定した文字コード、該文字パターンを用いた全ての印刷が既に完了したか否かを示す既印刷フラグにより構成されている。アドレス使用割当てテーブル82は、所謂、ダウンロードされた文字パターンの文字資源記憶部46への格納履歴を示すものであるため、同一文字コードを有するレコードが複数存在する場合もある。
なお、既印刷フラグが「0」のときは対応する文字パターンを用いた印刷が未完了であることを示し、「1」のときには、該印刷が全て完了したことを示す。既印刷フラグの初期値は「0」である。また、本実施の形態のプリンタ10は、障害が発生したときには、障害が発生した印刷頁から2頁前まで遡って再印刷(リカバリ印刷)するため、該リカバリ印刷を考慮して、該文字パターンを用いた頁の印刷が完了してから該頁に続く2頁分の印刷が完了するまでは該既印刷フラグを「1」にはせずに、「0」の状態を維持する。
文字コード−アドレス管理部36は、アドレス変換部34からアドレス取得要求があったときに、アドレス使用割当てテーブル82を検索し、検索結果からダウンロードアドレスを決定し、該決定したダウンロードアドレスをアドレス変換部34に渡す。また、このとき、文字コード−アドレス管理部36は、文字コード−アドレス記憶テーブル80及びアドレス使用割当てテーブル82を更新する。
また、文字コード−アドレス管理部36は、主変換部32が、ダイナミックロード対象文字の描画コマンドを生成するときに、文字コード−アドレス記憶テーブル80から、該当の文字コードに対する最新のダウンロードアドレスを検索して、主変換部32に渡す。これにより、主変換部32は上記描画コマンドを生成することができる。
コントローラ40は、CPU、ROM、RAMにより構成されている。コントローラ40は、ROMに記憶されたプログラムを実行することにより所定の処理を行う。コントローラ40は、エミュレーションコンポーネント30に接続され、エミュレーションコンポーネント30から共通PDLデータが入力されたときには、該共通PDLデータをスプール42に格納する。更に、スプール42に格納した共通PDLデータを順次読み出して描画コンポーネント44に出力する。また、障害が発生したときには、障害が発生した頁から2頁前まで遡ってリカバリ印刷されるように、スプール42から共通PDLデータを読み出して描画コンポーネント44に出力する。
描画コンポーネント44は、コントローラ40から出力された共通PDLデータを順次解釈し、ページ毎にビットマップ形式の画像データに変換してプリントエンジン48に出力する。このとき、共通PDLデータに、ダイナミックロード対象文字の描画コマンドが含まれていた場合には、該描画コマンドに基づいて文字資源記憶部46から該当のダウンロードアドレスに格納された文字パターンを読み出して画像データに展開して、プリントエンジン48に出力する。なお、共通PDLデータには、標準的な文字コードにより指定された文字パターン(プリンタ内蔵の文字パターン)の描画コマンドも存在するが、この描画コマンドの場合には、文字資源記憶部46から該文字コードに対応付けられた文字パターンを読み出して出力する。また、入力された共通PDLデータが、共通PDL形式のダウンロードコマンドであった場合には、文字資源記憶部46の該ダウンロードコマンドで指定されたダウンロードアドレスに文字パターンを格納する。
プリントエンジン48は、描画コンポーネント44から出力された画像データに基づいて連続紙などの用紙に印刷する。
次に、ホストから何らかのデータが入力されたときにエミュレーションコンポーネント30で実行される処理の流れについて、図6のフローチャートを参照しながら説明する。
ここでは、ホストからプリンタ10に出力されるデータが、ロードパターンコマンド(文字パターン)、印刷データ、プリンタ10(プリントエンジン48)を制御するためのプリンタ制御コードのいずれかであり、これ以外の他のデータをプリンタ10で受信した場合には、該データに対しては何の処理も行わないこととする。
ステップ100では、主変換部32が、入力されたデータがロードパターンコマンドであるか否かを判定する。例えば、通常、データのヘッダ部分にはデータ種別を識別することができる識別符号が含まれているため、該識別符号から判定することができる。ここで、ロードパターンコマンドであると判定した場合には、ステップ102で、該コマンドに従ってホストから文字パターンを取得(ダウンロード)する。
ステップ104で、アドレス変換部34を介してアドレス使用割当てテーブル82を参照して、該文字パターンを格納するダウンロードアドレスを取得する。具体的には、アドレス変換部34が、アドレス取得要求を文字コード−アドレス管理部36に送出する。文字コード−アドレス管理部36は、アドレス使用割当てテーブル82から、文字パターンが記憶されていない未記憶の記憶領域を示すアドレス、または、既に何らかの文字パターンが記憶されてはいるが既印刷フラグが「1」となっているレコードのダウンロードアドレスを、要求のあった文字パターンを格納するためのダウンロードアドレスとして決定する。このように決定されたダウロードアドレスが主変換部32に送出される。
ステップ106では、主変換部32は、該ダウンロードアドレスを用いて共通PDL形式のダウンロードコマンドを生成し、コントローラ40に出力する。
コントローラ40は該ダウンロードコマンドを受け取ると、一端スプール42に格納する。更にコントローラ40はスプール42からダウンロードコマンドを読み出して、描画コンポーネント44に出力する。描画コンポーネント44は、該ダウンロードコマンドに含まれる文字データを、該ダウンロードコマンドで指定されたダウンロードアドレスに格納する。
ステップ108では、文字コード−アドレス管理部36が、文字コード−アドレス記憶テーブル80を更新する。具体的には、文字コード−アドレス記憶テーブル80を検索し、上記ダウンロードアドレスを決定した文字パターンの文字コードと同一の文字コードのレコードが記憶されているかを検索する。該同一の文字コードのレコードが記憶されていれば、該レコードのダウンロードアドレスを、上記決定したダウンロードアドレスに変更する。また、該同一の文字コードのレコードが記憶されていなければ、該文字コードと上記決定したダウンロードアドレスとが対応付けられた新たなレコードを生成して、文字コード−アドレス記憶テーブル80に追加する。これにより、文字コード−アドレス記憶テーブル80には常に最新のダウンロードアドレスが記憶される。
ステップ110では、文字コード−アドレス管理部36が、アドレス使用割当てテーブル82を更新する。具体的には、上記アドレス取得要求に応じて決定したダウンロードアドレスと、該ダウンロードアドレスを決定した文字パターンの文字コードと、既印刷フラグ「0」とを対応付けた新たなレコードを生成して、アドレス使用割当てテーブル82に追加する。すなわち、文字コード−アドレス管理部36は、新たに文字パターンがダウンロードされる毎に新たなレコードを生成し、アドレス使用割当てテーブル82に追加する。
一方、ステップ100で、主変換部32が、ホストから入力されたデータはロードパターンコマンドではないと判定した場合には、ステップ120に移行し、入力されたデータが印刷データであるか否かを判定する。ここで、入力されたデータが印刷データであると判定したときには、ステップ122で、該入力された印刷データを共通PDLデータに変換する変換処理を開始する。変換処理では、入力した印刷データを先頭から順に解釈して共通PDLデータに変換していくが、印刷データのデータがダイナミックロード対象文字を描画(印刷)するデータであるか否かを常に判定しながら変換処理を続行する(ステップ124)。ホストからの印刷データでは、印刷する文字パターンが文字コードにより指定されている。ここでは、印刷データに含まれる文字コードがプリンタ内蔵の文字パターンに対応付けられた文字コードでなければ、該文字コードにより指定された文字(文字パターン)は、ダイナミックロード対象文字であると判別する。
ステップ124で、処理対象のデータが、ダイナミックロード対象文字を描画(印刷)するデータであると判定した場合には、ステップ132に移行し、そのまま変換処理を続行する。
ステップ124で、処理対象のデータが、ダイナミックロード対象文字を描画(印刷)するデータであると判定した場合には、ステップ126で、文字コード−アドレス管理部36を介して、文字コード−アドレス記憶テーブル80から該文字コードに対応付けられた最新のダウンロードアドレスを取得する。
ステップ128では、取得したダウンロードアドレスを用いて、ダイナミックロード対象文字の描画コマンドを共通PDL形式で生成する。すなわち、印刷する文字パターンが文字コードにより指定されたデータを、該文字パターンが格納されたダウンロードアドレスにより該文字パターンを指定した共通PDL形式のデータに変換する。
ステップ130では、入力された印刷データ全ての変換が完了したか否かを判定する。ここで、否定判断したときには、ステップ132に移行し、変換処理を続行する。入力された印刷データ全ての変換が完了するまで、ステップ124からステップ132の処理を継続する。
ステップ130で、入力された印刷データ全ての変換が完了したと判定した場合には、ステップ134で、変換した共通PDLデータをコントローラ40に出力する。該共通PDLデータはコントローラ40によりスプール42に格納される。
一方、ステップ120で、入力されたデータが印刷データではないと判定した場合には、ステップ140に移行し、入力されたデータがプリンタ制御コードであるか否かを判定する。ここで、プリンタ制御コードであると判定した場合には、該プリンタ制御コードに対して何の処理も施さずにスルーでコントローラ40に出力する。コントローラ40は、該プリンタ制御コードを入力したときには、プリントエンジン48に対して所定の制御信号を送出し、プリントエンジン48の動作設定を行う。また、ステップ140で、入力されたデータがプリンタ制御コードではないと判定した場合には、何の処理も行わずに本処理ルーチンを終了する。
なお、本実施の形態において、ホストからロードパターンコマンド、印刷データ、及びプリンタ制御コードのいずれかが入力された後は、次に何らかのデータが入力されるまではホストとの間はオフライン状態となる。上述したように、プリンタ10では、入力した印刷データを変換した共通PDLデータがスプールに格納され、必要な文字パターンも文字資源記憶部46に格納されるため、必要なデータが入力された後はオフライン状態でも印刷処理が可能となる。
次に、コントローラ40で実行される処理の流れについて、図7及び図8のフローチャートを参照しながら説明する。
図7は、共通PDLデータを読み出して描画コンポーネント44に出力する通常の処理の流れを示したフローチャートである。
ステップ200では、スプール42から共通PDLデータを読み出す。ステップ202では、該読み出した共通PDLデータを描画コンポーネント44に出力する。ステップ204では、全ての共通PDLデータの出力が完了したか否かを判定し、ここで全ての共通PDLデータの出力が完了していないと判定した場合には、ステップ200に戻って、処理を継続する。
なお、描画コンポーネント44に出力された共通PDLデータは、描画コンポーネント44で順次解釈され、ページ毎にビットマップ形式の画像データに変換されてプリントエンジン48に出力される。このとき、共通PDLデータがダイナミックロード対象文字の描画コマンドであった場合には、該描画コマンドに基づいて文字資源記憶部46から該当のダウンロードアドレスに格納された文字パターンを読み出して展開し、プリントエンジン48に出力する。また、共通PDLデータがダウンロードコマンドであった場合には、文字資源記憶部46の該ダウンロードコマンドで指定されたダウンロードアドレスに文字パターンを格納する。プリントエンジン48は、描画コンポーネント44から出力された画像データに基づいて連続紙などの用紙に印刷する。
一方、ステップ204で、全ての共通PDLデータの出力が完了したと判定した場合には、ステップ206で、エミュレーションコンポーネント30に対して印刷完了通知を出力する。
なお、印刷完了通知を受け取ったエミュレーションコンポーネント30では、アドレス使用割当てテーブル82を更新する。具体的には、該当の既印刷フラグに「1」をセットする。これにより、印刷済みの文字パターンを格納したダウンロードアドレスが開放され、次に文字パターンをダウンロードしたときに、該開放されたアドレスも文字パターンの格納先として選択できる。なお、前述したように、本実施の形態のプリンタ10では、障害が発生したときには、障害が発生した印刷頁から2頁前まで遡って再印刷(リカバリ印刷)するため、エミュレーションコンポーネント30は、該文字パターンを用いた頁の印刷が完了してから該頁に続く2頁分の印刷が完了するまでは該当の既印刷フラグは「1」にせず、「0」の状態を維持する。
図8は、紙ジャムなどの障害が発生したときにコントローラ40で行われる処理の流れを示したフローチャートである。
ステップ300では、所定頁(ここでは2頁)前に遡ってスプール42から共通PDLデータを読み出す。ステップ302では、該読み出した共通PDLデータを描画コンポーネント44に出力する。ステップ304では、全ての共通PDLデータの出力が完了したか否かを判定し、ここで全ての共通PDLデータの出力が完了していないと判定した場合には、ステップ306に移行し、続けて次の共通PDLデータを読み出し、ステップ302に戻る。また、ステップ304で、全ての共通PDLデータの出力が完了したと判定した場合には、ステップ308で、エミュレーションコンポーネント30に対して印刷完了通知を出力する。
描画コンポーネント44は、コントローラ40から出力された共通PDLデータを順次解釈して画像データに展開してプリントエンジン48に出力する。プリントエンジン48では、障害が発生した頁より所定頁遡ってリカバリ印刷することができる。
なお、共通PDLデータにダイナミックロード対象文字を描画するコマンドが含まれていた場合であっても、該コマンドでは、文字パターンは、文字コードではなく、ダウンロードアドレスにより指定されているため、描画コマンドは該当する文字パターンを正しく読み出して出力することができる。また、前述したように、該ダウンロードアドレスに格納された文字パターンは、該文字パターンを用いた印刷が完全に終了するまで(印刷完了通知が発行されるまで)文字資源記憶部46に保持されるため、オフライン状態でリカバリ印刷しても、文字化けせず正常に印刷することができる。
次に、本プリンタ10の動作について、より具体的な例を挙げて説明する。
図9は、コントローラ40及び描画コンポーネント44(プリントエンジン48)との間のデータの授受の状態、及び印刷状態の一例を示したシーケンス図である。ここでは、ダウンロード対象の文字コード0x80A1が印刷データ毎に異なる文字パターン(ここでは「あ」「い」「う」「え」「お」)に対応付けられ、各文字パターンが各印刷データの直前にダウンロードされ格納される場合を例に挙げて説明する。
図10は、図9のシーケンス図の(1)〜(5)の各々の時点における文字資源記憶部46の文字パターンの格納状態を示したテーブルである。
図9に示されるように、コントローラ40から描画コンポーネント44に対して、文字パターン(共通PDL形式のダウンロードロードコマンド)と該文字パターンを用いて印刷する共通PDLデータとが交互に送出される。
描画コンポーネント44は、ダウンロードロードコマンドを受け取った場合には、該ダウンロードコマンドに含まれるダウンロードアドレスに文字パターンを記憶する。図9及び図10に示される例では、文字コード0x80A1が対応づけられた文字パターン「あ」「い」「う」「え」「お」が、文字資源記憶部46の互いに異なる記憶領域(0x3000、0x3200、0x3400、0x3600、0x3800)に格納される。
また、コントローラ40から描画コンポーネント44に送出される各共通PDLデータは、文字パターンをダウンロードアドレスにより指定した共通PDLデータである。描画コンポーネント44は、共通PDLデータを受け取ると、該ダウンロードアドレスから該当の文字パターンを読み出してプリントエンジン48に出力する。これにより、各頁の文字パターンを正しく印刷することができる。
図9の(5)の後、5頁めの印刷中に紙ジャムなどの障害が発生した場合には、所定頁前(ここでは2頁前)まで遡ってリカバリ印刷する。このとき、図10の(5)に示されるように、文字資源記憶部46には、5頁めの印刷データで使用する文字パターン「お」だけでなく、遡って印刷する3頁めの印刷データで使用する文字パターン「う」、及び4頁めの印刷データで使用する文字パターン「え」も各々異なるダウンロードアドレスに保持されている。また、各共通PDLデータにおいて、各文字パターン「う」「え」「お」は、文字コード0x80A1ではなくダウンロードアドレス(0x3400、0x3600、0x3800)により指定されているため、各ページに対応した文字パターンを確実に読み出して出力することができ、文字化けせずに正常にリカバリ印刷することができる。
以上説明したように、文字パターンをダウンロードしたときに、該文字パターンをダウンロード毎に異なる記憶領域に格納すると共に、文字コードにより文字パターンが指定された印刷データを、該文字パターンが格納された記憶領域のアドレス(ダウンロードアドレス)により該文字パターンを指定した共通PDLデータに変換するようにしたため、オフライン印刷においても、オンライン印刷と同等に文字資源を管理でき、通常の印刷だけでなく障害発生時に行われるリカバリ印刷でも正しく印刷することができる。
なお、本実施の形態において、エミュレーションコンポーネント30、コントローラ40、スプール42、描画コンポーネント44、文字資源記憶部46、及びプリントエンジン48を1台のプリンタ10に装備した場合を例に挙げて説明したが、これに限定されず、例えば、プリンタとは別の外部装置にエミュレーションコンポーネント30を装備し、外部装置から共通PDLデータや文字パターンを描画コンポーネント44、文字資源記憶部46、プリントエンジン48等を備えたプリンタに送出するように構成することもできる。
また、本実施の形態では、エミュレーションコンポーネント30A〜30Cの各々を、主変換部32、アドレス変換部34、及び文字コード−アドレス管理部36により構成した例について説明したが、これに限定されず、例えば、エミュレーションコンポーネント30A〜30Cの各々を主変換部32のみで構成し、エミュレーションコンポーネント30外部に、アドレス変換部34及び文字コード−アドレス管理部36により構成されたモジュールを1つ設けるようにしてもよい。このように、ダウンロードアドレスの決定・管理を行う機能をエミュレーションコンポーネント30の外部に設けることにより、装置構成の冗長性を排除し、ダウンロードアドレスを一元的に決定・管理できる。
[第2の実施の形態]
図11は、第2の実施の形態の印刷システムの構成を示した図である。同図に示されるように、この印刷システムは、ホスト50、フロントエンドコントローラ(FEC)52、及び2台のプリンタ54A、54Bにより構成されている。この印刷システムでは、用紙の切り替えや、一方のプリンタの消耗品交換などを目的に、印刷するプリンタが切り替えられる。なお、図示は省略するが、FEC52には複数台のホスト50を接続することができ、複数台のホスト50からの形式の異なる印刷データを処理することができる。
以下、プリンタ54A、54Bは同一の構成であるので、プリンタ54A、54Bを区別しないで説明するときは、単にプリンタ54と呼称して説明する。
図12は、FEC52及びプリンタ54の構成を機能的に示した構成図である。図12において、図1と同一もしくは同等の部分には同じ記号を付し、その説明を省略する。
FEC52は、複数のエミュレーションコンポーネント60A〜60C、及び分配部70を備えている。
複数のエミュレーションコンポーネント60A〜60Cは、複数のホストから出力される印刷データの形式に対応して設けられている。なお、エミュレーションコンポーネント60A〜60Cは同一の構成であるので、以下、エミュレーションコンポーネント60A〜60Cを区別しないで説明するときは単にエミュレーションコンポーネント60と呼称して説明する。
エミュレーションコンポーネント60は、主変換部32、アドレス変換部34、文字コード−アドレス管理部36、資源イメージ保存部62、及び資源イメージダウンロード部64から構成されている。本実施の形態における主変換部32、アドレス変換部34、及び文字コード−アドレス管理部36は、第1の実施の形態と同一の機能を有するため説明を省略する。
ただし、本実施の形態では、文字コード−アドレス記憶テーブル80及びアドレス使用割当てテーブル82が、各プリンタ54A、54B毎に備えられている。文字コード−アドレス管理部36は、主変換部32やアドレス変換部34から要求があったときには、指定されたプリンタ54に対応する文字コード−アドレス記憶テーブル80及びアドレス使用割当てテーブル82を検索して応答する。
資源イメージ保存部62には、文字コード毎に該文字コードに対応付けられた最新の文字パターンが保存される。資源イメージ保存部62は、図13に示されるような資源イメージ保存テーブル84を備え、この資源イメージ保存テーブル84に、エミュレーションコンポーネント60がホストからダウンロードしたダイナミックロード対象文字の文字コード、文字パターン、及び該文字パターンを格納するダウンロードアドレスが対応付けて記憶される。すなわち、この資源イメージ保存テーブル84には、文字コード−アドレス記憶テーブル80に記憶される情報に加えて、ダウンロードした文字パターンそのものが対応付けられて記憶される。
資源イメージダウンロード部64は、資源イメージ保存部62に保存した文字パターンを、分配部70を介し対象のプリンタ54に対して印刷させるプリンタの切替えに一括して送出する。送出する際には、資源イメージ保存部62に保存されている文字パターンを切替え先のプリンタ54の文字資源記憶部46に格納するための「ダウンロードコマンド」(第1の実施の形態と同様)を共通PDL形式で生成し、分配部70を介して送出する。本実施の形態では、プリンタ切替え時以外のタイミングで送出されるダウンロードコマンドは、第1の実施の形態と同様に主変換部32で生成され、プリンタの切替え時に送出されるダウンロードコマンドは資源イメージダウンロード部64で生成される。
分配部70は、エミュレーションコンポーネント60で変換された共通PDLデータを、指定されたプリンタ54に送出する。なお、本実施の形態では、どのタイミングで印刷させるプリンタを切替えるかについては、予めFEC52に設定されている(印刷先の設定)。分配部70は、該設定に従って、共通PDLデータの送出先(プリンタ)を切替える。
プリンタ54は、コントローラ40、スプール42、描画コンポーネント44、文字資源記憶部46、及びプリントエンジン48を備えている。コントローラ40、スプール42、描画コンポーネント44、文字資源記憶部46、及びプリントエンジン48は、第1の実施の形態と同一の機能を有するため説明を省略する。ただし、本実施の形態において、コントローラ40は、FEC52の分配部70から共通PDLデータを取得する。
以下、本実施の形態におけるFEC52及びプリンタ54の動作について説明する。
まず、ホスト50から何らかのデータが入力されたときにFEC52のエミュレーションコンポーネント60で実行される処理の流れについて上記第1の実施の形態で用いた図6のフローチャートを参照しながら説明する。
ステップ100〜102で、主変換部32は、ホスト50からロードパターンコマンドが発行されたときに、該ロードコマンドに従って、文字パターンをダウンロードする。このとき、ダウンロードした文字パターンを、資源イメージ保存部62(資源イメージ保存テーブル84)に格納する。ここで、資源イメージ保存テーブル84にダウンロードした文字パターンの文字コードと同一文字コードのレコードが格納されていた場合には、該ダウンロードした文字パターンを該レコードに上書きする。資源イメージ保存テーブル84に同一文字コードのレコードが格納されていなければ、新規にレコードを生成して該テーブルに追加する。
ステップ104では、主変換部32は、予め定められた印刷先の設定に従い、アドレス変換部34を介して、該文字パターンを使用して印刷するプリンタ54に対応したアドレス使用割当てテーブル82を参照して、該文字パターンを格納するダウンロードアドレスを取得する。また、ここで取得したダウンロードアドレスを、資源イメージ保存テーブル84の上記文字パターンを格納したレコードに格納する。
ステップ106では、主変換部32は、文字パターンを上記取得したダウンロードアドレスに格納するためのダウンロードコマンドを共通PDL形式で生成し、分配部70に出力する。分配部70は、該ダウンロードコマンドを受け取ると、上記印刷先の設定に従って、該ダウンロードコマンドの送出先を選定し、該選定した送出先のプリンタ54に送出する。プリンタ54のコントローラ40は該ダウンロードコマンドを受け取ると、上記第1の実施の形態と同様に、描画コンポーネント44を介して、該ダウンロードコマンドに含まれる文字データを、該ダウンロードコマンドで指定されたダウンロードアドレスに格納する。
ステップ108では、文字コード−アドレス管理部36が、上記文字パターンを送出したプリンタ54に対応した文字コード−アドレス記憶テーブル80を更新する。
ステップ110では、文字コード−アドレス管理部36が、上記文字パターンを送出したプリンタ54に対応したアドレス使用割当てテーブル82を更新する。
一方、ステップ100で、主変換部32が、ホスト50から入力されたデータはロードパターンコマンドではないと判定し、ステップ120で、入力されたデータが印刷データであると判定した場合には、ステップ122〜132の処理を繰り返して、該入力された印刷データを共通PDLデータに変換する。なお、この変換処理過程で、ダイナミックロード対象文字を描画(印刷)するデータを変換する際には、印刷先のプリンタに対応した文字コード−アドレス記憶テーブル80から最新のダウンロードアドレスを取得し、該ダウンロードアドレスを用いてダイナミックロード対象文字の描画コマンドを生成する。
印刷データが全て共通PDLデータに変換されたときに、ステップ134で、変換した共通PDLデータを分配部70に出力する。分配部70は、該共通PDLデータを、印刷先の設定に従って、該当のプリンタ54に送出する。該共通PDLデータを受信したプリンタ54のコントローラ40は、該共通PDLデータをスプール42に格納し、適宜スプールから共通PDLデータを読み出して描画コンポーネント44に送出し、プリントエンジン48に印刷させる。なお、このプリンタ54には、該共通PDLデータで使用されるダイナミックロード対象文字の文字パターンが既に文字資源記憶部46に格納されているため、該文字パターンを使用して正しく印刷することができる。
一方、ステップ120で、入力されたデータが印刷データではないと判定し、ステップ140で、入力されたデータがプリンタ制御コードであると判定した場合には、該プリンタ制御コードに対して何の処理も施さずにスルーで分配部70に送出する。分配部70は、該当のプリンタ54に対して該プリンタ制御コードを送出する。
ステップ140で、入力されたデータがプリンタ制御コードではないと判定した場合には、何の処理も行わずに本処理ルーチンを終了する。
次に、印刷させるプリンタを切替える時の切替え処理について説明する。
プリンタ54を切替えるタイミングが到来したときには、エミュレーションコンポーネントの資源イメージダウンロード部64は、資源イメージ保存機構62に格納されている最新の文字パターンと、切替え先のプリンタ54に送出するためのダウンロードコマンドを生成して、分配部70に送出する。分配部70は、印刷先の設定に従って、該ダウンロードコマンドをプリンタ54Aまたは54Bのいずれか一方に送出する。
該ダウンロードコマンドを受信したプリンタ54では、該ダウンロードコマンドに従って、指定されたダウンロードアドレスに文字パターンを格納する。なお、プリンタ54のコントローラ40での処理は、第1の実施の形態において図7及び図8を用いて説明した処理と同様であるため、説明を省略する。
次に、本実施の形態における印刷システムの動作について、図14〜図16を参照しながら、より具体的な例を挙げて説明する。
図14及び図15は、ホスト50、FEC52、及び各プリンタ54A、54Bの各装置間のデータの授受の状態、及び印刷状態の一例を示したシーケンス図であって、プリンタ54Aで、文字パターン「あ」「い」を使用して印刷し、次にプリンタ54Bに切替えて文字パターン「い」「う」「え」を使用して印刷し、更にプリンタ54Aに再度切替えて文字パターン「え」「お」を使用して印刷する処理の流れが示されている。なお、該文字パターン「あ」「い」「う」「え」「お」には、同一の文字コード0x80A1が対応付けられている。
図16(A)は、図14及び図15のシーケンス図に示される(1)〜(7)の各々の時点での、FEC52の資源イメージ保存部62における文字コード0x80A1に対する文字パターンの格納状態を示した図である。また、図16(B)は、プリンタ54Aの文字資源記憶部46の文字パターンの記憶状態を示した図である。図16(C)は、図14及び図15に示される(1)〜(7)の各々の時点でのプリンタ54Bの文字資源記憶部46の文字パターンの記憶状態を示した図である。なお、図16(B)及び図16(C)において、下線で示された文字パターンは、FEC52の資源イメージ保存部62に格納された最新の文字パターンと同期している文字パターンを示している。
FEC52は、ホスト50から文字パターンを受信したときには、ダウンロードコマンドを生成し、印刷先の設定に従ってプリンタ54Aまたはプリンタ54Bのいずれか一方に送信する。プリンタ54Aまたはプリンタ54Bは、該ダウンロードコマンドを受け取ると、該ダウンロードコマンドに含まれるダウンロードアドレスに文字パターンを記憶する。
図14の(1)及び(2)の時点では、プリンタ54Aにダウンロードコマンドが送出される。プリンタ54Aは、該ダウンロードコマンドに従って、図16(B)の(1)及び(2)に示されるように、各文字パターン「あ」「い」を異なるダウンロードアドレス(0x3000、0x3200)に格納する。
また、それぞれの文字パターンのダウンロードの後には、印刷データがホスト50から送信され、FEC52のエミュレーションコンポーネント60は、各印刷データを、印刷する文字パターンをダウンロードアドレスで指定した共通PDLデータに変換して印刷先として設定されているプリンタ54に送出する。図14では、文字パターン「あ」をダウンロードアドレス0x3000で指定した共通PDLデータ1_1、文字パターン「い」をダウンロードアドレス0x3200で指定した共通PDLデータ1_2がプリンタ54Aに送出される。
プリンタ54Aの描画コンポーネント44は、共通PDLデータ1_1をコントローラ40を介して入力すると、ダウンロードアドレス0x3000で指定された文字パターン「あ」を読み出して、プリントエンジン48に出力する。プリントエンジン48は、描画コンポーネント44からの画像データに基づいて、印刷頁1_1を正しく印刷することができる。また、共通PDLデータ1_2を入力すると、上記同様に、ダウンロードアドレス0x3200で指定された文字パターン「い」を読み出して、プリントエンジン48に出力する。プリントエンジン48は、描画コンポーネント44からの画像データに基づいて、印刷頁1_2を正しく印刷することができる。
印刷先をプリンタ54Bに切替える時には、資源イメージ保存部62に記憶された最新の文字パターンを転送してプリンタ54Bの文字資源記憶部46に格納するためのダウンロードコマンドをプリンタ54Bに送出する。
ここでは、資源イメージ保存部62に、プリンタ54Aで既に印刷に使用された文字パターン「い」が最新の文字パターンとして記憶されており、この文字パターンはプリンタ54Bでも使用される。従って、ダウンロードコマンドが、資源イメージダウンロード部64により、資源イメージ保存部62に記憶された最新の文字パターン「い」及び文字コード−アドレス管理部36で決定されたプリンタ54Bのダウンロードアドレスを用いて生成される。
なお、FEC52のエミュレーションコンポーネント60は、プリンタ54Bのダウンロードアドレスについて、ホスト50から文字パターン「い」をダウンロードしたときに、プリンタ54Aのダウンロードアドレスだけでなく、プリンタ54Bのダウンロードアドレスも同時に決定し、双方のアドレスを文字コード−アドレス記憶テーブル80やアドレス使用割当てテーブル82に格納しておくようにしてもよいし、プリンタ切替え時に、プリンタ54Bのダウンロードアドレスを決定するようにしてもよい。
プリンタ54Bは、ダウンロードコマンドを受け取ると、該ダウンロードコマンドに従って文字パターン「い」を文字資源記憶部46の指定されたダウンロードアドレスに格納する(資源マージ)。図14の(3)の時点では、図16(C)に示されるように、ダウンロードアドレス0x3000に文字パターン「い」が格納される。
その後、FEC52は、上記と同様の処理を行い、ホスト50からの印刷データを、ダウンロードアドレスにより文字パターンを指定した共通PDLデータに変換し、プリンタ54Bに送出して印刷頁2_3を印刷させる。
文字パターン「う」、文字パターン「え」についても、上記と同様にダウンロードコマンドを生成してプリンタ54Bの文字資源記憶部46に格納し、ホスト50からの印刷データを、ダウンロードアドレスにより文字パターンを指定した共通PDLデータに変換し、プリンタ54Bに送出して印刷頁2_4、2_5を印刷させる。
図14に示されるように、印刷頁2_5の印刷途中で紙ジャムが発生した場合には、プリンタ54Bのプリントエンジン48で復旧作業が行われる。復旧した後は、前述の図8に示されるように所定頁前から遡ってリカバリ印刷が行われる。ここでは2頁前から遡ってリカバリ印刷されるため、印刷頁2_3から再印刷される。図16(C)の(5)に示されるように、各頁の印刷に必要な文字パターン「い」「う」「え」が消去されずに異なるアドレスに記憶された状態にあり、上記変換した共通PDLデータにおいては、各文字パターンがダウンロードアドレスにより指定されているため、図14に示されるように、該ダウンロードアドレスから各頁毎に適切に文字パターンを読み出して正常にリカバリ印刷することができる。
プリンタ54Bでの印刷が完了すると、図15に示されるように、FEC52は、前述のように、印刷先の設定に従って、プリンタの切替え処理(資源マージ)を行う。続いて、必要な文字パターン、共通PDLデータを送出して、文字パターン「え」を含む印刷頁1_6、文字パターン「お」を含む印刷頁1_7をプリンタ54Aに印刷を行わせる。
このように、最新の文字パターンを記憶する資源イメージ保存部62を設けると共に、印刷先のプリンタ54を切替える場合には、該資源イメージ保存部62に記憶された文字パターンを一括して送出するようにしたため、プリンタ54毎に正しい文字パターンを用いて確実に印刷できる。また、障害が発生した場合であっても、各プリンタ54に設けられた文字資源記憶部46に必要な文字パターンが格納されているため、オフライン印刷においても、文字化けせずに正常に印刷することができる。さらにまた、各プリンタ54の文字資源記憶部46には、各プリンタ54の印刷で使用されない不要な文字パターンは格納されないため、最小限の記憶領域で正常に印刷を行うことができ、全ての文字パターンを送出して格納する場合に比べて無駄を省くことができる。
また、本実施の形態のように印刷システムを構成すると、プリンタ54を交互使用して印刷できるため、一方のプリンタ54は、共通PDLデータを送出するまで電源を投入しなくて良いなど、省エネルギー効果もある。
なお、本実施の形態では、複数のエミュレーションコンポーネント60の各々を、主変換部32、アドレス変換部34、文字コード−アドレス管理部36、資源イメージ保存部62、及び資源イメージダウンロード部64により構成した例について説明したが、これに限定されず、例えば、複数のエミュレーションコンポーネント60の各々を、主変換部32のみで構成し、複数のエミュレーションコンポーネント60外部に、各エミュレーションコンポーネント60に共通の、アドレス変換部34、文字コード−アドレス管理部36、資源イメージ保存部62、及び資源イメージダウンロード部64を設けるようにしてもよい。このように、ダウンロードアドレスの決定・管理を行う機能、最新の文字パターンを記憶しておく記憶部、及び該文字パターンを各プリンタに送出して格納する機能をエミュレーションコンポーネント60の外部に設けることにより、装置構成の冗長性を排除し、ダウンロードアドレスを一元的に管理できる。
また、上述した第1及び第2の実施の形態では、文字資源として文字パターンを例に挙げて説明したが、フォントや字形データとしてもよい。
また、上述した第1及び第2の実施の形態では、ダイナミックロード対象文字を、1文字単位でダウンロードして格納する例について説明したが、複数文字単位でダウンロードして格納するようにしてもよい。例えば、ダウンロードするタイミングに応じて、ダウンロードして格納する文字数の単位を異ならせて処理することもできる。すなわち、上記第1及び第2の実施の形態では、1文字単位でダウンロードし、ダウンロード毎に使用する文字パターンが切替えられる場合を例に挙げて説明したが、切替えタイミングが異なる文字パターンが複数存在する場合でも、上記と同様に処理できる。
具体的には、例えば、一連の印刷データに先だって最初に複数文字単位で送出される文字パターン(プレロード文字)と、印刷頁の途中で1文字単位で送出される文字パターン(ダウンロード文字)とを混在させて処理する場合が挙げられる。
このようにダウンロードするタイミングが異なる文字パターンを取り扱う場合には、上記第2の実施の形態において、資源イメージ保存部62を切替えタイミングに応じて複数設け、タイミングに応じて使用する資源イメージ保存部62を切替えるようにすることが好ましい。これによりプリンタ切替え時に適切に処理できる。