図1は、印刷システム1の構成を示す図である。
印刷システム1は、例えば、スーパーマーケットや、コンビニエンスストア、デパート、飲食店等の店舗に用いられるシステムである。例えば、印刷システム1は、顧客が購入した商品に応じた会計を行う機能、会計に応じてレシートを発行する機能等を備える。
図1に示すように、印刷システム1は、プリンター2(印刷装置)と、タブレット端末装置3とを備える。
プリンター2は、ロール紙(印刷媒体)を収容し、収容したロール紙にライン型のサーマルヘッドでドットを形成して文字や画像等を印刷するサーマルプリンターである。
なお、本実施形態に係るプリンター2の印刷方式はサーマル方式であるが、プリンター2の印刷方式は、サーマル方式に限らず、インクジェット方式等の他の印刷方式でもよい。また、プリンター2の印刷ヘッドは、ライン型に限らず、シリアル型でもよい。
図1に示すように、プリンター2は、印刷装置制御部20(制御部)と、印刷装置記憶部21(記憶部)と、印刷部22と、プリントバッファー23と、受信バッファー24と、印刷装置通信部25(通信部)と、デバイス通信部26と、報知部27と、を備える。
印刷装置制御部20は、CPUや、ROM、RAM、その他の制御回路等を備え、プリンター2の各部を制御する。
印刷装置記憶部21は、ハードディスクや、EEPROM等の不揮発性メモリーを備え、データを書き換え可能に記憶する。印刷装置記憶部21は、印刷装置制御部20のCPUが読み出して実行する制御プログラムのほか、スタイルデータベース210、フォント情報211を記憶する。スタイルデータベース210、及び、フォント情報211については、後述する。
印刷部22は、プリンター2の筐体に収容されたロール紙を搬送する搬送機構、サーマルヘッドによってロール紙にドットを形成して文字や画像等を印刷する印刷機構、及び、ロール紙を所定の位置で切断するカッターを備える。印刷部22は、印刷装置制御部20の制御で、搬送機構によりロール紙を搬送し、印刷機構によりロール紙にレシートに係る文字や画像等を印刷し、カッターにより所定の位置でロール紙を切断して、レシートを発行する。
プリントバッファー23は、RAMと呼ばれる一時記憶領域であり、例えば半導体記憶デバイスで構成される。プリントバッファー23は、印刷装置制御部20の制御で、ロール紙に印刷される文字や画像等の画像データを記憶する。なお、プリントバッファー23は、印刷装置制御部20のRAMの所定の記憶領域に形成する構成としてもよい。
受信バッファー24は、RAMと呼ばれる一時記憶領域であり、例えば半導体記憶デバイスで構成される。受信バッファー24は、印刷装置制御部20の制御で、外部から受信したデータを記憶する。本実施形態において、受信バッファー24は、印刷装置通信部25によりタブレット端末装置3から受信したデータを記憶する。
印刷装置通信部25、印刷装置制御部20の制御で、所定の無線通信の規格に従って、タブレット端末装置3と通信する。プリンター2とタブレット端末装置3との間で行われる通信の無線通信規格は、アドホックモードに対応する無線LANに係る規格や、インフラストラクチャーモードに対応する無線LANに係る規格、Bluetooth(登録商標)等の近距離無線通信に係る規格等、どのような規格でもよい。
デバイス通信部26は、USBの規格に従ったポートや、USB以外のシリアル通信規格(RS232C等)に従ったポート、パラレル通信規格(IEEE1284等)に従ったポート、有線LANに係る通信規格(イーサネット(登録商標)等)に従ったポート、その他ポートを有するインターフェースボードを備える。各ポートには、デバイスが接続可能である。デバイス通信部26は、印刷装置制御部20の制御で、ポートを介してプリンター2に接続されたデバイスと通信する。なお、デバイス通信部26が、無線通信機能を備え、デバイスと無線通信する構成でもよい。
プリンター2には、デバイスとして、バーコードリーダーBR、カスタマーディスプレーCD、及び、ドロワーDRが接続される。
バーコードリーダーBRは、商品や、商品の包装等に付されたバーコードを読み取り、読取結果を示すデータをデバイス通信部26に出力する。デバイス通信部26は、バーコードリーダーBRから入力されたデータを、印刷装置制御部20に出力する。
カスタマーディスプレーCDは、印刷装置制御部20の制御で、会計に関する情報を表示する。カスタマーディスプレーCDに表示された情報は、会計を行う顧客が視認できる。
ドロワーDRは、現金等を収容するトレイ、及び、トレイをドロワーDRの本体に対して引き出し可能な機構を備える装置である。
報知部27は、LEDや、液晶表示パネル等を備え、印刷装置制御部20の制御で、各種情報を報知する。例えば、報知部27は、1又は複数のLEDを所定の態様で点灯、及び、消灯することにより、各種情報を報知する。なお、報知部27は、音声を示す音声情報を出力する構成でもよい。
次に、タブレット端末装置3について説明する。
タブレット端末装置3は、前面の広い領域にタッチパネル32が設けられたタブレット型の(板状の)端末装置である。タブレット端末装置3は、例えば、会計に際し、会計に関する各種処理を実行してプリンター2を制御するホストコンピューターとして機能する。
図2に示すように、タブレット端末装置3は、端末装置制御部30と、端末装置通信部31と、タッチパネル32と、端末装置記憶部33と、を備える。
端末装置制御部30は、CPUや、ROM、RAM、その他の制御回路等を備え、タブレット端末装置3の各部を制御する。
端末装置通信部31は、端末装置制御部30の制御で、所定の無線通信の規格に従って、プリンター2と通信する。
タッチパネル32は、液晶表示パネル等の表示パネルと、表示パネルに重ねて設けられたタッチセンサーとを備える。表示パネルは、端末装置制御部30の制御で、各種画像を表示する。タッチセンサーは、タッチ操作を検出し、端末装置制御部30に出力する。端末装置制御部30は、タッチセンサーからの入力に基づいて、タッチ操作に対応する処理を実行する。
端末装置記憶部33は、ハードディスクや、EEPROM等の不揮発性メモリーを備え、データを書き換え可能に記憶する。
ここで、一般的な、印刷システム1を構成するプリンター2、及び、タブレット端末装置3の動作を説明する。なお、ここでの説明では、タブレット端末装置3には、予めプリンタードライバーがインストールされていることを前提とする。
タブレット端末装置3の端末装置制御部30は、タブレット端末装置3に予めインストールされるアプリケーション(ブラウザ等)を読み出して実行することにより、プリンター2が収容するロール紙に印刷すべき文字や画像等に係る情報を含む印刷データを生成する。ここで、印刷データは、少なくとも、ロール紙に印刷されるべき文字列が含まれる。文字列に含まれる各文字は、所定の文字コードとして表現される。
次いで、端末装置制御部30は、タブレット端末装置3に予めインストールされたプリンタードライバーを読み出して実行することにより、アプリケーションの機能により生成した印刷データに基づいて、プリンター2のコマンド体系に対応した制御コマンドを生成する。ここで、制御コマンドは、少なくとも、印刷データが含む文字列情報の印刷の実行を指示するコマンドを含む。このコマンドは、印刷データが含む文字列の中に挿入され、所定の位置に所定の態様で所定の文字列が印刷されるようサーマルヘッドや、搬送機構を駆動させるコマンドである。端末装置制御部30は、印刷データと制御コマンドとをプリンター2に送信する。
プリンター2の印刷装置制御部20は、印刷装置通信部25により、印刷データと制御コマンドとを受信し、制御コマンドが指示する処理を実行することにより、ロール紙に印刷データに基づく印刷を実行する。
ここで、例えば、以下に挙げる態様の場合、プリンター2は、ユーザーの所望する印刷を実行しない場合がある。
当該態様の1つとして、タブレット端末装置3がプリンタードライバーをインストールしていない場合が挙げられる。
前述した通り、一般的な、印刷システム1を構成するプリンター2、及び、タブレット端末装置3の動作では、タブレット端末装置3に予めプリンタードライバーがインストールされていることが前提である。しかしながら、タブレット端末装置3によっては、プリンタードライバーがインストールされない場合がある。この場合、タブレット端末装置3は、プリンタードライバーがインストールされていないため、制御コマンドを生成することができず、制御コマンドなしで印刷データをプリンター2に送信することになる。これでは、プリンター2は、ユーザーが所望する様式で印刷を実行できない可能性がある。
また、他の態様の1つとして、タブレット端末装置3にインストールされるプリンタードライバーを介さず、アプリケーション(ブラウザ等)で生成した印刷データをそのままプリンター2に送信する場合が挙げられる。
前者の態様の場合、ユーザーがタブレット端末装置3にプリンタードライバーをインストールすることで、ユーザーの所望する印刷が実行可能となるが、プリンタードライバーをインストールする知識が乏しいユーザーには、プリンタードライバーのインストールが容易でないし、インストールの手間がかかる。
また、前者の態様、及び、後者の態様の場合、ユーザーがタブレット端末装置3のアプリケーションが、印刷データに制御コマンドを挿入することで、プリンター2は、ユーザーが所望する様式で印刷が実行可能となる。しかしながら、アプリケーション側で、印刷データに制御コマンドを挿入することは、難しく手間がかかる。仮に、アプリケーション側で、制御コマンドを印刷データに挿入したとしても、後から制御コマンドや印刷データが含む文字列を変更する際にさらに手間がかかってしまう。
ところで、レシートに印刷される文字列は、内容(属性)によって、文字列が印刷される印刷面において、一般に、印刷位置が予め定まっていることが多い。例えば、レシートに印刷される文字列のうち、金額を示す文字列は、印刷面に対し右寄りに印刷される。また、何に対する金額であるかの名称(例えば、商品名や、合計等を示す名称)を示す文字列は、印刷面に対し左寄り、又は、中央寄りに印刷される。また、商品の個数を示す文字列は、商品名の右側に印刷される。そこで、上述したようにタブレット端末装置3がプリンタードライバーをインストールしていない場合でも、又は、プリンタードライバーを介さず印刷データを送信する場合でも、印刷を開始する位置を示すタブ位置を設定することで、文字列の印刷位置をレシートの様式に整えることが可能となる。しかしながら、レシートに印刷される文字列は、文字のサイズが横2倍角(本実施形態では、行方向に対する半角のサイズの2倍)や半角等で印刷されたり、文字列のトリミングが行われて印刷されたり、位置揃えが行われて印刷されたり等の種々の処理が施される。したがって、文字列の印刷位置を設定するだけでは、レシートの様式が、ユーザーの所望する様式とならない可能性がある。しかしながら、前述したように、アプリケーション側で、種々の処理が施されるように印刷データを変更することは、ユーザーの手間がかかってしまう。
そこで、本実施形態のプリンター2は、以下に示す動作を実行する。
図2は、プリンター2の動作を示すフローチャートである。
タブレット端末装置3の端末装置制御部30は、設定コマンドと印刷データとをプリンター2に送信する。設定コマンドは、後に例を挙げて詳述するが、予めタブ位置設定コマンド(後述)によって設定されたタブ位置により区切られた行の領域を示す区切り領域ごとに、文字列のスタイル(すなわち、様式)を設定可能なコマンドである。なお、本実施形態では、1つの文字も文字列に相当する。
プリンター2の印刷装置制御部20は、印刷装置通信部25により、タブレット端末装置3から設定コマンド、及び、印刷データを受信したか否かを判別する(ステップSA1)。受信される印刷データは、受信バッファー24に格納される。
印刷装置制御部20は、タブレット端末装置3から設定コマンド、及び、印刷データを受信したと判別した場合(ステップSA1:YES)、設定コマンドに基づいて、設定コマンドが指定する区切り領域ごとにスタイルデータ(スタイルを示す情報)を、印刷装置記憶部21のスタイルデータベース210に記憶する(ステップS2)。スタイルデータベース210とは、区切り領域とそれに対応するスタイルデータを複数格納するデータベースである。
スタイルデータとは、後に例示しつつ詳述するが、印刷に係る様式を指定するデータである。スタイルデータは、通常使用される印刷に係る様式を指定するコマンドで構成されていてもよい。この場合、印刷装置制御部20のCPUは、スタイルデータベース210に記憶されているスタイルデータであるコマンドを読み出して実行し、画像データを生成してプリントバッファー23に記憶し、印刷部22により印刷を実行させる。印刷に係る様式としては、本実施形態において、位置揃え、文字装飾、数値フォーマット、マージン、文字サイズ、及び、文字列のトリミングである。位置揃えとは、区切り文字列を所定の方向に揃えることを示す。また、文字装飾は、区切り文字列に対して、アンダーライン等の装飾を施すことを示す。数値フォーマットは、区切り文字列が数値であって、当該数値を印刷する際のフォーマットである。マージンは、区切り文字列の先頭又は末尾に余白を付加することを示す。文字サイズは、区切り文字列の各文字のサイズを示す。文字列のトリミングとは、区切り文字列に対し所定の文字数分、削除することを示す。
次いで、印刷装置制御部20は、タブレット端末装置3から受信した印刷データを受信バッファー24から読み出す(ステップS3)。
本実施形態においてプリンター2が受信する印刷データは、図3に示すような印刷データである。
図3は、印刷データの一例を示す図である。
図3に示す印刷データID1は、行印刷データID11と、行印刷データID12と、行印刷データID13と、行印刷データID14とを含む。行印刷データID11〜行印刷データID14のそれぞれは、ロール紙に文字列を印刷する際における1行分の印刷データである。
行印刷データID11〜行印刷データID14のそれぞれは、タブ位置設定コマンド(後述)により設定されたタブ位置まで印刷位置を移動させることを実行するタブコマンドと、改行を実行する改行コマンドと含む。図3では、タブコマンドは、「<HT>」(horizontal tab)と表記される。また、改行コマンドは、「<LF>」(line feed)と表記される。
行印刷データID11は、「QTY」を示す文字列MJ111と、「ITEM」を示す文字列MJ112と、「AMOUNT」を示す文字列MJ113とを含む。文字列MJ111と、文字列MJ112と、文字列MJ113とは、タブコマンドにより区切られている。したがって、文字列MJ111と、文字列MJ112と、文字列MJ113とのそれぞれは、行印刷データID11が示す文字列がタブコマンドにより区切られた区切り文字列に相当する。なお、行印刷データID11が示す文字列とは、文字列MJ111と、文字列MJ112と、文字列MJ113とを含む文字列のことである。
行印刷データID12は、「2」を示す文字列MJ121と、「AAAA,BBBBBBB,and CCCCCC Burger」を示す文字列MJ122と、「12」を示す文字列MJ123とを含む。文字列MJ121と、文字列MJ122と、文字列MJ123とは、タブコマンドにより区切られている。したがって、文字列MJ121と、文字列MJ122と、文字列MJ123とのそれぞれは、行印刷データID12が示す文字列がタブコマンドにより区切られた区切り文字列に相当する。なお、行印刷データID12が示す文字列とは、文字列MJ121と、文字列MJ122と、文字列MJ123とを含む文字列のことである。
行印刷データID13は、「1」を示す文字列MJ131と、「Fresh Squeezed AAAAAA Juice」を示す文字列MJ132と、「6」を示す文字列MJ133とを含む。文字列MJ131と、文字列MJ132と、文字列MJ133とは、タブコマンドにより区切られている。したがって、文字列MJ131と、文字列MJ132と、文字列MJ133とのそれぞれは、行印刷データID13が示す文字列がタブコマンドにより区切られた区切り文字列に相当する。なお、行印刷データID13が示す文字列とは、文字列MJ131と、文字列MJ132と、文字列MJ133とを含む文字列のことである。
行印刷データID14は、「Subtotal」を示す文字列MJ141と、「18」を示す文字列MJ142とを含む。文字列MJ141と文字列MJ142とは、タブコマンドにより区切られている。したがって、文字列MJ141と、文字列MJ142とのそれぞれは、行印刷データID14が示す文字列がタブコマンドにより区切られた区切り文字に相当する。なお、行印刷データID14が示す文字列とは、文字列MJ141と、文字列MJ142とを含む文字列のことである。
このように、本実施形態のプリンター2は、1又は複数の行印刷データを有し、1の行印刷データが、タブコマンドにより区切られた区切り文字列を有する印刷データを受信する。なお、区切り文字列の各文字は、所定の文字コードで表現されている。なお、本実施形態では、タブレット端末装置3から印刷データを受信することは、タブレット端末装置3から文字列を受信することに相当する。
図2に示すフローチャートの説明に戻り、印刷装置制御部20は、受信した印刷データを受信バッファー24から読み出すと、ステップS5〜ステップS7の処理の対象となる行印刷データを特定する(ステップS4)。
次いで、印刷装置制御部20は、ステップS4で特定した行印刷データ、ステップS2で記憶したスタイルデータ、及び、フォント情報211に基づいて、プリントバッファー23に画像データを展開する(ステップS5)。フォント情報211とは、文字をロール紙に印刷可能な態様で表現する実データのことであり、例えば、ビットマップフォントデータが挙げられる。フォント情報211は、文字ごとに、実データと、文字コードとが対応付く。印刷装置制御部20は、行印刷データの区切り文字列の各文字について、フォント情報211を参照し、対応するスタイルデータに基づく処理を施し、画像データをプリントバッファー23に展開する。そして、印刷装置制御部20は、印刷部22により、展開した画像データに基づいて、1行分の印刷を実行する(ステップS6)。次いで、印刷装置制御部20は、1行分の印刷を実行すると、プリントバッファー23に展開した画像データを消去する(ステップS7)。
次いで、印刷装置制御部20は、受信した印刷データが含む1又は複数の行印刷データの全てを対象として、画像データを生成し印刷を実行したか否かを判別する(ステップS8)。
印刷装置制御部20は、受信した印刷データが含む1又は複数の行印刷データの全てを対象として、画像データを生成して印刷を実行してないと判別した場合(ステップS8:NO)、処理をステップS3に移行させる。一方、印刷装置制御部20は、受信した印刷データが含む1又は複数の行印刷データの全てを対象として、画像データを生成して印刷を実行したと判別した場合(ステップS8:YES)、ロール紙を適切な位置でカットする(ステップS9)。これにより、印刷装置制御部20は、レシートを発行する。
ここで、複数の例を挙げて、プリンター2の動作をより詳細に説明する。
<例1>
例1では、図3に示す印刷データID1、図4に示すタブ位置設定コマンドTC1、及び、図5に示す設定コマンドSTC1に基づいて、図6に示すレシートR1を発行する場合を例示する。なお、例1では、ロール紙の印刷面において1行に印刷可能な桁数を42桁とする。
図4は、タブ位置を設定するタブ位置設定コマンドの一例を示す図である。
図4に示すタブ位置設定コマンドTC1は、ロール紙の印刷面の1行分の領域において、行の左端(始端)から設定するタブ位置までの桁数を示す設定値を含む。ここでの桁数は、文字を半角で印刷する場合の桁数である。図2に示す通り、タブ位置設定コマンドTC1は、「5」を示す設定値ST1と、「31」を示す設定値ST2とを含む。つまり、図2に示すタブ位置設定コマンドTC1は、タブ位置を、印刷面に行の左端から5桁目に設定すること、及び、行の左端から31桁目に設定することを指示するコマンドである。つまり、図4に示すタブ位置設定コマンドTC1は、例1において1行に印刷可能な桁数が42桁であるため、行の領域を、1桁から4桁までの領域と、5桁から30桁までの領域と、31桁から42桁までの領域との3つ領域に区切ることを指示するコマンドに相当する。この区切られた領域は、タブ位置により区切られた行の領域を示す区切り領域に相当する。
図5は、設定コマンドの一例を示す図である。
図5に示す設定コマンドSTC1は、タブ位置設定コマンドが設定したタブ位置により区切られた区切り領域ごとに、区切り領域に対応する区切り文字列に対して処理するスタイルデータを指定する設定値を示すスタイル設定値を含む。図5に示す設定コマンドSTC1は、「R1I」を示すスタイル設定値SS1と、「L0S」を示すスタイル設定値SS2と、「R2$」を示すスタイル設定値SS3とを含む。
「R1I」を示すスタイル設定値SS1は、複数のスタイル設定値により構成される。すなわち、「R1I」を示すスタイル設定値SS1は、「R」を示すスタイル設定値と、「1」を示すスタイル設定値と、「I」を示すスタイル設定値とにより構成される。「R」を示すスタイル設定値は、区切り文字列を区切り領域において、右揃えに設定するスタイルデータ(以下、「右揃えスタイルデータ」と表現する)を指定する設定値である。また、「1」を示すスタイル設定値は、区切り領域において、区切り文字列の末尾にマージン(すなわち、余白)を1桁分設定するスタイルデータ(以下、「1マージンスタイルデータ」と表現する)を指定する設定値である。また、「I」を示すスタイル設定値は、区切り文字列が数字である場合、この数字を区切り領域において、整数のフォーマットに設定するスタイルデータ(以下、「整数フォーマットスタイルデータ」と表現する)を指定する設定値である。
「L0S」を示すスタイル設定値SS2は、複数のスタイル設定値により構成される。すなわち、「L0S」を示すスタイル設定値SS2は、「L」を示すスタイル設定値と、「0」を示すスタイル設定値と、「S」を示すスタイル設定値とにより構成される。「L」を示すスタイル設定値は、区切り文字列を区切り領域において、左揃えに設定するスタイルデータ(以下、「左揃えスタイルデータ」と表現する)を指定する設定値である。また、「0」を示すスタイル設定値は、区切り領域において、区切り文字列の先頭又は末尾にマージンを入れないことを設定するスタイルデータ(以下、「マージン無スタイルデータ」と表現する)を指定する設定値である。また、「S」を示すスタイル設定値は、区切り領域において、区切り文字列の桁数が、区切り領域に印刷可能な文字の桁数以下となるように、区切り文字列をトリミングすることを設定するスタイルデータ(以下、「トリミングスタイルデータ」と表現する)を指定する設定値である。
「R2$」を示すスタイル設定値SS3は、複数のスタイル設定値により構成される。すなわち、「R2$」を示すスタイル設定値SS3は、「R」を示すスタイル設定値と、「2」を示すスタイル設定値と、「$」を示すスタイル設定値とにより構成される。「R」を示すスタイル設定値は、上述したスタイル設定値と同じである。また、「2」を示すスタイル設定値は、区切り領域において、区切り文字列の末尾にマージン(すなわち、余白)を2桁分設定するスタイルデータ(以下、「2マージンスタイルデータ」と表現する)を指定する設定値である。また、「$」を示すスタイル設定値は、区切り文字列が数字である場合、区切り領域において、当該数字を米国通貨のフォーマットに設定するスタイルデータ(以下、「米国通貨スタイルデータ」と表現する)を指定する設定値である。
図5に示す設定コマンドSTC1が示す通り、スタイル設定値SS1と、スタイル設定値SS2と、スタイル設定値SS3とは、「;」で区切られている。「;」はタブ位置設定コマンドTC2により設定されるタブ位置に対応するものである。これは、スタイル設定値SS1が、タブ位置設定コマンドにより区切られる区切り領域のうち、最初の区切り領域に対応する区切り文字列のスタイルデータを指定することを示している。また、これは、スタイル設定値SS2が、タブ位置設定コマンドにより区切られる区切り領域のうち、中央の区切り領域に対応する区切り文字列のスタイルデータを指定することを示している。また、これは、スタイル設定値SS3が、タブ位置設定コマンドにより区切られる区切り領域のうち、最後の区切り領域に対応する区切り文字列のスタイルデータを指定することを示している。最初の区切り領域と、中央の区切り領域、及び、最後の区切り領域については、後述する。
印刷装置制御部20は、タブレット端末装置3から設定コマンドSTC1と、印刷データID1とを受信すると(ステップS1:YES)、設定コマンドSTC1が指定するスタイルデータをそれぞれ印刷装置記憶部21に記憶されているタブ位置情報と対応付けて記憶する(ステップS2)。この場合、予めタブ位置設定コマンドTC1を受信してもよい。タブ位置設定コマンドTC1により設定されたタブ位置情報は印刷装置記憶部21に記憶されている。なお、印刷装置記憶部21には、予めタブ位置の初期値の情報が記憶されている。前述した通り、設定コマンドSTC1は、スタイル設定値SS1と、スタイル設定値SS2と、スタイル設定値SS3とを含む。
したがって、印刷装置制御部20は、スタイル設定値SS1に基づいて、右揃えスタイルデータと、1マージンスタイルデータと、整数フォーマットスタイルデータとを、印刷装置記憶部21が記憶するスタイルデータベース210から対応するタブ位置情報と共に読み出して取得する。また、印刷装置制御部20は、スタイル設定値SS2に基づいて、左揃えスタイルデータと、マージン無スタイルデータと、トリミングスタイルデータとを、印刷装置記憶部21が記憶するスタイルデータベース210から対応するタブ位置情報と共に読み出して取得する。また、印刷装置制御部20は、スタイル設定値SS3に基づいて、右揃えスタイルデータと、2マージンスタイルデータと、米国通貨スタイルデータとを対応するタブ位置と共に読み出して取得する。
印刷装置制御部20は、タブレット端末装置3から受信した印刷データID1を受信バッファー24から読み出す(ステップS3)と、印刷データID1が有する行印刷データID11〜行印刷データID14のうち、ステップS5〜ステップS7の処理の対象となる行印刷データを特定する(ステップS4)。
印刷装置制御部20は、印刷データID1を受信バッファー24から読み出してから、初めて行印刷データを特定する場合、まず、行印刷データID11を特定する。
次いで、印刷装置制御部20は、タブ位置設定コマンドTC1に基づき印刷装置記憶部21に記憶されているタブ位置情報、設定コマンドSTC1に基づきスタイルデータベース210に記憶されているスタイルデータ、ステップS4で特定したタブコマンドを含む行印刷データID11、及び、行印刷データID11の文字コードに対応するフォント情報211に基づいて、画像データを生成しプリントバッファー23に展開する(ステップS5)。
ここでステップS5について、詳述する。
図6は、印刷結果の一例を示す図であり、特に、図3に示す印刷データID1、図4に示すタブ位置設定コマンドTC1、及び、図5に示す設定コマンドSTC1に基づく印刷結果を示す図である。
印刷装置制御部20は、タブ位置設定コマンドTC1に基づいて、最初の区切り領域と、中央の区切り領域、及び、最後の区切り領域とを特定する。前述した通り、タブ位置設定コマンドTC1は、タブ位置を、行の左端から5桁目と、行の左端から31桁目とに設定することを指示するコマンドであり、設定されたタブ位置情報は印刷装置記憶部21に記憶される。なお、行の左端とは、ロール紙の印刷面における行の左端である。印刷装置制御部20は、行の始端である左端から4桁目まで、すなわち、行の左端から最初のタブ位置までを、最初の区切り領域として特定する。図6の場合、印刷装置制御部20は、領域A1を最初の区切り領域として特定する。また、印刷装置制御部20は、行の5桁目から30桁目までを、中央の区切り領域として特定する。図6の場合、印刷装置制御部20は、領域A2を中央の区切り領域として特定する。また、印刷装置制御部20は、行の31桁目から行の右端まで、すなわち、最後のタブ位置から行の終端までを、最後の区切り領域として特定する。なお、行の右端とは、ロール紙の印刷面における行の右端である。図6の場合、印刷装置制御部20は、領域A3を最後の区切り領域として特定する。
次いで、印刷装置制御部20は、最初の区切り領域である領域A1に印刷する文字列を行印刷データID11から特定する。図3に示す通り、行印刷データID11は、印刷装置記憶部21に記憶されているタブ位置情報に基づき、印刷位置を順に移動させるタブコマンドにより区切られている。印刷装置制御部20は、タブコマンドによりプリントバッファー23に展開する位置を順に移動させ、印刷結果に反映させている。また、タブ位置情報は、行の中で次の印刷位置の基準となる位置を規定している。この区切り領域は、タブ位置設定コマンドTC1により設定され記憶されたタブ位置情報で区切られる範囲と対応している。そのため、印刷装置制御部20は、最初の区切り領域である領域A1に印刷する文字列として、行印刷データID11から文字列MJ111を特定する。
印刷装置制御部20は、最初の区切り領域である領域A1に印刷する文字列として、文字列MJ111を特定すると、設定コマンドSTC1が指定しスタイルデータベース210に記憶されている、最初の区切り領域に対応する区切り文字列のスタイルデータに基づいて、文字列MJ111を処理し、処理した画像データをプリントバッファー23に展開する。前述した通り、設定コマンドSTC1が指定する、最初の区切り領域に対応する区切り文字列のスタイルデータは、右揃えスタイルデータ、1マージンスタイルデータ、及び、整数フォーマットスタイルデータである。したがって、印刷装置制御部20は、文字列MJ111について、領域A1において右揃えで、且つ、文字列MJ111の末尾に1桁分の余白YKを設定することで、領域A1において文字列MJ111が図6に示す文字列MJ11aとなるように処理する。そして、印刷装置制御部20は、「QTY」を示す文字列MJ11aを示す画像データをプリントバッファー23に展開する。
また、印刷装置制御部20は、中央の区切り領域である領域A2に印刷する文字列を行印刷データID11から特定する。図3に示す通り、行印刷データID11は、タブコマンドにより区切られている。また、前述した通り、この区切りは、タブ位置設定コマンドによる行の区切りと対応している。そのため、印刷装置制御部20は、中央の区切り領域である領域A2に印刷する文字列として、行印刷データID11から文字列MJ112を特定する。
印刷装置制御部20は、中央の区切り領域である領域A2に印刷する文字列として、文字列MJ112を特定すると、設定コマンドSTC1が指定しスタイルデータベース210に記憶されている、中央の区切り領域に対応する区切り文字列のスタイルデータに基づいて、文字列MJ112を処理し、処理した画像データをプリントバッファー23に展開する。前述した通り、設定コマンドSTC1が指定する、中央の区切り領域に対応する区切り文字列のスタイルデータは、左揃えスタイルデータ、マージン無スタイルデータ、及び、トリミングフォーマットスタイルデータである。したがって、印刷装置制御部20は、文字列MJ112について、領域A2において左揃えで、且つ、余白YKが設定せず、領域A2の桁数以下となるようにトリミングすることで、領域A2において、文字列MJ112が図6に示す文字列MJ11bとなるように処理する。そして、印刷装置制御部20は、「ITME」を示す文字列MJ11bを示す画像データをプリントバッファー23に展開する。
また、印刷装置制御部20は、最後の区切り領域である領域A3に印刷する文字列を行印刷データID11から特定する。印刷装置制御部20は、最後の区切り領域である領域A3に印刷する文字列として、行印刷データID11から文字列MJ113を特定する。
印刷装置制御部20は、最後の区切り領域である領域A3に印刷する文字列として、文字列MJ113を特定すると、設定コマンドSTC1が指定しスタイルデータベース210に記憶されている、最後の区切り領域に対応する区切り文字列のスタイルデータに基づいて、文字列MJ113を処理し、処理した画像データをプリントバッファー23に展開する。前述した通り、設定コマンドSTC1が指定する、最後の区切り領域に対応する区切り文字列のスタイルデータは、右揃えスタイルデータ、2マージンスタイルデータ、及び、米国通貨フォーマットスタイルデータである。したがって、印刷装置制御部20は、文字列MJ113について、領域A2において左揃えで、且つ、余白YKが2つ末尾に設定することで、領域A3において、文字列MJ113が図6に示す文字列MJ11cとなるように処理する。そして、印刷装置制御部20は、「AMOUNT」を示す文字列MJ11cを示す画像データをプリントバッファー23に展開する。
印刷装置制御部20は、行印刷データID11について、タブ位置設定コマンドTC1、及び、設定コマンドSTC1による設定に基づいて画像データをプリントバッファー23に展開すると(ステップS5)、展開された画像データに基づいてロール紙に印刷を実行する(ステップS6)。これにより、ロール紙の1行に、文字列MJ11aと、文字列MJ11bと、文字列MJ11cとを含む文字列MJ11fが、図6に示す様式で印刷される。
印刷装置制御部20は、プリントバッファー23に展開された画像データに基づいて印刷を実行すると、プリントバッファー23に展開した画像データを消去する(ステップS7)。
印刷装置制御部20は、行印刷データID11について印刷を実行すると、印刷データが含む1又は複数の行印刷データの全てを対象にしていないと判別し(ステップS8:NO)、所定をステップS4に戻して、行印刷データID12を特定する。
印刷装置制御部20は、行印刷データID12を特定すると、最初の区切り領域である領域A1に印刷する文字列を行印刷データID12から特定する。図3に示す通り、行印刷データID12は、タブコマンドにより区切られている。この区切りは、タブ位置設定コマンドTC1による行の区切りと対応している。そのため、印刷装置制御部20は、最初の区切り領域である領域A1に印刷する文字列として、行印刷データID12から文字列MJ121を特定する。
印刷装置制御部20は、最初の区切り領域である領域A1に印刷する文字列として、文字列MJ121を特定すると、設定コマンドSTC1が指定する、最初の区切り領域に対応する区切り文字列のスタイルデータに基づいて、文字列MJ121を処理し、処理した画像データをプリントバッファー23に展開する。前述した通り、設定コマンドSTC1が指定しスタイルデータベース210に記憶されている、最初の区切り領域に対応する区切り文字列のスタイルデータは、右揃えスタイルデータ、1マージンスタイルデータ、及び、整数フォーマットスタイルデータである。したがって、印刷装置制御部20は、文字列MJ121について、領域A1において右揃えで、且つ、文字列MJ121の末尾に1桁分の余白YKを設定し、且つ、整数のフォーマットとなるように設定することで、領域A1において、文字列MJ121を図6に示す文字列MJ12aとなるように処理する。そして、印刷装置制御部20は、「2」を示す文字列MJ12aを示す画像データをプリントバッファー23に展開する。
また、印刷装置制御部20は、中央の区切り領域である領域A2に印刷する文字列を行印刷データID12から特定する。印刷装置制御部20は、中央の区切り領域である領域A2に印刷する文字列として、行印刷データID12から文字列MJ122を特定する。
印刷装置制御部20は、中央の区切り領域である領域A2に印刷する文字列として、文字列MJ122を特定すると、設定コマンドSTC1が指定しスタイルデータベース210に記憶されている、中央の区切り領域に対応する区切り文字列のスタイルデータに基づいて、文字列MJ122を処理し、処理した画像データをプリントバッファー23に展開する。前述した通り、設定コマンドSTC1が指定する、中央の区切り領域に対応する区切り文字列のスタイルデータは、左揃えスタイルデータ、マージン無スタイルデータ、及び、トリミングフォーマットスタイルデータである。したがって、印刷装置制御部20は、文字列MJ122について、領域A2において左揃えで、且つ、余白YKが設定せず、領域A2の桁数以下となるようにトリミングすることで、領域A2において、文字列MJ122を図6に示す文字列MJ12bとなるように処理する。そして、印刷装置制御部20は、「AAAA、BBBBBBB、and CCCCCC」を示す文字列MJ12bの画像データをプリントバッファー23に展開する。
また、印刷装置制御部20は、最後の区切り領域である領域A3に印刷する文字列を行印刷データID12から特定する。印刷装置制御部20は、最後の区切り領域である領域A3に印刷する文字列として、行印刷データID12から文字列MJ123を特定する。
印刷装置制御部20は、最後の区切り領域である領域A3に印刷する文字列として、文字列MJ123を特定すると、設定コマンドSTC1が指定しスタイルデータベース210記憶されている、最後の区切り領域に対応する区切り文字列のスタイルデータに基づいて、文字列MJ123を処理し、処理した画像データをプリントバッファー23に展開する。前述した通り、設定コマンドSTC1が指定する、最後の区切り領域に対応する区切り文字列のスタイルデータは、右揃えスタイルデータ、2マージンスタイルデータ、及び、米国通貨フォーマットスタイルデータである。したがって、印刷装置制御部20は、文字列MJ123について、領域A2において左揃えで、且つ、余白YKが2つ末尾に設定し、且つ、数値が米国通貨のフォーマットとなるよう設定することで、領域A3において文字列MJ123が図6に示す文字列MJ12cとなるように処理する。そして、印刷装置制御部20は、「12.00」を示す文字列MJ12cの画像データをプリントバッファー23に展開する。
印刷装置制御部20は、行印刷データID12について、タブ位置設定コマンドTC1、及び、設定コマンドSTC1による設定に基づいて画像データをプリントバッファー23に展開すると(ステップS5)、展開された画像データに基づいてロール紙に印刷を実行する(ステップS6)。これにより、ロール紙の1行に、文字列MJ12aと、文字列MJ12bと、文字列MJ12cとを含む文字列MJ12fが、図6に示す様式で印刷される。
印刷装置制御部20は、プリントバッファー23に展開された画像データに基づいて印刷を実行すると、プリントバッファー23に展開した画像データを消去する(ステップS7)。
印刷装置制御部20は、行印刷データID12について印刷を実行すると、印刷データが含む1又は複数の行印刷データの全てを対象にしていないと判別し(ステップS8:NO)、所定をステップS4に戻して、行印刷データID13を特定する。
印刷装置制御部20は、行印刷データID13を特定すると、最初の区切り領域である領域A1に印刷する文字列を行印刷データID13から特定する。図3に示す通り、行印刷データID13は、タブコマンドにより区切られている。この区切りは、タブ位置設定コマンドTC1による行の区切りと対応している。そのため、印刷装置制御部20は、最初の区切り領域である領域A1に印刷する文字列として、行印刷データID13から文字列MJ131を特定する。
印刷装置制御部20は、最初の区切り領域である領域A1に印刷する文字列として、文字列MJ131を特定すると、設定コマンドSTC1が指定する、最初の区切り領域に対応する区切り文字列のスタイルデータに基づいて、文字列MJ131を処理し、処理した画像データをプリントバッファー23に展開する。前述した通り、設定コマンドSTC1が指定しスタイルデータベース210記憶されている、最初の区切り領域に対応する区切り文字列のスタイルデータは、右揃えスタイルデータ、1マージンスタイルデータ、及び、整数フォーマットスタイルデータである。したがって、印刷装置制御部20は、文字列MJ131について、領域A1において右揃えで、且つ、文字列MJ131の末尾に1桁分の余白YKを設定し、且つ、整数のフォーマットとなるように設定することで、領域A1において、文字列MJ131が図6に示す文字列MJ13aとなるように処理する。そして、印刷装置制御部20は、「1」を示す文字列MJ13aの画像データをプリントバッファー23に展開する。
また、印刷装置制御部20は、中央の区切り領域である領域A2に印刷する文字列を行印刷データID13から特定する。印刷装置制御部20は、中央の区切り領域である領域A2に印刷する文字列として、行印刷データID13から文字列MJ132を特定する。
印刷装置制御部20は、中央の区切り領域である領域A2に印刷する文字列として、文字列MJ132を特定すると、設定コマンドSTC1が指定しスタイルデータベース210記憶されている、中央の区切り領域に対応する区切り文字列のスタイルデータに基づいて、文字列MJ132を処理し、処理した画像データをプリントバッファー23に展開する。前述した通り、設定コマンドSTC1が指定する、中央の区切り領域に対応する区切り文字列のスタイルデータは、左揃えスタイルデータ、マージン無スタイルデータ、及び、トリミングフォーマットスタイルデータである。したがって、印刷装置制御部20は、文字列MJ132について、領域A2において左揃えで、且つ、余白YKを設定せず、領域A2の桁数以下となるようにトリミングすることで、領域A2において文字列MJ132が図6に示す文字列MJ13bとなるように処理する。そして、印刷装置制御部20は、「Fresh Squeezed AAAAAA Juic」を示す文字列MJ13bの画像データをプリントバッファー23に展開する。
また、印刷装置制御部20は、最後の区切り領域である領域A3に印刷する文字列を行印刷データID13から特定する。印刷装置制御部20は、最後の区切り領域である領域A3に印刷する文字列として、行印刷データID13から文字列MJ133を特定する。
印刷装置制御部20は、最後の区切り領域である領域A3に印刷する文字列として、文字列MJ133を特定すると、設定コマンドSTC1が指定しスタイルデータベース210記憶されている、最後の区切り領域に対応する区切り文字列のスタイルデータに基づいて、文字列MJ133を処理し、処理した画像データをプリントバッファー23に展開する。前述した通り、設定コマンドSTC1が指定する、最後の区切り領域に対応する区切り文字列のスタイルデータは、右揃えスタイルデータ、2マージンスタイルデータ、及び、米国通貨フォーマットスタイルデータである。したがって、印刷装置制御部20は、文字列MJ133について、領域A2において左揃えで、且つ、余白YKを2つ末尾に設定し、且つ、数値が米国通貨のフォーマットとなるように設定することで、領域A3において文字列MJ133が図6に示す文字列MJ13cとなるように処理する。そして、印刷装置制御部20は、「6.00」を示す文字列MJ13cの画像データをプリントバッファー23に展開する。
印刷装置制御部20は、行印刷データID13について、タブ位置設定コマンドTC1、及び、設定コマンドSTC1の設定に基づいて画像データをプリントバッファー23に展開すると(ステップS5)、展開された画像データに基づいてロール紙に印刷を実行する(ステップS6)。これにより、ロール紙の1行に、文字列MJ13aと、文字列MJ13bと、文字列MJ13cとを含む文字列MJ13fが、図6に示す様式で印刷される。
印刷装置制御部20は、プリントバッファー23に展開された画像データに基づいて印刷を実行すると、プリントバッファー23に展開した画像データを消去する(ステップS7)。
印刷装置制御部20は、行印刷データID13について印刷を実行すると、印刷データが含む1又は複数の行印刷データの全てを対象にしていないと判別し(ステップS8:NO)、所定をステップS4に戻して、行印刷データID14を特定する。
印刷装置制御部20は、行印刷データID14を特定すると、最初の区切り領域である領域A1に印刷する文字列を行印刷データID14から特定する。図3に示す通り、行印刷データID14は、タブコマンドにより区切られている。この区切りは、タブ位置設定コマンドTC1による行の区切りと対応している。図3に示す通り、行印刷データID14は、最初の区切り領域である領域A1に印刷する文字列を有していない。そのため、印刷装置制御部20は、最初の区切り領域である領域A1に印刷する文字列が行印刷データID14にないと特定する。
印刷装置制御部20は、最初の区切り領域である領域A1に印刷する文字列が行印刷データID14にないと特定すると、中央の区切り領域である領域A2に印刷する文字列を行印刷データID14から特定する。印刷装置制御部20は、中央の区切り領域である領域A2に印刷する文字列として、行印刷データID14から文字列MJ141を特定する。
印刷装置制御部20は、中央の区切り領域である領域A2に印刷する文字列として、文字列MJ141を特定すると、設定コマンドSTC1が指定しスタイルデータベース210記憶されている、中央の区切り領域に対応する区切り文字列のスタイルデータに基づいて、文字列MJ141を処理し、処理した画像データをプリントバッファー23に展開する。前述した通り、設定コマンドSTC1が指定する、中央の区切り領域に対応する区切り文字列のスタイルデータは、左揃えスタイルデータ、マージン無スタイルデータ、及び、トリミングフォーマットスタイルデータである。したがって、印刷装置制御部20は、文字列MJ141について、領域A2において左揃えで、且つ、余白YKを設定せず、領域A2の桁数以下となるようにトリミングすることで、領域A2において文字列MJ141を図6に示す文字列MJ14aとなるように処理する。そして、印刷装置制御部20は、「Subtotal」を示す文字列MJ14aの画像データがプリントバッファー23に展開する。
また、印刷装置制御部20は、最後の区切り領域である領域A3に印刷する文字列を行印刷データID14から特定する。印刷装置制御部20は、最後の区切り領域である領域A3に印刷する文字列として、行印刷データID14から文字列MJ142を特定する。
印刷装置制御部20は、最後の区切り領域である領域A3に印刷する文字列として、文字列MJ142を特定すると、設定コマンドSTC1が指定しスタイルデータベース210記憶されている、最後の区切り領域に対応する区切り文字列のスタイルデータに基づいて、文字列MJ142を処理し、処理した画像データをプリントバッファー23に展開する。前述した通り、設定コマンドSTC1が指定する、最後の区切り領域に対応する区切り文字列のスタイルデータは、右揃えスタイルデータ、2マージンスタイルデータ、及び、米国通貨フォーマットスタイルデータである。したがって、印刷装置制御部20は、文字列MJ142について、領域A2において左揃えで、且つ、余白YKを2つ末尾に設定し、且つ、数値が米国通貨のフォーマットとなるように設定することで、領域A3において文字列MJ142が図6に示す文字列MJ14bとなるように処理する。そして、印刷装置制御部20は、「18.00」を示す文字列MJ14bの画像データをプリントバッファー23に展開する。
印刷装置制御部20は、行印刷データID14について、タブ位置設定コマンドTC1、及び、設定コマンドSTC1の設定に基づいて画像データをプリントバッファー23に展開すると(ステップS5)、展開された画像データに基づいてロール紙に印刷を実行する(ステップS6)。これにより、ロール紙の1行に、文字列MJ14aと、文字列MJ14bとを含む文字列MJ14fが、図6に示す様式で印刷される。
印刷装置制御部20は、プリントバッファー23に展開された画像データに基づいて印刷を実行すると、プリントバッファー23に展開した画像データを消去する(ステップS7)。
印刷装置制御部20は、行印刷データID14について印刷を実行すると、印刷データが含む1又は複数の行印刷データの全てを対象にしたと判別し(ステップS8:YES)、ロール紙を適切な位置でカットし(ステップS9)、図6に示すレシートR1を発行する。
このように、図6に示すレシートR1の発行をユーザーが所望する際、タブレット端末装置3にプリンタードライバーがインストールされていない場合、又は、プリンタードライバーを介さず、印刷データをタブレット端末装置3が送信する場合、アプリケー側では、図3に示す印刷データID1を図7に示す印刷データID2に変更する必要がある。
図7は、印刷データの一例を示す図である。
図7に示す印刷データID2は、行印刷データID21と、行印刷データID22と、行印刷データID23と、行印刷データID24とを含む。
行印刷データID21〜行印刷データID24のそれぞれは、タブコマンドと、改行コマンドと含む。図7では、タブコマンドは、「<HT>」と表記される。また、改行コマンドは、「<LF>」と表記される。
行印刷データID21は、「QTY△」を示す文字列MJ211と、「ITEM」を示す文字列MJ212と、「△△△△AMOUNT△△」を示す文字列MJ213とを含む。文字列MJ211と、文字列MJ212と、文字列MJ213とは、タブコマンドにより区切られている。図7において「△」は、空白を示す。
行印刷データID22は、「△△2△」を示す文字列MJ221と、「AAAA,BBBBBBB,and CCCCCC」を示す文字列MJ222と、「△△△△12.00△△」を示す文字列MJ223とを含む。文字列MJ221と、文字列MJ222と、文字列MJ223とは、タブコマンドにより区切られている。
行印刷データID23は、「△△1△」を示す文字列MJ231と、「Fresh Squeezed AAAAAA Juic」を示す文字列MJ232と、「△△△△△6.00△△」を示す文字列MJ233とを含む。文字列MJ231と、文字列MJ232と、文字列MJ233とは、タブコマンドにより区切られている。
行印刷データID24は、「Subtotal」を示す文字列MJ241と、「△△△△18.00△△」を示す文字列MJ242とを含む。文字列MJ241と文字列MJ242とは、タブコマンドにより区切られている。
このように、図6に示す印刷結果となるためには、図3に示す印刷データID1を図7に示す印刷データID2に変更することが必要となる。すなわち、領域A1に文字列MJ111と文字列MJ121と文字列MJ131とが右揃えとなり、且つ、文字列の末尾にマージンを設定するためには、文字列MJ211と文字列MJ221と文字列MJ231とに示すように、空白を適切に設定する必要がある。また、文字列MJ122と文字列MJ132とが領域A2の桁数に対する文字列とするためには、文字列MJ222と文字列MJ232とのように文字列をトリミングする必要がある。また、領域A3に文字列MJ113と文字列MJ123と文字列MJ133と文字列MJ142とが右揃えであって、且つ、文字列の末尾にマージンを設定し、所定のフォーマットとなるためには、文字列MJ211と文字列MJ221と文字列MJ231とに示すように、空白を適切に設定し、且つ、フォーマットも設定する必要がある。これでは、アプリケーション側で、ユーザーの手間がかかる。
そこで、プリンター2は、区切り領域ごとの順に区切り文字列のスタイルを設定可能な設定コマンドSTC1によりスタイルデータベース210に記憶したスタイルデータに基づいて、印刷データID1をタブコマンドの順に区切った区切り文字列に対応させて処理することにより、ユーザーの手間がかかることなく、ユーザーの所望する様式でレシートR1を発行できる。
次に、別の例を挙げて説明する。
<例2>
例2では、図8に示す印刷データID3、図9に示すタブ位置設定コマンドTC2、及び、図10に示す設定コマンドSTC2に基づいて、図11に示すレシートR2を発行する場合を例示する。なお、例2では、ロール紙の印刷面において1行に印刷可能な桁数を30桁とする。
図8は、印刷データの一例を示す図である。
図8に示す印刷データID3は、行印刷データID31と、行印刷データID32と、行印刷データID33とを含む。
行印刷データID31〜行印刷データID33のそれぞれは、タブコマンドと、改行コマンドと含む。図8では、タブコマンドは、「<HT>」と表記される。また、改行コマンドは、「<LF>」と表記される。
行印刷データID31は、「AAAABBBCCCバーガー」を示す文字列MJ311と、「1200」を示す文字列MJ312とを含む。文字列MJ311と、文字列MJ312とは、タブコマンドにより区切られている。したがって、文字列MJ311と、文字列MJ312とのそれぞれは、行印刷データID31が示す文字列がタブコマンドにより区切られた区切り文字列に相当する。なお、行印刷データID31が示す文字列とは、文字列MJ311と、文字列MJ312とを含む文字列のことである。
行印刷データID32は、「セットドリンクM」を示す文字列MJ321と、「300」を示す文字列MJ322とを含む。文字列MJ321と、文字列MJ322とは、タブコマンドにより区切られている。したがって、文字列MJ321と、文字列MJ322とのそれぞれは、行印刷データID32が示す文字列がタブコマンドにより区切られた区切り文字列に相当する。なお、行印刷データID32が示す文字列とは、文字列MJ321と、文字列MJ322とを含む文字列のことである。
行印刷データID33は、「合計」を示す文字列MJ331と、「1500」を示す文字列MJ332とを含む。文字列MJ331と、文字列MJ332とは、タブコマンドにより区切られている。したがって、文字列MJ331と、文字列MJ332とのそれぞれは、行印刷データID33が示す文字列がタブコマンドにより区切られた区切り文字列に相当する。なお、行印刷データID33が示す文字列とは、文字列MJ331と、文字列MJ332とを含む文字列のことである。
図9は、タブ位置設定コマンドの一例を示す図である。
図9に示すタブ位置設定コマンドTC2は、ロール紙の印刷面の1行分の領域において、行の左端から設定するタブ位置までの桁数を示す設定値を含む。ここでの桁数は、文字を半角で印刷する場合の桁数である。図9に示す通り、タブ位置設定コマンドTC2は、「21」を示す設定値ST3を含む。つまり、図9に示すタブ位置設定コマンドTC2は、タブ位置を、印刷面における1行分の領域において、行の左端から21桁目に設定することを指示するコマンドである。つまり、図9に示すタブ位置設定コマンドTC2は、例2において1行に印刷可能な桁数が30桁であるため、1桁目から20桁目までの領域と、21桁目から30桁目までの領域とに区切ることを指示するコマンドに相当する。この区切られた領域は、タブ位置により区切られた行の領域を示す区切り領域に相当する。
図10は、設定コマンドの一例を示す図である。
図10に示す設定コマンドSTC2は、スタイル設定値を含む。図10に示す設定コマンドSTC2は、「LN(2Y)(1T)S」を示すスタイル設定値SS4と、「RE(1Y)(1Y)¥」を示すスタイル設定値SS5とを含む。
「LN(2Y)(1T)S」を示すスタイル設定値SS4は、複数のスタイル設定値により構成される。すなわち、「LN(2Y)(1T)S」を示すスタイル設定値SS4は、「L」を示すスタイル設定値と、「N」を示すスタイル設定値と、「2Y」を示すスタイル設定値と、「1T」を示すスタイル設定値と、「S」を示すスタイル設定値とにより構成される。「L」を示すスタイル設定値は、左揃えスタイルデータを指定する設定値である。また、「N」を示すスタイル設定値は、区切り領域において、区切り文字列に所定の装飾を施さないスタイルデータ(以下、「装飾無スタイルデータ」と表現する)を指定する設定値である。また、「2Y」を示すスタイル設定値は、区切り領域において、区切り文字列の文字サイズを横2倍角に設定するスタイルデータ(以下、「横2倍角スタイルデータ」と表現する)を指定する設定値である。なお、横2倍角とは、文字のサイズを、行方向に半角のサイズの2倍にすることである。「1T」を示すスタイル設定値は、区切り領域において、区切り文字列の文字サイズを縦1倍角に設定するスタイルデータ(以下、「縦1倍角スタイルデータ」と表現する)を指定する設定値である。なお、縦1倍角とは、文字のサイズを、行方向と直交する方向に半角のサイズの1倍にすることである。「S」を示すスタイル設定値は、トリミングスタイルデータを指定する設定値である。
「RE(1Y)(1Y)¥」を示すスタイル設定値SS5は、複数のスタイル設定値により構成される。すなわち、「RE(1Y)(1Y)¥」を示すスタイル設定値SS5は、「R」を示すスタイル設定値と、「E」を示すスタイル設定値と、「1Y」を示すスタイル設定値と、「1T」を示すスタイル設定値と、「¥」を示すスタイル設定値とにより構成される。「R」を示すスタイル設定値は、右揃えスタイルデータを指定する設定値である。また、「E」を示すスタイル設定値は、区切り領域において、区切り文字列に所定の強調を施すスタイルデータ(以下、「強調スタイルデータ」と表現する)を指定する設定値である。また、「1Y」を示すスタイル設定値は、区切り領域において、区切り文字列の文字サイズを横1倍角に設定するスタイルデータ(以下、「横1倍角スタイルデータ」と表現する)を指定する設定値である。なお、横1倍角とは、文字のサイズを、行方向に半角のサイズの1倍にすることである。「1T」を示すスタイル設定値は、縦1倍角スタイルデータを指定する設定値である。「¥」を示すスタイル設定値は、区切り文字列が数字である場合、区切り領域において、当該数字を日本通貨のフォーマットに設定するスタイルデータ(以下、「日本通貨スタイルデータ」と表現する)を指定する設定値である。
図10に示す設定コマンドSTC2が示す通り、スタイル設定値SS4と、スタイル設定値SS5とは、「;」で区切られている。「;」はタブ位置設定コマンドTC2により設定されるタブ位置に対応するものである。これは、スタイル設定値SS4が、タブ位置設定コマンドTC2により区切られる区切り領域のうち、最初の区切り領域に対応する区切り文字列のスタイルデータを指定することを示している。また、これは、スタイル設定値SS5が、タブ位置設定コマンドTC2により区切られる区切り領域のうち、最後の区切り領域に対応する区切り文字列のスタイルデータを指定することを示している。
印刷装置制御部20は、タブレット端末装置3から設定コマンドSTC2と、印刷データID3とを受信すると(ステップS1:YES)、設定コマンドSTC2が指定するスタイルデータをそれぞれ印刷装置記憶部21に記憶されているタブ位置と対応付けて記憶する(ステップS2)。この場合、最初にタブ位置設定コマンドTC1を受信してもよい。タブ位置設定コマンドTC1により設定されたタブ位置の情報は印刷装置記憶部21に記憶される。なお、印刷装置記憶部21には予めタブ位置の初期値の情報が記憶されている。前述した通り、設定コマンドSTC2は、スタイル設定値SS4と、スタイル設定値SS5を含む。
したがって、印刷装置制御部20は、スタイル設定値SS4に基づいて、左揃えスタイルデータと、装飾無タイルデータと、横2倍角スタイルデータと、縦1倍角スタイルデータと、トリミングスタイルデータとを、印刷装置記憶部21が記憶するスタイルデータベース210から対応するタブ位置情報と共に読み出して取得する。また、印刷装置制御部20は、スタイル設定値SS5に基づいて、右揃えスタイルデータと、強調スタイルデータと、横1倍角スタイルデータと、縦1倍角スタイルデータと、日本通貨スタイルデータとを、印刷装置記憶部21が記憶するスタイルデータベース210から対応するタブ位置情報と共に読み出して取得する。
印刷装置制御部20は、タブレット端末装置3から受信した印刷データID3を受信バッファー24から読み出す(ステップS3)と、印刷データID3が有する行印刷データID31〜行印刷データID33のうち、ステップS5〜ステップS7の処理の対象となる行印刷データを特定する(ステップS4)。
印刷装置制御部20は、印刷データID3を受信バッファー24から読み出してから、初めて行印刷データを特定する場合、まず、行印刷データID31を特定する。
次いで、印刷装置制御部20は、タブ位置設定コマンドTC2により印刷装置記憶部21に記憶されているタブ位置情報、設定コマンドSTC2によりスタイルデータベース210に記憶されているスタイルデータ、及び、ステップS4で特定したタブコマンドを含む行印刷データID31に基づいて、画像データを生成しプリントバッファー23に展開する(ステップS5)。
ここでステップS5について、詳述する。
図11は、印刷結果の一例を示す図であり、特に、図8に示す印刷データID3、図9に示すタブ位置設定コマンドTC2、及び、図10に示す設定コマンドSTC2に基づく印刷結果を示す図である。
印刷装置制御部20は、タブ位置設定コマンドTC2に基づいて、最初の区切り領域と、及び、最後の区切り領域とを特定する。前述した通り、タブ位置設定コマンドTC2は、タブ位置を、行の左端から21桁目に設定することを指示するコマンドであり、タブ位置情報は印刷装置記憶部21に記憶される。印刷装置制御部20は、行の始端である左端から20桁目まで、すなわち、行の始端から最初のタブ位置までを、最初の区切り領域として特定する。図11の場合、印刷装置制御部20は、領域A4を最初の区切り領域として特定する。また、印刷装置制御部20は、行の21桁目から行の右端まで、すなわち、最初のタブ位置から行の終端までを、最後の区切り領域として特定する。この場合、最初のタブ位置は、最後のタブ位置に相当する。図10の場合、印刷装置制御部20は、領域A5を最後の区切り領域として特定する。
次いで、印刷装置制御部20は、最初の区切り領域である領域A1に印刷する文字列を行印刷データID31から特定する。図3に示す通り、行印刷データID31は、印刷装置記憶部21に記憶されているタブ位置情報に基づき、印刷位置を順に移動させるタブコマンドにより区切られている。印刷装置制御部20は、タブコマンドによりプリントバッファー23に展開する位置を順に移動させ、印刷結果に反映させている。この区切りは、タブ位置設定コマンドによる行の区切りと対応している。そのため、印刷装置制御部20は、最初の区切り領域である領域A4に印刷する文字列として、行印刷データID31から文字列MJ311を特定する。
印刷装置制御部20は、最初の区切り領域である領域A4に印刷する文字列として、文字列MJ311を特定すると、設定コマンドSTC2が指定しスタイルデータベース210に記憶されている、最初の区切り領域に対応する区切り文字列のスタイルデータに基づいて、文字列MJ311を処理し、処理した画像データをプリントバッファー23に展開する。前述した通り、設定コマンドSTC2が指定する、最初の区切り領域に対応する区切り文字列のスタイルデータは、左揃えスタイルデータ、装飾無スタイルデータ、横2倍角スタイルデータ、縦1倍角スタイルデータ、及び、トリミングスタイルデータである。したがって、印刷装置制御部20は、文字列MJ311について、左揃えで、且つ、所定の装飾が施されず、且つ、文字サイズが横2倍角の縦1倍角であり、且つ、文字サイズを横2倍角の縦1倍角にした場合において領域A4に印刷可能な桁数以下となるようにトリミングを行うことで、領域A4において文字列MJ311が図11の「AAAAB」を示す文字列MJ31aとなるように処理する。そして、印刷装置制御部20は、文字列MJ31aの画像データをプリントバッファー23に展開する。
また、印刷装置制御部20は、最後の区切り領域である領域A5に印刷する文字列を行印刷データID31から特定する。印刷装置制御部20は、最後の区切り領域である領域A5に印刷する文字列として、行印刷データID31から文字列MJ312を特定する。
印刷装置制御部20は、最後の区切り領域である領域A5に印刷する文字列として、文字列MJ312を特定すると、設定コマンドSTC2が指定しスタイルデータベース210に記憶されている、最後の区切り領域に対応する区切り文字列のスタイルデータに基づいて、文字列MJ312を処理し、処理した画像データをプリントバッファー23に展開する。前述した通り、設定コマンドSTC2が指定する、最後の区切り領域に対応する区切り文字列のスタイルデータは、右揃えスタイルデータ、強調スタイルデータ、横1倍角スタイルデータ、縦1倍角スタイルデータ、及び、日本通貨フォーマットスタイルデータである。したがって、印刷装置制御部20は、文字列MJ312について、右揃えで、且つ、所定の強調が施され、且つ、文字サイズが横1倍角の縦1倍角であり、且つ、日本円のフォーマットとなるように設定することで、領域A5において文字列MJ312が、図11に示す文字列MJ31bとなるように処理する。そして、印刷装置制御部20は、「¥1,200」を示す文字列31bの画像データをプリントバッファー23に展開する。
印刷装置制御部20は、行印刷データID31について、タブ位置設定コマンドTC2、及び、設定コマンドSTC2による設定に基づいて画像データをプリントバッファー23に展開すると(ステップS5)、展開された画像データに基づいてロール紙に印刷を実行する(ステップS6)。これにより、ロール紙の1行に、文字列MJ31aと、文字列MJ31bとを含む文字列MJ31fが、図11に示す様式で印刷される。
印刷装置制御部20は、プリントバッファー23に展開された画像データに基づいて印刷を実行すると、プリントバッファー23に展開した画像データを消去する(ステップS7)。
印刷装置制御部20は、行印刷データID31について印刷を実行すると、印刷データが含む1又は複数の行印刷データの全てを対象にしていないと判別し(ステップS8:NO)、所定をステップS4に戻して、行印刷データID32を特定する。
印刷装置制御部20は、行印刷データID32を特定すると、最初の区切り領域である領域A4に印刷する文字列を行印刷データID32から特定する。図8に示す通り、行印刷データID32は、タブコマンドにより区切られている。この区切りは、タブ位置設定コマンドによる行の区切りと対応している。そのため、印刷装置制御部20は、最初の区切り領域である領域A4に印刷する文字列として、行印刷データID32から文字列MJ321を特定する。
印刷装置制御部20は、最初の区切り領域である領域A4に印刷する文字列として、文字列MJ321を特定すると、設定コマンドSTC2が指定する、最初の区切り領域に対応する区切り文字列のスタイルデータに基づいて、文字列MJ321を処理し、処理した画像データをプリントバッファー23に展開する。前述した通り、設定コマンドSTC2が指定しスタイルデータベース210に記憶されている、最初の区切り領域に対応する区切り文字列のスタイルデータは、左揃えスタイルデータ、装飾無スタイルデータ、横2倍角スタイルデータ、縦1倍角スタイルデータ、及び、トリミングスタイルデータである。したがって、印刷装置制御部20は、文字列MJ321について、左揃えで、且つ、所定の装飾が施されず、且つ、文字サイズが横2倍角の縦1倍角であり、且つ、文字サイズを横2倍角の縦1倍角にした場合において領域A4に印刷可能な桁数以下となるようにトリミングを行うことで、領域A4において文字列MJ321が図11の「セットドリ」を示す文字列MJ32aとなるように処理する。そして、印刷装置制御部20は、文字列MJ32aの画像データをプリントバッファー23に展開する。
また、印刷装置制御部20は、最後の区切り領域である領域A5に印刷する文字列を行印刷データID32から特定する。印刷装置制御部20は、最後の区切り領域である領域A5に印刷する文字列として、行印刷データID32から文字列MJ322を特定する。
印刷装置制御部20は、最後の区切り領域である領域A5に印刷する文字列として、文字列MJ322を特定すると、設定コマンドSTC2が指定しスタイルデータベース210に記憶されている、最後の区切り領域に対応する区切り文字列のスタイルデータに基づいて、文字列MJ322を処理し、処理した画像データをプリントバッファー23に展開する。前述した通り、設定コマンドSTC2が指定する、最後の区切り領域に対応する区切り文字列のスタイルデータは、右揃えスタイルデータ、強調スタイルデータ、横1倍角スタイルデータ、縦1倍角スタイルデータ、及び、日本通貨フォーマットスタイルデータである。したがって、印刷装置制御部20は、文字列MJ322について、右揃えで、且つ、所定の強調が施され、且つ、文字サイズが横1倍角の縦1倍角であり、且つ、日本円のフォーマットとなるように設定することで、領域A5において文字列MJ322が図11の「¥300」を示す文字列MJ32bとなるように処理する。そして、印刷装置制御部20は、文字列32bの画像データをプリントバッファー23に展開する。
印刷装置制御部20は、行印刷データID32について、タブ位置設定コマンドTC2、及び、設定コマンドSTC2の設定に基づいて画像データをプリントバッファー23に展開すると(ステップS5)、展開された画像データに基づいてロール紙に印刷を実行する(ステップS6)。これにより、ロール紙の1行に、文字列MJ32aと、文字列MJ32bとを含む文字列MJ32fが、図11に示す様式で印刷される。
印刷装置制御部20は、プリントバッファー23に展開された画像データに基づいて印刷を実行すると、プリントバッファー23に展開した画像データを消去する(ステップS7)。
印刷装置制御部20は、行印刷データID32について印刷を実行すると、印刷データが含む1又は複数の行印刷データの全てを対象にしていないと判別し(ステップS8:NO)、所定をステップS4に戻して、行印刷データID33を特定する。
印刷装置制御部20は、行印刷データID33を特定すると、最初の区切り領域である領域A4に印刷する文字列を行印刷データID33から特定する。図8に示す通り、行印刷データID33は、タブコマンドにより区切られている。この区切りは、タブ位置設定コマンドによる行の区切りと対応している。そのため、印刷装置制御部20は、最初の区切り領域である領域A4に印刷する文字列として、行印刷データID33から文字列MJ331を特定する。
印刷装置制御部20は、最初の区切り領域である領域A4に印刷する文字列として、文字列MJ331を特定すると、設定コマンドSTC2が指定しスタイルデータベース210に記憶されている、最初の区切り領域に対応する区切り文字列のスタイルデータに基づいて、文字列MJ331を処理し、処理した画像データをプリントバッファー23に展開する。前述した通り、設定コマンドSTC2が指定する、最初の区切り領域に対応する区切り文字列のスタイルデータは、左揃えスタイルデータ、装飾無スタイルデータ、横2倍角スタイルデータ、縦1倍角スタイルデータ、及び、トリミングスタイルデータである。したがって、印刷装置制御部20は、文字列MJ331について、左揃えで、且つ、所定の装飾が施されず、且つ、文字サイズが横2倍角の縦1倍角であり、且つ、文字サイズを横2倍角の縦1倍角にした場合において領域A4に印刷可能な桁数以下となるようにトリミングを行うことで、領域A4において文字列MJ331が図11の「合計」を示す文字列MJ33aとなるように処理する。そして、印刷装置制御部20は、文字列MJ33aの画像データをプリントバッファー23に展開する。
また、印刷装置制御部20は、最後の区切り領域である領域A5に印刷する文字列を行印刷データID33から特定する。印刷装置制御部20は、最後の区切り領域である領域A5に印刷する文字列として、行印刷データID33から文字列MJ332を特定する。
印刷装置制御部20は、最後の区切り領域である領域A5に印刷する文字列として、文字列MJ332を特定すると、設定コマンドSTC2が指定しスタイルデータベース210に記憶されている、最後の区切り領域に対応する区切り文字列のスタイルデータに基づいて、文字列MJ332を処理し、処理した画像データをプリントバッファー23に展開する。前述した通り、設定コマンドSTC2が指定する、最後の区切り領域に対応する区切り文字列のスタイルデータは、右揃えスタイルデータ、強調スタイルデータ、横1倍角スタイルデータ、縦1倍角スタイルデータ、及び、日本通貨フォーマットスタイルデータである。したがって、印刷装置制御部20は、文字列MJ332について、右揃えで、且つ、所定の強調が施され、且つ、文字サイズが横1倍角の縦1倍角であり、且つ、日本円のフォーマットとなるように設定することで、領域A5において文字列MJ332が図11の「¥1、500」を示す文字列MJ33bとなるように処理する。そして、印刷装置制御部20は、文字列33bの画像データをプリントバッファー23に展開する。
印刷装置制御部20は、行印刷データID33について、タブ位置設定コマンドTC2、及び、設定コマンドSTC2の設定に基づいて画像データをプリントバッファー23に展開すると(ステップS5)、展開された画像データに基づいてロール紙に印刷を実行する(ステップS6)。これにより、ロール紙の1行に、文字列MJ33aと、文字列MJ33bとを含む文字列MJ33fが、図11に示す様式で印刷される。
印刷装置制御部20は、プリントバッファー23に展開された画像データに基づいて印刷を実行すると、プリントバッファー23に展開した画像データを消去する(ステップS7)。
印刷装置制御部20は、行印刷データID33について印刷を実行すると、印刷データID3が含む1又は複数の行印刷データの全てを対象にしたと判別し(ステップS8:YES)、ロール紙を適切な位置でカットし(ステップS9)、図11に示すレシートR2を発行する。
このように、図11に示すレシートR2の発行をユーザーが所望する際、タブレット端末装置3にプリンタードライバーがインストールされていない場合、又は、プリンタードライバーを介さず、印刷データをタブレット端末装置3が送信する場合、アプリケー側では、図8に示す印刷データID3を図12に示す印刷データID4に変更する必要がある。
図12は、印刷データの一例を示す図である。
図12に示す印刷データID4は、行印刷データID41と、行印刷データID42と、行印刷データID43とを含む。
行印刷データID41〜行印刷データID43のそれぞれは、タブコマンドと、改行コマンドと含む。図9では、タブコマンドは、「<HT>」と表記される。また、改行コマンドは、「<LF>」と表記される。
行印刷データID41は、「AAAAB」を示す文字列MJ411と、「△△△△¥1、200」を示す文字列MJ412とを含む。文字列MJ411と、文字列MJ412とは、タブコマンドにより区切られている。図12において「△」は、空白を示す。また、行印刷データID41は、文字のサイズを設定する文字サイズ設定コマンドSHCを含む。行印刷データID41が含む文字サイズ設定コマンドSHCは、文字列MJ411を横2倍角で印刷することを指示するコマンドである。また、行印刷データID41は、文字を強調して印刷することを示す強調コマンドKCを含む。行印刷データID41が含む強調コマンドKCは、文字列MJ412に対して所定の強調を施すことを指示するコマンドである。
行印刷データID42は、「セットドリ」を示す文字列MJ421と、「△△△△△△¥300」を示す文字列MJ422とを含む。文字列MJ421と、文字列MJ422とは、タブコマンドにより区切られている。また、行印刷データID42は、文字サイズ設定コマンドSHCを含む。行印刷データID42が含む文字サイズ設定コマンドSHCは、文字列MJ421を横2倍角で印刷することを指示するコマンドである。また、行印刷データID42は、強調コマンドKCを含む。行印刷データID42が含む強調コマンドKCは、文字列MJ422に対して所定の強調を施すことを指示するコマンドである。
行印刷データID43は、「合計」を示す文字列MJ431と、「△△△△¥1、5000」を示す文字列MJ432とを含む。文字列MJ431と、文字列MJ432とは、タブコマンドにより区切られている。また、行印刷データID43は、文字サイズ設定コマンドSHCを含む。行印刷データID43が含む文字サイズ設定コマンドSHCは、文字列MJ431を横2倍角で印刷することを指示するコマンドである。また、行印刷データID43は、強調コマンドKCを含む。行印刷データID43が含む強調コマンドKCは、文字列MJ432に対して所定の強調を施すことを指示するコマンドである。
このように、図12に示す印刷結果となるためには、図8に示す印刷データを図12に示す印刷データに変更することが必要となる。すなわち、領域A4に文字列MJ311と文字列MJ321と文字列MJ331とが横2倍角で且つ領域A4の桁数に対応する文字列とするためには、文字列MJ411と文字列MJ421とのように文字列をトリミングし、文字サイズ設定コマンドSHCを行印刷データID41〜行印刷データID43のそれぞれに挿入する必要がある。また、領域A5に文字列MJ312と文字列MJ322と文字列MJ332とが右揃えであって、且つ、日本通貨のフォーマットとなり、且つ、所定の強調を施すためには、文字列MJ412と文字列MJ422と文字列MJ432とに示すように、空白を適切に設定し、且つ、日本通貨のフォーマットとなるよう文字列を設定し、且つ、強調コマンドKCを行印刷データID41〜行印刷データID43のそれぞれに挿入する必要がある。これでは、アプリケーション側で行ごとに行う必要があり、ユーザーの手間がかかる。
そこで、プリンター2は、区切り領域ごとに区切り文字列のスタイルを設定可能な設定コマンドSTC2により記憶したスタイルデータに基づいて、所望する区切り領域を指定するタブコマンドを挿入した印刷データID3を処理することにより、ユーザーの手間がかかることなく、ユーザーの所望する様式でレシートR2を発行できる。一度、設定コマンドSTC2を送信するだけでよく、以降はタブコマンドを挿入した印刷データID3を送信すれば、所望のスタイルで印刷できる。
<例1>及び<例2>で説明したように、プリンター2は、区切り文字列のスタイル(様式)を設定可能な設定コマンドによりスタイルデータを記憶し、印刷データと印刷データに挿入されているタブコマンドに基づいて、対応する区切り領域ごとに印刷データを処理することで、ユーザーの所望する様式でレシートを発行できる。特に、アプリケーションは、タブレット端末装置3をユーザーが操作して入力した商品コードから商品マスターを参照して取得した商品名や、個数などの文字列に、タブコマンドを挿入してプリンター2へ送信するだけでよい。予めタブ位置設定コマンドにより所望する位置にタブを設定しておき、設定コマンドにより対応する位置と範囲において設定された、所望する様式となって印刷できる。アプリケーション(ユーザー)で行ごとにスタイルを指定するコマンドを送るといった手間をかける必要がない。また、タブ位置設定コマンドに対応する設定コマンドとは、タブ位置設定コマンドによりタブ位置を設定し、このタブ位置により区切られて構成される区切り領域のそれぞれに対応するスタイルを設定する設定コマンドのことである。したがって、タブレット端末装置3にプリンタードライバーがインストールされていない場合、又は、タブレット端末装置3がプリンタードライバーを介さず印刷データを送信する場合でも、ユーザーの手間がかかることなく、ユーザーが所望する様式でレシートを発行できる。
また、<例1>及び<例2>で説明したように、印刷装置制御部20は、タブ位置設定コマンドにより設定されたタブ位置に基づいて、行の左端から最初のタブ位置までを最初の区切り領域として、最後のタブ位置から行の右端までを最後の区切り領域としている。このように、印刷装置制御部20は、最初の区切り領域と、最後の区切り領域とを設定することで、1行に印刷すべき行印刷データを適切に1行に印刷でき、ユーザーの所望する様式で印刷できる。例えば、最初の区切り領域を設定しない場合、印刷装置制御部20は、最初の区切り領域がどの区切り領域であるかの判別が容易でなくなり、例えば、1の区切り領域分空けて印刷を開始してしまい、行印刷データが含む文字列が1行に入りきらない等、ユーザーの所望する様式と異なる様式で印刷を実行する可能性がある。また、最後の区切り領域を設定しない場合、印刷装置制御部20は、最後の区切り領域がどの区切り領域であるかの判別が容易でなくなり、例えば、本来1行で印刷すべき行印刷データを複数の行で印刷してしまう等、ユーザーの所望する様式と異なる様式で印刷を実行する可能性がある。このように、区切り領域ごとに、区切り文字列をスタイルデータで処理する構成において、最初の区切り領域と最後の区切り領域とを設定することで、1行で印刷すべき行印刷データを適切に1行で印刷でき、ユーザーの所望する様式で印刷できる。
なお、上述したように、レシートにおいて、金額を示す文字列は、ロール紙の印刷面の右寄り印刷され、商品名など何の金額であるかを示す文字列は、ロール紙の印刷面の左寄りに印刷される。しかしながら、文字列によっては、ロール紙の印刷面の右寄りや、左寄り、中央寄り等の指定がなく印刷されてもよいものがある。このような文字列としては、例えば、レシートを発行する業態の名前や、レシートを発行するプリンターが載置されるレジの担当者名、所定の告知情報等を示す文字列が挙げられる。
そこで、印刷装置制御部20は、タブ位置設定コマンドによりタブ位置が設定されていない場合、行の左端から右端までの区切り領域として、スタイルデータに基づく処理を実行する。これにより、タブ位置設定コマンドでタブ位置を設定しないようにすれば、ロール紙の印刷面の右寄りや、左寄り、中央寄り等の指定がなく印刷されてよい文字列を、行に対して印刷できる。したがって、ユーザーは、タブ位置を設定しないだけで、スタイルデータに基づいて処理されたこのような文字列を、ロール紙に印刷できる。つまり、印刷装置制御部20は、タブ位置が設定されていない場合、行の左端から右端までを区切り領域として、スタイルデータに基づく処理を実行することで、ユーザーの手間がかかることなく、ユーザーの所望する様式で印刷できる。
また、タブ位置設定コマンドによっては、1行の印刷可能な桁数(印刷可能桁数)を上回る位置にタブ位置が設定されることが考えられる。このような場合、印刷装置制御部20は、印刷結果が複数の行となるように処理を実行する。
このことについて詳述する。ここで、1行に印刷可能な桁数を、30桁として詳述する。
図13は、タブ位置設定コマンドの一例を示す図である。
図13に示すタブ位置設定コマンドTC3は、ロール紙の印刷面の1行分の領域において、行の左端から設定するタブ位置までの桁数を示す設定値を含む。ここでの桁数は、文字を半角で印刷する場合の桁数である。図13に示す通り、タブ位置設定コマンドTC3は、「21」を示す設定値ST4と、「51」を示す設定値ST5とを含む。つまり、図13に示すタブ位置設定コマンドTC3は、タブ位置を、印刷面における1行分の領域の左端から、21桁目と、51桁目とに設定することを指示するコマンドである。
しかしながら、1行に印刷可能な桁数を30桁としているため、設定値ST5が示すタブ位置は、1行の印刷可能桁数を上回った位置に設定されていることになる。この場合、印刷装置制御部20は、2行を区切り領域を設定する行とする。すなわち、1行目の1桁から20桁までを最初の区切り領域し、1行目の21桁目から30桁目、及び、2行目の1桁目から20桁目までを中央の区切り領域とし、2行目の21桁目から30桁目までを最後の区切り領域とする。なお、2行を1行として換算した場合、2行目の21桁目は、1行の50桁目に相当する。
このようなタブ位置設定コマンドTC3と、図14に示す印刷データID4とに基づいて印刷を実行すると、印刷装置制御部20は、図15に示す印刷結果を出力する。
図14は、印刷データの一例を示す図である。
図14に示す印刷データID5は、行印刷データID51を含む。
行印刷データID51は、タブコマンドと、改行コマンドと含む。図15では、タブコマンドは、「<HT>」と表記される。また、改行コマンドは、「<LF>」と表記される。
行印刷データID51は、「AAAABBBBCCCCDDDD」を示す文字列MJ511と、「AAAABBBBCCCCバーガー」を示す文字列MJ512と、「500」を示す文字列MJ513とを含む。文字列MJ511と、文字列MJ512と、文字列MJ513とは、タブコマンドにより区切られている。したがって、文字列MJ511と、文字列MJ512と、文字列MJ513とのそれぞれは、行印刷データID51が示す文字列がタブコマンドにより区切られた区切り文字列に相当する。なお、行印刷データID51が示す文字列とは、文字列MJ511と、文字列MJ512と、文字列MJ513とを含む文字列のことである。
図15は、印刷結果の一例を示す図である。
前述した通り、タブ位置が1行の印刷可能桁数を上回った位置に設定されている場合、印刷装置制御部20は、2行を、区切り領域を設定する行とする。すなわち、印刷装置制御部20は、1行目の1桁から20桁までを最初の区切り領域し、1行目の21桁目から30桁目、及び、2行目の1桁目から20桁目までを中央の区切り領域とし、2行目の21桁目から30桁目までを最後の区切り領域とする。
そのため、図15に示すように、印刷装置制御部20は、印刷データID5の文字列MJ511を、1行目の1桁目から20桁目までの領域に印刷する。また、印刷装置制御部20は、印刷データID5の文字列MJ512を、1行目の21桁目から30桁目の領域、及び、2行目の1桁目から20桁目までの領域に分けて印刷する。また、印刷データID5の文字列MJ513を、2行目の21桁目から30桁目までの領域に印刷する。
このように、タブ位置設定コマンドにより、1行の印刷可能桁数を上回る位置にタブ位置が設定される場合、印刷装置制御部20は、印刷結果が複数の行となるように処理を実行する。ところで、ユーザーによっては、レシートに、金額を示す文字列、商品名を示す文字列、及び、商品のシリアル番号を示す文字列等のように、1の内容に対して種々の文字列をトリミングすることなく印刷を望む場合がある。このような場合、タブ位置を1行に印刷可能な桁数を上回る位置に設定することで、印刷装置制御部20は、印刷結果を複数の行で印刷するため、ユーザーの所望する様式で印刷できる。
以上、説明したように、プリンター2(印刷装置)は、タブ位置により区切られた行の領域を示す区切り領域ごとに文字列のスタイルを設定可能な設定コマンドと、タブ位置への移動を実行するタブコマンドと当該タブコマンドにより区切られた区切り文字列を受信する印刷装置通信部25(通信部)と、スタイルデータ(スタイルを示す情報)を記憶する印刷装置記憶部21(記憶部)と、区切り文字列に対して対応する区切り領域のスタイルに基づいて処理を実行する印刷装置制御部20(制御部)と、印刷装置制御部20により処理された文字列を印刷する印刷部22と、を備える。
これにより、印刷装置制御部20は、区切り領域ごとに、区切り領域に対応する区切り文字列に対して、設定されたスタイルに基づいて処理を実行し、処理が実行された文字列を印刷するため、ユーザーの手間がかかることなく、ユーザーの所望する様式で印刷できる。そのため、タブレット端末装置3にプリンタードライバーがインストールされていない場合や、プリンタードライバーを介すことなく、印刷データを送信した場合であっても、プリンター2は、ユーザーが所望する様式で印刷できる。つまり、プリンタードライバーを使用しない環境であっても、プリンター2は、タブコマンドで区切られた区切り文字列を含む印刷データを受信すれば、ユーザーの所望する様式で印刷できる。したがって、ユーザーは、タブ位置設定コマンドに対応する設定コマンドを適切に設定するだけでよく、アプリケーション側でコマンドを挿入したり変更したりといった操作を行わなくてもよい。また、本実施形態では、印刷データは、文字列がタブコマンドで区切られたデータであり、簡易なデータである。したがって、ユーザーは、容易に印刷データの編集が可能となる。
また、印刷装置制御部20は、設定されたタブ位置に基づき、行の左端(始端)から最初のタブ位置までの区切り領域を、最初の前記区切り領域とし、また、最後の前記タブ位置から行の右端(終端)までの区切り領域を、最後の前記区切り領域として、スタイルに基づく処理を実行する。
前述した通り、最初の区切り領域を設定しない場合、印刷装置制御部20は、最初の区切り領域がどの区切り領域であるかの判別が容易でなくなり、例えば、1の区切り領域分空けて印刷を開始してしまい、行印刷データが含む文字列が1行に入りきらない等、ユーザーの所望する様式と異なる様式で印刷を実行する可能性がある。また、最後の区切り領域を設定しない場合、印刷装置制御部20は、最後の区切り領域がどの区切り領域であるかの判別が容易でなくなり、例えば、本来1行で印刷すべき行印刷データを複数の行で印刷してしまう等、ユーザーの所望する様式と異なる様式で印刷を実行する可能性がある。そこで、このように、区切り領域ごとに、区切り文字列をスタイルデータで処理する構成において、最初の区切り領域と最後の区切り領域とを設定することで、1行で印刷すべき行印刷データを適切に1行で印刷でき、ユーザーの所望する様式で印刷できる。
また、印刷装置制御部20は、タブ位置が設定されていない場合、行の左端から右端までの領域を、区切り領域として、スタイルに基づいて処理を実行する。
前述した通り、文字列によっては、ロール紙の印刷面の右寄りや、左寄り、中央寄り等の指定がなく印刷されてもよいものがある。そこで、印刷装置制御部20は、タブ位置設定コマンドによりタブ位置が設定されていない場合、行の左端から右端までの区切り領域として、スタイルデータに基づく処理を実行する。これにより、タブ位置設定コマンドでタブ位置を設定しないようにすれば、ロール紙の印刷面の右寄りや、左寄り、中央寄り等の指定がなく印刷されてよい文字列を、行に対して印刷できる。したがって、ユーザーは、タブ位置を設定しないだけで、スタイルデータに基づいて処理されたこのような文字列を、印刷位置を指定することなく、ロール紙に印刷できる。つまり、印刷装置制御部20は、ユーザーの手間がかかることなく、ユーザーの所望する様式で印刷できる。
スタイルデータは、少なくとも、位置揃え、マージン、文字装飾、及び文字サイズのいずれかを設定する情報である。
このように、スタイルデータは、少なくとも、位置揃え、マージン、文字装飾、及び文字サイズのいずれかを設定する情報であるため、印刷装置制御部20は、区切り領域ごとに、区切り領域に対応する区切り文字列に対して、位置揃え、マージン、文字装飾、及び文字サイズのいずれかを設定でき、ユーザーの所望する様式で印刷できる。
また、スタイルデータは、少なくとも、文字列のトリミング、及び、数値フォーマットのいずれかを設定する情報である。
このように、スタイルデータは、少なくとも、文字列のトリミング、及び、数値フォーマットのいずれかを設定する情報であるため、印刷装置制御部20は、区切り領域ごとに、区切り領域に対応する区切り文字列に対して、少なくとも、文字列のトリミング、及び数値フォーマットのいずれかを設定でき、ユーザーの所望する様式で印刷できる。
また、印刷装置制御部20は、1行に印刷可能な桁数(印刷可能桁数)を上回る位置にタブ位置が設定されている場合、印刷部22による印刷結果が複数の行となるように処理を実行する。
前述した通り、ユーザーによっては、レシートに、金額を示す文字列、商品名を示す文字列、及び、商品のシリアル番号を示す文字列等のように、1の内容に対して種々の文字列をトリミングすることなく印刷を望む場合がある。このような場合、タブ位置を1行に印刷可能な桁数を上回る位置に設定することで、印刷装置制御部20は、印刷結果を複数の行で印刷するため、1の内容に対して種々の文字列をトリミングすることなく印刷が実行でき、ユーザーの所望する様式で印刷できる。
また、印刷部は、ロール紙(印刷媒体)を切断するカッターを有し、カッターにより切断したロール紙をレシートとして発行する。
これにより、印刷装置制御部20は、印刷部22がロール紙をレシートとして発行するため、ユーザーの手間がかかることなく、ユーザーの所望する様式でレシートを発行できる。
なお、上述した実施形態は、あくまでも本発明の一態様を示すものであり、本発明の範囲内で任意に変形及び応用が可能である。
例えば、プリンター2は、タブ位置設定コマンドTC1〜TC3のそれぞれを印刷装置記憶部21が記憶している構成でもよく、タブ位置設定コマンドTC1〜TC3のそれぞれをタブレット端末装置3から取得する構成でもよい。
また、例えば、上述したプリンター2の制御方法(印刷装置の制御方法)が、プリンター2が備えるコンピューターを用いて実現される場合、本発明を、上記制御方法を実現するためにコンピューターが実行するプログラム、このプログラムを前記コンピューターで読み取り可能に記録した記録媒体、或いは、このプログラムを伝送する伝送媒体の態様で構成することも可能である。上記記録媒体としては、磁気的、光学的記録媒体又は半導体メモリーデバイスを用いることができる。具体的には、フレキシブルディスク、HDD(Hard Disk Drive)、CD−ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)、Blu−ray(登録商標) Disc、光磁気ディスク、フラッシュメモリー、カード型記録媒体等の可搬型の、或いは固定式の記録媒体が挙げられる。また、上記記録媒体は、プリンター2が備える内部記憶装置であるRAM(Random Access Memory)、ROM(Read Only Memory)、HDD等の不揮発性記憶装置であってもよい。
また、例えば、図2の処理単位は、プリンター2の処理を理解容易にするために、主な処理内容に応じて分割したものであり、処理単位の分割の仕方や名称によって、本発明が限定されることはない。プリンター2の処理は、処理内容に応じて、されに多くの処理単位に分割してもよい。また、1つの処理単位がさらに多くの処理を含むように分割してもよい。
また、図1に示した各機能部は機能的構成を示すものであって、具体的な実装形態は特に限定されない。つまり、必ずしも各機能部に個別に対応するハードウェアが実装される必要はなく、一つのプロセッサーがプログラムを実行することで複数の機能部の機能を実現する構成とすることも勿論可能である。また、上述した実施形態においてソフトウェアで実現される機能の一部をハードウェアとしてもよく、或いは、ハードウェアで実現される機能の一部をソフトウェアで実現してもよい。その他、プリンター2、及び、タブレット端末装置3の他の各部の具体的な細部構成についても、本発明の趣旨を逸脱しない範囲で任意に変更可能である。