webContents.printtoPDF()始终返回长度为661字节的空数据

时间:2019-01-04 22:16:12

标签: javascript node.js pdf electron

我的代码如下:

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功能不可用),因此我必须使这项工作有效。

1 个答案:

答案 0 :(得分:2)

我不了解如何操作,在单击“发布您的问题”后30秒钟,我总是自己弄清楚,因此很想删除此问题...但是似乎没有其他版本了这样,所以去了。

x.printToPDF()需要包装在webContents对象的事件处理程序中,如下所示:

win.webContents.on('did-finish-load', function() {

did-finish-load是此问题的正确事件。此外,复制粘贴事件名称也不会感到羞耻,以避免输入错误。