さくらインターネット+PHPで日本語PDF生成
PHPでPDFを生成する際、さくらインターネットでmPDF
というライブラリが動いたので、メモ。
まず、
http://www.mpdf1.com/mpdf/download
で、mPDFをダウンロードします。結構重たくて13MBほどです。
回答されたMPDFxx
フォルダをそのままサーバにアップします。で、以下の三つのフォルダはパーミッションを調整して書き込みができるようにしておく。
- /ttfontdata/
- /tmp/
- /graph_cache/
単純に日本語化するときには、config.phpで、
$this->useAdobeCJK = true;
としれやれば、それなりにきれいに日本語になる。
独自にフォントを入れたい場合は、つづけて、
http://ossipedia.ipa.go.jp/ipafont/ipafont/download.html
で、IPAフォントをダウンロードします。mpdfのサイトによれば、TTCでもいける、と書いてあるみたいですが、TTFのほうが手堅いみたい(ちゃんと追究していません)。ダウンロードしたファイルは、ttfonts
フォルダに入れておきます。
アップしたMPDFxx
フォルダの中のconfig_fonts.php
をひらいて、
$this->fontdata = array(
の箇所を探して、
"ipa" => array( 'R' => "ipagp.ttf", ),
みたいな感じで、足したフォントファイルを指定します。
次に、config_cp.php
を開いて、
CASE "ja":
の箇所を探して、たぶんこんなふうになっているので、
CASE "ja": if ($adobeCJK) { $unifonts = "sjis,sjisB,sjisI,sjisBI"; }
下記のようにします。
// CJK Langauges CASE "ja": if ($adobeCJK) { $unifonts = "sjis,sjisB,sjisI,sjisBI"; }else{ $unifonts = "ipa,ipaR"; break; }
ここまでが準備。なんかちがうな、とおもったら、本家のヘルプを確認する。
PDFにしたい出力措置の箇所で、mpdf.php
をincludeする。
$html = 'foo'; include("path_to_mpdf/MPDF561/mpdf.php"); $mpdf=new mPDF('ja', 'A4'); $stylesheet = file_get_contents("http://www.example.com/css/pdf.css" ); $stylesheet = mb_convert_encoding($stylesheet, "UTF-8"); $mpdf->WriteHTML($stylesheet,1); $mpdf->WriteHTML($html); $mpdf->Output();
この例では、$htmlに出力したい内容が入っているものとする。また、pdf用のCSSを読んで、適用させている。まだまだ調べている途中だけど、borderとかはあんまりまともに表示されないみたい。
というわけで、以上、かんたんな覚え書き。うまくいかないときには、上述の通り、本家のヘルプをみるか、mPDFで検索するといろいろ事例が出てくる。
ジャンル: Web