wkhtmltopdf 0.9.0 beta2 を Macで動かす
wkhtmltopdf は指定したURLのWebページをPDFに変換してくれる便利なコマンドです。現在最新の 0.9.0 beta2 版の Mac用バイナリーは用意されていませんのでソースから作ってみました。
wkhtmltopdfは Safari や Chrome で使われているHTMLレンダリングエンジン Webkit を含む Qt を使ってPDFを作っています。 インストールもこのQtのビルドが一番時間がかかります。
1. ソースのダウンロード
http://code.google.com/p/wkhtmltopdf/ から wkhtmltopdf-0.9.0_beta2.tar.bz2 をダウンロードし適当なディレクトリーに展開します。
2. Qtの取得
Linux, Windowsであれば scripts/static-build.sh を実行する事でビルドできますが、Macでは scripts/static-build.sh ファイルを参考にしながら手動でビルドしました。
wkhtmltopdf用にパッチの当ててある Qt を以下のように取得します。730Mbyte ほどあります
git clone git://gitorious.org/+wkhtml2pdf/qt/wkhtmltopdf-qt.git qt
3. Qtのビルド
http://code.google.com/p/wkhtmltopdf/wiki/compilation に書かれている Mac 用 configure を少し変更し Intel Leopard 用の
Qt をビルドします。.configure のオプションは1行で実行して下さい。
時間がかなりかかります。3年前の MacBookProで2時間くらい。
% cd qt % ./configure -sdk /Developer/SDKs/MacOSX10.5.sdk -arch x86 -release -static -fast -no-exceptions -no-accessibility -no-stl -no-sql-ibase -no-sql-mysql -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 -no-qt3support -no-xmlpatterns -no-phonon -no-phonon-backend -webkit -no-scripttools -no-mmx -no-3dnow -no-sse -no-sse2 -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -openssl -graphicssystem raster -opensource -nomake tools -nomake examples -nomake demos -nomake docs -nomake translations -no-opengl -no-dbus -no-framework -no-dwarf2 --prefix=$(pwd)/../qt45/ % gmake % gmake install % cd ..
qt45ディレクトリーにQtライブラリーが作られます。
4. wkhtmltopdfのビルド
qmake を使って Makefileを作ります。
% qt45/bin/qmake
そのままではエラーになってしまうので wkhtmltopdf.pro の19行目を以下のように変更します
PRL = $$[QT_INSTALL_LIBS] libQtGui.prl
Makefileが出来るので make します。しかし、またエラー
src/pageconverter.cc: In constructor ‘PageConverterPrivate::PageConverterPrivate(Settings&, PageConverter&)’: src/pageconverter.cc:54: error: ‘class QWebSettings’ has no member named ‘setPrintingMaximumShrinkFactor’ src/pageconverter.cc:55: error: ‘class QWebSettings’ has no member named ‘setPrintingMinimumShrinkFactor’
とりあえず、src/pageconverter.cc の 53〜56行目をコメントアウトすると makeできます。
作成された wkhtmltopdf.app/Contents/MacOS/wkhtmltopdf がMac用の wkhtmltopdf コマンドです。