vue项目中使用Vue-pdf在线预览

项目实现在线预览PDF,一开始用了pdf.js没能成功;后来才发现vue-pdf使用起来最简单,直接上demo

下载

npm i vue-pdf

引入(在所需要预览的页面)

<script>

import axios from 'axios'

import pdf from 'vue-pdf'

import CMapReaderFactory from 'vue-pdf/src/CMapReaderFactory.js' // 加载中文的包

export default {

  components: {

    pdf

  },

  data () {

    return {

      numPages:'',

       url:'',

       src:'',

       path:'',//pdf的地址,例如:/testFile.pdf

    }

  },

  created(){

    this.url = axios.defaults.baseURL; // 项目当前的域名

    this.src = pdf.createLoadingTask({

      // url:'http://localhost:8080'+this.path,// 此行是为了在本地跑项目的时候能够加载出来,仅用于开发显示

      url:this.url+this.path,//正式环境用这个!

      CMapReaderFactory

    })

    // 让所有页数一次性加载完,否则就只会加载第一页

    this.src.then(pdf => {

      this.numPages = pdf.numPages

      }).catch(() => {

    })

  },

}

</script>

this.url一定要是当前项目的域名,否则会报跨域,请确保this.url+this.path是能够在浏览器访问的

例如:http://test.com/testFile.pdf

html部分

<template>

    <div class="scrollBox">

      <div v-for="i in numPages" :key="i">

        <pdf :src="src" :page="i"></pdf>

      </div>

    </div>

  </div>

</template>
若只写<pdf :src="src"></pdf>,仅加载第一页
效果如图
1.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。