公司项目之前使用的是b/s的客户端,老板说要改成c/s的,所以用electron直接打包城桌面程序,需要调用热敏打印机打印小票,记录一下需要的时候还得用。
1、研究了网上说通过创建一个不显示的窗口,然后用webContents.print进行打印。但是感觉这样打印小票太麻烦会不会打印量大了之后卡死,所有放弃这样打印,
2、在npm上找关于打印的包找了好久,找到escpos 和escpos-usb ,研究半天最后报错
LIBUSB_ERROR_NOT_SUPPORTED
没有权限,需要给打印机装WinUSB驱动,装上驱动之后程序打印可以了,但是在电脑上直接打印就不行了。
反正最后我还是通过调用C#的WritePrinter进行打印。
先安装electron-edge-js用来调用C#
npm i electron-edge-js
import edge from 'electron-edge-js';
然后把dll文件放到reources文件夹下边,在主进程上引入dll文件,然后加载dll
import 引入地址的名称 from '../resources/dll文件名.dll?asset&asarUnpack';
const print = edge.func({
assemblyFile: dll 文件地址,
typeName: 类库名.类名,
methodName: 方法名
})
渲染进程:
var print_arr= {
szPrinterName: "GP-58MB Series",//打印机名称
szString: "测试数据",
};
window.ipcRenderer.s