我正在使用D3.JS网站上的子弹图示例http://bl.ocks.org/4061961:
var page = require('webpage').create(), address, output, size;
if (phantom.args.length < 2 || phantom.args.length > 3) {
console.log('Usage: rasterize.js URL filename');
phantom.exit();
} else {
address = phantom.args[0];
output = phantom.args[1];
page.open(address, function (status) {
if (status !== 'success') {
console.log('Unable to load the address!');
} else {
window.setTimeout(function () {
page.render(output);
var results = page.evaluate(function(){
return document.getElementById('chart').innerHTML
})
console.log(results);
phantom.exit();
}, 200);
}
});
}
上述JS代码存储在“rasterize.js”中,并在命令行中提供给phantomjs.exe以创建SVG和PNG文件。
> phantomjs.exe rasterize.js bullet.html bullet.png > bullet.svg
这里有一个链接指向存储在GIST上的“bullet.svg”文件: https://raw.github.com/gist/4178632/08396404f40210a801ef36aeee526d9f128952a8/bullets.svg 您可以将此文件保存到本地驱动器并在浏览器中查看。
然而,目前存储的文件无法在Inkscape中加载。我通过添加?xml头并修改带有xmlns的svg元素来修改了结果文件,还手动将单个path元素包装到单个g块中。
我错过了什么?一旦我弄清楚如何手动使其工作,我就需要修改提取SVG的代码以获取标题写入。
其他修改rasterize.js(上面)以编程方式编写干净的SVG程序的想法或提示?谢谢!
<div id="bullets">
中。我会期望这对Inkscape来说是个障碍,不是吗?你尝试过不使用这个div吗? - meetamit