一連の SVG ドキュメントを PNG 画像にラスタライズする新しい Windows マシンをセットアップしました。Ariya Hidayat のラスタライズスクリプトを次のように簡略化しました。
var page = require('webpage').create(),
system = require('system'),
fs = require('fs'),
svgPath, output;
if (system.args.length < 3 || system.args.length > 5) {
console.log('Usage: rasterize.js URL output');
phantom.exit(1);
} else {
svgPath = fs.workingDirectory + '/' + system.args[1];
output = system.args[2];
page.viewportSize = { width: 600, height: 120 };
if (!fs.isFile(svgPath)) {
console.log(svgPath+' does not exist');
phantom.exit(1);
}
page.onLoadFinished = function() {
page.render(output);
console.log('thumbnail created');
phantom.exit(0);
};
page.open(svgPath);
}
そして、これが私がスクリプトを呼び出す方法です:bin\phantomjs js/headless/rasterize.js "simple.svg" "simple.svg.png" 2>&1
simple.svg
このデータが含まれています:
<svg width="110" height="60" id="simple" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<rect x="10" y="10" height="50" width="100" style="stroke:#ff0000; fill: #0000ff"/>
</svg>
スクリプトが (エラーなしで) 実行されるsimple.svg.png
と、次のようにレンダリングされます。
これは非常に奇妙で、前のマシンでサムネイルが正しく生成されていたと確信しています。SVG のソース コードをレンダリングするだけなのはなぜですか?