使用POS打印机进行Javascript收据打印

Sac*_*dra 30 javascript printing jquery

在Web应用程序中,我想使用POS(销售点)打印机打印收据.我想用Javascript做到这一点.任何人都可以为我提供一个例子吗?

Sco*_*lby 14

我在这里走出困境,因为你的问题不是很详细,a)你的收据打印机是一台热敏打印机需要原始数据,b)"来自javascript"你正在谈论从网络浏览器打印和c)您无权从浏览器发送原始数据

这是一个Java Applet,可以解决所有这些问题,如果我对这些假设是正确的,那么你需要Java,Flash或Silverlight http://code.google.com/p/jzebra/

  • https://github.com/qzind/tray/ (2认同)

Cra*_*aig 8

如果你在谈论基于浏览器的POS应用程序,那么它基本上不能开箱即用.有很多选择.

  1. 使用像Scott Selby这样的小程序
  2. 从服务器打印.如果这是云服务器,即无法连接到收据打印机,那么您可以做的是
    • 从服务器生成它作为pdf,可以在浏览器中弹出打印对话框
    • 使用Google Cloud Print之类的东西,它可以将打印机连接到云服务


Ric*_*ina 6

编辑:2017年11月27日─BROKENLINKS

以下关于David Kelley 撰写的帖子的链接已被删除.

有存储库的缓存版本,只需cache:在Chrome浏览器中的URL之前添加并按Enter键即可.


此解决方案仅适用于基于Google ChromeChromium的浏览器.

编辑:

(*)链接被破坏.幸运的是,我发现这个存储库包含以下markdown文件中的帖子来源:A |

这个链接*解释了如何使用Chrome/Chromium USB API (1)(2)为ESC/POS打印机制作Javascript界面. 这个链接*解释了如何使用chrome.usb.*API 连接USB设备.


小智 6

我最近仅通过按网页上的按钮即可执行收据打印,而无需输入打印机选项。我已经使用用于ePOS的EPSON javascript SDK做到了。我已经在EPSON TM-m30收据打印机上进行了测试。

这是示例代码。

var printer = null;
var ePosDev = null;

function InitMyPrinter() {
    console.log("Init Printer");

    var printerPort = 8008;
    var printerAddress = "192.168.198.168";
    if (isSSL) {
        printerPort = 8043;
    }
    ePosDev = new epson.ePOSDevice();
    ePosDev.connect(printerAddress, printerPort, cbConnect);
}

//Printing
function cbConnect(data) {
    if (data == 'OK' || data == 'SSL_CONNECT_OK') {
        ePosDev.createDevice('local_printer', ePosDev.DEVICE_TYPE_PRINTER,
            {'crypto': false, 'buffer': false}, cbCreateDevice_printer);
    } else {
        console.log(data);
    }
}

function cbCreateDevice_printer(devobj, retcode) {
    if (retcode == 'OK') {
        printer = devobj;
        printer.timeout = 60000;
        printer.onreceive = function (res) { //alert(res.success);
            console.log("Printer Object Created");

        };
        printer.oncoveropen = function () { //alert('coveropen');
            console.log("Printer Cover Open");

        };
    } else {
        console.log(retcode);
        isRegPrintConnected = false;
    }
}

function print(salePrintObj) {
    debugger;
    if (isRegPrintConnected == false
        || printer == null) {
        return;
    }
    console.log("Printing Started");


    printer.addLayout(printer.LAYOUT_RECEIPT, 800, 0, 0, 0, 35, 0);
    printer.addTextAlign(printer.ALIGN_CENTER);
    printer.addTextSmooth(true);
    printer.addText('\n');
    printer.addText('\n');

    printer.addTextDouble(true, true);
    printer.addText(CompanyName + '\n');

    printer.addTextDouble(false, false);
    printer.addText(CompanyHeader + '\n');
    printer.addText('\n');

    printer.addTextAlign(printer.ALIGN_LEFT);
    printer.addText('DATE: ' + currentDate + '\t\t');

    printer.addTextAlign(printer.ALIGN_RIGHT);
    printer.addText('TIME: ' + currentTime + '\n');

    printer.addTextAlign(printer.ALIGN_LEFT);

    printer.addTextAlign(printer.ALIGN_RIGHT);
    printer.addText('REGISTER: ' + RegisterName + '\n');
    printer.addTextAlign(printer.ALIGN_LEFT);
    printer.addText('SALE # ' + SaleNumber + '\n');

    printer.addTextAlign(printer.ALIGN_CENTER);
    printer.addTextStyle(false, false, true, printer.COLOR_1);
    printer.addTextStyle(false, false, false, printer.COLOR_1);
    printer.addTextDouble(false, true);
    printer.addText('* SALE RECEIPT *\n');
    printer.addTextDouble(false, false);
....
....
....

}
Run Code Online (Sandbox Code Playgroud)