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 null,undefined,字符串小结
Aug 21 Javascript
js取滚动条的尺寸的函数代码
Nov 30 Javascript
JavaScript中实现异步编程模式的4种方法
Sep 24 Javascript
js实现图片点击左右轮播
Jul 08 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
Feb 27 Javascript
JavaScript数组的栈方法与队列方法详解
May 26 Javascript
浅谈js的url解析函数封装
Jun 28 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
Mar 22 jQuery
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
May 12 Javascript
angular2路由切换改变页面title的示例代码
Aug 23 Javascript
Vue Element UI + OSS实现上传文件功能
Jul 31 Javascript
简单了解JS打开url的方法
Feb 21 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命令行用法入门实例教程
2014/10/27 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
PHP中list方法用法示例
2016/12/01 PHP
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
关于JS管理作用域的问题
2013/04/10 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
30个经典的jQuery代码开发技巧
2014/12/15 Javascript
jQuery菜单插件用法实例
2015/07/25 Javascript
JQuery Mobile 弹出式登录框的实现方法
2016/05/28 Javascript
PHP+jquery+ajax实现分页
2016/12/09 Javascript
JSONP基础知识详解
2017/03/19 Javascript
JavaScript基于replace+正则实现ES6的字符串模版功能
2017/04/25 Javascript
angular4自定义组件详解
2017/09/28 Javascript
微信小程序的生命周期的详解
2017/10/19 Javascript
VSCode中如何利用d.ts文件进行js智能提示
2018/04/13 Javascript
nuxt.js 缓存实践
2018/06/25 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
vue实现公告栏文字上下滚动效果的示例代码
2020/06/16 Javascript
vue实现移动端拖动排序
2020/08/21 Javascript
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
python的else子句使用指南
2016/02/27 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
2016/11/16 Python
利用django如何解析用户上传的excel文件
2017/07/24 Python
python数据封装json格式数据
2018/03/04 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
TensorFlow实现指数衰减学习率的方法
2020/02/05 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
自主招生自荐信
2013/12/08 职场文书
寄语是什么意思
2014/04/10 职场文书
酒店辞职信怎么写
2015/02/27 职场文书
2016新年慰问信范文
2015/03/25 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书
步步惊心观后感
2015/06/12 职场文书
优秀党员主要事迹材料
2015/11/04 职场文书
python如何利用traceback获取详细的异常信息
2021/06/05 Python
vue+elementui 实现新增和修改共用一个弹框的完整代码
2021/06/08 Vue.js