electron+vue项目实现打印小票功能及实现代码

一 需求:

网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了洮南免费建站欢迎大家使用!

公司项目需要通过electron调用系统打印机,实现打印小票的功能。

二、分析:

electron打印大概有两种:

第一种:通过window的webcontent对象,使用此种方式需要单独开出一个打印的窗口,可以将该窗口隐藏,但是通信调用相对复杂。

第二种:使用页面的webview元素调用打印,可以将webview隐藏在调用的页面中,通信方式比较简单。

两个对象调用打印方法的使用方式都一样。

本文是通过第二种方法实现静默打印。

三、实现过程:

1、要实现打印功能,首先要知道我们的设备上有哪些打印机。方法是:在渲染线程通过electron的ipcRenderer对象发送事件到主线程获取。(本文的渲染线程可以当做为一个print.vue文件)

(1)主线程(electron.js)伪代码如下:

//引入electron
import electron from 'electron';

//创建一个浏览器对象
const window = new electron.BrowserWindow({
  width,
  height,
  frame: false,
  show: false,
  backgroundColor: '#4b5b79',
  minWidth: 1024,
  minHeight: 768,
  webPreferences: { webSecurity: false },
 });
 
//在主线程下,通过ipcMain对象监听渲染线程传过来的getPrinterList事件
electron.ipcMain.on('getPrinterList', (event) => {
  //主线程获取打印机列表
  const list = window.webContents.getPrinters();
  
  //通过webContents发送事件到渲染线程,同时将打印机列表也传过去
  window.webContents.send('getPrinterList', list);
});

===============================================================================

(2)渲染线程(print.vue文件)伪代码如下:




//获取打印机列表完成

2、(重头戏来了)获取打印机列表后,就需要通过electron自带的标签实现小票排版。 是什么?可以把它当做标签,它里面显示的是你需要打印的内容。

(1)使用之前,需要新建一个print.html文件,把你要打印的内容通过print.html显示出来。我们项目的需求是将要打印的内容通过canvas画出后,再将canvas转成图片资源(base64),然后放到里面显示,伪代码如下:




 
 
 
 Document
 




(2)html文件创建完成后,将print.html引入到。该需要显式的定义在print.vue文件中,但需要将它用v-show="false"隐藏,不能用v-if,因为我们需要的dom节点存在于页面上,只是不展示而已。

到这里本electron调用打印机的功能就实现了。

总结

以上所述是小编给大家介绍的electron + vue项目实现打印小票功能及实现代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!


标题名称:electron+vue项目实现打印小票功能及实现代码
文章URL:http://ybzwz.com/article/ppjhoo.html