html2canvas导出带滚动条截取不到超出部分的bug解决

项目需要前端导出一个图片,用了html2canvas插件,但是导出的时候,遇到了一个问题,只能导出当前高度的图片,超出当前高度的就截取不到了,查看资料之后,说设置windowHeight 和 height两个参数,但是设置了以后,发现还是有问题,因为我的高度是百分比的50%,所以导出来之后,仍然是只有两个,像下图这样的。

分析:

其实高度是有了的,但是下面的都被挤下去了,所以,高度不能设置为百分比的形式,要固定的高度。

 

方法1 : 动态设置高度,但是子元素不能为百分比,不然截取到的还是原来

方法2:

外框再加一层div包裹

<div  class="compare_charts">   <!-- 在这一层设置scroll -->
    <!-- 因为导出有问题,所以加了一个外框 -->
    <div id="compareCharts">
        <div v-for="item in options" :key="item.type" class="rank_compare">
            <base-chart :id="`chart${item.type}`" :ref="item.type" :option="item.option"></base-chart>
        </div>
    </div>
</div>

这样就可以了

 // 导出图片
exportReport(){
    html2canvas(
        document.getElementById('compareCharts'),
        {
            backgroundColor: 'white',
            useCORS: true, //支持图片跨域
            scale: 1,     //设置放大的倍数
            height: document.getElementById('compareCharts').scrollHeight,
            windowHeight: document.getElementById('compareCharts').scrollHeight
        }).then((canvas) => {
            let pageData = canvas.toDataURL('image/jpeg', 1.0);

             downloadCanvas(pageData.replace("image/jpeg", "image/octet-stream"),"站点AQI对比.jpeg");
     });
}


const downloadCanvas = (data, filename) => {
    let save_link = document.createElement('a');
    save_link.href = data;
    save_link.download = filename;

    let event = document.createEvent('MouseEvents');
    event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    save_link.dispatchEvent(event);
};

export default downloadCanvas;

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值