【问题标题】:html2canvas doesn't get image full heighthtml2canvas 没有获得图像全高
【发布时间】:2016-10-21 01:57:42
【问题描述】:

由于某种我无法理解的原因,html2canvas 没有捕获 div 的整个高度。

html2canvas($container, {
    height: $container.height(),
    onrendered: function(canvas) {

        var data = canvas.toDataURL('image/png');           
        var file = dataURLtoBlob(data);

        var formObjects = new FormData();
        formObjects.append('file', file);

        $.ajax({
           url: 'ajax_preview',
           type: 'POST',
           data: formObjects,
           processData: false,
           contentType: false,
        }).done(function(response){
            console.log(response);
            //window.open(response, '_blank');  
        });
    }
});

我也尝试手动设置高度height: $container.height(),但不幸的是图像一直被截断。我也试过设置高度1124,结果还是一样。

很难看到,但在下图中,您可以看到图像的白色部分没有任何边框。我在该部分中的所有内容均未显示。

有什么可能导致这种行为的想法吗?

【问题讨论】:

  • 您是否调用了装载高度或准备好?如果准备就绪,您可能会在图像加载之前获取高度,在这种情况下高度将不够高
  • @Pete,首先谢谢。我设法发现问题属于我使用的 CSS 文件,因为我在 JSFiddle 中测试了一个类似的代码并且它有效..然后我在没有调用我的 CSS 文件的情况下进行了测试并且效果很好..但是使用 CSS 文件它没有不。请参阅以下图片:s24.postimg.org/jl2fqdtv9/image.pngs24.postimg.org/hhs0ipu2d/image.png - 第一张图片有 CSS 文件,第二张没有。

标签: javascript jquery html css html2canvas


【解决方案1】:

已解决

我的代码实际上是正确的,问题出在我使用的 CSS 文件上。 为了避免这种情况,我在将 div 转换为图像时删除并再次调用该文件。

// $= means that ends with
("link[href$='my.css']").remove();

html2canvas($container, {
    onrendered: function(canvas) {

        var data = canvas.toDataURL('image/png');           
        var file = dataURLtoBlob(data);

        // etc

        $('head').append("<link href='" + base_url + "public/css/my.css' rel='stylesheet'/>");
    }
});

【讨论】:

  • 您能否分享一些有关导致此问题的 css 规则的更多详细信息?
  • 我不知道,这是在 2014 年:|
  • 对我来说,这种风格导致了问题:iframe{ width: 80vw;高度:100vh; } 这是一个全球性的,所以很难找到。
猜你喜欢
  • 2018-05-20
  • 2014-04-03
  • 2015-03-01
  • 2021-05-05
  • 2012-02-26
  • 1970-01-01
  • 2023-03-28
  • 2021-03-24
  • 2013-09-15
相关资源
最近更新 更多