Skip to content

printer — 打印工具 ​

printer 模块提供了打印指令构建和打印服务对接功能,支持小票打印机、标签打印机等。

引入方式 ​

javascript
var printer = require("printer")

Builder 构建模式 ​

javascript
var client = printer.New()
    .Provider("feie")
    .Config({
        User: "your-user",
        UKey: "your-ukey",
        SN: "printer-sn"
    })
    .Build()

支持的提供商 ​

feie(飞鹅)、yilianyun(易联云)、meituan(美团)、xiaomi(小米)、sunmi(商米)、pospal、printer_sdk

打印操作 ​

javascript
client.Print({
    Content: "Hello World\n测试打印",
    Times: 1
})

Status — 查询打印机状态 ​

javascript
var status = client.Status()

辅助方法 ​

javascript
var printUtil = printer.NewPrint()

// ESC/POS 指令
printUtil.ESCInitialize()           // 初始化打印机
printUtil.ESCFeedLines(3)           // 走纸 3 行
printUtil.ESCCutPaper()             // 切纸
printUtil.ESCTextAlign("center")    // 居中对齐
printUtil.ESCBold(true)             // 加粗
printUtil.ESCQRCode("https://example.com")  // 打印二维码
printUtil.ESCBarcode("1234567890")  // 打印条形码

// 格式化工具
printUtil.FormatPrice(99.5)         // "99.50"
printUtil.CenterText("标题", 32)     // 居中文本
printUtil.RepeatChar("-", 32)       // 重复字符

// ZPL 指令(标签打印机)
printUtil.ZPLStart()
printUtil.ZPLTextField("Hello", 10, 10, 30)
printUtil.ZPLQRCode("https://example.com", 10, 50)
printUtil.ZPLEnd()

完整示例 ​

javascript
var printer = require("printer")

// 构建小票内容
var printUtil = printer.NewPrint()
var content = printUtil.ESCInitialize()
    + printUtil.ESCTextAlign("center")
    + printUtil.ESCBold(true)
    + "购物小票\n"
    + printUtil.ESCBold(false)
    + printUtil.ESCTextAlign("left")
    + printUtil.RepeatChar("-", 32) + "\n"
    + "商品A    x2    ¥19.90\n"
    + "商品B    x1    ¥29.90\n"
    + printUtil.RepeatChar("-", 32) + "\n"
    + printUtil.ESCTextAlign("right")
    + "合计: ¥69.70\n"
    + printUtil.ESCQRCode("https://example.com/order/123")
    + printUtil.ESCFeedLines(3)
    + printUtil.ESCCutPaper()

// 发送到飞鹅打印机
var client = printer.New()
    .Provider("feie")
    .Config({
        User: env.Get("FEIE_USER"),
        UKey: env.Get("FEIE_UKEY"),
        SN: env.Get("FEIE_SN")
    })
    .Build()

client.Print({ Content: content, Times: 1 })
response.Success({ message: "打印指令已发送" })

版权所有.