亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

vue中如何實現pdf文件預覽的方法

2019-11-19 13:30:33
字體:
來源:轉載
供稿:網友

今天產品提出一個優化的需求,就是之前我們做的圖片展示就是一個img標簽搞定,由于我們做的是海外后臺管理系統,那邊的人上傳的文件時pdf格式,vue本事是不支持這種格式文件展示的,于是就google搜索,發現有iframe、embed、vueshowpdf(測試了不咋好用)、pdf等,本文說一下pdf插件的使用過程。

說明:iframe標簽這種,對于有的鏈接是可以的,比如這種鏈接在服務器端沒有設置享有頭content-disposition,就可以直接顯示,如下:

想復制代碼如下:

<iframe src="http://storage.xuetangx.com/public_assets/xuetangx/PDF/PlayerAPI_v1.0.6.pdf" width="100%" height="100%"> This browser does not support PDFs. Please download the PDF to view it: <a href="/test.pdf" rel="external nofollow" >Download PDF</a></iframe>

顯示效果如下:

如果pdf有很多頁,也不用考慮分頁功能,自動可以向下滑動就翻頁,看著挺好,但是,且往下繼續看----->

我們把上邊的鏈接換成' https://ecs7.tokopedia.net/instant-loan/file/29a2218e-bef9-44cb-b92b-8e81bc4d5228_DOC-20171013-WA0035.pdf ',發現什么了?快看截圖。。。同樣是pdf鏈接,怎么這個就不行?

什么情況,下載框,必須下載才能看到,那多影響體驗,下到本地還占我磁盤,不行不行,把上邊那個連接放到瀏覽器,回車看一下響應頭部:

content-disposition :attachment; filename="DOC-20171013-WA0035.pdf"

就是它,讓我們必須彈出下載框,由于這些文件是在遠程服務器上存貯著,想著讓后端看能不能檢測到這個響應頭,他們也懶得處理,后來只能自己處理了,鑒于這種情況,網上也是有很多解決辦法的,本人試驗過可以的。中間也是借用了一篇文章 ,根據自己需求,做了簡單的處理。

http://www.49028c.com/article/143646.htm

過程如下:

  • 執行npm install pdf-dist --save
  • 在comments目錄下創建兩個文件:pdf.vue 和 index.js
< !--pdf.vue--><template > <div id = "container": class = "{'back': isShow}" > <canvas id = "the-canvas" > </canvas>  <!-- / / 添加關閉pdf功能--><span: class = "{'close':isShow}"@click = "closePdf" > close < /span>  <p class="foot" v-if="pdfDoc">  <Button class="left" @click="onPrevPage" v-if="pageNum>1">上一頁</Button > <Button class = "right"@click = "onNextPage"v -if = "pageNum<pdfDoc.numPages" > 下一頁 < /Button>  </p > </div> </template > <script > import PDFJS from 'pdfjs-dist'exportdefault { data() {  return {  isShow:  false,  //通過該屬性動態添加類,讓pdf顯示或隱藏   pdfDoc: null,  //可以打印發現是一個對象,里面有頁數信息等   pageNum: 1,  pageRendering: false,  pageNumPending: null,  scale: 0.9  } }, methods: {  closePdf() {  this.isShow = false  },  showPDF(url) {  this.isShow = true let _this = this PDFJS.getDocument(url).then(function(pdf) {   _this.pdfDoc = pdf   _this.renderPage(1)  })  },  renderPage(num) {  this.pageRendering = true let _this = this this.pdfDoc.getPage(num).then(function(page) {   var viewport = page.getViewport(_this.scale) let canvas = document.getElementById('the-canvas') canvas.height = viewport.height canvas.width = viewport.width // Render PDF page into canvas context    var renderContext = {   canvasContext: canvas.getContext('2d'),   viewport: viewport   }   var renderTask = page.render(renderContext) // Wait for rendering to finish    renderTask.promise.then(function() {   _this.pageRendering = false   if (_this.pageNumPending !== null) {    // New page rendering is pending     this.renderPage(_this.pageNumPending) _this.pageNumPending = null   }   })  })  },  queueRenderPage(num) {  if (this.pageRendering) {   this.pageNumPending = num  } else {   this.renderPage(num)  }  },  onPrevPage() {  if (this.pageNum <= 1) {   return  }  this.pageNum--this.queueRenderPage(this.pageNum)  },  onNextPage() {  if (this.pageNum >= this.pdfDoc.numPages) {   return  }  this.pageNum++this.queueRenderPage(this.pageNum)  } } } < /script><style scoped="" type="text/css ">.back { background-color: rgba(0, 0, 0, 0.788); position:fixed; width: 100%;  height: 100%; top: 0; left: 0;  text-align: center;  padding: 20px; z-index: 100;  overflow: scroll;}.close{  position: absolute;  right: 20px;  top: 20px; z-index: 200; color: #fff; cursor: pointer;} .foot { position: absolute; bottom: 50px; left: 50%;  transform: translate(-50%,0);}</style>"
// index.jsimport PDF from './pdf'var $vmexportdefault { install(Vue, options) {  if (!$vm) {  const PDFPlugin = Vue.extend(PDF)  $vm = new PDFPlugin().$mount()  document.body.appendChild($vm.$el)  }  Vue.prototype.$showPDF = function(url) {  $vm.showPDF(url)  } } }

3. 在main.js中引入

import pdf from './components/pdf'Vue.use(pdf)

這樣就可以全局使用了,使用的時候就直接使用,本文是在一個圖片展示 的地方加上一個點擊事件,點擊時觸發該函數即可;

function showPdf() { let url = 'http://storage.xuetangx.com/public_assets/xuetangx/PDF/PlayerAPI_v1.0.6.pdf' // let url = 'https://ecs7.tokopedia.net/instant-loan/file/29a2218e-bef9-44cb-b92b-8e81bc4d5228_DOC-20171013-WA0035.pdf'  this.$showPDF(url)}

文中添加了關閉功能,點擊close即可關閉pdf的展示, 同時組件中也有分頁功能,如果頁數大于1就會顯示下一頁按鈕;

以上既是本人實現的過程,至于跨域問題,我這邊還沒遇到,現在是本地訪問可以的,等到線上再看看行不行,如果不行后邊再追加方法實現。希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
秋霞成人午夜鲁丝一区二区三区| 国产精品视频一区二区高潮| 国产精品国模在线| 久久手机精品视频| 国产区精品视频| 最近2019中文字幕在线高清| 亚洲免费人成在线视频观看| 久久久999国产| 国外成人性视频| 久久网福利资源网站| 777精品视频| 日韩电影在线观看中文字幕| 97在线免费视频| 国产日韩精品在线| 亚洲欧美日韩高清| www.亚洲天堂| 欧美大荫蒂xxx| 中文字幕精品在线视频| 久久久成人的性感天堂| 最近2019免费中文字幕视频三| 欧美日韩福利视频| 亚洲乱码av中文一区二区| 国产精品自拍偷拍视频| 2021久久精品国产99国产精品| 亚洲精品白浆高清久久久久久| 精品视频在线观看日韩| 欧美日韩免费观看中文| 国产精品欧美久久久| 国产精品国产三级国产专播精品人| 亚洲已满18点击进入在线看片| 欧美大片第1页| 久久精品国产一区二区电影| 国产午夜精品理论片a级探花| 国产精品视频精品| 亚洲韩国青草视频| 欧美日韩中文字幕综合视频| 精品国产自在精品国产浪潮| 色吧影院999| 亚洲精品久久久久国产| 久久久精品电影| 精品国产乱码久久久久久婷婷| 欧美电影免费在线观看| 性欧美长视频免费观看不卡| 日韩精品中文字幕有码专区| 国产精品视频自在线| 成人免费看吃奶视频网站| 亚洲香蕉成人av网站在线观看| 欧美激情xxxx| 欧美国产日韩在线| 国产精品中文字幕久久久| 日韩欧美高清视频| 欧美电影免费观看高清完整| 亚洲 日韩 国产第一| 亚洲美腿欧美激情另类| 亚洲欧美日韩一区二区三区在线| 热久久美女精品天天吊色| 久久成人精品电影| 91久久久久久久久久| 国产91免费观看| 国产午夜精品全部视频播放| 精品国产乱码久久久久酒店| 国产亚洲视频在线| 国产ts人妖一区二区三区| 国产成人综合久久| 日韩美女激情视频| 欧美成人激情视频免费观看| 国产欧亚日韩视频| 日本亚洲欧美三级| 午夜免费久久久久| 成人免费视频在线观看超级碰| 国内精品视频一区| 中文字幕不卡在线视频极品| 亚洲精品动漫久久久久| 97国产真实伦对白精彩视频8| 2019中文字幕在线观看| 91精品国产乱码久久久久久久久| 亚洲香蕉成人av网站在线观看| 国产在线精品自拍| xvideos成人免费中文版| 色综合色综合网色综合| 欧美老少做受xxxx高潮| 欧美色欧美亚洲高清在线视频| 国产欧美日韩亚洲精品| 国产精品美女网站| 亚洲性猛交xxxxwww| 日本不卡免费高清视频| 精品毛片网大全| 91av视频在线免费观看| 亚洲欧美在线播放| 久久亚洲国产精品成人av秋霞| 亚洲欧美日本精品| 国产a∨精品一区二区三区不卡| 亚洲精品国产精品国自产观看浪潮| 欧美另类69精品久久久久9999| 成人午夜在线视频一区| 日韩影视在线观看| 国产日韩av在线播放| 精品视频在线观看日韩| 最近的2019中文字幕免费一页| 国产成人久久久| 欧美怡春院一区二区三区| 国产精品亚洲第一区| 91牛牛免费视频| 亚洲最大成人免费视频| 日韩电影中文字幕一区| 亚洲精品国产免费| 国产精品一区二区3区| 亚洲女同性videos| 亚洲天堂第二页| 日韩欧美在线播放| 亚洲国产美女精品久久久久∴| 92版电视剧仙鹤神针在线观看| 日韩中文字幕第一页| 777精品视频| 伊人一区二区三区久久精品| 国产精品久久久久久久av大片| 成人午夜一级二级三级| 国产精品大陆在线观看| 久热国产精品视频| 国产一区二区三区久久精品| 欧美xxxx18性欧美| 亚洲天堂免费视频| 欧美激情videoshd| 亚洲精品福利免费在线观看| 亚洲天堂成人在线视频| 国产精品小说在线| 亚洲欧洲在线观看| 国产男女猛烈无遮挡91| 久操成人在线视频| 乱亲女秽乱长久久久| 久久亚洲欧美日韩精品专区| 欧美在线免费看| 久久韩剧网电视剧| 91久久久亚洲精品| 欧美亚州一区二区三区| 精品国产乱码久久久久久天美| 欧美成人激情视频| 中文字幕一区二区三区电影| 中文字幕精品www乱入免费视频| 久久福利网址导航| 国产精自产拍久久久久久蜜| 国产精品高潮粉嫩av| 亚洲人成电影在线| 日韩经典中文字幕在线观看| 国产日韩精品电影| 久久成人精品一区二区三区| 原创国产精品91| 中文字幕一区二区三区电影| 都市激情亚洲色图| 精品久久久久久亚洲国产300| 欧美国产中文字幕| 精品国产区一区二区三区在线观看| 亚洲va男人天堂| 岛国视频午夜一区免费在线观看| 精品久久久久久国产91| 日本亚洲欧美三级| 欧美激情视频一区二区| 中文国产成人精品| 欧美精品在线极品| 成人亲热视频网站| 538国产精品一区二区在线| 欧美激情在线有限公司| 在线观看中文字幕亚洲| 成人激情视频免费在线|