従来は、インターネット上のWebページから印刷するためには、ユーザーは通常、Webブラウザーのインターフェース上のWebブラウザーの印刷選択ボタンを通して、またはインターネット上のサードパーティーの印刷サービスを通して行わなくてはならなかった。プリンターなどのローカルなリソースへのアクセスはWebブラウザーが制御する。基本的には、Webブラウザーはローカルなオペレーティングシステムへのインターフェースとして機能し、次にはそのオペレーティングシステムが設置されたプリンタードライバーへのアクセスを制御する。インターネット上のサードパーティーの印刷サービスを通して印刷することを望む場合、印刷するドキュメントも単にユーザーのローカルなデバイス上だけではなく、インターネット上に存在することが必要である。どちらの場合でも、ユーザーはプリンターダイアローグボックスを通して利用可能な登録されたプリンターと印刷オプションから選択することが要求されるが、そこから印刷をしようとしているWebページでは、それらのプリンターもそれらの印刷オプションもわからない。
ネットワーク印刷の能力を改善するためには、Webアプリケーション、つまり、Webページ、の能力を上げる努力を本発明では行っている。特に、Webブラウザーの印刷選択ボタンを通すことなく、または、サードパーティーのインターネット印刷サービスに依存することなく、ネットワークプリンターとネットワークされていないプリンターを直接制御するために、Webページ内で実行されるスクリプトアプリケーション(つまり、ウィジェットやメソッドなど)の能力を上げる努力を行っている。
好適な実施例におけるプリンターは、ローカルなプリンターおよび/またはリモートなプリンターでよい。すなわち、本発明では、Webブラウザーからの印刷支援や明示的な印刷許可を要求することなく、印刷ドキュメントを作成し、プリンターと交信し、そして制御することを、Webページスクリプトアプリケーションに認めている。スクリプトアプリケーションにより直接作成された印刷ドキュメントに加えて、印刷ドキュメントは印刷するためにインターネット上に存在しなくてもいい 。好適な実装においては、以下の記載でスクリプトアプリケーションに触れるときはいつでも、スクリプトアプリケーションはJavaに基づくスクリプト言語であるJavaScript言語で実現されるとして述べる。しかしながら、当該技術で既知のほかのスクリプト言語を使用して本発明が実現されてもよいことは理解されるだろう。
本発明では印刷能力をWebページに追加し、Webページは典型的にはWebブラウザー経由でアクセスされるため、Webブラウザーを動作させることが可能なローカルの計算デバイスは、本発明の好適な実施例に含まれる。既存のネットワークプリンターとネットワークされていないプリンターとともに本発明を使用することを容易にするために、Webページから印刷命令を受け取り、それらを接続されたプリンターのために適切な通信形式/言語に変換することが可能なインターフェースボックス(つまり、デバイス、装置、またはモジュール)を経由してWebページが通信することはさらに好適である。好適には、インターフェースボックスは、Webページとプリンターとの通信のための変換サービスを提供し、与えられたプリンターに適切な印刷ドキュメントを作成するために必要な援助をさらに提供する。インターフェースボックスは計算および判断能力を持つため、それはインテリジェントデバイスである。記載を簡単にするために、以後は、インターフェースボックスをインテリジェントモジュールと呼ぶ。
もしプリンターがネットワークプリンターではない場合、 そのプリンターはインテリジェントモジュール(好適には物理的な計算装置/計算デバイス)を経由してローカルな計算デバイス(そこにはWebブラウザーが設置されている)に接続される。また、プリンターがネットワークプリンターであった場合にも、そのインテリジェントモジュールがそのプリンターとの通信インターフェースとして機能することが好適である。さらに、ネットワーク環境では、インテリジェントモジュールは、複数の(ネットワーク接続されている、そしてされていない)プリンターとの通信インターフェースとして機能してもよい。
本発明は、Webブラウザーとプリンターを持つ計算環境であればどこで実現されてもいいが、説明を容易にするため、そして好適な実施例の例として、ここに本発明は小売業環境において実現されるとして記載する。特に、本発明は販売時点情報管理(つまり、POS)システム、またはPOSネットワークにおいて実現されるとして記載する。しかしながら、本発明は、ネットワーク接続された、そしてネットワーク接続されていない、ほかの計算/印刷環境において実現されてもいいことは理解されるだろう。
POSシステムにおいて、商取引を実現し、その取引の記録を維持するために、販売時点情報管理デバイスは各チェックアウトステーションに位置する。このように、チェックアウトステーションは、物理的な顧客が商品および/またはサービスに対して商人に支払う、小売業環境(または小売業設備)内の場所である。POSシステムには複数のPOSデバイスが含まれていてもよい。それは、計算および/またはネットワーキング能力を組み入れた電子キャッシュレジスターとして考えてもよい。典型的には、POSデバイスでは、顧客の記録のために領収書(または取引の概要)を印刷する、レシートプリンターを近くに(または統合されて)持つ。長さがわからない取引の概要を収容するために、レシートプリンターは典型的には、ロール紙プリンター(つまり、ロール紙、言わばペーパーロール、に印刷し、印刷された取引の要約の最後で、ロール紙から印刷された部分を切るプリンター)である。しかしながら、用紙プリンターおよび、ほかのロール紙ではないプリンターでも本発明が適合することは理解されるだろう。
POSデバイスは典型的にはPOSシステム内でネットワーク接続され、簿記と在庫管理のために取引の記録をつける中央サーバーと通信し、さらにPOSデバイスに対して、製品価格(または製品価格の更新)、クーポン、販促広告、製品情報(製品説明および/または在庫があるかなど)と、ほかのデータなどの情報を提供してもよい。中央サーバーは、ローカルエリアネットワークおよび/またはワイドエリアネットワークの一部であってもいいし、オプションとして、複数のサーバーに分配されていてもいい。中央サーバーはインターネット経由でアクセスすることができてもよいと考えられる。
POSシステムネットワークは、専用のコンピューター化されたPOSデバイスから構成されるため、複雑であり、購入、設定、維持、更新に費用がかかることがある。POSシステムを実現し維持する費用と困難さは、同じPOSシステムネットワーク内で、(異なるメーカーからの)異なるPOSデバイス機種と(異なるメーカーからの)異なるプリンター機種を使用すると、さらに増す。これは理解されるだろうが、それらの異なるPOSデバイスは、異なる能力を持つ異なる動作プラットホーム(つまり、異なるオペレーティングシステム、OS、で動作する)かもしれないし、それらの異なるプリンター機種は、異なる動作プラットホームのために異なるドライバー要件/能力を持つかもしれない。
POSシステムネットワークを設定し、維持し、更新するための費用と複雑さを本発明がどのように削減できるかを以下に記載する。特に、異なるPOSデバイス機種と異なるプリンター機種を組み合わせたPOSシステムネットワークについてである。
好適な実施例では、POSシステムはネットワークを通して実現されて、販売取引を実現し記録するためにPOSデバイスとして機能するリモートWeb端末によりアクセスが可能であり、ネットワークサーバー内で維持されるWebページアプリンターケーション(つまり、Webページ)経由で商取引が管理される。または、Webページはインテリジェントモジュールにより維持され、POSデバイスはそのインテリジェントモジュールからWebページをアクセスしてもよい。どちらの場合も、各POSデバイスはWebブラウザー経由でWebページにアクセスし、そのWebページを使用してプリンターへ印刷する。好適には、商取引はまたWebページ経由で入力されて記録される。
プリンターは典型的にはPOSデバイスの近くにあるが、ネットワークサーバーによって制御されるか、POSデバイスによって制御される。どちらの場合も、以下により詳しく説明するように、インテリジェントモジュール経由でプリンターとの通信がなされることが好適である。
または、どのようなネットワークサーバーも使用することなく、本発明が実現されてもよい。この場合、インテリジェントモジュールはWebページをPOSデバイスに提供し、POSデバイスとプリンターとの通信を行ってもよい。この実現においては、POSデバイスがコンピューターネットワークの一部であることを除外するものではない。
このように、POSデバイスの動作プラットホームは限定要因ではない。必要なことは、動作プラットホームによらずに、POSデバイスがWebブラウザーを動作させることが可能であることだけである。実際に、最低限の計算力を持つ単純化された計算デバイスを使用して、POSデバイスを実現してもよい。たとえば、基礎的な計算能力と通信能力を持つ安価なタブレットコンピュータとしてPOSデバイスを実現してもよい。
図3を参照すると、Webページ31はWebブラウザー33の中に示されている。好適にはWebブラウザー33は計算デバイス(つまり、図4に示す計算デバイス51などのデータ処理装置)の中で動作する。その計算デバイスはPOSデバイスとして機能してもよい。当該技術では既知であるが、インターネットなどのTCP/IPネットワークの中でWebページをアクセスするためのインターフェースをWebブラウザー33は提供し、所望のWebページをアクセスするためのネットワークアドレスを入力することができるアドレスフィールド35を典型的には含んでいる。たとえば、Webページ31はインテリジェントモジュール37に保持され(つまり、配置され)、Webブラウザー33にダウンロードされてもよい。または、Webページ31は、Webブラウザー33があるコンピュータデバイスに組み込まれてもよい(つまり、デフォルトでそこに存在していてもよい)。好適にはWebページ31は、HTMLおよび/またはそれを変化させた言語などのマークアップ言語で書かれ、JavaScriptなどのスクリプト言語をサポートする。
本発明において、Webブラウザー33は、インテリジェントモジュール37経由で一つまたはそれ以上のプリンター、PrinterID_1とPrinterID_2、と通信する。オプションとしては、これらのプリンターはPOSプリンター(つまり、レシートプリンター)であってもいいし、それぞれのロール紙39aと39b上にオプションとして印刷してもよい。
好適には、インテリジェントモジュール37は、少なくとも一つの印刷アプリケーションプログラムインターフェース、つまり、API_1からAPI_3まで名付けられた印刷API、を経由してWebページ31と通信する。説明のために、印刷アプリケーションプログラムインターフェースAPI_1からAPI_3まではWebページ31の中に埋め込まれて示され、それぞれの印刷スクリプトアプリケーション、たとえば、Print_Script_App_1からPrint_Script_App_3まで、とのインターフェースを提供する。希望があれば、すべての印刷スクリプトアプリケーションの機能性を結合して単一の印刷API経由でアクセスしてもよい。さらに好適には、これらの印刷スクリプトアプリケーションは、以下に述べるように、いろいろなプリンター機能を提供するJavaスクリプトアプリケーションであり、少なくとも一つの印刷APIを経由してアクセス可能である。API_1からAPI_3まで(そしてそれぞれの印刷スクリプトアプリケーションPrint_Script_App_1からPrint_Script_App_3まで)は、本印刷能力を組み込むために、印刷APIライブラリーの一部としてWebページデベロッパーに提供されてもよい。
API_1からAPI_3までは、Webページ31に印刷インターフェースを提供し、印刷スクリプトアプリケーションPrint_Script_App_1からPrint_Script_App_3までは印刷能力を提供し、および/またはインテリジェントモジュール37と通信するように設計されている。印刷APIと印刷スクリプトアプリケーションは、API_1+Print_Script_App_1やAPI_2+Print_Script_App_3によって示されているように、Webページ31内にまとめて一体として埋め込まれていてもよい。この場合、両者は、APIまたは印刷APIという共通の用語で呼ばれてもよく、このAPIはこのように、Webページ31とのインターフェース、印刷ドキュメントの作成、そしてその印刷ドキュメントのインテリジェントモジュール37への送信を扱うことになる。
当業者には理解されうるように、印刷APIは特定の(オブジェクト志向言語において定義されるように)ソフトウェアクラスの例であり、それらは(OOP言語において定義されるように)コンストラクターによって作成されてもよい。一つの実施例としては、印刷APIは、そのAPIを初期化するためのコンストラクターを含んでもよい。
ほかの実施例としては、印刷APIはWebページ31内に埋め込まれるが、その対応する印刷スクリプトアプリケーションはインテリジェントモジュール37内で別に保持されるように、印刷APIとその対応する印刷スクリプトアプリケーションを分離してもよい。これは、API_3はWebページ31内に埋め込まれ、それに対応する印刷スクリプトアプリケーションPrint_Script_App_3はインテリジェントモジュール37内に保持されることで示されている。このように、Print_Script_App_3が必要とする計算リソースのいくつかは、Webブラウザー33が存在するデバイスから外され、インテリジェントモジュール37に実装されてもよい。この場合、API_3は印刷ドキュメントを定義するために必要なすべてのデータをPrint_Script_App_3へ送ることになり、その後Print_Script_App_3は対応する印刷ドキュメントをインテリジェントモジュール37内で作成し、作成された印刷ドキュメントを特定のプリンターへ送信することになる。印刷APIをそれの対応する印刷スクリプトアプリケーションから分離することにより、Webブラウザー内の印刷APIを変えることなく、インテリジェントモジュール37内のスクリプトアプリケーションを更新することもできる。この場合、Webデベロッパーに対しては、印刷APIライブラリーをWebデベロッパーのWebページへの組み込みのために提供しながら、対応する印刷スクリプトアプリケーションの実現の詳細を、インテリジェントモジュール37またはネットワークサーバーに保持して、Webデベロッパーから隠すことができる。
好適な実施例において、印刷APIのそれぞれはインテリジェントモジュール37と直接通信する。したがって、インテリジェントモジュール37は、IP_ADD_1と示されている、ネットワークアドレスを受け取る(つまり、割り当てられる)ように構成されている。このネットワークアドレスは、静的アドレスでも、動的に割り当てられるアドレスでもよい。
好適には、印刷APIのそれぞれは、インテリジェントモジュール37のネットワークアドレスを受け取るように構成された、addressプロパティ要素(つまり、アドレスデータフィールド)を提供され、それにより、印刷APIのそれぞれはインテリジェントモジュール37と通信を行うことができる。インテリジェントモジュール37のネットワークアドレスが静的(つまり、固定)であれば、各API内のaddressプロパティ要素はユーザにより設定されてもよい。または、ネットワークアドレスが動的であれば、インテリジェントモジュール37のネットワークアドレスを判定するためにネットワークアドレス判定サービスを使用し、各APIのaddressプロパティ要素にその判定されたアドレスが入力されてもよい。さらに好適には、addressプロパティ要素はタイムアウト期間を設定するように構成される。このタイムアウト期間は、インテリジェントモジュールからアクノリッジメントやほかの応答を受け取るために割り当てられた最大時間を示してもよい。好適には、印刷APIには、タイムアウト期間の経過に対応して、印刷ジョブ(または、提出された印刷要求)をキャンセルするためのステップ、またはプロセスが含まれている。
さらに好適には、各プリンターは、名称または識別コード(ID)、または(ネットワーク)アドレスによって識別可能である。説明を容易にするために、プリンターIDおよび/またはプリンターネットワークアドレスの両方は、参照符号PrinterID_1とprinterID_2によって指定される。さらに、説明を容易にするために、プリンターIDが使用されるときはいつでも、プリンターIDの代わりにプリンターネットワークアドレスを使用することを本発明では想定しているため、プリンターネットワークアドレスで代用されてもよいことは理解されるだろう。さらに好適には、その名称、プリンターID、および/またはプリンターアドレスが印刷APIに提供される。したがって、印刷APIは、名称、プリンターID、および/またはプリンターネットワークアドレスによって対象プリンターを指定し、印刷要求、または印刷ドキュメントを受け取ってもよい。
一つの実施例において、印刷APIのaddressプロパティ要素は拡張されて対象プリンターのID(またはネットワークアドレス)も受け取るようになる。たとえば、対象プリンターを識別するもの(デバイスIDまたはデバイスネットワークアドレス)を設定するように、addressプロパティ要素が構成されていてもよい。これにより、そのプリンターが、印刷されるドキュメントが送信されるプリンターとして指定される。さらに、印刷APIは、プリンターから応答メッセージを取得するように構成された受信イベント要素を持っていてもよい。応答メッセージは、印刷結果、エラーコード、および/またはプリンターステータスを含んでもよい。エラーコードまたはプリンターステータスは、自動的復元可能エラーまたは復元不可能エラーのどちらかが発生した事を示してもよい。このようにして、印刷APIは、addressプロパティ要素により指定されたインテリジェントモジュール経由で、プリンターから応答メッセージを受け取ることができる。このように、addressプロパティ要素に指定されたインテリジェントモジュール経由で、対象プリンターと印刷API間の通信が行われる。さらに、addressプロパティ要素は、タイムアウト期間を設定するように構成されていてもよい。このタイムアウト期間は、インテリジェントモジュールまたはプリンターからアクノリッジメントやほかの応答を受け取るために割り当てられた最大時間を示してもよい。好適には、印刷APIには、タイムアウト期間の経過に対応して、addressプロパティ要素により指定されたプリンターでドキュメントを印刷する、印刷ジョブ(または、提出された印刷要求)をキャンセルするためのステップ、またはプロセスが含まれている。
または、印刷APIは、特定のプリンターを指定することなく、インテリジェントモジュール37へ印刷要求を送信してもよく、インテリジェントモジュール37は、印刷要求を発行したデバイスへの近接情報に基づいて、またはどのプリンターが利用可能か(つまり、使用されていないか)を判定することによりプリンターを選択してもよい。この場合、好適には、インテリジェントモジュール37は、印刷要求を発行したデバイスに一番近いプリンターを選択するために、Webページが動作しているデバイスの位置とプリンターの位置をわかっている。さらにまたは、インテリジェントモジュール37が、印刷要求を発行する特定のデバイスに対してプリンターを選択したら、その選択されたプリンターは好適にはそのデバイスに割り当てられ、その同じデバイスからの将来のすべての印刷要求はその同じ選択されたプリンターへ送信される。
Webページ31内に埋め込まれた各印刷APIは、そのaddressプロパティ要素(インテリジェントモジュール37のネットワークアドレスを保持する)により、インテリジェントモジュール37と直接通信することができるため、ユーザーの介入なしに、または印刷APIが存在するWebブラウザー33へ印刷要求を提出することなしに、印刷APIはいつでも印刷要求を提出することができる。たとえば、チェックアウトステーションにおいて、製品項目がWebブラウザーによって識別され(つまり、スキャンされ)全体の取引概要に加えられながら、印刷APIは、印刷のために、購入のために合計されている各製品項目の記載を提出することができる。こうして、Webページ31は、データ(新たに生成されたデータおよび/または表示画面の一部を含む)の印刷ドキュメントを生成し、所望の時間に印刷のために印刷ドキュメントを提出することができる。たとえば、APIは、印刷ドキュメントの一部をセグメント単位で(つまり、異なる時間に)生成し、その後、セグメントを結合および/または配置してプリンターへ送信する複合印刷ドキュメントとしてもよい。または、本実施例においては、好適なプリンターはロール紙プリンターであるため、印刷APIは、印刷のためにプリンターへ複数のセグメントを送信し、印刷セッションの終わりに(つまり、チェックアウトステーションでの商取引の終わりに)、ロール紙の印刷した部分をカットする命令を送信してもよい。
動作においては、印刷スクリプトアプリケーション(またはAPIがそれの対応する印刷スクリプトアプリケーションと単一ユニットとして結合されている場合は、API自身)は、プリンター制御命令を命令バッファーに蓄積し(つまり、加え)、その後、蓄積されたプリンター制御命令を実行することで、印刷ドキュメントを定義する為の第1のメソッド要素(つまり、第1の実行可能ルーチンまたは第1の実行可能メソッド)を含む。好適には、印刷スクリプトアプリケーション(またはAPI)は、さらに、定義された印刷ドキュメントをインテリジェントモジュール37へ送信するように構成された、第2のメソッド要素(つまり、第2の実行可能ルーチン)を含む。第1と第2のメソッド要素を順に実行することで、印刷ドキュメントが作成されてもよい。
本説明においては、説明したソフトウェアメソッドのすべて、またはいくつかは、オブジェクト志向言語で定義されているソフトウェアオブジェクトで置き換えてもよい。
好適には、インテリジェントモジュール37はデータ処理デバイス(制御ユニット回路および/または中央処理装置、および/または揮発性/不揮発性電子メモリー、および/またはデータ/制御レジスタ、および/または信号バス、および/または電子通信インターフェース、および/またはルックアップテーブルを含み、それには限定されず)として実現される。インテリジェントモジュール37は、それ自体の物理的な筐体内にスタンドアローンユニットとして実現されてもよいし、または、プリンター、サーバー、または他の電子デバイスの中に組み込まれて(または物理的に付属されて)もよい。動作においては、インテリジェントモジュール37は、Webページ31内に埋め込まれた印刷APIから印刷ドキュメントを受け取り、それを特定の(または、ほかに指定された)プリンターに適した印刷ドキュメントへ(必要であれば)変換し、それを指定されたプリンターへ印刷のために送信する。オプションとしては、インテリジェントモジュール37は、プリンターのそれぞれに対してプリンタードライバーを含んでもよく、そのプリンタードライバーを用いて適切な印刷ドキュメントを定義してもよい。または、インテリジェントモジュール37は、印刷APIから命令バッファーの記録を受け取り、命令バッファーのプリンターコマンドを実行することで印刷ドキュメントを作成し、作成した印刷ドキュメントを適切なプリンターへ送信してもよい。さらにまたは、印刷APIから受け取るコマンドは、書式情報や印刷内容データなどの一般的な印刷記述でもよく、その後、インテリジェントモジュールは、必要なプリンターコマンドを決定して、指定されたプリンターの能力に基づいて、一般的な印刷記述に最も類似している印刷ドキュメントを生成し、そして、生成した印刷ドキュメントを指定されたプリンターへ送信してもよい。
上記の記載において、作成された印刷ドキュメントは、XML印刷ドキュメント、またはビットマップ印刷ドキュメント、または当該技術で既知の、ほかのドキュメント記述書式でもよい。
図示のように、プリンターPrinterID_1とPrinterID_2は、それぞれロール紙39aと39b上に印刷するPOSプリンターでもよい。これらのプリンターは、(完全にまたは部分的に着脱できる)カバー41,ドロワー43,ブザー45,用紙カッター(または自動カッター)47などの付属装置をさらに備えてもよい。好適には、これらの付属装置は、インテリジェントモジュール37によってプリンターへ中継される上記のプリンターコマンドによって、制御できる。。上記のように、対象プリンターが印刷APIへ送信するエラーコードまたはプリンターステータスの中には、カバーが開いているという表示もある。同様に、自動カッターでエラーが発生したことを、エラーコードまたはプリンターステータスが示してもよい。プリンターは、用紙がプリンターにあるかどうかを検出するセンサーを備えてもよく、そのセンサーによって用紙がないことが検出されるかどうかを、エラーコードまたはプリンターステータスで示してもよい。または、インテリジェントモジュール37へ送信したドキュメントに構文エラーがあるかどうかを、エラーコードまたはプリンターステータスで示してもよい。または、印刷APIがプリンターIDによって指定した対象プリンターが存在しないかどうかを、エラーコードまたはプリンターステータスで示してもよい。
PrinterID_1とPrinterID_2は、インテリジェントモジュール37と通信するために通信ポートを備えることは理解されるだろう。通信ポートでエラーが検出されるかどうかを、エラーコードまたはプリンターステータスで示してもよい。さらに、上記のタイムアウト期間が経過するかどうかを、エラーコードまたはプリンターステータスで示してもよい。または、印刷動作が成功裏に完了することを、エラーコードまたはプリンターステータスで示してもよい。上記のように、プリンターはコネクターによってドロワーに接続されてもよく、そのコネクターは少なくとも一本のピンを持っていてもよい。この場合、コネクターの所定のピンのステータスを、エラーコードまたはプリンターステータスで示してもよい。
または、プリンターがオフラインであること、またはオンラインに戻されることを待機しているところであること、またはプリンターから何の応答もないことを、エラーコードまたはプリンターステータスで示してもよい。
PrinterID_1とPrinterID_2は、さらに、用紙39aと39bを供給するためのスイッチを持っていてもよく、スイッチの動作により、いつ用紙が供給されているかを、エラーコードまたはプリンターステータスで示してもよい。さらに、いつブザー45がオンにされる(つまり、駆動される)かを、エラーコードまたはプリンターステータスで示してもよい。プリンターまたはインテリジェントモジュール37は、ドキュメントを印刷するための印刷ジョブをスプールするために構成されたスプーラーを持っていてもよく、スプーラーが停止したかどうかを、エラーコードまたはプリンターステータスで示してもよい。
図3の実施例において、ネットワーク接続されていてもよいし、いなくてもよいシステムとして、本発明は実現される。すなわち、Webブラウザー33が動作するローカルデバイスは、特定の中央サーバーに接続されていないスタンドアローンデバイスでもよい。ローカルデバイスが、スタンドアローンデバイスであるか、またはほかのPOSデバイスやサーバーにネットワーク接続されているかに関わらず、インテリジェントモジュール37は、プリンターとWebページ31間で、通信信号を中継し変換する(そして必要なコマンド信号と命令信号を生成する)プリンター制御ボックスとして機能してもよい。
図4は、本発明をネットワークで実現したものを示す。図3の要素と類似のすべての要素は、類似の参照符号を持ち、上記に記載されている。図示のように、ネットワーク55には、計算デバイス51,サーバー53,インテリジェントモジュール37、プリンターPrinterID_2を含む。計算デバイス51,サーバー53,インテリジェントモジュール37はネットワーク通信チャネル57経由で通信し、このチャネルは、有線チャネル、無線チャネル、またはその両方を結合したものでもよい。計算デバイス51は、タブレットコンピュータまたはほかのデータ処理デバイスでよいが、Webブラウザー33経由でWebページ31をアクセスする。オプションとしては、Webページ(つまり、Webアプリケーション)31は、サーバー53またはインテリジェントモジュール37からアクセスされる。すなわち、Webアプリケーション31は、サーバー53および/またはインテリジェントモジュール37に保持される(つまり記憶される、または置かれる)(そしてそこからアクセスされる)。
オプションとしては、プリンターPrinterID_2は、不揮発性メモリー59を含んでもよい。一実施例においては、ロゴのような、複数のあらかじめ定義されたイメージがメモリー59に記憶され、LOGO_1からLOGO_3までのような、IDコードにより識別/呼び出される。
上記説明のように、プリンター制御コマンドが蓄積される命令バッファーを、印刷APIは定義する。命令バッファーには、いろいろな種類の制御コマンドが蓄積されてもよい。図5には、本発明において、命令バッファー63に蓄積されてもよい、プリンター制御コマンド61の例を示す。各コマンドは、それを実行するために必要な一つまたはそれ以上の命令となってもよい。
たとえば、図5を参照すると、コマンドの一つは、印字のために文字を命令バッファーに追加するテキストコマンドでもよい。すなわち、そのテキストコマンドは、印字される文字が挿入される、定まった、または定まっていない長さのデータフィールドを定義してもよい。別のコマンドとしては、文字の特性を定義(つまり、設定)するパラメーターを命令バッファーへ追加するテキスト設定コマンドでもよい。特性としては、挿入された文字の大きさ、フォント、色などを含んでもよい。テキスト設定コマンドにより、複数の異なるパラメーターが設定されていてもよい。たとえば、第1のテキスト設定パラメーターにより、用紙上に印字する開始位置を指定してもよく、別のパラメーターにより、位置揃え要件を設定してもよい。ほかのパラメーターにより、挿入された文字の言語、フォント、装飾、倍率、および/または倍角を設定してもよい。追加のテキスト設定パラメーターとしては、印字文字を回転するかどうか、または文字のスムージングを有効化するかどうかを指定するパラメーターを含んでもよい。
別のコマンドとしては、プリンターで用紙を供給するための一つまたはそれ以上の命令を、命令バッファーに追加する紙送りコマンドでもよい。
さらに別のコマンドとしては、印刷のためにラスターイメージを追加するイメージコマンドでもよい。当該技術で知られているように、ラスターイメージとは典型的には、ビットマップのように一度に一点を表示媒体上に示すようにイメージを定義する四角形の領域であり、イメージファイルを定義する。好適には、印刷APIにはhalftoneプロパティ要素が含まれていて、Webアプリケーションで描画されたカラーイメージは、印刷のためにhalftoneプロパティ要素の設定にしたがってイメージコマンドによって、ラスターイメージデータに変換される。好適には、ディザリング、誤差拡散、および/またはカラーイメージをラスターイメージデータに変換するための閾値の少なくとも一つをhalftoneプロパティ要素で指定する。印刷APIには、brightnessプロパティ要素が含まれていてもよい。これにより、ラスターイメージデータの明るさを補正するために0.1から10.0までの範囲でガンマー値を指定することができる。この場合、brightnessプロパティ要素の設定にしたがって、イメージコマンドにより、カラーイメージを印刷のためのラスターイメージデータに変換することができる。
図4に示すように、PrinterID_2には、少なくとも一つのロゴを登録するために不揮発性(NV)メモリー59を備えてもよい。この場合、特定のロゴを識別するキーコードを、その識別したロゴを印刷するために、命令バッファーに追加するロゴコマンドが存在することが好適である。すなわち、キーコードは、NVメモリー59に登録された特定のロゴ(つまり、LOGO_1からLOGO_3までのロゴ)を指定する。
別のコマンドとしては、バーコードを印刷する命令を命令バッファーに追加するバーコードコマンドでもよい。好適には、複数のバーコードの種類がサポートされ、少なくとも、所望のバーコード種類、バーコードの幅と高さ、および/または選択されたバーコード種類に変換される(つまり、符号化される)データを指定するバーコードパラメーターが、バーコード命令に含まれる。
別のコマンドとしては、2次元シンボルを印刷する命令を命令バッファーに追加するシンボルコマンドでもよい。シンボルコマンドは、2次元シンボルの種類、2次元シンボルの誤り訂正レベル、2次元シンボルに変換されるデータの少なくとも一つを指定するシンボルパラメーターを含んでいてよい。
好適には、別のコマンドとしては、第1の線を引く命令を命令バッファーに追加する第1の線コマンドがある。第1の線コマンドは、第1の線の開始位置と終了位置を指定する第1の線パラメーターを含んでもよい。本発明では、不定の長さの第2の線を引き始める命令を命令バッファーに追加する第2の線コマンドもあってよい。この命令では、第2の線の開始位置を指定する第2の線パラメーターを提供するが、第2の線の終了位置を指定する線パラメーターは提供しない。この場合、好適には、本発明において、第2の線コマンドにより開始された第2の線の描画を終了させる(つまり、停止させる)命令を追加する第3の線コマンドが含まれている。第3の線コマンドは、第2の線の終了位置を指定する第3の線パラメーターを含んでもよい。
さらに別のコマンドとしては、ページモードへ切り換え、ページモードで印刷領域を追加する命令を命令バッファーに追加するページモードコマンドであってもよい。すなわち、ページモードは、印刷領域が定義され、その印刷領域にデータを配置し、バッチ動作で印刷領域が印刷される、印刷モードでよい。ページモードにはさらに、印刷領域に対して所望の配置場所を指定する、少なくとも一つの座標を含んでもよい。第2のページモードコマンドは、第1のページモードコマンドにより始められたページモードを終了させる命令を追加してもよい。さらに、第3のページモードコマンドは、第1のページモードコマンドで定義されたページモードに、少なくとも一つの設定(つまり、設定パラメーター)を追加してもよい。第3のページモードコマンドには、ページモードにおいて印刷する方向、または、ページモードにおいて印刷での開始位置を指定する座標を、指定する第3のページパラメーターを含んでいてよい。第4のページモードコマンドは、さらに、第1のページモードコマンドで定義されたページモードにおいて、線または四角形のような、あらかじめ定義した形状を、描画する命令を追加してもよい。ページモード内で、あらかじめ定義した形状の、つまり、線または四角形の、開始位置と終了位置を指定する座標を、第4のページモードコマンドは含んでもよい。さらに、形状の種類選択を指定する第4のページパラメーターを第4のページモードコマンドは含んでもよい。たとえば、線タイプまたは四角形タイプを、第4のページパラメーターで指定してもよい。
別のコマンドとしては、たとえば、用紙カッター47によるように、用紙を、つまり、印刷媒体を、カットする命令を命令バッファーに追加する、用紙カットコマンドでもよい。最初に用紙を供給することなく用紙をカットするか、用紙を供給したあとで用紙をカットするかのいずれかを指定する用紙カットパラメーターを、用紙カットコマンドは含んでもよい。
図3に示すように、本発明によるプリンターには、それに接続されるドロワー43があってもよい。そうであると仮定すると、別のコマンドとしては、ドロワーをキックして(つまり、解放して、または掛け金をはずして)開ける命令を命令バッファーに追加する、ドロワーキックコマンドでもよい。好適には、ドロワーキックコマンドには、ドロワーを開けるために加えられる信号のオン期間を指定する第1のドロワーパラメーターを含んでいる。さらに、好適には、ドロワーは二つのコネクターによりプリンターに接続されていて、ドロワーとプリンターを接続するコネクタのいずれか一つ(の解放)を指定する第2のドロワーパラメーターを、ドロワーキックコマンドは含む。
図3に示すように、PrinterID_2にはブザー45が備わっていてもよい。その場合、別のコマンドとしては、ブザーをオンにする(または起動する)命令を命令バッファーに追加する、ブザーコマンドでもよい。ブザーの起動が繰り返される回数、またはパターンを指定するブザーパラメーターが、ブザーコマンドに含まれてもよい。
POSシステムで実現される、本発明の具体的な例は以下の通りである。
図6は、POSシステム79で適用した、本発明の具体例を記載する。図示の通り、本例においては、上記のように、サーバー71、Webブラウザー73,インテリジェントモジュール75を含んでいる。説明のために、インテリジェントモジュール75は、TMインテリジェントプリンターとして示されているが、それは、一つまたはそれ以上のプリンターと通信する一つまたはそれ以上のインテリジェントモジュールの組み合わせから構成されてもよいことを示す。Webブラウザー73は、POSデバイス(電子/コンピューター化されたキャッシュレジスターなど)内で実行されてもよく、上記のように、Webブラウザー73によりWebページ77をアクセスする。説明を容易にするために、POSシステム79で適用された、本発明の印刷メカニズム/方法をePOS-Printと呼ぶ。
ePOS-Printは、マルチプラットフォーム環境においてPOSプリンターを制御するために機能を提供する。ePOS-Printを使用して、パーソナルコンピュータ、スマートフォーン、またはタブレットコンピュータ上のWebブラウザーからTMインテリジェントプリンター(つまり、一つまたはそれ以上のインテリジェントモジュールと、一つまたはそれ以上のプリンターの組み合わせ)へと、データを直接印刷することができる。
さらに、HTML5-Canvasにおいて描画された印刷イメージを印刷できる。当該技術で既知のように、HTML5-Canvasはグラフィックスのためのコンテナーであり、スクリプトを書くことによりグラフィックスを描画する手段を提供する。ePOS-Printは、印刷コマンドのためにAPI(本説明において印刷APIに等しい)を提供する。ホスト(つまり、Webブラウザー73が動作しているデバイスまたは入力端末)からTMインテリジェントプリンターのePOS-PrintサービスへHTTP経由で印刷ドキュメント(リクエスト)が送信されると、ePOS-Printは、そのドキュメントの印刷を処理し、応答ドキュメント(つまり、レスポンス)を返す。
本例においては多くの特徴がある。たとえば、本システムがネットワーク環境にある限り、HTML5をサポートするWebブラウザーを持つ入力端末は、どこからでも印刷を実行することができる。プリンタードライバーやプラグインのインストールは必要ない。印刷のためにパーソナルコンピュータやサーバーは必要ない。本システムにより、公的なネットワーククラウドと私的ネットワーククラウドから印刷が可能となる。本発明では、さらに、一般に、Webブラウザーがサポートする、どの言語においても印刷が可能となる。本発明では、印刷前に、TMプリンターのステータスを自動的に確認する。TMプリンターのステータスをあらかじめ確認する必要はない。本システムでは、プリンターの自動的にそのステータスを送信する機能(たとえば、AutoStatusBack機能)には対応していない。その代わりに、本システムでは、空の印刷コマンドを送信し、コマンド送信の結果に基づいてTMプリンターのステータスを確認する(つまり、判定する)ことができる。それにも関わらず、プリンター設定を変更するために、各プリンター専用のユーティリティープログラム、またはほかのユーティリティープログラムを使用してもよい。こうして、本発明では、TMインテリジェントプリンターを経由してTMプリンターによる印刷が可能である。本発明は、このように、ePOS-Print APIとePOS-Print-Canvas APIの両方を提供してもよい。上記のように、本発明では、さらに、デバイスフォントを印刷に使用することができ、バーコード印刷ができ、HTML5-Canvasで描画されたイメージの印刷ができ、TrueTypeフォントを印刷に使用することができる。好適には、デバイスフォントを印刷に使用することができ、バーコード印刷ができる。さらに好適には、ePOS-Print-Canvas APIにより、HTML5-Canvasで描画されたイメージの印刷ができ、TrueTypeフォントを印刷に使用することができる。
図7は、ePOS-Print APIによって実現することができる印字の種類の例を示す。二つのレシート81と83を示す。上記のように、レシート81は多様な印刷コマンドの実行例である。レシート81は、ロゴ印刷、文字位置揃え(中央揃え)、紙送り、用紙カットの例を示す。レシート83は、ラスターイメージ印刷、文字の横倍角印字、6倍(横)、4倍(縦)などの倍率、位置揃え(中央)、そして、バーコード印刷のための印刷コマンドの実行例を示す。
図8は、ePOS-Print-Canvas APIによって実現することができる印刷の種類の例を示す。本例においては、HTML5 Canvasにより作成されるグラフィックスはバーコードを含むが、これは典型的にはモノクログラフィックス(またはイメージ)であり、バーコードのすぐ上の絵のようなグラフィックスである。この絵のようなグラフィックスは、モノクロでも、多階調でも、カラーでもよい。
図9は、本発明の一実施例における印刷の流れの例である。本例においては、サーバー、無線LANルーター、Webブラウザー、TMインテリジェントプリンター、制御可能なプリンターが示されている。好適には、本発明のWebアプリケーション(つまり、Webページ)はサーバーに配置(つまり、保持)されてもよく、WebブラウザーがWebアプリケーションを表示する。動作においては、WebブラウザーがTMインテリジェントプリンター(または、インテリジェントモジュール)へ印刷データを送信してもよく、TMインテリジェントプリンターは、その制御下にある適切なプリンターへその印刷データを送信し、これらのプリンターがそのデータを印刷する。その後、TMインテリジェントプリンターは、応答ドキュメントをWebブラウザー(つまり、Webブラウザーを動作させている端末)へ返す。
ePOS-Print APIは複数の機能を提供してもよい。たとえば、位置揃え(文字位置揃えなど)、改行量、倒立文字、ページモードなどの印刷設定機能を提供できる。また、言語、フォント(デバイスフォント)、倍角、倍率、スムージング、印刷位置などの複数の文字データ設定(テキスト文字など)を提供することもできる。また、白黒の反転、下線、太字体などの文字装飾設定を提供することもできる。さらに、紙送り設定(ドット数、または行数による)などのプリンター操作制御項目を含んでいてもよい。好適には、ePOS-Print APIはまた、イメージ印刷(つまり、ラスターイメージとNVグラフィックス)、バーコード印刷、2次元符号印刷を提供する。さらに、罫線設定、ドロワーキック機能、ブザー機能、ESC/POSコマンド送信、応答ドキュメント獲得(印刷結果、プリンターステータス、および/またはシステムエラーステータス)を提供してもよい。
ePOS-Print-Canvas APIも複数の機能を提供してよい。たとえば、HTML5 Canvasで描画したイメージ(ラスターイメージ)の印刷、紙送りと用紙カット機能、応答ドキュメント獲得(印刷結果、プリンターステータス、および/またはシステムエラーステータスなど)を提供してもよい。
したがって、好適なWebブラウザーはHTML5をサポートするブラウザーである。HTML5をサポートするブラウザーの例としては、Windows(登録商標)Internet Explorer 9以降、Mozilla Firefox 3.6以降、Google Chrome 7以降、iOS 4.0以降のSafari、そしてAndroid 2.2以降の標準ブラウザーがある。
本発明のシステム構築例を図10に示す。この例においては、前のように、(Web)サーバー(そこにはWebアプリケーション、つまり、Webページ、が配置される)、入力端末(そこにはHTML5をサポートするWebブラウザーがインストールされている)、オプションの無線LANルーター、TMインテリジェントプリンター、TMインテリジェントプリンターにより制御可能なプリンターが示されている。前と同じように、TMインテリジェントプリンターは、Webブラウザーから送信された印刷データを受信し印刷し、および/または他のデバイスを制御し、その制御下にあるプリンターはTMインテリジェントプリンターから受信した印刷データを印刷する。
図11は、WebアプリケーションをTMインテリジェントプリンターへ登録する状況を示す。前に説明したように、入力端末は、ブラウザーを使って、Webアプリケーション(つまり、Webページ)を実行し(つまり、アクセスし)、デバイス制御(印刷データを含んでもよい)をTMインテリジェントプリンターへ送信する。その後、TMインテリジェントプリンターは、Webブラウザーから送信された、受信印刷データを印刷する。
本発明の好適な実施例においては、いくつかの制約が科されてもよい。たとえば、プリンターのドロワーとブザーは一緒に使用してはならない。当然のことだが、プリンターにブザーがなければ、プリンター機能は使用できない。
また、特定のWebブラウザーによる制約を本発明では妨げないことがある。たとえば、Internet Explorer 9では、安全保護されているWebパージ(典型的にはHTTPSというアドレスヘッダーにより識別される)からはプリンターへの印刷が許可されていない。
図12は、本発明において、ePOS-Print APIを使用して作成したサンプルプログラム画面の例を示す。以下の例においては、WebサーバーはIIS(Microsoft Internet Information Services)を使用して構成されていると仮定する。ボックス1では受付券を示し、ボックス2ではクーポンを示し、ボックス3では設定起動ボタンが示されている。一実施例において、ボックス1で受付券番号を印刷してもよく、ボックス2ではもちろんクーポンを印刷する。
図13は、図12の設定ボタンを起動することに対応して呼び出されることがある設定画面の例である。設定としては、インテリジェントプリンター(前に説明したように、インテリジェントモジュール内の)のネットワークアドレス(つまり、IPアドレス)、対象プリンターのデバイスID、タイムアウト時間設定、多階調印刷のオプションを含んでいてもよい。
図14は、ePOS-Print APIを使用した第1のサンプル印刷物と、ePOS-Print-Canvas APIIを使用した第2のサンプル印刷物とを示す。図示のように、好適には、グラフィックスを印刷するにはePOS-Print-Canvas APIが使用される。
図15は、初期表示状態から印刷ジョブ完了までのプロセスステップの流れを示す流れ図の例である。これはePOS-Print APIを使用して印刷した受付券番号発行の例である。プロセスは、ステップ91で、Webアプリケーション(つまり、サンプルプログラムWebページ)を開くことで始まる。その後、ステップ93で設定が入力される。設定としては、TMインテリジェントプリンターのIPアドレス、制御されるプリンターのデバイスID、(印刷)タイムアウト時間を含んでいてもよい。ステップ95に示すように、受付券番号発行オプションを選択する(つまり、クリックする)ことで、適切な受付券が作られる。その後、ePOS-Print Builderオブジェクトを呼ぶことで印刷データを作成してもよい(ステップ97)。その後、ePOS-Printオブジェクトが印刷物を作成する(ステップ99)。
図16は、クーポン発行のためのプロセスステップの流れを示す流れ図の例である。これはePOS-Print Canvas APIの例である。プロセスの流れは、本発明のWebページを開くことで始まる(ステップ101)。必要であれば、設定入力をしてもよい(ステップ103)。設定の例としては、TMインテリジェントプリンターのIPアドレス、印刷に使用されるプリンターのデバイスID、印刷タイムアウト時間がある。その後、クーポン発行オプションをクリックする(つまり、起動する/選択する)(ステップ105)。その後、Webページにより、クーポンをHTML5-Canvasで描画する(ステップ107)。最後にステップ109で、Webページにより、ePOS-Print Canvas API(つまり、ePOS-Print Canvas APIオブジェクト)を使用してTMインテリジェントプリンター(つまり、インテリジェントモジュール)へ印刷リクエストを発行する。
図17は、本発明の動作環境の例である。基本的に、図17では、以下に説明する、いくつかのサンプルプログラムのシステム構成図を示す。図17では、(192.168.192.10)という固定IPアドレスを持つWebサーバーを示す。Webサーバーにより、環境設定を構成してもよい。Webサーバーは、無線LANルーターと直接通信する。無線LANルーターは、たとえば、(192.168.192.1)という固定IPアドレスを持っていてもよい。無線LANルーターは、TMインテリジェントプリンター(たとえば、(192.168.192.20)という固定IPアドレスを持っていてもよい)と、TMインテリジェントプリンターによって制御することができるオプションの第2プリンターとの間に通信路(有線接続など)を提供する。好適には、オプションの第2プリンターも、たとえば、(192.168.192.21)という固定IPアドレスを持つ。本例においては、無線LANルーターは、HTML5をサポートするWebブラウザーを持つ入力端末への無線通信リンクを提供し、そのWebブラウザー上で、本発明のWebページが実行されてもよい。本例において、入力端末は動的なネットワークアドレスを持ち((192.168.192.XXX)と図示)、このアドレスはDHCPにより発行できる。たとえば、無線LANルーターは、DHCPにより入力端末へIPアドレスを発行してもよい。
図18は、サンプルプログラムの環境設定を構成するためのプロセスフローを示す。ステップ111において、SSID、IPアドレス、DHCP、割り当てられたIPアドレスなどのルーター設定を構成することでフローを始める。次にステップ113で、コンピューターの設定を行う。これは、IPアドレスなどの、コンピューターのネットワーク設定を構成する第1のサブステップ113aと、コンピューター上のWebサーバーを構成する第2のサブステップ113bに分割してもよい。ステップ115で、実行するプログラムを登録する。本例においては、ePOS-Print_API_UME_Sampleと呼ばれるサンプルプログラムが登録される。その後、入力端末の無線LAN(Wi-Fi)の設定を構成してルーターの設定と合致させ、ネットワーク接続を可能にするようにするなど、入力端末の設定を行う。ステップ119で、TMインテリジェントプリンターのネットワーク設定を行う。これはWebブラウザー経由で行ってもよい。次にステップ121で、制御されるプリンターのネットワーク設定を行う。当該技術で既知のように、ネットワーク設定ユーティリティを使用して、これらの設定を構成してもよい。ステップ123では、オプションのデバイスID設定を行う。これらの設定はWebブラウザー経由で行ってもよいが、本サンプルプログラムでは要求されていない。最後にステップ125では、Webブラウザー経由で必要なプログラム設定を行ってもよい。なお、本サンプルプログラムでは、プログラム設定は必要ない。
図19は、TMインテリジェントプリンターのネットワーク設定の例である。Webブラウザーを起動し、TMインテリジェントプリンターインターフェースのIPアドレスをアドレスバー127へ入力することで、設定を始めてもよい。その後、129で示すように、有線TCP/IP、または無線TCP/IPなどの構成を選択してもよい。そうするとTCP/IP設定画面が現れ、131で示すように、TMインテリジェントプリンターのネットワーク設定を行う。IPアドレスを確認するためには、TMインテリジェントプリンターを使用しステータス用紙を提出してもよい。
図20は、デバイス設定の例である。たとえば、ePOS-Printにより制御されるプリンターのIDを、TMインテリジェントプリンターへ設定してもよい。Webブラウザーを使用して、TMインテリジェントプリンターのIPアドレスを入力してもよい(133)。その後、構成するデバイスを選択する(135)。デバイス設定画面137が現れる。図21は、構成されうる、デバイス設定の例を示す。登録されたデバイス上の情報139が表示される。
上記の構成と登録シーケンスを実行すると、図12のサンプルプログラム画面となる。
次に、ePOS printを使用した、すなわち、本発明の印刷APIを使用したプログラミングのガイドについて述べる。
好適には2種類の印刷モードがあり、標準モードとページモードである。標準モードでは、文字は行ごとに印字される。フォントの大きさと、バーコードなどのイメージの高さに基づいて改行量は調整される。標準モードはレシートの印刷や、印刷スペースにしたがって用紙長さの変更が必要な、ほかの種類の印刷に適している。
ページモードでは、印刷領域が設定(つまり、定義)され、そこにデータが配置され、バッチ動作でそのデータが印刷される。たとえば、文字、イメージ、バーコードが位置座標によって印刷領域に配置されてもよく、その後、バッチ動作で結果としての印刷領域が印刷される。
図22は、ePOS-Print APIを使用したプログラミングのサンプルワークフローを示す。最初のステップ141は、WebページにePOS-Print APIを組み込むためである。好適には、ePOS-Print APIはJavaScriptとして提供され、次のファイル名規約に従うこともある:epos-print-2.x.x.js。すなわち、クライアントデバイス上でePOS-PrintがJavaScriptとして使用できるように、ePOS-Print APIが提供される。epos-print-2.x.x.js をアプリケーション(たとえば、Webページ)に組み込むことにより、ePOS-Print APIが使用される。ePOS-Print APIを使用するには、epos-print-2.x.x.jsがWebサーバー上に置かれ(つまり、提供され)、クライアントに配布される。たとえば、HTMLの<script>タグを使用して、ePOS-Print APIスクリプトをWebページに埋め込んでもよい。図23は、ePOS-Print APIを組み込むためにHTMLの<script>タグを使用する例を示す。
次のステップ143は、印刷されるドキュメントを作成するためである。ePOS-Print Builderオブジェクトを使用して、印刷ドキュメントを作成してもよい。たとえば、ePOS-Print Builderオブジェクトは、そのためのコンストラクターを使用して作成し、そのオブジェクトのメソッドを使用して印刷ドキュメントを作成する。以下に列記するように、toStringメソッドやほかの印刷APIメソッドまたは機能を使用して、印刷ドキュメントを得てもよい。図24は、印刷ドキュメントを作成するためのプログラムコードセグメントの例を示す。
文字印字ドキュメントを作成するには、テキストメソッドを使用して命令バッファーにフォント設定を記憶し、その後、印字ドキュメントを作成する。図25は、文字印字ドキュメントを作成するためのサンプルスクリプトコードを示す。このサンプルスクリプトコードでは、FontAを呼ばれるフォントを使用し、文字倍率を横4倍、縦4倍に設定し、装飾を太字としている。サンプルスクリプトの結果は、指定した文字設定で、Hello Worldという文字の印字ドキュメントを作成することである。
図26は、グラフィックの印刷ドキュメントを作成するためのサンプルスクリプトコードを示す。具体的には、このサンプルスクリプトコードは、logo.bmpというイメージファイルの印刷ドキュメントを作成する。基本的には、ラスターイメージを印刷する一つのやり方を記している。プリンター内の不揮発性メモリーに登録したグラフィックスを印刷する別の方法は、以下に述べる。本例において、グラフィックの印刷ドキュメントを作成するためには、HTML5-Canvasにおいてイメージを描画することで得られたラスターイメージを、addImageメソッドを使用して命令バッファーに記憶する。
図22のステップ143に示すように、印刷ドキュメントを作成する別の方法は、ページモードの印刷ドキュメントを作成することである。図27は、ページモードの印刷ドキュメントを作成するためのサンプルコードを示す。この例では、印刷領域にHello worldという文句を追加する。次の例ではaddPageBeginメソッドを使用している。命令バッファーにaddPageBeginメソッドを記憶すると、ページモードが開始する。命令バッファーに印刷領域が(addPageAreaメソッドにより)記憶され、命令バッファーに印刷開始位置が(addPagePositionメソッドにより)記憶される。その後、印刷データにしたがって印刷開始位置が指定される。その後、これらのメソッドは命令バッファーに記憶され、印刷データが作成される。ページモードを終了するために、命令バッファーにPageEndメソッドが記憶される。
図22に戻り、ステップ143の印刷ドキュメントの作成の次は、作成された印刷ドキュメントを送信するステップ145である。図28は、印刷ドキュメントを送信するためのサンプルコードを示す。本例において、ePOS-Printオブジェクトを使用して印刷ドキュメントは送信される。ePOS-Printオブジェクトはコンストラクターで作成してもよく、印刷ドキュメントと印刷に使用されるプリンターのエンドポイントアドレスをsendメソッドに指定(つまり、入力)して、印刷ドキュメントを送信してもよい。 図29は、プリンターのエンドポイントアドレスについての詳細を示す表である。
図22に示すように、最後のステップ147では印刷データを受信する。ePOS-Printオブジェクトのonreceiveプロパティ(後述)を用いてコールバック関数を設定することで、印刷結果を受信することができる。図30は、コールバック関数を実装するためのサンプルコードである。得ることができる情報の例としては、印刷結果、エラーコード、プリンターステータスがある。図31は、コールバック関数のエラーハンドリング方法の例である。図32は、印刷を行わずにプリンターステータスを確認するためにステータスイベント通知機能を使用する場合を示す。
図33は、ePOS-Print-Canvas APIを使用したプログラミングのワークフローを示す。ePOS-Print APIの場合と同じで、ePOS-Print-Canvas APIは、ePOS-Print-Canvas APIをWebページに組み込むステップ151で始まる。図34は、ePOS-Print-Canvas APIを組み込むためのサンプルコードを示す。説明のために、ePOS-Print-Canvas APIはJavaScriptとして示され、好適にはepos-print-2.x.x.jsという命名規約に従う。ePOS-Print-Canvas APIはWebサーバーに保持(つまり、配置、保有、または記憶)され、その後、クライアントに配布されて彼らのアプリケーション(つまり、Webページ)に組み込まれる。図34に示すように、ePOS-Print-Canvas APIはHTMLの<script>タグを使用してWebアプリケーションに組み込まれてもよい。
図33の次のステップ153は、HTML5-Canvasでの描画である。図35は、HTML5-Canvasで描画するためのサンプルコードを示す。次のステップ155は、描画したcanvasイメージの印刷である。図36は、印刷のために印刷ドキュメントを送信するためのサンプルコードを示す。ePOS-Print-Canvas APIを使用してHTML5-Canvasで描画した内容を印刷するには、コンストラクターを使用してePOS-Print-Canvas APIオブジェクトを作成する。Printメソッドを使用するには、canvasの内容と印刷に使用するプリンターのエンドポイントアドレス、そして用紙カットを選択するかどうかを指定し、その後ドキュメントを印刷する。
ステップ157で示すように、TMインテリジェントプリンター(つまり、インテリジェントモジュール)は送信物を受信する。図37は、コールバック関数により結果印刷を印刷するためのサンプルコードを示す。前記のように、ePOS-Print Canvas APIオブジェクトのonreceiveプロパティを用いてコールバック関数を設定することで、印刷結果を受信することができる。このように、印刷結果、エラーコード、プリンターステータスについての情報を得ることができる。図38は、コールバック関数によるエラーハンドリングのためのサンプルコードである。こうして、図39のサンプルコードに示すように、印刷を行わずにプリンターステータスを確認するために、ステータスイベント通知機能を使用することができる。
上記のように、印刷ドキュメントを作成するための多くのメソッドをePOS-Print APIは提供する。図40、図41、図42a、図42bは、ePOSBuilderオブジェクトにより定義されるように、ePOS-Print APIのメソッドと要素のいくつかを列記する。
当業者には理解されただろうが、コンストラクターにより、新しいePOS-Print Builderオブジェクトが作成され初期化されて、その後、オブジェクトを使用して、印刷される文字列またはグラフィックス、用紙カットなどを指定する制御コマンドを印刷する印刷ドキュメントを作成できる。好適には、このコンストラクターは次の構文に従う:ePOSBuilder( );。図43は、ePOS-Print Builderオブジェクトのコンストラクターのサンプルコードである。
文字の位置揃え設定を命令バッファーに追加する構文は、addTextAlign(align)という構文にしたがってもよい。ここでalignは位置揃えの種類を指定する。図44は、位置揃えパラメーターの種類の例を示す。図45は、ePOS-Print Builderオブジェクトの戻り値で、図46は、例外エラーである。図47は、文字の位置揃えの使い方を示すサンプルコードである。
改行量設定を命令バッファーに追加するメソッドは、好適にはaddTextLineSpace(linespc)という構文にしたがう。linespcパラメーターは改行量(ドット単位)を指定し、好適には0から255までの範囲の整数である。図48は、改行量を30ドットに設定するサンプルコードを示す。
倒立印字設定を命令バッファーに追加するメソッドは、好適には次の構文に従う:addTextRotate(rotate)。ここでrotateは、倒立印字の有無を指定するBoolean値である。図49は、倒立印字パラメーターのためのBoolean値を示す。図50は、倒立印字を設定するためのサンプルコードである。
文字の印字を命令バッファーに追加するメソッドは、好適にはaddText(data)という構文にしたがう。ここで、dataパラメーターは印字される文字列である。図51に示すように、水平タプや改行のような、印字できない文字は、エスケープシーケンスを使用してもよい。図52は、addText(data)の使い方を示すサンプルコードである。
言語設定を命令バッファーに追加するメソッドは、好適にはaddTextLang(lang)という構文にしたがう。ここで、langパラメーターは対象言語を指定する列である。図53は対象言語を指定するためのlangパラメーターの例を示す。図54はaddTextLang(lang)メソッドの使い方を示すサンプルコードである。
文字のフォント設定を命令バッファーに追加するメソッドは、好適にはaddTextFont(font)という構文にしたがう。ここで、fontパラメーターは所望のフォントを指定する列である。図55はfontパラメーターのサンプル値を示し、図56はaddTextFont(font)メソッドの使い方を示すサンプルコードである。
スムージング設定を命令バッファーに追加するメソッドは、好適にはaddTextSmooth(smooth)という構文にしたがう。ここで、smoothパラメーターは,スムージングの有効化の有無を指定するBooleanである。図57はsmoothパラメーターの可能な値を示し、図58はaddTextSmooth(smooth)メソッドの使い方を示すサンプルコードである。
文字の倍角設定を命令バッファーに追加するメソッドは、好適にはaddTextDouble(dw, dh)という構文にしたがう。ここで、dwは横倍角を指定する、オプションのBooleanパラメーターで、dhは縦倍角を指定する、オプションのBooleanパラメーターである。図59はdwのパラメーター値を示し、図60はdhのパラメーター値を示す。図61は文字倍角を横倍角と縦倍角に設定するためのサンプルコードである。
文字の倍率設定を命令バッファーに追加するメソッドは、好適にはaddTextSize(width, height)という構文にしたがう。ここで、widthパラメーターは、文字の横倍率を指定する、オプションの数値パラメーターで、heightパラメーターは、文字の縦倍率を指定する、オプションの数値パラメーターである。図62はwidthパラメーターの可能な値を示し、図63はheightパラメーターの可能な値を示す。図64は、横倍率を4倍にし縦倍率を4倍にするためのサンプルコードである。
文字の装飾設定を命令バッファーに追加するメソッドは、好適にはaddTextStyle(reverse, ul, em, color)という構文にしたがう。ここで、reverseパラメーターは、文字について白黒を反転するかどうかを指定する、オプションのBooleanパラメーターで、ulは、文字のアンダーライン装飾を指定する、オプションのBooleanパラメーターで、emは、文字の太字装飾を指定する、オプションのBooleanパラメーターで、colorは、色を指定する、オプションの列パラメーターである。図65はreverseパラメーターの可能な値を示す。図66はulパラメーターの可能な値を示す。図67はemパラメーターの可能な値を示す。図68はcolorパラメーターの可能な値を示す。図69はアンダーライン装飾を設定するためのサンプルコードである。
横方向の文字の印字開始位置を命令バッファーに追加するメソッドは、好適にはaddTextPosition(x)という構文にしたがう。ここで、xは、横方向の印字開始位置(ドット単位)を指定する数値パラメーターで、0〜65535の範囲の整数値である。図70は、印字位置を左端から120ドットに設定するためのサンプルコードを示す。
ドット単位の紙送りを命令バッファーに追加するメソッドは、好適にはaddFeedUnit(unit)という構文にしたがう。ここで、unitは、紙送り量(ドット単位)を指定する数値パラメーターで、0〜255の範囲の整数値である。図71は、紙送りを30ドットするためのサンプルコードを示す。
行単位の紙送りを命令バッファーに追加するメソッドは、好適にはaddFeedLine(line)という構文にしたがう。ここで、lineは、紙送り量(行単位)を指定する整数の数値パラメーターで、0〜255の範囲にある。図72は紙送りを3行するためのサンプルコードを示す。
改行を命令バッファーに追加するメソッドは、好適にはaddFeed( )という構文にしたがう。図73は文字列を印字した後に、新しい行を開始するためのサンプルコードを示す。
addImageメソッドでは、ラスターイメージの印刷を命令バッファーに追加し、HTML5-Canvasで描画したグラフィックスを印刷する。さらに、HTML5-CanvasのRGBAフルカラーイメージの中で指定された範囲をhalftoneプロパティとbrightnessプロパティの設定にしたがって、ラスターイメージデータに変換する。イメージの1ピクセルがプリンターの1ドットに相当するとされ、イメージに透明色が含まれている場合、イメージの背景色を白とみなす。好適には次の構文にしたがう:addImage(context, x, y, width, height, color, mode)。ここで、contextはHTML5-Canvasの2Dコンテキストを指定するコンテキストパラメーターで、xは0〜65535の範囲の整数値で、印刷領域の横方向の開始位置を指定し、yは0〜65535の範囲の整数値で、印刷領域の縦方向の開始位置を指定し、widthは0〜65535の範囲の整数値で、印刷領域の幅を指定し、heightは0〜65535の範囲の整数値で、印刷領域の高さを指定し、colorは色を指定する、オプションの列パラメーターであり(図74はaddImageメソッドの中のcolorパラメーターのサンプル値を示す)、modeはカラーモードを指定する、オプションの列パラメーターである(図75はaddImageメソッドの中のmodeパラメーターのサンプル値を示す)。図76はページモードで幅300ドット、高さ300ドットのイメージを印刷するためのサンプルコードである。
NVロゴの印刷を命令バッファーに追加するメソッドは、好適にはaddLogo(key1, key2)という構文にしたがう。このメソッドで、プリンターのNVメモリーにすでに登録されているロゴを印刷する。key1パラメーターは、NVロゴの第1のキーコード1を指定する数値で、好適には0〜255の範囲の整数である。key2パラメーターは、NVロゴの第2のキーコード2を指定する数値で、好適には0〜255の範囲の整数である。図77はaddLogoメソッドの使い方を示すサンプルコードである。
バーコードの印刷を命令バッファーに追加するメソッドは、好適にはaddBarcode(data, type, hri, font, width, height)という構文にしたがう。dataパラメーターは、バーコードデータを列として指定する列である。typeパラメーターは、バーコードの種類を指定する列である。図78から図81は、バーコードの種類の例を示す。hriパラメーターは、HRIの位置を指定する、オプションの列パラメーターである。図82はhriパラメーターのいくつかの可能な値を示す。fontパラメーターは、HRIフォントを指定する、オプションの列である。widthパラメーターは、各モジュールの幅をドット単位で指定する、オプションの整数値で、好適には2〜6の範囲である。heightパラメーターは、バーコードの高さをドット単位で指定する、オプションの整数値で、好適には1〜255の範囲である。図83はバーコードの印字の仕方を示すサンプルコードである。
2次元シンボルの印刷を命令バッファーに追加するメソッドは、好適にはaddSymbol(data, type, level, width, height, size)という構文にしたがう。dataパラメーターは、好適には、2次元(2D)シンボルデータを文字列として指定する列である。図84と図85は、addSymbolメソッドの中でdataパラメーターの2Dコード種類の説明の例を示す。typeパラメーターは、2次元シンボルの種類を指定する列である。図86はaddSymbolメソッドの中でtypeパラメーターのサンプル値を示す。levelパラメーターは、エラー訂正レベルを指定する列である。図87はaddSymbolメソッドの中でlevelパラメーターのサンプル値を示す。widthパラメーターは、モジュールの幅を指定する整数値で、0〜255の範囲である。heightパラメーターは、モジュールの高さを指定する整数値で、0〜255の範囲である。sizeパラメーターは、2次元シンボルの最大の大きさを指定する整数値で、0〜65535の範囲である。図88は2次元シンボルを印字するためのサンプルコードを示す。
横罫線を引くために、横罫線の印刷を命令バッファーに追加するメソッドは、好適にはaddHLine(x1, x2, style)という構文にしたがう。ここで、x1パラメーターは、0〜65535の範囲の整数値で、横罫線の開始位置(ドット単位)を指定し、x2パラメーターは、0〜65535の範囲の整数値で、横罫線の終了位置(ドット単位)を指定し、styleパラメーターは、罫線の種類を指定する列である。図89はaddHLineメソッドのいくつかのstyleパラメーターを示す。図90は、左端から100ドットから200ドットまでと、左端から400ドットから500ドットまでの間の位置に、二重横罫線を描画するためのサンプルコードを示す。
縦罫線の開始を命令バッファーに追加する(つまり、縦罫線の描画を開始する)メソッドは、addVLineBegin(x, style)という構文にしたがう。ここで、xパラメーターは、0〜65535の範囲の整数値で、縦罫線の開始位置(ドット単位)を指定し、styleパラメーターは、罫線の種類を指定する、オプションの列である。図91はaddVLineBeginメソッドのstyleパラメーターの例を示す。図92は縦罫線を左端から100ドットと200ドットの位置に細線で描画するためのサンプルコードを示す。
縦罫線の終了を命令バッファーに追加する(つまり、縦罫線の描画を終了する)メソッドは、addVLineEnd(x, style)という構文にしたがう。ここで、xパラメーターは、0〜65535の範囲の整数値で、縦罫線の終了位置(ドット単位)を指定し、styleパラメーターは、描画を終了する罫線の種類を指定する、オプションの列である。図93はaddVLineEndメソッドのstyleパラメーターの例を示す。図94は、縦罫線を左端から100ドットと200ドットの位置に細線で描画するためのサンプルコードを示す。
ページモードへの切り換えを命令バッファーに追加する(つまり、ページモードの処理を開始する)メソッドは、addPageBegin( )という構文にしたがう。ページモードの終了を命令バッファーに追加する(つまり、ページモードの処理を終了する)メソッドは、addPageEnd( )という構文にしたがう。図95は、ページモードで文字「ABCDE」を印字するためのサンプルコードを示す。
addPageArea(x, y, width, height)メソッドでは、ページモードで印字領域(座標)を指定するために、ページモードの印字領域を命令バッファーに追加する。本API機能の後で、印刷データAPI機能(addTextメソッドなど)を指定すること。xパラメーターは0〜65535の範囲の整数で、横軸の原点(ドット単位)を指定する。ここで、0はプリンターの印字可能領域の左端である。yパラメーターは0〜65535の範囲の整数で、縦軸の原点を指定する。ここで、0は、紙送りをしていない位置である。widthパラメーターは0〜65535の整数値で、印字領域の幅(ドット単位)を指定する。図96は、原点(100、50)、幅200ドット、高さ30ドットの印字領域を指定して、文字「ABCDE」を印字するためのサンプルコードを示す。
ページモードの印字方向設定を命令バッファーに追加する(つまり、ページモードの印字方向を指定する)メソッドは、addPageDirection(dir)という構文にしたがう。この機能は、回転が要求されない場合は省略してもよい。dirパラメーターは、ページモードの印字方向を指定する列である。図97は、addPageDirectionメソッドのdirパラメーターのいくつかの例を示す。図98は、時計回りに90度回転させて、文字「ABCDE」を印字するためのサンプルコードである。
ページモードの印字位置設定領域を命令バッファーに追加する(つまり、addPageAreaメソッドで指定された領域内で印字開始位置(座標)を指定する)メソッドは、addPagePosition(x, y)という構文を持つ。xパラメーターは、0〜65535の範囲の整数値で、横方向の印字位置(ドット単位)を指定する。yパラメーターは、0〜65535の範囲の整数値で、縦方向の印字位置(ドット単位)を指定する。図99は、addPageAreaメソッドで指定した領域内の印字開始位置を(50、30)に指定して、文字「ABCDE」を印字するためのサンプルコードを示す。
ページモードの線描画を命令バッファーに追加する(つまり、ページモードで線を描画する)メソッドは、addPageLine(x1, y1, x2, y2, style)という構文にしたがう。x1パラメーターは、0〜65535の整数値で、線の横方向開始位置(ドット単位)を指定する。y1パラメーターは、0〜65535の整数値で、線の縦方向開始位置(ドット単位)を指定する。x2パラメーターは、0〜65535の整数値で、線の横方向終了位置(ドット単位)を指定する。y2パラメーターは、0〜65535の整数値で、線の縦方向終了位置(ドット単位)を指定する。styleパラメーターは、線の種類を指定する列である。図100は、addPageLineメソッドのstyleパラメーターの例を示す。図101は、開始位置(100、0)と終了位置(500、0)の間を細い実線で描画するためのサンプルコードである。
ページモードの四角形描画を命令バッファーに追加する(つまり、ページモードで四角形を描画する)メソッドは、addPageRectangle(x1, y1, x2, y2, style)という構文にしたがう。x1パラメーターは、0〜65535の整数値で、線の横方向開始位置(ドット単位)を指定する。y1パラメーターは、0〜65535の整数値で、線の縦方向開始位置(ドット単位)を指定する。x2パラメーターは、0〜65535の整数値で、線の横方向終了位置(ドット単位)を指定する。y2パラメーターは、0〜65535の整数値で、線の縦方向終了位置(ドット単位)を指定する。styleパラメーターは、線の種類を指定する列である。図102は、addPageRectangleメソッドのstyleパラメーターの例を示す。図103は、開始位置(100、0)と終了位置(500、200)を頂点とする四角形を細い二重線で描画するためのサンプルコードを示す。
用紙カットを命令バッファーに追加する(つまり、用紙カットを設定または起動する)メソッドは、addCut(type)という構文にしたがう。ここで、typeパラメーターは、用紙カットの種類を指定する列である。図104はaddCutメソッドの種類の例を示す。図105は紙送りカットするためのサンプルコードである。
ドロワーキックを命令バッファーに追加するメソッドは、addPulse(drawer, time)という構文を持つ。drawerパラメーターは、ドロワーキックコネクターを指定する列である。図106はaddPulseメソッドのdrawerパラメーターの例を示す。timeパラメーターは、ドロワーキック信号のオン時間(つまり、期間)を指定する、オプションのパラメーター列である。図107はaddPulseメソッドのtimeパラメーターの例を示す。図108は、ドロワーキックコネクター2番ピンに100ミリ秒のパルス信号を出力するためのサンプルコードを示す。
ブザーのオンを命令バッファーに追加する(つまり、ブザーを設定する)メソッドは、addSound(pattern, repeat)という構文をしたがう。patternパラメーターは、ブザーのパターンを指定する、オプションの列である。図109はブザーのパターンの例を示す。repeatパラメーターは、繰り返し回数を指定する、オプションの列である。図110はaddSoundメソッドのrepeatパラメーターの設定の仕方の例を示す。図111は音のパターンAを3回繰り返すためのサンプルコードを示す。
コマンドを命令バッファーに追加する(つまり、ESC/POSコマンドを送信する)メソッドは、addCommand(data)という構文を持つ。ここで、dataは、ESC/POSコマンドを文字列として指定する、オプションの列である。
ePOS-Print Builderオブジェクトにより生成された印刷ドキュメントを取得するメソッドは、toString( )という構文を持つ。図112はtoString( )メソッドの使い方を示すサンプルコードである。
halftoneプロパティは、ハーフトーン処理方法により実現されるが、そのオブジェクト種類はstringである。図113は、モノクロ(2階調)印刷に適用するハーフトーン処理方法の指定の仕方を示す。初期値はHALFTONE_DITHERである。図114は、ハーフトーンの種類を誤差拡散として設定するためのサンプルコードを示す。
明るさ補正は、ガンマー値を設定することで設定してもよい。0.1〜10.0の範囲のガンマー値が明るさ補正値として指定される(つまり、利用可能である)。図115は、明るさを2.2に設定するためのサンプルコードである。
コマンドは、ePOS-Print Builderオブジェクトのメソッドにより通常は追加されるが、プロパティから直接操作して、追加したり削除することができる。図116は、命令バッファーをクリアし、初期状態に戻すためのサンプルコードである。
ePOS-Printオブジェクトのコンストラクターは、新しいePOS-Printオブジェクトを作成し、初期化する。ePOS-Print Builderオブジェクトを使用して作成した印刷ドキュメントを送信して、プリンターを制御し、送信結果または通信ステータスを監視するメソッドは、ePOSPrint(address)という構文を持つ。ここで、addressは、印刷ドキュメントが送信されるプリンターのURL(つまり、ネットワークアドレス)を指定する、オプションの列である。図117は、ePOSPrint(address)の使い方を示すサンプルコードである。
sendメソッドでは、ePOS-Print Builderオブジェクトで作成した印刷ドキュメントを送信する。send(request)という構文を持ち、ここでrequestは、印刷ドキュメントを指定する列である。図118は、send(request)メソッドの使い方を示すサンプルコードである。
openメソッドでは、statusイベント動作を有効化する。addressプロパティにより指定された、プリンターのステータスをイベントで送信し、intervalプロパティにより指定された間隔でステータスを更新する。open( )という構文を持つ。図119は、open( )メソッドの使い方を示すサンプルコードである。
close( )メソッドでは、statusイベント動作を無効化する。図120は、close( )メソッドの使い方を示すサンプルコードである。
addressプロパティは、印刷に使用するプリンターのURLを指定するために使用される。図121は、addressプロパティの使い方の例である。
enabledプロパティは、statusイベント動作の有効/無効設定を保持する、Boolean値である。statusイベント動作の有効/無効設定を論理値で保持する。読み取り専用である。図122は、enabledプロパティの使い方の例である。
intervalプロパティは、ステータスを更新する間隔を指定する。ステータスを更新する間隔をミリ秒単位で指定する。3000ミリ秒(3秒)の初期値を持ち、最小値は1000ミリ秒(1秒以上)である。不正な値を指定した場合、3000ミリ秒とみなす。図123は、intrervalプロパティの使い方の例である。
statusプロパティは、プリンターのステータスを提供する。プリンターから最後に取得したステータスで、読み取り専用である。図124は、statusプロパティの使い方の例である。
onreceiveイベントは、コールバック関数を登録し、応答メッセージ受信イベントを取得するプロパティである。Function(response)という構文を持つ。コールバック関数のパラメーターとしては、resopnseをパラメーターとして、応答メッセージを名称として、objectをオブジェクト種類として含む。図125は、responseオブジェクトのいくつかのプロパティを示す。図126はsuccessの値を示す。図127はcodeの値を示す。図128はstatusの値を示す。図129は、印刷ドキュメントを作成して送信し、印刷結果をメッセージボックスに表示するためのサンプルコードを示す。
onerrorイベントプロパティは、コールバック関数を登録し、通信エラーイベントを取得する。Function(error)という構文を持つ。図130は、errorオブジェクトのいくつかのプロパティを列記する。図131は、印刷ドキュメントを作成して送信し、通信エラー発生時にHTTPステータスコードをメッセージボックスに表示するためのサンプルコードを示す。
onstatuschangeイベントは、コールバック関数を登録して、ステータス変更イベントを取得する。Function(status)という構文を持つ。図132は、onstatuschangeイベントの使い方の例である。
ononlineイベントは、コールバック関数を登録して、オンラインイベントを取得する。Function( )という構文を持つ。図133は、ononlineイベントの使い方の例である。
onofflineイベントは、コールバック関数を登録して、オフラインイベントを取得する。これもFunction( )という構文を持つ。図134は、onofflineイベントの使い方の例である。
onpoweroffイベントは、コールバック関数を登録して、無応答イベントを取得する。これもFunction( )という構文を持つ。図135は、onpoweroffイベントの使い方の例である。
oncoverokイベントは、コールバック関数を登録して、カバークローズイベントを取得する。これもFunction( )という構文を持つ。図136は、oncoverokイベントの使い方の例である。
oncoveropenイベントは、コールバック関数を登録して、カバーオープンイベントを取得する。これもFunction( )という構文を持つ。図137は、oncoveropenイベントの使い方の例である。
onpaperokイベントは、コールバック関数を登録して、用紙ありイベントを取得する。これもFunction( )という構文を持つ。図138は、onpaperokイベントの使い方の例である。
onpapernearendイベントは、コールバック関数を登録して、用紙ニアエンドイベントを取得する。これもFunction( )という構文を持つ。図139は、onpapernearendイベントの使い方の例である。
onpaperendイベントは、コールバック関数を登録して、用紙エンドイベントを取得する。これもFunction( )という構文を持つ。図140はonpaperendイベントの使い方の例である。
ondrawerclosedイベントは、コールバック関数を登録して、ドロワークローズイベントを取得する。これもFunction( )という構文を持つ。図141はondrawerclosedイベントの使い方の例である。
ondraweropenイベントは、コールバック関数を登録して、ドロワーオープンイベントを取得する。これもFunction( )という構文を持つ。図142はondraweropenイベントの使い方の例である。
いくつかのePOS-Print-Canvas API機能を以下に述べる。図143はePOS-Print-Canvas APIのいくつかの構成要素を列記する。
ePOS-Print-Canvas APIオブジェクトは、HTML5-Canvasで描画された印刷イメージを印刷し、印刷結果や通信ステータスを監視する。ePOS-Print-Canvas APIオブジェクトのコンストラクターを使い、新しいePOS-Print-Canvas APIオブジェクトを作成し初期化する。構文はCanvasPrint(address)であり、ここでaddressはaddressプロパティ(印刷に使用するプリンターのURL)を指定する、オプションの列である。図144は、新しいePOS-Print-Canvas APIオブジェクトを作成するサンプルコードを示す。
printメソッドは、HTML5-Canvasで描画されたイメージを印刷する。HTML5-CanvasのRGBAフルカラーイメージの中で指定された範囲を、halftoneプロパティとbrightnessプロパティの設定にしたがって、ラスターイメージデータに変換する。イメージの1ピクセルが1印刷ドットに相当する。イメージに透明色が含まれている場合、イメージの背景色を白とみなす。printメソッドはprint(canvas, cut, mode)という構文を持つ。canvasパラメーターは、印刷するHTML5-Canvasオブジェクトを指定する。cutパラメーターは、用紙をカットするかどうかを設定する、オプションのBooleanである。図145はcutパラメーターの例を示す。modeパラメーターは、カラーモードを指定する、オプションの列である。図146はmodeパラメーターの例を示す。図147はCanvas(ID='myCanvas')を印刷するためのサンプルコードである。
openメソッドでは、statusイベント動作を有効化する。addressプロパティにより指定された、プリンターのステータスをイベントで送信し、intervalプロパティにより指定された間隔でステータスを更新する。open( )という構文を持つ。図148はopen( )メソッドの使い方を示すサンプルコードである。
close( )メソッドでは、statusイベント動作を無効化する。close( )という構文を持つ。図149はclose( )メソッドの使い方を示すサンプルコードである。
addressプロパティは、印刷に使用するプリンターのURLを指定する。図150はaddressプロパティの使い方を示すサンプルコードである。
enabledプロパティは、statusイベント動作の有効/無効設定を保持する。Booleanタイプで、statusイベント動作の有効/無効設定を論理Boolean値で保持する。読み取り専用であり、初期値はfalseである。図151はenabledプロパティの使い方を示すサンプルコードである。
intervalプロパティは、ステータスを更新する間隔を指定する。ステータスを更新する間隔をミリ秒単位で指定する。初期値は3000ミリ秒(3秒)で、最小値は1000ミリ秒(1秒以上)である。不正な値を指定した場合、デフォルトで、3000ミリ秒とみなす。図152はintervalプロパティの使い方を示すサンプルコードである。
statusプロパティは、プリンターのステータスを提供する。これは、プリンターから最後に取得したステータスである。読み取り専用で、初期値は0である。図153はstatusプロパティの使い方を示すサンプルコードである。
ハーフトーン処理方法では、モノクロ(2階調)印刷に適用されるhalftoneプロパティを指定する。初期値はHALFTONE_DITHERである。図154はいくつかのhalftoneプロパティを示す。図155はhalftoneプロパティの使い方を示すサンプルコードである。
brightnessプロパティは、ガンマー値で設定する。具体的には、0.1〜10.0の範囲のガンマー値が、明るさ補正値として指定される。初期値は1.0である。図156はbrightnessプロパティの設定を示すサンプルコードである。
onreceiveイベントは、コールバック関数を登録し、応答メッセージ受信イベントを取得するプロパティである。Function(response)という構文を持つ。コールバック関数のパラメーターとしては、resopnseをパラメーターとして、応答メッセージを名称として、objectをオブジェクト種類として含む。図157はresponseオブジェクトのいくつかのプロパティを示す。図158はsuccessの値を示す。図159はcodeの値を示す。図160はstatusの値を示す。図161はCanvas(ID=myCanvas)を印刷し、印刷結果をメッセージボックスに表示するためのサンプルコードを示す。
onerrorイベントプロパティは、コールバック関数を登録し、通信エラーイベントを取得する。Function(error)という構文を持つ。図162はerrorオブジェクトのいくつかのプロパティを列記する。図163はCanvas(ID=myCanvas)を印刷し、通信エラー発生時にHTTPステータスコードをメッセージボックスに表示するためのサンプルコードを示す。
onstatuschangeイベントは、コールバック関数を登録して、ステータス変更イベントを取得する。Function(status)という構文を持つ。図164はonstatuschangeイベントの使い方を示すサンプルコードである。
ononlineイベントは、コールバック関数を登録して、オンラインイベントを取得する。Function( )という構文を持つ。図165はononlineイベントの使い方の例である。
onofflineイベントは、コールバック関数を登録して、オフラインイベントを取得する。これもFunction( )という構文を持つ。図166はonofflineイベントの使い方の例である。
onpoweroffイベントは、コールバック関数を登録して、無応答イベントを取得する。これもFunction( )という構文を持つ。図167はonpoweroffイベントの使い方の例である。
oncoverokイベントは、コールバック関数を登録して、カバークローズイベントを取得する。これもFunction( )という構文を持つ。図168はoncoverokイベントの使い方の例である。
oncoveropenイベントは、コールバック関数を登録して、カバーオープンイベントを取得する。これもFunction( )という構文を持つ。図169はoncoveropenイベントの使い方の例である。
onpaperokイベントは、コールバック関数を登録して、用紙ありイベントを取得する。これもFunction( )という構文を持つ。図170はonpaperokイベントの使い方の例である。
onpapernearendイベントは、コールバック関数を登録して、用紙ニアエンドイベントを取得する。これもFunction( )という構文を持つ。図171はonpapernearendイベントの使い方の例である。
onpaperendイベントは、コールバック関数を登録して、用紙エンドイベントを取得する。これもFunction( )という構文を持つ。図172はonpaperendイベントの使い方の例である。
ondrawerclosedイベントは、コールバック関数を登録して、ドロワークローズイベントを取得する。これもFunction( )という構文を持つ。図173aはondrawerclosedイベントの使い方の例である。
ondraweropenイベントは、コールバック関数を登録して、ドロワーオープンイベントを取得する。これもFunction( )という構文を持つ。図173bはondraweropenイベントの使い方の例である。
好適には、本発明はさらに、ePOS Print editorを組み込む。本発明のePOS Print editorの使用方法について以下に記載する。本ツールにより、ePOS-Print APIとサンプルコードを随意に作成することができる。以下のePOS Print editorを使用して、本発明のWebアプリンターケーションを開発してもよい。
好適には、本ePOS Print editorは、Webブラウザー環境内で動作する。すべての利用可能な印刷APIメソッド/オブジェクトを利用するために、WebブラウザーがHTML5-Canvasをサポートしていることが好適である。したがって、Webブラウザーは、次の(または類似の)Webブラウザーから選択されることが好適である。Windows Internet Explorer 9以降、Mozilla Firefox 13以降、Google Chrome 19以降、Apple Safari 5.1.7以降、iOS 5.1以降のiPad Safari。
希望があれば、ePOS Print editorは、サーバー、インテリジェントモジュール(上記)、またはTMインテリジェントプリンターで保持(つまり、記憶され、そこからアクセス)される。たとえば、IPネットワーク上で本ePOS Print editorのメインページ(つまり、index.HTMLまたはホームページ)をアクセスするには、Webブラウザーにeditorのネットワークアドレス、たとえば、http://[WebサーバーのIPアドレス、インテリジェントモジュールのIPアドレス、またはTMインテリジェントプリンターのIPアドレス]/editor/index.HTML、を入力してもよい。こうして、インテリジェントモジュール、またはTMインテリジェントプリンターにアクセスすると、上記のように、組み込まれた印刷APIを持つWebページアプリケーションを作成するために、文字編集(具体的にはePOS print編集)を提供するようにどちらも機能することができる。
ePOS Print editorにより、所望の機能を選択するためにグラフィックユーザーインターフェース、つまり、GUI、を利用して、カスタマイズしたePOS-Print APIまたはカスタマイズしたePOS-Print-Canvasに望まれる機能を記述することができ、editorに自動的に必要なスクリプトコードを生成させることができる。また、印刷物がどのように見えるかのステンシルまたはレイアウトをグラフィックの形でGUIを利用して描画または表現することで、editorを使用してもよく、そしてまた、所望の結果の見栄えと機能を達成するために必要なスクリプトコードをeditorは生成してもよい。
図174は、本発明のePOS Print editorのサンプルメインページ(すなわち、index.HTMLまたはホームページ)である。好適には、Webブラウザー161のアドレスフィールド163にePOS Print editor195のIPアドレスを入力することで、ePOS Print editorにWebブラウザー161経由でアクセスする。ePOS Print editorのメインページには、editorの能力を機能の種類で分類した、複数のタブ165a〜165fが含まれる。たとえば、タプ165aは、編集機能を選択し、それによりメイン編集領域またはウィンドウ167が立ち上がる。タブ165bはプレビュー機能を提供し、現在作業しているプロジェクトがどのように実行するかをプレビューする。APIタブ165cでは、ユーザーの要求を達成するために基礎となり得るモデルAPIコードを表示することができる。または、APIタブにより、共通のユーザー要求に対応した複数のあらかじめ定義された印刷APIの選択を提供することができる。さらにまた、API165cでは、現在のプロジェクト用のスクリプトコードを表示するウィンドウを立ち上げることができる。タブ165dはXMLという名称で、XML印刷ファイルを見て編集するために使用することができる。たとえば、プロジェクトをプレビューしているときに、現在のプロジェクトのXML印刷ドキュメントをXMLタブ165dで示すことができる。さらにまた、既存のXML印刷ドキュメントをさらに編集するためにインポートすることができる。本ePOS Print editorにより生成されたスクリプトコードを示すことに加えて、別の実施例では、APIタブ165cまたはXMLタブ165dにより、ユーザーが手でコードを編集することをさらに認めてもよい。印刷タブ165eは、現在の作業を印刷するための印刷オプション、または、画面上で見ることができる、あるいは接続されたプリンターへ送信された、現在のコードを模擬的に実行したときの印刷物を生成することで現在の作業を試験するための印刷オプションを立ち上げる。対象プリンターの機種、インテリジェントモジュールまたはTMインテリジェントプリンターのIPアドレス、対象プリンターのデバイスID、タイムアウト期間設定、および/またはプリンターステータスを監視するか否かの選択などのオプション選択などの、実行のために必要な設定を設定タブ165fにより、入力できる。
メイン編集領域167では、本発明の印刷APIにプログラムしてもよい、異なる編集機能選択肢(つまり、機能アイコンやソフトウェアボタンを通して選択できる選択肢)を選択する。これらの機能はさらに小分類される。
たとえば、第1の小分類169は、ほとんどの印刷ドキュメントで使用することがある最も共通の操作を提供する。第1の小分類は共通と名付けられていて、位置揃え、改行量、倒立印字などの機能が含まれる。位置揃え機能は、文字および/またはグラフィックスの所望の位置揃えを指定する(左揃え、中央揃え、右揃え、カスタマイズ揃えなど)。改行量機能により、ドット単位、または、インチおよび/またはセンチメートルなどの測定単位で所望の改行量を指定することができる。倒立印字機能は、文字および/またはグラフィックスの所望の倒立向きを指定する。倒立印字機能は、90゜、180゜、270゜などの固定選択肢に分けてもいいし、0゜〜360゜の範囲内でユーザーが指定してもいい。
第2の小分類171は、文字に関連する機能を提供し、文字と名付けられている。文字小分類には、言語、フォント、印字位置、スムージング、倍率、倍角、装飾、文字などの機能が含まれる。言語機能には、印刷物のために特定の言語を指定する役割がある。たとえば、日本語、英語、スペイン語、ドイツ語などから選択してもいい。フォント機能は、インストールされたフォントオプションのライブラリーから特定のフォントを指定する。印字位置機能は、文字印字が開始する、左端(または右端、上端、下端(大きさの決まった用紙に印刷の場合))からの位置を指定する。知られているように、選択した特定のフォントの倍率によっては文字は風変わりに見えることがある。スムージング機能は、このぎざぎざした、風変わりな見栄えを除き、文字の端部を滑らかにする。倍率機能は、特定の文字の倍率を指定する。倍角機能では、倍角で印刷するべき特定の文字を素早く指定する方法を提供する。装飾機能は、特定の文字装飾、つまり、下線、太字、イタリック体、色つき反転などを指定する。文字機能は、指定された文字を印刷する範囲および/または印刷する文字を指定する。
第3の小分類173は、紙送りに関連する機能を提供し、紙送りと名付けられている。紙送り小分類には、単位ごと、行数ごと、改行などの機能が含まれている。単位ごと機能では、紙送り量を、ドット、インチ、および/またはセンチメートルなどの測定単位で指定する。行数ごと機能では、紙送り量を、行数(つまり、1行ごとに増やして)で指定する。改行機能では新しい行を(つまり、キャリッジリターン機能タイプと類似の方法で1行ごとに増やして)提供する。
第4の小分類175は、画像に関連する機能を提供し、画像と名付けられている。画像小分類には、イメージ、NVロゴなどの機能が含まれる。イメージ機能では、ユーザーの提供するイメージの挿入がなされ、また、線、円、四角形などの基本形状を含む、描画ソフトウェアツールによる新しいイメージを作成(つまり定義)する機能をユーザーに提供してもいい。NVロゴ機能は、プリンターにすでに記憶された、アドレスで呼び出せるイメージに依存し、アドレスまたはローカルIDによりそれらのイメージの選択された一つを呼び出す。すなわち、NVロゴイメージのアドレスは、プリンター内の(好適には)不揮発性メモリーのローカルな(つまり、内部の)メモリー空間内の特定の記憶されたイメージを識別するIDコードでもいい。典型的には、NVロゴイメージは企業のロゴのイメージであるが、ロゴだけに限定されるものではない。
第5の小分類177は、バーコードに関連する機能を提供し、バーコードと名付けられている。バーコード小分類には、バーコード、2次元コードなどの機能が含まれる。バーコード機能は、(ユーザーが指定した種類の)リニアーバーコードを符号化する。すなわち、ユーザーは符号化される情報を提供し、提供した情報を符号化するリニアーバーコードを生成するためにバーコード機能を選択することができる。バーコード機能はさらに、定義したリニアーバーコードの大きさや位置などのオプションを含んでいてもいい。2次元コード機能は、QRコード(登録商標)のような、特定の種類のマトリックス(つまり、2次元)バーコードを符号化する。上記と同じように、ユーザーは符号化される情報(文字および/またはグラフィックス)を提供し、提供した情報を符号化するマトリックスバーコードを生成するたまに2次元コード機能を選択することができる。2次元コード機能はさらに、定義したマトリックスバーコードの大きさや位置などのオプションを含んでいてもいい。
第6の小分類179は、ページモードに関連する機能を提供し、ページモードと名付けられている。ページモード小分類には、ページ開始、印字領域、印字方向、印字位置、ページ終了などの機能が含まれる。ページ開始機能は、ページモード領域の開始位置を指定することができ、ページ終了機能は、ページモード領域の終了位置を指定することができる。印字位置機能は、ページモード印刷領域が位置するべき、印刷領域内の位置を指定してもいい。印字領域機能は、ページモード領域の指定領域(つまり2次元の大きさ)を指定することができる。最後に、印字方向機能は、ページモード領域の表現された内容の向きを指定することができる。たとえば、ページモードで水平に配置された文字が含まれている場合、同じ文字を垂直方向に沿って印刷するために印刷方向機能を使ってもいい。
第7の小分類181は、第1から第6までの小分類に含まれていない、残りの機能すべてをまとめてグループにすることができ、その他と名付けられている。本例においては、その他小分類には、用紙カット、ドロワーキック、ブザー、コマンドなどの機能が含まれる。コマンド機能では、プリンターへ送信するコマンドを指定する。プリンターが、用紙カッター、ドロワー、ブザーを持つPOSプリンターだと仮定すると、用紙カットコマンドにより、プリンターが印刷する印刷媒体(つまり、用紙)をカットするコマンドを発行し、ドロワーキックオプションにより、プリンターのドロワーをキックオープンするコマンドを挿入し(起動される特定のドロワーラッチコネクタをそれぞれ識別してもよく)、ブザーにより、特定のブザーパターンで特定の期間、そしてブザー動作の特定の繰り返し回数でブザーを起動するために、プリンターへのコマンドを定義する。
図175は、本発明のePOS Print editor195の設定タブ165fを選択することで生ずる設定画面を示す。設定画面では、対象プリンターの機種を入力する、または選択するためにプリンター機種フィールド183が提供される。インテリジェントモジュール、またはTMインテリジェントプリンターのIPアドレスを入力するIPアドレスフィールド185も提供される。デバイスIDフィールド187は対象プリンターのデバイスIDを受け取るが、対象プリンターに割り当てられたID名でもよい。印刷タイムアウトフィールド189には、行った印刷動作のタイムアウト期間を(ミリ秒単位で)設定することができる。プリンターのステータスを監視するか否かを選択する選択ボタン191も提供される。図176は、設定画面により提供されるオプションのいくつかをまとめた表である。
図177は、本発明のePOS Print editorの編集画面の、より小さい、別の図である。本編集画面は、図177で編集領域193を追加的に示すことを除けば、図174と同様である。上記のように、メインメニュー領域167では利用可能な機能が表示される。アイコンをクリックする(つまり、メインメニュー領域167からソフトウェアボタンを選択する)ことでそれを編集領域193の下部に追加することができる。アイコンをドラッグ(つまり、移動)して編集領域193のどこへでも挿入することもできる。編集領域193内のアイコンの位置は、最終的なスクリプトコードファイル内の関係するコードの位置(つまり、順序)を指定する。機能アイコン(または要素)を配置したあとで、必要に応じてそれを構成する。たとえば、NVロゴを編集領域167に追加した場合、選択するイメージを識別するキーコードを入力することでそれをその後構成する。編集領域193内に同じ機能アイコンを複数個持つことができることは理解されるだろう。こうして、メニュー領域で選択された機能(つまり、要素)を編集領域193で表示する。これらの要素は、編集領域193内でいつでも上や下へドラッグして、実行順序を変更することができる。各要素にはXボタンが右側に与えられ、どの要素も対応するXボタンによって削除可能である。インポートオプション197により、ePOS-Print Editorは過去の記憶したXMLデータをインポートできる。消去オプション199により、編集領域193内の編集した詳細内容を消去する。
図174に示すように、プレビュータブ165bを選択すると、プレビューイメージが提供される。図178は、本発明のePOS Print editorのサンプルプレビューイメージを示す。印刷ドキュメントのプレビュー101である。
プリンターが接続されている場合、印刷タブ165eを選択することでコードを試験するために実際の印刷を行ってもよい。図179は、印刷タブが選択されたときのePOS Print editorの図の例である。印刷タブ165eは、XML印刷ドキュメントのプレビューイメージを見るために利用してもいいし、XML印刷ドキュメントをインポートするために利用してもいい。たとえば、印刷タブ165eにより既存のXML印刷ドキュメントを開いてもいいし、コピーするなどして、XML印刷ドキュメントの内容を保存してもよい。ePOS-Print XMLドキュメントは、送信するデータ(ePOS-Print XML)区画に表示される。送信オプションを選択すると、プリンターへデータが送信され印刷される。情報区画には印刷ステータスが表示される。消去オプションを選択すると、情報ボックスの内容が消去される。
図180は本発明のインポート画面を示す。インポートされるePOS-Print XML印刷ドキュメントは、インポートするデータ(ePOS-Print XML)区画にペーストされ確認される。適用オプションを選択すると、ePOS-Print XML印刷ドキュメントがインポートされる。情報区画にはインポート情報または必要な情報が表示される。閉じるオプションで、インポート画面が閉じられる。
本発明の好適な実施例において、図174に示すように、APIタブ165cを選択すると、ePOS-Printサンプルコードが提供される。図181は、APIタブが選択されたときのePOS Print editorの図の例である。サンプルコードをコードファイルまたは編集領域にコピーすることで、ユーザーはサンプルコードを利用できる。
いくつかの特定の実施例とともに本発明を説明したが、上記の説明を考慮すると、さらに多くの代替例、変形例、変更例が明らかであることは当業者には明白である。こうして、すべてのそのような代替例、変形例、応用例、変更例は、添付の請求項の趣旨と範囲に入るものとして、ここに説明した発明が包含すると解釈される。