STAFF BLOG スタッフブログ

HTMLから小粋なPDFを生成するたった1つの冴えないやり方

17年間無事故無違反で免許証がそろそろブラックカードになりそうなペーパードライバーの吉田です。

QriptではWEBサービスに限らず業務システムもサーバサイドにphpを使う事がほとんどです。
要件定義の中でクライアントからの要望が多いのが、
作成した資料を印刷するためにPDFで出力したい!
見積書、納品書、売上帳票、etc...ペーパーレスの実現はもう少し先なのが現状です。

phpでPDFを生成するとなると、いろいろなライブラリが存在します。
今までの案件では手軽に使えてサンプルやドキュメントも整っているTCPDFを使ってきたのですが、HTMLでの表現力が低いのとHTMLの書き方に癖があり限界を感じていました。
そこでwkhtmltopdfを利用したHTMLから小粋なPDFの出力方法を紹介いたします。

準備するもの

  1. CentOS6.4がインストールされたサーバ1台
  2. エラーに負けない強い心

wkhtmltopdfのインストール

[sourcecode language="plain"]wget https://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.10.0_rc2-static-amd64.tar.bz2[/sourcecode]

※環境に合わせてダウンロードするファイルをお選びください。
※最新の「0.11.0-rc1」は厄介なバグがあるため利用しません。

ダウンロードしたファイルを解凍し、パスの通る場所にコピー&実行権限を与える。

[sourcecode language="plain"]tar xvjf wkhtmltopdf-0.10.0_rc2-static-amd64.tar.bz2<br />sudo mv wkhtmltopdf-amd64 /usr/bin/wkhtmltopdf<br />sudo chmod 777 /usr/bin/wkhtmltopdf[/sourcecode]

早速実行してみましょう。

[sourcecode language="plain"]wkhtmltopdf -h[/sourcecode]




エラーコードに心が折れましたか?

実行に必要なライブラリをインストール

[sourcecode language="plain"]sudo yum install xz urw-fonts libXext openssl-devel libXrender[/sourcecode]

こんどこそ!実行してみましょう。

[sourcecode language="plain"]wkhtmltopdf -h[/sourcecode]

ヘルプが...キタ━━ヽ(゚ω゚)ノ━━!!

HTMLページのPDF化

みんな大好きYahooをPDFに変換しましょう。(ヤフオク以外使ってない)

[sourcecode language="plain"]khtmltopdf http://yahoo.co.jp yahoo.pdf[/sourcecode]

しばし待つ・・・。
早速出来上がったyahoo.pdfを見てると・・・。
これはヒドイ!
サーバに日本語がインストールされてなかったので、レイアウトしか見れない。

日本語フォントをインストール

フォントインストール方法はIPAフォントのページを参照するのが手っ取り早いです。
http://ipafont.ipa.go.jp/fontinstall.html

※と言うか説明するのが面倒になってきた。

HTMLページのPDF化再び

[sourcecode language="plain"]wkhtmltopdf http://yahoo.co.jp yahoo2.pdf[/sourcecode]

出来上がったyahoo2.pdfを見てると・・・。
微妙な違いはあれど、ほとんど再現できている。スゴイ!

最後に

ホームページをPDF化してみましたが、当然ローカルのHTMLファイルもPDFに変換できます。
ということは・・・phpなどでHTMLを生成し、そのHTMLファイルをwkhtmltopdfでPDFに変換すれば、
デザイナーさんやコーダーさんに作ってもらったナウでヤングなデザインのPDFも簡単に作れます。
帳票だけならもっと簡単で便利方法もあるんですが、それはまた別の機会に・・・。

INDEXブログ一覧へ
CONTACTお問い合わせはこちら