wkhtmltopdf 0.9.0 beta2 を Macで動かす


http://webkit.org/images/icon-gold.png
wkhtmltopdf は指定したURLのWebページをPDFに変換してくれる便利なコマンドです。現在最新の 0.9.0 beta2 版の Mac用バイナリーは用意されていませんのでソースから作ってみました。

wkhtmltopdfは SafariChrome で使われている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 コマンドです。