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

首頁 > 編程 > JavaScript > 正文

vue插件開發之使用pdf.js實現手機端在線預覽pdf文檔的方法

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

目前大多數PC瀏覽器支持在線預覽pdf文件,但大多數手機瀏覽器還未支持,嘗試用手機瀏覽器打開一個pdf文件會彈出是否下載的提示框。網上查了一些資料,在實現的過程中,還是走了比較多的彎路,最后采用了備受推薦的pdf.js插件來實現。

pdf.js可以從github上clone下來,然后本地gulp生成可用的pdf.js和pdf.worker.js(參考readme即可)。

不過更簡單的方法是使用cnpm來安裝: cnpm isntall --save pdfjs-dist,然后可以在項目中使用了,我使用插件的方式。具體使用示例:

pdf.vue

<template><p id="container">  <!-- <p class='pdf-page'> -->   <canvas id="the-canvas"></canvas></p><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>  <!-- </p> --><p></p></template><script>import PDFJS from 'pdfjs-dist' export default { data () {  return {   pdfDoc: null,   pageNum: 1,   pageRendering: false,   pageNumPending: null,   scale: 0.9  } }, methods: {  showPDF (url) {   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">#container { background-color: rgba(0,0,0,0.75); position:fixed; width: 100%; height: 100%; top: 0; left: 0; text-align: center; padding: 5px;} .pdf-page { } .foot { position: fixed; transform: translate(-50%,0); left: 50%;}</style>

index.js:

import PDF from './PDF' var $vmexport default { 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)  } }}

把兩個文件放到同一文件夾pdf中形成一個插件,在main.js引入并use:

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

這樣,在需要顯示pdf的地方調用vue的$showPDF方法即可。

效果顯示(手機瀏覽器驗證顯示正常):

不過需要注意一點問題是:

pdf.js不能處理跨域文件和本地文件,所以本地調試的時候應該請求服務器的文件,如果請求的是遠程服務器,存在跨域,那就需要在config/index.js中配置一下代理:

// ...proxyTable: { '/media': {  target: 'https://xxxx.cn', // 換成正確的服務器域名  changeOrigin: true,  pathRewrite: {   '^/media': '/media'  } }}// ...

然后在使用的地方填相對路徑即可:

