1

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

这个问题说你可以,但不是如何。 将 d3.js SVG 代码转换为独立程序——有什么建议吗? google groups 有更多提示,但没有示例。

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

我的 JavaScript、d3.js、SVG、CSS 和其他 HTML 内容的 API 阅读列表已经很多了——我要做的就是保存一个用 d3.js 生成的 .svg 图像。

请帮忙。

4

3 回答 3

0

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

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

诀窍是获取您的 JavaScript/HTML 接口,使其跟踪您创建的所有对象,或者能够序列化所有对象,然后将该数据(例如:通过 ajax)发送到服务器端程序,该程序将将其重构为 SVG 文件并提供下载。

挑战在于,您的程序(客户端、javascript 和服务器端:php/etc.)或多或少都必须重新实现 SVG 规范以使其正常工作,并且对您如何将其序列化为传播。几乎没有库存组件可以为您做到这一点。

于 2012-06-18T02:04:53.910 回答
0

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

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

它使用 HTML5 文件保护程序界面。

于 2012-06-26T20:54:58.043 回答
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>
于 2020-12-10T12:48:29.890 回答