按钮下载inpage SVG代码作为SVG文件?

时间:2013-08-28 15:48:53

标签: svg d3.js

鉴于最终用户不想检查D3js可视化代码,也不想复制粘贴等。

给定一个D3 <svg>元素,其中包含所有形状和样式(不在任何外部CSS中)。

是否有库/代码允许最终用户点击按钮将代码下载为独立的SVG文件。

该文件应该可以使用Inkscape和其他SVG兼容软件打开。这允许并允许最终用户分叉文件,将其打开到SVG编辑器中并在其上进行更高级的设计。

2 个答案:

答案 0 :(得分:5)

这是一种使用svg-crowbar.js在您的网站上提供按钮以允许您的用户将您的可视化下载为svg的好方法。

0)你需要JQuery。

1)定义按钮的CSS:

.download { 
  background: #333; 
  color: #FFF; 
  font-weight: 900; 
  border: 2px solid #B10000; 
  padding: 4px; 
  margin:4px;
}

2)定义按钮的HTML / JS:

<a
  class="download"
  href="javascript:(function () { var e = document.createElement('script'); if (window.location.protocol === 'https:') { e.setAttribute('src', 'https://rawgit.com/NYTimes/svg-crowbar/gh-pages/svg-crowbar.js'); } else { e.setAttribute('src', 'http://nytimes.github.com/svg-crowbar/svg-crowbar.js'); } e.setAttribute('class', 'svg-crowbar'); document.body.appendChild(e); })();">
    <!--⤋--><big>⇩</big> Download
</a>

以下是对javascript的详细介绍:

javascript:(function (){ 
    var e = document.createElement('script'); 
    if (window.location.protocol === 'https:') { 
        e.setAttribute('src', 'https://rawgit.com/NYTimes/svg-crowbar/gh-pages/svg-crowbar.js'); 
    } else { 
        e.setAttribute('src', 'http://nytimes.github.com/svg-crowbar/svg-crowbar.js'); 
    } 
    e.setAttribute('class', 'svg-crowbar'); 
    document.body.appendChild(e); 
})();

3)你已经完成了。这会产生一个Inkscape可以打开的svg下载。

注意: svg-crowbar.js是从https://rawgit.comhttp://nytimes.github.com加载的;您可能更愿意将其集成到您的网站/文件夹中。

答案 1 :(得分:1)

如果你想在客户端上做所有事情,那么一个选择是使用Javascript使用SVG内容创建HTML blob object,然后将该blob编码为与按钮关联的数据uri或{{1标签。