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をダウンロードして確認してみましょう。
若干違和感はあるものの、かなり再現度は高いと思います。