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 动态加载脚本的4种方法
May 05 Javascript
Dojo 学习要点
Sep 03 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
Dec 06 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
Jun 07 Javascript
jQuery实现带滚动线条导航效果的方法
Jan 30 Javascript
浅谈javascript中遇到的字符串对象处理
Nov 18 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
Feb 14 Javascript
JavaScript制作简单的框选图表
May 15 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
May 27 Javascript
微信小程序实现的自定义分享功能示例
Feb 12 Javascript
Node.js+ELK日志规范的实现
May 23 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
Sep 17 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中文乱码解决方案
2015/03/05 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
2015/12/23 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
详解JavaScript中void语句的使用
2015/06/04 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
AngularJs自定义服务之实现签名和加密
2016/08/02 Javascript
javascript动画之模拟拖拽效果篇
2016/09/26 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
2017/02/22 Javascript
从vue基础开始创建一个简单的增删改查的实例代码(推荐)
2018/02/11 Javascript
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
vue axios基于常见业务场景的二次封装的实现
2018/09/21 Javascript
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
[43:03]完美世界DOTA2联赛PWL S2 PXG vs Magma 第二场 11.21
2020/11/24 DOTA
Python中的包和模块实例
2014/11/22 Python
简介Python设计模式中的代理模式与模板方法模式编程
2016/02/02 Python
Matplotlib 生成不同大小的subplots实例
2018/05/25 Python
Python sklearn KFold 生成交叉验证数据集的方法
2018/12/11 Python
PyQt5+requests实现车票查询工具
2019/01/21 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
Python 词典(Dict) 加载与保存示例
2019/12/06 Python
Python count函数使用方法实例解析
2020/03/23 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
护士毕业实习感言
2014/03/05 职场文书
淘宝客服专员岗位职责
2014/04/11 职场文书
食品采购员岗位职责
2014/04/14 职场文书
2014年酒店前台工作总结
2014/11/14 职场文书
2014年信贷员工作总结
2014/11/18 职场文书
小学中队委竞选稿
2015/11/20 职场文书
56句经典英文座右铭
2019/08/09 职场文书
NGINX 权限控制文件预览和下载的实现原理
2022/01/18 Servers
浅谈Redis跟MySQL的双写问题解决方案
2022/02/24 Redis
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python