最近在做项目,需求是把网页转成pdf并导出,我使用的是html2canvas.js和jsPDF.js来实现的。
现在问题在于,如果页面比较少导出的图片是正常的,随之PDF就是正常的。但是
如果页面比较长,导出的图片就是黑色的,PDF也是黑色的,请问各位帮我解
决一下这个问题,下面是代码:
html2canvas(targetDom, {
background: '#FFF',
// scale: 1, // 提升画面质量,但是会增加文件大小
useCORS: true, // 允许跨域图片 当图片是链接地址时,需加该属性,否组无法显示图片
imageTimeout: 0, // 图片加载延迟,默认延迟为0,单位毫秒
height: targetDom.scrollHeight, // canvas的高度设定
width: targetDom.offsetWidth, // canvas的宽度设定
dpi: window.devicePixelRatio * 1, // 将分辨率提高到特定的DPI,
}).then(canvas => {
console.log(canvas.height,'pdf数据');
if (canvas.height>65000) {
this.$message.error("当前错题本数据过多,请拆分之后再生成");
this.isLoading = false;
return
}
document.body.removeChild(cloneDom)
let pdf = getPDFpaper(canvas,name,a4_WIDTH, a4_HEIGHT, paperName,isDownload,headerShowLogo)
var pdfData = pdf.output('datauristring') //获取base64Pdf
resolve(pdfData)
})
有没有可能页面太长发生了什么异常,导致黑了。可以用异常监控一下。
canvas确实有宽高面积的限制,这个根据浏览器的不同,各限制大小也不一样,解决方法就是判断宽高有没有超出限制,超出的话等比例缩放下
哥们你这个问题解决了吗,我也遇到相同的问题