// import { split, fontSize as fs, AlginType, FontSize } from './print_common'; import { columnsText, fontSize as fs, AlginType, FontSize } from './print_common'; import HardwareKit from 'qm-hardwarekit'; let WoyouPrinter = HardwareKit.WoyouPrinter; var isQrCode = false; const PAGE_ROW_SIZE: number = 44; 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) { return 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 printQrCode = text => { return new Promise(async resolve => { if (WoyouPrinter) { let pt = await WoyouPrinter.printQrCode(text); if (pt) { await lineWrap(4); await WoyouPrinter.cutFull(); } else { await lineWrap(4); await WoyouPrinter.cutFull(); } isQrCode = true; } resolve(null); }); }; const printBarCode = text => { return new Promise(async resolve => { if (WoyouPrinter) await WoyouPrinter.printBarCode(text); 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) { // setTimeout(_ => { await lineWrap(3); await WoyouPrinter.cutFull(); // }, 1000); } await WoyouPrinter.destroy(); resolve(null); }); } export { startPrint, endPrint, printQrCode, printBarCode, printlnText, printColumnsText, lineWrap, line };