由于公司业务的开发需要,需要实现在electron上实现PDF的在线预览功能。electron 3.x版本后就不在支持PDF的预览功能了,官方给的解释是由于人手不够将不再支持PDF预览功能(也是醉了),在经过一番调研结合大佬们的经验实现了PDF的在在线预览功能
实现方式一、
-
将下好的文件放入static文件目录下
-
在electron的主线程中通过渲染线程与主线程之间的通信获取viewer.html文件位置
// 监听获取viewer.html文件位置、 function getUrl(win) { const filePath = process.env.NODE_ENV === 'development' ? `${ __static}\\pdfjs\\web\\viewer.html` : path.resolve(__dirname, '../../../static/pdfjs/web/viewer.html') win.webContents.send('recieve', filePath) } // pdf预览获取viewer.html文件位置 ipcMain.on('getUrl', () => getUrl(win))
-
在pdf.vue中写
<template> <iframe :src="base + '?file=' + url" :width="width" :height="height" class="iframe-placeholder"></iframe> </template> <script> import { ipcRenderer } from 'electron' // eslint-disable-line export default { props: { url: { type: String, default: '', }, width: { type: Number, default: 750 }, height: { type: Number, default: 600 }, }, data() { return { preview: false, base: '', } }, computed: { // 讲义文件名 name() { const uri = decodeURI(this.url) const arr = uri.split('/')