美文网首页
js 打印标签里的所有内容(带分页)

js 打印标签里的所有内容(带分页)

作者: chiugi | 来源:发表于2020-11-27 09:22 被阅读0次

是什么

利用了jspdf和html2canvas两个插件实现的,把标签内的内容转成canvas再进行打印出pdf的一项功能。

为什么

利用JS满足某些打印pdf的场景

怎么做

最简单demo

  1. 安装插件
npm i html2canvas -S
npm i jspdf -S
  1. 加入工具函数(个人习惯放在项目的util目录下)
    引入两个插件,原理就是通过document.querySelector获取当前dom下的内容转换成canvas的内容,再执行打印成PDF的方法。判断的语句是用于判断当前canvas的内容是否超出一页A4纸的高度,否则就自动往下分页。
import html2Canvas from 'html2canvas'
import JsPDF from 'jspdf'

export default {
  getPdf: function(dom, title = 'download') {
    html2Canvas(document.querySelector(dom), {
      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 // A4纸宽度
      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')
    })
  }
}

未解决

  • 分页的内容如何分配,防止切割当前的页面内容
  • canvas转PDF的失真(模糊)

相关文章

  • js 打印标签里的所有内容(带分页)

    是什么 利用了jspdf和html2canvas两个插件实现的,把标签内的内容转成canvas再进行打印出pdf的...

  • js简单打印功能

    js打印功能 function printNow(titles,idt) { //获取指定id标签内的所有内容 ...

  • 打印

    js调起打印(某个div里的内容) vue + elementUI vue js css(打印时的样式,隐藏掉打印按钮)

  • 2019-05-28 分页设计

    分页组件mricode 分页插件下载 如何使用 首先导入css和js 创建分页显示标签 Ajax分页 初始化 这里...

  • JS 实现分页打印

    在调用 window.print() 时,可以实现打印效果,但内容太多时要进行分页打印。 在样式中有规定几个打...

  • 条码碳带不干胶打印问题

    1、打印出来的标签整体内容看上去不清晰,颜色偏白,有毛糙等现象? (1)拿起目前打印的条码碳带,肉眼观察条码碳带的...

  • Effective前端--加快页面打开速度

    1.避免head标签JS阻塞 所有放在head标签里的JS和CSS都会阻塞页面渲染。如果这些CSS和JS需要记在时...

  • 页面内容打印和导出

    打印: 分页打印-CSS的page-break-after:always样式解决分页问题 导出:

  • git 添加tag标签

    查看标签打印所有标签git tag打印符合检索条件的标签git tag -l 1.*.*查看对应标签状态git c...

  • git 添加tag标签

    查看标签打印所有标签git tag打印符合检索条件的标签git tag -l 1.*.*查看对应标签状态git c...

网友评论

      本文标题:js 打印标签里的所有内容(带分页)

      本文链接:https://www.haomeiwen.com/subject/gowtwktx.html