日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

Vue-pdf实现在线预览PDF文件

發布時間:2023/12/14 vue 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Vue-pdf实现在线预览PDF文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

在大多數項目中都會遇到在線預覽PDF文件,項目使用的是element ui,使用vue-pdf實現。

安裝依賴

npm install --save vue-pdf

相關參數

參數介紹:

  • url :pdf 文件的路徑,可以是本地路徑,也可以是在線路徑。
  • page: 當前顯示的頁數,比如第一頁page=1
  • rotate : 旋轉角度,比如0就是不旋轉,+90,-90 就是水平旋轉。
  • progress :當前頁面的加載進度,范圍是0-1 ,等于1的時候代表當前頁已經完全加載完成了。
  • page-loaded :頁面加載成功的回調函數,不咋能用到。
  • num-pages :總頁數
  • error :加載錯誤的回調
  • link-clicked:單機pdf內的鏈接會觸發。
  • print 這個是打印函數。 注意:谷歌瀏覽器會出現亂碼,這個和字體有關系。

實現

<template><div><el-row><el-button @click="onPreview" size="small">預覽</el-button></el-row><el-dialog title="預覽合同附件" :visible.sync="viewVisible" center width="60%" @close='closePreview'><el-row :gutter="20"><span>共{{pageCount}}頁, 當前第 {{pdfPage}} 頁 </span><el-button type="text" size="mini" @click.stop="previousPage">上一頁</el-button><el-button type="text" size="mini" @click.stop="nextPage">下一頁</el-button></el-row><div><pdf :src="src" :page="pdfPage" @num-pages="pageCount = $event" @page-loaded="pdfPage = $event" style="display: inline-block; width: 100%"></pdf></div></el-dialog></div> </template> <script> import pdf from 'vue-pdf' import store from '@/store/' export default {components:{pdf},data(){return {viewVisible: false,src: null,pdfPage : 1,pageCount: 0,token: store.getters.access_token,}},methods:{onPreview(){this.src = pdf.createLoadingTask({url: 'http://localhost:8082/file/demo.pdf',httpHeaders: {Authorization:'Bearer '+ this.token}});this.src.promise.then(pdf => {this.viewVisible = true;});},closePreview(){this.pdfPage = 1;},previousPage(){let p = this.pdfPagep = p > 1 ? p-1 : this.pageCountthis.pdfPage = p},nextPage(){let p = this.pdfPagep = p < this.pageCount ? p+1 : 1this.pdfPage = p}} } </script>

效果

注意點

1、URL

url為文件地址路徑

this.src = pdf.createLoadingTask({url: 'http://localhost:8082/file/demo.pdf', });

2、設置請求頭

可以通過httpHeaders來設置token等參數

httpHeaders: {Authorization:'Bearer '+ this.token}

3、src

這點比較重要,網上很多帖子都是這樣的

this.src.then(pdf => {this.viewVisible = true; })

會報錯 TypeError: this.src.then is not a function

TypeError: this.src.then is not a functionat VueComponent.onPreview (index.vue?6ced:241)at click (index.vue?aaff:261)at invokeWithErrorHandling (vue.runtime.esm.js?2b0e:1854)at VueComponent.invoker (vue.runtime.esm.js?2b0e:2179)at invokeWithErrorHandling (vue.runtime.esm.js?2b0e:1854)at VueComponent.Vue.$emit (vue.runtime.esm.js?2b0e:3888)at VueComponent.handleClick (element-ui.common.js?5c96:9413)at invokeWithErrorHandling (vue.runtime.esm.js?2b0e:1854)at HTMLButtonElement.invoker (vue.runtime.esm.js?2b0e:2179)at HTMLButtonElement.original._wrapper (vue.runtime.esm.js?2b0e:6917)

正確的是這樣的

this.src.promise.then(pdf => {this.viewVisible = true; });

總結

以上是生活随笔為你收集整理的Vue-pdf实现在线预览PDF文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。