D3js:如何生成独立的SVG文件?(Node.js)
,例如:
var square= function() { var svg = window.d3.select("body")
.append("svg")
.attr("width", 100)
.attr("height", 100);
svg.append("rect")
.attr("x", 10)
.attr("y", 10)
.attr("width", 80)
.attr("height", 80)
.style("fill", "orange");
}
square();
svg { border: 1px solid grey;} /* just to visualized the svg file's area */
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<body></body>
回答:
Github存储库
可以尝试。
D3完全不关心实际生成SVG的原因。仅创建SVG的主要问题是您不能使用Javascript,这当然意味着您不能使用D3。除了基本的禁忌外,没有什么可以阻止您了:)
受其他答案的启发,下面是一些使用jsdom的概念验证代码。
curl http://npmjs.org/install.sh | sh #this should work (not tested)
$npm install jsdom
:
var jsdom = require('jsdom');jsdom.env(
"<html><body></body></html>",
[ 'http://d3js.org/d3.v3.min.js' ],
function (err, window) {
var svg = window.d3.select("body")
.append("svg")
.attr("width", 100).attr("height", 100);
svg.append("rect")
.attr("x", 10)
.attr("y", 10)
.attr("width", 80)
.attr("height", 80)
.style("fill", "orange");
// PRINT OUT:
console.log(window.d3.select("body").html());
// fs.writeFileSync('out.svg', window.d3.select("body").html()); // or this
}
);
$node jsdom.node.js > test.svg
stdout输出是SVG,然后将其注入到test.svg文件中。任务完成。
正如Gilly在评论中指出的那样,您可能需要jsdom的版本3才能起作用。
以上是 D3js:如何生成独立的SVG文件?(Node.js) 的全部内容, 来源链接: utcz.com/qa/424317.html