最近有个需求,需要批量下载 pdf,单份还好,但多份时会超时。
需要改成一份一份下载,先选择下载的存储路径,再自动下载到选择的目录中,一开始使用了 will-download,但在测试过程中,测服下载速度很慢,发现保存地址还是会弹出来,下载一次弹出一份。
因此打算试试利用 electron 原来的生成 pdf 功能
计划利用一个隐藏窗口来生成PDF,打开隐藏窗口后,加载数据,判断加载完成后,开始生成 PDF 页面,会涉及到 electron 的打开新窗口、选择文件夹、生成 PDF 三个功能
官方API
- 选择存储目录 对话框 showOpenDialog
- 打开新窗口 BrowserWindow
- 生成 PDF printToPDF
- 窗口间通信 ipcMain
开发环境:electron4+
选择存储目录
1 | // html |
1 | <!--main.js--> |
打开新窗口
主进程打开新窗口并跳到某个页面
1 | let {href} = this.$router.resolve({ |
关闭窗口
1 | // 退出此页面时,关闭窗口 |
生成 pdf
1 | // 这里生成报告页还是一份一份生成的,只要在前端遍历,有接收到生成成功的信号,就在下载下一份就可以了 |
在下载成功的时候,可以触发事件去下载下一份报告