【问题标题】:Problems converting VML to SVG in .NET在 .NET 中将 VML 转换为 SVG 的问题
【发布时间】:2011-08-19 08:59:16
【问题描述】:

我有一个与this post 非常相似的问题;我正在使用 RaphaelJS 生成图表,但更具体地说,在我的情况下,我需要打印结果。我使用Inkscape's command line utility(非常棒)将 Raphael 的 SVG 输出转换为 PNG 文件,供用户下载和打印。

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

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

我只需要了解从 VML 格式的转换,我就可以擦掉这个项目的脚!

链接

【问题讨论】:

    标签: internet-explorer svg raphael vml inkscape


    【解决方案1】:

    您可以通过以下方式将 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您选择的语言。

    【讨论】:

    • 谢谢你;我应该提到我已经看过那篇文章并查看了 Vector Converter,但似乎只有支持 PHP 的平台才能使用 VC?我正在开发一个无法支持 PHP 的公司 Intranet。 编辑:我刚刚看到你的编辑。如果我能找到任何东西,我会看看。
    • 我不是 .NET 人,所以我恐怕帮不上忙。似乎不应该太难读入 XML 以确定您是否有 SVG 或 VML,然后在处理 inkscape 之前运行 XSLT(如果它是 VML)。如果您有能力在此部署环境中编写自己的 JS,您实际上可能会在客户端进行 VML--> SVG 翻译(IE 具有内置的 XSLT 引擎),但如果我建议后端处理,如果完全有可能。
    • 感谢您的帮助,我现在正在研究 XSLT。你认为这样的事情会沿着正确的路线去做吗? w3schools.com/xsl/xsl_client.asp - (滚动到“在浏览器中将 XML 转换为 XHTML”)。我可以访问 VectorConverter 使用的 xslt 文件,所以它应该只是使用正确文件的情况?
    • 应该可以。我想,在将 VML 路由到那里之前,您仍然需要一些逻辑来嗅探它,或者只使用条件 cmets。您还可以查看johannburkard.de/software/xsltjsjongma.org/webtools/jquery/xslt。作为警告,像这样的客户端代码很容易成为 IE 6-7 老化的 JS 引擎的瓶颈(8 还不错)。如果你能处理这个服务器端,你可能会避免一些头痛。
    猜你喜欢
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    相关资源
    最近更新 更多