最近做项目遇到在线预览和下载pdf文件,试了多种pdf插件,例如vue-pdf(跨域以及分页会有很多问题)

最后选择了pdf.js插件(兼容ie10及以上、谷歌、安卓,苹果),强烈推荐该插件,以下介绍用法

1.首先去官网下载pdf插件,我这里用的是稳定版本

官网地址:http://mozilla.github.io/pdf.js/getting_started/#download
在这里插入图片描述

2.将整个文件改名为pdf并放到vue的static文件里

在这里插入图片描述
pdf文件里web里面的viewer.js(这个页面需要注意是解决跨域问题)、viewer.html(这个文件主要是设置的入口页面,到时页面引入的时候需要加上这个页面的路径),和build的几个js文件

3.vue页面利用iframe引入

<template>
  <div class="Contract">
      <iframe :src="pathUr" ></iframe>
  </div>
</template>

<script>
export default {
  data () {
    return {
      pathUr: ''// pdf文件地址
    }
  },
  created () {
    document.title = ''
      let filePath = this.$route.query.FilePath || ''    //  我的pdf地址是从上个页面传过来的,只是一个地址
      this.pathUr = '../../../../static/pdf/web/viewer.html?file=' + filePath   //  根据自己的文件地址将viewe.html引进来
      console.log(filePath, '更改前路径')
      console.log(this.pathUr, '更改后的路径')
  }
}
</script>

<style lang="scss" scoped>
.Contract{
  iframe{
    width: 100vw;
    height: 100vh;
    border: none;
  }
}
</style>

4.跨域问题

使用pdf.js时,当有跨域的问题时,会加载失败,错误信息为file origin does not match viewer’s。

直接注释掉web/viewer.js中的这三行就行,不去判断跨域即可。

// if (origin !== viewerOrigin && protocol !== 'blob:') {
//     throw new Error('file origin does not match viewer\'s')
// }

ok,这样就可以正常预览pdf文件了,当然这个pdf.js插件很多文件用不到的可以删掉。

Logo

前往低代码交流专区

更多推荐