我的电子应用程序有一个打印工具,可以直接打印窗口的内容。它使用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()
,它会产生同样的问题。
我需要打印窗口中显示的屏幕。
答案 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;
}