奇诺1995 2021-05-06 10:16 采纳率: 33.3%
浏览 423

我在使用html2canvas的时候出现一个生成的图片偏移不完整的情况

我在使用的时候遇到一个问题:在页面出现滚动条的时候,生成的图片会出现偏移不完整的情况,网上的方法大致都试过了,但是都没有作用,有哪位知道怎么解决吗?

 

附上代码:

import HTML2Canvas from 'html2canvas'

function getWinClientHeight() {
  let clientHeight = 0
  if (document.body.clientHeight && document.documentElement.clientHeight) {
    clientHeight = (document.body.clientHeight < document.documentElement.clientHeight) ? document.body.clientHeight : document.documentElement.clientHeight
  } else {
    clientHeight = (document.body.clientHeight > document.documentElement.clientHeight) ? document.body.clientHeight : document.documentElement.clientHeight
  }
  return clientHeight
}

function getDocClientHeight() {
  return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)
}

export default async function (el, beforeCallBack, afterCallBack) {
  if (typeof el === 'undefined') {
    console.error('必须传入一个元素')
    return false
  }
  if (typeof beforeCallBack !== 'undefined') {
    beforeCallBack()
  }
  const scale = 1.5
  const scrollY = window.scrollY
  const scrollX = getDocClientHeight() > getWinClientHeight() ? -8.3 : 0
  const canvas = await HTML2Canvas(el, {
    width: el.clientWidth,
    height: el.clientHeight,
    backgroundColor: null,
    scale,
    scrollX,
    scrollY: -scrollY,
    useCORS: true
  })
  if (typeof afterCallBack !== 'undefined') {
    afterCallBack(canvas)
    return false
  }
  const resolveUrl = canvas.toDataURL('image/png', 1.0)
  return resolveUrl
}

原本没有设置scrollX和scrollY的时候,是向下偏移的,设置了之后就向上偏移了。

  • 写回答

2条回答 默认 最新

  • 崽崽的谷雨 2021-05-06 16:23
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 mmocr的训练错误,结果全为0
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