在 C# 中使用 XSLT 将 RVML 转换为 SVG

2024-04-02

我有一个 C# Web 应用程序,它使用以下命令生成 SVG 代码拉斐尔·JS http://www.raphaeljs.com,然后我需要将其转换为 PNG 以实现用户之间的一般互操作性(请参阅我之前的问题在这里 https://stackoverflow.com/questions/5898029/problems-converting-vml-to-svg-in-net also)

问题在于,Internet Explorer 生成的是 RVML 代码,而不是看似标准的 SVG 代码。我的解决方案可以在 Firefox 和其他浏览器中成功运行Inkscape 的命令行实用程序 http://inkscape.modevia.com/inkscape-man.html将普通 SVG 文件转换为 PNG。但 Inkscape 不会从 RVML 转换。

因此,除了重写我的应用程序以避免 RahaelJs 之外,接下来要做的合乎逻辑的事情是在通过 Inkscape 运行之前将 RVML 转换为 SVG。为此,我发现本文 http://www.xmlfiles.com/articles/cynthia/xslt/default.asp,并使用了页面顶部附近的代码示例。我用来转换 RVML 文件的 XSL 文件是矢量转换器 http://sourceforge.net/projects/vectorconverter/您可以下载并查看。

我应该提到没有运行时错误 - 所有文件都输出在正确的位置,即来自服务器端 XSLT 转换的 XML -> SVG,以及来自 Inkscape 转换的 SVG -> PNG。

总结一下情况,当通过 Firefox 浏览时 - 没问题 - 当通过 Internet Explorer 浏览时,由 XML->SVG 转换生成的 SVG 文件输出有效的 SVG 文件,但 SVG 标签内没有实际内容。我的问题是其他人是否成功完成了这项任务,或者是否有人对我做错了什么有任何建议?

Thanks


是的,我们在一个项目中做了完全相同的事情。问题是 RapahelJS 生成的 VML 应该稍微改变一下,以适应 VectorConverter 方案(顺便说一句,我们使用了该工具的第二个版本中包含的方案)。以下是我们在实际转型之前所做的更改:

string clearedVml = new Regex("<rvml.*/rvml:group>")
    .Match(rafaelOutputVml)
    .Value
    .Replace("rvml:", "v:")
    .Replace("class=rvml", "")
    .Replace("filterMatrix", "");

之后,转换结果应插入以下标记中:

        private const string vmlFormat = 
@"
<?xml version=""1.0""?>
<HTML xmlns:v = ""urn:schemas-microsoft-com:vml"" xmlns=""http://www.w3.org/1999/xhtml"">

