PDF下载以A4纸的宽高就行分页下载

  <div id="pdfDom" style="width: 1000px;margin: 0 auto;" ref="htmlDom">
       //内容
      </div>
textHtml2Canvas () {
          const refDom = this.$refs.htmlDom.getBoundingClientRect()
          const pageWidth = 595.28 - 40 // A4纸的宽高 减去左右边距
          const pageHeight = 841.89
          // a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
    
          html2canvas(document.querySelector('#pdfDom'), {
            allowTaint: true,
            taintTest: false,
            useCORS: true,
            async: true,
            scale: '1', // 放大倍数
            dpi: '192', // 精度
            scrollY: refDom.top, // 关键代码
            height: refDom.height + 50 // 加高度,避免截取不全
          }).then(canvas => {
            const contentWidth = canvas.width
            const contentHeight = canvas.height
            const pageData = canvas.toDataURL('image/jpeg/png', 1)
            const PDF = new JsPDF('', 'pt', 'a4') // , true
    
            // canvas图片的高
            const imgHeight = pageWidth / contentWidth * contentHeight // canvas的宽与PDF的宽比列一样的时候,canvas的高缩放后的值
    
            let leftHeight = imgHeight
            let position = 30
            // 如果图片的高小于A4纸的高,不分页
            if (leftHeight < pageHeight) {
              PDF.addImage(pageData, 'JPEG', 20, 0, pageWidth, imgHeight)
            } else {
              // 分页
              // let index = 0
              while (leftHeight > 0) {
                // console.log(leftHeight, '每一页的高度', imgHeight, index)
                // index++
                // addImage(stream, startX, startY, width, height)
                // stream:图片流
                // (startX,startY)图片的放置的开始点
                
                PDF.addImage(pageData, 'JPEG', 20, position, pageWidth, imgHeight)
                leftHeight = leftHeight - pageHeight
                position -= pageHeight
                if (leftHeight > 0) {
                  PDF.addPage()
            }
          }
        }
        PDF.save('个人简历表') // 保存PDF
        return PDF.output('datauristring')
      })
     }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值