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">
<pdf
: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: {
pdf
},
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>

我的掘金链接  https://juejin.cn/post/7132732171466309662

vue-pdf结合alloyfinger手势缩放旋转上下翻页pdf文件的更多相关文章

  1. linux less-分屏上下翻页浏览文件内容

    博主推荐:获取更多 linux文件内容查看命令 收藏:linux命令大全 less命令的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more ...

  2. 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 ...

  3. linux中使sqlplus能够上下翻页

    安装包链接:https://pan.baidu.com/s/1WsQTeEQClM88aEqIvNi2ag 提取码:s241  rlwrap-0.37-1.el6.x86_64.rpm 和 rlwra ...

  4. 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 ...

  5. linux vi编辑器中,如何通过快捷键上下翻页?

    需求说明: 之前在vi的时候,如果想看下一页,就直接按住 ↓ 这个箭头一直翻,现在觉得有些麻烦, 就找了下上,下翻页的快捷方式.在此记录下. 记录: 1.向下翻页快捷键(下一页):Ctrl + f 2 ...

  6. rlwrap插件,实现sqlplus上下翻页

    oracle在Linux下,sqlplus中不能上下翻,最主要我经常打错字!嘿嘿 01.下载 RPM  :http://rpmfind.net/linux/rpm2html/search.php?qu ...

  7. iOS实现pdf文件预览,上下翻页、缩放,读取pdf目录

    最近有个朋友想做一个pdf预览,要求能够上下滑动翻页.带缩放.目录跳转功能. 因为之前我只做过简单的预览,那时直接用uiwebview实现的,这次找了下资料,发现一个比较好的库. 其原理实现: 自定义 ...

  8. javascript 手势缩放 旋转 拖动支持:hammer.js

    原文: https://cdn.rawgit.com/hammerjs/hammer.js/master/tests/manual/visual.html /*! Hammer.JS - v2.0.4 ...

  9. 用rlwrap使sqlplus可以上下翻页

    下载rlwrap-0.30 从光盘上安装readline-devel和readline 安装rlwrap: #tar -zxvf rlwrap-0.30.tar.gz#cd rlwrap-0.30#. ...

随机推荐

  1. 关于『进击的Markdown』:第五弹

    关于『进击的Markdown』:第五弹 建议缩放90%食用 路漫漫其修远兮,吾将上下而求索.  我们要接受Mermaid的考验了呢  Markdown 语法真香(一如既往地安利) ( 进击吧!Mark ...

  2. MVC - forward 和 redirect 的区别

    MVC - forward 和 redirect 的区别 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服 ...

  3. 前端3JS1

    内容概要 溢出属性 定位属性 z-index JavaScript简介 变量与注释 数据类型 内容详情 溢出属性 # 文本内容超出了标签的最大范围 overflow: hidden; 接隐藏文本内容 ...

  4. 且看这个Node全栈框架,实现了个Cli终端引擎,可无限扩充命令集

    背景介绍 一般而言,大多数框架都会提供Cli终端工具,用于通过命令行执行一些工具类脚本 CabloyJS提供的Cli终端工具却与众不同.更确切的说,CabloyJS提供的是Cli终端引擎,由一套Cli ...

  5. JavaScript写倒计时

    在网页中,特别是电商网站中,倒计时的出现频率很高,接下来给大家介绍一下怎么用JavaScript写一个倒计时.代码如下: 首先我们通过Date构造函数的方法创建一个倒计时的结束的时间.并将其转换为毫秒 ...

  6. 华为HMS Core携手超图为三维GIS注入新动能

    6月30日,在2022(第五届)GIS软件技术大会GIS基础软件新技术板块论坛上,华为联合超图推出了基于HMS Core 3D Engine开发的高保真三维GIS插件,通过3D渲染技术助力三维GIS实 ...

  7. lerna学习笔记

    lerna简介 Lerna 是一个优化基于Git+npm的多package项目的项目管理工具,lerna是架构优化的产物,项目复杂度提升后,架构优化的主要目标是以提高ROI为核心的 lerna的主要功 ...

  8. CTCLoss如何使用

    CTCLoss如何使用 目录 CTCLoss如何使用 什么是CTC 架构介绍 一个简单的例子 CTC计算的推导 总概率\(p(z|x)\) 路径的含义 路径概率\(p(\pi|x)\) 什么是\(\m ...

  9. 安卓fastboot刷机、刷magisk、aidlux备忘

    环境就不多说了,网上一堆教程,我只在这边简单记录一下,以小米手机为例 刷机 解锁bootloader PC上配置好adb.fastboot,也就是platform-tools工具包加入系统变量,在命令 ...

  10. Root用户无法使用Tab补齐解决

    1. sudo vim /etc/bash.bashrc 2.取消以下注释 #if [ -f /etc/bash_completion ]; then # . /etc/bash_completion ...