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 相关文章推荐
firefox firebug中文入门教程 脚本之家新年特别版
Jan 02 Javascript
基于JavaScript 下namespace 功能的简单分析
Jul 05 Javascript
用于deeplink的js方法(判断手机是否安装app)
Apr 02 Javascript
jQuery中noconflict函数的实现原理分解
Feb 03 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
Apr 06 Javascript
Bootstrap基础学习
Jun 16 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
Sep 26 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
Dec 08 Javascript
vue-router 导航钩子的具体使用方法
Aug 31 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
Sep 18 Javascript
angular1.x ui-route传参的三种写法小结
Aug 31 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
Jun 02 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 list() 将数组中的值赋给变量的简单实例
2016/06/13 PHP
js继承 Base类的源码解析
2008/12/30 Javascript
JS链式调用的实现方法
2013/03/07 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
2013/06/05 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
2015/09/27 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
Bootstrap响应式侧边栏改进版
2016/09/17 Javascript
利用jquery实现下拉框的禁用与启用
2016/12/07 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
详解vue-resource promise兼容性问题
2017/06/20 Javascript
angularJs中ng-model-options设置数据同步的方法
2018/09/30 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
vue页面更新patch的实现示例
2020/03/25 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
vue自定义指令限制输入框输入值的步骤与完整代码
2020/08/30 Javascript
jQuery实现购物车全功能
2021/01/11 jQuery
原生JS实现音乐播放器的示例代码
2021/02/25 Javascript
[01:10:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第一场 3月4日
2021/03/11 DOTA
在Python的gevent框架下执行异步的Solr查询的教程
2015/04/16 Python
Python实现在线音乐播放器
2017/03/03 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
PyTorch之图像和Tensor填充的实例
2019/08/18 Python
Django中间件拦截未登录url实例详解
2019/09/03 Python
浅谈python累加求和+奇偶数求和_break_continue
2020/02/25 Python
Python基于Tkinter编写crc校验工具
2020/05/06 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
pyqt5 textEdit、lineEdit操作的示例代码
2020/08/12 Python
BONIA波尼亚新加坡官网:皮革手袋,鞋类和配件
2016/08/25 全球购物
医学院校毕业生自荐信范文
2014/01/01 职场文书
QQ空间主人寄语大全
2014/04/12 职场文书
单位工作证明格式模板
2014/10/04 职场文书
体育运动会广播稿
2014/10/05 职场文书
如何写好一份优秀的工作总结?
2019/06/21 职场文书
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS