ReceiptLine 参照実装 始めにお読みください
印刷可能なデジタルレシート
ReceiptLineマークダウン書式テキストをレシートプリンターコマンドまたはSVG画像に変換します。
特徴
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 = {
cpl:42 、
encoding:'cp437' 、
upsideDown:false 、
gamma:1.8 、
command:'escpos'
} ;
const command = receiptline.transform(doc, printer);
//表示例
const display = {
cpl:42 、
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
:SIIstarmbcs
:スターMBCSstarsbcs
:スターSBCSfit
:富士通
例
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進ダンプビュー

セットアップ
-
サーバーを起動する
$ cd node_modules/receiptline $ npm start
-
http://localhost:10080 を開きます
最新のブラウザを使用してください。
-
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(空白)
性質
メンバー
キー
バリュー
文法
構造
レシートは、各コラムをパイプで区切るテーブルで構成されています|
。
ライン | コンテンツ | 説明 |
---|---|---|
コラム| コラム | | コラムコラム | |
テキスト プロパティ |
単一のコラム |
コラム | コラム| コラム | コラム | | コラム | コラムコラム | コラム | |
テキスト | ダブルコラム |
コラム | ... | コラム| コラム | ... | コラム | | コラム | ... | コラムコラム | ... | コラム | |
テキスト | 複数のコラム |
整列
カラムは|
磁石のようにパイプに引き付けられます。
␣
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 |
手動でテキストを折り返す |
\x nn |
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 |
改行 |
\x nn |
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ライセンス