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 获取Mouse Position(鼠标坐标)的代码
Sep 21 Javascript
浅析javascript闭包 实例分析
Dec 25 Javascript
关于div自适应高度/左右高度自适应一致的js代码
Mar 22 Javascript
JavaScript中5种调用函数的方法
Mar 12 Javascript
jquery实现的用户注册表单提示操作效果代码分享
Aug 28 Javascript
Angular.JS中的this指向详解
May 17 Javascript
用vue构建多页面应用的示例代码
Sep 20 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
Oct 27 Javascript
Vue中的methods、watch、computed的区别
Nov 26 Javascript
详解小程序如何避免多次点击,重复触发事件
Apr 08 Javascript
原生JS实现留言板
Mar 26 Javascript
Node.js API详解之 querystring用法实例分析
Apr 29 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删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
php class类的用法详细总结
2013/10/17 PHP
Laravel框架数据库CURD操作、连贯操作总结
2014/09/03 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
php设计模式之单例模式实例分析
2015/02/25 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
2020/09/25 PHP
javascript 多浏览器 事件大全
2010/03/23 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
jquery.ui.draggable中文文档(原文翻译)
2013/11/15 Javascript
浅析JS中document对象的一些重要属性
2014/03/06 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
详细探究ES6之Proxy代理
2016/07/22 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
小程序如何构建骨架屏
2019/05/29 Javascript
微信小程序实现图片压缩
2019/12/03 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
2020/08/03 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
2020/08/31 Javascript
python检测远程端口是否打开的方法
2015/03/14 Python
详解在Python和IPython中使用Docker
2015/04/28 Python
python基于ID3思想的决策树
2018/01/03 Python
flask框架中勾子函数的使用详解
2018/08/01 Python
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
用pycharm开发django项目示例代码
2019/06/13 Python
python包的导入方式总结
2021/03/02 Python
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
Tom Dixon官网:英国照明及家具设计和制造公司
2019/03/01 全球购物
小学红领巾中秋节广播稿
2014/01/13 职场文书
保安部任务及岗位职责
2014/02/25 职场文书
《果园机器人》教学反思
2014/04/13 职场文书
《蚂蚁和蝈蝈》教学反思
2016/02/22 职场文书
自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10(真棒)
2021/06/26 Java/Android
CSS+HTML 实现顶部导航栏功能
2021/08/30 HTML / CSS
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript
Docker与K8s关系介绍不会Docker也可以使用K8s
2022/06/25 Servers