移动端使用pdf.js预览PDF文件

581 阅读1分钟

1.引言

把pdf文件嵌入一个弹框中预览展示,PC端直接使用ifame标签即可, 移动端却无法实现,可使用pdf.js插件

2.下载使用

Getting Started (mozilla.github.io)

image.png

3. 去掉非必要的文件

(留下以下几个文件可实现预览) image.png

4. 预览示例PDF文件

用浏览器打开viewer,html(注意open in Default brower打不开;open in live serve可以) 需要启动服务器打开

image.png

5. URL(xxxx/web/viewer.html)拼接参数预览自定义文件(预览本地文件的话是本地文件相对xxxx/web/viewer.html的相对地址)

新URL: xxxx/web/viewer.html?file=xxx/xxx/xxx.pdf

6. 弹框使用pdfjs viewer.html渲染自己的pdf

6.1 同域

Vue项目中要把pdf.js插件文件放到和src同级的静态文件static或public文件夹下

image.png

如果pdf文件和我们部署的viewer在同一个域底下的话那么直接加个file参数如:

 <iframe :src="'static/web/viewer.html?file=' + encodeURIComponent(文件URL)" width="100%"
 height="1000px" frameborder="0"></iframe>

encodeURIComponent可以省略

<iframe src="static/web/viewer.html?file=(文件URL)" width="100%"
 height="1000px" frameborder="0"></iframe>

(viewer.html的相对弹框的相对地址)?file=(本地文件相对xxxx/web/viewer.html的相对地址)

<iframe src="xxxx/web/viewer.html?file=xxx/xxx/xxx.pdf"/>

6.2 我们的pdf文件和部署的在不同域

控制台报错

image.png

解决方法: 打开viewer.js 注释掉跨域判断如下图:

image.png

然后我们再打开页面即可预览

image.png