/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at app://mozilla.org/MPL/2.0/. */ var printer = require("node-thermal-printer"); var express = require('express'); var app = express(); app.use(function (req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); }); app.use(express.json()); function initPrinter() { printer.init({ type: devtype, interface: device }); } function printLine(line) { if (line.format.indexOf('bold') > -1) { printer.bold(true); } else { printer.bold(false); } if (line.format.indexOf('hr') > -1) { printer.drawLine(); } else if (line.format.indexOf('blank') > -1) { printer.newLine(); } else { console.log(line.text); printer.println(line.text); } } app.use('/', express.static('control')); app.get('/status', function (request, response) { response.send({ status: "OK", width: linewidth }); }); app.post('/print', function (request, response) { initPrinter(); var receipt = request.body; console.log(JSON.stringify(request.body)); var header = receipt.header.length > 0; var footer = receipt.footer.length > 0; receipt.header.forEach(function (line) { printLine(line); }); if (header) { printLine({text: '', format: ['hr']}); } receipt.lines.forEach(function (line) { printLine(line); }); if (footer) { printLine({text: '', format: ['hr']}); } receipt.footer.forEach(function (line) { printLine(line); }); printer.cut(); printer.execute(); response.send({ status: "OK" }); }); app.post('/opendrawer', function (request, response) { initPrinter(); printer.openCashDrawer(); printer.execute(); response.send({ status: "OK" }); }); app.listen(64269);