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#. ...
随机推荐
- Java开发学习(二)----IOC、DI入门案例
一.IOC入门案例 1.1 思路分析 (1)Spring是使用容器来管理bean对象的,那么管什么? 主要管理项目中所使用到的类对象,比如(Service和Dao) (2)如何将被管理的对象告知IOC ...
- Typecho博客转移服务器,数据备份.
目录 Typecho博客转移服务器,数据备份. 简述操作(有基础的mjj看这个简述就可以了.) 详细步骤(建议小白来看, 已经在很多详细方面进行说明了.) 备份篇 备份导入与数据库转移篇 重新部署ty ...
- python中collections.OrderedDict()
import collections #from collections import OrderededDict my_orderDict=collections.OrderedDict(house ...
- 【Spring】事务的执行原理(二)
前置知识 事务的执行步骤如下: 获取事务管理器 创建事务 执行目标方法 捕捉异常,如果出现异常进行回滚 提交事务 public abstract class TransactionAspectSupp ...
- Kubernetes-23:详解如何将CPU Manager做到游刃有余
k8s中为什么要用CPU Manager? 默认情况下,kubelet 使用CFS配额来执行 Pod 的 CPU 约束.Kubernetes的Node节点会运行多个Pod,其中会有部分的Pod属于CP ...
- Spring框架系列(5) - 深入浅出SpringMVC请求流程和案例
前文我们介绍了Spring框架和Spring框架中最为重要的两个技术点(IOC和AOP),那我们如何更好的构建上层的应用呢(比如web 应用),这便是SpringMVC:Spring MVC是Spri ...
- 合宙Air32F103CBT6开发板上手报告
2022年6月初合宙新上市了 Air32F103 系列 MCU, 市面上 STM32F103 的克隆军队又增加了新的一员. 这次不知道是哪家的贴牌, 分 Air32F103CBT6 和 Air32F1 ...
- UiPath文本操作Get Full Text的介绍和使用
一.Get Full Text操作的介绍 使用Get Full Text(获取全文本 )屏幕抓取方法从指示的UI元素中提取字符串及其信息 二.Get Full Text在UiPath中的使用 1. 打 ...
- Python教程:执行cmd命令
我们通常可以使用os模块的命令进行执行cmd 方法一:os.system def system(*args, **kwargs): # real signature unknown "&qu ...
- STM32 移植 RT-Thread 标准版的 FinSH 组件
一.移植准备 开发版STM32F10xC8T6 准备好移植RT-Thread的移植工程 没动手移植过RT-Thread的小伙伴,可以看RT-Thread移植到stm32 我这里是将控制台信息打印到串口 ...