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 相关文章推荐
深入理解JavaScript系列(41):设计模式之模板方法详解
Mar 04 Javascript
javascript实现unicode与ASCII相互转换的方法
Dec 10 Javascript
微信小程序 实现拖拽事件监听实例详解
Nov 16 Javascript
Bootstrap表单控件学习使用
Mar 07 Javascript
JS自定义滚动条效果简单实现代码
Oct 27 Javascript
Vue拖拽组件开发实例详解
May 11 Javascript
node版本管理工具n包使用教程详解
Nov 09 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
Feb 02 Javascript
vue项目打包上传github并制作预览链接(pages)
Apr 19 Javascript
JS实现水平移动与垂直移动动画
Dec 19 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
May 12 Javascript
vue缓存之keep-alive的理解和应用详解
Nov 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生成Flash动画的实现代码
2010/03/12 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
php实现的redis缓存类定义与使用方法示例
2017/08/09 PHP
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
Javascript验证方法大全
2015/09/21 Javascript
javascript实现数组去重的多种方法
2016/03/14 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
BootStrap 弹出层代码
2017/02/09 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
vue模块拖拽实现示例代码
2019/03/09 Javascript
Js逆向实现滑动验证码图片还原的示例代码
2020/03/10 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
[37:23]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第二局
2016/03/04 DOTA
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
python通过floor函数舍弃小数位的方法
2015/03/17 Python
python获取元素在数组中索引号的方法
2015/07/15 Python
Python 文件处理注意事项总结
2017/04/10 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
Pycharm无法使用已经安装Selenium的解决方法
2018/10/13 Python
用python爬取租房网站信息的代码
2018/12/14 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
Django中reverse反转并且传递参数的方法
2019/08/06 Python
pytorch多进程加速及代码优化方法
2019/08/19 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
党的生日演讲稿
2014/09/10 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
2015年公司新年寄语
2014/12/08 职场文书
股份转让协议书范本
2015/01/27 职场文书
课程设计感想范文
2015/08/11 职场文书
行为习惯主题班会
2015/08/14 职场文书