// ...mounted () { this.$showPDF('/media/up/2018/3/9/494079c7ec333bd371798dd0a73c0a0b.pdf')}// ...

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩国产影院| 亚洲女人天堂av| 国产不卡在线观看| 欧美一级片一区| 91av在线免费观看视频| 国产欧美亚洲视频| 亚洲国产一区二区三区在线观看| 亚洲一区二区少妇| 亚洲第一福利在线观看| 性夜试看影院91社区| 日本在线观看天堂男亚洲| 亚洲二区中文字幕| 亚洲精品电影网| 成人性生交xxxxx网站| 亚洲激情国产精品| 久久久久久久久亚洲| 欧洲成人午夜免费大片| 欧美超级免费视 在线| 97视频在线观看视频免费视频| 亚洲老板91色精品久久| 国产美女主播一区| 欧美在线观看网址综合| www.欧美三级电影.com| 欧美网站在线观看| 97超视频免费观看| 欧美日韩精品在线视频| 黑人欧美xxxx| 国产一区二区久久精品| 亚洲欧美国产日韩中文字幕| 欧美裸体xxxxx| 欧美成人午夜激情在线| 亚洲欧美一区二区三区四区| 国产精品九九久久久久久久| 国产深夜精品福利| 日韩av在线网站| 欧美一区二区视频97| 免费91麻豆精品国产自产在线观看| 成人动漫网站在线观看| 欧美日韩国产成人在线观看| 中文字幕精品www乱入免费视频| 国产欧美日韩免费| 久久成人综合视频| 亚洲人午夜色婷婷| 亚洲最大激情中文字幕| 日韩亚洲欧美中文在线| 国产精品一久久香蕉国产线看观看| 羞羞色国产精品| 深夜成人在线观看| 亚洲综合色av| 97精品伊人久久久大香线蕉| 午夜精品一区二区三区在线播放| 国产午夜精品一区理论片飘花| 亚州成人av在线| 中文字幕亚洲无线码a| 久久久噜噜噜久久中文字免| 欧美精品videossex性护士| 日本aⅴ大伊香蕉精品视频| 中文字幕亚洲综合久久| 色天天综合狠狠色| 欧美激情伊人电影| 欧美精品日韩三级| 97视频在线观看免费高清完整版在线观看| 91福利视频网| 午夜精品视频在线| 久久精品99久久久香蕉| xxxxx成人.com| 国产香蕉97碰碰久久人人| 97在线精品国自产拍中文| 国产精品va在线播放| 精品露脸国产偷人在视频| 亚洲人成网在线播放| 成人黄色短视频在线观看| 亚洲人成人99网站| 国产精品日日做人人爱| 91网站在线看| 亚洲国产古装精品网站| 久久天堂av综合合色| 亚洲综合在线小说| 国产精品一区二区三| 97视频在线观看免费高清完整版在线观看| 中文亚洲视频在线| 91成人免费观看网站| 欧美高清视频免费观看| 川上优av一区二区线观看| 中文字幕视频在线免费欧美日韩综合在线看| 国产成人精品久久二区二区| 欧美成人激情在线| 亚洲欧美国产精品久久久久久久| 亚洲男人天堂久| 亚洲人成亚洲人成在线观看| 欧美激情在线一区| 国产精品成人va在线观看| 欧美视频在线观看免费| 在线免费观看羞羞视频一区二区| 自拍偷拍亚洲在线| 久久精品国产一区二区电影| 亚洲性线免费观看视频成熟| 日韩中文字在线| 亚洲欧美中文在线视频| 欧美成aaa人片免费看| 国产精品视频精品视频| 欧美高清视频在线观看| 尤物九九久久国产精品的特点| 欧美丰满老妇厨房牲生活| 国产一区二区三区在线播放免费观看| 亚洲欧洲成视频免费观看| 51久久精品夜色国产麻豆| 欧美一级在线亚洲天堂| 久久av中文字幕| 欧美在线视频一区二区| 亚洲精品白浆高清久久久久久| 午夜精品福利在线观看| 久久精品国产2020观看福利| 91高清视频在线免费观看| 欧美亚洲日本黄色| 久久久久久国产免费| 欧美精品在线观看91| 欧美老女人xx| 国产精品1234| 亚洲欧洲视频在线| 国产+成+人+亚洲欧洲| 欧美在线影院在线视频| 国产国产精品人在线视| 国产日韩精品入口| 国内揄拍国内精品少妇国语| 成人做爰www免费看视频网站| 色悠久久久久综合先锋影音下载| 国产午夜精品一区理论片飘花| 欧美午夜精品伦理| 97人人做人人爱| 亚洲影院在线看| 国产午夜一区二区| 92国产精品久久久久首页| 福利视频一区二区| 久久久久久久久久久久久久久久久久av| 国产精品手机播放| 欧美影院在线播放| 成人福利免费观看| 日本成人黄色片| 中文字幕日韩av| 亚洲精品日韩在线| 亚洲理论片在线观看| 日韩二区三区在线| 亚洲精品一区二三区不卡| 欧美精品福利在线| 成人免费观看网址| 日本成人精品在线| 91久久久在线| 亚洲社区在线观看| 国产精品中文字幕久久久| 欧美第一黄网免费网站| 欧美日韩综合视频网址| 亚洲欧美中文字幕| 欧美日韩亚洲高清| 国产欧美日韩视频| 91国产视频在线播放| 精品人伦一区二区三区蜜桃免费| 91国偷自产一区二区三区的观看方式| 国产精品福利小视频| 亚洲精品欧美一区二区三区| 欧美一级黄色网| 精品成人久久av| 51视频国产精品一区二区| 亚洲最大成人在线|