利用jspdf和html2canvas导出pdf文件

import JsPDF from 'jspdf';
import html2canvas from 'html2canvas';
//导出文件
exportPDF = () => {
  let { shop } = this.props;
  let element = document.getElementById('pdf');
  let { height } = getComputedStyle(element, false);
  let { width } = getComputedStyle(element, false);
  let canvas = document.createElement('canvas');
  canvas.width = parseInt(width, 10);
  canvas.height = parseInt(height, 10);
  let context = canvas.getContext('2d');
  context.scale(2, 2);
  html2canvas(element, {
    useCORS: true,
  }).then(canvas => {
    let pdf = new JsPDF('', 'pt', 'a4');
    context.drawImage(canvas, 0, 0, canvas.width, canvas.height, 0, 0, canvas.width, canvas.height);
    let pdfWidth = canvas.width;
    let pdfHeight = canvas.height;
    let pageHeight = pdfWidth / 592.28 * 841.89;
    let leftHeight = pdfHeight;
    let position = 0;
    let imgWidth = 595.28;
    let imgHeight = 592.28 / pdfWidth * pdfHeight;
    let pageData = canvas.toDataURL('image/jpeg', 1.0);
    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(`${shop.shopName}.pdf`);
  });
}复制代码

转载于:https://juejin.im/post/5d3c4b185188254cbc32b260

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值