(57)【特許請求の範囲】
【請求項１】
プリンターと、Webアプリケーションを保持するWebサーバーとにアクセスする端末を制御する方法であって、
前記端末は、
アプリケーションプログラムインターフェース（API）が組み込まれた前記Webアプリケーションを前記Ｗｅｂサーバーから取得し、
前記APIは、
前記プリンターのネットワークアドレスを指定するように構成されたaddressプロパティ要素と、
前記プリンターのステータスを確認するstatusイベント動作を有効化するように構成されたopenメソッド要素と、
命令バッファーに前記プリンターを制御するコマンドを加え、ドキュメントを作成するように構成された第１のメソッド要素と、
作成された前記ドキュメントをネットワークを通して前記プリンターへ送信するように構成された第２のメソッド要素と、を含み、
前記端末は、
前記addressプロパティ要素を用いて前記プリンターのネットワークアドレスを指定し、
前記openメソッド要素を用いて前記statusイベント動作を有効化し、
前記statusイベント動作を有効化した後、指定された前記ネットワークアドレスを持つ前記プリンターのステータスを取得し、
前記端末は、
前記第１のメソッド要素を用いて前記ドキュメントを作成し、
前記第２のメソッド要素を用いて前記ネットワークアドレスを持つ前記プリンターに前記ドキュメントを送信する、
端末の制御方法。
【請求項２】
前記APIは、
statusイベント動作を無効化するように構成されたcloseメソッド要素を含み、
前記端末は、
前記closeメソッド要素を用いて前記statusイベント動作を無効化する、
請求項１記載の制御方法。
【請求項３】
前記APIは、
前記プリンターの前記ステータスを更新する間隔をあけるための時間間隔を指定するintervalプロパティ要素を含み、
前記端末は、
前記intervalプロパティ要素を用いて前記時間間隔を指定する、
請求項１又は２に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、TCP/IPネットワーク上での印刷に関する。特に、販売時点情報管理（POS）ネットワークにおける印刷に関する。
【背景技術】
【０００２】
ネットワーク印刷とは、コンピューターネットワーク上で印刷資源を共有することを意味する。図１に示すように、ネットワーク印刷は初期には、印刷サーバー、またはプリンターサーバーとして応用されている。プリンターサーバー１１は、共通のコンピューターネットワーク１７上でクライアントプリンター１３ａをプリンター１５ａに接続する装置である。つまり、クライアントコンピューター１３ａは印刷ジョブをプリンターサーバー１１へ送り、プリンターサーバー１１はその印刷ジョブを受け取って保持し（つまり、スプールし）、プリンター１５ａが利用できるようになった時点でプリンターサーバー１１は保持したその印刷ジョブを印刷のためにプリンター１５ａへ送る。プリンターサーバー１１は、複数のプリンター１５ａ〜１５ｉにおいて、複数のクライアントコンピューター１３ａ〜１３ｎからの印刷ジョブを管理してもよいことは理解されるだろう。また、コンピューターネットワークには、有線通信リンクと無線通信リンクの両方が含まれてもよいことは理解されるだろう。それぞれのプリンター１５ａ〜１５ｉはローカルプリンターおよび／またはネットワークプリンターでよい。それぞれのプリンター１５ａ〜１５ｉは、プリンターサーバー１１と直接ケーブル接続（たとえば、パラレルケーブル、USBケーブル、専用ケーブルなど）を通して、または有線ネットワーク接続（標準化されたネットワークカテゴリーケーブル（つまり、CAT5, 5e, 6）に関するIEEE802.11など）により、または無線ネットワーク接続（IEEE802.11a/b/g/nなど）により、または別の既知の無線ネットワーク接続（Bluetooth（登録商標）、HomeRF、HyperLanなど）により、直接接続されていてもよい。
【０００３】
プリンターサーバー１１は、対象のプリンターが利用可能になるのを待つ間に、印刷ジョブの順番付け（スプーリング）を監督する。また、プリンター動作（たとえば、印刷したページ数や印刷時間など）の記録を取りながら、待ち行列の中の印刷ジョブを再度順番付けしたり削除したりすることを監督してもよい。結果として、プリンターサーバー１１は、一般には複数の業界標準および／または専用の印刷プロトコールをサポートし、したがって、その管理の下に各プリンターのプリンタードライバーを含むこともある。プリンターサーバーは私的なネットワークによく適しているが、公的ネットワークと私的ネットワークの両方に、多くの用途を生むインターネットプロトコールTCP/IPを利用する方向へ業界が進んでいるため、インターネットでのインターフェースを通して公的なネットワークにおいて印刷機能を組み込むことが望ましくなってきている。
【０００４】
Webプラウザーは、よく利用されているインターネットインターフェース（一般的にはワールドワイドウェブ、つまりWWWまたはインターネット、の上で利用される）で、ハイパーテキストマークアップ言語（HTML）に基づくWebページを表示する。マークアップ言語は、タグを使用する文字に基づく言語システムで、人間が読むことのできる原文通りの書式で機械が実行できる命令を提供する。たとえば、Webページ上で表示のために情報をどのような書式にするか（表示画面上で、Webページ情報をどのように表示するか）、または所望の実行可能な機能をどのように指定するかについて、Webプラウザーにタグで指示することがある。
【０００５】
インターネットの発展にしたがって、HTMLの初期のバージョンで利用できたよりもさらに高機能を提供することが望ましくなった。この要望に取り組むために、HTMLのWebページ内に組み込むことができる、必要な機械コードすべてを提供するためにJava（登録商標）言語が適用された。これらの小さなアプリケーションはアプレットとして知られるようになった。Javaは、小さな装置や器具を制御するアプリケーションなど、多くのアプリケーションで使用される、すべての機能を持つオブジェクト指向プログラミング（OOP）言語である。
【０００６】
装置を制御するためにJavaアプリケーションを作成した企業では、それらの装置の制御プログラムについての専用の情報を公表することなく、サードパーティメーカーがそれらの装置を簡単に採用することを望んでいた。これは、アプリケーションプログラムインターフェース（API）ライブラリーを利用することで達成された。これらのライブラリーは、簡略化されたインターフェースを制御アプリケーションに提供し、それによって、サードパーティメーカーによる制御プログラムの採用を簡単にした。基本的には、APIは、たとえば、OOP言語におけるオブジェクトやクラスにある様な、入力要件と出力要件を指定した共通のコードの集まりであって、共通コードは、コード化されたアプリケーションにインターフェースを提供する。このように、ユーザーは特定のソフトウェアツールを再度コード化する必要がなく、また、そのソフトウェアツールをどのようにコード化するかを知る必要さえない。単にそのソフトウェアツールの呼び出し方、そのツールへの指定したパラメーターの渡し方、そのツールに所望の機能を実行させる方法、そして、指定した出力の受け取り方を知っていさえすればよい。JavaによってWebページはより弾力的になったが、Javaアプリンターケーション（そしてアプレット）は、スクリプトではなく機械コードの形で提供される、コンパイルされたプログラムであり、したがって、人間にはすぐには読めない。このように、アプレットの使用により、HTMLコードの可読性は減少した。
【０００７】
JavaScript（登録商標）は、スクリプト言語の形でJavaの弾力的な機能のいくつかを提供するが、この問題に取り組んでいる。JavaScriptはスクリプト言語であるため、JavaScriptコードを前処理する（つまり、コンパイルする）ことなく、JavaScriptコードをHTMLで実行できる。したがって、スクリプト（つまり、原文）の形のままである。Javaアプレットのように、JavaScriptは、HTMLのWebページに埋め込むことができる。そして、そのHTMLのWebページがダウンロードされるとき、またはトリガーイベントに反応して、WebブラウザーはJavaScriptを実行することになる。JavaScriptにより、Webページは弾力的にその内容を変更したり、現在のWebページに内容を加えたり、そのWebページから内容を送ったりすることができる。JavaScript、そしてほかのスクリプト言語では、WebブラウザーとWebブラウザーが動作しているオペレーティングシステムとの間の橋を提供することで、Webページはより対話的になることができる。これにより、Webページはユーザーのローカルな装置環境から情報を、たとえば、Webページに提供しても安全であるとWebプラウザーおよび／またはオペレーティングシステムがみなす、装置の位置やほかのユーザーの情報を、組み込むことできる。
【０００８】
JavaScriptの採用により、特定のタスクを実行するように設計された完全なスクリプトアプリケーションをソフトウェアデベロッパーは提供し始めた。これらのスクリプトアプリケーションがWebページに挿入するユニットとしてひとまとめにされると、ウィジェット（widget）と呼ばれるときがある。各ウィジェットは完全なスクリプトコードであるため、Javaアプレットにおける入力と出力の使い方と類似したやり方で、予期された入力の組と可能な出力のリストをウィジェットが持ってもよい。その結果、APIもスクリプトコード用に開発されてきてもいる。たとえば、ある会社が特定の装置で動作するスクリプトコードのライブラリーを作り、そのスクリプトコードをサードパーティデベロッパーのコードに統合しやすくするAPIのリストを提供してもよい。このようにして、サードパーティデベロッパーはその会社の装置がどのように動作するかを理解したり、その装置をどのようにプログラムするかを知る必要がない。提供されたAPIおよび／またはウィジェット（つまり、スクリプトコード）を使用することで、サードパーティデベロッパーは、その会社の装置の制御をすぐに挿入することができる。
【０００９】
これが、Webブラウザーからの印刷、つまり、HTML印刷、という話題につながる。ほとんどのWebプラウザーではツールバー（つまり、異なるタスクを呼び出すための選択可能なソフトウェアボタンという、目に見えるリスト）に印刷機能を提供している。そして、ユーザーがこの印刷機能を選択したときに、ローカルな装置のオペレーティングシステムの印刷APIを通してローカルな装置のプリンターをWebブラウザーがアクセスする。すなわち、Webブラウザーが動作している装置でどのような種類の印刷能力が利用できるかを、もしあったとしても、Webブラウザーは知らないし、セキュリティー上の理由から、オペレーティングシステムはこの情報をWebブラウザーとは共有しない。従って、Webブラウザーで印刷するには、Webブラウザーはオペレーティングシステムの印刷インターフェースを呼び出すことで、オペレーティングシステムへこの機能リクエストを渡さなくてはならない。
【００１０】
その結果、図２に示すように、Webページからの印刷はプリンターダイアローグボックスを通る必要がある。プリンターダイアローグボックス１９はプリンター情報を提供し、印刷ドキュメントの書式を整えるために選択するオプションをユーザーに提供する。これらのオプションはプリンターの能力から決まるが、それらの能力はプリンタードライバーによって提供される。たとえば、プリンターダイアローグボックス１９は、複数の利用可能なプリンターから選択を行う、プリンター選択オプション２１を提供することがある。ボックス２１ａ〜２１ｃは、選択したプリンターの情報を提供することができ、それぞれ、たとえば、そのステータス、種類、場所である。ほかのオプションとしては、選択ボタン２３で示すように、モノクロ印刷かカラー印刷かの選択を含んでもよい。ユーザーは印刷するページの範囲を入力してもよく、および／または、選択ボタン２５と２７で示すように、用紙の種類や用紙の向きを選択してもよい。
【００１１】
クイック印刷オプションを提供するWebブラウザーもある。これは、プリンターダイアローグボックスを使用することなく、その代わりに、印刷リクエストをデフォルトプリンターへ送り、プリンターのデフォルト設定をすべて受け入れることにより、現在表示されているWebページを印刷のために送信する。このリクエストはローカルなオペレーティングシステムの印刷APIへ送られる。印刷APIがクイック印刷をサポートしていて、デフォルト印刷とデフォルト設定が割り当てられていれば、印刷のためにWebページを受け入れることになる。望ましくないことだが、Webページ全体が印刷のために送られる。このように、Webページデベロッパーは、どのようにWebページが印刷されるか、またはどの部分が印刷されるかについての制御ができないし、一般に何が印刷されるかも制御できない。また、Webページデベロッパーは、どのプリンターが利用できるかも知らないし、その印刷能力も知らないし、各プリンターのデフォルト設定がどのようになっているかも知らない。まとめると、Webブラウザーはローカルな装置のオペレーティングシステムに働きかけをし、そのローカルなオペレーティングシステムにより適切なプリンタードライバーがアクセスされるだろうと仮定する。
【００１２】
XMLプリンターは、プリンタードライバーへの依存性を減らし、印刷ドキュメントの書式をもっと制御できるように開発されてきた。XMLプリンターはWebページだけに限定されているのではなく、ローカルの仮想プリンターとして動作することができる。すなわち、あたかも物理的なプリンターのように印刷リクエストに応答するが、物理的に印刷ドキュメントを作成するのではなく、その代わりに印刷ドキュメントがどのように見えるかを示すスクリプト言語記述を作成する。これは、表示画面上でのWebページの見栄えと書式を定義するためにHTMLスクリプト言語が使用されるやり方に類似している。そして、このスクリプト言語記述は、物理的な印刷物を作成するためにXML印刷をサポートする物理的なプリンターへと送ることができる。標準的には、XMLプリンターは、異なるプラットフォーム間と異なるドキュメント書式間で印刷の一貫性を維持するために利用される。たとえば、マイクロソフト社のワードで作成されたドキュメントが、アドビ社のアクロバットで作成された同じ文書と同じように印刷されることを、XML印刷ドキュメントファイルは保証している。
【発明の概要】
【発明が解決しようとする課題】
【００１３】
このように、XML印刷ドキュメントファイルと、XML印刷ドキュメントファイルを読むことができるプリンター（またはプリンタードライバー）があれば、プリンタードライバーの要求件の必要なしにそのプリンターへそのXML印刷ドキュメントファイルを送ってもよい。そのプリンター（またはプリンタードライバー）は、そのドキュメントの見栄えについてのスクリプトされた記述を読み、印刷のための固有の印刷イメージを生成することになる。XMLプリンターはプリンタードライバーへの依存性を減らし、それによりネットワーク上での印刷をし易くするが、どのような追加の印刷制御もWebページデベロッパーへは提供しない。すなわち、Webページデベロッパーは依然として、スクリプトアプリケーションやウィジェットの中から印刷を制御することはできず、それよりも印刷インターフェースとしてのWebプラウザーに依存する。
【００１４】
この点について、JavaScriptは何の支援も行わない。Webブラウザーはローカルなオペレーティングシステムとインターフェースし、ローカルなプリンターのAPIへアクセルしたり、XMLプリンターを呼び出してXML印刷ドキュメントを作成したりすることはあるかもしれないが、セキュリティー上の理由から、この情報をWebブラウザーはそこにあるJavaスクリプトとは共有しない。すなわち、JavaScriptの仕事は、従来は、Webページ上の情報を定義し、弾力的な機能性を提供することで、ドキュメントを印刷することはJavaスクリプトの仕事ではない。印刷機能を制御するのはWebブラウザーの仕事であり、そうしてこの制御を内部のスクリプトアプリケーションと共有はしない。その結果、これまでのところ、Javaスクリプトアプリケーションは、プリンターを直接制御することはできず、印刷リクエストの作成をWebブラウザーに要求しなければならない。そして、そのリクエストに応じて、Webブラウザーが印刷リクエストを作成し、次にはそのリクエストをローカルなオペレーティングシステムへ中継し、そして、ローカルなオペレーティングシステムが印刷ダイアローグボックスを呼び出してローカルな／ネットワーク接続されたプリンター（実物の、または仮想的）を設定することになる。
【００１５】
これらの困難にも関わらず、Web印刷、つまり、インターネット上での印刷へと歩みが進められてきた。たとえば、インターネット印刷プロトコール（IPP）は、インターネット上でのリモート印刷のために標準的なネットワークプロトコールを提供する。これにより、ユーザーのそれぞれの機器にそれぞれの印刷ドライバーが必要ではなくなる。IPPは、さまざまな印刷の必要性に、たとえば、印刷ジョブ、メディアの大きさ、解像度などの管理に、対しての制御を提供し、あたかもプリンターがローカルであるかのように類似の方法と操作をユーザーへ提供することを意図している。基本的には、IPPは、ネットワーク印刷プロトコールを定義するオープンな標準を集めたものであり、プリンターベンダーがこの標準を採用したら、IPPにより、ユーザーは、プリンターの能力の情報を得て、印刷ジョブのステータスを要求、または提出された印刷ジョブをキャンセルするために、ベンダーのプリンターと実時間で対話できるようになる。ローカルなプリンターの場合のように、この対話はプリンターダイアローグボックスを通して行われることになる。
【００１６】
インターネット印刷を提供するための別の手法としてはGoogle Cloud Printing（登録商標）、いわゆるGCP、が知られている。これはGoogle（登録商標）社が提供するサービスで、基本的には、デベロッパーが、印刷能力をデベロッパーのWebページやサービスに組み込むことを容認するものである。これは、Google社へ印刷要求を送り、Google社に印刷ジョブ（PDF印刷ジョブに限る）を準備させ、Google社にそれらをユーザーのあらかじめ登録されたプリンターへ転送させることでなされる。Google（登録商標）社はAPIを提供して、デベロッパーが必要なコードをすぐに組み込むことを容認し、標準の印刷ダイアローグボックスを使用して、PDF印刷ジョブを作成して提出する。理解されるだろうが、これは、Google社が印刷されるすべてのドキュメントにアクセスすることを意味するが、ユーザーに取ってはセキュリティーとプライバシーの問題が生じる。さらに記すべき点は、このサービスの別の制限として、印刷されるドキュメントは、ユーザーのコンピューター上に単にあるのではなく、すでにウェブ上にあることが要求される点である。したがって、ウェブ上にはない、ローカルに生成されたドキュメントを印刷するためには、このサービスは使用することができない。
【００１７】
必要なのは、Webブラウザー内からの印刷についてユーザーから行う制御を拡大するための方法である。
【００１８】
さらに好適であるのは、印刷要求をローカルなWebブラウザーへ送る必要性なしに、JavaScriptウィジェットなどのスクリプトアプリケーションを直接通してプリンターへデベロッパーが直接アクセスする、そしてプリンターを制御することである。
【００１９】
また、Webページの中のスクリプトアプリケーションで、印刷する情報を直接生成し形式を整え、印刷ダイアローグボックスの必要性なしに、またはWebページ内の内容による制限なしに、プリンターへ直接その情報を送ることができることが望ましい。
【００２０】
さらに、印刷ジョブを管理するために第三者に依存することなく、直接的なWeb印刷能力をユーザが持つことが望ましい。
【課題を解決するための手段】
【００２１】
上記の目的は、Webアプリケーションでドキュメントを作成し、ドキュメントをネットワークを通してプリンターへ送信する方法において達成される。WebアプリケーションはWebブラウザーにより実行され、前記方法は、アドレスを設定され、ドキュメントを受信し、ドキュメントをプリンターへ送信するように構成されていて、プリンターに接続するように構成されたインテリジェントモジュールを提供するステップと、アプリケーションプログラムインターフェース（API）は、インテリジェントモジュールのアドレスを指定するように構成されたaddressプロパティ要素と、命令バッファーにプリンターを制御するコマンドを追加し、命令バッファーのコマンドを集積することによりドキュメントを作成するように構成された、第１のメソッド要素と、ドキュメントをインテリジェントモジュールへ送信するように構成された、第２のメソッド要素とを含むプリケーションプログラムインターフェース（API）をWebアプリケーションに組み込むステップと、Webアプリケーションに組み込まれた第１のメソッド要素により、ドキュメントを作成するステップと、Webアプリケーションに組み込まれた第２のメソッド要素により、addressプロパティ要素により指定されたアドレスを持つインテリジェントモジュールへ、ドキュメントを送信するステップと、ドキュメントをインテリジェントモジュールからプリンターへ送信するステップとを備える。
【００２２】
好適には、Webアプリケーションは、インテリジェントモジュールまたはWebサーバーに配置され、インテリジェントモジュールは電子デバイスである。
【００２３】
前記方法は、さらにプリンターで用紙上にドキュメントを印刷するステップを含んでもよい。コマンドの一つは、印字のために文字を命令バッファーに追加するテキストコマンドでもよい。さらに、コマンド一つは、文字の特性を設定するパラメーターを命令バッファーに追加する、テキスト設定コマンドでもよい。テキスト設定コマンドには、文字の開始位置、位置揃え、言語、フォント、装飾、倍率、倍角の少なくとも一つを指定する、第１の文字設定パラメーターを含んでもよい。テキスト設定コマンドにはまた、文字を回転するかどうか、または文字のスムージングを有効化するかどうかを指定する、第２の文字設定パラメーターを含んでもよい。
【００２４】
コマンドの一つはまた、プリンターで用紙を供給するための命令を命令バッファーに追加する紙送りコマンドでもよい。
【００２５】
加えて、コマンドの一つは、印刷のためにラスターイメージを命令バッファーに追加するイメージコマンドでもよい。
【００２６】
好適には、前記APIにはhalftoneプロパティ要素が含まれていて、Webアプリケーションで描画されたカラーイメージは、印刷のためにhalftoneプロパティ要素の設定にしたがってイメージコマンドによって、ラスターイメージデータに変換される。ディザリング、誤差拡散、カラーイメージをラスターイメージデータに変換するための閾値の少なくとも一つをhalftoneプロパティ要素で指定することができる。
【００２７】
さらに好適には、APIにはbrightnessプロパティ要素が含まれ、brightnessプロパティ要素の設定にしたがって、イメージコマンドは、カラーイメージを印刷のためにラスターイメージデータに変換する。brightnessプロパティ要素は、たとえば、ラスターイメージデータの明るさを補正するために０．１から１０までの範囲でガンマー値を指定することができる。
【００２８】
好適な実施例において、プリンターは、キーコードにより識別され得るロゴを登録するために不揮発性、つまり、ＮＶ、メモリーを備え、コマンドには、ロゴを印刷するために、命令バッファーにキーコードを追加するロゴコマンドが含まれ、追加されたキーコードは、NVメモリーに登録されたロゴを指定（つまり、識別）する。
【００２９】
コマンドの一つとしては、バーコードを印刷する命令を命令バッファーに追加するバーコードコマンドでもよく、バーコードコマンドにはバーコードパラメーターが含まれ、バーコードパラメーターは、バーコードの種類、バーコードの幅と高さ、および／またはバーコード種類に変換されるデータの少なくとも一つを指定する。
【００３０】
加えて、コマンドの一つとしては、２次元シンボルを印刷する命令を命令バッファーに追加するシンボルコマンドでもよく、シンボルコマンドはシンボルパラメーターを含み、シンボルパラメーターは、２次元シンボルの種類、２次元シンボルの誤り訂正レベル、または２次元シンボルに変換されるデータの少なくとも一つを指定する。
【００３１】
コマンドには、第１の線を第１の方向に引く命令を命令バッファーに追加する第１の線コマンドと、第２の線を第２の方向に引く命令を命令バッファーに追加する第２の線コマンドが含まれてもよく、第１の線コマンドは、第１の線の開始位置と終了位置を指定して線分として定義する第１の線パラメーターを含み、第２の線コマンドは、第２の線の開始位置を指定し、第２線の終了位置は除き、連続する線として定義する第２の線パラメーターを含む。好適には、ほかのコマンドとして、第２の線、それは第２の線コマンドにより開始されるが、その描画を終了させる命令を追加する第３の線コマンドがあり、第３の線コマンドは第３の線パラメーターを含み、第３の線パラメーターは第２の線の終了位置を指定する。
【００３２】
さらに好適には、コマンドの一つは、ページモードへ切り換える命令を命令バッファーに追加するページモードコマンドであり、ページモードは、印刷領域が定義され、その印刷領域にデータを配置し、バッチ動作で印刷領域が印刷される、印刷モードで、ページモードコマンドはさらに、印刷領域を指定する座標を含む、印刷領域を命令バッファーに追加する命令を追加する。好適には、コマンドの一つは、ページモードを終了させる命令を命令バッファーに追加する第２のページモードコマンドである。コマンドにはさらに、ページモードの設定を命令バッファーに追加する第３のページモードコマンドを含んでもよく、第３のページモードコマンドは、ページモードにおいて印刷する方向、または、ページモードにおいて印刷での開始位置を指定する座標を、指定する第３のページパラメーターを含む。コマンドにはさらに、ページモードにおいて線または四角形を描画する命令を命令バッファーに追加する第４のページモードコマンドを含んでもよく、第４のページモードコマンドは、ページモードにおいて線または四角形の開始位置と終了位置を指定する座標を含む。第４のページモードコマンドは、線または四角形の種類を指定する第４のページパラメーターを含んでもよい。
【００３３】
加えて、コマンドの一つとしては、用紙をカットする命令を命令バッファーに追加する、用紙カットコマンドでもよく、用紙カットコマンドは、用紙を供給することなく用紙をカットするか、用紙を供給した後で用紙をカットするかのいずれかを指定する用紙カットパラメーターを含む。
【００３４】
さらに好適には、ドロワーがプリンターに接続され、コマンドの一つとしては、ドロワーをキックオープンする命令を命令バッファーに追加する、ドロワーキックコマンドである。好適には、ドロワーキックコマンドには、ドロワーを開けるために加えられる信号のオン期間を指定する第１のドロワーパラメーターを含む。好適には、ドロワーは二つのコネクターによりプリンターに接続されていて、ドロワーとプリンターを接続するコネクターのいずれか一つを指定する第２のドロワーパラメーターを、ドロワーキックコマンドは含む。
【００３５】
加えて、プリンターにはブザーが備わっていてもよく、コマンドの一つとしては、ブザーをオンにする命令を命令バッファーに追加する、ブザーコマンドでもよい。ブザーの起動が繰り返される回数、またはパターンを指定するブザーパラメーターが、ブザーコマンドに含まれてもよい。
【００３６】
addressプロパティ要素はタイムアウト期間を設定するように構成されてもよく、好適には、前記方法は、タイムアウト期間の経過に対応して、addressプロパティ要素により指定されたプリンターでドキュメントを印刷する印刷ジョブをキャンセルするステップを含んでもよい。
【００３７】
addressプロパティ要素はさらに、ドキュメントをプリンターへ送信するために、プリンターのデバイスIDを設定するように構成されていてもよい。前記APIはさらに、プリンターから、印刷結果、エラーコード、および／またはプリンターステータスの一つを含む応答メッセージを取得するように構成された受信イベント要素を含んでいてもよく、前記方法はさらに、addressプロパティ要素により指定されたインテリジェントモジュールに接続されたプリンターから、応答メッセージを受信するステップを含んでもよい。好適には、エラーコードおよび／またはプリンターステータスは、自動的に回復可能なエラーおよび／または回復不能なエラーの一つの発生を示す。さらに好適には、プリンターにはカバーがあり、エラーコードおよび／またはプリンターステータスは、カバーが開いているときを示す。また好適には、プリンターには自動カッターがあり、自動カッターでエラーが発生したときを、エラーコードおよび／またはプリンターステータスで示す。また、プリンターは、用紙がプリンターにあるかどうかを検出するセンサーを持っていてもよく、そのセンサーによって用紙がないことが検出されるときを、エラーコードおよび／またはプリンターステータスで示す。また、インテリジェントモジュールへ送信したドキュメントに構文エラーがあるかどうかを、エラーコードおよび／またはプリンターステータスで示してもよい。
【００３８】
好適には、デバイスIDを持つプリンターが存在しないかどうかを、エラーコードまたはプリンターステータスで示す。インテリジェントモジュールに接続された通信ポートをプリンターが持つ場合、通信ポートでエラーが検出されたかどうかを、エラーコードおよび／またはプリンターステータスで示してもよい。さらに好適には、addressプロパティ要素は、プリンターでドキュメントを印刷する印刷ジョブをキャンセルするためにタイムアウト期間を設定するように構成され、タイムアウト期間が経過したかどうかを、エラーコードおよび／またはプリンターステータスで示す。さらに、印刷が成功裏に完了するかどうかを、エラーコードおよび／またはプリンターステータスで示してもよい。コネクターによりドロワーに接続されるようにプリンターが構成されていると仮定すると、コネクターの所定のピンのステータスを、エラーコードまたはプリンターステータスで示してもよい。また、プリンターがオフラインか、オンラインへ戻されることを待機しているか、または、プリンターから何の応答もなかったかを、エラーコードまたはプリンターステータスで示してもよい。また、用紙を供給するスイッチをプリンターが持っていてもよい。この場合、スイッチの動作により用紙が供給されているところかどうかを、エラーコードおよび／またはプリンターステータスで示してもよい。また、プリンターにはブザーがあってもよく、その場合、ブザーがオンにされているかどうかを、エラーコードおよび／またはプリンターステータスで示してもよい。プリンターまたはインテリジェントモジュールは、ドキュメントを印刷するための印刷ジョブをスプールするために構成されたスプーラーを持っていてもよく、スプーラーが停止したかどうかを、エラーコードまたはプリンターステータスで示してもよい。
【００３９】
好適には、前記APIは、そのAPIを初期化するためのコンストラクターを含む。この場合、前記方法には、ドキュメントを作成するステップの前に、APIを初期化するステップをさらに含んでもよい。
【００４０】
前記の目的は、Webアプリケーションでドキュメントを作成し、ドキュメントをネットワークを通してプリンターへ送信する方法において達成される。WebアプリケーションはWebブラウザーにより実行され、前記方法は、アドレスを設定され、ドキュメントを受信し、ドキュメントをプリンターへ送信するように構成されていて、プリンターに接続するように構成されたインテリジェントモジュールを提供するステップと、アプリケーションプログラムインターフェース（API）は、第１のオブジェクトは命令バッファーを含み、ドキュメントを作成する第１のオブジェクトと、第１のメソッド要素は、命令バッファーにプリンターを制御するコマンドを追加し、バッファーのコマンドを集積することによりドキュメントを作成するように構成されていて、第１のオブジェクトを処理する第１のメソッド要素と、ドキュメントを送信する第２のオブジェクトと、インテリジェントモジュールのアドレスを指定するように構成されたaddressプロパティ要素と、第２のメソッド要素は、バッファーのドキュメントをインテリジェントモジュールへ送信するように構成されていて、第２のオブジェクトを処理する第２のメソッド要素と、を提供し、Webアプリケーションに前記APIを組み込むステップと、Webアプリケーションに組み込まれた第１のメソッド要素によりドキュメントを作成するステップと、Webアプリケーションに組み込まれた第２のメソッド要素により、addressプロパティ要素により指定されたアドレスを持つインテリジェントモジュールへ、ドキュメントを送信するステップと、ドキュメントをインテリジェントモジュールからプリンターへ送信するステップとを備える。
【００４１】
好適には、本取り組みにおいて、前記APIは、第１のオブジェクトを初期化する第１のコンストラクターと、第２のオブジェクトを初期化する第２のコンストラクターとを含み、前記方法はさらに、ドキュメントを作成するステップの前に、第１のオブジェクトを初期化するステップと、ドキュメントを送信するステップの前に、第２のオブジェクトを初期化するステップを含む。
【００４２】
前記メソッドは、さらに、プリンターで用紙上にドキュメントを印刷するステップを備えていてもよい。
【００４３】
前記APIは、また、印刷結果、エラーコード、またはプリンターステータスのどれか一つを含む応答メッセージをプリンターから取得するように構成された受信イベント要素を含んでもよく、前記方法は、さらに、プリンターから応答メッセージを受信するステップを備えていてもよい。プリンターはaddressプロパティ要素により指定されたインテリジェントモジュールに接続され、応答メッセージを受信するステップより前に、第２のオブジェクトは初期化される。
【００４４】
前記目的は、また、Webアプリケーションでドキュメントを作成し、ドキュメントをネットワークを通してプリンターへ送信する方法において達成される。WebアプリケーションはWebブラウザーにより実行され、前記方法は、アドレスを設定されるように構成されたプリンターを提供するステップと、（ｉ）プリンターのアドレスを指定するように構成されたaddressプロパティ要素と、（ｉｉ）命令バッファーにプリンターを制御するコマンドを追加し、バッファーのコマンドを集積することによりドキュメントを作成するように構成された、第１のメソッド要素と、（ｉｉｉ）バッファーのドキュメントをインテリジェントモジュールへ送信するように構成された、第２のメソッド要素と、を含むアプリケーションプログラムインターフェース（API）をWebアプリケーションに組み込むステップと、Webアプリケーションに組み込まれた第１のメソッド要素によりドキュメントを作成するステップと、Webアプリケーションに組み込まれた第２のメソッド要素により、addressプロパティ要素により指定されたアドレスを持つプリンターへ、ドキュメントを送信するステップと、ドキュメントを印刷するステップとを備える。
【００４５】
前記目的は、また、Webアプリケーションでドキュメントを作成し、ドキュメントをネットワークを通してプリンターへ送信するシステムにおいて達成される。WebアプリケーションはWebブラウザーにより実行され、前記システムは、ネットワークアドレスを設定されるように構成されていて、プリンターに接続するように構成されたインテリジェントモジュールと、WebアプリケーションはWebサーバーにインストールされ、ネットワークを通してインテリジェントモジュールに接続されたWebサーバーと、Webアプリケーションに組み込まれたアプリケーションプログラムインターフェース（API）とを備え、前記APIは、（ｉ）インテリジェントモジュールのアドレスを指定するように構成されたaddressプロパティ要素と、（ｉｉ）命令バッファーにプリンターを制御するコマンドを追加し、バッファーのコマンドを集積することによりドキュメントを作成するように構成された、第１のメソッド要素と、（ｉｉｉ）バッファーのドキュメントをインテリジェントモジュールへ送信するように構成された、第２のメソッド要素とを含み、前記システムにおいて、第１のメソッド要素によりドキュメントが作成され、第２のメソッド要素により、addressプロパティ要素により指定されたアドレスを持つインテリジェントモジュールへ、ドキュメントが送信され、インテリジェントモジュールはドキュメントをプリンターへ送信する。
【００４６】
好適には、ドロワーがプリンターに接続され、コマンドの一つは、ドロワーをキックオープンする命令を命令バッファーに追加する、ドロワーキックコマンドである。
【００４７】
プリンターには、また、ブザーがあってもよく、コマンドの一つは、ブザーをオンさせる命令を命令バッファーに追加する、ブザーコマンドでもよい。
【００４８】
上記の目的は、また、HTML5 Canvasで描画したイメージをプリンターへ送信し、プリンターでイメージを印刷する方法において達成される。前記方法は、アドレスを設定されるように構成されていて、プリンターに接続されるように構成されたインテリジェントモジュールを提供するステップと、（ｉ）描画されたイメージをラスターイメージデータへ変換する変換方法を指定するように構成された第１のプロパティ要素と、（ｉｉ）インテリジェントモジュールのアドレスを指定するように構成された第２のプロパティ要素と、（ｉｉｉ）イメージをラスターイメージデータへ変換し、変換したラスターイメージをインテリジェントモジュールへ送信するように構成された、メソッド要素とを含むアプリケーションプログラムインターフェース（API）をWebアプリケーションに組み込むステップと、第１のプロパティ要素により指定された変換方法にしたがって、メソッド要素によりイメージをラスターイメージデータへ変換するステップと、第２のプロパティ要素により指定されたアドレスにしたがって、メソッド要素によりラスターイメージデータをインテリジェントモジュールへ送信するステップと、ラスターイメージデータをインテリジェントモジュールからプリンターへ送信するステップを備える。
【００４９】
上記の目的は、また、アプリケーションでドキュメントを作成または編集する方法において達成される。ドキュメントはネットワークを通してプリンターへ送信されるように構成され、アプリケーションはWebブラウザーにより実行されるように構成される。前記方法は、ドキュメントは命令バッファーのコマンドを集積することにより作成されていて、命令バッファーへ追加されるように構成された、プリンターを制御するコマンドを提供するステップと、プリンターのアドレスをaddressプロパティ要素へ設定することを可能にする設定画面を表示するステップと、アイコンを含み、アイコンのそれぞれはプリンターを制御するコマンドの一つと対応していて、ドキュメントを編集および／または作成することを可能にする編集画面を表示するステップと、アイコンの指定した一つが、それはコマンドに対応しているが、編集画面上で選択される場合、編集画面上でコマンドのパラメーターを入力することを可能にする入力ボックスを表示するステップと、編集画面で選択か入力されるパラメーターを持つコマンドを命令バッファーに追加するステップを備える。
【００５０】
好適には、前記方法はさらに、編集画面上で編集されたか、作成されたドキュメントをXML言語コードへ変換するステップと、コードを表示するステップを備える。前記方法はさらに、編集画面上で編集されたか、作成されたドキュメントの第１の部分を印刷プレビューに変換するステップと、印刷プレビューを表示するステップを備えていてもよい。オプションとしては、前記方法はまた、addressプロパティ要素により指定されたアドレスを持つプリンターへドキュメントを送信するボタンを表示するステップを備えていてもよい。
【００５１】
上記目的はさらに、Webアプリケーションでドキュメントを作成し、ドキュメントをプリンターへ送信し、ネットワークを通してプリンターのステータスを取得する方法において達成されてもよい。WebアプリケーションはWebブラウザーにより実行され、前記方法は、ネットワークアドレスを設定され、ドキュメントを受信し、ドキュメントをプリンターへ送信するように構成されていて、プリンターに接続するように構成されたインテリジェントモジュール（インテリジェントモジュールは、好適には、物理的な電子デバイスである）を提供するステップと、（ｉ）インテリジェントモジュールのアドレスを指定するように構成されたaddressプロパティ要素と、（ｉｉ）プリンターの一つまたはそれ以上のステータスを確認するように構成されたstatusイベント要素と、（ｉｉｉ）statusイベント要素を動作させることを有効化するように構成されたopenメソッド要素とを含むアプリケーションプログラムインターフェース（API）をWebアプリケーションに組み込むステップと、インテリジェントモジュールのアドレスをaddressプロパティ要素に設定するステップと、プリンターの指定されたステータスを受信するように、statusイベント要素を動作させることを有効化するステップと、を備える。
【００５２】
好適には、前記APIは、statusイベント要素の動作を無効化するように構成されたcloseメソッド要素を含み、前記方法はさらに、statusイベント要素を無効化するステップを備える。
【００５３】
前記APIはまた、プリンターのステータスを更新する時間間隔を指定するintervalプロパティ要素を含んでもよく、前記方法はさらに、intervalプロパティ要素に時間間隔を設定するステップを備える。
【００５４】
前記APIはさらに、プリンターから最後に取得したステータスを指定するstatusプロパティ要素を含んでもよい。
【００５５】
加えて、前記方法はさらに、プリンターのデバイスIDを設定するステップを含んでもよく、addressプロパティ要素は、デバイスIDにより指定されたプリンターのステータスを受信するために、そのプリンターのデバイスIDを指定するように構成される。
【００５６】
オプションとしては、Webアプリケーションはインテリジェントモジュール、またはWebサーバーに配置されてもよい。
【００５７】
プリンターのステータスには、プリンターがオンラインかオフラインかを示すステータスが含まれてもよい。
【００５８】
加えて、プリンターにはカバーがあってもよく、プリンターのステータスには、カバーが開いているか閉じているかを示すステータスが含まれてもよい。
【００５９】
好適には、前記APIはさらに、（ｉ）命令バッファーにプリンターを制御するコマンドを追加し、バッファーのコマンドを集積することによりドキュメントを作成する、第１のメソッド要素と、（ｉｉ）バッファーのドキュメントをインテリジェントモジュールへ送信するように構成された、第２のメソッド要素とを含む。この場合、前記方法はさらに、Webアプリケーションに組み込まれた第１のメソッド要素により、ドキュメントを作成するステップと、addressプロパティ要素により指定されたアドレスを持つインテリジェントモジュールへ、Webアプリケーションに組み込まれた第２のメソッド要素によりドキュメントを送信するステップと、インテリジェントモジュールからプリンターへドキュメントを送信するステップを備えてもよい。
【００６０】
前記方法はまた、ドキュメントをプリンターの用紙上に印刷するステップを備えてもよい。この場合、プリンターのステータスには、プリンターの紙の供給が終了したか、終了に近いかを示すステータスが含まれてもよい。好適には、ドロワーがプリンターに接続され、コマンドの一つは、ドロワーをキックオープンする命令を命令バッファーに追加する、ドロワーキックコマンドである。プリンターのステータスには、ドロワーが開いているか閉じているかを示すステータスが含まれてもよい。
【００６１】
上記の目的はまた、Webアプリケーションでドキュメントを作成し、ドキュメントをプリンターへ送信し、ネットワークを通してプリンターのステータスを取得するシステムにおいても達成される。WebアプリケーションはWebブラウザーにより実行され、前記システムは、アドレスを設定されるように構成されていて、プリンターに接続するように構成されたインテリジェントモジュールと、WebアプリケーションはWebサーバーにインストールされていて、ネットワークを通してインテリジェントモジュールに接続されたWebサーバーと、Webアプリケーションに組み込まれたアプリケーションプログラムインターフェース（API）とを備え、前記APIは（ｉ）インテリジェントモジュールのアドレスを指定するように構成されたaddressプロパティ要素と、（ｉｉ）プリンターの一つまたはそれ以上のステータスを確認するように構成されたstatusイベント要素と、（ｉｉｉ）statusイベント要素の動作を有効化するように構成されたopenメソッド要素とを含み、前記システムにおいて、statusイベント要素の動作がopenメソッド要素により有効化された後で、statusイベント要素により指定された、プリンターのステータスは、addressプロパティ要素により指定された、プリンターから、Webブラウザーへ送信される。
【００６２】
好適には、プリンターにはカバーがあり、プリンターのステータスには、カバーが開いているか閉じているかを示すステータスが含まれる。
【００６３】
さらに好適には、前記APIはさらに、命令バッファーにプリンターを制御するコマンドを追加し、バッファーのコマンドを集積することによりドキュメントを作成するように構成された、第１のメソッド要素と、命令バッファーのドキュメントをインテリジェントモジュールへ送信するように構成された、第２のメソッド要素とを提供し、前記システムにおいて、ドキュメントは、第１のメソッド要素により作成され、addressプロパティ要素により指定されたアドレスを持つインテリジェントモジュールへ、第２のメソッド要素により送信される。
【００６４】
好適には、ドロワーがプリンターに接続され、コマンドの一つは、ドロワーをキックオープンする命令を命令バッファーに追加する、ドロワーキックコマンドである。
【００６５】
プリンターのステータスにはさらに、ドロワーが開いているか閉じているかを示すステータスが含まれていてもよい。
【００６６】
以下の記述と請求項を添付の図面とともに参照することで、本発明のより完全な理解ととともに、ほかの目的と達成事項は明確になり理解されるだろう。
図面においては、同様な部分は同様な参照符号で示される。
【図面の簡単な説明】
【００６７】
【図１】典型的なプリンターサーバーの配置を示す図である。
【図２】典型的なプリンターダイアローグボックスを示す図である。
【図３】本発明の第１実施例である。
【図４】本発明の第２実施例である。
【図５】命令バッファーを示し、本発明の制御コマンドを数例示す。
【図６】POSシステムに適用した、本発明の具体例を示す。
【図７】ePOS-Print APIによって実現されることがある印字の種類の例を示す。
【図８】ePOS-Print-Canvas APIによって実現されることがある印刷の種類の例を示す。
【図９】本発明の一実施例における印刷の流れの例である。
【図１０】本発明のシステム構築例を示す。
【図１１】WebアプリケーションをTMインテリジェントプリンターへ登録する状況を示す。
【図１２】本発明のePOS-Print APIを使用して作成したサンプルプログラムの画面の例を示す。
【図１３】図１２の設定ボタンを起動することに対応して呼び出されることがある設定画面の例である。
【図１４】ePOS-Print APIを使用した第１の印刷物の例と、ePOS-Print-Canvas APIＩを使用した第２の印刷物の例とを示す。
【図１５】初期表示状態から印刷ジョブ完了までのプロセスステップの流れを示す流れ図である。
【図１６】クーポン発行のためのプロセスステップの流れを示す流れ図である。
【図１７】本発明の動作環境の例である。
【図１８】サンプルプログラムの環境設定を構成するためのプロセスフローを示す。
【図１９】TMインテリジェントプリンターのネットワーク設定の例である。
【図２０】デバイス設定の例である。
【図２１】構成されうる、デバイス設定の例を示す。
【図２２】ePOS-Print APIを使用したプログラミングのサンプルワークフローである。
【図２３】ePOS-Print APIを組み込むためにHTMLの<script>タグを使用する例を示す。
【図２４】印刷ドキュメントを作成するためのプログラムコードセグメントの例を示す。
【図２５】文字印字ドキュメントを作成するためのスクリプトコードの例を示す。
【図２６】グラフィック印刷ドキュメントを作成するためのサンプルスクリプトコードを示す。
【図２７】ページモードの印刷ドキュメントを作成するためのサンプルコードを示す。
【図２８】印刷ドキュメントを送信するためのサンプルコードを示す。
【図２９】プリンターのエンドポイントアドレスについての詳細を示す表である。
【図３０】コールバック関数を実装するためのサンプルコードである。
【図３１】コールバック関数のエラーハンドリング方法の例である。
【図３２】印刷を行わずにプリンターステータスを確認するためにステータスイベント通知機能の使い方を示す。
【図３３】ePOS-Print-Canvas APIを使用したプログラミングのワークフローを示す。
【図３４】ePOS-Print-Canvas APIを組み込むためのサンプルコードを示す。
【図３５】HTML5-Canvasで描画するためのサンプルコードを示す。
【図３６】印刷のために印刷ドキュメントを送信するためのサンプルコードである。
【図３７】コールバック関数による結果受信を印刷するためのサンプルコードを示す。
【図３８】コールバック関数によるエラーハンドリングのためのサンプルコードを示す。
【図３９】印刷を行わずにプリンターステータスを確認するためにステータスイベント通知機能を使用するサンプルコードである。
【図４０】ePOS-Print APIのメソッドと要素のいくつかを列記する。
【図４１】ePOS-Print APIのメソッドと要素のいくつかを列記する。
【図４２ａ】ePOS-Print APIのメソッドと要素のいくつかを列記する。
【図４２ｂ】ePOS-Print APIのメソッドと要素のいくつかを列記する。
【図４３】ePOS-Print Builderオブジェクトのコンストラクターのサンプルコードを示す。
【図４４】位置揃えパラメーターの種類の例を示す。
【図４５】ePOS-Print Builderオブジェクトの戻り値を示す。
【図４６】例外エラーを示す。
【図４７】文字位置揃えの使い方を示すサンプルコードである。
【図４８】改行量を３０ドットに設定するサンプルコードを示す。
【図４９】倒立印字パラメーターのためのBoolean値を示す。
【図５０】倒立印字を設定するためのサンプルコードである。
【図５１】文字列の中で印字できない文字を示すためのエスケープシーケンスである。
【図５２】addText(data)の使い方を示すサンプルコードである。
【図５３】対象言語を指定するためのlangパラメーターの例を示す。
【図５４】addTextLang(lang)メソッドの使い方を示すサンプルコードである。
【図５５】fontパラメーターのサンプル値を示す。
【図５６】addTextFont(font)メソッドの使い方を示すサンプルコードである。
【図５７】smoothパラメーターの可能な値を示す。
【図５８】addTextSmooth(smooth)メソッドの使い方を示すサンプルコードである。
【図５９】dwのパラメーター値である。
【図６０】dhのパラメーター値である。
【図６１】文字の倍角を、横倍角と縦倍角に設定するためのサンプルコードを示す。
【図６２】widthパラメーターの可能な値を示す。
【図６３】heightパラメーターの可能な値を示す。
【図６４】横倍率を４倍にし縦倍率を４倍にするためのサンプルコードを示す。
【図６５】reverseパラメーターの可能な値を示す。
【図６６】ulパラメーターの可能な値を示す。
【図６７】emパラメーターの可能な値を示す。
【図６８】colorパラメーターの可能な値を示す。
【図６９】アンダーライン装飾を設定するためのサンプルコードを示す。
【図７０】印字位置を左端から１２０ドットに設定するためのサンプルコードを示す。
【図７１】紙送りを３０ドットするためのサンプルコードを示す。
【図７２】紙送りを３行するためのサンプルコードを示す。
【図７３】文字列を印字した後で、新しい行を始めるためのサンプルコードを示す。
【図７４】addImageメソッドにおいてcolorパラメーターのサンプル値を示す。
【図７５】addImageメソッドにおいてmodeパラメーターのサンプル値を示す。
【図７６】ページモードで幅３００ドット、高さ３００ドットのイメージを印刷するためのサンプルコードを示す。
【図７７】addLogoメソッドの使い方を示すサンプルコードである。
【図７８】バーコードの種類の例を示す。
【図７９】バーコードの種類の例を示す。
【図８０】バーコードの種類の例を示す。
【図８１】バーコードの種類の例を示す。
【図８２】hriパラメーターのいくつかの可能な値を示す。
【図８３】バーコードの印字の仕方を示すサンプルコードである。
【図８４】addSymbolメソッドにおいてdataパラメーターの2Dコードの種類の例を示す。
【図８５】addSymbolメソッドにおいてdataパラメーターの2Dコードの種類の例を示す。
【図８６】addSymbolメソッドにおいてtypeパラメーターのサンプル値を示す。
【図８７】addSymbolメソッドにおいてlevelパラメーターのサンプル値を示す。
【図８８】２次元シンボルを印字するためのサンプルコードを示す。
【図８９】addHlineメソッドのいくつかのstyleパラメーターを示す。
【図９０】横罫線を二重線で描画するためのサンプルコードを示す。
【図９１】addVLineBeginメソッドのstyleパラメーターの例を示す。
【図９２】縦罫線を左端から１００ドットと２００ドットの位置に細線で描画するためのサンプルコードを示す。
【図９３】addVLineEndメソッドのstyleパラメーターの例を示す。
【図９４】縦罫線を左端から１００ドットと２００ドットの位置に細線で描画するためのサンプルコードを示す。
【図９５】ページモードで文字「ＡＢＣＤＥ」を印字するためのサンプルコードを示す。
【図９６】原点（１００、５０）、幅２００ドット、高さ３０ドットの印字領域を指定して、文字「ＡＢＣＤＥ」を印字するためのサンプルコードを示す。
【図９７】addPageDirectionメソッドのdirパラメーターのいくつかの例を示す。
【図９８】時計回りに９０度回転させて、文字「ＡＢＣＤＥ」を印字するためのサンプルコードを示す。
【図９９】addPageAreaメソッドで指定した領域内の印字開始位置を（５０、３０）に指定して、文字「ＡＢＣＤＥ」を印字するためのサンプルコードを示す。
【図１００】addPageLineメソッドのstyleパラメーターの例を示す。
【図１０１】開始位置（１００、０）と終了位置（５００、０）の間を細い実線で描画するためのサンプルコードを示す。
【図１０２】addPageRectangleメソッドでのstyleパラメーターの例を示す。
【図１０３】開始位置（１００、０）と終了位置（５００、２００）を頂点とする四角形を細い二重線で描画するためのサンプルコードを示す。
【図１０４】addCutメソッドの種類の例を示す。
【図１０５】フィードカットするためのサンプルコードを示す。
【図１０６】addCutメソッドのdrawerパラメーターの例を示す。
【図１０７】addCutメソッドのtimeパラメーターの例を示す。
【図１０８】ドロワーキックコネクター２番ピンに１００ミリ秒のパルス信号を出力するためのサンプルコードを示す。
【図１０９】ブザーパターンの例を示す。
【図１１０】addSoundメソッドのrepeatパラメーターの設定の仕方の例を示す。
【図１１１】音のパターンＡを３回繰り返すためのサンプルコードを示す。
【図１１２】toString()メソッドの使い方を示すサンプルコードである。
【図１１３】モノクロ（２階調）印刷に適用するハーフトーン処理方法の指定の仕方を示す。
【図１１４】ハーフトーンの種類を誤差拡散として設定するためのサンプルコードを示す。
【図１１５】明るさを２．２に設定するためのサンプルコードを示す。
【図１１６】命令バッファーをクリアし、初期状態に戻すためのサンプルコードを示す。
【図１１７】ePOSPrint(address)の使い方を示すサンプルコードである。
【図１１８】send(request)メソッドの使い方を示すサンプルコードである。
【図１１９】open( )メソッドの使い方を示すサンプルコードである。
【図１２０】close( )メソッドの使い方を示すサンプルコードである。
【図１２１】addressプロパティの使い方の例を示す。
【図１２２】enabledプロパティの使い方の例を示す。
【図１２３】intrervalプロパティの使い方の例を示す。
【図１２４】statusプロパティの使い方の例を示す。
【図１２５】responseオブジェクトのいくつかのプロパティを示す。
【図１２６】successの値を示す。
【図１２７】codeの値を示す。
【図１２８】statusの値を示す。
【図１２９】印刷ドキュメントを作成して送信し、印刷結果をメッセージボックスで表示するためのサンプルコードを示す。
【図１３０】errorオブジェクトのいくつかのプロパティを列記する。
【図１３１】印刷ドキュメントを作成して送信し、通信エラー発生時にHTTPステータスコードをメッセージボックスに表示するためのサンプルコードを示す。
【図１３２】onstatuschangeイベントの使い方の例を示す。
【図１３３】ononlineイベントの使い方の例を示す。
【図１３４】onofflineイベントの使い方の例を示す。
【図１３５】onpoweroffイベントの使い方の例を示す。
【図１３６】oncoverokイベントの使い方の例を示す。
【図１３７】oncoveropenイベントの使い方の例を示す。
【図１３８】onpaperokイベントの使い方の例を示す。
【図１３９】onpapernearendイベントの使い方の例を示す。
【図１４０】onpaperendイベントの使い方の例を示す。
【図１４１】ondrawerclosedイベントの使い方の例を示す。
【図１４２】ondraweropenイベントの使い方の例を示す。
【図１４３】ePOS-Print-Canvas APIのいくつかの要素を列記する。
【図１４４】新しいePOS-Print-Canvas APIオブジェクトの作成を示すサンプルコードである。
【図１４５】cutパラメーターの例を示す。
【図１４６】modeパラメーターの例を示す。
【図１４７】Canvas(ID='myCanvas')を印刷するためのサンプルコードである。
【図１４８】open( )メソッドの使い方を示すサンプルコードである。
【図１４９】close( )メソッドの使い方を示すサンプルコードである。
【図１５０】addressプロパティの使い方を示すサンプルコードである。
【図１５１】enabledプロパティの使い方を示すサンプルコードである。
【図１５２】intervalプロパティの使い方を示すサンプルコードである。
【図１５３】statusプロパティの使い方を示すサンプルコードである。
【図１５４】いくつかのhalftoneプロパティを示す。
【図１５５】halftoneプロパティの使い方を示すサンプルコードである。
【図１５６】brightnessプロパティの使い方を示すサンプルコードである。
【図１５７】responseオブジェクトのいくつかのプロパティを示す。
【図１５８】successの値を示す。
【図１５９】codeの値を示す。
【図１６０】statusの値を示す。
【図１６１】Canvas(ID=myCanvas)を印刷し、印刷結果をメッセージボックスに表示するためのサンプルコードを示す。
【図１６２】errorオブジェクトのいくつかのプロパティを列記する。
【図１６３】Canvas(ID=myCanvas)を印刷し、通信エラー発生時にHTTPステータスコードをメッセージボックスに表示するためのサンプルコードを示す。
【図１６４】onstatuschangeイベントの使い方を示すサンプルコードである。
【図１６５】ononlineイベントの使い方の例を示す。
【図１６６】onofflineイベントの使い方の例を示す。
【図１６７】onpoweroffイベントの使い方の例を示す。
【図１６８】oncoverokイベントの使い方の例を示す。
【図１６９】oncoveropenイベントの使い方の例を示す。
【図１７０】onpaperokイベントの使い方の例を示す。
【図１７１】onpapernearendイベントの使い方の例を示す。
【図１７２】onpaperendイベントの使い方の例を示す。
【図１７３ａ】ondrawerclosedイベントの使い方の例を示す。
【図１７３ｂ】ondraweropenイベントの使い方の例を示す。
【図１７４】本発明のePOS Print editorのサンプルメインページ（すなわち、index.HTMLまたはホームページ）を示す。
【図１７５】本発明のePOS Print editorの設定タブを選択することで生ずる設定画面を示す。
【図１７６】設定画面により与えられるオプションのいくつかをまとめた表である。
【図１７７】本発明のePOS Print editorの編集画面の別の図である。
【図１７８】本発明のePOS Print editorのプレビューイメージの例を示す。
【図１７９】「印刷」タブが選択されたときのePOS Print editorの図の例である。
【図１８０】本発明のインポート画面を示す。
【図１８１】ＡＰＩタブが選択されたときのePOS Print editorの図の例である。
【発明を実施するための形態】
【００６８】
従来は、インターネット上の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デバイスを実現してもよい。
【００８２】
図３を参照すると、Webページ３１はWebブラウザー３３の中に示されている。好適にはWebブラウザー３３は計算デバイス（つまり、図４に示す計算デバイス５１などのデータ処理装置）の中で動作する。その計算デバイスはPOSデバイスとして機能してもよい。当該技術では既知であるが、インターネットなどのTCP/IPネットワークの中でWebページをアクセスするためのインターフェースをWebブラウザー３３は提供し、所望のWebページをアクセスするためのネットワークアドレスを入力することができるアドレスフィールド３５を典型的には含んでいる。たとえば、Webページ３１はインテリジェントモジュール３７に保持され（つまり、配置され）、Webブラウザー３３にダウンロードされてもよい。または、Webページ３１は、Webブラウザー３３があるコンピュータデバイスに組み込まれてもよい（つまり、デフォルトでそこに存在していてもよい）。好適にはWebページ３１は、HTMLおよび／またはそれを変化させた言語などのマークアップ言語で書かれ、JavaScriptなどのスクリプト言語をサポートする。
【００８３】
本発明において、Webブラウザー３３は、インテリジェントモジュール３７経由で一つまたはそれ以上のプリンター、PrinterID_1とPrinterID_2、と通信する。オプションとしては、これらのプリンターはPOSプリンター（つまり、レシートプリンター）であってもいいし、それぞれのロール紙３９ａと３９ｂ上にオプションとして印刷してもよい。
【００８４】
好適には、インテリジェントモジュール３７は、少なくとも一つの印刷アプリケーションプログラムインターフェース、つまり、API_1からAPI_3まで名付けられた印刷API、を経由してWebページ３１と通信する。説明のために、印刷アプリケーションプログラムインターフェースAPI_1からAPI_3まではWebページ３１の中に埋め込まれて示され、それぞれの印刷スクリプトアプリケーション、たとえば、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ページ３１に印刷インターフェースを提供し、印刷スクリプトアプリケーションPrint_Script_App_1からPrint_Script_App_3までは印刷能力を提供し、および／またはインテリジェントモジュール３７と通信するように設計されている。印刷APIと印刷スクリプトアプリケーションは、API_1+Print_Script_App_1やAPI_2+Print_Script_App_3によって示されているように、Webページ３１内にまとめて一体として埋め込まれていてもよい。この場合、両者は、APIまたは印刷APIという共通の用語で呼ばれてもよく、このAPIはこのように、Webページ３１とのインターフェース、印刷ドキュメントの作成、そしてその印刷ドキュメントのインテリジェントモジュール３７への送信を扱うことになる。
【００８６】
当業者には理解されうるように、印刷APIは特定の（オブジェクト志向言語において定義されるように）ソフトウェアクラスの例であり、それらは（OOP言語において定義されるように）コンストラクターによって作成されてもよい。一つの実施例としては、印刷APIは、そのAPIを初期化するためのコンストラクターを含んでもよい。
【００８７】
ほかの実施例としては、印刷APIはWebページ３１内に埋め込まれるが、その対応する印刷スクリプトアプリケーションはインテリジェントモジュール３７内で別に保持されるように、印刷APIとその対応する印刷スクリプトアプリケーションを分離してもよい。これは、API_3はWebページ３１内に埋め込まれ、それに対応する印刷スクリプトアプリケーションPrint_Script_App_3はインテリジェントモジュール３７内に保持されることで示されている。このように、Print_Script_App_3が必要とする計算リソースのいくつかは、Webブラウザー３３が存在するデバイスから外され、インテリジェントモジュール３７に実装されてもよい。この場合、API_3は印刷ドキュメントを定義するために必要なすべてのデータをPrint_Script_App_3へ送ることになり、その後Print_Script_App_3は対応する印刷ドキュメントをインテリジェントモジュール３７内で作成し、作成された印刷ドキュメントを特定のプリンターへ送信することになる。印刷APIをそれの対応する印刷スクリプトアプリケーションから分離することにより、Webブラウザー内の印刷APIを変えることなく、インテリジェントモジュール３７内のスクリプトアプリケーションを更新することもできる。この場合、Webデベロッパーに対しては、印刷APIライブラリーをWebデベロッパーのWebページへの組み込みのために提供しながら、対応する印刷スクリプトアプリケーションの実現の詳細を、インテリジェントモジュール３７またはネットワークサーバーに保持して、Webデベロッパーから隠すことができる。
【００８８】
好適な実施例において、印刷APIのそれぞれはインテリジェントモジュール３７と直接通信する。したがって、インテリジェントモジュール３７は、IP_ADD_1と示されている、ネットワークアドレスを受け取る（つまり、割り当てられる）ように構成されている。このネットワークアドレスは、静的アドレスでも、動的に割り当てられるアドレスでもよい。
【００８９】
好適には、印刷APIのそれぞれは、インテリジェントモジュール３７のネットワークアドレスを受け取るように構成された、addressプロパティ要素（つまり、アドレスデータフィールド）を提供され、それにより、印刷APIのそれぞれはインテリジェントモジュール３７と通信を行うことができる。インテリジェントモジュール３７のネットワークアドレスが静的（つまり、固定）であれば、各API内のaddressプロパティ要素はユーザにより設定されてもよい。または、ネットワークアドレスが動的であれば、インテリジェントモジュール３７のネットワークアドレスを判定するためにネットワークアドレス判定サービスを使用し、各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は、特定のプリンターを指定することなく、インテリジェントモジュール３７へ印刷要求を送信してもよく、インテリジェントモジュール３７は、印刷要求を発行したデバイスへの近接情報に基づいて、またはどのプリンターが利用可能か（つまり、使用されていないか）を判定することによりプリンターを選択してもよい。この場合、好適には、インテリジェントモジュール３７は、印刷要求を発行したデバイスに一番近いプリンターを選択するために、Webページが動作しているデバイスの位置とプリンターの位置をわかっている。さらにまたは、インテリジェントモジュール３７が、印刷要求を発行する特定のデバイスに対してプリンターを選択したら、その選択されたプリンターは好適にはそのデバイスに割り当てられ、その同じデバイスからの将来のすべての印刷要求はその同じ選択されたプリンターへ送信される。
【００９３】
Webページ３１内に埋め込まれた各印刷APIは、そのaddressプロパティ要素（インテリジェントモジュール３７のネットワークアドレスを保持する）により、インテリジェントモジュール３７と直接通信することができるため、ユーザーの介入なしに、または印刷APIが存在するWebブラウザー３３へ印刷要求を提出することなしに、印刷APIはいつでも印刷要求を提出することができる。たとえば、チェックアウトステーションにおいて、製品項目がWebブラウザーによって識別され（つまり、スキャンされ）全体の取引概要に加えられながら、印刷APIは、印刷のために、購入のために合計されている各製品項目の記載を提出することができる。こうして、Webページ３１は、データ（新たに生成されたデータおよび／または表示画面の一部を含む）の印刷ドキュメントを生成し、所望の時間に印刷のために印刷ドキュメントを提出することができる。たとえば、APIは、印刷ドキュメントの一部をセグメント単位で（つまり、異なる時間に）生成し、その後、セグメントを結合および／または配置してプリンターへ送信する複合印刷ドキュメントとしてもよい。または、本実施例においては、好適なプリンターはロール紙プリンターであるため、印刷APIは、印刷のためにプリンターへ複数のセグメントを送信し、印刷セッションの終わりに（つまり、チェックアウトステーションでの商取引の終わりに）、ロール紙の印刷した部分をカットする命令を送信してもよい。
【００９４】
動作においては、印刷スクリプトアプリケーション（またはAPIがそれの対応する印刷スクリプトアプリケーションと単一ユニットとして結合されている場合は、API自身）は、プリンター制御命令を命令バッファーに蓄積し（つまり、加え）、その後、蓄積されたプリンター制御命令を実行することで、印刷ドキュメントを定義する為の第１のメソッド要素（つまり、第１の実行可能ルーチンまたは第１の実行可能メソッド）を含む。好適には、印刷スクリプトアプリケーション（またはAPI）は、さらに、定義された印刷ドキュメントをインテリジェントモジュール３７へ送信するように構成された、第２のメソッド要素（つまり、第２の実行可能ルーチン）を含む。第１と第２のメソッド要素を順に実行することで、印刷ドキュメントが作成されてもよい。
【００９５】
本説明においては、説明したソフトウェアメソッドのすべて、またはいくつかは、オブジェクト志向言語で定義されているソフトウェアオブジェクトで置き換えてもよい。
【００９６】
好適には、インテリジェントモジュール３７はデータ処理デバイス（制御ユニット回路および／または中央処理装置、および／または揮発性／不揮発性電子メモリー、および／またはデータ／制御レジスタ、および／または信号バス、および／または電子通信インターフェース、および／またはルックアップテーブルを含み、それには限定されず）として実現される。インテリジェントモジュール３７は、それ自体の物理的な筐体内にスタンドアローンユニットとして実現されてもよいし、または、プリンター、サーバー、または他の電子デバイスの中に組み込まれて（または物理的に付属されて）もよい。動作においては、インテリジェントモジュール３７は、Webページ３１内に埋め込まれた印刷APIから印刷ドキュメントを受け取り、それを特定の（または、ほかに指定された）プリンターに適した印刷ドキュメントへ（必要であれば）変換し、それを指定されたプリンターへ印刷のために送信する。オプションとしては、インテリジェントモジュール３７は、プリンターのそれぞれに対してプリンタードライバーを含んでもよく、そのプリンタードライバーを用いて適切な印刷ドキュメントを定義してもよい。または、インテリジェントモジュール３７は、印刷APIから命令バッファーの記録を受け取り、命令バッファーのプリンターコマンドを実行することで印刷ドキュメントを作成し、作成した印刷ドキュメントを適切なプリンターへ送信してもよい。さらにまたは、印刷APIから受け取るコマンドは、書式情報や印刷内容データなどの一般的な印刷記述でもよく、その後、インテリジェントモジュールは、必要なプリンターコマンドを決定して、指定されたプリンターの能力に基づいて、一般的な印刷記述に最も類似している印刷ドキュメントを生成し、そして、生成した印刷ドキュメントを指定されたプリンターへ送信してもよい。
【００９７】
上記の記載において、作成された印刷ドキュメントは、XML印刷ドキュメント、またはビットマップ印刷ドキュメント、または当該技術で既知の、ほかのドキュメント記述書式でもよい。
【００９８】
図示のように、プリンターPrinterID_1とPrinterID_2は、それぞれロール紙３９ａと３９ｂ上に印刷するPOSプリンターでもよい。これらのプリンターは、（完全にまたは部分的に着脱できる）カバー４１，ドロワー４３，ブザー４５，用紙カッター（または自動カッター）４７などの付属装置をさらに備えてもよい。好適には、これらの付属装置は、インテリジェントモジュール３７によってプリンターへ中継される上記のプリンターコマンドによって、制御できる。。上記のように、対象プリンターが印刷APIへ送信するエラーコードまたはプリンターステータスの中には、カバーが開いているという表示もある。同様に、自動カッターでエラーが発生したことを、エラーコードまたはプリンターステータスが示してもよい。プリンターは、用紙がプリンターにあるかどうかを検出するセンサーを備えてもよく、そのセンサーによって用紙がないことが検出されるかどうかを、エラーコードまたはプリンターステータスで示してもよい。または、インテリジェントモジュール３７へ送信したドキュメントに構文エラーがあるかどうかを、エラーコードまたはプリンターステータスで示してもよい。または、印刷APIがプリンターIDによって指定した対象プリンターが存在しないかどうかを、エラーコードまたはプリンターステータスで示してもよい。
【００９９】
PrinterID_1とPrinterID_2は、インテリジェントモジュール３７と通信するために通信ポートを備えることは理解されるだろう。通信ポートでエラーが検出されるかどうかを、エラーコードまたはプリンターステータスで示してもよい。さらに、上記のタイムアウト期間が経過するかどうかを、エラーコードまたはプリンターステータスで示してもよい。または、印刷動作が成功裏に完了することを、エラーコードまたはプリンターステータスで示してもよい。上記のように、プリンターはコネクターによってドロワーに接続されてもよく、そのコネクターは少なくとも一本のピンを持っていてもよい。この場合、コネクターの所定のピンのステータスを、エラーコードまたはプリンターステータスで示してもよい。
【０１００】
または、プリンターがオフラインであること、またはオンラインに戻されることを待機しているところであること、またはプリンターから何の応答もないことを、エラーコードまたはプリンターステータスで示してもよい。
【０１０１】
PrinterID_1とPrinterID_2は、さらに、用紙３９ａと３９ｂを供給するためのスイッチを持っていてもよく、スイッチの動作により、いつ用紙が供給されているかを、エラーコードまたはプリンターステータスで示してもよい。さらに、いつブザー４５がオンにされる（つまり、駆動される）かを、エラーコードまたはプリンターステータスで示してもよい。プリンターまたはインテリジェントモジュール３７は、ドキュメントを印刷するための印刷ジョブをスプールするために構成されたスプーラーを持っていてもよく、スプーラーが停止したかどうかを、エラーコードまたはプリンターステータスで示してもよい。
【０１０２】
図３の実施例において、ネットワーク接続されていてもよいし、いなくてもよいシステムとして、本発明は実現される。すなわち、Webブラウザー３３が動作するローカルデバイスは、特定の中央サーバーに接続されていないスタンドアローンデバイスでもよい。ローカルデバイスが、スタンドアローンデバイスであるか、またはほかのPOSデバイスやサーバーにネットワーク接続されているかに関わらず、インテリジェントモジュール３７は、プリンターとWebページ３１間で、通信信号を中継し変換する（そして必要なコマンド信号と命令信号を生成する）プリンター制御ボックスとして機能してもよい。
【０１０３】
図４は、本発明をネットワークで実現したものを示す。図３の要素と類似のすべての要素は、類似の参照符号を持ち、上記に記載されている。図示のように、ネットワーク５５には、計算デバイス５１，サーバー５３，インテリジェントモジュール３７、プリンターPrinterID_2を含む。計算デバイス５１，サーバー５３，インテリジェントモジュール３７はネットワーク通信チャネル５７経由で通信し、このチャネルは、有線チャネル、無線チャネル、またはその両方を結合したものでもよい。計算デバイス５１は、タブレットコンピュータまたはほかのデータ処理デバイスでよいが、Webブラウザー３３経由でWebページ３１をアクセスする。オプションとしては、Webページ（つまり、Webアプリケーション）３１は、サーバー５３またはインテリジェントモジュール３７からアクセスされる。すなわち、Webアプリケーション３１は、サーバー５３および／またはインテリジェントモジュール３７に保持される（つまり記憶される、または置かれる）（そしてそこからアクセスされる）。
【０１０４】
オプションとしては、プリンターPrinterID_2は、不揮発性メモリー５９を含んでもよい。一実施例においては、ロゴのような、複数のあらかじめ定義されたイメージがメモリー５９に記憶され、LOGO_1からLOGO_3までのような、IDコードにより識別／呼び出される。
【０１０５】
上記説明のように、プリンター制御コマンドが蓄積される命令バッファーを、印刷APIは定義する。命令バッファーには、いろいろな種類の制御コマンドが蓄積されてもよい。図５には、本発明において、命令バッファー６３に蓄積されてもよい、プリンター制御コマンド６１の例を示す。各コマンドは、それを実行するために必要な一つまたはそれ以上の命令となってもよい。
【０１０６】
たとえば、図５を参照すると、コマンドの一つは、印字のために文字を命令バッファーに追加するテキストコマンドでもよい。すなわち、そのテキストコマンドは、印字される文字が挿入される、定まった、または定まっていない長さのデータフィールドを定義してもよい。別のコマンドとしては、文字の特性を定義（つまり、設定）するパラメーターを命令バッファーへ追加するテキスト設定コマンドでもよい。特性としては、挿入された文字の大きさ、フォント、色などを含んでもよい。テキスト設定コマンドにより、複数の異なるパラメーターが設定されていてもよい。たとえば、第１のテキスト設定パラメーターにより、用紙上に印字する開始位置を指定してもよく、別のパラメーターにより、位置揃え要件を設定してもよい。ほかのパラメーターにより、挿入された文字の言語、フォント、装飾、倍率、および／または倍角を設定してもよい。追加のテキスト設定パラメーターとしては、印字文字を回転するかどうか、または文字のスムージングを有効化するかどうかを指定するパラメーターを含んでもよい。
【０１０７】
別のコマンドとしては、プリンターで用紙を供給するための一つまたはそれ以上の命令を、命令バッファーに追加する紙送りコマンドでもよい。
【０１０８】
さらに別のコマンドとしては、印刷のためにラスターイメージを追加するイメージコマンドでもよい。当該技術で知られているように、ラスターイメージとは典型的には、ビットマップのように一度に一点を表示媒体上に示すようにイメージを定義する四角形の領域であり、イメージファイルを定義する。好適には、印刷APIにはhalftoneプロパティ要素が含まれていて、Webアプリケーションで描画されたカラーイメージは、印刷のためにhalftoneプロパティ要素の設定にしたがってイメージコマンドによって、ラスターイメージデータに変換される。好適には、ディザリング、誤差拡散、および／またはカラーイメージをラスターイメージデータに変換するための閾値の少なくとも一つをhalftoneプロパティ要素で指定する。印刷APIには、brightnessプロパティ要素が含まれていてもよい。これにより、ラスターイメージデータの明るさを補正するために0.1から10.0までの範囲でガンマー値を指定することができる。この場合、brightnessプロパティ要素の設定にしたがって、イメージコマンドにより、カラーイメージを印刷のためのラスターイメージデータに変換することができる。
【０１０９】
図４に示すように、PrinterID_2には、少なくとも一つのロゴを登録するために不揮発性(NV)メモリー５９を備えてもよい。この場合、特定のロゴを識別するキーコードを、その識別したロゴを印刷するために、命令バッファーに追加するロゴコマンドが存在することが好適である。すなわち、キーコードは、NVメモリー５９に登録された特定のロゴ（つまり、LOGO_1からLOGO_3までのロゴ）を指定する。
【０１１０】
別のコマンドとしては、バーコードを印刷する命令を命令バッファーに追加するバーコードコマンドでもよい。好適には、複数のバーコードの種類がサポートされ、少なくとも、所望のバーコード種類、バーコードの幅と高さ、および／または選択されたバーコード種類に変換される（つまり、符号化される）データを指定するバーコードパラメーターが、バーコード命令に含まれる。
【０１１１】
別のコマンドとしては、２次元シンボルを印刷する命令を命令バッファーに追加するシンボルコマンドでもよい。シンボルコマンドは、２次元シンボルの種類、２次元シンボルの誤り訂正レベル、２次元シンボルに変換されるデータの少なくとも一つを指定するシンボルパラメーターを含んでいてよい。
【０１１２】
好適には、別のコマンドとしては、第１の線を引く命令を命令バッファーに追加する第１の線コマンドがある。第１の線コマンドは、第１の線の開始位置と終了位置を指定する第１の線パラメーターを含んでもよい。本発明では、不定の長さの第２の線を引き始める命令を命令バッファーに追加する第２の線コマンドもあってよい。この命令では、第２の線の開始位置を指定する第２の線パラメーターを提供するが、第２の線の終了位置を指定する線パラメーターは提供しない。この場合、好適には、本発明において、第２の線コマンドにより開始された第２の線の描画を終了させる（つまり、停止させる）命令を追加する第３の線コマンドが含まれている。第３の線コマンドは、第２の線の終了位置を指定する第３の線パラメーターを含んでもよい。
【０１１３】
さらに別のコマンドとしては、ページモードへ切り換え、ページモードで印刷領域を追加する命令を命令バッファーに追加するページモードコマンドであってもよい。すなわち、ページモードは、印刷領域が定義され、その印刷領域にデータを配置し、バッチ動作で印刷領域が印刷される、印刷モードでよい。ページモードにはさらに、印刷領域に対して所望の配置場所を指定する、少なくとも一つの座標を含んでもよい。第２のページモードコマンドは、第１のページモードコマンドにより始められたページモードを終了させる命令を追加してもよい。さらに、第３のページモードコマンドは、第１のページモードコマンドで定義されたページモードに、少なくとも一つの設定（つまり、設定パラメーター）を追加してもよい。第３のページモードコマンドには、ページモードにおいて印刷する方向、または、ページモードにおいて印刷での開始位置を指定する座標を、指定する第３のページパラメーターを含んでいてよい。第４のページモードコマンドは、さらに、第１のページモードコマンドで定義されたページモードにおいて、線または四角形のような、あらかじめ定義した形状を、描画する命令を追加してもよい。ページモード内で、あらかじめ定義した形状の、つまり、線または四角形の、開始位置と終了位置を指定する座標を、第４のページモードコマンドは含んでもよい。さらに、形状の種類選択を指定する第４のページパラメーターを第４のページモードコマンドは含んでもよい。たとえば、線タイプまたは四角形タイプを、第４のページパラメーターで指定してもよい。
【０１１４】
別のコマンドとしては、たとえば、用紙カッター４７によるように、用紙を、つまり、印刷媒体を、カットする命令を命令バッファーに追加する、用紙カットコマンドでもよい。最初に用紙を供給することなく用紙をカットするか、用紙を供給したあとで用紙をカットするかのいずれかを指定する用紙カットパラメーターを、用紙カットコマンドは含んでもよい。
【０１１５】
図３に示すように、本発明によるプリンターには、それに接続されるドロワー４３があってもよい。そうであると仮定すると、別のコマンドとしては、ドロワーをキックして（つまり、解放して、または掛け金をはずして）開ける命令を命令バッファーに追加する、ドロワーキックコマンドでもよい。好適には、ドロワーキックコマンドには、ドロワーを開けるために加えられる信号のオン期間を指定する第１のドロワーパラメーターを含んでいる。さらに、好適には、ドロワーは二つのコネクターによりプリンターに接続されていて、ドロワーとプリンターを接続するコネクタのいずれか一つ（の解放）を指定する第２のドロワーパラメーターを、ドロワーキックコマンドは含む。
【０１１６】
図３に示すように、PrinterID_2にはブザー４５が備わっていてもよい。その場合、別のコマンドとしては、ブザーをオンにする（または起動する）命令を命令バッファーに追加する、ブザーコマンドでもよい。ブザーの起動が繰り返される回数、またはパターンを指定するブザーパラメーターが、ブザーコマンドに含まれてもよい。
【０１１７】
POSシステムで実現される、本発明の具体的な例は以下の通りである。
【０１１８】
図６は、ＰＯＳシステム７９で適用した、本発明の具体例を記載する。図示の通り、本例においては、上記のように、サーバー７１、Webブラウザー７３，インテリジェントモジュール７５を含んでいる。説明のために、インテリジェントモジュール７５は、TMインテリジェントプリンターとして示されているが、それは、一つまたはそれ以上のプリンターと通信する一つまたはそれ以上のインテリジェントモジュールの組み合わせから構成されてもよいことを示す。Webブラウザー７３は、POSデバイス（電子／コンピューター化されたキャッシュレジスターなど）内で実行されてもよく、上記のように、Webブラウザー７３によりWebページ７７をアクセスする。説明を容易にするために、ＰＯＳシステム７９で適用された、本発明の印刷メカニズム／方法をePOS-Printと呼ぶ。
【０１１９】
ePOS-Printは、マルチプラットフォーム環境においてPOSプリンターを制御するために機能を提供する。ePOS-Printを使用して、パーソナルコンピュータ、スマートフォーン、またはタブレットコンピュータ上のWebブラウザーからTMインテリジェントプリンター（つまり、一つまたはそれ以上のインテリジェントモジュールと、一つまたはそれ以上のプリンターの組み合わせ）へと、データを直接印刷することができる。
【０１２０】
さらに、HTML5-Canvasにおいて描画された印刷イメージを印刷できる。当該技術で既知のように、HTML5-Canvasはグラフィックスのためのコンテナーであり、スクリプトを書くことによりグラフィックスを描画する手段を提供する。ePOS-Printは、印刷コマンドのためにAPI（本説明において印刷APIに等しい）を提供する。ホスト（つまり、Webブラウザー７３が動作しているデバイスまたは入力端末）から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フォントを印刷に使用することができる。
【０１２２】
図７は、ePOS-Print APIによって実現することができる印字の種類の例を示す。二つのレシート８１と８３を示す。上記のように、レシート８１は多様な印刷コマンドの実行例である。レシート８１は、ロゴ印刷、文字位置揃え（中央揃え）、紙送り、用紙カットの例を示す。レシート８３は、ラスターイメージ印刷、文字の横倍角印字、６倍（横）、４倍（縦）などの倍率、位置揃え（中央）、そして、バーコード印刷のための印刷コマンドの実行例を示す。
【０１２３】
図８は、ePOS-Print-Canvas APIによって実現することができる印刷の種類の例を示す。本例においては、HTML5 Canvasにより作成されるグラフィックスはバーコードを含むが、これは典型的にはモノクログラフィックス（またはイメージ）であり、バーコードのすぐ上の絵のようなグラフィックスである。この絵のようなグラフィックスは、モノクロでも、多階調でも、カラーでもよい。
【０１２４】
図９は、本発明の一実施例における印刷の流れの例である。本例においては、サーバー、無線LANルーター、Webブラウザー、TMインテリジェントプリンター、制御可能なプリンターが示されている。好適には、本発明のWebアプリケーション（つまり、Webページ）はサーバーに配置（つまり、保持）されてもよく、WebブラウザーがWebアプリケーションを表示する。動作においては、WebブラウザーがTMインテリジェントプリンター（または、インテリジェントモジュール）へ印刷データを送信してもよく、TMインテリジェントプリンターは、その制御下にある適切なプリンターへその印刷データを送信し、これらのプリンターがそのデータを印刷する。その後、TMインテリジェントプリンターは、応答ドキュメントをWebブラウザー（つまり、Webブラウザーを動作させている端末）へ返す。
【０１２５】
ePOS-Print APIは複数の機能を提供してもよい。たとえば、位置揃え（文字位置揃えなど）、改行量、倒立文字、ページモードなどの印刷設定機能を提供できる。また、言語、フォント（デバイスフォント）、倍角、倍率、スムージング、印刷位置などの複数の文字データ設定（テキスト文字など）を提供することもできる。また、白黒の反転、下線、太字体などの文字装飾設定を提供することもできる。さらに、紙送り設定（ドット数、または行数による）などのプリンター操作制御項目を含んでいてもよい。好適には、ePOS-Print APIはまた、イメージ印刷（つまり、ラスターイメージとNVグラフィックス）、バーコード印刷、２次元符号印刷を提供する。さらに、罫線設定、ドロワーキック機能、ブザー機能、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以降の標準ブラウザーがある。
【０１２８】
本発明のシステム構築例を図１０に示す。この例においては、前のように、（Web）サーバー（そこにはWebアプリケーション、つまり、Webページ、が配置される）、入力端末（そこにはHTML5をサポートするWebブラウザーがインストールされている）、オプションの無線LANルーター、TMインテリジェントプリンター、TMインテリジェントプリンターにより制御可能なプリンターが示されている。前と同じように、TMインテリジェントプリンターは、Webブラウザーから送信された印刷データを受信し印刷し、および／または他のデバイスを制御し、その制御下にあるプリンターはTMインテリジェントプリンターから受信した印刷データを印刷する。
【０１２９】
図１１は、WebアプリケーションをTMインテリジェントプリンターへ登録する状況を示す。前に説明したように、入力端末は、ブラウザーを使って、Webアプリケーション（つまり、Webページ）を実行し（つまり、アクセスし）、デバイス制御（印刷データを含んでもよい）をTMインテリジェントプリンターへ送信する。その後、TMインテリジェントプリンターは、Webブラウザーから送信された、受信印刷データを印刷する。
【０１３０】
本発明の好適な実施例においては、いくつかの制約が科されてもよい。たとえば、プリンターのドロワーとブザーは一緒に使用してはならない。当然のことだが、プリンターにブザーがなければ、プリンター機能は使用できない。
【０１３１】
また、特定のWebブラウザーによる制約を本発明では妨げないことがある。たとえば、Internet Explorer 9では、安全保護されているWebパージ（典型的にはHTTPSというアドレスヘッダーにより識別される）からはプリンターへの印刷が許可されていない。
【０１３２】
図１２は、本発明において、ePOS-Print APIを使用して作成したサンプルプログラム画面の例を示す。以下の例においては、WebサーバーはIIS（Microsoft Internet Information Services)を使用して構成されていると仮定する。ボックス１では受付券を示し、ボックス２ではクーポンを示し、ボックス３では設定起動ボタンが示されている。一実施例において、ボックス１で受付券番号を印刷してもよく、ボックス２ではもちろんクーポンを印刷する。
【０１３３】
図１３は、図１２の設定ボタンを起動することに対応して呼び出されることがある設定画面の例である。設定としては、インテリジェントプリンター（前に説明したように、インテリジェントモジュール内の）のネットワークアドレス（つまり、IPアドレス）、対象プリンターのデバイスID、タイムアウト時間設定、多階調印刷のオプションを含んでいてもよい。
【０１３４】
図１４は、ePOS-Print APIを使用した第１のサンプル印刷物と、ePOS-Print-Canvas APIＩを使用した第２のサンプル印刷物とを示す。図示のように、好適には、グラフィックスを印刷するにはePOS-Print-Canvas APIが使用される。
【０１３５】
図１５は、初期表示状態から印刷ジョブ完了までのプロセスステップの流れを示す流れ図の例である。これはePOS-Print APIを使用して印刷した受付券番号発行の例である。プロセスは、ステップ９１で、Webアプリケーション（つまり、サンプルプログラムWebページ）を開くことで始まる。その後、ステップ９３で設定が入力される。設定としては、TMインテリジェントプリンターのIPアドレス、制御されるプリンターのデバイスID、（印刷）タイムアウト時間を含んでいてもよい。ステップ９５に示すように、受付券番号発行オプションを選択する（つまり、クリックする）ことで、適切な受付券が作られる。その後、ePOS-Print Builderオブジェクトを呼ぶことで印刷データを作成してもよい（ステップ９７）。その後、ePOS-Printオブジェクトが印刷物を作成する（ステップ９９）。
【０１３６】
図１６は、クーポン発行のためのプロセスステップの流れを示す流れ図の例である。これはePOS-Print Canvas APIの例である。プロセスの流れは、本発明のWebページを開くことで始まる（ステップ１０１）。必要であれば、設定入力をしてもよい（ステップ１０３）。設定の例としては、TMインテリジェントプリンターのIPアドレス、印刷に使用されるプリンターのデバイスID、印刷タイムアウト時間がある。その後、クーポン発行オプションをクリックする（つまり、起動する／選択する）（ステップ１０５）。その後、Webページにより、クーポンをHTML5-Canvasで描画する（ステップ１０７）。最後にステップ１０９で、Webページにより、ePOS-Print Canvas API（つまり、ePOS-Print Canvas APIオブジェクト）を使用してTMインテリジェントプリンター（つまり、インテリジェントモジュール）へ印刷リクエストを発行する。
【０１３７】
図１７は、本発明の動作環境の例である。基本的に、図１７では、以下に説明する、いくつかのサンプルプログラムのシステム構成図を示す。図１７では、（192.168.192.10）という固定IPアドレスを持つWebサーバーを示す。Webサーバーにより、環境設定を構成してもよい。Webサーバーは、無線LANルーターと直接通信する。無線LANルーターは、たとえば、（192.168.192.1）という固定IPアドレスを持っていてもよい。無線LANルーターは、TMインテリジェントプリンター（たとえば、（192.168.192.20）という固定IPアドレスを持っていてもよい）と、TMインテリジェントプリンターによって制御することができるオプションの第２プリンターとの間に通信路（有線接続など）を提供する。好適には、オプションの第２プリンターも、たとえば、（192.168.192.21）という固定IPアドレスを持つ。本例においては、無線LANルーターは、HTML5をサポートするWebブラウザーを持つ入力端末への無線通信リンクを提供し、そのWebブラウザー上で、本発明のWebページが実行されてもよい。本例において、入力端末は動的なネットワークアドレスを持ち（（192.168.192.XXX）と図示）、このアドレスはDHCPにより発行できる。たとえば、無線LANルーターは、DHCPにより入力端末へIPアドレスを発行してもよい。
【０１３８】
図１８は、サンプルプログラムの環境設定を構成するためのプロセスフローを示す。ステップ１１１において、SSID、IPアドレス、DHCP、割り当てられたIPアドレスなどのルーター設定を構成することでフローを始める。次にステップ１１３で、コンピューターの設定を行う。これは、IPアドレスなどの、コンピューターのネットワーク設定を構成する第１のサブステップ１１３ａと、コンピューター上のWebサーバーを構成する第２のサブステップ１１３ｂに分割してもよい。ステップ１１５で、実行するプログラムを登録する。本例においては、ePOS-Print_API_UME_Sampleと呼ばれるサンプルプログラムが登録される。その後、入力端末の無線LAN（Wi-Fi）の設定を構成してルーターの設定と合致させ、ネットワーク接続を可能にするようにするなど、入力端末の設定を行う。ステップ１１９で、TMインテリジェントプリンターのネットワーク設定を行う。これはWebブラウザー経由で行ってもよい。次にステップ１２１で、制御されるプリンターのネットワーク設定を行う。当該技術で既知のように、ネットワーク設定ユーティリティを使用して、これらの設定を構成してもよい。ステップ１２３では、オプションのデバイスID設定を行う。これらの設定はWebブラウザー経由で行ってもよいが、本サンプルプログラムでは要求されていない。最後にステップ１２５では、Webブラウザー経由で必要なプログラム設定を行ってもよい。なお、本サンプルプログラムでは、プログラム設定は必要ない。
【０１３９】
図１９は、TMインテリジェントプリンターのネットワーク設定の例である。Webブラウザーを起動し、TMインテリジェントプリンターインターフェースのIPアドレスをアドレスバー１２７へ入力することで、設定を始めてもよい。その後、１２９で示すように、有線TCP/IP、または無線TCP/IPなどの構成を選択してもよい。そうするとTCP/IP設定画面が現れ、１３１で示すように、TMインテリジェントプリンターのネットワーク設定を行う。IPアドレスを確認するためには、TMインテリジェントプリンターを使用しステータス用紙を提出してもよい。
【０１４０】
図２０は、デバイス設定の例である。たとえば、ePOS-Printにより制御されるプリンターのIDを、TMインテリジェントプリンターへ設定してもよい。Webブラウザーを使用して、TMインテリジェントプリンターのIPアドレスを入力してもよい（１３３）。その後、構成するデバイスを選択する（１３５）。デバイス設定画面１３７が現れる。図２１は、構成されうる、デバイス設定の例を示す。登録されたデバイス上の情報１３９が表示される。
【０１４１】
上記の構成と登録シーケンスを実行すると、図１２のサンプルプログラム画面となる。
【０１４２】
次に、ePOS printを使用した、すなわち、本発明の印刷APIを使用したプログラミングのガイドについて述べる。
【０１４３】
好適には２種類の印刷モードがあり、標準モードとページモードである。標準モードでは、文字は行ごとに印字される。フォントの大きさと、バーコードなどのイメージの高さに基づいて改行量は調整される。標準モードはレシートの印刷や、印刷スペースにしたがって用紙長さの変更が必要な、ほかの種類の印刷に適している。
【０１４４】
ページモードでは、印刷領域が設定（つまり、定義）され、そこにデータが配置され、バッチ動作でそのデータが印刷される。たとえば、文字、イメージ、バーコードが位置座標によって印刷領域に配置されてもよく、その後、バッチ動作で結果としての印刷領域が印刷される。
【０１４５】
図２２は、ePOS-Print APIを使用したプログラミングのサンプルワークフローを示す。最初のステップ１４１は、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ページに埋め込んでもよい。図２３は、ePOS-Print APIを組み込むためにHTMLの<script>タグを使用する例を示す。
【０１４６】
次のステップ１４３は、印刷されるドキュメントを作成するためである。ePOS-Print Builderオブジェクトを使用して、印刷ドキュメントを作成してもよい。たとえば、ePOS-Print Builderオブジェクトは、そのためのコンストラクターを使用して作成し、そのオブジェクトのメソッドを使用して印刷ドキュメントを作成する。以下に列記するように、toStringメソッドやほかの印刷APIメソッドまたは機能を使用して、印刷ドキュメントを得てもよい。図２４は、印刷ドキュメントを作成するためのプログラムコードセグメントの例を示す。
【０１４７】
文字印字ドキュメントを作成するには、テキストメソッドを使用して命令バッファーにフォント設定を記憶し、その後、印字ドキュメントを作成する。図２５は、文字印字ドキュメントを作成するためのサンプルスクリプトコードを示す。このサンプルスクリプトコードでは、FontAを呼ばれるフォントを使用し、文字倍率を横４倍、縦４倍に設定し、装飾を太字としている。サンプルスクリプトの結果は、指定した文字設定で、Hello Worldという文字の印字ドキュメントを作成することである。
【０１４８】
図２６は、グラフィックの印刷ドキュメントを作成するためのサンプルスクリプトコードを示す。具体的には、このサンプルスクリプトコードは、logo.bmpというイメージファイルの印刷ドキュメントを作成する。基本的には、ラスターイメージを印刷する一つのやり方を記している。プリンター内の不揮発性メモリーに登録したグラフィックスを印刷する別の方法は、以下に述べる。本例において、グラフィックの印刷ドキュメントを作成するためには、HTML5-Canvasにおいてイメージを描画することで得られたラスターイメージを、addImageメソッドを使用して命令バッファーに記憶する。
【０１４９】
図２２のステップ１４３に示すように、印刷ドキュメントを作成する別の方法は、ページモードの印刷ドキュメントを作成することである。図２７は、ページモードの印刷ドキュメントを作成するためのサンプルコードを示す。この例では、印刷領域にHello worldという文句を追加する。次の例ではaddPageBeginメソッドを使用している。命令バッファーにaddPageBeginメソッドを記憶すると、ページモードが開始する。命令バッファーに印刷領域が（addPageAreaメソッドにより）記憶され、命令バッファーに印刷開始位置が（addPagePositionメソッドにより）記憶される。その後、印刷データにしたがって印刷開始位置が指定される。その後、これらのメソッドは命令バッファーに記憶され、印刷データが作成される。ページモードを終了するために、命令バッファーにPageEndメソッドが記憶される。
【０１５０】
図２２に戻り、ステップ１４３の印刷ドキュメントの作成の次は、作成された印刷ドキュメントを送信するステップ１４５である。図２８は、印刷ドキュメントを送信するためのサンプルコードを示す。本例において、ePOS-Printオブジェクトを使用して印刷ドキュメントは送信される。ePOS-Printオブジェクトはコンストラクターで作成してもよく、印刷ドキュメントと印刷に使用されるプリンターのエンドポイントアドレスをsendメソッドに指定（つまり、入力）して、印刷ドキュメントを送信してもよい。 図２９は、プリンターのエンドポイントアドレスについての詳細を示す表である。
【０１５１】
図２２に示すように、最後のステップ１４７では印刷データを受信する。ePOS-Printオブジェクトのonreceiveプロパティ（後述）を用いてコールバック関数を設定することで、印刷結果を受信することができる。図３０は、コールバック関数を実装するためのサンプルコードである。得ることができる情報の例としては、印刷結果、エラーコード、プリンターステータスがある。図３１は、コールバック関数のエラーハンドリング方法の例である。図３２は、印刷を行わずにプリンターステータスを確認するためにステータスイベント通知機能を使用する場合を示す。
【０１５２】
図３３は、ePOS-Print-Canvas APIを使用したプログラミングのワークフローを示す。ePOS-Print APIの場合と同じで、ePOS-Print-Canvas APIは、ePOS-Print-Canvas APIをWebページに組み込むステップ１５１で始まる。図３４は、ePOS-Print-Canvas APIを組み込むためのサンプルコードを示す。説明のために、ePOS-Print-Canvas APIはJavaScriptとして示され、好適にはepos-print-2.x.x.jsという命名規約に従う。ePOS-Print-Canvas APIはWebサーバーに保持（つまり、配置、保有、または記憶）され、その後、クライアントに配布されて彼らのアプリケーション（つまり、Webページ）に組み込まれる。図３４に示すように、ePOS-Print-Canvas APIはHTMLの<script>タグを使用してWebアプリケーションに組み込まれてもよい。
【０１５３】
図３３の次のステップ１５３は、HTML5-Canvasでの描画である。図３５は、HTML5-Canvasで描画するためのサンプルコードを示す。次のステップ１５５は、描画したcanvasイメージの印刷である。図３６は、印刷のために印刷ドキュメントを送信するためのサンプルコードを示す。ePOS-Print-Canvas APIを使用してHTML5-Canvasで描画した内容を印刷するには、コンストラクターを使用してePOS-Print-Canvas APIオブジェクトを作成する。Printメソッドを使用するには、canvasの内容と印刷に使用するプリンターのエンドポイントアドレス、そして用紙カットを選択するかどうかを指定し、その後ドキュメントを印刷する。
【０１５４】
ステップ１５７で示すように、TMインテリジェントプリンター（つまり、インテリジェントモジュール）は送信物を受信する。図３７は、コールバック関数により結果印刷を印刷するためのサンプルコードを示す。前記のように、ePOS-Print Canvas APIオブジェクトのonreceiveプロパティを用いてコールバック関数を設定することで、印刷結果を受信することができる。このように、印刷結果、エラーコード、プリンターステータスについての情報を得ることができる。図３８は、コールバック関数によるエラーハンドリングのためのサンプルコードである。こうして、図３９のサンプルコードに示すように、印刷を行わずにプリンターステータスを確認するために、ステータスイベント通知機能を使用することができる。
【０１５５】
上記のように、印刷ドキュメントを作成するための多くのメソッドをePOS-Print APIは提供する。図４０、図４１、図４２ａ、図４２ｂは、ePOSBuilderオブジェクトにより定義されるように、ePOS-Print APIのメソッドと要素のいくつかを列記する。
【０１５６】
当業者には理解されただろうが、コンストラクターにより、新しいePOS-Print Builderオブジェクトが作成され初期化されて、その後、オブジェクトを使用して、印刷される文字列またはグラフィックス、用紙カットなどを指定する制御コマンドを印刷する印刷ドキュメントを作成できる。好適には、このコンストラクターは次の構文に従う：ePOSBuilder(  )；。図４３は、ePOS-Print Builderオブジェクトのコンストラクターのサンプルコードである。
【０１５７】
文字の位置揃え設定を命令バッファーに追加する構文は、addTextAlign(align)という構文にしたがってもよい。ここでalignは位置揃えの種類を指定する。図４４は、位置揃えパラメーターの種類の例を示す。図４５は、ePOS-Print Builderオブジェクトの戻り値で、図４６は、例外エラーである。図４７は、文字の位置揃えの使い方を示すサンプルコードである。
【０１５８】
改行量設定を命令バッファーに追加するメソッドは、好適にはaddTextLineSpace(linespc)という構文にしたがう。linespcパラメーターは改行量（ドット単位）を指定し、好適には０から２５５までの範囲の整数である。図４８は、改行量を３０ドットに設定するサンプルコードを示す。
【０１５９】
倒立印字設定を命令バッファーに追加するメソッドは、好適には次の構文に従う：addTextRotate(rotate)。ここでrotateは、倒立印字の有無を指定するBoolean値である。図４９は、倒立印字パラメーターのためのBoolean値を示す。図５０は、倒立印字を設定するためのサンプルコードである。
【０１６０】
文字の印字を命令バッファーに追加するメソッドは、好適にはaddText(data)という構文にしたがう。ここで、dataパラメーターは印字される文字列である。図５１に示すように、水平タプや改行のような、印字できない文字は、エスケープシーケンスを使用してもよい。図５２は、addText(data)の使い方を示すサンプルコードである。
【０１６１】
言語設定を命令バッファーに追加するメソッドは、好適にはaddTextLang(lang)という構文にしたがう。ここで、langパラメーターは対象言語を指定する列である。図５３は対象言語を指定するためのlangパラメーターの例を示す。図５４はaddTextLang(lang)メソッドの使い方を示すサンプルコードである。
【０１６２】
文字のフォント設定を命令バッファーに追加するメソッドは、好適にはaddTextFont(font)という構文にしたがう。ここで、fontパラメーターは所望のフォントを指定する列である。図５５はfontパラメーターのサンプル値を示し、図５６はaddTextFont(font)メソッドの使い方を示すサンプルコードである。
【０１６３】
スムージング設定を命令バッファーに追加するメソッドは、好適にはaddTextSmooth(smooth)という構文にしたがう。ここで、smoothパラメーターは,スムージングの有効化の有無を指定するBooleanである。図５７はsmoothパラメーターの可能な値を示し、図５８はaddTextSmooth(smooth)メソッドの使い方を示すサンプルコードである。
【０１６４】
文字の倍角設定を命令バッファーに追加するメソッドは、好適にはaddTextDouble(dw, dh)という構文にしたがう。ここで、dwは横倍角を指定する、オプションのBooleanパラメーターで、dhは縦倍角を指定する、オプションのBooleanパラメーターである。図５９はdwのパラメーター値を示し、図６０はdhのパラメーター値を示す。図６１は文字倍角を横倍角と縦倍角に設定するためのサンプルコードである。
【０１６５】
文字の倍率設定を命令バッファーに追加するメソッドは、好適にはaddTextSize(width, height)という構文にしたがう。ここで、widthパラメーターは、文字の横倍率を指定する、オプションの数値パラメーターで、heightパラメーターは、文字の縦倍率を指定する、オプションの数値パラメーターである。図６２はwidthパラメーターの可能な値を示し、図６３はheightパラメーターの可能な値を示す。図６４は、横倍率を４倍にし縦倍率を４倍にするためのサンプルコードである。
【０１６６】
文字の装飾設定を命令バッファーに追加するメソッドは、好適にはaddTextStyle(reverse, ul, em, color)という構文にしたがう。ここで、reverseパラメーターは、文字について白黒を反転するかどうかを指定する、オプションのBooleanパラメーターで、ulは、文字のアンダーライン装飾を指定する、オプションのBooleanパラメーターで、emは、文字の太字装飾を指定する、オプションのBooleanパラメーターで、colorは、色を指定する、オプションの列パラメーターである。図６５はreverseパラメーターの可能な値を示す。図６６はulパラメーターの可能な値を示す。図６７はemパラメーターの可能な値を示す。図６８はcolorパラメーターの可能な値を示す。図６９はアンダーライン装飾を設定するためのサンプルコードである。
【０１６７】
横方向の文字の印字開始位置を命令バッファーに追加するメソッドは、好適にはaddTextPosition(x)という構文にしたがう。ここで、xは、横方向の印字開始位置（ドット単位）を指定する数値パラメーターで、０〜６５５３５の範囲の整数値である。図７０は、印字位置を左端から１２０ドットに設定するためのサンプルコードを示す。
【０１６８】
ドット単位の紙送りを命令バッファーに追加するメソッドは、好適にはaddFeedUnit(unit)という構文にしたがう。ここで、unitは、紙送り量（ドット単位）を指定する数値パラメーターで、０〜２５５の範囲の整数値である。図７１は、紙送りを３０ドットするためのサンプルコードを示す。
【０１６９】
行単位の紙送りを命令バッファーに追加するメソッドは、好適にはaddFeedLine(line)という構文にしたがう。ここで、lineは、紙送り量（行単位）を指定する整数の数値パラメーターで、０〜２５５の範囲にある。図７２は紙送りを３行するためのサンプルコードを示す。
【０１７０】
改行を命令バッファーに追加するメソッドは、好適にはaddFeed(  )という構文にしたがう。図７３は文字列を印字した後に、新しい行を開始するためのサンプルコードを示す。
【０１７１】
addImageメソッドでは、ラスターイメージの印刷を命令バッファーに追加し、HTML5-Canvasで描画したグラフィックスを印刷する。さらに、HTML5-CanvasのRGBAフルカラーイメージの中で指定された範囲をhalftoneプロパティとbrightnessプロパティの設定にしたがって、ラスターイメージデータに変換する。イメージの１ピクセルがプリンターの１ドットに相当するとされ、イメージに透明色が含まれている場合、イメージの背景色を白とみなす。好適には次の構文にしたがう：addImage(context, x, y, width, height, color, mode)。ここで、contextはHTML5-Canvasの2Dコンテキストを指定するコンテキストパラメーターで、xは０〜６５５３５の範囲の整数値で、印刷領域の横方向の開始位置を指定し、yは０〜６５５３５の範囲の整数値で、印刷領域の縦方向の開始位置を指定し、widthは０〜６５５３５の範囲の整数値で、印刷領域の幅を指定し、heightは０〜６５５３５の範囲の整数値で、印刷領域の高さを指定し、colorは色を指定する、オプションの列パラメーターであり（図７４はaddImageメソッドの中のcolorパラメーターのサンプル値を示す）、modeはカラーモードを指定する、オプションの列パラメーターである（図７５はaddImageメソッドの中のmodeパラメーターのサンプル値を示す）。図７６はページモードで幅３００ドット、高さ３００ドットのイメージを印刷するためのサンプルコードである。
【０１７２】
ＮＶロゴの印刷を命令バッファーに追加するメソッドは、好適にはaddLogo(key1, key2)という構文にしたがう。このメソッドで、プリンターのNVメモリーにすでに登録されているロゴを印刷する。key1パラメーターは、ＮＶロゴの第１のキーコード１を指定する数値で、好適には０〜２５５の範囲の整数である。key2パラメーターは、ＮＶロゴの第２のキーコード２を指定する数値で、好適には０〜２５５の範囲の整数である。図７７はaddLogoメソッドの使い方を示すサンプルコードである。
【０１７３】
バーコードの印刷を命令バッファーに追加するメソッドは、好適にはaddBarcode(data, type, hri, font, width, height)という構文にしたがう。dataパラメーターは、バーコードデータを列として指定する列である。typeパラメーターは、バーコードの種類を指定する列である。図７８から図８１は、バーコードの種類の例を示す。hriパラメーターは、HRIの位置を指定する、オプションの列パラメーターである。図８２はhriパラメーターのいくつかの可能な値を示す。fontパラメーターは、HRIフォントを指定する、オプションの列である。widthパラメーターは、各モジュールの幅をドット単位で指定する、オプションの整数値で、好適には２〜６の範囲である。heightパラメーターは、バーコードの高さをドット単位で指定する、オプションの整数値で、好適には１〜２５５の範囲である。図８３はバーコードの印字の仕方を示すサンプルコードである。
【０１７４】
２次元シンボルの印刷を命令バッファーに追加するメソッドは、好適にはaddSymbol(data, type, level, width, height, size)という構文にしたがう。dataパラメーターは、好適には、２次元（2D）シンボルデータを文字列として指定する列である。図８４と図８５は、addSymbolメソッドの中でdataパラメーターの2Dコード種類の説明の例を示す。typeパラメーターは、２次元シンボルの種類を指定する列である。図８６はaddSymbolメソッドの中でtypeパラメーターのサンプル値を示す。levelパラメーターは、エラー訂正レベルを指定する列である。図８７はaddSymbolメソッドの中でlevelパラメーターのサンプル値を示す。widthパラメーターは、モジュールの幅を指定する整数値で、０〜２５５の範囲である。heightパラメーターは、モジュールの高さを指定する整数値で、０〜２５５の範囲である。sizeパラメーターは、２次元シンボルの最大の大きさを指定する整数値で、０〜６５５３５の範囲である。図８８は２次元シンボルを印字するためのサンプルコードを示す。
【０１７５】
横罫線を引くために、横罫線の印刷を命令バッファーに追加するメソッドは、好適にはaddHLine(x1, x2, style)という構文にしたがう。ここで、x1パラメーターは、０〜６５５３５の範囲の整数値で、横罫線の開始位置（ドット単位）を指定し、x2パラメーターは、０〜６５５３５の範囲の整数値で、横罫線の終了位置（ドット単位）を指定し、styleパラメーターは、罫線の種類を指定する列である。図８９はaddHLineメソッドのいくつかのstyleパラメーターを示す。図９０は、左端から１００ドットから２００ドットまでと、左端から４００ドットから５００ドットまでの間の位置に、二重横罫線を描画するためのサンプルコードを示す。
【０１７６】
縦罫線の開始を命令バッファーに追加する（つまり、縦罫線の描画を開始する）メソッドは、addVLineBegin(x, style)という構文にしたがう。ここで、xパラメーターは、０〜６５５３５の範囲の整数値で、縦罫線の開始位置（ドット単位）を指定し、styleパラメーターは、罫線の種類を指定する、オプションの列である。図９１はaddVLineBeginメソッドのstyleパラメーターの例を示す。図９２は縦罫線を左端から１００ドットと２００ドットの位置に細線で描画するためのサンプルコードを示す。
【０１７７】
縦罫線の終了を命令バッファーに追加する（つまり、縦罫線の描画を終了する）メソッドは、addVLineEnd(x, style)という構文にしたがう。ここで、xパラメーターは、０〜６５５３５の範囲の整数値で、縦罫線の終了位置（ドット単位）を指定し、styleパラメーターは、描画を終了する罫線の種類を指定する、オプションの列である。図９３はaddVLineEndメソッドのstyleパラメーターの例を示す。図９４は、縦罫線を左端から１００ドットと２００ドットの位置に細線で描画するためのサンプルコードを示す。
【０１７８】
ページモードへの切り換えを命令バッファーに追加する（つまり、ページモードの処理を開始する）メソッドは、addPageBegin( )という構文にしたがう。ページモードの終了を命令バッファーに追加する（つまり、ページモードの処理を終了する）メソッドは、addPageEnd( )という構文にしたがう。図９５は、ページモードで文字「ＡＢＣＤＥ」を印字するためのサンプルコードを示す。
【０１７９】
addPageArea(x, y, width, height)メソッドでは、ページモードで印字領域（座標）を指定するために、ページモードの印字領域を命令バッファーに追加する。本API機能の後で、印刷データAPI機能(addTextメソッドなど)を指定すること。xパラメーターは０〜６５５３５の範囲の整数で、横軸の原点（ドット単位）を指定する。ここで、０はプリンターの印字可能領域の左端である。yパラメーターは０〜６５５３５の範囲の整数で、縦軸の原点を指定する。ここで、０は、紙送りをしていない位置である。widthパラメーターは０〜６５５３５の整数値で、印字領域の幅（ドット単位）を指定する。図９６は、原点（１００、５０）、幅２００ドット、高さ３０ドットの印字領域を指定して、文字「ＡＢＣＤＥ」を印字するためのサンプルコードを示す。
【０１８０】
ページモードの印字方向設定を命令バッファーに追加する（つまり、ページモードの印字方向を指定する）メソッドは、addPageDirection(dir)という構文にしたがう。この機能は、回転が要求されない場合は省略してもよい。dirパラメーターは、ページモードの印字方向を指定する列である。図９７は、addPageDirectionメソッドのdirパラメーターのいくつかの例を示す。図９８は、時計回りに９０度回転させて、文字「ＡＢＣＤＥ」を印字するためのサンプルコードである。
【０１８１】
ページモードの印字位置設定領域を命令バッファーに追加する（つまり、addPageAreaメソッドで指定された領域内で印字開始位置（座標）を指定する）メソッドは、addPagePosition(x, y)という構文を持つ。xパラメーターは、０〜６５５３５の範囲の整数値で、横方向の印字位置（ドット単位）を指定する。yパラメーターは、０〜６５５３５の範囲の整数値で、縦方向の印字位置（ドット単位）を指定する。図９９は、addPageAreaメソッドで指定した領域内の印字開始位置を（５０、３０）に指定して、文字「ＡＢＣＤＥ」を印字するためのサンプルコードを示す。
【０１８２】
ページモードの線描画を命令バッファーに追加する（つまり、ページモードで線を描画する）メソッドは、addPageLine(x1, y1, x2, y2, style)という構文にしたがう。x1パラメーターは、０〜６５５３５の整数値で、線の横方向開始位置（ドット単位）を指定する。y1パラメーターは、０〜６５５３５の整数値で、線の縦方向開始位置（ドット単位）を指定する。x2パラメーターは、０〜６５５３５の整数値で、線の横方向終了位置（ドット単位）を指定する。y2パラメーターは、０〜６５５３５の整数値で、線の縦方向終了位置（ドット単位）を指定する。styleパラメーターは、線の種類を指定する列である。図１００は、addPageLineメソッドのstyleパラメーターの例を示す。図１０１は、開始位置（１００、０）と終了位置（５００、０）の間を細い実線で描画するためのサンプルコードである。
【０１８３】
ページモードの四角形描画を命令バッファーに追加する（つまり、ページモードで四角形を描画する）メソッドは、addPageRectangle(x1, y1, x2, y2, style)という構文にしたがう。x1パラメーターは、０〜６５５３５の整数値で、線の横方向開始位置（ドット単位）を指定する。y1パラメーターは、０〜６５５３５の整数値で、線の縦方向開始位置（ドット単位）を指定する。x2パラメーターは、０〜６５５３５の整数値で、線の横方向終了位置（ドット単位）を指定する。y2パラメーターは、０〜６５５３５の整数値で、線の縦方向終了位置（ドット単位）を指定する。styleパラメーターは、線の種類を指定する列である。図１０２は、addPageRectangleメソッドのstyleパラメーターの例を示す。図１０３は、開始位置（１００、０）と終了位置（５００、２００）を頂点とする四角形を細い二重線で描画するためのサンプルコードを示す。
【０１８４】
用紙カットを命令バッファーに追加する（つまり、用紙カットを設定または起動する）メソッドは、addCut(type)という構文にしたがう。ここで、typeパラメーターは、用紙カットの種類を指定する列である。図１０４はaddCutメソッドの種類の例を示す。図１０５は紙送りカットするためのサンプルコードである。
【０１８５】
ドロワーキックを命令バッファーに追加するメソッドは、addPulse(drawer, time)という構文を持つ。drawerパラメーターは、ドロワーキックコネクターを指定する列である。図１０６はaddPulseメソッドのdrawerパラメーターの例を示す。timeパラメーターは、ドロワーキック信号のオン時間（つまり、期間）を指定する、オプションのパラメーター列である。図１０７はaddPulseメソッドのtimeパラメーターの例を示す。図１０８は、ドロワーキックコネクター２番ピンに１００ミリ秒のパルス信号を出力するためのサンプルコードを示す。
【０１８６】
ブザーのオンを命令バッファーに追加する（つまり、ブザーを設定する）メソッドは、addSound(pattern, repeat)という構文をしたがう。patternパラメーターは、ブザーのパターンを指定する、オプションの列である。図１０９はブザーのパターンの例を示す。repeatパラメーターは、繰り返し回数を指定する、オプションの列である。図１１０はaddSoundメソッドのrepeatパラメーターの設定の仕方の例を示す。図１１１は音のパターンＡを３回繰り返すためのサンプルコードを示す。
【０１８７】
コマンドを命令バッファーに追加する（つまり、ESC/POSコマンドを送信する）メソッドは、addCommand(data)という構文を持つ。ここで、dataは、ESC/POSコマンドを文字列として指定する、オプションの列である。
【０１８８】
ePOS-Print Builderオブジェクトにより生成された印刷ドキュメントを取得するメソッドは、toString( )という構文を持つ。図１１２はtoString( )メソッドの使い方を示すサンプルコードである。
【０１８９】
halftoneプロパティは、ハーフトーン処理方法により実現されるが、そのオブジェクト種類はstringである。図１１３は、モノクロ（２階調）印刷に適用するハーフトーン処理方法の指定の仕方を示す。初期値はHALFTONE_DITHERである。図１１４は、ハーフトーンの種類を誤差拡散として設定するためのサンプルコードを示す。
【０１９０】
明るさ補正は、ガンマー値を設定することで設定してもよい。０．１〜１０．０の範囲のガンマー値が明るさ補正値として指定される（つまり、利用可能である）。図１１５は、明るさを２．２に設定するためのサンプルコードである。
【０１９１】
コマンドは、ePOS-Print Builderオブジェクトのメソッドにより通常は追加されるが、プロパティから直接操作して、追加したり削除することができる。図１１６は、命令バッファーをクリアし、初期状態に戻すためのサンプルコードである。
【０１９２】
ePOS-Printオブジェクトのコンストラクターは、新しいePOS-Printオブジェクトを作成し、初期化する。ePOS-Print Builderオブジェクトを使用して作成した印刷ドキュメントを送信して、プリンターを制御し、送信結果または通信ステータスを監視するメソッドは、ePOSPrint(address)という構文を持つ。ここで、addressは、印刷ドキュメントが送信されるプリンターのＵＲＬ（つまり、ネットワークアドレス）を指定する、オプションの列である。図１１７は、ePOSPrint(address)の使い方を示すサンプルコードである。
【０１９３】
sendメソッドでは、ePOS-Print Builderオブジェクトで作成した印刷ドキュメントを送信する。send(request)という構文を持ち、ここでrequestは、印刷ドキュメントを指定する列である。図１１８は、send(request)メソッドの使い方を示すサンプルコードである。
【０１９４】
openメソッドでは、statusイベント動作を有効化する。addressプロパティにより指定された、プリンターのステータスをイベントで送信し、intervalプロパティにより指定された間隔でステータスを更新する。open( )という構文を持つ。図１１９は、open( )メソッドの使い方を示すサンプルコードである。
【０１９５】
close( )メソッドでは、statusイベント動作を無効化する。図１２０は、close( )メソッドの使い方を示すサンプルコードである。
【０１９６】
addressプロパティは、印刷に使用するプリンターのＵＲＬを指定するために使用される。図１２１は、addressプロパティの使い方の例である。
【０１９７】
enabledプロパティは、statusイベント動作の有効／無効設定を保持する、Boolean値である。statusイベント動作の有効／無効設定を論理値で保持する。読み取り専用である。図１２２は、enabledプロパティの使い方の例である。
【０１９８】
intervalプロパティは、ステータスを更新する間隔を指定する。ステータスを更新する間隔をミリ秒単位で指定する。３０００ミリ秒（３秒）の初期値を持ち、最小値は１０００ミリ秒（１秒以上）である。不正な値を指定した場合、３０００ミリ秒とみなす。図１２３は、intrervalプロパティの使い方の例である。
【０１９９】
statusプロパティは、プリンターのステータスを提供する。プリンターから最後に取得したステータスで、読み取り専用である。図１２４は、statusプロパティの使い方の例である。
【０２００】
onreceiveイベントは、コールバック関数を登録し、応答メッセージ受信イベントを取得するプロパティである。Function(response)という構文を持つ。コールバック関数のパラメーターとしては、resopnseをパラメーターとして、応答メッセージを名称として、objectをオブジェクト種類として含む。図１２５は、responseオブジェクトのいくつかのプロパティを示す。図１２６はsuccessの値を示す。図１２７はcodeの値を示す。図１２８はstatusの値を示す。図１２９は、印刷ドキュメントを作成して送信し、印刷結果をメッセージボックスに表示するためのサンプルコードを示す。
【０２０１】
onerrorイベントプロパティは、コールバック関数を登録し、通信エラーイベントを取得する。Function(error)という構文を持つ。図１３０は、errorオブジェクトのいくつかのプロパティを列記する。図１３１は、印刷ドキュメントを作成して送信し、通信エラー発生時にHTTPステータスコードをメッセージボックスに表示するためのサンプルコードを示す。
【０２０２】
onstatuschangeイベントは、コールバック関数を登録して、ステータス変更イベントを取得する。Function(status)という構文を持つ。図１３２は、onstatuschangeイベントの使い方の例である。
【０２０３】
ononlineイベントは、コールバック関数を登録して、オンラインイベントを取得する。Function( )という構文を持つ。図１３３は、ononlineイベントの使い方の例である。
【０２０４】
onofflineイベントは、コールバック関数を登録して、オフラインイベントを取得する。これもFunction( )という構文を持つ。図１３４は、onofflineイベントの使い方の例である。
【０２０５】
onpoweroffイベントは、コールバック関数を登録して、無応答イベントを取得する。これもFunction( )という構文を持つ。図１３５は、onpoweroffイベントの使い方の例である。
【０２０６】
oncoverokイベントは、コールバック関数を登録して、カバークローズイベントを取得する。これもFunction( )という構文を持つ。図１３６は、oncoverokイベントの使い方の例である。
【０２０７】
oncoveropenイベントは、コールバック関数を登録して、カバーオープンイベントを取得する。これもFunction( )という構文を持つ。図１３７は、oncoveropenイベントの使い方の例である。
【０２０８】
onpaperokイベントは、コールバック関数を登録して、用紙ありイベントを取得する。これもFunction( )という構文を持つ。図１３８は、onpaperokイベントの使い方の例である。
【０２０９】
onpapernearendイベントは、コールバック関数を登録して、用紙ニアエンドイベントを取得する。これもFunction( )という構文を持つ。図１３９は、onpapernearendイベントの使い方の例である。
【０２１０】
onpaperendイベントは、コールバック関数を登録して、用紙エンドイベントを取得する。これもFunction( )という構文を持つ。図１４０はonpaperendイベントの使い方の例である。
【０２１１】
ondrawerclosedイベントは、コールバック関数を登録して、ドロワークローズイベントを取得する。これもFunction( )という構文を持つ。図１４１はondrawerclosedイベントの使い方の例である。
【０２１２】
ondraweropenイベントは、コールバック関数を登録して、ドロワーオープンイベントを取得する。これもFunction( )という構文を持つ。図１４２はondraweropenイベントの使い方の例である。
【０２１３】
いくつかのePOS-Print-Canvas API機能を以下に述べる。図１４３はePOS-Print-Canvas APIのいくつかの構成要素を列記する。
【０２１４】
ePOS-Print-Canvas APIオブジェクトは、HTML5-Canvasで描画された印刷イメージを印刷し、印刷結果や通信ステータスを監視する。ePOS-Print-Canvas APIオブジェクトのコンストラクターを使い、新しいePOS-Print-Canvas APIオブジェクトを作成し初期化する。構文はCanvasPrint(address)であり、ここでaddressはaddressプロパティ（印刷に使用するプリンターのＵＲＬ）を指定する、オプションの列である。図１４４は、新しいePOS-Print-Canvas APIオブジェクトを作成するサンプルコードを示す。
【０２１５】
printメソッドは、HTML5-Canvasで描画されたイメージを印刷する。HTML5-CanvasのRGBAフルカラーイメージの中で指定された範囲を、halftoneプロパティとbrightnessプロパティの設定にしたがって、ラスターイメージデータに変換する。イメージの１ピクセルが１印刷ドットに相当する。イメージに透明色が含まれている場合、イメージの背景色を白とみなす。printメソッドはprint(canvas, cut, mode)という構文を持つ。canvasパラメーターは、印刷するHTML5-Canvasオブジェクトを指定する。cutパラメーターは、用紙をカットするかどうかを設定する、オプションのBooleanである。図１４５はcutパラメーターの例を示す。modeパラメーターは、カラーモードを指定する、オプションの列である。図１４６はmodeパラメーターの例を示す。図１４７はCanvas(ID='myCanvas')を印刷するためのサンプルコードである。
【０２１６】
openメソッドでは、statusイベント動作を有効化する。addressプロパティにより指定された、プリンターのステータスをイベントで送信し、intervalプロパティにより指定された間隔でステータスを更新する。open( )という構文を持つ。図１４８はopen( )メソッドの使い方を示すサンプルコードである。
【０２１７】
close( )メソッドでは、statusイベント動作を無効化する。close( )という構文を持つ。図１４９はclose( )メソッドの使い方を示すサンプルコードである。
【０２１８】
addressプロパティは、印刷に使用するプリンターのＵＲＬを指定する。図１５０はaddressプロパティの使い方を示すサンプルコードである。
【０２１９】
enabledプロパティは、statusイベント動作の有効／無効設定を保持する。Booleanタイプで、statusイベント動作の有効／無効設定を論理Boolean値で保持する。読み取り専用であり、初期値はfalseである。図１５１はenabledプロパティの使い方を示すサンプルコードである。
【０２２０】
intervalプロパティは、ステータスを更新する間隔を指定する。ステータスを更新する間隔をミリ秒単位で指定する。初期値は３０００ミリ秒（３秒）で、最小値は１０００ミリ秒（１秒以上）である。不正な値を指定した場合、デフォルトで、３０００ミリ秒とみなす。図１５２はintervalプロパティの使い方を示すサンプルコードである。
【０２２１】
statusプロパティは、プリンターのステータスを提供する。これは、プリンターから最後に取得したステータスである。読み取り専用で、初期値は０である。図１５３はstatusプロパティの使い方を示すサンプルコードである。
【０２２２】
ハーフトーン処理方法では、モノクロ（２階調）印刷に適用されるhalftoneプロパティを指定する。初期値はHALFTONE_DITHERである。図１５４はいくつかのhalftoneプロパティを示す。図１５５はhalftoneプロパティの使い方を示すサンプルコードである。
【０２２３】
brightnessプロパティは、ガンマー値で設定する。具体的には、０．１〜１０．０の範囲のガンマー値が、明るさ補正値として指定される。初期値は１．０である。図１５６はbrightnessプロパティの設定を示すサンプルコードである。
【０２２４】
onreceiveイベントは、コールバック関数を登録し、応答メッセージ受信イベントを取得するプロパティである。Function(response)という構文を持つ。コールバック関数のパラメーターとしては、resopnseをパラメーターとして、応答メッセージを名称として、objectをオブジェクト種類として含む。図１５７はresponseオブジェクトのいくつかのプロパティを示す。図１５８はsuccessの値を示す。図１５９はcodeの値を示す。図１６０はstatusの値を示す。図１６１はCanvas(ID=myCanvas)を印刷し、印刷結果をメッセージボックスに表示するためのサンプルコードを示す。
【０２２５】
onerrorイベントプロパティは、コールバック関数を登録し、通信エラーイベントを取得する。Function(error)という構文を持つ。図１６２はerrorオブジェクトのいくつかのプロパティを列記する。図１６３はCanvas(ID=myCanvas)を印刷し、通信エラー発生時にHTTPステータスコードをメッセージボックスに表示するためのサンプルコードを示す。
【０２２６】
onstatuschangeイベントは、コールバック関数を登録して、ステータス変更イベントを取得する。Function(status)という構文を持つ。図１６４はonstatuschangeイベントの使い方を示すサンプルコードである。
【０２２７】
ononlineイベントは、コールバック関数を登録して、オンラインイベントを取得する。Function( )という構文を持つ。図１６５はononlineイベントの使い方の例である。
【０２２８】
onofflineイベントは、コールバック関数を登録して、オフラインイベントを取得する。これもFunction( )という構文を持つ。図１６６はonofflineイベントの使い方の例である。
【０２２９】
onpoweroffイベントは、コールバック関数を登録して、無応答イベントを取得する。これもFunction( )という構文を持つ。図１６７はonpoweroffイベントの使い方の例である。
【０２３０】
oncoverokイベントは、コールバック関数を登録して、カバークローズイベントを取得する。これもFunction( )という構文を持つ。図１６８はoncoverokイベントの使い方の例である。
【０２３１】
oncoveropenイベントは、コールバック関数を登録して、カバーオープンイベントを取得する。これもFunction( )という構文を持つ。図１６９はoncoveropenイベントの使い方の例である。
【０２３２】
onpaperokイベントは、コールバック関数を登録して、用紙ありイベントを取得する。これもFunction( )という構文を持つ。図１７０はonpaperokイベントの使い方の例である。
【０２３３】
onpapernearendイベントは、コールバック関数を登録して、用紙ニアエンドイベントを取得する。これもFunction( )という構文を持つ。図１７１はonpapernearendイベントの使い方の例である。
【０２３４】
onpaperendイベントは、コールバック関数を登録して、用紙エンドイベントを取得する。これもFunction( )という構文を持つ。図１７２はonpaperendイベントの使い方の例である。
【０２３５】
ondrawerclosedイベントは、コールバック関数を登録して、ドロワークローズイベントを取得する。これもFunction( )という構文を持つ。図１７３ａはondrawerclosedイベントの使い方の例である。
【０２３６】
ondraweropenイベントは、コールバック関数を登録して、ドロワーオープンイベントを取得する。これもFunction( )という構文を持つ。図１７３ｂは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は生成してもよい。
【０２４１】
図１７４は、本発明のePOS Print editorのサンプルメインページ（すなわち、index.HTMLまたはホームページ）である。好適には、Webブラウザー１６１のアドレスフィールド１６３にePOS Print editor１９５のIPアドレスを入力することで、ePOS Print editorにWebブラウザー１６１経由でアクセスする。ePOS Print editorのメインページには、editorの能力を機能の種類で分類した、複数のタブ１６５ａ〜１６５ｆが含まれる。たとえば、タプ１６５ａは、編集機能を選択し、それによりメイン編集領域またはウィンドウ１６７が立ち上がる。タブ１６５ｂはプレビュー機能を提供し、現在作業しているプロジェクトがどのように実行するかをプレビューする。APIタブ１６５ｃでは、ユーザーの要求を達成するために基礎となり得るモデルAPIコードを表示することができる。または、APIタブにより、共通のユーザー要求に対応した複数のあらかじめ定義された印刷APIの選択を提供することができる。さらにまた、API１６５ｃでは、現在のプロジェクト用のスクリプトコードを表示するウィンドウを立ち上げることができる。タブ１６５ｄはXMLという名称で、XML印刷ファイルを見て編集するために使用することができる。たとえば、プロジェクトをプレビューしているときに、現在のプロジェクトのXML印刷ドキュメントをXMLタブ１６５ｄで示すことができる。さらにまた、既存のXML印刷ドキュメントをさらに編集するためにインポートすることができる。本ePOS Print editorにより生成されたスクリプトコードを示すことに加えて、別の実施例では、APIタブ１６５ｃまたはXMLタブ１６５ｄにより、ユーザーが手でコードを編集することをさらに認めてもよい。印刷タブ１６５ｅは、現在の作業を印刷するための印刷オプション、または、画面上で見ることができる、あるいは接続されたプリンターへ送信された、現在のコードを模擬的に実行したときの印刷物を生成することで現在の作業を試験するための印刷オプションを立ち上げる。対象プリンターの機種、インテリジェントモジュールまたはTMインテリジェントプリンターのIPアドレス、対象プリンターのデバイスID、タイムアウト期間設定、および／またはプリンターステータスを監視するか否かの選択などのオプション選択などの、実行のために必要な設定を設定タブ１６５ｆにより、入力できる。
【０２４２】
メイン編集領域１６７では、本発明の印刷APIにプログラムしてもよい、異なる編集機能選択肢（つまり、機能アイコンやソフトウェアボタンを通して選択できる選択肢）を選択する。これらの機能はさらに小分類される。
【０２４３】
たとえば、第１の小分類１６９は、ほとんどの印刷ドキュメントで使用することがある最も共通の操作を提供する。第１の小分類は共通と名付けられていて、位置揃え、改行量、倒立印字などの機能が含まれる。位置揃え機能は、文字および／またはグラフィックスの所望の位置揃えを指定する（左揃え、中央揃え、右揃え、カスタマイズ揃えなど）。改行量機能により、ドット単位、または、インチおよび／またはセンチメートルなどの測定単位で所望の改行量を指定することができる。倒立印字機能は、文字および／またはグラフィックスの所望の倒立向きを指定する。倒立印字機能は、９０゜、１８０゜、２７０゜などの固定選択肢に分けてもいいし、０゜〜３６０゜の範囲内でユーザーが指定してもいい。
【０２４４】
第２の小分類１７１は、文字に関連する機能を提供し、文字と名付けられている。文字小分類には、言語、フォント、印字位置、スムージング、倍率、倍角、装飾、文字などの機能が含まれる。言語機能には、印刷物のために特定の言語を指定する役割がある。たとえば、日本語、英語、スペイン語、ドイツ語などから選択してもいい。フォント機能は、インストールされたフォントオプションのライブラリーから特定のフォントを指定する。印字位置機能は、文字印字が開始する、左端（または右端、上端、下端（大きさの決まった用紙に印刷の場合））からの位置を指定する。知られているように、選択した特定のフォントの倍率によっては文字は風変わりに見えることがある。スムージング機能は、このぎざぎざした、風変わりな見栄えを除き、文字の端部を滑らかにする。倍率機能は、特定の文字の倍率を指定する。倍角機能では、倍角で印刷するべき特定の文字を素早く指定する方法を提供する。装飾機能は、特定の文字装飾、つまり、下線、太字、イタリック体、色つき反転などを指定する。文字機能は、指定された文字を印刷する範囲および／または印刷する文字を指定する。
【０２４５】
第３の小分類１７３は、紙送りに関連する機能を提供し、紙送りと名付けられている。紙送り小分類には、単位ごと、行数ごと、改行などの機能が含まれている。単位ごと機能では、紙送り量を、ドット、インチ、および／またはセンチメートルなどの測定単位で指定する。行数ごと機能では、紙送り量を、行数（つまり、１行ごとに増やして）で指定する。改行機能では新しい行を（つまり、キャリッジリターン機能タイプと類似の方法で１行ごとに増やして）提供する。
【０２４６】
第４の小分類１７５は、画像に関連する機能を提供し、画像と名付けられている。画像小分類には、イメージ、ＮＶロゴなどの機能が含まれる。イメージ機能では、ユーザーの提供するイメージの挿入がなされ、また、線、円、四角形などの基本形状を含む、描画ソフトウェアツールによる新しいイメージを作成（つまり定義）する機能をユーザーに提供してもいい。ＮＶロゴ機能は、プリンターにすでに記憶された、アドレスで呼び出せるイメージに依存し、アドレスまたはローカルIDによりそれらのイメージの選択された一つを呼び出す。すなわち、ＮＶロゴイメージのアドレスは、プリンター内の（好適には）不揮発性メモリーのローカルな（つまり、内部の）メモリー空間内の特定の記憶されたイメージを識別するIDコードでもいい。典型的には、ＮＶロゴイメージは企業のロゴのイメージであるが、ロゴだけに限定されるものではない。
【０２４７】
第５の小分類１７７は、バーコードに関連する機能を提供し、バーコードと名付けられている。バーコード小分類には、バーコード、２次元コードなどの機能が含まれる。バーコード機能は、（ユーザーが指定した種類の）リニアーバーコードを符号化する。すなわち、ユーザーは符号化される情報を提供し、提供した情報を符号化するリニアーバーコードを生成するためにバーコード機能を選択することができる。バーコード機能はさらに、定義したリニアーバーコードの大きさや位置などのオプションを含んでいてもいい。２次元コード機能は、ＱＲコード（登録商標）のような、特定の種類のマトリックス（つまり、２次元）バーコードを符号化する。上記と同じように、ユーザーは符号化される情報（文字および／またはグラフィックス）を提供し、提供した情報を符号化するマトリックスバーコードを生成するたまに２次元コード機能を選択することができる。２次元コード機能はさらに、定義したマトリックスバーコードの大きさや位置などのオプションを含んでいてもいい。
【０２４８】
第６の小分類１７９は、ページモードに関連する機能を提供し、ページモードと名付けられている。ページモード小分類には、ページ開始、印字領域、印字方向、印字位置、ページ終了などの機能が含まれる。ページ開始機能は、ページモード領域の開始位置を指定することができ、ページ終了機能は、ページモード領域の終了位置を指定することができる。印字位置機能は、ページモード印刷領域が位置するべき、印刷領域内の位置を指定してもいい。印字領域機能は、ページモード領域の指定領域（つまり２次元の大きさ）を指定することができる。最後に、印字方向機能は、ページモード領域の表現された内容の向きを指定することができる。たとえば、ページモードで水平に配置された文字が含まれている場合、同じ文字を垂直方向に沿って印刷するために印刷方向機能を使ってもいい。
【０２４９】
第７の小分類１８１は、第１から第６までの小分類に含まれていない、残りの機能すべてをまとめてグループにすることができ、その他と名付けられている。本例においては、その他小分類には、用紙カット、ドロワーキック、ブザー、コマンドなどの機能が含まれる。コマンド機能では、プリンターへ送信するコマンドを指定する。プリンターが、用紙カッター、ドロワー、ブザーを持つPOSプリンターだと仮定すると、用紙カットコマンドにより、プリンターが印刷する印刷媒体（つまり、用紙）をカットするコマンドを発行し、ドロワーキックオプションにより、プリンターのドロワーをキックオープンするコマンドを挿入し（起動される特定のドロワーラッチコネクタをそれぞれ識別してもよく）、ブザーにより、特定のブザーパターンで特定の期間、そしてブザー動作の特定の繰り返し回数でブザーを起動するために、プリンターへのコマンドを定義する。
【０２５０】
図１７５は、本発明のePOS Print editor１９５の設定タブ１６５ｆを選択することで生ずる設定画面を示す。設定画面では、対象プリンターの機種を入力する、または選択するためにプリンター機種フィールド１８３が提供される。インテリジェントモジュール、またはTMインテリジェントプリンターのIPアドレスを入力するIPアドレスフィールド１８５も提供される。デバイスＩＤフィールド１８７は対象プリンターのデバイスＩＤを受け取るが、対象プリンターに割り当てられたＩＤ名でもよい。印刷タイムアウトフィールド１８９には、行った印刷動作のタイムアウト期間を（ミリ秒単位で）設定することができる。プリンターのステータスを監視するか否かを選択する選択ボタン１９１も提供される。図１７６は、設定画面により提供されるオプションのいくつかをまとめた表である。
【０２５１】
図１７７は、本発明のePOS Print editorの編集画面の、より小さい、別の図である。本編集画面は、図１７７で編集領域１９３を追加的に示すことを除けば、図１７４と同様である。上記のように、メインメニュー領域１６７では利用可能な機能が表示される。アイコンをクリックする（つまり、メインメニュー領域１６７からソフトウェアボタンを選択する）ことでそれを編集領域１９３の下部に追加することができる。アイコンをドラッグ（つまり、移動）して編集領域１９３のどこへでも挿入することもできる。編集領域１９３内のアイコンの位置は、最終的なスクリプトコードファイル内の関係するコードの位置（つまり、順序）を指定する。機能アイコン（または要素）を配置したあとで、必要に応じてそれを構成する。たとえば、ＮＶロゴを編集領域１６７に追加した場合、選択するイメージを識別するキーコードを入力することでそれをその後構成する。編集領域１９３内に同じ機能アイコンを複数個持つことができることは理解されるだろう。こうして、メニュー領域で選択された機能（つまり、要素）を編集領域１９３で表示する。これらの要素は、編集領域１９３内でいつでも上や下へドラッグして、実行順序を変更することができる。各要素にはＸボタンが右側に与えられ、どの要素も対応するＸボタンによって削除可能である。インポートオプション１９７により、ePOS-Print Editorは過去の記憶したXMLデータをインポートできる。消去オプション１９９により、編集領域１９３内の編集した詳細内容を消去する。
【０２５２】
図１７４に示すように、プレビュータブ１６５ｂを選択すると、プレビューイメージが提供される。図１７８は、本発明のePOS Print editorのサンプルプレビューイメージを示す。印刷ドキュメントのプレビュー１０１である。
【０２５３】
プリンターが接続されている場合、印刷タブ１６５ｅを選択することでコードを試験するために実際の印刷を行ってもよい。図１７９は、印刷タブが選択されたときのePOS Print editorの図の例である。印刷タブ１６５ｅは、XML印刷ドキュメントのプレビューイメージを見るために利用してもいいし、XML印刷ドキュメントをインポートするために利用してもいい。たとえば、印刷タブ１６５ｅにより既存のXML印刷ドキュメントを開いてもいいし、コピーするなどして、XML印刷ドキュメントの内容を保存してもよい。ePOS-Print XMLドキュメントは、送信するデータ（ePOS-Print XML）区画に表示される。送信オプションを選択すると、プリンターへデータが送信され印刷される。情報区画には印刷ステータスが表示される。消去オプションを選択すると、情報ボックスの内容が消去される。
【０２５４】
図１８０は本発明のインポート画面を示す。インポートされるePOS-Print XML印刷ドキュメントは、インポートするデータ（ePOS-Print XML）区画にペーストされ確認される。適用オプションを選択すると、ePOS-Print XML印刷ドキュメントがインポートされる。情報区画にはインポート情報または必要な情報が表示される。閉じるオプションで、インポート画面が閉じられる。
【０２５５】
本発明の好適な実施例において、図１７４に示すように、APIタブ１６５ｃを選択すると、ePOS-Printサンプルコードが提供される。図１８１は、ＡＰＩタブが選択されたときのePOS Print editorの図の例である。サンプルコードをコードファイルまたは編集領域にコピーすることで、ユーザーはサンプルコードを利用できる。
【０２５６】
いくつかの特定の実施例とともに本発明を説明したが、上記の説明を考慮すると、さらに多くの代替例、変形例、変更例が明らかであることは当業者には明白である。こうして、すべてのそのような代替例、変形例、応用例、変更例は、添付の請求項の趣旨と範囲に入るものとして、ここに説明した発明が包含すると解釈される。
【図１】
0006384571.tif 000002
【図２】
0006384571.tif 000003
【図３】
0006384571.tif 000004
【図４】
0006384571.tif 000005
【図５】
0006384571.tif 000006
【図６】
0006384571.tif 000007
【図７】
0006384571.tif 000008
【図８】
0006384571.tif 000009
【図９】
0006384571.tif 000010
【図１０】
0006384571.tif 000011
【図１１】
0006384571.tif 000012
【図１２】
0006384571.tif 000013
【図１３】
0006384571.tif 000014
【図１４】
0006384571.tif 000015
【図１５】
0006384571.tif 000016
【図１６】
0006384571.tif 000017
【図１７】
0006384571.tif 000018
【図１８】
0006384571.tif 000019
【図１９】
0006384571.tif 000020
【図２０】
0006384571.tif 000021
【図２１】
0006384571.tif 000022
【図２２】
0006384571.tif 000023
【図２３】
0006384571.tif 000024
【図２４】
0006384571.tif 000025
【図２５】
0006384571.tif 000026
【図２６】
0006384571.tif 000027
【図２７】
0006384571.tif 000028
【図２８】
0006384571.tif 000029
【図２９】
0006384571.tif 000030
【図３０】
0006384571.tif 000031
【図３１】
0006384571.tif 000032
【図３２】
0006384571.tif 000033
【図３３】
0006384571.tif 000034
【図３４】
0006384571.tif 000035
【図３５】
0006384571.tif 000036
【図３６】
0006384571.tif 000037
【図３７】
0006384571.tif 000038
【図３８】
0006384571.tif 000039
【図３９】
0006384571.tif 000040
【図４０】
0006384571.tif 000041
【図４１】
0006384571.tif 000042
【図４２ａ】
0006384571.tif 000043
【図４２ｂ】
0006384571.tif 000044
【図４３】
0006384571.tif 000045
【図４４】
0006384571.tif 000046
【図４５】
0006384571.tif 000047
【図４６】
0006384571.tif 000048
【図４７】
0006384571.tif 000049
【図４８】
0006384571.tif 000050
【図４９】
0006384571.tif 000051
【図５０】
0006384571.tif 000052
【図５１】
0006384571.tif 000053
【図５２】
0006384571.tif 000054
【図５３】
0006384571.tif 000055
【図５４】
0006384571.tif 000056
【図５５】
0006384571.tif 000057
【図５６】
0006384571.tif 000058
【図５７】
0006384571.tif 000059
【図５８】
0006384571.tif 000060
【図５９】
0006384571.tif 000061
【図６０】
0006384571.tif 000062
【図６１】
0006384571.tif 000063
【図６２】
0006384571.tif 000064
【図６３】
0006384571.tif 000065
【図６４】
0006384571.tif 000066
【図６５】
0006384571.tif 000067
【図６６】
0006384571.tif 000068
【図６７】
0006384571.tif 000069
【図６８】
0006384571.tif 000070
【図６９】
0006384571.tif 000071
【図７０】
0006384571.tif 000072
【図７１】
0006384571.tif 000073
【図７２】
0006384571.tif 000074
【図７３】
0006384571.tif 000075
【図７４】
0006384571.tif 000076
【図７５】
0006384571.tif 000077
【図７６】
0006384571.tif 000078
【図７７】
0006384571.tif 000079
【図７８】
0006384571.tif 000080
【図７９】
0006384571.tif 000081
【図８０】
0006384571.tif 000082
【図８１】
0006384571.tif 000083
【図８２】
0006384571.tif 000084
【図８３】
0006384571.tif 000085
【図８４】
0006384571.tif 000086
【図８５】
0006384571.tif 000087
【図８６】
0006384571.tif 000088
【図８７】
0006384571.tif 000089
【図８８】
0006384571.tif 000090
【図８９】
0006384571.tif 000091
【図９０】
0006384571.tif 000092
【図９１】
0006384571.tif 000093
【図９２】
0006384571.tif 000094
【図９３】
0006384571.tif 000095
【図９４】
0006384571.tif 000096
【図９５】
0006384571.tif 000097
【図９６】
0006384571.tif 000098
【図９７】
0006384571.tif 000099
【図９８】
0006384571.tif 000100
【図９９】
0006384571.tif 000101
【図１００】
0006384571.tif 000102
【図１０１】
0006384571.tif 000103
【図１０２】
0006384571.tif 000104
【図１０３】
0006384571.tif 000105
【図１０４】
0006384571.tif 000106
【図１０５】
0006384571.tif 000107
【図１０６】
0006384571.tif 000108
【図１０７】
0006384571.tif 000109
【図１０８】
0006384571.tif 000110
【図１０９】
0006384571.tif 000111
【図１１０】
0006384571.tif 000112
【図１１１】
0006384571.tif 000113
【図１１２】
0006384571.tif 000114
【図１１３】
0006384571.tif 000115
【図１１４】
0006384571.tif 000116
【図１１５】
0006384571.tif 000117
【図１１６】
0006384571.tif 000118
【図１１７】
0006384571.tif 000119
【図１１８】
0006384571.tif 000120
【図１１９】
0006384571.tif 000121
【図１２０】
0006384571.tif 000122
【図１２１】
0006384571.tif 000123
【図１２２】
0006384571.tif 000124
【図１２３】
0006384571.tif 000125
【図１２４】
0006384571.tif 000126
【図１２５】
0006384571.tif 000127
【図１２６】
0006384571.tif 000128
【図１２７】
0006384571.tif 000129
【図１２８】
0006384571.tif 000130
【図１２９】
0006384571.tif 000131
【図１３０】
0006384571.tif 000132
【図１３１】
0006384571.tif 000133
【図１３２】
0006384571.tif 000134
【図１３３】
0006384571.tif 000135
【図１３４】
0006384571.tif 000136
【図１３５】
0006384571.tif 000137
【図１３６】
0006384571.tif 000138
【図１３７】
0006384571.tif 000139
【図１３８】
0006384571.tif 000140
【図１３９】
0006384571.tif 000141
【図１４０】
0006384571.tif 000142
【図１４１】
0006384571.tif 000143
【図１４２】
0006384571.tif 000144
【図１４３】
0006384571.tif 000145
【図１４４】
0006384571.tif 000146
【図１４５】
0006384571.tif 000147
【図１４６】
0006384571.tif 000148
【図１４７】
0006384571.tif 000149
【図１４８】
0006384571.tif 000150
【図１４９】
0006384571.tif 000151
【図１５０】
0006384571.tif 000152
【図１５１】
0006384571.tif 000153
【図１５２】
0006384571.tif 000154
【図１５３】
0006384571.tif 000155
【図１５４】
0006384571.tif 000156
【図１５５】
0006384571.tif 000157
【図１５６】
0006384571.tif 000158
【図１５７】
0006384571.tif 000159
【図１５８】
0006384571.tif 000160
【図１５９】
0006384571.tif 000161
【図１６０】
0006384571.tif 000162
【図１６１】
0006384571.tif 000163
【図１６２】
0006384571.tif 000164
【図１６３】
0006384571.tif 000165
【図１６４】
0006384571.tif 000166
【図１６５】
0006384571.tif 000167
【図１６６】
0006384571.tif 000168
【図１６７】
0006384571.tif 000169
【図１６８】
0006384571.tif 000170
【図１６９】
0006384571.tif 000171
【図１７０】
0006384571.tif 000172
【図１７１】
0006384571.tif 000173
【図１７２】
0006384571.tif 000174
【図１７３ａ】
0006384571.tif 000175
【図１７３ｂ】
0006384571.tif 000176
【図１７４】
0006384571.tif 000177
【図１７５】
0006384571.tif 000178
【図１７６】
0006384571.tif 000179
【図１７７】
0006384571.tif 000180
【図１７８】
0006384571.tif 000181
【図１７９】
0006384571.tif 000182
【図１８０】
0006384571.tif 000183
【図１８１】
0006384571.tif 000184