<HEAD>
<STYLE>v\:* {{
    BEHAVIOR: url(#VMLRender)
}}
</STYLE>
</HEAD>
<BODY>
{0}
</BODY>
</HTML>
";
...
var sReader = new StringReader( String.Format( vmlFormat ,clearedVml ).Trim() );

现在才应该执行到 SVG 的实际转换。

希望能帮助到你

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中使用 XSLT 将 RVML 转换为 SVG 的相关文章

随机推荐

  • 在 C 中访问嵌套结构中的项目

    我尝试访问另一个结构中的 下一个 但失败了 尽管我尝试了很多方法 这是嵌套结构 struct list head struct list head next prev typedef struct char key char value s
  • 从 django 中的 url 获取应用程序名称

    我知道如何在 django 中使用 url 解析来获取 url 名称 我想以类似的方式处理来自某个应用程序的所有请求 所以我想我可以通过从 url 获取应用程序名称来做到这一点 我怎样才能做到这一点 路径你会很头痛 因为你必须应用很多分割
  • [ valueForUndefinedKey:]:此类对于键 AppointmentDate 不符合键值编码。 - 迅速

    我想对对象数组进行排序 下面是我对对象数组进行排序的函数 class func Fn SortByParameter arrayToSort NSMutableArray paramName NSString isAscending Boo
  • 四舍五入到 0.5

    我有一个结果 1 444444 我想将此结果舍入为 1 5 这是我使用的代码 a text String round 13000 9000 0 但这是四舍五入到 1 0 我需要四舍五入到 1 5 和这段代码 a text String ce
  • 属性。有什么有用的目的?

    Under System Runtime InteropServices the
  • Vim 显示:ImportError:没有名为 site 的模块。当我使用 Canopy1.1 时

    我在Windows Xp 32中安装了Canopy 1 1 express 并使用vim作为编辑器 当我打字时 python print hello 在vim命令行中显示 Importerror No module named site然后
  • Flutter Android SDK 版本 28 错误,但我使用的是 30

    当我创建一个新的 flutter 应用程序时 它启动 android sdk 版本 28 但我使用 android sdk 30 Flutter doctor 还显示了平台 android 30 build tools 30 0 2 当我尝
  • dll文件的描述

    您好 如何在 dll 文件中查找类的描述 在我的项目中 我在 imagealg dll 中使用 diff calss 告诉我如何找到那个的描述 plz 找到该类的描述的最佳位置是在文档中
  • Eclipse 自动建议并填写变量名称

    好的 所以我的问题是当我创建一个变量时 例如 Object o 当我输入 o 时 它会建议类似 object 的内容 没关系 但是当我按空格时 它会自动填充新名称 基本上我不想关闭自动完成 我只想禁用空格自动填充建议 甚至禁用变量命名建议也
  • 如何使用 C# 在 Excel 图表上添加多个系列

    我想添加一个如下图所示的图表 该图表有 3 个系列 黑色 红色 蓝色 以下是在图表上创建 一个 系列的代码块 Excel Workbook oWorkbook Excel Workbook oSheet Parent Excel Chart
  • 捕获最后一个 WM_SIZE

    当我调整窗口大小时 我想告诉程序的另一部分我的窗口大小已更改 我继续读下去MSDN http msdn microsoft com en us library ms632646 VS 85 aspx that WM 尺寸 留言WM SIZE
  • 将 less-plugin-glob 与 Webpack 结合使用

    我正在尝试将现有项目的构建系统从gulp to webpack 它当前有一个入口点 less 文件 可导入各种其他文件 如下所示 import bower components bootstrap less bootstrap less i
  • 即使在索引字段上,MongoDB 排序也非常慢

    今天我遇到了这个问题 我的 MongoDB 查询速度非常慢并且超时 我发布了这个问题 MongoDB 记录太多 https stackoverflow com questions 11701103 mongodb too many reco
  • iPhone 中的 jpg 图像和 2x 图像

    我正在开发 iphone 应用程序并定位iOS 4 0或稍后 我正在尝试将图像添加到 UIImageView 并且图像位于jpeg格式 这就是我到目前为止所做的 UIImageView bgImageView UIImageView all
  • Div 溢出滚动到底部:可能吗?

    如果我有一个div with overflow auto使其成为可滚动的div我加载它的信息会形成一个重要的滚动区域 有没有一种方法可以在我加载信息时 div显示底部结果 或者基本上滚动到底部 我见过 jQuery 解决方案 但这是在 HT
  • 如何让图片大小在滚动时平滑变化?

    我有带有大徽标的标题 我想在滚动超过 100px 后将其变小 这工作正常但不流畅 我怎样才能做到平滑 我的代码 function window scroll function if this scrollTop gt 100 header
  • AngularJS 登录表单与 ng-click 不起作用

    我在这个插件中写了一个基本的登录表单http plnkr co edit xQEN1ZNN5ZEw1CSwNw97 p preview http plnkr co edit xQEN1ZNN5ZEw1CSwNw97 p preview 单击
  • 如何在改造多部分请求中发送对象数组

    I want to send array objects with multipart data I tried many ways but it is not working My issue with the contributor p
  • 如何为Android Studio构建模板项目

    我使用 Android Studio 我必须创建许多始终包含三个模块的项目 应用程序 应用程序 图书馆 图书馆 壁纸 应用程序 我知道可以使用 ADT 来构建活动模板等 我找到了一些类似的教程this https android arsen
  • 在 C# 中使用 XSLT 将 RVML 转换为 SVG

    我有一个 C Web 应用程序 它使用以下命令生成 SVG 代码拉斐尔 JS http www raphaeljs com 然后我需要将其转换为 PNG 以实现用户之间的一般互操作性 请参阅我之前的问题在这里 https stackover