vue pdf预览插件(Vue-pdf实现在线预览PDF文件)
类别:编程学习 浏览量:1293
时间:2022-03-28 13:48:11 vue pdf预览插件
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> <li> <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> <li> <pdf :src="src" :page="pdfPage" @num-pages="pageCount = $event" @page-loaded="pdfPage = $event" style="display: inline-block; width: 100%"></pdf> </li> </el-dialog> </li> </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.pdfPage p = p > 1 ? p-1 : this.pageCount this.pdfPage = p }, nextPage(){ let p = this.pdfPage p = p < this.pageCount ? p+1 : 1 this.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 function at 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中的定时函数(vue计时器的实现方法)
- vue-cli请求数据的方式(vue-cli配置使用Vuex的全过程记录)
- vue导出动态的excel功能(vue中如何下载excel流文件及设置下载文件名)
- vue编程加入购物车(vuex实现简单的购物车功能)
- vue3 响应式的实现过程(Vue3.x使用mitt.js进行组件通信)
- vue找不到水印设置(Vue使用自定义指令实现页面底部加水印)
- vuejs图片缩放裁切(vue+js点击箭头实现图片切换)
- vue移动端页面不能上下滑动(vue移动端实现左滑编辑与删除的全过程)
- vue切换图片效果(Vue.js实现图片切换功能)
- vue跨域代理怎么写(解决vue $http的get和post请求跨域问题)
- vue基础语法对象(浅析从面向对象思维理解Vue组件)
- vue加element ui开发项目(Vue+ElementUI之Tree的使用方法)
- vuex数据持续化(Vuex数据持久化实现的思路与代码)
- vue中的watch属性(vue Watch和Computed的使用总结)
- vue 如何执行动态js(如何利用vue.js实现拖放功能)
- vue 设置头部可以左右滑动(vue实现左右滑动效果实例代码)
- 2021款起亚霸锐到店了 更换车标,竞争宝马X5有戏吗(2021款起亚霸锐到店了)
- 新款起亚霸锐实拍,比普拉多气派,配3.0T V6,引入国内或许能大卖(新款起亚霸锐实拍)
- ()
- 张勇 阿里新任掌门人(阿里新任掌门人)
- 毛戈平全国第一柜花落银泰 高端国货迎来 高光 时刻(毛戈平全国第一柜花落银泰)
- 14岁丧父 20岁丧母,从苦难走向辉煌的银泰创始人沈国军(14岁丧父20岁丧母从苦难走向辉煌的银泰创始人沈国军)
热门推荐
- jupyternotebook搭建和使用(Jupyter Notebook运行JavaScript的方法)
- redhat6.5安装mysql(Redhat7.3安装MySQL8.0.22的详细教程二进制安装)
- sql2008提供身份认证模式(SqlServer2000+ 身份证合法校验函数的示例代码)
- mysql的decimal类型(MySQL数据类型DECIMAL用法详解)
- 常用SQL查询语句
- view组件讲解(浅谈移动端中的视口viewport的具体使用)
- sql server证书配置(SQL Server Alwayson创建代理作业的注意事项详解)
- js 图片编辑处理库(javascript input图片上传及预览,FileReader预览图片)
- 阿里云服务器端口和ip(阿里云服务器如何添加安全通信端口?)
- VPS搭建离线下载服务器(后网盘时代)(VPS搭建离线下载服务器后网盘时代)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9