在 .NET 中将 VML 转换为 SVG 时出现问题
我有一个与这篇文章非常相似的问题;我正在使用 RaphaelJS 生成图表,但更具体地说,在我的情况下,我需要打印结果。我使用了 Inkscape 的命令行实用程序(非常棒)将 Raphael 的 SVG 输出转换为PNG 文件,用户可以下载并打印。
问题是,它可以在 Firefox 等浏览器中运行,但不能在 Internet Explorer 中运行。由于 IE 使用 VML,而不是 SVG,因此当用户来自 IE 时,Inkscape 不会对其进行转换。
我看过 IECapt,它很可能已经完成了这项工作,但在我的场景中,文字屏幕截图是不够的,因为生成的图表通常跨越屏幕宽度,而我需要将其全部放在一个文件中。用户还可以通过单击节点等来修改图表,而无需更改 URL,因此在我的情况下实际使用 IECapt 需要 URL 参数来复制图表的状态。
我只需要了解一下 VML 格式的转换,然后我就可以从这个项目中解脱出来了!
链接
- 使用 Inkscape 直接从 C# 应用程序
- IECapt
I have a very similar problem as this post; I'm using RaphaelJS to generate a chart, but more specifically in my case I need to print the result. I have used Inkscape's command line utility (it's excellent) to convert Raphael's SVG output to a PNG file, which the user can download and print.
The problem is, it works in Firefox etc. but not Internet Explorer. Because IE uses VML, not SVG, Inkscape won't convert it when the user is coming from IE.
I have had a look at IECapt which might well have done the job, but a literal screenshot wouldn't be enough in my scenario as the generated chart normally spans more than a screen width and I need it all in one file. Also the user can modify the chart by clicking on nodes etc without changing the URL, so actually using IECapt in my case would require URL parameters to replicate the state of the chart.
I just need to get my head around this conversion from the VML format and I can wipe my feet of this project!
Links
- Using Inkscape directly from a C# application
- IECapt
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以通过以下方式将 VML 转换为 SVG:http://sourceforge.net/projects/vectorconverter/,摘自这个问题:有没有任何工具可以将旧版 VML 转换为 SVG?,然后通过 Inkscape 运行它以获取 PNG 版本。
编辑:vectorconverter 工具基于 PHP,但使用 XSLT 来完成繁重的工作 - VML 和 SVG 只是底层的 XML - 因此,如果您无法直接访问 PHP 库,您可能可以设法以以下语言重用 XSLT:你的选择。
You can convert the VML to SVG via this: http://sourceforge.net/projects/vectorconverter/, taken from this question: Are there any tools to convert legacy VML to SVG?, then run it through Inkscape to get the PNG version.
Edit: The vectorconverter tool is PHP-based but uses XSLT for the heavy lifting - VML and SVG are just XML under the hood - so if you can't access the PHP libraries directly you could probably manage to reuse the XSLT in the language of your choice.