import { fontSize as fs, AlginType, columnsText, FontSize } from './print_common'; import HardwareKit from 'qm-hardwarekit'; let WoyouPrinter = HardwareKit.WoyouPrinter; const PAGE_ROW_SIZE: number = 28; var isQrCode = false; function startPrint(_: any) { return new Promise(async resolve => { await WoyouPrinter.create(); isQrCode = false; resolve(null); }); } function printlnText(text: String, fontSize: FontSize = 'middle', algin: AlginType = 0) { printText(text + '\n', fontSize, algin); } function printText(text: String, fontSize: FontSize = 'middle', algin: AlginType = 0) { fontSize = typeof fontSize === 'number' ? fontSize : fs(fontSize); console.log('===============', typeof fontSize, fontSize); return new Promise(async resolve => { //SUNMI打印机,默认打印 if (WoyouPrinter) { await WoyouPrinter.setAlignment(algin); await WoyouPrinter.printTextWithFont(text, null, fontSize); await WoyouPrinter.setFontSize(fontSize); await WoyouPrinter.setAlignment(0); //打印完成还原成左对齐 await WoyouPrinter.setFontSize(fs('middle')); // WoyouPrinter.printlnText(text); } resolve(null); }); } const printBarCode = text => { return new Promise(async resolve => { if (WoyouPrinter) await WoyouPrinter.printBarCode(text); resolve(null); }); }; const printQrCode = text => { // if (WoyouPrinter) { // WoyouPrinter.printQrCode(text); // } return new Promise(async resolve => { if (WoyouPrinter) { await WoyouPrinter.printQrCode(text); await lineWrap(4); isQrCode = true; } resolve(null); }); }; function printColumnsText( texts: Array, weights: Array, algins: Array, zoom: boolean = true, ) { // WoyouPrinter.printColumnsText(split(texts), split(weights), split(algins), PAGE_ROW_SIZE); return new Promise(async resolve => { columnsText(texts, weights, algins, PAGE_ROW_SIZE, zoom).map(async text => { await printlnText(text); }); resolve(null); }); } function line() { var l = ''; for (var i = 0; i < PAGE_ROW_SIZE; ++i) { l += '-'; } return new Promise(async resolve => { if (WoyouPrinter) await WoyouPrinter.printlnText(l); resolve(null); }); } function lineWrap(nums: number) { return new Promise(async resolve => { await WoyouPrinter.lineWrap(nums); resolve(null); }); } function endPrint() { return new Promise(async resolve => { if (!isQrCode) { await lineWrap(3); } await WoyouPrinter.destroy(); resolve(null); }); // setTimeout(_ => { // lineWrap(5); // WoyouPrinter.destroy(); // }, 1400); } export { startPrint, endPrint, printText, printlnText, printQrCode, printBarCode, printColumnsText, lineWrap, line };