Vue实现在线预览pdf⽂件功能(利⽤pdf.jsiframeembed)
前⾔
最近在做⼀个精品课程,需要在线预览课件ppt,我们的思路是将ppt转换为pdf在线预览,所以问题就是如何实现在线预览pdf了。
在实现的过程中,为了更好地显⽰效果,我采⽤了多种不同的⽅法,最终选择效果最好的pdf.js。
实现⽅法:
见信好
1:iframe
采取iframe将pdf嵌⼊⽹页从⽽达到预览效果,想法很美好,实现很简单,但显⽰很残酷…
虽然⼀⾏代码简洁明了,打开⾕歌浏览器效果也还⾏,但缺点也是⼗分明显的
<iframe src="" width="100%"></iframe>
缺点:
(1)不兼容IE,因为iframe毕竟不规范,IE已经不采⽤它了
(2)下载弹窗每次打开预览都弹出下载弹窗,⽤户体验极度不好
2:embed
embed和iframe感觉差不多的东西,⽤起来感觉⼀样简洁明了,打开IE效果也还⾏,但仍然⽆法避免下载弹窗的⼲扰。
<embed src="" width="100%" height="400" />
3:pdf.js(效果感觉最好)
实现步骤:
(1)下载pdf.js⽂件
因为pdf.js⽂件⽐较多,我们要⽤的只是核⼼⽂件,所以将核⼼⽂件抽出来(已处理跨域报错)。
(2)在static中引⼊核⼼⽂件
(3)使⽤
<template>
<iframe :src="pathUrl" width="100%"></iframe>
</template>
<script>
export default {
data () {
return {
五年级下册手抄报pathUrl:''
}
},
mounted () {
开胃this.pathUrl = '../../../../../static/pdf/web/viewer.html?file=' + encodeURIComponent('lidn02.o%B
A.pdf') // 找到之前引进来pdf⽂件中的的viewe.html并+pdf地址 },
}
</script>
(4)效果
各⼤主流浏览器均兼容。
(5)以流的形式接收pdf
通常英语怎么说虽然上⾯已经实现效果了,但打开控制台还是有⼀⾏报错:
为了解决这个问题,或者遇到跨域时都采⽤流的形式接受pdf⽂件,再进⾏展⽰:
mounted(){
害怕的词语Data(你的pdf地址)
}
/
/接收⽂件流转换地址再显⽰
getData(url){
<(url,{
responType:'blob',
})
.then(res => {
let blob = new Blob([res.data], {type: "application/vnd.ms-excel"})
let objectUrl = ateObjectURL(blob)
this.pathUrl = '../../../../../static/pdf/web/viewer.html?file=' + objectUrl
})
鸭舌帽怎么戴好看.catch(err => {
耽美片段
console.log(err)
})
大班秋季育儿知识}
总结
到此这篇关于Vue实现在线预览pdf⽂件功能的⽂章就介绍到这了,更多相关Vue在线预览pdf⽂件内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!