zoukankan      html  css  js  c++  java
  • PDF打印:html2canvas+jspdf

    需求:将前端页面转为图片,再pdf打印

    解决方案:html2canvas+jspdf

    安装:

    npm install html2canvas --save
    
    npm install jspdf --save
    

    创建js文件:

    import html2Canvas from 'html2Canvas'
    import jsPDF from 'jspdf'
    
    export default{
      install (Vue, options) {
        Vue.prototype.getPdf = function (fileName) {
          var title = fileName;
          html2Canvas(document.querySelector('#exportTemplate'), {
            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')
          }
          )
        }
      }
    }
    

    使用:

    在main.js中注册:

    import printPdf from './components/common/printPdf/printPdf'
    Vue.use(printPdf)
    

    直接使用getPdf()

    <bk-button @click="getPdf(fileName)">导出PDF</bk-button>
    
  • 相关阅读:
    本机mysql 5.7服务启动后停止,某些服务在未有其他应用程序使用时停止
    java数据结构 • 面向对象 • 异常 • 随机数·时间
    获取对象信息
    集合的运算律
    常用的逻辑符号
    未解决问题
    继承和多态
    访问权限
    类和实例
    第三方模块安装
  • 原文地址:https://www.cnblogs.com/wangyingblock/p/13724808.html
Copyright © 2011-2022 走看看