如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

electron加载pdf的问题,还真是一个历史性的难题。说难也难,说简单也简单。本篇文章中,苏南大叔简要的说说,在electron中显示pdf文件的几个解决方案。来解答一下,在electron中,如何加载显示pdf的这个历史性谜团。

electron 如何加载 pdf 文件? - electron-pdf
electron 如何加载 pdf 文件?(图5-1)

通用方案一,pdf.js

无视electron版本号,通用方案就是:使用pdf.js来加载pdf文件,这个方案最靠谱。pdfjs开源代码,可以参见下面这个地址:

官方的pdf.js源码里面,代码太多,完全不合适小白学习使用。那么,大家无脑入门的话,就记得下面这个地址即可:

http://<host>/pdfjs/web/viewer.html?file=pdf.pdf

当然,在electron中的时候,上述http://字样,可以替换成file://。您可以使用mainWindow.loadURLload对应的view.html。还可以使用iframe或者webview加载对应的view.html,都是可以显示pdf文件的。

file://<path>/pdfjs/web/viewer.html?file=pdf.pdf

可能的使用方式是:

<iframe src='file://<path>/pdfjs/web/viewer.html?file=pdf.pdf'></iframe>

通用方案二,electron-pdf-window

electron-pdf-windowgithub上的开源项目,还是挺好用的。但是:这个项目有个弊端就是:只能在一整个的窗口中打开pdf文件,而不能在窗口的一部分中加载pdf

并且,这个开源项目的背后,还是pdf.js。大家可以查看这个文件:

electron 如何加载 pdf 文件? - electron-pdf-window-indexjs
electron 如何加载 pdf 文件?(图5-2)

其实这个代码的原理,就是:

file://<path>/pdfjs/web/viewer.html?file=pdf.pdf

只不过,正常情况下来说,浏览器不支持file协议,而electron天生支持这种file协议。

使用方式是:

npm install electron-pdf-window --save
const { app } = require('electron')
const PDFWindow = require('electron-pdf-window')

app.on('ready', () => {
  const win = new PDFWindow({
    width: 800,
    height: 600
  })

  win.loadURL('http://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf')
})

低版本解决方案三,依据electron的版本号

electron1.x/2.x系列可用,但是electron3.x系列是不支持的,因为3.x系列,官方表示:由于人手不足的原因,暂不支持pdf了。embed标签,是不能识别的,当然,object也必然是不能识别的。

PDF Viewer is currently not working but is being worked on and will be functional once again soon。

plugins+iframe

创建window的时候,要注意开启plugins,然后html代码里面使用iframe进行加载。

main.js要开启plugins:

mainWindow = new PDFWindow({'webPreferences':{'plugins': true}});

index.html使用iframe:

<iframe src="pdf.pdf"></iframe> 

electron 如何加载 pdf 文件? - electron2
electron 如何加载 pdf 文件?(图5-3)

webview + plugins

<webview src="pdf.pdf" plugins></webview>
electron官方已经不推荐使用webview标签,推荐使用iframe代替

electron 如何加载 pdf 文件? - electron2-webview-pdf
electron 如何加载 pdf 文件?(图5-4)

electron 如何加载 pdf 文件? - electron1-webview-pdf
electron 如何加载 pdf 文件?(图5-5)

总结

传统的objectembed,这两个标签,electron都是不支持的,请知悉,大家就不用做无谓的相关尝试了。方案总体上总结如下:

newsn.net:这里是【评论】可见内容

这几种pdf加载方案都各有利弊,大家根据自己的实际情况选择吧。请支持苏南大叔的electron相关经验文章:

 【electron】秘籍文章入口,仅传授于有缘之人   electron    pdf

本站的忠实读者小伙伴,正在阅读下面这些文章:

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
欢迎指正文字或逻辑错误,将会择优在文末列出您的信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

苏南大叔需要你的支持

感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!