wuyj / php-json-escpos
PHP ESC/POS 打印机 JSON 模板解析器。
v0.1.0
2019-02-19 07:20 UTC
Requires
- php: >=7.0.0
- ext-mbstring: *
- mike42/escpos-php: ^2.0
Requires (Dev)
- phpunit/phpunit: ^6.2|^7.0
This package is auto-updated.
Last update: 2024-09-29 05:42:14 UTC
README
基于 mike42/escpos-php 项目,在 x-printer 80mm 打印机上运行正常。
英语 | 简体中文
快速开始
包含库
composer require wuyj/php-json-escpos
示例
<?php require __DIR__ . '/vendor/autoload.php'; use Wuyj\Escpos\EscposPrinter; $printer = new EscposPrinter(); /** Print receipts. **/ $json = '[{"styles":"alignCenter;fontBold;fontSize:2,2","text":["TITLE TITLE TITLE","","标题标题标题标题",""]},{"styles":"fontSize:1,1","text":["订单号: ${order_sn}"]},{"styles":"fontSize:1,1","text":["订单时间: ${add_time}"]},{"styles":"alignSide:12,12","text":["座位号: ${table_sn}","用餐人数: ${cover}"]},{"styles":"hidden:hide_refund_text","text":["原因:${refund_reason}"]},{"styles":"strRepeat","text":["-"]},{"styles":"each:foods;alignSide:17,-2,-5","text":[{"styles":"","text":[["${item_name_en}","${item_quantity}","${item_price}"],["${item_name_zh}","",""]]},{"styles":"each:specs_items","text":[["* ${item_attr_en} ${item_attr}","",""]]},{"styles":"hidden:hide_remark","text":["* ${remark}","",""]}]},{"styles":"strRepeat","text":["-"]},{"styles":"alignSide:-14,-10;fontSize:1,1","text":["小计:","${sub_total}"]},{"styles":"alignSide:-14,-10;fontSize:1,1","text":["折扣:","${discount}"]},{"styles":"alignSide:-14,-10;fontSize:1,1;fontBold","text":["总计:","${total}"]},{"styles":"alignSide:8,8,-8;fontSize:1,1;fontBold","text":["支付方式","","金额"]},{"styles":"each:payTypeItems;alignSide:8,8,-8","text":["${pay_name}","${en_name}","${amount}"]}]'; $data = '{"order_sn":"0123456789","add_time":"2019/02/01","table_sn":"T100","cover":4,"refund_reason":"TOO EXPENSIVE","hide_refund_text":true,"sub_total":600,"total":540,"discount":"90%","payTypeItems":[{"pay_name":"支付宝","en_name":"AliPay","amount":540}],"hide_pay_type_list":false,"foods":[{"remark":"remark test","hide_remark":true,"item_name_en":"foods","item_quantity":2,"item_price":100.00,"item_name_zh":"食物","specs_items":[]},{"remark":"remark test","hide_remark":false,"item_name_en":"juice","item_quantity":2,"item_price":200.00,"item_name_zh":"饮料","specs_items":[{"item_attr_en":"No Ice","item_attr":"不加冰"},{"item_attr_en":"No Sugar","item_attr":"不加糖"}]}]}'; $printer->render($json, json_encode($data, true)); $printer->connect('10.10.10.201'); $printer->printing(); /** Open cashier drawer. **/ $printer->connect('10.10.10.201'); $printer->pulse(); /** Detect printer device status. **/ $printer->connect('10.10.10.201'); $status = $printer->detect(); switch ($status) { case 1: echo 'OK'; $printer->close(); break; case -1: echo 'Not Connected'; break; case 0x20: echo 'BTN PRESSED'; break; case 0x08: echo 'BTN PRESSED'; break; case 0x64: echo 'HARDWARE ERROR'; break; }
支持样式
underLine
- 为文本添加下划线
qrCode
- 打印二维码
actionCut
- 裁剪收据纸张
actionFeed
- actionFeed: 1 (喂纸 1 行)
- 喂纸
fontSize
- fontSize: 宽度, 高度
- FONT_A: 1, 2, 3
- FONT_B: 1.5
alignSide
- alignSide: 8, 8, -8 (将文本作为表格打印,总共有 3 列,每列显示 8 单元格,-8 表示右对齐文本,默认左对齐)
- 24 为 FONT_A,32 为 FONT_B
strRepeat
- strRepeat (默认字符
_
将重复 48 次)
alignLeft
alignRight
alignCenter
fontBold
lineBreak
actionText
支持指令
each
- each: data_items (循环
data_items
来打印文本行)
hidden
- hidden: hidden_value (如果 hidden_value 为真,则隐藏文本行)
repeat
- repeat: repeat_times (重复指定的行
repeat_times
次)