我正在尝试获取我在远程托管的网页中提供的 webview 的引用,并将此网页加载到我的电子应用中。
由于我需要 webContents 实例以静默方式打印,我希望webContents引用页面内的 webview 。
这里的约束是,Print应该是主流程驱动,而不是由网页单独处理。
如何做到这一点?
答案 0 :(得分:0)
您可以访问webview并从渲染器进程打印其内容。 首先将webview存储在变量中:
const webview = document.getElementById('webview');
然后你可以这样做:
webview.print({silent: true});
在文档中:https://electron.atom.io/docs/api/webview-tag/#webviewprintoptions
<强>修改强>
如果您想从主流程访问webContents,您可以:
webview.getWebContents().send('print');
并在主要过程中:
ipcMain.on('print', (event) => {
event.sender.webContents.print({silent: true});
});
答案 1 :(得分:0)
现在我正在使用便宜的脏黑客,将webview的id发送到主进程,然后使用webContents.executeJavascript
执行以下脚本document.getElementById("'+id+'").print(silent: true)
。现在至少要打印的内容是在mainProcess的控制之下。
如果有人有更清洁的方法,请告诉我。
提前谢谢。