vue项目通过npm 引入pdf.js 并预览后端传来的二进制流pdf文件


)

废话不多说 直接上才艺

首先需要引入vue-pdf 通过

npm install vue-pdf -D

或者

cnpm install vue-pdf -D

其次,需要在项目中引用

import pdf from 'vue-pdf'

在html中
<pdf :src="pdfSrc" v-for="i in numPages" :key="i" :page="i"/>

components中

 components: { pdf }

data()中

data () {
	return { 
		pdfSrc:'',
 		numPages:0
	}
}

js方法

 let res = await 你的二进制pdf文件流获取函数()
  this.pdfTask(res)
   pdfTask(res){
        var self = this
        self.pdfSrc=  this.getObjectURL(res);
        var loadingTask = pdf.createLoadingTask(self.pdfSrc)  
        loadingTask.then(pdf => {
          self.pdfSrc = loadingTask
          self.numPages = pdf.numPages// 这里得到pdf的页数
        }).catch()
      },
     // 将返回的流数据转换为url
      getObjectURL(file) {
        let url = null;
        if (window.createObjectURL != undefined) { // basic
          url = window.createObjectURL(file);
        } else if (window.webkitURL != undefined) { // webkit or chrome
          try {
            url = window.webkitURL.createObjectURL(file);
          } catch (error) {
            console.log(error)
          }
        } else if (window.URL != undefined) { // mozilla(firefox)
          try {
            url = window.URL.createObjectURL(file);
          } catch (error) {
            console.log(error)
          }
        }
        return url;
      }

结束

在这里插入图片描述请求头部一定要加上 { responseType: 'blob' }

Logo

前往低代码交流专区

更多推荐