我正在使用Highcharts,并且需要将页面上的所有图表转换为图片,以便我可以将其发送到服务器,然后将其合并到包含某些表格和透视网格的主导出Excel中。
这是我目前的代码。
这是我测试从客户端正确获取数据的C#代码(我只是将base64字符串写入文件)。Firefox和Chrome可以正确地写入图像,而IE只会给我一个黑色的图像。
var svg = Highcharts.getSVG(charts);
img = new Image();
img.src = "data:image/svg+xml," + encodeURIComponent(svg);
mycanvas = document.createElement('canvas');
mycanvas.width = 1000
mycanvas.height = 1000
ctx = mycanvas.getContext("2d");
ctx.drawImage(img, 0, 0);
$("body").append("<image src='" + mycanvas.toDataURL("image/png") + "'/>");
$.ajax({
type: "POST",
url: '@Url.Action("getfile")',
data: JSON.stringify({ file: mycanvas.toDataURL("image/png").replace("data:image/png;base64,", "") }),
contentType: 'application/json; charset=utf-8'
});
这是我测试从客户端正确获取数据的C#代码(我只是将base64字符串写入文件)。Firefox和Chrome可以正确地写入图像,而IE只会给我一个黑色的图像。
public void getfile(string file)
{
System.IO.File.WriteAllBytes(@"c:\yourfile.png", Convert.FromBase64String(file));
}
你可以在这里找到完整的代码 http://jsfiddle.net/gd7bB/2291/
图像在 Firefox 和 Chrome 中似乎生成得不错,但在 IE 中却不能正常显示(我只能看到黑色的图像)。我正在使用一个画布,从我搜集到的信息来看,IE 是支持 IE9 对 HTML5 画布标签的支持。
如果你能帮我找出问题所在,或者指引我更好的解决方案,我将非常感激。