問題描述
我了解電子中 printToPDF 的常用方法是在 main
進程中調用以下代碼:-
I understand the usual method within electron to printToPDF is within the main
process to call the following code:-
const {BrowserWindow} = require('electron')
const fs = require('fs')
let win = new BrowserWindow({width: 800, height: 600})
win.loadURL('http://github.com')
win.webContents.on('did-finish-load', () => {
// Use default printing options
win.webContents.printToPDF({}, (error, data) => {
if (error) throw error
fs.writeFile('/tmp/print.pdf', data, (error) => {
if (error) throw error
console.log('Write PDF successfully.')
})
})
})
但是,我想要實現的是通過單擊按鈕從 BrowserWindow
中有效地調用 printToPDF.
However, what I am trying to achieve is to effectively call printToPDF from within BrowserWindow
on the click of a button.
我由此理解:https://github.com/electron/electron/pull/1835/commits/1eba552a8d1ab4479824275f0e0a2cea9337bd8c 已將 printToPDF 暴露給 BrowserWindow,但沒有關于如何從網頁中實際調用 printToPDF 的文檔.
I understand from this: https://github.com/electron/electron/pull/1835/commits/1eba552a8d1ab4479824275f0e0a2cea9337bd8c that printToPDF has been exposed to BrowserWindow, but there is no documentation on how to actually call printToPDF from within a webpage.
它的谷歌也沒有顯示一個例子.有什么線索嗎?
A google of it doesn't reveal an example either. Any clues?
推薦答案
renderer.js
renderer.js
const ipc = require('electron').ipcRenderer
const printPDFBtn = document.getElementById('pdfME')
printPDFBtn.addEventListener('click', function (event) {
ipc.send('print-to-pdf')
})
main.js
const electron = require('electron')
const fs = require('fs')
const app = electron.app
const BrowserWindow = electron.BrowserWindow
const Menu = electron.Menu
const Tray = electron.Tray
const ipc = electron.ipcMain
const path = require('path')
const url = require('url')
const shell = electron.shell
let mainWindow
ipc.on('print-to-pdf', function (event) {
const pdfPath = path.join(__dirname, '/reports/print.pdf')
const win = BrowserWindow.fromWebContents(event.sender)
win.webContents.printToPDF({printBackground: true, landscape: true}, function (error, data) {
if (error) throw error
fs.writeFile(pdfPath, data, function (error) {
if (error) {
throw error
}
shell.openExternal('file://' + pdfPath)
event.sender.send('wrote-pdf', pdfPath)
})
})
})
這篇關于電子,來自 BrowserWindow 的 printToPDF的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!