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#. ...
随机推荐
- 一次XGBoost性能优化-超线程影响运算速度
一.问题背景 一个朋友在使用 XGBoost 框架进行机器学习编码,他们的一个demo, 在笔记本的虚拟机(4核)运行的时候,只要8s, 但是在一个64核128G 的物理机上面的虚拟机去跑的时候,发现 ...
- 手把手教你 Docker搭建mysql并配置远程访问
一.使用docker部署mysql 1.在docker中搜索要安装的mysql docker search mysql (这步其实可以跳过O(∩_∩)O哈哈~) 2.拉取mysql镜像 docker ...
- Myers差分算法的理解、实现、可视化
作者:Oto_G QQ: 421739728 目录 简介 基础 差异的描述 好的差异比较 算法介绍 名词解释 两个定理 绘制编辑图 感谢 简介 本文章对Myers差分算法(Myers Diff Alg ...
- Docker-Compose实现Mysql主从
1. 简介 通过使用docker-compose 搭建一个主从数据库,本示例为了解耦 将两个server拆分到了两个compose文件中,当然也可以放到一个compose文件中 演示mysql版本:5 ...
- 2021.05.05【NOIP提高B组】模拟 总结
T1 给你一棵树,要求增加最少的边权是的从根到每一个叶子的长度相等 不能改变原有的最大长度 这是一个贪心:尽可能往深度小的边增加 先预处理出 \(mx_i\) 表示从 \(i\) 到叶子的最大长度 然 ...
- 开发工具-SVG占位图片
更新日志 2022年6月10日 初始化链接. https://toolb.cn/imageholder
- 眼球3D可视化解决方案——案例详解
医疗器械行业伴随着人类健康需求的增长而不断发展,是名副其实的朝阳行业,也是全球发达国家竞相争夺的领域. 一方面,行业门槛高,集中度低,外资企业挤占市场空间成了我国所有医疗器械行业入局者面临的共同挑战. ...
- Vue回炉重造之图片加载性能优化
前言 图片加载优化对于一个网站性能好坏起着至关重要的作用.所以我们使用Vue来操作一波.备注 以下的优化一.优化二栏目都是我自己封装在Vue的工具函数里,所以请认真看完,要不然直接复制的话,容易出错的 ...
- SAP Web Dynpro-版本管理
您可以使用版本管理来管理对象的旧版本,比较版本,也可以重置它们. 在版本管理中,您可以存储ABAP开发对象的不同版本. 在ABAP工作台中,您可以比较不同版本的- 视图 视窗 控制器 您也可以存储对象 ...
- 使用MySqlBulkLoader批量插入数据
最近在项目中遇到插入几万.几十万.几百万的数据到MYSQL数据库,使用EF插入会发现插入速度非常慢的场景, 数据量非常大时EF插入需要几十分钟,甚至几个小时,这样子的速度肯定不是我们所期望的. 后面经 ...