HTMLからPDF生成ソフト wkhtmltopdf
wkhtmltopdfはWebKitを使ってHTMLをレンダリングしてPDFを生成する。
"wk"がWebKitのこと、"htmltopdf"はHTMLをPDFにしてくれるっぽい名前ですね。
Windows、Mac、Linux いずれも対応。
ダウンロード
どれをダウンロードするかは、OS、CPUと要相談。
http://code.google.com/p/wkhtmltopdf/
インストール
ダウンロードして解凍したら、そのままコマンドとして使える。
/usr/local/bin などのパスが通っているところにおくと使いやすい。
# cd /usr/local/src # wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.10.0_beta4-static-i386.tar.bz2 # tar jxf wkhtmltopdf-0.10.0_beta4-static-i386.tar.bz2 # mv wkhtmltopdf-i386 /usr/local/bin/wkhtmltopdf
libX11が必要とのこと。なかったらインストール。
# yum install libX11
使ってみる
フォントの指定などは、若干OS側と調整が必要かもしれません。
日本語フォントをあらかじめ取得しておく → 例えば、IPAフォントを/usr/share/fonts/IPAfont00302/ipa*.ttf に保存しておく。
次のようなHTMLを作成してtest.htmlとして保存。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
body {
font-family: "ipapgothic";
}
</style>
</head>
<body>
<h1>見出し:H1</h1>
<p>段落:PDFに日本語。PDFに日本語。PDFに日本語。PDFに日本語。PDFに日本語。</p>
<p>画像を配置:<img src="/tmp/test.gif" /></p>
<table border="1" style="margin:0 auto;">
<tr><th>見出し1</th><th>見出し2</th><th>見出し3</th></tr>
<tr><td>内容1</td><td>内容2</td><td>内容3</td></tr>
<tr><td>内容1</td><td>内容2</td><td>内容3</td></tr>
<tr><td>内容1</td><td>内容2</td><td>内容3</td></tr>
</table>
<p>「高」の漢字も、「髙」の漢字もちゃんと出力される</p>
</body>
</html>
@font-face規則などは使えない(エラーになる)。@pageを使っても用紙の向きは変わらない。
wkhtmltopdfコマンドでHTMLをPDFに変換する。
wkhtmltopdf test.html test.pdf
用紙の向きやサイズはコマンドラインオプションで指定する。
wkhtmltopdf --page-size A4 --orientation Landscape test.html test.pdf
出来上がったPDF → こちら
サンプルには入れていないが、WebKitでレンダリングということでJavascriptまで使えてしまうのがすばらしい。ヘルプにはページ番号をつけるスクリプトの例などがある。
最近まで--page-sizeオプションが効かないという不具合があったらしい。trunkでは修正済みとのこと。そのうちバイナリの方にも反映されるでしょう。