以下、添付図面を参照しながら、本発明にかかる情報処理装置、ドライバプログラム、インストーラプログラム及び記憶媒体の実施形態を詳細に説明する。なお、本実施形態では、情報処理装置としてPC(Personal Computer)を例にとり説明するが、これに限定されるものではない。
まず、本実施形態のPCを含む印刷システムの構成について説明する。
図1は、本実施形態の印刷システム1の一例を示す構成図である。図1に示すように、印刷システム1は、印刷要求元のPC10と、PC10からの印刷要求に従って印刷を行う印刷装置20とを、備える。印刷装置20は、例えば、プリンタや複合機など印刷を行うことができるものであればよい。複合機は、印刷機能に加え、複写機能、スキャナ機能、及びファクシミリ機能の少なくともいずれかの機能を有するものである。なお、印刷システム1は、PC10を複数備えるようにしてもよいし、印刷装置20を複数備えるようにしてもよい。
PC10及び印刷装置20は、ネットワーク5を介して接続されている。ネットワーク5は、例えば、LAN(Local Area Network)などにより実現できる。なお、PC10と印刷装置20とをUSB(Universal Serial Bus)などのシリアルポート(serial port)で直接接続するようにしてもよい。
図2は、本実施形態のPC10の構成の一例を示すブロック図である。図2に示すように、PC10は、通信部110と、操作部120と、表示部130と、記憶部140と、制御部150とを、備える。
通信部110は、ネットワーク5を介して、印刷装置20などの外部装置と通信するものであり、通信インターフェースなどの既存の通信装置により実現できる。
操作部120は、各種操作の入力を行うものであり、キーボード、マウス、タッチパッド、及びタッチパネルなどの既存の入力装置の少なくともいずれかにより実現できる。
表示部130は、各種画面を表示するものであり、液晶ディスプレイやタッチパネル式ディスプレイなどの既存の表示装置により実現できる。
記憶部140は、PC10で実行される各種プログラムやPC10で行われる各種処理に使用される各種情報などを記憶する。記憶部140は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、メモリカード、光ディスク、ROM(Read Only Memory)、及びRAM(Random Access Memory)などの磁気的、光学的、又は電気的に記憶可能な既存の記憶装置の少なくともいずれかにより実現できる。記憶部140は、文字コード識別テーブル記憶部142と、プラットフォーム識別情報記憶部144と、文字列記憶部146とを、含む。なお、文字コード識別テーブル記憶部142、プラットフォーム識別情報記憶部144、及び文字列記憶部146の詳細については後述する。
制御部150は、PC10の全体を制御するものであり、CPU(Central Processing Unit)などの既存の制御装置により実現できる。制御部150は、OS152と、アプリケーション154と、インストーラ156と、プリンタドライバ170とを含む。なお、OS152、アプリケーション154、インストーラ156、プリンタドライバ170は、それぞれ記憶部140に記憶されているOSプログラム、アプリケーションプログラム、インストーラプログラム、プリンタドライバプログラムが制御部150により起動(実行)されることで実現されるものである。また、プリンタドライバ170は、プラグインをインストールすることにより機能を追加(拡張)できる。
OS152は、PC10の各部(詳細には、PC10のハードウェア及びソフトウェア)を制御するものであり、例えば、Windows(登録商標)やUNIX(登録商標)などの基本ソフトウェアにより実現できる。
アプリケーション154は、文書の作成、文書の閲覧、又は数値計算など所定の作業をPC10で行うためのものであり、例えば、基本ソフトウェア上で動作する文書作成ソフトウェア、閲覧ソフトウェア、又は表計算ソフトウェアなどにより実現できる。アプリケーション154は、操作部120から印刷設定画面の表示を指示する操作入力や印刷を指示する操作入力を受け付け、OS152を介してプリンタドライバ170にその旨を通知する。
ここで、文字コード識別テーブル記憶部142について説明する。文字コード識別テーブル記憶部142は、プリンタドライバ170の複数の機能それぞれを識別する機能識別情報と文字コードを識別する文字コード識別情報とを対応付けた文字コード識別テーブルを記憶する。具体的には、文字コード識別テーブルは、印刷装置のプラットフォームを識別するプラットフォーム識別情報毎に、機能識別情報と文字コード識別情報とを対応付けている。
図3は、本実施形態の文字コード識別テーブルの一例を示す図である。図3に示す文字コード識別テーブルは、JSON(Java(登録商標) Script Object Notation)形式で記述されているが、記述方式はこれに限定されるものではない。図3に示す例では、プラットフォーム識別情報がプラットフォーム名(PlatformA、PlatformB)であり、機能識別情報が機能名(usercode、groupcode)であり、文字コード識別情報が文字コード名(shiftjis、utf−8、ISO−2022−JP)となっている。
なお、機能名usercodeで表されるUserCode機能及び機能名groupcodeで表されるGroupCode機能は、プリンタドライバ170が予め有している機能である。UserCode機能は、印刷者(使用ユーザ)を示す文字列を設定する機能であり、GroupCode機能は、印刷者(使用ユーザ)が属するグループを設定する機能である。
そして図3に示すように、PlatformAに、usercodeとshiftjisとが対応付けられているとともに、groupcodeとutf−8とが対応付けられている。これは、PlatformAでは、UserCode機能の文字コードがShiftJISであり、GroupCode機能の文字コードがUTF−8であることを示している。同様に、PlatformBに、usercodeとISO−2022−JPとが対応付けられているとともに、groupcodeとISO−2022−JPとが対応付けられている。これは、PlatformBでは、UserCode機能の文字コードがISO−2022−JPであり、GroupCode機能の文字コードがISO−2022−JPであることを示している。
インストーラ156(インストール部の一例)は、インストール対象のプラグインをプリンタドライバ170(プリンタドライバプログラム)にインストールするものであり、インストール作業を支援するソフトウェアなどにより実現できる。なお本実施形態では、インストーラ156がプリンタドライバ170に1つのプラグインをインストールする場合を例に取り説明するが、インストーラ156は、プリンタドライバ170に複数のプラグインをインストールすることもできる。
ここで、インストール対象のプラグインについて説明する。図4は、本実施形態のインストール対象のプラグインのデータ構造の一例を示す図である。インストール対象のプラグインは、インストーラ156のインストーラプログラムに含まれており、図4に示すように、画面表示モジュール、描画データ生成モジュール及び印刷設定データ生成モジュールを含む描画モジュール、並びにプラグイン文字コード情報を有する。
画面表示モジュールは、インストール対象のプラグインにより追加される機能を用いた印刷の印刷設定を行うための画面表示機能をプリンタドライバ170に実現させるためのモジュールである。描画モジュールは、インストール対象のプラグインにより追加される機能を用いた印刷の印刷設定データや描画データを生成する機能をプリンタドライバ170に実現させるためのモジュールである。
プラグイン文字コード情報は、インストール対象のプラグインにより追加される機能を示す機能識別情報及び文字コードを示す文字コード識別情報を対応付けた情報である。具体的には、プラグイン文字コード情報は、プラットフォーム識別情報毎に機能識別情報と文字コード識別情報とを対応付けた情報である。
図5は、本実施形態のプラグイン文字コード情報の一例を示す図である。図5に示すプラグイン文字コード情報も、JSON形式で記述されているが、記述方式はこれに限定されるものではない。図5に示す例では、プラットフォーム識別情報がプラットフォーム名(PlatformA、PlatformB)を示しており、機能識別情報が機能名(watermarktext)を示しており、文字コード識別情報が文字コード名(utf−8、ISO−2022−JP)を示している。なお、機能名watermarktextで表されるWaterMark(電子透かし)機能は、プラグインのインストールによりプリンタドライバ170に追加される機能である。
そして図5に示すように、PlatformAに、watermarktextとutf−8とが対応付けられており、PlatformBに、watermarktextとISO−2022−JPとが対応付けられている。これは、PlatformAでは、WaterMark機能の文字コードがUTF−8であり、PlatformBでは、WaterMark機能の文字コードがISO−2022−JPであることを示している。
インストーラ156は、インストール対象のプラグインをプリンタドライバ170にインストールする場合、当該プラグインの画面表示モジュール及び描画モジュールを記憶部140のプリンタドライバ170がアクセス可能な領域(読み込める場所)にインストールする。更にインストーラ156は、当該プラグインのプラグイン文字コード情報を文字コード識別テーブル記憶部142に記憶されている文字コード識別テーブルにマージする。具体的には、インストーラ156は、文字コード識別テーブルのプラットフォーム識別情報毎に、当該プラットフォーム識別情報と一致するプラグイン文字コード情報のプラットフォーム識別情報に対応付けられた機能識別情報及び文字コード識別情報をマージする。
図6は、図3に示す文字コード識別テーブルに図5に示すプラグイン文字コード情報をマージした後の文字コード識別テーブルの一例を示す図である。図6に示す例では、PlatformAに、更に、watermarktextとutf−8とが対応付けられており、PlatformBに、更に、watermarktextとISO−2022−JPとが対応付けられている。
プリンタドライバ170は、PC10から印刷装置20を動作させるためのものであり、OS152と印刷装置20との差分を吸収するためのソフトウェアにより実現できる。また、プリンタドライバ170は、インストーラ156を用いてプラグインをインストールすることにより機能を追加できるように構成されている。
図7は、本実施形態のプリンタドライバ170の構成の一例を示すブロック図である。図7に示すように、プリンタドライバ170は、コアドライバ部171とプラグイン部181とを含む。コアドライバ部171は、プラグインのインストールの有無に関わらず、プリンタドライバ170が当初から備えている機能部であり、通信制御部172と、画面表示部173と、変換部174と、描画部175とを、を含む。プラグイン部181は、インストーラ156によるプラグインのインストールによりプリンタドライバ170に追加された機能部であり、画面表示部182と、描画部183とを、含む。なお、画面表示部182、描画部183は、それぞれインストールされたプラグインの画面表示モジュール、描画モジュールにより実現されるものである。
通信制御部172は、通信部110を制御して印刷装置20と双方向通信を行い、印刷装置20のプラットフォーム識別情報を受信し、受信したプラットフォーム識別情報をDEVMODE、レジストリ、又はファイルとしてプラットフォーム識別情報記憶部144に記憶(保存)する。
図8は、本実施形態のプラットフォーム識別情報記憶部144に記憶されているプラットフォーム識別情報の一例を示す図である。図8に示す例では、プラットフォーム識別情報記憶部144に印刷装置20のプラットフォーム名であるPlatformAが記憶されている。
また通信制御部172は、後述の描画部175及び描画部183により生成される印刷データを、通信部110を制御して印刷装置20に送信する。
コアドライバ部171の画面表示部173(取得部、削除部の一例)は、アプリケーション154からOS152を介して印刷設定画面の表示指示を受け付けると、印刷設定画面を表示部130に表示させる。
また、画面表示部173は、印刷設定画面の表示中に、アプリケーション154からOS152を介してコアドライバ部171が有している機能を用いた印刷で印刷される文字列の文字列設定画面の表示指示を受け付けると、文字列設定画面を表示部130に表示させる。そして画面表示部173は、操作部120から文字列設定画面に対する文字列の入力を受け付け、入力された文字列を取得し、取得した文字列を後述の変換部174に変換させる。
また、画面表示部173は、後述の変換部174により変換された文字列のデータ量が予め定められた範囲内に収まるか否かを判定し、予め定められた範囲内に収まらない場合、取得した文字列から所定位置の文字を削除する。具体的には、画面表示部173は、後述の変換部174に変換させた印刷用の文字列を受け取り、当該印刷用の文字列のバイト数が印刷装置20(プラットフォーム)で予め定められた範囲内に収まるか否かを判定する。なお本実施形態では、プラットフォーム毎に予め定められた範囲内を定義したテーブルが記憶部140に記憶されており、画面表示部173は、当該テーブルを参照して判定する。そして画面表示部173は、予め定められた範囲内に収まらない場合、取得した文字列から末尾1文字を削除し、再度、後述の変換部174に印刷用の文字列に変換させる。これは、文字列の長さを、印刷装置20(プラットフォーム)で対応可能な文字列の長さに収めるための処理である。文字列のバイト数は、文字コードや文字の種類によっても異なるため、文字列の長さをチェックする処理は、文字数ではなく、バイト数で行う。また画面表示部173は、後述の変換部174に変換させた印刷用の文字列のデータ量が予め定められた範囲内に収まり、操作部120から保存指示を受け付けると、当該文字列を後述の変換部174に記憶用の文字列に変換させ、DEVMODE、レジストリ、又はファイルとして文字列記憶部146に記憶(保存)する。
図9は、本実施形態の画面表示部173により表示される文字列設定画面の一例を示す図である。図9に示す文字列設定画面では、UserCode機能及びGroupCode機能を用いた印刷で印刷される文字列の入力が可能となっている。図9に示す例では、UserCode機能を用いた印刷で印刷される文字列として“あいうえお”が入力されており、GroupCode機能を用いた印刷で印刷される文字列として“子会社A”が入力されている。そして、操作部120を用いてOKボタン191が押下されると、UserCode機能及びGroupCode機能を用いた印刷で印刷される文字列が保存(設定)され、文字列設定画面が閉じられる。一方、操作部120を用いてCancelボタン192が押下されると、当該文字列の入力がキャンセルされ、文字列設定画面が閉じられる。
また、画面表示部173は、印刷設定画面の表示中に、アプリケーション154からOS152を介してプラグイン部181が有している機能を用いた印刷で印刷される文字列の文字列設定画面の表示指示を受け付けると、プラグイン部181の画面表示部182を呼び出し、文字列設定画面を表示部130に表示させる。
プラグイン部181の画面表示部182(取得部、削除部の一例)は、コアドライバ部171の画面表示部173から呼び出されると、文字列設定画面を表示部130に表示させる。そして画面表示部182は、操作部120から文字列設定画面に対する文字列の入力を受け付け、入力された文字列を取得し、取得した文字列を後述の変換部174に変換させる。
また、画面表示部182は、後述の変換部174により変換された文字列のデータ量が予め定められた範囲内に収まるか否かを判定し、予め定められた範囲内に収まらない場合、取得した文字列から所定位置の文字を削除する。具体的には、画面表示部182は、後述の変換部174に変換させた印刷用の文字列を受け取り、当該印刷用の文字列のバイト数が印刷装置20(プラットフォーム)で予め定められた範囲内に収まるか否かを判定する。なお本実施形態では、プラットフォーム毎に予め定められた範囲内を定義したテーブルが記憶部140に記憶されており、画面表示部182は、当該テーブルを参照して判定する。そして画面表示部182は、予め定められた範囲内に収まらない場合、取得した文字列から末尾1文字を削除し、再度、後述の変換部174に印刷用の文字列に変換させる。また画面表示部182は、後述の変換部174に変換させた印刷用の文字列のデータ量が予め定められた範囲内に収まり、操作部120から保存指示を受け付けると、当該文字列を後述の変換部174に記憶用の文字列に変換させ、DEVMODE、レジストリ、又はファイルとして文字列記憶部146に記憶(保存)する。
図10は、本実施形態の画面表示部182により表示される文字列設定(Plugin Watermark)画面の一例を示す図である。図10に示す文字列設定画面では、WaterMark機能を用いた印刷で印刷される文字列の入力が可能となっている。図10に示す例では、WaterMark機能を用いた印刷で印刷される文字列として“マル秘”が入力されている。そして、操作部120を用いてOKボタン193が押下されると、WaterMark機能を用いた印刷で印刷される文字列が保存(設定)され、文字列設定画面が閉じられる。一方、操作部120を用いてCancelボタン194が押下されると、当該文字列の入力がキャンセルされ、文字列設定画面が閉じられる。
図11は、本実施形態の文字列記憶部146に記憶されている文字列の一例を示す図である。図11に示す例では、文字列記憶部146に、UserCode機能を用いた印刷で印刷される文字列として“あいうえお”、GroupCode機能を用いた印刷で印刷される文字列として“子会社A”、及びWaterMark機能を用いた印刷で印刷される文字列として“マル秘”が記憶されている。なお、図11に示す例では、各文字列はJSON形式で記憶されており、文字コードはUTF−8となっている。これは、JSON形式では、文字コードがUTF−8に規定されているためである。
変換部174は、コアドライバ部171の画面表示部173により取得された文字列の印刷に用いられる機能を示す機能識別情報に対応する文字コード識別情報を文字コード識別テーブル記憶部142に記憶されている文字コード識別テーブルから取得する。具体的には、変換部174は、文字コード識別テーブルから、通信制御部172により受信された(プラットフォーム識別情報記憶部144に記憶されている)プラットフォーム識別情報及び画面表示部173により取得された文字列の機能識別情報に対応する文字コード識別情報を取得する。なお、画面表示部173は、機能毎に当該機能を用いた印刷で印刷される文字列を取得しており、変換部174は、画面表示部173から、文字列とともに当該文字列の印刷に用いられる機能を示す機能識別情報を取得している。
そして変換部174は、取得した文字コード識別情報が示す文字コードで画面表示部173により取得された文字列を変換する。具体的には、変換部174は、取得した文字コード識別情報が示す文字コードを記憶部140から取得し、取得した文字コードで画面表示部173により取得された文字列を印刷用に変換し、画面表示部173に返却する。
また変換部174は、画面表示部173により印刷用に変換された文字列のデータ量が予め定められた範囲内に収まらないと判定されると、画面表示部173により所定位置の文字が削除された文字列を、文字コード識別テーブルから取得した前記文字コード識別情報が示す文字コードで印刷用に再変換し、画面表示部173に返却する。
また変換部174は、画面表示部173により印刷用に変換された文字列のデータ量が予め定められた範囲内に収まると判定されると、当該文字列を表示用の文字コードで表示用に変換し、その後、記憶用の文字コードで記憶用に変換し、画面表示部173に返却する。
なお、詳細な説明は省略するが、変換部174は、プラグイン部181の画面表示部182により取得された文字列についても同様の手法で各種変換を行う。また変換部174は、後述のコアドライバ部171の描画部175及び後述のプラグイン部181の描画部183により取得される記憶用の文字列についても上述した手法で印刷用に変換する。
コアドライバ部171の描画部175及びプラグイン部181の描画部183は、印刷データを生成する。描画部175は、描画データ生成部176と印刷設定データ生成部177とを含み、描画部183は、描画データ生成部184と印刷設定データ生成部185とを含む。
コアドライバ部171の描画データ生成部176は、アプリケーション154からOS152を介して印刷対象の画像データなどを受け付けて描画データを生成し、生成した描画データを印刷装置20が解釈可能な描画コマンド(描画命令)に変換する。なお描画データ生成部176は、プラグイン部181が有している機能に関する描画データの生成については、プラグイン部181の描画データ生成部184を呼び出し、描画データを生成させる。
プラグイン部181の描画データ生成部184は、コアドライバ部171の描画データ生成部176から呼び出されると、プラグイン部181が有している機能に関する描画データを生成し、生成した描画データを印刷装置20が解釈可能な描画コマンド(描画命令)に変換する。
コアドライバ部171の印刷設定データ生成部177(取得部の一例)は、画面表示部173により印刷設定画面及び文字列設定画面上で設定された内容から描画データ生成部176により生成される描画データの印刷方法を設定する。例えば、印刷設定データ生成部177は、文字列記憶部146からコアドライバ部171の機能を用いた印刷で印刷される文字列を取得し、変換部174に印刷用の文字列に変換させる。そして印刷設定データ生成部177は、設定した印刷方法(印刷用に変換された文字列など)を印刷装置20が解釈可能な印刷設定コマンド(印刷設定命令)に変換する。なお印刷設定データ生成部177は、プラグイン部181が有している機能に関する描画データの印刷方法の設定については、プラグイン部181の印刷設定データ生成部185を呼び出し、印刷方法を設定させる。
プラグイン部181の印刷設定データ生成部185(取得部の一例)は、コアドライバ部171の印刷設定データ生成部177から呼び出されると、プラグイン部181が有している機能に関する描画データの印刷方法を設定する。例えば、印刷設定データ生成部185は、文字列記憶部146からプラグイン部181の機能を用いた印刷で印刷される文字列を取得し、変換部174に印刷用の文字列に変換させる。そして印刷設定データ生成部185は、設定した印刷方法(印刷用に変換された文字列など)を印刷装置20が解釈可能な印刷設定コマンド(印刷設定命令)に変換する。
図12は、本実施形態の描画部175及び描画部183により生成される印刷データの一例を示す図である。図12に示す印刷データは、コアドライバ部171の印刷設定データ生成部177により生成された印刷設定コマンド、プラグイン部181の印刷設定データ生成部185により生成された印刷設定コマンド、コアドライバ部171の描画データ生成部176により生成された描画コマンド、及びプラグイン部181の描画データ生成部184により生成された描画コマンドを含む。
図12に示す例では、印刷設定データ生成部177により生成された印刷設定コマンドが、UserCode機能の印刷設定コマンドであるShiftJISの文字列“あいうえお”、及びGroupCode機能の印刷設定コマンドであるUTF−8の文字列“子会社A”となっている。また、印刷設定データ生成部185により生成された印刷設定コマンドが、WaterMark機能の印刷設定コマンドであるUTF−8の文字列“マル秘”となっている。
図13は、本実施形態の印刷装置20の構成の一例を示すブロック図である。図13に示すように、印刷装置20は、通信部210と、記憶部220と、プラットフォーム230と、印刷部240とを備える。
通信部210は、ネットワーク5を介して、PC10などの外部機器との間で通信するものであり、PC10同様、既存の通信装置により実現できる。
記憶部220は、印刷装置20で実行される各種プログラムや印刷装置20で行われる各種処理に使用される各種情報などを記憶するものあり、PC10同様、既存の記憶装置により実現できる。記憶部220は、印刷装置20のプラットフォーム識別情報を記憶するプラットフォーム識別情報記憶部222を含む。プラットフォーム識別情報記憶部222は、例えば、プラットフォーム230のプラットフォーム名であるPlatformAを記憶する。
プラットフォーム230は、印刷装置20の全体を制御するものであり、CPU(Central Processing Unit)などにより実現できる。プラットフォーム230は、印刷装置20の動作を制御する。例えば、プラットフォーム230は、通信部210を制御してPC10と双方向通信を行い、プラットフォーム識別情報記憶部222に記憶されている印刷装置20のプラットフォーム識別情報をPC10に送信する。またプラットフォーム230は、プラグインの追加を管理する。追加可能なプラグインはプラットフォームの種別に応じて異なる。プラットフォーム230は、プラグインをインストールすることにより機能を追加(拡張)できるように構成されており、プラグイン部232を含む。なお、プラグイン部232は、インストールされたプラグインにより実現されるものである。そしてプラットフォーム230は、通信部210を制御してPC10から印刷データを受信し、プラグイン部232とともに印刷データを解釈し、印刷部240に印刷を行わせる。
印刷部240は、プラットフォーム230の指示に従って記録紙等の記録媒体に画像を印刷する。
次に、本実施形態のPCを含む印刷システムの動作について説明する。
図14は、本実施形態のPC10で行われるインストール処理の一例を示すフローチャートである。
まず、インストーラ156は、インストール対象のプラグインの画面表示モジュール及び描画モジュールを記憶部140のプリンタドライバ170がアクセス可能な領域(読み込める場所)にインストールする(ステップS100)。
続いて、インストーラ156は、文字コード識別テーブルのプラットフォーム識別情報毎に、当該プラットフォーム識別情報と一致するインストール対象のプラグインのプラグイン文字コード情報のプラットフォーム識別情報に対応付けられた機能識別情報及び文字コード識別情報をマージする(ステップS102)。
図15は、本実施形態のPC10で行われる文字列設定処理の一例を示すフローチャートである。
まず、通信制御部172は、プラットフォーム名取得処理を行い、印刷装置20から印刷装置20のプラットフォーム名を取得する(ステップS200)。なお、プラットフォーム名取得処理の詳細については後述する。
続いて、アプリケーション154からプリンタドライバ170が有している機能を用いた印刷で印刷される文字列の文字列設定画面の表示が指示されると(ステップS202でYes)、文字列設定画面が表示部130に表示される(ステップS204)。なお、コアドライバ部171が有している機能を用いた印刷で印刷される文字列の文字列設定画面の表示制御は画面表示部173が行い、プラグイン部181が有している機能を用いた印刷で印刷される文字列の文字列設定画面の表示制御は画面表示部182が行う。一方、文字列設定画面の表示が指示されない場合(ステップS202でNo)、文字列設定処理は終了となる。
続いて、操作部120からの文字列設定画面に対する表示用文字列の入力が受け付けられる(ステップS206)。なお、画面表示部173が文字列設定画面を表示している場合、画面表示部173が表示用文字列の入力を受け付け、画面表示部182が文字列設定画面を表示している場合、画面表示部182が表示用文字列の入力を受け付ける。
続いて、変換部174は、画面表示部173又は画面表示部182から渡された表示用文字列を印刷用文字列に変換する印刷用文字列変換処理を行う(ステップS208)。なお、印刷用文字列変換処理の詳細については後述する。
続いて、印刷用文字列変換処理による変換後の印刷用文字列のバイト数が予め定められた範囲内に収まるか否かが判定される(ステップS210)。そして、変換後の印刷用文字列のバイト数が予め定められた範囲内に収まらない場合(ステップS210でNo)、ステップS206で受け付けられた表示用文字列から末尾1文字が削除され(ステップS212)、ステップS208に戻る。なお、画面表示部173が表示用文字列を変換部174に渡した場合、画面表示部173がステップS210、S212の処理を行い、画面表示部182が表示用文字列を変換部174に渡した場合、画面表示部182がステップS210、S212の処理を行う。
一方、変換後の印刷用文字列のバイト数が予め定められた範囲内に収まると(ステップS210でYes)、変換部174は、画面表示部173又は画面表示部182から渡された当該印刷用文字列を表示用文字列に変換する表示用文字列変換処理を行う(ステップS214)。なお、表示用文字列変換処理の詳細については後述する。
続いて、操作部120からの文字列設定画面上のOKボタンの押下など表示用文字列の保存(設定)指示が受け付けられる(ステップS216)。なお、画面表示部173が文字列設定画面を表示している場合、画面表示部173が保存指示を受け付け、画面表示部182が文字列設定画面を表示している場合、画面表示部182が保存指示を受け付ける。
続いて、変換部174は、画面表示部173又は画面表示部182から渡された表示用文字列を記憶用文字列に変換する記憶用文字列変換処理を行う(ステップS218)。なお、記憶用文字列変換処理の詳細については後述する。
続いて、記憶用文字列変換処理による変換後の記憶用文字列が文字列記憶部146に記憶(保存)され(ステップS220)、文字列設定画面の表示が終了され(ステップS222)、ステップS202へ戻る。なお、画面表示部173が表示用文字列を変換部174に渡した場合、画面表示部173がステップS220、S222の処理を行い、画面表示部182が表示用文字列を変換部174に渡した場合、画面表示部182がステップS220、S222の処理を行う。
図16は、本実施形態の印刷システム1で行われるプラットフォーム名取得処理の一例を示すシーケンス図である。
まず、プリンタドライバ170の通信制御部172は、印刷装置20へプラットフォーム名取得コマンドを送信する(ステップS300)。
続いて、印刷装置20のプラットフォーム230は、プラットフォーム名取得コマンドを受信すると、プラットフォーム識別情報記憶部222からプラットフォーム230のプラットフォーム名を取得し(ステップS302)、PC10へ送信する(ステップS304)。
続いて、プリンタドライバ170の通信制御部172は、プラットフォーム名を受信すると、受信したプラットフォーム名をプラットフォーム識別情報記憶部144に記憶(保存)する(ステップS306)。
図17は、本実施形態のPC10で行われる印刷用文字列変換処理の一例を示すフローチャートである。
まず、変換部174は、変換対象の文字列及び当該文字列の印刷に用いられる機能の機能名を取得する(ステップS400)。
続いて、変換部174は、プラットフォーム識別情報記憶部144からプラットフォーム名を取得する(ステップS402)。
続いて、変換部174は、取得したプラットフォーム名及び取得した機能名に対応する印刷用の文字コード名を、文字コード識別テーブル記憶部142に記憶されている文字コード識別テーブルから取得する(ステップS404)。
続いて、変換部174は、取得した変換対象の文字列を、取得した印刷用の文字コード名の文字コードに変換する(ステップS406)。
続いて、変換部174は、変換した印刷用の文字列を返却する(ステップS408)。
図18は、本実施形態のPC10で行われる表示用文字列変換処理の一例を示すフローチャートである。
まず、変換部174は、変換対象の文字列を取得する(ステップS500)。
続いて、変換部174は、取得した変換対象の文字列を、表示用の文字コードに変換する(ステップS502)。
続いて、変換部174は、変換した表示用の文字列を返却する(ステップS504)。
図19は、本実施形態のPC10で行われる記憶用文字列変換処理の一例を示すフローチャートである。
まず、変換部174は、変換対象の文字列を取得する(ステップS600)。
続いて、変換部174は、取得した変換対象の文字列を、記憶用の文字コードに変換する(ステップS602)。
続いて、変換部174は、変換した記憶用の文字列を返却する(ステップS604)。
図20は、本実施形態のPC10で行われる印刷処理の一例を示すフローチャートである。
まず、通信制御部172は、プラットフォーム名取得処理を行い、印刷装置20から印刷装置20のプラットフォーム名を取得する(ステップS700)。なお、プラットフォーム名取得処理の詳細は、図16に示すとおりである。
続いて、コアドライバ部171の印刷設定データ生成部177は、文字列記憶部146からコアドライバ部171の機能を用いた印刷で印刷される記憶用の文字列を取得する(ステップS702)。
続いて、変換部174は、印刷設定データ生成部177から渡された記憶用文字列を印刷用文字列に変換する印刷用文字列変換処理を行う(ステップS704)。なお、印刷用文字列変換処理の詳細は、図17に示すとおりである。
続いて、印刷設定データ生成部177は、印刷用文字列変換処理による変換後の印刷用文字列を印刷設定コマンドに変換する(ステップS706)。
続いて、通信制御部172は、変換された印刷設定コマンドを印刷装置20に送信する(ステップS708)。
なお、詳細な説明は省略するが、ステップS702、S706の処理は、プラグイン部181の印刷設定データ生成部185も行い、ステップS708において、通信制御部172は、印刷設定データ生成部185により変換された印刷設定コマンドを印刷装置20に送信する。
続いて、コアドライバ部171の描画データ生成部176は、コアドライバ部171が有している機能に関する描画データを生成する(ステップS710)。
続いて、描画データ生成部176は、生成した描画データを描画コマンドに変換する(ステップS712)。
続いて、通信制御部172は、変換された描画コマンドを印刷装置20に送信する(ステップS714)。
なお、詳細な説明は省略するが、ステップS710、S712の処理は、プラグイン部181の描画データ生成部184も行い、ステップS714において、通信制御部172は、描画データ生成部184により変換された描画コマンドを印刷装置20に送信する。
そして、印刷装置20において、印刷設定データ生成部177により変換された印刷設定コマンド、印刷設定データ生成部185により変換された印刷設定コマンド、描画データ生成部176により変換された描画コマンド、及び描画データ生成部184により変換された描画コマンドに従った印刷が実行される。
以上のように本実施形態によれば、プリンタドライバの機能毎に印刷装置側で対応する文字コードを対応付けた文字コード識別テーブルを有しているので、印刷装置側で対応する文字コードがプリンタドライバの機能に応じて異なる場合であっても、文字化けなどを生じさせずに印刷対象の文字列を印刷装置に正しく印刷させることができる。
また本実施形態によれば、プラグインのインストール時に当該プラグインの機能に印刷装置側で対応する文字コードを文字コード識別テーブルにマージするので、印刷装置側で対応する文字コードがプリンタドライバの標準機能と追加機能とで異なる場合であっても、印刷対象の文字列を印刷装置に正しく印刷させることができる。
また本実施形態によれば、文字コード識別テーブルは、印刷装置のプラットフォーム毎にプリンタドライバの機能と印刷装置側で対応する文字コードとを対応付けているので、機種共通ドライバのように複数のプラットフォームに対応可能なプリンタドライバにも適用できる。
また本実施形態によれば、文字コード識別テーブルは、プラットフォーム毎にプリンタドライバの機能と印刷装置側で対応する文字コードとを対応付けており、プラグインのインストール時に当該プラグインの機能に印刷装置(プラットフォーム)側で対応する文字コードを文字コード識別テーブルにマージするため、機種共通ドライバであってもプリンタドライバは、印刷装置からプラットフォーム識別情報を取得するだけでよい。このため、プリンタドライバと印刷装置との通信量を抑えることができ、印刷待ち時間などのユーザ負担を抑えることができる。
また本実施形態によれば、印刷対象の文字列を印刷装置側で対応する文字コードに変換した後にバイト数チェックを行っているため、印刷装置側で対応可能なバイト数で印刷させることができる。
(変形例)
なお上記実施形態では、文字列設定時と印刷時の両方でプラットフォーム名取得処理(双方向通信)を行っているが、文字列設定時のみ行うようにしてもよいし、これらと異なるタイミングで行うようにしてもよい。
例えば、プラットフォーム名取得処理(双方向通信)の実行頻度を高くすれば、印刷装置側で対応する文字コードの変化(例えば、接続印刷装置の変更、印刷装置のプラグインの追加や削除など)に迅速に対応できる。プラットフォーム名取得処理(双方向通信)の通信量は少ないため、このようにしても、ユーザに与える負担は少ない。
(ハードウェア構成)
次に、本実施形態のPC10のハードウェア構成の一例について説明する。
本実施形態のPC10は、CPUなどの制御装置と、ROMやRAMなどの記憶装置と、HDDやリムーバブルドライブ装置などの外部記憶装置と、ディスプレイなどの表示装置と、キーボードやマウスなどの入力装置を備えており、通常のコンピュータを利用したハードウェア構成となっている。
本実施形態のPC10で実行されるドライバプログラムやインストーラプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、CD−R、メモリカード、DVD(Digital Versatile Disk)、フレキシブルディスク(FD)等のコンピュータで読み取り可能な記憶媒体に記憶されて提供される。
また、本実施形態のPC10で実行されるドライバプログラムやインストーラプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するようにしてもよい。また、本実施形態のPC10で実行されるドライバプログラムやインストーラプログラムを、インターネット等のネットワーク経由で提供または配布するようにしてもよい。また、本実施形態のPC10で実行されるドライバプログラムやインストーラプログラムを、ROM等に予め組み込んで提供するようにしてもよい。
本実施形態のPC10で実行されるドライバプログラムは、上述したプリンタドライバ170の各部をコンピュータ上で実現させるためのモジュール構成となっている。実際のハードウェアとしては、CPUがHDDからドライバプログラムをRAM上に読み出して実行することにより、上記各部がコンピュータ上で実現されるようになっている。
同様に、本実施形態のPC10で実行されるインストーラプログラムは、上述したインストーラ156をコンピュータ上で実現させるためのモジュール構成となっている。実際のハードウェアとしては、CPUがHDDからインストーラプログラムをRAM上に読み出して実行することにより、インストーラ156がコンピュータ上で実現されるようになっている。