天天看点

ReactJS中加入jspdf背景版本步骤

ReactJS中加入jspdf

  • 背景
  • 版本
  • 步骤
    • 1.下载jspdf
    • 2.导入jspdf和html2canvas
    • 3.调用.html()方法
    • 4.相关问题
      • 4.1 出现找不到html2canvas的问题?
      • 4.2 尺寸不容易控制?

背景

客户需要在前端将html转成pdf的功能,使用jspdf这个插件

版本

ReactJs 16.8.6

步骤

1.下载jspdf

npm install --save jspdf 
           

2.导入jspdf和html2canvas

import * as jsPDF from 'jspdf';
import * as html2canvas from 'jspdf/node_modules/html2canvas'
window.html2canvas = html2canvas;//这里记得将html2canvas设为全局,不然后面找不到
           

3.调用.html()方法

let pdf = new jsPDF('p','pt','a4');//创建一个竖向,单位为pt,大小为a4的页面
        let printDoc = document.createElement("div");//新建dom元素(使用已有的也行)
        let docTitle = document.createElement("div");//标题
        let docDetail = document.createElement("div");//内容
        docTitle.innerHTML=item.Title;
        docDetail.innerHTML=item.Detail;
        printDoc.setAttribute('style','font-family:Arial, Helvetica, sans-serif;width:1000px;padding:40px');//属性设置
        docTitle.setAttribute('style','font-size:30px');//属性设置
        docDetail.setAttribute('style','font-size:20px');//属性设置
        printDoc.appendChild(docTitle);//组合DOM
        printDoc.appendChild(docDetail);//组合DOM
        
        pdf.html(printDoc, {
             html2canvas:{
                width: 1000,
                scale:0.6 //缩放系数,根据具体的页面再调整
              },
             callback: function (pdf) {
               pdf.save(String(item.Title)+".pdf");//保存
             }});
           

4.相关问题

4.1 出现找不到html2canvas的问题?

A:因为html()方法会在内部调用html2canvas所以要将html2canvas导入进来,并且使用window.html2canvas设置一下。

4.2 尺寸不容易控制?

A:首先DOM元素和html2canvas画布的尺寸要使用px单位(防止分辨率不同的机器上显示不同),画布生成后再会导入创建pdf页面,此时pdf页面要使用绝对单位pt。通过一定的缩放设置(scale)保证canvas能导入到pdf。