ヘプタゴンの技術ブログ

サーバ/ネットワーク/linux/AWSとか青森を拠点でやってます

LinuxコマンドからWEBサイトのスクリーンショットを作成

WEBサイトのスクリーンショットを
Linuxのコマンドからとれるコマンドを見つけ、
なんかに使えそうだなと思い試してみました。

以下pdfへの変換コマンドですが、pngへ変換できるコマンドもあるようです。

wkhtmltopdf

環境:CentOS6.3(64bit)

wget wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2

tar xvf wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2

./wkhtmltopdf-amd64 http://heptagon.co.jp /var/www/html/test.pdf

でOKのはずが、

./wkhtmltopdf-amd64: error while loading shared libraries: libXrender.so.1: cannot open shared object file: No such file or directory

のエラーが。。。

yum install libXrender.so.1 libXext libXrender

で、足りなそうなものを入れて再度実行すると、

./wkhtmltopdf-amd64: error while loading shared libraries: libfontconfig.so.1: cannot open shared object file: No such file or directory

のエラーが、、、

yum install libfontconfig.so.1 fontconfig

で、再度実行すると、
Loading pages (1/6)
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)

QPixmap: Cannot create a QPixmap when no GUI is being used===] Page 1 of 1
QPixmap: Cannot create a QPixmap when no GUI is being used
QPixmap: Cannot create a QPixmap when no GUI is being used
QPixmap: Cannot create a QPixmap when no GUI is being used
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::setRenderHint: Painter must be active to set rendering hints
QPainter::translate: Painter not active
QPainter::setPen: Painter not active
QPainter::setBrush: Painter not active
QPainter::setWorldTransform: Painter not active
QPainter::setOpacity: Painter not active
QPainter::setFont: Painter not active
Segmentation fault

のエラーが。

他のサイトによると、最新版ではうまく動かないらしいので、
さっさと諦めて、


wget wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.10.0_rc2-static-amd64.tar.bz2

tar xvf wkhtmltopdf-0.10.0_rc2-static-amd64.tar.bz2

でダウングレードしてみると、コマンドは成功!

しかし、pdfが文字化け。。。

日本語フォントを入れてみる。


wget ossipedia.ipa.go.jp/ipafont/ipafont/IPAfont00303.php
unzip IPAfont00303.zip

cp IPAfont00303/*ttf /usr/share/fonts/

./wkhtmltopdf-amd64 http://heptagon.co.jp /var/www/html/test.pdf
<div>
これで、文字化けずにpdfが生成されました。
とりあえず月次報告書用の(いつも月初に取り忘れる)グラフとかに
使ってみようかな。