解决办法:https://www.bilibili.com/read/cv21387408/

只能传到自己网站上,不能使用外站链接

正确链接:

https://wowood.cn/腾讯云 BI.pdf

错误链接:

https://picture.baicai.online/middle_east_compliance_policy.pdf

其他原因导致打不开:

 

前言:

一直以来都有一个困扰,就是自己搭建的Nextcloud在线浏览PDF始终有问题,如下图:

之前也在网上胡乱搜索了一通,各种更换PDFJS版本、CORS解决跨域问题、安装chrome跨域扩展,都没有解决问题。于是我就把问题归结于“水土不服”了,nextcloud嘛,老外的东西,可能某些东西被土蔷导致在线加载异常吧。

直到我又搭建了kodbox,在线浏览PDF仍然异常。这我就纳闷了,官方的演示站可是很正常的。

 

尝试:
再次不服气,索性我就打开了F12,看了整个PDF的加载过程:首先从服务器加载pdfjs,然后加载pdf文件,然后IDM就弹出了下载框,紧接着报错;

首先,pdf.js是加载成功的,这没问题;其次,pdf文件也正常加载,IDM下载框都弹出了;那就纳闷了,继续搜索,github上有个issue是说是跨域问题解决的,于是我又按照教程,安装“access-control-allow-origin”插件,开启跨域,仍然不行。NND!

意外:

在郁闷中,随便点点时,发现在pdf.js的窗口中,有个加载本地文件的按钮,我加载了一个本地pdf,居然成功打开了!如下图:

这就有意思了,pdf.js加载正常,pdf文件下载链接也正常,于是我猜想,那就是加载pdf的时候出问题了?会不会是弹出的IDM的问题?

 

解决:

于是,我关掉chrome浏览器的IDM扩展,取消对chrome下载的接管,再试,直接搞定,PDF在线预览成功!

所以,PDF.JS预览的原理那就是,先加载PDF.JS插件,然后将PDF文件下载到缓存,然后打开。之前我的IDM在下载PDF的时候直接接管了浏览器的下载,导致PDF.JS插件加载PDF文件失败。


原理弄清楚后,还得恢复IDM的正常功能,总不能因为预览PDF就不用IDM吧,进入IDM选项,取消对PDF的自动下载,搞定!