D3.js D3至MS边缘上的图像

D3.js D3至MS边缘上的图像,d3.js,microsoft-edge,canvg,D3.js,Microsoft Edge,Canvg,我有下面的代码,并使用它检索D3图像用于PDF文件。在我在Microsoft Edge上试用之前,它一直工作得很好。任何人都会遇到这个问题,或者对如何解决这个问题提出建议。基本上,图像的中心是黑色的 http://code.google.com/p/canvg/ function getChartImage(chartId: string): string { "use strict"; var svg: any = document.querySelector("svg"); var svg

我有下面的代码,并使用它检索D3图像用于PDF文件。在我在Microsoft Edge上试用之前,它一直工作得很好。任何人都会遇到这个问题,或者对如何解决这个问题提出建议。基本上,图像的中心是黑色的

http://code.google.com/p/canvg/
function getChartImage(chartId: string): string {
"use strict";

var svg: any = document.querySelector("svg");
var svgData: any = new XMLSerializer().serializeToString(svg);
var canvas: any = document.getElementById("canvas");
var result: any = canvg(canvas, svgData);

return canvas.toDataURL("text/png");
}
顶部图像使用IE。底部图像使用边缘

编辑:创建要使用的JSFIDLE进行测试。如果使用Edge作为浏览器,则可以看到问题


问题:

因为,它创建了许多属性,包括填充资本。canvg不能正常工作

解决方案:

  • 将所有属性名称(除了驼峰大小写的名称,如viewBox和markerWidth)从大写更改为其他名称 在svgData中使用小写

  • 这一点在美国是不存在的 canvg。但它不保护viewBox中的大写字母B和其他几个驼峰大小写属性。所以你可以合并 由您自己执行该池请求(在viewBox代码中执行异常) 如果你有)并使用它


  • 尝试删除xmlns属性:


    svg='Yes将toLowerCase添加到canvg.js文件修复了该问题。我将需要审查您的其他意见,并做一些测试。谢谢
    
    svg = '<svg id=\"svgId\"