wkhtmltoimageを利用して、Webサイトのスクリーンショットを作成する

今までだとWebサイトのスクリーンショットを作成するのにwordpressの非公式APIを利用していたけど、調べたら「wkhtmltoimage」を使えば自前でもいけそうな感じだったので、導入から動作までのログを残しておく。

wkhtmltoimageとは

htmlをpdfに変換するツールwkhtmltopdfの開発プロジェクトから生まれたhtmlを画像に変換するツール。C++とpythonで作っているみたい。
プロキシ環境下でもBasic認証環境下でもスクリーンショットを作成できるのはいいかも。

ダウンロード~設置まで

Linux環境でこのツールをインストールしてみた
今回のOSは64bitなので、64bit版の方をインストール

$ cd /usr/local/src/
$ wget http://wkhtmltopdf.googlecode.com/files/wkhtmltoimage-0.11.0_rc1-static-amd64.tar.bz2
$ mv wkhtmltoimage-0.11.0_rc1-static-amd64.tar.bz2  wkhtmltoimage-0.11.0_rc1-static-amd64.tar
$ mv wkhtmltoimage-amd64 /usr/bin/wkhtmltoimage

使い方

・URLからスクリーンショットを作成する場合

wkhtmltoimage http://www.google.co.jp/ screenshot.png

・htmlファイルからスクリーンショットを作成する場合

wkhtmltoimage path/to/htmlfile.html screenshot.png

・スクリーンショット作成範囲を指定する場合

wkhtmltoimage --crop-h 300 --crop-w 400 http://www.google.co.jp/ screenshot.jpg

・画質を指定

wkhtmltoimage --quality 100 http://www.google.co.jp/ screenshot.jpg

※詳細なマニュアルはここ(http://madalgo.au.dk/~jakobt/wkhtmltoxdoc/wkhtmltoimage_0.10.0_rc2-doc.html)

これで問題なく動くのだけど、まれに「QPixmap: Cannot create a QPixmap when no GUI is being used」のエラーがでてスクリーンショットが作成できないものがある。

ここらへんでも書いてあるが、
wkhtmltoimage でスクリーンショットを作成しようとすると QPixmap: Cannot create a QPixmap when no GUI is being used と出て空のファイルが作成される場合の解決方法 – WEBLE
どうやら新しいバージョンの問題らしい。

ということで、ひとつ前のバージョンにデグレードしてもう一度試してみたら問題なく動いた。

これを使ってスクリーンショットプラグインを作り直してみようかな。