我的代码如下所示:
function pdfSettings(h, w) {
var MICRONS_PER_IN = 25400;
var option = {
landscape: false,
marginsType: 0,
printBackground: true,
printSelectionOnly: false,
pageSize:{width:(w * MICRONS_PER_IN), height:(h * MICRONS_PER_IN)},
};
return option;
}
和
win.webContents.printToPDF(pdfSettings('8.25','5.375'), function(err, data) {
fs.writeFile('/Users/me/.myapp/test.pdf', data, function (error) {
if (err) {
return console.log(err.message);
}
else {
console.log("shouldn't be here");
console.log(data.length);
}
});
});
这将产生一个具有正确尺寸的新pdf文件,但为空白。
win
是已打开的新浏览器窗口对象,我可以看到其中的内容。我怀疑这是浏览器窗口内容尚不可用的问题,但是将其置于ready事件中似乎无济于事,甚至根本无法启动。无论浏览器窗口内容如何,数据(和pdf文件大小)的长度始终为661个字节。可能是最小的pdf模板大小或其他内容。
我改用wkhtmltopdf的后备策略不可行(某些css3功能不可用),因此我必须进行这项工作。
最佳答案
我不了解如何操作,在单击“发布您的问题”后30秒钟,我总是自己弄清楚该问题,因此很想删除此问题……但是在SO上似乎还没有其他版本,所以去了。
x.printToPDF()需要包装在webContents对象的事件处理程序中,如下所示:
win.webContents.on('did-finish-load', function() {
did-finish-load
是此问题的正确事件。此外,复制粘贴事件名称也不会感到羞耻,以避免输入错误。