Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在PHP-html2Canvas中裁剪图像会复制Google图表文本_Javascript_Php_Jquery_Html2canvas - Fatal编程技术网

Javascript 在PHP-html2Canvas中裁剪图像会复制Google图表文本

Javascript 在PHP-html2Canvas中裁剪图像会复制Google图表文本,javascript,php,jquery,html2canvas,Javascript,Php,Jquery,Html2canvas,我一直在使用html2Canvas将谷歌图表转换为图像,以便稍后将此图像附加到电子邮件中。但是,html2Canvas似乎与我的图表的标题重复,如下所示: 预期正确的图像,如div所示: 转换后的图像(标题重复)来自下面的javascript: 下面是我的javascript代码,用于将div转换为图像: var html = $('#chart_div').html(); html2canvas($('#chart_div'), { onrendered:

我一直在使用
html2Canvas
将谷歌图表转换为图像,以便稍后将此图像附加到电子邮件中。但是,
html2Canvas
似乎与我的图表的标题重复,如下所示:

预期正确的图像,如div所示:

转换后的图像(标题重复)来自下面的
javascript

下面是我的
javascript
代码,用于将div转换为图像:

    var html = $('#chart_div').html();
    html2canvas($('#chart_div'), {
        onrendered: function( canvas ) {
            var img = canvas.toDataURL();
            $("#img-out").append(canvas);
        }
    });

我尝试了几种方法来裁剪图像,包括提供
html2canvas
width和height参数,但这会切断图像的底部和右侧,而不是顶部。我可以做什么来(a)调整重复标题并将顶部裁剪若干像素,或者(b)使其
html2canvas
正确呈现文本?非常感谢您的帮助。

我也遇到了同样的问题,我在这里找到了解决方案:

简而言之,我们的想法是将
NodeParser.prototype.getChildren
方法(版本
0.5.0-alpha1
html2canvas.js
源文件中的第2070到2075行)替换为以下内容:

NodeParser.prototype.getChildren = function(parentContainer) {
    return flatten([].filter.call(parentContainer.node.childNodes, renderableNode).map(function(node) {
        var container = [node.nodeType === Node.TEXT_NODE && node.parentElement.tagName !== "text" ? new TextContainer(node, parentContainer) : new NodeContainer(node, parentContainer)].filter(nonIgnoredElement);
        return node.nodeType === Node.ELEMENT_NODE && container.length && node.tagName !== "TEXTAREA" ? (container[0].isElementVisible() ? container.concat(this.getChildren(container[0])) : []) : container;
    }, this));
};
除非我弄错了,否则这个“修复程序”还没有包含在主版本中,所以它可能有副作用,但在我的情况下,它起到了作用

希望有帮助