html2canvas截取页面div中内容,滚动条下拉后错位

前端:ant design vue 1.6.2
JSPDF版本:2.3.0
问题:在搭配html2canvas截取页面div中内容作为图片,导出 PDF过程中,
当页面滚动条在最顶端时,可以正常获取截图保存PDF,
当滚动条下拉后,截图内容会有偏移,截图尺寸正常,存放的pdf的位置正常,但是截图区域不正常,上半部分有空白填充,并将实际需求截图位置往下挤,导致实际需求位置被挤出截图尺寸

img

具体代码如下:

downloadPDF() {
      const downPdf = document.getElementById('KPImounth') // KPImounth为截图区域div的id
      html2canvas(downPdf).then((canvas) => {
        const image = canvas.toDataURL('image/jpeg', 1.0)
        const doc = new jsPDF('l', 'px', 'a4')
        const pageWidth = doc.internal.pageSize.getWidth()
        const pageHeight = doc.internal.pageSize.getHeight()

        const widthRatio = pageWidth / canvas.width
        const heightRatio = pageHeight / canvas.height
        const ratio = widthRatio > heightRatio ? heightRatio : widthRatio

        const canvasWidth = canvas.width * ratio
        const canvasHeight = canvas.height * ratio

        const marginX = (pageWidth - canvasWidth) / 2
        const marginY = (pageHeight - canvasHeight) / 2

        doc.addImage(image, 'JPEG', marginX, marginY, canvasWidth, canvasHeight)
        doc.output('dataurlnewwindow')
        doc.save('pdfname' + '.pdf')
      })
    },

其实可以考虑, 在转canvas之前先把原始dom复制一份,把z-index改成负的不可见, 这样就不会存在 滚动条下拉后错位, 如果有细节调整,也可以在复制的这份dom上面操作