7

私はhttp://bl.ocks.org/4061961の D3.JS サイトでブレット グラフの例を使用しています。

ここに画像の説明を入力

私の目標は、Inkscape で編集するために、ブレット グラフ自体を SVG ファイルとして保存することです。phantom.js で rasterize.js の例を使用すると、コードを変更して、ブレット グラフを PNG ファイルに保存し、SVG コードをプログラムで抽出してファイルに保存することができました。以下は、SVG コードを保存する修正済みの rasterize.js ファイルです。

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 に読み込まれません。個々の要素を 1 つのブロックに手動でラップしたため、?xml ヘッダーを追加し、svg 要素を xmlns で修正して、結果のファイルを変更しました。

私は何が欠けていますか?手動で機能させる方法を理解したら、SVG を抽出してヘッダーを書き込むコードを修正する必要があります。

きれいな SVG をプログラムで作成するために rasterize.js (上記) を変更するための他のアイデアやヒントはありますか? ありがとう!

4

2 に答える 2