さくらインターネット+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

