LoginSignup
3
3

More than 5 years have passed since last update.

Node.jsでwkhtmltoimageを使ってWebサイトのキャプチャ画像を取得

Last updated at Posted at 2013-10-27

npmにもnode-wkhtmlというモジュールがあるけど、child_processを使ってサックリと

wkhtmltoimage/wkhtmltopdf

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で投げるとかやってる

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3