zoukankan      html  css  js  c++  java
  • 使用react+html2canvas+jspdf实现生成pdf文件

    导入html2canvas和jspdf插件到项目中

    npm install html2canvas

    npm install jspdf

     

    引入html2canvas和jspdf到jsx中

    import jsPDF from 'jspdf'

    import html2canvas from 'html2canvas'

     

    定义一个div和需要生成pdf的页面
    <div id="demo">
    <div style={{marginTop:15}}>
    <div>
    尊敬的用户:
    </div>
    <div>
    依托本系统管理节能,本月共计发生计划外事件0起,有效介入管控事件0起,累计管控收益0元。
    </div>
    </div>
    </div>

    定义一个触发生成报告的按钮
    <Button onClick={download}>
    生成报告
    </Button>

    实现download方法
    const download = () => {
      let title = 'dfghdfh'
      html2canvas(document.querySelector('#pdfDom'), {
      allowTaint: true
      }).then(function (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');
        console.log(PDF)
      })
     }

    }

     

  • 相关阅读:
    高效的多维空间点索引算法 — Geohash 和 Google S2
    Geohash距离估算
    位图(BitMap)索引
    深入浅出空间索引:为什么需要空间索引
    harbor rest api 转graphql api
    ringojs java jar 集成使用
    ringojs 使用rp 包管理web 应用依赖
    ringojs 的包管理
    ringojs 基于jvm 的javascript 平台试用
    graphql cli 开发graphql api flow
  • 原文地址:https://www.cnblogs.com/ranyonsue/p/14270841.html
Copyright © 2011-2022 走看看