Vue页面导出为pdf格式并进行下载

20 篇文章 0 订阅
4 篇文章 0 订阅

1.使用npm下载两个插件

a.将html页面转换成图片

npm install --save html2canvas

b.将图片生成pdf

npm install jspdf  --save

2.在untils文件创建一个叫 htmlPDF.js文件,内容如下

//导出页面为pdf格式

import html2Canvas from "html2canvas";

import JsPDF from "jspdf";

export default {

  install(Vue,options){

    Vue.prototype.getpdf = function() {

      var title =this.htmlTitle;

        html2Canvas(document.querySelector("#pdfdDom"),{

              useCORS:true,//允许图片跨域截取

              allowTaint:true,

              height:$('#pdfdDom').outerHeight()

        }).then(function(canvas){

            document.body.appendChild(canvas);

            let contentWidth=canvas.width

            let contentHeight=canvas.height

            let pageHeight=contentWidth/592.28*841.89

            let leftHeight=contentHeight

            let position=0

            let imgWidth=595.28

            let imgHeight=592.28/contentWidth*contentHeight

            let pageData=canvas.toDataURL('image/jpeg',1.0)

            let PDF =new JsPDF('','pt','a4')

            if(leftHeight<pageHeight){

              PDF.addImage(pageData,'JPEG',0,0,imgWidth,imgHeight)

            }else{

                while(leftHeight>0){

                    PDF.addImage(pageData,'JPEG',0,position,imgWidth,imgHeight)

                    leftHeight-=pageHeight

                    position -=841.89

                    if(leftHeight>0){

                      PDF.addPage()

                    }

                }

            }

            PDF.save(title+'.pdf')

        }).catch(err=>{

            console.log(err);

        })

    }

  }

}

 3.在main.js中注册我们自定义的插件htmlPDF.js

(a)      import htmlPDF from './utils/htmlPDF'

(b)      Vue.use(htmlPDF)

4.在按钮上直接绑定getpdf方法

 

<el-button type="success"  id="calssbut"   style="margin-left:35px;" @click="getpdf()" >导出</el-button>

5.下载的文件名称一定要在data里面

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值