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里的prototype使用示例
Nov 19 Javascript
php+ajax+jquery实现点击加载更多内容
May 03 Javascript
JQuery中DOM实现事件移除的方法
Jun 13 Javascript
BootStrap智能表单实战系列(七)验证的支持
Jun 13 Javascript
解决angularjs WdatePicker ng-model的问题
Sep 13 Javascript
傻瓜式解读koa中间件处理模块koa-compose的使用
Oct 30 Javascript
electron中使用bootstrap的示例代码
Nov 06 Javascript
详解Angular模板引用变量及其作用域
Nov 23 Javascript
详解webpack引入第三方库的方式以及注意事项
Jan 15 Javascript
深入解析koa之异步回调处理
Jun 17 Javascript
vue中uni-app 实现小程序登录注册功能
Oct 12 Javascript
js中的面向对象之对象常见创建方法详解
Dec 16 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提取视频网站页面中的FLASH地址的代码
2010/04/17 PHP
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
php实现MySQL数据库备份与还原类实例
2014/12/09 PHP
免费空间广告万能消除代码
2006/09/04 Javascript
为jquery.ui.dialog 增加“自动记住关闭时的位置”的功能
2009/11/24 Javascript
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
javascript设计模式 接口介绍
2012/07/24 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
Javascript 运动中Offset的bug解决方案
2014/12/24 Javascript
jquery简单实现网页层的展开与收缩效果
2015/08/07 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
javascript基本算法汇总
2016/03/09 Javascript
JS 数字转换为大写金额的简单实例
2016/08/04 Javascript
JS设置CSS样式的方式汇总
2017/01/21 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
ES6中箭头函数的定义与调用方式详解
2017/06/02 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
vue axios post发送复杂对象问题
2019/06/04 Javascript
JS实现小米轮播图
2020/09/21 Javascript
跟老齐学Python之用while来循环
2014/10/02 Python
用python与文件进行交互的方法
2018/03/01 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
windows环境中利用celery实现简单任务队列过程解析
2019/11/29 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
关于python pycharm中输出的内容不全的解决办法
2020/01/10 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
PHP如何删除一个Cookie值
2012/11/15 面试题
敬老院院长事迹材料
2014/05/21 职场文书
市委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
环卫工作汇报材料
2014/10/28 职场文书
少年犯观后感
2015/06/11 职场文书
Redis之RedisTemplate配置方式(序列和反序列化)
2022/03/13 Redis