npmにもnode-wkhtmlというモジュールがあるけど、child_processを使ってサックリと
wkhtmltoimageは/usr/bin/wkhtmltoimageにインスコ済の前提で
wkhtmltoimage.js
var chunks = new Array();
var convert = require('child_process').spawn('/usr/bin/wkhtmltoimage', ['--format', 'jpg', '--quality', '100', 'https://www.google.co.jp/', '-']);
convert.stdout.on('data', function(chunk){
chunks.push(new Buffer(chunk));
});
convert.stderr.on('data', function(data) {
})
convert.on('exit', function(code){
var data = Buffer.concat(chunks);
console.log('data:image/jpeg;base64,');
console.log(data.toString('base64'));
});
Google先生のトップページをJPEG形式でキャプった画像がdataURL形式で取得できる
spawnのオプション配列でPNG形式にできたり、ブラウザのサイズや出来上がりの画像サイズを調整したり
convert.on('exit')のコールバックにcodeという引数があるが、これはwkhtmlto*プロセスのexit codeで0以外だと404とか色々あったことがわかる
JavaScriptの実行遅延なども含めてキャプチャ完了までに数秒オーダーで時間がかかるので、Webアプリにする場合はgearmanのworkerとして動かしたり、リクエストをXHRで投げるとかやってる