html2canvas +pdf 生成pdf 一些点记录

模糊

提示:生成出来的模糊 及图片跨域 处理方案
例如:

html2canvas(id, {
    allowTaint: false,
    useCORS: true,
    crossOrigin: 'anonymous',
    width: targetDom.width,
    scale: 2, //按比例增加分辨率 (2=双倍).
    dpi: window.devicePixelRatio * 2, //设备像素比
  })
  1. 模糊: scale: 2, //按比例增加分辨率 (2=双倍).
        dpi: window.devicePixelRatio * 2, //设备像素比
  2. 图片跨域处理:allowTaint: false,
        useCORS: true,

走势图 用的echart 生成出来模糊

提示:用的走势图都是echart模糊
 

  1. 把这个转换成图片再去生成 echarts.init(document.getElementById('myChart'), null, {renderer: 'svg'}) 
  2. 采用canvans渲染,devicePixelRatio调整清晰度echarts.init(document.getElementById('myChart'), null, {devicePixelRatio: 2.5})

生成固定尺寸的 pdf

提示:一般都是A4尺寸 
例如:

  1. let PDF = new jsPDF('p', 'px', [Width, Height])
  2. html2canvas(id, {

    width: targetDom.width,

    })

一些区域单块 模糊

提示:看下页面是不是用的图片做的背景 是的话拿出来用img标签去展示就可以了

生成关键代码

//htmL转图片 贴到pdf里 id就是要生成的 targetDom 这里放的要生成的宽高尺寸 我这是是 375跟 525 px
 html2canvas(id, {
    allowTaint: false,
    useCORS: true,//是否支持跨域
    crossOrigin: 'anonymous',
    width: targetDom.width,
    scale: 2, //按比例增加分辨率 (2=双倍).
    dpi: window.devicePixelRatio * 2, //设备像素比
  }).then(function (canvas) {
    let pdfHeight = targetDom.height
    let pdfWidth = targetDom.width
    let contentWidth = canvas.width
    let contentHeight = canvas.height
    let pageHeight = (contentWidth / pdfWidth) * pdfHeight
    let leftHeight = contentHeight
    let position = 0
    let imgWidth = pdfWidth
    let imgHeight = (pdfWidth / contentWidth) * contentHeight
    console.log('imgHeight===' + imgHeight)
    let pageData = canvas.toDataURL('image/jpeg', 1.0)
    let PDF = new jsPDF('p', 'px', [pdfWidth, pdfHeight])
    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 -= pdfHeight
        if (leftHeight > 0) {
          PDF.addPage()
        }
      }
    }
    PDF.save(title + '.pdf')
  })

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值