【问题标题】:How to convert inline SVG on the server?如何在服务器上转换内联 SVG?
【发布时间】:2013-06-15 19:45:33
【问题描述】:

我需要在其他元素上将生成的内联 SVG 设置为 background-image,如 in this example 所示。由于这仅在 Chrome 中有效,因此我需要其他方法将客户端绘制的 SVG 设置为 background-image

另一个可能更简单的内联 SVG 是 seen here 的 RaphaelJS 演示。

<svg height="480" version="1.1" width="640" xmlns="http://www.w3.org/2000/svg" style="overflow: hidden; position: relative; top: -0.90625px;"><desc style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Created with Raphaël 2.1.0</desc><defs style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></defs><rect x="0" y="0" width="640" height="480" r="10" rx="10" ry="10" fill="#ffffff" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><circle cx="320" cy="240" r="60" fill="#223fa3" stroke="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); stroke-opacity: 0.5;" stroke-width="80" stroke-opacity="0.5"></circle></svg>

是否可以将服务器上的内联 SVG(由 RaphaelJS 在客户端创建)转换为“真实”的 SVG 文件?它是一个 Windows (.NET/c#) 服务器环境,应在其上进行转换。

编辑

正如 Robert Longson 注意到的那样,我错过了 charset=,此外,我似乎使用了错误的函数 (encodeURI) 来编码内联 SVG。

为了完整起见,此处设置适用于我的 background-image 的代码片段

var svgUrl = 'url("data:image/svg+xml;charset=utf8,' + encodeURIComponent($('#raphaelPaper').html()) + '")';
$('#pictureDummy').css('background-image', svgUrl);

【问题讨论】:

  • 为什么不简单的获取&lt;svg&gt;节点的内容,保存在服务器端的.svg文件中呢?
  • @Blackhole 看起来内联的&lt;svg&gt;.svg 文件内容不一样。我已经尝试保存它,但 Inkskape 和任何浏览器都无法打开该文件。我对 SVG 的内容并不深入,但看起来仅仅保存是不够的。
  • 我刚刚找到了一个名为Raphael.Export 的库。看起来它可以将客户端生成的 SVG 导出到 .svg 文件。但不确定它是否适用于我生成的东西。只是尝试。

标签: c# css svg raphael background-image


【解决方案1】:

它仅适用于 Chrome,因为您的数据 URL 是 invalid。它应该像这样开始......

data:image/svg+xml;charset=utf8,%3Csvg

您缺少charset= 部分。您可以考虑将其报告为blink bug

这是corrected version

【讨论】:

  • 看起来你的提示通常解决了我的问题。但是,我在 IE 上生成的 SVG 存在问题。您的更正版本在 IE 上运行良好。但是,如果我在 IE 上动态创建 SVG,则不再通过设置背景图像来工作。查看评论末尾的 jsfiddle 以了解不工作的 IE 版本。它适用于我测试过的其他浏览器。 IE 中生成的 SVG 与我在最初的问题和您的更正版本中使用的 SVG 完全不同。知道 IE 可能有什么问题吗? jsfiddle.net/tBc3g
  • 欢迎提出其他问题。在 cmets 中很难提问和回答。
  • 我为此创建了一个后续问题。如果可以看看会很棒。我无法找出 IE 出了什么问题。 stackoverflow.com/questions/17269613/…
猜你喜欢
  • 2013-11-29
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 2019-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多