6

我有一些用 D3js 创建的图表,我想通过 JavaScript 将其转换为 PNG 图像,以便用户下载图表。

我见过将 SVG 转换为画布并将画布转换为图像的解决方案。这对我不起作用,因为 SVG 使用类来设置元素的样式(由于可维护性,我不想更改),这会导致整个画布变成黑色,线条很粗。

是否可以直接将 SVG 图表转换为 PNG?

该页面位于 Ruby on Rails 项目中,因此它不必是纯 JavaScript 解决方案,但我更喜欢使用 JavaScript 执行此操作,因此我也可以在其他项目中实现它。

4

1 回答 1

2

要在画布中显示您的 svg,您首先必须使用解析器/渲染器实用程序进行转换,例如http://code.google.com/p/canvg/

(代码改编自:Convert SVG to image (JPEG, PNG, etc.) in the browser)

// the canvg call that takes the svg xml and converts it to a canvas
canvg('canvas', $("svg").html());

// the canvas calls to output a png
var canvas = document.getElementById("canvas");
var img = canvas.toDataURL("image/png");
于 2013-12-22T01:13:39.257 回答