我想使用ElectronJS中的webContents.printToPDF()API打印具有某些动态值(例如名称,电子邮件等)的HTML内容(我称其为模板)。有什么方法可以直接从中生成PDF吗?
我尝试使用以下代码来实现它。这段代码的问题是,模板正在新窗口中加载/渲染,然后仅生成所需的PDF。是否可以使用其他方法生成PDF而无需使用任何其他Window?。
const pdfPath = path.join(os.tmpdir(), 'print.pdf')
const win = BrowserWindow.fromWebContents(event.sender);
var name = 'Abhijith';
var html = ["<body>", "<h1>Template</h1>", "<p>Your Name: " + name + " </p>", "</body>", ].join("");
win.loadURL("data:text/html;charset=utf-8," + encodeURI(html));
setTimeout(function() {
win.webContents.printToPDF(pageSettings, function(error, data) {
if (error) {
console.log('Error Stage 1') return ''
} else {
fs.writeFile(pdfPath, data, function(error) {
if (error) {
console.log('Error Stage 2 ') return '';
} else {
shell.openExternal('file://' + pdfPath)
}
})
}
})
}, 3000);