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 相关文章推荐
JS获取scrollHeight问题想到的标准问题
May 27 Javascript
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
Oct 29 Javascript
js对数字的格式化使用说明
Jan 12 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
May 12 Javascript
js实现分享到随页面滚动而滑动效果的方法
Apr 10 Javascript
JavaScript实现的encode64加密算法实例分析
Apr 15 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
May 18 Javascript
Bootstrap开关(switch)控件学习笔记分享
May 30 Javascript
Angularjs的Controller间通信机制实例分析
Nov 07 Javascript
JS实现队列的先进先出功能示例
May 10 Javascript
vue-cli初始化项目中使用less的方法
Aug 09 Javascript
ES6 Iterator接口和for...of循环用法分析
Jul 31 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
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
php实现对两个数组进行减法操作的方法
2015/04/17 PHP
PHP实现通过get方式识别用户发送邮件的方法
2015/07/16 PHP
JavaScript中的Document文档对象
2008/01/16 Javascript
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
25个非常棒的jQuery滑块插件和教程小结
2011/09/02 Javascript
介绍一个简单的JavaScript类框架
2015/06/24 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
2017/02/14 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
AngularJS 的$timeout服务示例代码
2017/09/21 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
2019/06/13 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
[01:28:24]NAVI vs VG Supermajor 败者组 BO3 第三场 6.5
2018/06/06 DOTA
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
详解python-图像处理(映射变换)
2019/03/22 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
python3连接MySQL8.0的两种方式
2020/02/17 Python
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
女子锻炼服装和瑜伽服装:Splits59
2019/03/04 全球购物
毕业生文员求职信
2013/11/03 职场文书
招商专员岗位职责
2014/02/08 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
知识竞赛主持词
2014/03/26 职场文书
活动策划求职信模板
2014/04/21 职场文书
企业总经理助理岗位职责
2014/09/12 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书
详解在SQLPlus中实现上下键翻查历史命令的功能
2022/03/18 SQL Server
vue修饰符.capture和.self的区别
2022/04/22 Vue.js