Html 将d3.js SVG代码转换为独立程序&x2014;实例

Html 将d3.js SVG代码转换为独立程序&x2014;实例,html,svg,d3.js,headless-browser,Html,Svg,D3.js,Headless Browser,使用无头浏览器、google文件系统API或其他方式 这个问题说你可以,但不是怎么做。 谷歌集团有更多的提示,但没有例子 我花了很多时间玩了NodeCanvas示例,以及PhantomJSSVG示例。我不知道如何让他们一起玩。显然,在Linux中,x-windows Javascript呈现引擎无论如何都不是很好 我的JavaScript、d3.js、SVG、CSS和其他HTML内容的API阅读列表已经堆积如山——我只想保存一个用d3.js生成的.SVG图像 请帮忙。这既不容易,也不太复杂。主要

使用无头浏览器、google文件系统API或其他方式

这个问题说你可以,但不是怎么做。 谷歌集团有更多的提示,但没有例子

我花了很多时间玩了NodeCanvas示例,以及PhantomJSSVG示例。我不知道如何让他们一起玩。显然,在Linux中,x-windows Javascript呈现引擎无论如何都不是很好

我的JavaScript、d3.js、SVG、CSS和其他HTML内容的API阅读列表已经堆积如山——我只想保存一个用d3.js生成的.SVG图像


请帮忙。

这既不容易,也不太复杂。主要原因是,只有web浏览器无法从DOM呈现保存SVG文件,除非它是Chrome版本12

SVG图像只是一个纯文本文件,带有一系列的渲染指令。您所指的解决方案基本上是说您必须在服务器端执行此操作。尽管他们建议使用node.js,但您可以使用任何您喜欢的服务器端语言来实现这一点

诀窍是使用JavaScript/HTML界面,让它跟踪您创建的所有对象,或者以其他方式序列化所有对象,然后将数据(例如:通过ajax)发送到服务器端程序,服务器端程序将其重新配置为SVG文件并提供下载


挑战在于,您的两个程序(客户端、javascript和服务器端:php/等)或多或少都必须重新实现SVG规范,以使其正常工作,并就如何为传输序列化它达成共识。实际上没有现成的组件可以为您执行此操作。

有一些使用node().parentNode.innerHTML和64B编码的示例,但我不知道如何使用它。

到目前为止,我找到的最简单的解决方案是FileSaver.js演示:


它使用HTML5 filesaver接口。

我今天遇到了这个问题,我没有尝试过,但也许有人会发现它很有用:

const D3Node=require('d3-node'))
const d3n=new D3Node()//使用container元素初始化D3
d3n.createSVG(10,20).append('g')//createSVG w/'g'标记和宽度/高度
d3n.svgString()//输出:
 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>