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));
};
除非我弄错了,否则这个“修复程序”还没有包含在主版本中,所以它可能有副作用,但在我的情况下,它起到了作用
希望有帮助