printToPDF以标签大小而非实际窗口大小

时间:2017-09-11 16:23:49

标签: javascript twitter-bootstrap electron

我的电子应用程序有一个打印工具,可以直接打印窗口的内容。它使用Bootstrap进行布局。电子窗口按预期呈现,但是当我使用printToPDF打印内容时,生成的PDF会查看标签大小的屏幕截图。附上图片以便更好地理解。

代码段:

win.webContents.printToPDF({pageSize:"A4",printBackground: true}, (error, data) => {

    if (error) throw error

    fs.writeFile('print.pdf', data, (error) => {

        if (error) throw error

        console.log('Write PDF successfully.');
    });
});

另一方面,我也试过window.print(),它会产生同样的问题。

我需要打印窗口中显示的屏幕。

预期(电子窗口截图) enter image description here

实际(生成的PDF的屏幕截图): enter image description here

1 个答案:

答案 0 :(得分:1)

通过访问它来打印整个窗口对我有用。

  var childWindow = getWindow("My-Window-Name");

  childWindow.webContents.printToPDF({
     landscape: true
     }, function(err, data) {
     var dist = "";
     var dir = "";
     if (process.platform !== 'darwin') {
     dir = "C:\\store\\" + serialNumber;

     if (!fs.existsSync(dir)){
       fs.mkdirSync(dir);
     }
       dist = dir +  '\\' + serialNumber + '.pdf'
     } else {
       dir = __dirname + '/' + serialNumber;

     if (!fs.existsSync(dir)){
       fs.mkdirSync(dir);
     }
       dist = dir +  '/' + serialNumber + '.pdf'
     }

     fs.writeFile(dist, data, function(err) {
       if(err) console.log('genearte pdf error', err)
     })
     })

// code to get reference to window
   function getWindow(windowName) {
     var windowArray = BrowserWindow.getAllWindows();
     console.log(windowArray[0].getTitle());
     for (var i = 0; i < windowArray.length; i++) {
       if (windowArray[i].getTitle() == windowName) {
         return windowArray[i];
       }
     }
   return null;
   }