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复制内容到剪切板的实例代码(兼容IE与火狐)
Nov 19 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
Nov 28 Javascript
js分页工具实例
Jan 28 Javascript
基于jquery实现左右按钮点击的图片切换效果
Jan 27 Javascript
JavaScript 继承详解(六)
Oct 11 Javascript
js实现可输入可选择的select下拉框
Dec 21 Javascript
Node.js中如何合并两个复杂对象详解
Dec 31 Javascript
windows下vue-cli导入bootstrap样式
Apr 25 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
Apr 09 Javascript
详解vue的数据劫持以及操作数组的坑
Apr 18 Javascript
js动态生成表格(节点操作)
Jan 12 Javascript
webpack介绍使用配置教程详解webpack介绍和使用
Jun 25 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截取中文字符串的问题
2006/07/12 PHP
Yii框架登录流程分析
2014/12/03 PHP
Yii配置文件用法详解
2014/12/04 PHP
php连接sftp的作用以及实例代码
2019/09/23 PHP
JS中style属性
2006/10/11 Javascript
js cookies实现简单统计访问次数
2009/11/24 Javascript
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
JavaScript替换当前页面的方法
2015/04/03 Javascript
JS数组合并push与concat区别分析
2015/12/17 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
2016/09/08 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
前端js弹出框组件使用方法
2020/08/24 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
Vue实现选择城市功能
2017/05/27 Javascript
webpack配置打包后图片路径出错的解决
2018/04/26 Javascript
vue.js单文件组件中非父子组件的传值实例
2018/09/13 Javascript
基于vue如何发布一个npm包的方法步骤
2019/05/15 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
JavaScript计算出两个数的差值
2020/03/19 Javascript
vue实现简易的双向数据绑定
2020/12/29 Vue.js
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python+Django+apache的配置方法详解
2016/06/01 Python
深入理解python对json的操作总结
2017/01/05 Python
聊聊Python中的pypy
2018/01/12 Python
一条命令解决mac版本python IDLE不能输入中文问题
2018/05/15 Python
多个应用共存的Django配置方法
2018/05/30 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
2019/08/21 Python
html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法
2013/01/09 HTML / CSS
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
一体化教学实施方案
2014/05/10 职场文书