ReceiptLine 参照実装   始めにお読みください

印刷可能なデジタルレシート 

ReceiptLineマークダウン書式テキストをレシートプリンターコマンドまたはSVG画像に変換します。

English
Japanese

特徴

OFSC ReceiptLine仕様のリファレンス実装。

ReceiptLineは、小さなロール紙の出力画像を表現するレシート記述言語です。
レシートプリンターを使用したレシートの印刷や、POSシステムやスマートフォンでの電子レシートの表示に対応しています。
紙幅に依存しないマークダウン風のテキストデータで簡単に記述できます。

このリファレンス実装は、編集、プレビュー、仮想プリンターでの16進ダンプ、およびLANサポート付きのレシートプリンターでのテスト印刷用の開発ツール「ReceiptLine Designer」も提供します。

レシートプリンター

  • エプソンTMシリーズ
  • SII RPシリーズ
  • スターMCシリーズ
  • シチズンCTシリーズ
  • 富士通FPシリーズ



インストール

$ npm install receiptline

使用法

receiptline.transform() メソッドは、ReceiptLineドキュメントをプリンターコマンドまたはSVG画像に変換します。

const  receiptline  =  require 'receiptline' ;

const doc = '{code:2012345678903; option:ean、hri}' ; //プリンタの例 const printer = { cpl42 encoding'cp437' upsideDownfalse gamma1.8 command'escpos' } ; const command = receiptline.transform(doc, printer); //表示例 const display = { cpl42 encoding'cp437' } ; const svg = receiptline.transform(doc, display);

メソッド

receiptline.transform(doc, printer)

パラメーター

  • doc
    • ReceiptLineドキュメントの文字列
  • printer
    • プリンター構成のオブジェクト

戻り値

  • プリンターコマンドまたはSVG画像

プリンター構成

  • cpl
    • 行あたりの文字数(省略値:48
  • encoding
    • cp437:米国(省略値)
    • cp852:中央ヨーロッパ
    • cp858:西ヨーロッパ
    • cp860:ポルトガル語
    • cp863:カナダ系フランス人
    • cp865:ノルディック
    • cp866:キリル文字
    • cp932: 日本人
    • cp1252:西ヨーロッパ
  • gamma (プリンター用)
    • 画像のガンマ補正(省略値:1.8
  • upsideDown (プリンター用)
    • false:通常(省略値)
    • true: 逆さまに
  • command
    • svg:SVG(省略値)
    • escpos:エプソン、シチズン
    • sii:SII
    • starmbcs:スターMBCS
    • starsbcs:スターSBCS
    • fit:富士通

example/nodejs/*

WebフォームからReceiptLineマークダウン書式テキストを入力し、サーバー上のプリンターコマンドに変換して、印刷します。

example/js/*

ReceiptLineマークダウン書式テキストをWebフォームから入力し、WebブラウザーでSVG画像に変換して表示します。

example/data/*

ドキュメント(ReceiptLineマークダウン書式テキスト)は、OFSC ReceiptLine仕様の例と同じです。

ライブラリー

lib/receiptline.js

JavaScript ES2015(ES6)バージョン。WebブラウザーとNode.jsの両方で動作します。
プリンターコマンドをWebブラウザーに出力するには、Browserifyを使用します。

$ browserify -o receiptline-full.js receiptline.js

lib/qrcode-generator/qrcode.js

表示用のQRコードを生成します。オプション。

ReceiptLine Designer

ReceiptLine Designerは、より多くの機能を提供します。

  • 編集とプレビュー
  • TCPソケット経由のデータ送信
  • TCP 19100ポートをリッスンすることによる16進ダンプビュー



セットアップ

  1. サーバーを起動する

    $ cd node_modules/receiptline
    $ npm start
  2. http://localhost:10080 を開きます

    最新のブラウザを使用してください。

  3. printers.jsonを構成する

    " printer_id ":{
         " host " " 127.0.0.1 " " port " 19100 " cpl " 48 " encoding " " cp437 " " gamma " 1.8 " upsideDown " false " command " "svg " 
    }
    • printer_id
      • プリンター識別子(英数字またはアンダースコア文字)
    • host
      • プリンターアドレス
    • port
      • プリンターポート(多くの場合 9100
    • cpl, encoding, gamma, upsideDown, command
      • 上記のプリンター構成を参照してください

構文

構文図

ドキュメント
資料

ライン
ライン

コラム
コラム

カラム
カラム

テキスト
テキスト

文字
チャー

脱出
逃れる

ws(空白)
ws

性質
財産

メンバー
メンバー

キー
キー

バリュー
値

文法

構造

レシートは、各コラムをパイプで区切るテーブルで構成されています|

ライン コンテンツ 説明
コラム
| コラム |
| コラム
コラム |
テキスト
プロパティ
単一のコラム
コラム | コラム
| コラム | コラム |
| コラム | コラム
コラム | コラム |
テキスト ダブルコラム
コラム | ... | コラム
| コラム | ... | コラム |
| コラム | ... | コラム
コラム | ... | コラム |
テキスト 複数のコラム

整列

カラムは|磁石のようにパイプに引き付けられます。
1つ以上の空白を意味します。

カラム 説明
コラム
|コラム|
|␣コラム␣|
中央揃え
|コラム
|コラム␣|
コラム␣|
左寄せ
コラム|
|␣コラム|
|␣コラム
右寄せ

テキスト

テキストはどのコラムにも有効です。


Asparagus | 0.99
Broccoli | 1.99
Carrot | 2.99
--- ^TOTAL | ^5.97
          

文字は、等幅フォント(12 x 24ピクセル)で印刷されます。
ワイド文字はラテン文字の2倍の幅です(24 x 24ピクセル)。
制御文字は無視されます。

テキストの特殊文字

レシートでほとんど使用されない文字が特殊文字に割り当てられています。

特殊文字 説明
\ キャラクターエスケープ
| コラム区切り文字
{ プロパティ区切り文字(開始)
} プロパティ区切り文字(終了)
- (1つ以上、排他的) 横罫
= (1つ以上、排他的) ペーパーカット
~ スペース
_ 下線
" 強調
` 反転
^ ダブル幅
^^ ダブルの高さ
^^^ 2倍のサイズ
^^^^ 3倍サイズ
^^^^^ 4倍サイズ
^^^^^^ 5倍サイズ
^^^^^^^ (7以上) 6倍サイズ

テキストのエスケープシーケンス

特殊文字をエスケープします。

エスケープシーケンス 説明
\\ \
\| |
\{ {
\} }
\- -(水平線をキャンセル)
\= =(カット紙のキャンセル)
\~
\_ _
\" _
\` `
\^ ^
\n 手動でテキストを折り返す
\xnn 16進文字コード
\char(その他) 無視する

プロパティ

このプロパティは、1コラムの行に対して有効です。

{ width: * 10; comment: the column width is specified in characters }
キー 略語 大文字と小文字を区別 省略値 保存 説明
image i base64 png形式 - - 画像
(推奨:モノクロ、重要な部分のみ)
code c テキストデータ - - バーコード/ 2Dコード
option o 下記参照 - code128 2 72 nohri 3 l バーコード/ 2Dコードオプション
(オプションはカンマまたは1つ以上の空白で区切られます)
align a left
center
right
- center 行揃え
(行幅<CPLの場合に有効)
width w auto
*
0 -
- auto
*すべてのコラム)
コラムの幅(文字)
(幅はコンマまたは1つ以上の空白で区切られます)
border b line
space
none
0 - 2
- space コラムの境界線(文字)
(境界線の幅:line = 1、space = 1、none = 0)
text t wrap
nowrap
- wrap テキストの折り返し
command x テキストデータ - - デバイス固有のコマンド
comment _ テキストデータ - - コメント

バーコードオプション

バーコードオプションは、カンマまたは1つ以上の空白で区切られます。

バーコードオプション 説明
upc UPC-A、UPC-E
(チェックデジットは省略可能)
ean
jan
EAN-13、EAN-8
(チェックデジットは省略可能)
code39 CODE39
itf インターリーブド2 of 5
codabar
nw7
コダバー(NW-7)
code93 CODE93
code128 CODE128
2 - 4 バーコードモジュールの幅(px)
24 - 240 バーコードモジュールの高さ(px)
hri 人間が読める解釈
nohri 人間が読める解釈なし

2Dコードオプション

2Dコードオプションは、カンマまたは1つ以上の空白で区切られます。

2Dコードオプション 説明
qrcode QRコード
3 - 8 セルサイズ(px)
l
m
q
h
エラー訂正レベル

プロパティ値の特殊文字

プロパティ値の特殊文字は、テキストの特殊文字とは異なります。

特殊キャラクター 説明
\ キャラクターエスケープ
| コラム区切り文字
{ プロパティ区切り文字(開始)
} プロパティ区切り文字(終了)
: Key-Valueセパレータ
; Key-Value区切り文字

プロパティ値のエスケープシーケンス

特殊文字をエスケープします。

エスケープシーケンス 説明
\\ \
\| |
\{ {
\} }
\; ;
\n 改行
\xnn 16進文字コード
\char(その他) 無視する

制限事項

  • プリンタとの相互通信、ステータスイベントの処理、およびエラー処理は対象外です。
  • SVG画像は、コンピューターにインストールされているフォントファミリーに依存しており、正しく表示されない場合があります。
  • 表示用のQRコードはUTF-8でエンコードされ、印刷用のQRコードはASCIIまたはShift_JISでエンコードされます。

著者

Open Foodservice System Consortium
http://www.ofsc.or.jp/

ライセンス

  • receiptline
    • Apacheライセンス、バージョン2.0
  • QR Code Generator for JavaScript with UTF8 Support
    • MITライセンス