MBFPDFからTCPDFに移行

以前までMBFPDFを利用してPDF出力していたのですが、
YahooYUIのRich Text Editorを利用してリッチテキストで編集したhtmlを
出力することになりTCPDFに移行する作業。


残念ながらMBFPDFは活用できなかったのですが、
FPDIはそのまま使えました。

[参考]http://makisuke.seesaa.net/article/106821444.html


いくつかMBFPDF固有の関数を変更しましたが、
それほど大きな修正は必要なかったです。
FPDIを使わずにやろうとすると、
最初から作ったほうが早いレベルでの修正が必要だった。
FPDIさん対応してくれてありがとう。


ただし、MultiCell関連は修正が必要。
autopaddingが良くわからない動きをするのでfalseにするためだけにオーバーライド。

//************************************
//	MultiCellを上書き、オートパディングをfalseにする
//************************************
public function MultiCell($w,$h,$txt,$border =0,$align ="J",$fill =0,$ln =1,$x ="",$y ="",$reseth =true,$stretch =0,$ishtml =false,$autopadding = false,$maxh =0){
		parent::MultiCell($w,$h,$txt,$border,$align,$fill,$ln,$x,$y,$reseth,$stretch,$ishtml,$autopadding,$maxh);
}

それに関連して細かい位置の修正


あとはフォントの用意。
使いたいフォントがttfファイルなら問題ないですが、
ttcファイルを使いたい場合はまずファイルを分割する必要があります。

[参考]http://www.orchid.halfmoon.jp/wiki/deki808_05.html


分割して出来上がったttfファイルを元に以下のコマンドを実行

ttf2ufm.exe -a -F ms-mincho.ttf
php -q makefont.php ms-mincho.ttf ms-mincho.ufm 0

[参考]
http://vertex.air-nifty.com/blog/2008/08/php_tcpdf_5ba7.html
http://labs.mythos-jp.com/blog/archives/241

※最後の0はフォント埋め込みを行わないという指示
フォントの埋め込みを行うとファイルサイズがとんでもないことになるので0がいい。
ただし、埋め込まないとフォントがユーザー環境に依存してしまうので
IPAとかを利用すると反映されないです。


最後に出力するphp上でフォントをセットすればフォントは反映されます。

$pdf->SetFont( "font", "", 16 );

このフォント名は、makefontで出来上がったphpのファイル名でいいみたいです。


ただし、一点注意が。
TCPDFに関するリファレンス・ドキュメントに以下のように書いてあります。

5. フォント・ファイル名を調整します。
 4.までで作ったフォントのphpファイルが myfont.php だとすると、

myfont.php : レギュラー
myfontb.php : ボールド
myfonti.php : イタリック
myfontbi.php : ボールド&イタリック

のようにファイル名を調整します。

これは本家サイトの紛らわしい訳し間違いではないかと。
自分の環境では、
ファイル名を変えただけではBoldにはなりませんでした。
ちゃんと、Bold書体のttfファイルに上記の処理をしてやって、
そうやって作ったファイルの名称の最後に「b」とか「i」とかつけないといけません。

ちなみに、フォントを埋め込まない場合、
ユーザー環境にもそのフォントがないと反映されません。
つまり、フリーフォントなんかは基本ダメですね;