SOFTELメモ

Softel Inc.

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では修正済みとのこと。そのうちバイナリの方にも反映されるでしょう。

関連するメモ

コメント