天天看點

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。