将d3.js SVG代码转换为独立程序 - 示例?

时间:2012-06-17 20:16:53

标签: html5 svg d3.js headless-browser

使用无头浏览器,谷歌文件系统API或其他方式。

这个问题说你可以,但不是如何。 Converting d3.js SVG code to a standalone program -- any suggestions? 谷歌小组有更多的提示,但没有例子。

我花了很多时间玩node-canvas示例,以及phantomJS svg示例。我无法弄清楚如何让它们一起玩。显然在Linux中,x-windows Javascript渲染引擎无论如何都不是很好。

我的API,d3.js,SVG,CSS和其他HTML内容的API读取列表已经很多了 - 我想要做的就是保存我用d3.js生成的.svg图像。

请帮助。

3 个答案:

答案 0 :(得分:0)

既不容易也不容易复杂。主要原因是单独的Web浏览器无法从DOM渲染中保存SVG文件,除非它是Chrome版本12。

事情是SVG图像只是一个带有一堆渲染指令的纯文本文件。你指出的解决方案基本上说你必须做这个服务器端。虽然他们建议使用node.js,但您可以使用任何您喜欢的服务器端语言来完成此任务。

Trick是采用你的JavaScript / HTML界面,让它跟踪你创建的所有对象,或者能够序列化所有对象,然后将这些数据(例如:通过ajax)发送到服务器端该程序将重构为SVG文件并提供下载。

挑战在于你的程序(客户端,javascript和服务器端:php /等)都会或多或少地重新实现SVG规范以使其工作并对你如何序列化有共同的理解它用于传输。实际上没有任何库存组件可以帮助您。

答案 1 :(得分:0)

有一些使用带有64B编码的node()。parentNode.innerHTML的例子,但我无法弄清楚如何使用它。 https://groups.google.com/forum/?fromgroups#!topic/d3-js/aQSWnEDFxIc

到目前为止,我发现的最简单的解决方案是FileSaver.js演示: http://eligrey.com/demos/FileSaver.js/

它使用HTML5文件管理器界面。

答案 2 :(得分:0)

我今天遇到了这个,我还没有尝试过,但是也许有人会觉得它有用:

https://github.com/d3-node/d3-node

 const D3Node = require('d3-node')
 const d3n = new D3Node()      // initializes D3 with container element
 d3n.createSVG(10,20).append('g') // create SVG w/ 'g' tag and width/height
 d3n.svgString() // output: <svg width=10 height=20 xmlns="http://www.w3.org/2000/svg"><g></g></svg>