vue 之 pdf预览

加载包:pdfvuer

npm i pdfvuer

引入:

import pdfvuer from ‘pdfvuer‘

组件代码(简化版):

  1 <template>
  2   <div id="pdfvuer">
  3     <div ref="buttons" id="buttons">
  4       <a class="item" @click="page > 1 ? page-- : 1">
  5         <i class="left chevron icon"></i>
  6         上一页
  7       </a>
  8       <a class="item" @click="page < numPages ? page++ : 1">
  9         下一页
 10         <i class="right chevron icon"></i>
 11       </a>
 12     </div>
 13     <div style="width: 800px;margin:20px auto;">
 14       <pdf :src="pdfdata" v-for="i in numPages" :key="i" :id="i" :page="i"
 15            :scale.sync="scale" style="width:100%;">
 16         <template slot="loading">
 17           loading content here...
 18         </template>
 19       </pdf>
 20     </div>
 21   </div>
 22 </template>
 23
 24 <script>
 25 import pdfvuer from ‘pdfvuer‘
 26 export default {
 27   components: {
 28     pdf: pdfvuer
 29   },
 30   data () {
 31     return {
 32       page: 1,
 33       numPages: 0,
 34       pdfdata: undefined,
 35       errors: [],
 36       scale: ‘page-width‘
 37     }
 38   },
 39   computed: {
 40     formattedZoom () {
 41       return Number.parseInt(this.scale * 100)
 42     }
 43   },
 44   mounted () {
 45     this.getpdfUrl()
 46   },
 47   watch: {
 48     show: function (s) {
 49       if (s) {
 50         this.getpdfUrl()
 51       }
 52     },
 53     page: function (p) {
 54       if (window.pageYOffset <= this.findPos(document.getElementById(p)) || (document.getElementById(p + 1) && window.pageYOffset >= this.findPos(document.getElementById(p + 1)))) {
 55         document.getElementById(p).scrollIntoView()
 56       }
 57     }
 58   },
 59   methods: {
 60     getPdf () {
 61       let self = this
 62       self.pdfdata = pdfvuer.createLoadingTask(‘./a.pdf‘)
 63       self.pdfdata.then(pdf => {
 64         self.numPages = pdf.numPages
 65         window.onscroll = function () {
 66           changePage()
 67           stickyNav()
 68         }
 69
 70         var sticky = this.$refs.buttons.offsetTop
 71
 72         // Add the sticky class to the self.$refs.nav when you reach its scroll position. Remove "sticky" when you leave the scroll position
 73         function stickyNav () {
 74           if (window.pageYOffset >= sticky) {
 75             this.$refs.buttons.classList.remove(‘hidden‘)
 76           } else {
 77             this.$refs.buttons.classList.add(‘hidden‘)
 78           }
 79         }
 80
 81         function changePage () {
 82           var i = 1, count = Number(pdf.numPages)
 83           do {
 84             if (window.pageYOffset >= self.findPos(document.getElementById(i)) &&
 85               window.pageYOffset <= self.findPos(document.getElementById(i + 1))) {
 86               self.page = i
 87             }
 88             i++
 89           } while (i < count)
 90           if (window.pageYOffset >= self.findPos(document.getElementById(i))) {
 91             self.page = i
 92           }
 93         }
 94       }).catch(res => {})
 95     },
 96     findPos (obj) {
 97       return obj.offsetTop
 98     }
 99   }
100 }
101 </script>
102
103 <style lang="scss" scoped>
104   #pdfvuer{
105     background: #ccc;
106     overflow: auto;
107     height: 100%;
108     position: relative;
109     #buttons{
110       position: fixed;
111       right: calc(50% - 500px);
112       bottom: 50px;
113       z-index: 100000;
114       a{
115         border:2px solid #000;
116         padding: 20px 10px;
117         display: block;
118         background: rgba(0,0,0,0.5);
119         border-radius: 10px;
120         color:#fff;
121         margin-top: 10px;
122       }
123     }
124   }
125   /* Page content */
126   .content {
127     padding: 16px;
128   }
129 </style>
130 <style>
131   .page{
132     margin-bottom: 15px;
133   }
134 </style>

注意事项:

pdf文件需要放在public文件下

钻研不易,转载请注明出处......

原文地址:https://www.cnblogs.com/s313139232/p/12155826.html

时间: 2024-10-09 01:46:44

