vue通过插件实现PDF生成以及下载

第一步: 安装插件

npm install --save html2canvas  //将html转换成图片
npm install jspdf --save //将图片生成pdf

第二步: 在需要的地方引入插件

	import html2Canvas from 'html2canvas'
	import JsPDF from 'jspdf'

第三步:使用插件生成pdf 

HTML

<div id="pdfWrap">
      //这是你要绑定的盒子,里面是你需要打印的内容
<div>
<el-button  @click="downloadClick"></el-button>

JS 

 downloadClick() {
      var title = `${this.dataList.patientName}-报告`;
      html2Canvas(document.querySelector('#pdfWrap'), {
        allowTaint: true
      }).then(function (canvas) {
        var pdf = new JsPDF('p', 'mm', 'a4');    //A4纸,纵向
        var ctx = canvas.getContext('2d'),
          a4w = 190, a4h = 277,    //A4大小,210mm x 297mm,四边各保留10mm的边距,显示区域190x277
          imgHeight = Math.floor(a4h * canvas.width / a4w),    //按A4显示比例换算一页图像的像素高度
          renderedHeight = 0;

        while (renderedHeight < canvas.height) {
          var page = document.createElement("canvas");
          page.width = canvas.width;
          page.height = Math.min(imgHeight, canvas.height - renderedHeight);//可能内容不足一页

          //用getImageData剪裁指定区域,并画到前面创建的canvas对象中
          page.getContext('2d').putImageData(ctx.getImageData(0, renderedHeight, canvas.width, Math.min(imgHeight, canvas.height - renderedHeight)), 0, 0);
          pdf.addImage(page.toDataURL('image/jpeg', 1.0), 'JPEG', 10, 10, a4w, Math.min(a4h, a4w * page.height / page.width));    //添加图像到页面,保留10mm边距
          renderedHeight += imgHeight;
          if (renderedHeight < canvas.height)
            pdf.addPage();//如果后面还有内容,添加一个空页
          // delete page;
        }
        pdf.save(title + '.pdf')
      })
    },

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值