(57)【特許請求の範囲】
【請求項１】
コンピュータを、
画像データの描画領域中に、バーコードに関する情報が記載されたバーコード制御領域が存在するか否かを判定する判定手段と、
前記バーコード制御領域が存在する場合に、前記バーコード制御領域から、前記バーコードに関する情報を取得する取得手段と、
前記バーコードに関する情報に基づいて、プリンタにバーコードの印刷を行わせるためのコマンドを生成する生成手段と、
として機能させ、
前記バーコードに関する情報の最初には、前記バーコード制御領域の大きさが記載されていることを特徴とする印刷制御プログラム。
【請求項２】
前記バーコード制御領域は、前記画像データの最初に設けられていることを特徴とする請求項１に記載の印刷制御プログラム。
【請求項３】
前記バーコードに関する情報は、バーコードの種類、バーコードの印刷位置、バーコードのサイズ、バーコードのバイト数、及びバーコードデータを含むことを特徴とする請求項１または２に記載の印刷制御プログラム。
【請求項４】
前記取得手段は、前記バーコード制御領域の大きさが所定の値より小さい場合に、前記バーコードに関する情報の取得を行わないことを特徴とする請求項１に記載の印刷制御プログラム。
【請求項５】
前記バーコード制御領域の大きさは、バーコードの種類に基づいて変更可能であることを特徴とする請求項１〜４のいずれか１項に記載の印刷制御プログラム。
【請求項６】
コンピュータを、
前記画像データから、前記バーコード制御領域を除いた印刷領域中の画像データを、プリンタにて印刷可能なデータ形式に変換する変換手段と、
前記変換手段により変換された画像データを、前記コマンド生成手段により生成されたバーコード印刷コマンドと共にプリンタに送信する送信手段と、
としてさらに機能させるための請求項１〜５のいずれか１項に記載の印刷制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バーコード印刷のための印刷制御プログラムに関する。
【背景技術】
【０００２】
コンピュータにプリンタが接続された印刷システムが知られている。コンピュータには、アプリケーション及びプリンタドライバ（プリンタ制御プログラム）がインストールされている。アプリケーションは、プリンタドライバの設定情報に基づき、メモリ上にデバイスコンテキスト（描画領域）を作成した後、当該領域に文字、図形、その他のイメージ等を描画する。プリンタドライバは、アプリケーションにより描画された画像データを、プリンタにて印刷可能な形式に変換（ラスタライズ）して、プリンタに送信する。
【０００３】
ここで、バーコードの印刷を行う場合には、第１の方法として、印刷アプリケーション上でバーコードのイメージデータを作成する方法が知られている。また、第２の方法として、バーコードを印刷するための専用のフォント（バーコードフォント）を予め用意し、アプリケーションが当該バーコードフォントを画像データ中に埋め込む方法が知られている。第２の方法では、プリンタドライバまたはプリンタがバーコードフォントを解析し、当該解析結果に基づいてバーコードを生成する（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】２００２−２１１０５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記第１の方法では、アプリケーションにて描画されたバーコードのイメージデータが、プリンタドライバにおいて変換（ラスタライズ）されるため、印刷結果がアプリケーション上の描画と一致しない場合がある。また、上記第２の方法では、プリンタドライバにおける変換途中に文字用の画像補正が行われた場合に、同様に印刷結果が意図したものとならない場合がある。すなわち、従来の方法では、データの変換過程においてバーコードの品質劣化が生じ、高品質なバーコードを印刷することが難しかった。
【０００６】
本発明は、上記課題に鑑みなされたものであり、高品質なバーコードを印刷することのできる印刷制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、コンピュータを、画像データの描画領域中に、バーコードに関する情報が記載されたバーコード制御領域が存在するか否かを判定する判定手段と、前記バーコード制御領域が存在する場合に、前記バーコード制御領域から、前記バーコードに関する情報を取得する取得手段と、前記バーコードに関する情報に基づいて、プリンタにバーコードの印刷を行わせるためのコマンドを生成する生成手段と、として機能させ、前記バーコードに関する情報の最初には、前記バーコード制御領域の大きさが記載されていることを特徴とする。
【０００８】
上記構成において、前記バーコード制御領域は、前記画像データの最初に設けられている構成とすることができる。
【０００９】
上記構成において、前記バーコードに関する情報は、バーコードの種類、バーコードの印刷位置、バーコードのサイズ、バーコードのバイト数、及びバーコードデータを含む構成とすることができる。
【００１１】
上記構成において、前記取得手段は、前記バーコード制御領域の大きさが所定の値より小さい場合に、前記バーコードに関する情報の取得を行わない構成とすることができる。
【００１２】
上記構成において、前記バーコード制御領域の大きさは、バーコードの種類に基づいて変更可能である構成とすることができる。
【００１３】
上記構成において、コンピュータを、前記画像データから、前記バーコード制御領域を除いた印刷領域中の画像データを、プリンタにて印刷可能なデータ形式に変換する変換手段と、前記変換手段により変換された画像データを、前記コマンド生成手段により生成されたバーコード印刷コマンドと共にプリンタに送信する送信手段と、としてさらに機能させる構成とすることができる。
【発明の効果】
【００１４】
本発明によれば、高品質なバーコードを印刷することのできる印刷制御プログラムを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、印刷システムのハードウェア構成を示す図である。
【図２】図２は、印刷システムの機能ブロック図である。
【図３】図３は、デバイスコンテキストの構成を示す図である。
【図４】図４は、デバイスコンテキストのパラメータ値を示す図である。
【図５】図５は、バーコード制御領域が保持するデータを示す図である。
【図６】図６は、アプリケーションにより描画された画像のイメージを示す図である。
【図７】図７は、アプリケーションの動作を示すフローチャートである。
【図８】図８は、プリンタドライバの動作を示すフローチャートである。
【図９】図９は、プリンタの動作を示すフローチャートである。
【図１０】図１０は、プリンタにより生成される画像のイメージを示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施例について図面を参照し説明する。
【実施例１】
【００１７】
図１は、印刷システムのハードウェア構成を示す図である。実施例１に係る印刷システムは、互いに接続されたコンピュータ１０及びプリンタ２０を含む。コンピュータ１０は、互いにデータバスにより接続されたＣＰＵ（Central Processing Unit）１２、メモリ１４、及び入出力インターフェース１６を含む。メモリ１４には、例えばＲＡＭ（Random Access Memory）及びＲＯＭ（Read Only Memory）を用いることができる。
【００１８】
プリンタ２０は、互いにデータバスにより接続されたＣＰＵ２２、メモリ２４、入出力インターフェース２６、及び印刷部２８を含む。メモリ２４には、例えばＲＡＭ及びＲＯＭを用いることができる。印刷部２８には、周知の印刷機構を用いることができ、印刷方式としては、例えばインクジェット方式、レーザ方式等を採用することができる。コンピュータ１０及びプリンタ２０は、それぞれの入出力インターフェース（１６、２６）を介して互いに接続されている。
【００１９】
図２は、印刷システムの機能ブロック図である。コンピュータ１０及びプリンタ２０は互いに接続され、コンピュータ１０には、印刷用のアプリケーション３０と、印刷制御プログラムの一例であるプリンタドライバ４０がインストールされている。
【００２０】
アプリケーション３０は、デバイスコンテキスト生成手段３２、印刷データ描画手段３４、バーコード制御領域描画手段３６、及び印刷実行手段３８を含む。これらの手段は、例えば図１のＣＰＵ１２に所定のプログラムを実行させることにより実現することができ、当該所定のプログラムは、例えばメモリ１４に記憶させることができる。デバイスコンテキスト生成手段３２は、プリンタドライバ４０の設定に基づいて、画像データの描画領域であるデバイスコンテキストを生成する。
【００２１】
図３は、デバイスコンテキストの構成を示す図である。図示するように、デバイスコンテキスト６０の大きさは、用紙サイズのＷ×Ｌ［pixel］と同じＷＤ×ＬＤ［pixel］である。デバイスコンテキスト６０は、印刷画像が描画される印刷領域６２（ＷＰ×ＬＰ［pixel］）と、バーコードに関する情報が描画されるバーコード制御領域６４（ＷＤ×ＬＢＣ［pixel］）とに分かれている。本実施例では、バーコード制御領域６４がデバイスコンテキストの先頭部分に位置する構成となっているが、これ以外の部分にバーコード制御領域６４を設けてもよい。
【００２２】
図４は、デバイスコンテキストに関するパラメータの例を示す表である。本実施例では、用紙横サイズ（Ｗ）を６４０［pixel］、用紙縦サイズ（Ｌ）を２０００＋ＬＢＣ［pixel］としている。また、バーコード制御領域６４の長さ（ＬＢＣ）をＬＢＣ＝１〜ｋ［pixel］（ｋは２以上の整数）としている。すなわち、バーコード制御領域６４の長さは、バーコードの種類等に基づいて１〜ｋの範囲で変更可能となっている。また、本実施例では、デバイスコンテキスト６０（描画可能領域）の大きさは６４０×（２０００＋ＬＢＣ）［pixel］、印刷領域６２の大きさは６４０×２０００［pixel］となっている。
【００２３】
再び図２に戻り、印刷データ描画手段３４は、生成されたデバイスコンテキスト６０上に印刷対象となるデータ（例えば、文字、図形、写真等）を描画する。バーコード制御領域描画手段３６は、バーコード制御領域６４上にバーコードに関する情報を描画する。ここで、バーコードに関する情報には、バーコードの種類、バーコードの印刷位置、バーコードのサイズ、バーコードのバイト数、及びバーコードデータが含まれる。また、上記バーコードに関する情報の最初には、後述するように、バーコード制御領域６４の大きさが記載されている。
【００２４】
図５は、バーコード制御領域６４に描画されたバーコードに関する情報の例を示す表である。ここで、「１pixel目」とは、バーコード制御領域６４における最初の１行目のpixelに記載されたビットデータを示すものとする（２pixel目以降も同様）。図示するように、本実施例では、１pixel目にバーコード制御領域６４の大きさを示す値（ＬＢＣ）が記載されている。以下同様に、２pixel目にはバーコードの種類が、３pixel目にはバーコードの印刷位置及びバーコードのサイズが、４pixel目にはバーコードのデータ数及びバーコードデータが、それぞれ記載されている。本実施例では、バーコードデータをBinary値、その他のデータをWORD値で与える構成としたが、データの形式はこれに限られるものではない。
【００２５】
図６は、アプリケーション３０により描画された画像データのイメージを示す図である。デバイスコンテキスト６０は、縦横方向に等間隔のセルへと分割されている。バーコード制御領域６４の長さが記載される１行目は、左から６番目のセルが黒く塗りつぶされており、その他のセルは白紙となっている。これは、１行目のデータの並びが、左から順に「００００  ０１００  ００００  ００００」となっていることを示す。この値を１６進数のWORD値（リトルエンディアン）に変換すると、０ｘ０００４となり、情報をプリンタドライバ４０へ通知することが可能となる。２行目以降においても、１行目と同様にビットを描画することにより、プリンタドライバ４０に通知する様々なパラメータを任意に設定することができる。
【００２６】
再び図２に戻り、印刷実行手段３８は、印刷実行時にプリンタドライバ４０を呼び出す。また、印刷実行手段３８は、印刷データ描画手段３４及びバーコード制御領域描画手段３６により生成された画像データ（例えば、ビットイメージデータ）を、プリンタドライバ４０へと送信する。
【００２７】
図７は、アプリケーション３０の動作を示すフローチャートである。最初に、デバイスコンテキスト生成手段３２がデバイスコンテキスト６０の生成を行う（ステップＳ１０）。次に、印刷データ描画手段３４が、印刷領域６２に印刷データの描画を行い（ステップＳ１２）、バーコード制御領域描画手段３６が、バーコード制御領域６４にバーコードに関する情報の描画を行う（ステップＳ１４）。これらのステップ（Ｓ１２及びＳ１４）は順番が逆であってもよい。最後に、印刷実行手段３８が、プリンタドライバ４０を呼び出し、デバイスコンテキスト６０上に描画された画像データをプリンタドライバ４０へと送信する。
【００２８】
再び図２に戻り、プリンタドライバ４０は、判定手段４１、取得手段４２、生成手段４４、送信手段４６、及び変換手段４８を含む。これらの手段は、例えば図１のＣＰＵ１２に所定のプログラムを実行させることにより実現することができ、当該所定のプログラムは、例えばメモリ１４に記憶させることができる。判定手段４１は、アプリケーション３０から受信した画像データ（デバイスコンテキスト６０）の中に、バーコード制御領域６４が存在するか否かを判定する。取得手段４２は、バーコード制御領域６４が存在する場合に、当該領域からバーコードに関する情報を取得する。生成手段４４は、取得されたバーコードに関する情報に基づいて、プリンタ２０にバーコードの印刷を行わせるためのバーコード印刷コマンドを生成する。
【００２９】
変換手段４８は、画像データのうち印刷領域６２中の画像データを、プリンタ２０にて印刷可能なデータ形式に変換する。送信手段４６は、生成手段４４により生成されたバーコード印刷コマンドと、変換手段４８により変換された印刷領域６２の画像データとを、プリンタ２０へと送信する。
【００３０】
図８は、プリンタドライバ４０の動作を示すフローチャートである。最初に、プリンタドライバ４０がアプリケーション３０から画像データを受信する（ステップＳ２０）。受信された画像データは、判定手段４１及び変換手段４８へと入力される。続いて、判定手段４１は、バーコード制御領域長ＬＢＣを取得し（ステップＳ２２）、その値に基づいてバーコード制御領域が存在するか否かの判定を行う（ステップＳ２４）。上記判定は、バーコード制御領域長ＬＢＣを所定の閾値（本実施例では４とする）と比較することにより行われる。判定手段４１は、ＬＢＣが４以上であれば、バーコード制御領域６４が存在すると判定し、ＬＢＣが４未満であれば、バーコード制御領域６４が存在しないと判定する。
【００３１】
ステップＳ２４においてバーコード制御領域長ＬＢＣが４以上である場合、取得手段４２は、バーコード制御領域６４の中から、バーコードに関する残りの情報（位置、サイズ、データ等）を取得する（ステップＳ２６）。ここで取得された情報は、コンピュータ１０内の記憶装置（例えば、ＲＡＭ：Random Access Memory）に一時的に記憶される。ステップＳ２４においてバーコード制御領域長ＬＢＣが４未満の場合、取得手段４２はバーコードに関する情報の取得を行わない。
【００３２】
続いて、変換手段４８は、デバイスコンテキスト６０のうちバーコード制御領域６４を削除する（ステップＳ２８）。続いて、変換手段４８は、画像データのうち残りの印刷領域６２にあるデータを、プリンタ３０にて印刷可能なデータ形式に変換（ラスタライズ）する（ステップＳ３０）。
【００３３】
続いて、生成手段４４は、ステップＳ２６で取得されたバーコード情報が正常であるか否かを判定する（ステップＳ３２）。ここでは、バーコードの種類、バーコードの位置、バーコードのサイズ、及びバーコードデータのそれぞれについて、正常であるか否かの判定が行われる。これらのパラメータが全て正常である場合、生成手段４４は、バーコード印刷コマンドを生成し、プリンタ２０への送信データに追加する（ステップＳ３４）。ここで、バーコード印刷コマンドには、バーコードの位置、サイズ、データ内容等をそれぞれ指定するコマンドが含まれる。ステップＳ３２においてパラメータが正常でないと判断された場合、バーコード印刷コマンドを追加する処理（Ｓ３４）は行われない。
【００３４】
続いて、生成手段４４は、印刷開始コマンド及びプリンタ制御コマンドを生成し、プリンタ２０への送信データに追加する（ステップＳ３８、Ｓ４０）。ここで、印刷開始コマンドとは、プリンタ２０に印刷を開始させるためのコマンドであり、プリンタ制御コマンドとは、プリンタ２０の印刷動作を制御するためのコマンドである。最後に、送信手段４６は、変換手段４８により変換された画像データを、生成手段４４により生成されたコマンド（バーコード印刷コマンド、印刷開始コマンド、及びプリンタ制御コマンド）と共に、プリンタ２０へと送信する（ステップＳ４２）。
【００３５】
再び図２に戻り、プリンタ２０は、バーコードデータ処理手段５２、画像データ処理手段５４、コマンド処理手段５６、合成手段５８、及び印刷手段５９を含む。これらの手段のうち、バーコードデータ処理手段５２、画像データ処理手段５４、コマンド処理手段５６、及び合成手段５８は、例えば図１のＣＰＵ２２に所定のプログラムを実行させることにより実現することができ、当該所定のプログラムは、例えばメモリ２４に記憶させることができる。また、印刷手段５９は、例えば図１の印刷部２８により実現することができる。
【００３６】
バーコードデータ処理手段５２は、プリンタドライバ４０から送信されたデータの中から、バーコード印刷コマンドを取得し、当該コマンドに基づいて、印刷されるバーコードのイメージデータを生成する。画像データ処理手段５４は、プリンタドライバ４０から送信されたデータの中から、印刷領域６２の画像データを取得し、印刷される画像のイメージデータを形成する。
【００３７】
合成手段５８は、バーコードデータ処理手段５２により生成されたバーコードのイメージデータと、画像データ処理手段５４により生成された画像データのイメージデータとの合成を行う。コマンド処理手段５６は、プリンタドライバ４０から送信されたデータのうち、バーコードに関するコマンド以外のコマンド（例えば、印刷開始コマンド、プリンタ制御コマンド等）を処理する。印刷手段５９は、合成手段５８により合成された最終的な印刷データに基づき、印刷を実行する。
【００３８】
図９は、プリンタの動作を示すフローチャートである。最初に、プリンタ２０は、プリンタドライバ４０から画像データ及び各種コマンドを受信する（ステップＳ６０）。ここで受信される画像データは、デバイスコンテキスト６０からバーコード制御領域６４を除いた印刷領域６２の画像データであり、バーコード制御領域に記載された情報は、バーコード印刷コマンドとして、当該画像データとは別に受信される。受信されたデータのうち、バーコード印刷コマンドはバーコードデータ処理手段５２へ、画像データ（ビットイメージデータ）は画像データ処理手段５４へ、その他のコマンドはコマンド処理手段５６へとそれぞれ入力される。
【００３９】
続いて、画像データ処理手段５４は、プリンタドライバ４０により変換された画像データであるビットイメージデータの処理を行い（ステップＳ６２）、当該イメージデータを図１のメモリ２４へと展開する（ステップＳ６４）。続いて、バーコードデータ処理手段５２は、バーコード印刷コマンドの処理を行い（ステップＳ６６）、当該コマンドに基づいてバーコードのイメージデータ（バーコードイメージ）を作成し（ステップＳ６８）、生成されたバーコードイメージをメモリ２４へと展開する（ステップＳ７０）。以上の処理により、画像及びバーコードのそれぞれのイメージデータがメモリ２４上へと展開され、メモリ２４上（合成手段５８）にて画像のイメージデータ及びバーコードイメージの合成が行われる。合成されたイメージデータは、印刷手段５９へと送信される。
【００４０】
続いて、コマンド処理手段５６が、印刷開始コマンドを受信したか否かを判定する（ステップＳ７２）。印刷開始コマンドが受信された場合、コマンド処理手段５６は、印刷手段５９に印刷命令を与え、印刷を実行させることにより印刷を開始する（ステップＳ７４）。
【００４１】
図１０は、プリンタ２０により生成される画像のイメージを示す図である。符号の７０は、画像データ処理手段５４により生成されたイメージデータを示し、符号の８０は、バーコードデータ処理手段５２により生成されたバーコードイメージを示す。符号の９０は、上記２つのイメージデータが合成された状態（最終的な印刷画像）を示す。
【００４２】
本実施例では、印刷画像の例として領収書を用いている。領収書７０には、物品名、金額、顧客へのメッセージ等が記載されている。領収書７０のうち領域７２は空白となっており、当該領域にバーコードイメージ８０が貼り付けられることにより、バーコード付きの領収書９０のイメージデータが完成する。当該イメージデータに基づいて印刷を実行することにより、バーコード付きの領収書を印刷することができる。
【００４３】
実施例１に係るプリンタシステムによれば、アプリケーション３０が生成するデバイスコンテキスト６０が、印刷画像が描画される印刷領域６２とは別に、バーコード制御領域６４を含む。そして、プリンタ制御プログラム（プリンタドライバ４０）が、バーコード制御領域６４からバーコードに関する情報を取得し、バーコードの印刷コマンドを生成する。バーコードのイメージデータは、当該バーコードの印刷コマンドに基づき、プリンタ２０にて生成される。従って、アプリケーション３０にてバーコードイメージを生成する場合に比べ、プリンタドライバ４０による変換処理の影響を受けず、且つプリンタ２０の仕様に適合したバーコードイメージを生成することができる。その結果、高品質なバーコードを印刷することができる。また、デバイスコンテキスト６０を従来に比べて拡張し、当該拡張した領域（バーコード制御領域６４）にバーコードに関する情報を描画することで、例えば特殊フォントを用いる場合等に比べ、バーコードに関する情報を簡易かつ正確に、プリンタドライバ４０に伝達することができる。
【００４４】
本実施例では、バーコード制御領域６４をデバイスコンテキスト６０の最初に設けているが、バーコード制御領域６４はその他の領域と識別できる形態であれば、他の領域に設けられていてもよい。ただし、バーコード制御領域６４をデータの先頭に設けることで、プリンタドライバ４０がバーコード印刷を行うか否かの判定を、より早い段階で行うことができる。なお、バーコード制御領域６４に記載されるデータ量は、印刷されるバーコードの種類ごとに異なる場合があるため、バーコード制御領域６４の大きさは、バーコードの種類に応じて変更可能とすることが好ましい。
【００４５】
また、本実施例では、バーコード制御領域６４に記載されたバーコードに関する情報の最初に、バーコード制御領域６４の大きさ（ＬＢＣ）を記載する構成としたが、ＬＢＣをこれ以外の領域に記載してもよい。ただし、ＬＢＣをバーコード制御領域６４の最初に記載することで、プリンタドライバ４０の判定手段４１が、バーコード制御領域６４が存在するか否かの判定をより早い段階で行うことができる。なお、本実施例では、バーコード制御領域６４の大きさ（ＬＢＣ）が所定の閾値より小さい場合に、バーコード制御領域６４が存在しないと判定したが、バーコード制御領域６４が存在するか否かの判定は、これ以外の方法で行ってもよい。
【００４６】
また、本実施例では、１次元のバーコードを例に説明を行ったが、本発明はこれ以外の形態のバーコード（例えば、２次元バーコード（ＱＲコード））に対しても適用することができる。
【００４７】
以上、本発明の実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００４８】
１０    コンピュータ
２０    プリンタ
３０    アプリケーション
３２    デバイスコンテキスト生成手段
３４    印刷データ描画手段
３６    バーコード制御領域描画手段
３８    印刷実行手段
４０    プリンタドライバ
４１    判定手段
４２    取得手段
４４    生成手段
４６    変換手段
４８    送信手段
５２    バーコードデータ処理手段
５４    イメージデータ処理手段
５６    コマンド処理手段
５８    合成手段
５９    印刷手段
６０    デバイスコンテキスト
【図１】
0005687098.tif 000002
【図２】
0005687098.tif 000003
【図３】
0005687098.tif 000004
【図４】
0005687098.tif 000005
【図５】
0005687098.tif 000006
【図６】
0005687098.tif 000007
【図７】
0005687098.tif 000008
【図８】
0005687098.tif 000009
【図９】
0005687098.tif 000010
【図１０】
0005687098.tif 000011