因工作需求需要pc端要实现pdf预览功能,折腾了两天算是搞定了,分享下具体的流程,之前也是找了很多资料,大部分都是描述的不是很清楚,踩了不少的坑,最后采用的是pdf.js来实现的
主要参考了该博友:
PDF.JS-文件流方式在线展示pdf文件_MJlife的博客-CSDN博客_js pdf 流
第一步要先下载pdf.js 官网地址:Getting Started
第二步 需要吧下载好的压缩文件解压到项目下的static静态目录下 记得重启项目
这时可以直接在本地测试自己是否引用成功
http://xxxxxxxxxx:端口号/项目名称/static/pdf/web/viewer.html
如果成功会进入默认的内容页
第三步在需要的页面中使用
通过navigator.platform来获取当前的系统参数做一定程度的适配
如果不需要兼容safari只需要执行 window.open直接打开窗口跳转就好
//获取当前操作系统参数,因Safari 浏览器中没办法在回调函数里面执行window.open, 原因是safari的安全机制将其阻挡了
//url 代表后端的完整请求地址路径,类似:https://xxxxxxxxxxx:端口号/项目称/api/common/file/doc-2-html/download?fileId=1111111111111
var _pf=navigator.platform;
if (_pf.indexOf("Win") > -1) {
//window系统支持chrome,Edge
window.open(
"/项目名称/static/pdf/web/viewer.html?file=" + encodeURIComponent(url)
);
} else if (_pf.indexOf("Mac") > -1) {
mac系统支持safari;
var winRef = window.open("", "_blank"); //先打开一个页面
winRef.location =
"/项目名称/static/pdf/web/viewer.html?file=" + encodeURIComponent(url)
} else {
window.open(
"/项目名称/static/pdf/web/viewer.html?file=" + encodeURIComponent(url)
);
}
该流程算是最简单也是最方便好懂的,通过window.open打开新的窗口访问本地下载好的viewer.html来访问encodeURIComponent编码过后的地址以此来打开pdf文档