我见过很多人都在为此事而斗争,但我找不到合适的解决方案,也找不到符合我需求的解决方案。
我正在使用Raphael做一些图表,我基本上需要将它们作为PNG(用于导出,或稍后用于PDF,以及其他一些东西)。对于Firefox,Chrome,IE 9以及任何其他支持SVG的浏览器都很简单。实际上有两种实现方法:使用canvg将SVG渲染为canvas元素,然后获取图像数据;或者将SVG发送到服务器(C#)并使用库来栅格化它。
问题当然是IE 8和7.在这些浏览器中,Raphael输出VML,显然没有办法获得SVG源。我找不到任何VML光栅化器,因此它只给我一个解决方案:将VML转换为SVG,或者在SVG中重绘纸张。
我检查了一下PHP的vectorconvert库,它实际上使用XSLT转换将VML转换为SVG,但我无法使它工作(我已经尝试了几种工具来测试XSL,但似乎都没有工作)。
我试图通过正确更改其属性.type
,.svg
和.vml
来强制Raphael将SVG输出到隐藏的div,但这也不起作用。
我认为在IE中可能有办法将SVG树写入隐藏的DIV;尽管浏览器不会显示它,但文本应该在那里。
有谁知道实现它的方法?谢谢!
答案 0 :(得分:1)
要呈现 SVG ,您还可以使用CanVG库
它是 SVG 解析器和渲染器,带有 canvas 结果输出。
接下来,您只需将 canvas 中的像素数据输出到 PNG 。
要解决IE限制,您可以使用Chrome Frame。