Vue实现在线预览pdf文件功能(利用pdf.js/iframe/embed)

 更新时间:2021年06月02日 14:45:25   作者:小孬种  
项目要求需要预览pdf文件,网上找了很久,发现pdf.js的效果,这篇文章主要给大家介绍了关于Vue实现在线预览pdf文件功能,主要利用pdf.js/iframe/embed来实现的,需要的朋友可以参考下

前言

最近在做一个精品课程,需要在线预览课件ppt,我们的思路是将ppt转换为pdf在线预览,所以问题就是如何实现在线预览pdf了。

在实现的过程中,为了更好地显示效果,我采用了多种不同的方法,最终选择效果最好的pdf.js。

实现方法:

1:iframe

采取iframe将pdf嵌入网页从而达到预览效果,想法很美好,实现很简单,但显示很残酷…

虽然一行代码简洁明了,打开谷歌浏览器效果也还行,但缺点也是十分明显的!!!!

<iframe src="http......" width="100%"></iframe>

缺点:

(1)不兼容IE,因为iframe毕竟不规范,IE已经不采用它了

(2)下载弹窗!!!每次打开预览都弹出下载弹窗,用户体验极度不好

2:embed

embed和iframe感觉差不多的东西,用起来感觉一样简洁明了,打开IE效果也还行,但仍然无法避免下载弹窗的干扰。

 <embed src="http......" 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('https://lidn02.o%BA.pdf')   // 找到之前引进来pdf文件中的的viewe.html并+pdf地址
    },
 }
</script>

(4)效果
各大主流浏览器均兼容。

(5)以流的形式接收pdf

虽然上面已经实现效果了,但打开控制台还是有一行报错:

为了解决这个问题,或者遇到跨域时都采用流的形式接受pdf文件,再进行展示:

mounted(){
	this.getData(你的pdf地址)
}

//接收文件流转换地址再显示
 getData(url){
  axios.get(url,{
    responseType:'blob',
  })
    .then(res => {
      let blob = new Blob([res.data], {type: "application/vnd.ms-excel"})
      let objectUrl = URL.createObjectURL(blob)
      this.pathUrl = '../../../../../static/pdf/web/viewer.html?file=' + objectUrl
    })
    .catch(err => {
      console.log(err)
    })
}

总结

到此这篇关于Vue实现在线预览pdf文件功能的文章就介绍到这了,更多相关Vue在线预览pdf文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vuex的使用及知识点笔记

    Vuex的使用及知识点笔记

    这篇文章主要介绍了Vuex的使用及知识点笔记,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Vue export default中的name属性有哪些作用

    Vue export default中的name属性有哪些作用

    这篇文章主要介绍了Vue export default中的name属性有哪些作用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Vue3中Composition的API用法详解

    Vue3中Composition的API用法详解

    这篇文章主要为大家详细介绍了Vue3中Composition的一些常见API的用法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-06-06
  • 浅谈Vue单页面做SEO的四种方案

    浅谈Vue单页面做SEO的四种方案

    Vue SPA单页面应用对SEO不友好,当然也有相应的解决方案,通过查找资料,大概有以下4种方法,本文就详细的介绍一下
    2021-10-10
  • iView框架问题整理小结

    iView框架问题整理小结

    这篇文章主要介绍了iView框架问题整理小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • Pinia 的 Setup Stores 语法使用实例详解

    Pinia 的 Setup Stores 语法使用实例详解

    这篇文章主要为大家介绍了Pinia 的 Setup Stores 语法使用实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • vue项目配置env的方法步骤

    vue项目配置env的方法步骤

    在vue项目中env是全局配置文件,可以存储不同环境下的变量,下面这篇文章主要给大家介绍了关于vue项目配置env的方法步骤,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • vue3的watch和watchEffect你了解吗

    vue3的watch和watchEffect你了解吗

    这篇文章主要为大家详细介绍了vue的watch和watchEffect,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • vue项目动态设置页面title及是否缓存页面的问题

    vue项目动态设置页面title及是否缓存页面的问题

    这篇文章主要介绍了vue项目动态设置页面title及是否缓存页面的问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Vue3中数据响应式原理与高效数据操作全解析

    Vue3中数据响应式原理与高效数据操作全解析

    这篇文章主要为大家详细介绍了Vue3中数据响应式原理与高效数据操作的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-02-02

最新评论