2011-05-05 164 views
0

我有一个非常类似的问题,如this post;我使用RaphaelJS生成图表,但更具体地说,在我的情况下,我需要打印结果。我已经使用Inkscape's command line utility(它非常出色)将Raphael的SVG输出转换为PNG文件,用户可以下载并打印该文件。在.NET中将VML转换为SVG

问题是,它适用于Firefox等,但不适用于Internet Explorer。由于IE使用VML而不是SVG,Inkscape在用户来自IE时不会转换它。

我已经看过IECapt,可能已经完成了这项工作,但是在我的场景中,字面截图不够,因为生成的图表通常跨越多个屏幕宽度,我需要将它全部放在一个文件中。此外,用户可以通过点击节点等来修改图表,而无需更改URL,所以实际上在我的情况下使用IECapt将需要URL参数来复制图表的状态。

我只需要从VML格式转换我的头,我可以擦拭这个项目!

链接

回答

2

您可以转换VML通过这SVG:http://sourceforge.net/projects/vectorconverter/,从这个问题采取:Are there any tools to convert legacy VML to SVG?,然后运行它通过Inkscape获取PNG版本。

编辑:vectorconverter工具是基于PHP的,但使用XSLT进行繁重的工作--VML和SVG只是XML的底层 - 所以如果你不能直接访问PHP库,你可能会设法重用XSLT用你选择的语言。

+1

谢谢你;我应该提到我已经看过这篇文章,并且看了一下Vector Converter,但是似乎只有支持PHP的平台才能使用VC?我正在研究企业内部网,并且无法支持PHP。 **编辑**:我刚刚看到您的编辑。如果我能找到任何东西,我会看看。 – Arj 2011-05-05 13:07:40

+1

我不是一个.NET的人,所以我害怕我无法帮到那里。似乎应该不会太难阅读XML足以确定您是否拥有SVG或VML,然后在处理inkscape之前运行XSLT(如果它是VML)。如果你有能力在这个部署环境中编写你自己的JS,你实际上可能会在客户端执行VML - > SVG转换(IE有一个内置的XSLT引擎),不过我会推荐后端处理if尽可能。 – peteorpeter 2011-05-05 13:19:20

+0

感谢您的帮助,我现在只是对XSLT进行一些研究。你认为这样做会是正确的吗? http://www.w3schools.com/xsl/xsl_client.asp - (滚动到“在浏览器中将XML转换为XHTML”)。 我有权访问VectorConverter使用的xslt文件,因此它应该只是使用正确文件的情况? – Arj 2011-05-05 14:04:04