vue 之 pdf预览的相关文章

Pdf预览功能实现(asp.net)

asp.net中使用 1.pdf预览功能实现的插件是pdfjs-1.5.188-dist //引入插件中相关的文件以及jquery文件 @section css{ <link rel="stylesheet" href="~/pdfjs-1.5.188-dist/web/viewer.css"> <script src="~/pdfjs-1.5.188-dist/web/compatibility.js"></scr

PDF预览之PDFObject.js总结

get from:PDF预览之PDFObject.js总结 PDFObject.js - 将PDF嵌入到一个div内,而不是占据整个页面(要求浏览器支持显示PDF,不支持,可配置PDF.js来实现) 官网: https://pdfobject.com/ github地址: https://github.com/pipwerks/PDFObject 支持: PDFObject 2.0不向后兼容1.0版本,针对现代浏览器设计,支持Chrome, Firefox, Safari (OS X and i

vue文件流转换成pdf预览(pdf.js+iframe)

参考文档:https://www.jianshu.com/p/242525315bf6 PDFJS: https://mozilla.github.io/pdf.js/     支持获取文件流到客户端,生成blob地址预览 ViewerJS: http://viewerjs.org/   预览pdf文件,其pdf文件只能url地址 Vue-pdf https://github.com/FranckFreiburger/vue-pdf 会出现空白页( 推荐使用iframe方法 ) 无论从功能.兼容

pdf预览-js版本

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>js插件让你的网站支持在线预览pdf功能</title>    <script src="http://www.lanrenzhijia.com/ajaxjs/pdfobject.js"></script>

[转]PDF预览插件PDFObject.js

本文转自:http://pdfobject.com/index.php When possible, use standardized HTML markup and avoid JavaScript In an ideal world, you would always embed your PDF files using an <object> element hard-coded in your HTML markup. Why? For starters, avoiding JavaS

fis3+vue+pdf.js制作预览PDF文件或其他

人生第一篇博客,的确有点紧张,但有些许兴奋,因为这对于我来说应该是一个好的开始,以此励志在技术的道路上越走越远. 看过了多多少少的技术博客,给自己带来了很多技术上的收获,也因此在想什么时候自己也可以赠人玫瑰,手留余香呢?终于时候到了...哈哈 首先容我吐槽一番,在大前端的背景下各种框架层出不穷,相对的各种打包工具也应用而生,要说最火的就是webpack了,用户多所以社区相对活跃,团队维护,网上也有各种各样的问题可以轻易搜到从而解决自己的遇到的各种奇葩问题,所以90%的项目都会采用webpack来

动态PDF在线预览

实战动态PDF在线预览及带签名的PDF文件转换 开篇语: 最近工作需要做一个借款合同,公司以前的合同都是通过app端下载,然后通过本地打开pdf文件,而喜欢创新的我,心想着为什么不能在线H5预览,正是这个想法,说干就干,实践过程总是艰难的,折腾了3,4天的时间,熬了两个凌晨3,4点,其中的艰辛.以及各中的曲折.压力只有自己能体会,项目上线后心里想着我要写一篇博文,一是总结一下经验,其次就是和大家分享自己这一路走来的的心得体会,欢迎吐槽!,废话不多说,来点干货! PDF在线预览实现: 8个实现在线

Office在线预览及PDF在线预览的实现方式大集合

一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office2007以上版本的一个PDF插件SaveAsPDFandXPS.exe可以导出PDF文件,然后再利用免费的swftools.exe工具生成swf格式的Flash文件,网页中加载flexpaper免费开源工具(有广告)实现Flash文件的预览.优点:1.有效的保护的源文件及文件的复制,不可复制也是缺点.2.源码是自己的,版权有保证.缺点:1.服务器上必须安装Office软件.2.导出PDF文件本身是个

Asp.net实现直接在浏览器预览Word、Excel、PDF、Txt文件(附源码)

http://www.cnblogs.com/gossip/p/3473024.html Asp.net实现直接在浏览器预览Word.Excel.PDF.Txt文件(附源码) 功能说明 输入文件路径,在浏览器输出文件预览信息,经测试360极速(Chrome).IE9/10.Firefox通过 分类文件及代码说明  DemoFiles 存放可测试文件 Default.aspx  启动页 ExcelPreview.cs  Excel预览类 public static void Priview(Sys