実は仕事でwkhtmltopdfを使っているのですが、プログラマーから「レイアウトが崩れる」との連絡を受けて調査したところ、CSSのletter-spacingの処理に不具合があって文字間が正しく開かないことが判明しました。使っていたバージョンは現在のところ安定版としてバイナリが上がっている最新で0.12.2.1でした。で、いろいろ調査をするとgitに上がっているソースからコンパイルすれば正常動作するらしいとの情報を得たので挑戦。OSはCentOS6な環境でCentOS6なバイナリを作成します。
ところが、そもそもソースからはCentOS6なバイナリは作れなくなっている模様。そこで、Generic Linuxなバイナリを作成します。ソースはgitを使って持ってきます。
git clone --recursive https://github.com/wkhtmltopdf/wkhtmltopdf.git
その後、コンパイルをしてみます…
cd wkhtmltopdf scripts/build.py setup-schroot-generic
普通の ./configure → make;make install じゃないところがアレだけど、まぁいいです。すると…
This can only be run on a 64-bit Debian/Ubuntu distribution, aborting.
って怒られる。は?DebianかUbuntuな環境じゃないとコンパイル出来ないの?マジで?
仕方ないので、AWS EC2にDebianなインスタンスを立てますが、ここで早とちりしてDebian Wheezyな環境を作ってしまってアウト。実はDebian Jessieじゃないとダメなんだそうです。鬱陶しい…
また、インスタンス作成からやり直してDebian Jessieな環境を作ってgitからソースを持ってきてコンパイルです。
git clone --recursive https://github.com/wkhtmltopdf/wkhtmltopdf.git cd wkhtmltopdf scripts/build.py setup-schroot-generic scripts/build.py linux-generic-amd64
で、待つこと約5時間(t2.microなインスタンスの場合)、ようやく出来上がりました。完成したものはstatic-build配下に圧縮ファイルとして出来上がるので、そこから対象のサーバーにコピーして使います。今回は…
static-build/wkhtmltox-0.12.3-dev-8f03630_linux-generic-amd64.tar.xz
ってな感じで出来上がりました。もちろん正常動作しましたよ。良かった良かった。
実は、wkhtmltopdfをソースからコンパイルする方法って日本語サイトには全然なくて苦労したので、ここに残しておくことにしました。皆さんの参考になればと思います。
ちなみにAWSなインスタンスでコンパイルしたのはコンパイルが終わって用無しになった後も、後日再コンパイルする必要が出たときのために残しておきたいのと、用無しの間は止めておけば課金されないのでお財布にも優しいと言うことで選んでいます。時間課金のIaaSであればどこでも良いかとは思います。
コメント