さくらインターネット+PHPで日本語PDF生成

PHPでPDFを生成する際、さくらインターネットでmPDFというライブラリが動いたので、メモ。

まず、

http://www.mpdf1.com/mpdf/download

で、mPDFをダウンロードします。結構重たくて13MBほどです。

回答されたMPDFxxフォルダをそのままサーバにアップします。で、以下の三つのフォルダはパーミッションを調整して書き込みができるようにしておく。

単純に日本語化するときには、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