Electron如何打印PDF文档?

需求是动态给定网络上的PDF资源,Electron实现预览打印和不预览直接打印,目前两种方法的实现基本相同区别只是显示不显示窗口及BrowserWindow的show属性不同
function print()
{

if(printWindow)
{
   printWindow.webContents.print({silent: true, printBackground: true});
}

}
printWindow = new BrowserWindow({show: true,width: 800, height: 800,'webPreferences':{'plugins':true}});
//pdfUrl是网络PDF文件的地址
printWindow.loadURL(pdfUrl);
printWindow.setMenu(null);
printWindow.webContents.on('did-finish-load', () => {

   // 设置定时器
   setTimeout(print,3000);
});

遇到的问题
(1)打印需要在显示出PDF之后操作,否者打印出来的是空白,测试发现'did-finish-load'事件执行时PDF文档并没有加载完,所以我使用的是定时器但是网路资源PDF的大小和网速都会影响PDF加载的时间这里定时器使用固定值太小的话有时加载不全,太大的话用户体验不好,有没有什么方法可以知道PDF文档是否加载完成。
(2)PDF加载完成后,打印的时候必须点击下显示窗口的PDF的中部,否者打印出来文件会包含PDF的页眉页脚当窗口显示不全PDF的话分页和显示也会出现问题
下图是不点击PDF的中部,出现的错误打印结果,有没有大神帮看下如何解决上面的两问题
图片描述

阅读 9.1k
1 个回答

第一个问题可以先下截下来,再打印。
第二个问题我回去试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进