vue-pdf结合alloyfinger手势缩放旋转上下翻页pdf文件
1. demo线上链接 vuepdf在线demo
2. demo图:

3. 话不多说,上代码:
安装vue-pdf插件: npm i vue-pdf
安装vue-pdf报错catch的可以看我这篇文章:
复制代码 www.cnblogs.com/520BigBear/…
AlloyFinger.js传送门 (gitee.com/bigbear520/…)
<div class="pdf">
<div class="pdf-tab">
<div class="btn-def btn-pre" @click.stop="prePage">上一页</div>
<div class="btn-def btn-next" @click.stop="nextPage">下一页</div>
</div>
<!-- loadedRatio==1说明pdf加载完成 -->
<div class="tips" v-if="loadedRatio == 1">
{{ pageNum }}/{{ pageTotalNum }}
</div>
<div class="tips" v-else>加载中请稍后...</div>
<!-- vue-pdf显示区域 -->
<div class="pdfbox">
:style="{
transform:
'translate(' +
posX +
'px,' +
posY +
'px) translateZ(0px) scale(' +
dis +
') rotate(' +
angle +
'deg)'
}"
id="pdfPreview"
ref="pdf"
:src="pdfUrl"
:page="pageNum"
@progress="loadedRatio = $event"
@num-pages="pageTotalNum = $event"
@link-clicked="page = $event"
>
</pdf>
</div>
</div>
</template> <script>
import pdf from 'vue-pdf'
import AlloyFinger from '../libs/alloyfinger'
// vue-pdf说明
// 1.src是pdf文件的路径,可以是相对地址、绝对地址、网址
// 2.:page当前pdf显示的页码,默认是1
// 3.@progress是pdf页面的加载进度(这个不是很懂)
// 4.@loaded pdf加载的时候执行
// 5.@num-page监听pdf的加载,获取pdf总页数
// 6.@page-loaded是pdf加载成功的回调(应该是范围换页后的页码)
export default {
components: {
},
data() {
return {
posX: 0,
posY: 0,
dis: 1,
angle: 0, pdfUrl:
'http://storage.xuetangx.com/public_assets/xuetangx/PDF/PlayerAPI_v1.0.6.pdf',
pageNum: 1, //当前页
pageTotalNum: 1, //总页数
// 加载进度
loadedRatio: 0 // 加载进度 loadedRatio==1 加载完成
}
},
mounted() {
this.getData() //初始化手势数据
},
methods: {
getData() {
let that = this
let element = document.getElementById('pdfPreview') // 指定元素
this.af = new AlloyFinger(element, {
rotate: function (evt) {
console.log('实现旋转')
that.angle += evt.angle
},
pinch: function (evt) {
console.log('实现缩放')
if (evt.zoom < 0.7) return // 设置最小缩放
that.dis = evt.zoom
},
pressMove: function (evt) {
console.log('实现移动')
that.posX += evt.deltaX
that.posY += evt.deltaY
},
tap: function (evt) {
console.log('单击')
//点按触发
},
doubleTap: function (e) {
console.log('双击')
//双击屏幕触发
},
longTap: function (e) {
console.log('长按')
//长按屏幕750ms触发
},
swipe: function (e) {
//e.direction代表滑动的方向
console.log('swipe' + e.direction)
}
})
},
// 上一页下一页重置手势数据
resetData() {
this.posX = 0
this.posY = 0
this.dis = 1
this.angle = 0
},
// 上一页
prePage() {
this.resetData()
var p = this.pageNum
p = p > 1 ? p - 1 : this.pageTotalNum
this.pageNum = p
},
// 下一页
nextPage() {
this.resetData()
var p = this.pageNum
p = p < this.pageTotalNum ? p + 1 : 1
this.pageNum = p
}
}
}
</script>
<style>
body {
margin: 0;
padding: 0;
/* 防止页面被拖动 */
overflow: hidden;
}
</style>
<style scoped>
.pdf {
width: 100vw;
height: 100vh;
background: #ccc;
}
.pdf-tab {
display: flex;
flex-wrap: wrap;
padding: 0 0.4rem;
justify-content: space-between;
}
.pdf-tab .btn-def {
border-radius: 0.2rem;
font-size: 0.98rem;
height: 1.93333rem;
width: 6.4rem;
text-align: center;
line-height: 1.93333rem;
background: #409eff;
color: #fff;
margin-bottom: 1.26667rem;
}
/* 限定放大hidden范围 */
.pdfbox {
overflow: hidden;
padding: 0.2rem;
box-sizing: border-box;
}
</style>
vue-pdf结合alloyfinger手势缩放旋转上下翻页pdf文件的更多相关文章
- linux less-分屏上下翻页浏览文件内容
博主推荐:获取更多 linux文件内容查看命令 收藏:linux命令大全 less命令的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more ...
- rlwrap-0.37.tar.gz实现sqlplus上下翻页
1.上传rlwrap-0.37.tar.gz到linux 2.解压rlwrap-0.37.tar.gz [root@node1 mnt]# tar zxvf rlwrap-0.37.tar.gz [r ...
- linux中使sqlplus能够上下翻页
安装包链接:https://pan.baidu.com/s/1WsQTeEQClM88aEqIvNi2ag 提取码:s241 rlwrap-0.37-1.el6.x86_64.rpm 和 rlwra ...
- Oracle管理监控之rlwrap-0.37.tar.gz实现sqlplus上下翻页
1.上传rlwrap-0.37.tar.gz到linux 2.解压rlwrap-0.37.tar.gz [root@node1 mnt]# tar zxvf rlwrap-0.37.tar.gz [r ...
- linux vi编辑器中,如何通过快捷键上下翻页?
需求说明: 之前在vi的时候,如果想看下一页,就直接按住 ↓ 这个箭头一直翻,现在觉得有些麻烦, 就找了下上,下翻页的快捷方式.在此记录下. 记录: 1.向下翻页快捷键(下一页):Ctrl + f 2 ...
- rlwrap插件,实现sqlplus上下翻页
oracle在Linux下,sqlplus中不能上下翻,最主要我经常打错字!嘿嘿 01.下载 RPM :http://rpmfind.net/linux/rpm2html/search.php?qu ...
- iOS实现pdf文件预览,上下翻页、缩放,读取pdf目录
最近有个朋友想做一个pdf预览,要求能够上下滑动翻页.带缩放.目录跳转功能. 因为之前我只做过简单的预览,那时直接用uiwebview实现的,这次找了下资料,发现一个比较好的库. 其原理实现: 自定义 ...
- javascript 手势缩放 旋转 拖动支持:hammer.js
原文: https://cdn.rawgit.com/hammerjs/hammer.js/master/tests/manual/visual.html /*! Hammer.JS - v2.0.4 ...
- 用rlwrap使sqlplus可以上下翻页
下载rlwrap-0.30 从光盘上安装readline-devel和readline 安装rlwrap: #tar -zxvf rlwrap-0.30.tar.gz#cd rlwrap-0.30#. ...
随机推荐
- 2021年第十二届蓝桥杯javaA组省赛部分题目
试题 D: 路径 本题总分:10 分 [问题描述] 小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图 中的最短路径. 小蓝的图由 2021 个结点组成,依次编号 1 至 2021. 对 ...
- 论文解读(GraphSMOTE)《GraphSMOTE: Imbalanced Node Classification on Graphs with Graph Neural Networks》
论文信息 论文标题:GraphSMOTE: Imbalanced Node Classification on Graphs with Graph Neural Networks论文作者:Tianxi ...
- Spark读取elasticsearch数据指南
最近要在 Spark job 中通过 Spark SQL 的方式读取 Elasticsearch 数据,踩了一些坑,总结于此. 环境说明 Spark job 的编写语言为 Scala,scala-li ...
- Caller 服务调用 - Dapr
前言 上一篇我们讲了使用HttpClient的方式调用,那么如果我们现在需要更换为通过dapr实现服务调用,我们需要做哪些事情呢? Caller.Dapr 入门 如果我们的项目原本使用的是Caller ...
- Python基础学习笔记_01
Python的介绍 1989年圣诞节创造,1991年正真出生,目前更新到3.0版本 具有最庞大的"代码库",人称"胶水语言",无所不能 一种跨平台的计算机程序设 ...
- TypeScript(7)泛型
泛型 指在定义函数.接口或类的时候,不预先指定具体的类型,而在使用的时候再指定具体类型的一种特性. 引入 下面创建一个函数, 实现功能: 根据指定的数量 count 和数据 value , 创建一个包 ...
- WPF开发随笔收录-本地日志LogUtil类
一.前言 生活中的日志是记录你生活的点点滴滴,让它把你内心的世界表露出来,更好的诠释自己的内心世界.而在开发者眼中的日志是我们排除问题的第一手资料,项目中的程序上线之后,一旦发生异常,第一件事就是先去 ...
- Maven-打包jar指定main函数所在类的一个例子
问题描述:maven打包jar时,由于带main方法的类没有被加入manifest中,导致执行java -jar mvn-jar-1.0-SNAPSHOT.jar时,会提示没有主清单属性. 解决办法: ...
- zabbix通过invoke调用监控服务可用性
1. 通过脚本判断线上服务是否可用 telnet 127.0.0.1 端口 #线上调用的是使用的dubbo端口 通过invoke 抓取返回的code值,脚本如下 #返回code:0则视为正常,返回其他 ...
- Unsupervised Person Re-identification by Soft Multilabel Learning
简介: 这是一篇19年CVPR的跨域无监督Re-ID论文,在Market1501和DukeMTMC-reID上分别达到了67.7%和67.1%的rank-1精度,算是一篇将准确度刷得比较高的论文了,在 ...