Vue+ElementUI使用vue-pdf实现预览功能


Posted in Javascript onNovember 26, 2019

Vue + ElementUI项目中使用vue-pdf实现简单预览,供大家参考,具体内容如下

1、安装 vue-pdf

npm install --save vue-pdf

2、在vue页面中导入对应的组件

我这是通过点击 预览 按钮 获取id打开一个dialog来实现

<!--PDF 预览-->
 <el-dialog :title="PDF 预览"
  :visible.sync="viewVisible" width="80%" center
   @close='closeDialog'>
     <div style="margin-bottom: 15px; text-align: right">
        <el-button type="primary" size="small" @click.stop="previousPage">
           上一页
         </el-button>
         <el-button type="primary" size="small" @click.stop="nextPage">
         下一页
        </el-button>
     <span>当前第{{pdfPage}}页 / 共{{pageCount}}页</span>
    </div>

    <div >
     <pdf
       :src="src"
       :page="pdfPage"
       @num-pages="pageCount = $event"
       @page-loaded="pdfPage = $event"
       style="display: inline-block; width: 100%"
    ></pdf>
  </div>
</el-dialog>
<script>
 import pdf from 'vue-pdf';
 export default {
    components: {
      pdf
    },
    data() {
    return {
    //PDF预览
        viewVisible: false,
        src: null,
        pdfPage : 1,
        pageCount: 0,
  }
 },
 methods:{
  //PDF预览
      previewPDF(row){
        this.src = pdf.createLoadingTask(documentConstants.previewPDFUrl+row.contractId);
        this.src.then(pdf => {
          this.viewVisible = true;
        });
      },

      //关闭窗口初始化PDF页码
      closeDialog(){
        this.pdfPage = 1;
      },

      //PDF改变页数
      previousPage(){
        var p = this.pdfPage
        p = p>1?p-1:this.pageCount
        this.pdfPage = p
      },
      nextPage(){
        var p = this.pdfPage
        p = p<this.pageCount?p+1:1
        this.pdfPage = p
      }
 }
  }
</script>

3、Controller的返回

@RequestMapping(value = "/previewPDF/{contractId}")
  public ResponseEntity<byte[]> previewPDF(@PathVariable Long contractId) throws TException, IOException {
    ContractAttachmentTmpModelDTO model = contractScanManagementRpcService.queryContractAttachmentTmp(contractId);
    HttpHeaders headers = new HttpHeaders();
    headers.setContentDispositionFormData("attachment", model.getAttachmentName());
    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    return new ResponseEntity<byte[]>(model.getAttachmentData(),
        headers, HttpStatus.OK);
  }

总结:这个是实现一个简单的预览功能。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
禁用JavaScript控制台调试的方法
Mar 07 Javascript
js QQ客服悬浮效果实现代码
Dec 12 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
Jan 07 Javascript
Node.js读写文件之批量替换图片的实现方法
Sep 07 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
Sep 21 Javascript
react.js CMS 删除功能的实现方法
Apr 17 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
Apr 27 jQuery
js中的闭包学习心得
Feb 06 Javascript
JQuery元素快速查找与操作
Apr 22 jQuery
手淘flexible.js框架使用和源代码讲解小结
Oct 15 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
May 05 Javascript
Vuex的各个模块封装的实现
Jun 05 Javascript
详解小程序如何动态绑定点击的执行方法
Nov 26 #Javascript
vue element-ui读取pdf文件的方法
Nov 26 #Javascript
Vue+Element-UI实现上传图片并压缩
Nov 26 #Javascript
jQuery实现轮播图效果
Nov 26 #jQuery
JavaScript使用百度ECharts插件绘制饼图操作示例
Nov 26 #Javascript
使用vue重构资讯页面的实例代码解析
Nov 26 #Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
Nov 26 #Javascript
You might like
咖啡历史、消费和行业趋势
2021/03/03 咖啡文化
php采用curl实现伪造IP来源的方法
2014/11/21 PHP
php实现根据词频生成tag云的方法
2015/04/17 PHP
Ubuntu 16.04下安装PHP 7过程详解
2017/03/28 PHP
js 页面执行时间计算代码
2009/03/04 Javascript
基于Jquery的淡入淡出的特效基础练习
2010/12/13 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
将nodejs打包工具整合到鼠标右键的方法
2013/05/11 NodeJs
javascript实现分栏显示小技巧附图
2014/10/13 Javascript
微信分享的标题、缩略图、连接及描述设置方法
2014/10/14 Javascript
JavaScript设置获取和设置属性的方法
2015/03/04 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
Javascript 动态改变imput type属性
2016/11/01 Javascript
基于substring()和substr()的使用以及区别(实例讲解)
2017/12/28 Javascript
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
2019/10/12 Javascript
vue.js实现简单购物车功能
2020/05/30 Javascript
AngularJs的$http发送POST请求,php无法接收Post的数据问题及解决方案
2020/08/13 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
Python实现从百度API获取天气的方法
2015/03/11 Python
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
python Socket之客户端和服务端握手详解
2017/09/18 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
python+jinja2实现接口数据批量生成工具
2019/08/28 Python
解决python有时候import不了当前的包问题
2019/08/28 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
2020/08/11 Python
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
C#实现启动一个进程
2016/10/01 面试题
本科毕业自我鉴定
2014/03/20 职场文书
初中班主任工作随笔
2015/08/15 职场文书
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers