美文网首页
前端PDF预览(vue)

前端PDF预览(vue)

作者: 暖年的咆哮 | 来源:发表于2019-04-11 18:33 被阅读0次

    项目需要PDF预览,使用vue-pdf插件

    npm引入

    npm install vue-pdf --save
    

    因为项目使用的element-ui,需求是要在弹框里预览PDF,所以放在dialog里面

    先引入

    import pdf from 'vue-pdf';
    components:{
        pdf
    },
    

    页面引用(dialog弹框省略了);

    //页面顶部按钮
    <div class="pdfTitle">
        <el-button size="small" @click="changePdfPage(0)">上一页</el-button>
    <!--currentPage当前页数 pageCount总页数-->
    
        <span>{{currentPage}}/{{pageCount}}</span>
        <el-button size="small" @click="changePdfPage(1)">下一页</el-button>
    </div>
    <pdf
     :src="pdfUrl"  //pdf地址
      ref="ref"   
      class="pdf" 
      :page="currentPage"   //显示当前页码(也可以不要,上面span标签里面已经做了显示)
      @num-pages="pageCount=$event"   //总页数
      @page-loaded="currentPage=$event"  //一开始加载的页面
      @loaded="loadPdfHandler"> //// 加载事件
    </pdf>
    
    

    data里面定义好上述出现的字段

    method方法

    //预览
    //页面打开预览弹框按钮
    preview(row) {  
    //createLoadingTask方法,参数为pdf的文件地址,此方法可返回pdf文件的一些参数,例如页码总数,等;会返回一个promise对象;
        this.pdfUrl = pdf.createLoadingTask(this.fileUrl + row.magazinePdfPath);
    
        this.pdfUrl.then(pdf => {
    //拿到pdf的总页码数
            this.pageCount = pdf.numPages;
        }).catch(err => {
              console.log(err)
        });
        this.pdfDialog = true;//弹框开关
    },
    

    默认加载第一页

    //加载第一页,参数event必传,不然会报错
    loadPdfHandler(e) {
        this.currentPage = 1;
    },
    

    页码变化

    changePdfPage(val) {
        if(val == 0 && this.currentPage > 1) {
            this.currentPage --
        };
        if(val == 1 && this.currentPage < this.pageCount) {
          this.currentPage ++;
        }
    },
    

    好了,大功告成。

    相关文章

      网友评论

          本文标题:前端PDF预览(vue)

          本文链接:https://www.haomeiwen.com/subject/etuxwqtx.html