蒙层嵌套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打印需求做一些 ...