解决方法
如果您不想使用默认打印机,则需要获得all system printers:
contents.getPrinters()
这将返回一个PrinterInfo []对象.
以下是该对象从electron PrtinerInfo Docs开始的示例:
{ name: 'Zebra_LP2844',description: 'Zebra LP2844',status: 3,isDefault: false,options: { copies: '1','device-uri': 'usb://Zebra/LP2844?location=14200000',finishings: '3','job-cancel-after': '10800','job-hold-until': 'no-hold','job-priority': '50','job-sheets': 'none,none','marker-change-time': '0','number-up': '1','printer-commands': 'none','printer-info': 'Zebra LP2844','printer-is-accepting-jobs': 'true','printer-is-shared': 'true','printer-location': '','printer-make-and-model': 'Zebra EPL2 Label Printer','printer-state': '3','printer-state-change-time': '1484872644','printer-state-reasons': 'offline-report','printer-type': '36932','printer-uri-supported': 'ipp://localhost/printers/Zebra_LP2844',system_driverinfo: 'Z' } }
要打印文件,您可以使用它
contents.print([options])
这些选项在docs for contents.print()中描述:
> options对象(可选):
> silent Boolean(可选) – 不要询问用户打印设置.默认值为false.
> printBackground布尔值(可选) – 还打印网页的背景颜色和图像.默认值为false.
> deviceName String(可选) – 设置要使用的打印机设备名称.默认为”.
打印窗口的网页.当silent设置为true时,如果deviceName为空并且打印的默认设置为Electron,则Electron将选择系统的默认打印机.
在网页中调用window.print()等同于调用webContents.print({silent:false,printBackground:false,deviceName:”}).
使用page-break-before:always;强制打印到新页面的CSS样式.
因此,您只需将PDF加载到隐藏窗口中,然后在标记设置为静音的情况下触发在电子中实现的打印方法.
// In the main process. const {app,browserWindow} = require('electron'); let win = null; app.on('ready',() => { // Create window win = new browserWindow({width: 800,height: 600,show: false }); // Could be redundant,try if you need this. win.once('ready-to-show',() => win.hide()) // load PDF. win.loadURL(`file://directory/to/pdf/document.pdf`); // if pdf is loaded start printing. win.webContents.on('did-finish-load',() => { win.webContents.print({silent: true}); // close window after print order. win = null; }); });
但是,请允许我给你一点警告:
一旦你开始打印它就会变得令人沮丧,因为那里有驱动程序会以稍微不同的方式解释数据.这意味着可以忽略边际等等.由于您已经拥有PDF,因此很可能不会发生此问题.但是如果你想使用this method for example contents.printToPDF(选项,回调),请记住这一点.该项目表示,有很多选项可以避免像使用此问题中描述的预定义样式表一样受挫:Print: How to stick footer on every page to the bottom?
如果你想搜索电子中的特征并且你不知道它们可以隐藏在哪里,你所要做的就是去“所有”文档并使用你的搜索功能:https://electron.atom.io/docs/all/
问候,Megajin
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。