有没有办法在任何浏览器(包括较旧的IE)中将Raphael纸张结果转换为PNG/SVG?

Ale*_*zzo 5 javascript svg vml raphael

我见过很多人都在为这件事而斗争,但我找不到合适的解决方案,也找不到符合我需要的解决方案.

我正在用Raphael做一些图表,我基本上需要将它们作为PNG(用于导出,或稍后用于PDF,以及其他一些东西).对于Firefox,Chrome,IE 9以及任何其他支持SVG的浏览器都很简单.实际上有两种实现方法:使用canvg将SVG渲染为canvas元素,然后获取图像数据; 或者将SVG发送到服务器(C#)并使用库来栅格化它.

问题当然是IE 8和7.在这些浏览器中,Raphael输出VML,并且显然没有办法获得SVG源.我找不到任何VML光栅化器,所以它让我只有一个解决方案:将VML转换为SVG,或者在SVG中重绘纸张.

我检查了vectorconvert库PHP,它实际上使用XSLT转换将VML转换为SVG,但我无法使其工作(我已经尝试了几种工具来测试XSL,但似乎都没有工作).

我试图迫使拉斐尔输出SVG到隐藏的div,通过改变其性质.type,.svg以及.vml适当的,但也不能工作.

我认为在IE中可能有一种方法可以将SVG树写入隐藏的DIV中; 尽管浏览器不会显示它,但文本应该在那里.

有谁知道实现它的方法?谢谢!

swi*_*ift 1

要渲染SVG,您还可以使用CanVG库。
它是SVG解析器和渲染器,具有画布结果输出。
接下来,您可以简单地将像素数据从canvas输出到PNG

要解决 IE 限制,您可以使用Chrome Frame