HTMLをPDF化してくれるwkhtmltopdfをCentOSにインストールする

WEBサービスを作っていると、申込書とかのPDFを作りたいことってありますよね。
illustratortとかAcrobatとかで作ることも可能ですが、ソフトを持っていなかったり、作るのが面倒だったりします。
「HTMLで組んだら超簡単にできるのに・・・・」
そんな方にHTMLをPDF化してくれるツールwkhtmltopdfを紹介します。

導入方法

今回インストールする環境

CentOS 6.8にインストールします。

ダウンロード

wkhtmltopdfをダウンロードして、解凍します。
最新ファイルは公式サイトを確認してください。

$ wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
$ tar -xvf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz

ファイルが解凍できない場合はyumなどでxz系ファイルを解凍できるライブラリをインストールしてください。

# Debian 系
$ sudo aptitude install xz-utils liblzma-dev
$ sudo apt-get install xz-utils liblzma-dev
# red had系
$ sudo yum install xz xz-devel

インストール

展開して生成されたフォルダを/usr/local/libに移動します。
移動した後、/usr/local/lib/wkhtmltox/内の所有者をrootに変更します。

# ディレクトリを移動
$ sudo mv wkhtmltox /usr/local/lib/
# 所有者をRootに変更
$ sudo chown root /usr/local/lib/wkhtmltox/ -R

このままだとほかのユーザから使えないので、シンボリックリンクを/usr/local/bin/wkhtmltopdfに貼ります。

sudo ln -s /usr/local/lib/wkhtmltox/bin/wkhtmltopdf /usr/local/bin/wkhtmltopdf

最後に以下のコマンドを入力して、バージョンが表示されたら成功です。

$ wkhtmltopdf --version

私の環境だと問題なく表示されましたが、エラーが出る場合があるらしいです。
その場合は以下のコマンドを実行して見てください。

$ sudo yum install -y libXrender libXext

wkhtmltopdf自体のインストールは以上で完了です。
しかし、インストールしただけだと、多くの場合は日本語対応がされていません。
サーバーに日本語フォントをインストールする必要があります。

日本語のフォントをインストール

今回はIPAのフォントを使います。
最新版のフォントは公式サイトを確認してください。

IPAのフォントをダウンロードして、/usr/share/fontsに移動させます。

$ wget http://dl.ipafont.ipa.go.jp/IPAexfont/IPAexfont00301.zip
$ unzip IPAexfont00301.zip
$ mv IPAexfont00301 /usr/share/fonts

#フォントのキャッシュをクリア
$ fc-cache -f

実行しても一部文字化けしてしまう場合は、yumでインストールしてください。

$ sudo yum install ipa-gothic-fonts ipa-mincho-fonts ipa-pgothic-fonts ipa-pmincho-fonts
#フォントのキャッシュをクリア
$ fc-cache -f

実行して確認

では実際にPDFを生成してみましょう。
YahooのページをPDF化してみます。

$ wkhtmltopdf "http://www.yahoo.co.jp/" sample.pdf

生成されたPDFをダウンロードして確認してみましょう。

若干違和感はあるものの、かなり再現度は高いと思います。