蒙层嵌套pdf以及连接后台
一、在本地浏览pdf(直接将element-dialog 和 iframe相结合)需要将要浏览的pdf放入static文件夹下面
<el-button type="text" @click="dialogVisible = true">点击打开 Dialog</el-button>
<el-dialog
title="提示"
:visible.sync="dialogVisible">
<iframe src="../../static/文件名.pdf" width="90%" height="600px"></iframe>
</el-dialog>
在data中直接定义 dialogVisible
data() {
return {
dialogVisible: false
}
}
以上方法便可直接在本地查看pdf,无需添加pdf.js
二、通过后台传来的数据,展示pdf
在展示之前,要先接收到后台的axios的数据
1. api.js中定义
export const decision = data => ajaxHttp('/home/dynamic/decision/page', data, 'POST')
2.要接受的页面引入
import { decision } from '../api/api'
3.开始接收后台
async getList () {
this.loading = true
let params = {
type: 1
}
const res = await decision(params)
if (res.data.code === 1) {
this.list = res.data.data
console.log(this.list)
} else {
this.$message({type: 'success', message: res.data.msg})
}
this.listNumber = this.list.length
this.loading = false
},
接收后不要忘记在mounted里面定义如何开始
mounted () {
this.getList()
}
4.定义一下显示出来的和点击事件的位置
<div v-for="item in list" :key="item.id" @click="clickPDFfn(item.filePath1)">{{item.title}}</div>
5.定义el-dialog (定义之前要先引入,查看element.api)
<el-dialog
:visible.sync="otherDialogVisible"
width="80%"
center>
<span>
<canvas id="canvas1"></canvas>
<div class="foot" v-if='pdfDoc'>
<el-button class='left' v-if="pageNum>1" @click="onPrevPage">上一页</el-button>
<el-button class='right' v-if="pageNum<pdfDoc.numPages" @click="onNextPage">下一页</el-button>
</div>
</span>
</el-dialog>
6.写下如下方法
handleCurrentChange (val) {
this.currentPage = val
},
clickPDFfn (item) {
this.loading = true
this.otherDialogVisible = true
this.showPDF('http://compre-tj-api.gov.bbdtek.com/repository/readPDF?path=' + item)
},
showPDF (url) {
let _this = this
this.$pdf.getDocument(url).then(function (pdf) {
_this.pdfDoc = pdf
_this.$nextTick(() => {
_this.renderPage(1)
})
})
},
renderPage (num) {
this.pageRendering = true
let _this = this
this.pdfDoc.getPage(num).then(function (page) {
let canvas = document.getElementById('canvas1')
let ctx = canvas.getContext('2d')
let dpr = window.devicePixelRatio || 1
let bsr = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio ||
ctx.msBackingStorePixelRatio ||
ctx.oBackingStorePixelRatio ||
ctx.backingStorePixelRatio || 1
let ratio = dpr / bsr
let viewport = page.getViewport(screen.availWidth / page.getViewport(1).width)
canvas.height = viewport.height * ratio
canvas.width = viewport.width * ratio
canvas.style.width = '100%'
canvas.style.height = '100%'
ctx.setTransform(ratio, 0, 0, ratio, 0, 0)
// Render PDF page into canvas context
var renderContext = {
canvasContext: canvas.getContext('2d'),
viewport: viewport
}
var renderTask = page.render(renderContext)
// Wait for rendering to finish
renderTask.promise.then(function () {
_this.pageRendering = false
if (_this.pageNumPending !== null) {
// New page rendering is pending
this.renderPage(_this.pageNumPending)
_this.pageNumPending = null
}
})
})
},
queueRenderPage (num) {
console.log(num)
if (this.pageRendering) {
this.pageNumPending = num
} else {
this.renderPage(num)
}
},
onPrevPage () {
if (this.pageNum <= 1) {
return
}
this.pageNum--
this.queueRenderPage(this.pageNum)
},
onNextPage () {
if (this.pageNum >= this.pdfDoc.numPages) {
return
}
this.pageNum++
this.queueRenderPage(this.pageNum)
}
7.添加以下属性
data () {
return {
listNumber: 0,
loading: false,
otherDialogVisible: false,
pdfDoc: null,
pageNum: 1,
pageNumPending: null,
currentPage: 1,
list: []
}
}
通过以上方法即可连接后台直接浏览pdf
注: 后台pdf地址定义为 filePath1
蒙层嵌套pdf以及连接后台的更多相关文章
- MongoDB学习笔记~大叔框架实体更新支持N层嵌套~递归递归我爱你!
回到目录 递归递归我爱你!只要你想做,就一定能成功! 从一到二,从二到三,它是容易的,也是没什么可搞的,或者说,它是一种流水线的方式,而从三到十,从十到百,它注定要有一个质的突破,否则,它会把你累死, ...
- 设置 tableview 的背景颜色,总是有蒙层
1.给tableview添加了背景图片后, cell 总是有一层蒙层蒙着,很阴暗. 2.实验以后才发现背景图片被放在了 cell 的后面.
- css-dialog样式实现弹框蒙层全屏无需JS计算高度兼容IE7
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title> ...
- css 蒙层
蒙层 利用z-index: .mui-backdrop-other { position: fixed; top: 44px; right:; bottom:; left:; z-index:; ba ...
- iOS开发之实现半透明蒙层背景效果[用于下拉菜单页和分享页]
郝萌主倾心贡献.尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助.欢迎给作者捐赠.支持郝萌主,捐赠数额任意.重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下 ...
- appium-在页面点击一下处理(一般处理提示蒙层)
在写用例的时候,经常会发现某些第一次进去的页面会有一个蒙层提示.我们只有处理掉这个蒙层,才能继续我们的用例: 这边我们使用的是TouchAction的tap方法 TouchAction action ...
- vue 连接后台
在 index.js 中可以配置后台的地址:代理的方式: 这个文件在 config 中 proxyTable: { // 连接后台 '/api':{ target:"http://new.w ...
- 用Loading 加载中的整页加载来做蒙层
总结:遇见的bug 如何写一个蒙层 最初我打算的是自己写一个蒙层,但是写出来后, 不能够将整个屏幕全部覆盖.只能够覆盖 除[顶部导航] 和[左侧菜单栏] 于是我就使用了element-ui中的 [Lo ...
- vue 鼠标移入移出 列表蒙层展示
<template> <section class="base"> <ul> <li v-for="(item, index) ...
随机推荐
- shell之for和if实现批量替换多目录下的文件
问题背景: 生产环境的项目图片文件夹众多,每个项目都会有一个图片文件夹,现在要批量替换每个文件夹下的一张模板图片 如图,我们要替换每一个文件夹下的01.jpg shell 脚本 #/bin/bash ...
- FJOI2019 划水记
Day0 月考的余温尚未褪去,一周后期中考也将来临.一群被哄来打FJOI的水军,在期中大考必过前一百的死命令之下,仍然不怕死的花三天时间水同步赛.试机的路上乖乖排成两排,居然还有那么一丝春游的悠闲之感 ...
- [mysql]You must reset your password using ALTER USER statement before executing this statement.
原因分析: MySQL版本5.6.6版本起,添加了password_expired功能,它允许设置用户的过期时间.这个特性已经添加到mysql.user数据表,但是它的默认值是”N”,可以使用ALTE ...
- 浏览器输入URL后,HTTP请求返回的完整过程
1.Redirect,跳转 浏览器记录里这个地址永久跳转的新地址,浏览器先去判断需不需要跳转 2.Application cache ,应用缓存 浏览器看请求的资源是否有缓存 3.DNS解 ...
- hadoop配置项笔记 - hdfs
hadoop版本:3.1.1 core-site.xml dfs.namenode.rpc-address 作用:rpc地址.我在使用distcp时显式使用到了. 默认值:port是8020 我的设置 ...
- 1px解决方案--集锦
没有废话,直接上代码 汇聚各种版本,持续更新中.... 1.sass @charset "utf-8"; /** * @module 背景与边框 * @description 为元 ...
- mysql log and lock
mysql bin log==> /etc/my.cnf==> log_bin=/var/log/mysql/mysql-bin.log==> binlog_do_db=your_d ...
- 分布式消息通信Kafka-原理分析
本文目标 TopicPartition 消息分发策略 消息消费原理 消息的存储策略 Partition 副本机制 1 关于 Topic 和 Partition 1.1 Topic 在 kafka 中, ...
- HDFS详解
HDFS详解大纲 Hadoop HDFS 分布式文件系统DFS简介 HDFS的系统组成介绍 HDFS的组成部分详解 副本存放策略及路由规则 命令行接口 Java接口 客户端与HDFS的数据流讲解 目标 ...
- C#操作PDF文件打印
操作PDF文档时,打印是常见的需求之一.针对不同的打印需求,可分多种情况来进行,如设置静默打印.指定打印页码范围和打印纸张大小.双面打印.黑白打印等等.经过测试,下面将对常见的几种PDF打印需求做一些 ...