MAMPでPDF動的生成 FPDFでヒラギノを出力

PHPで作ったWebアプリケーション たとえば請求書や、賞状などを出力したい場合、HTMLだと味気ないですよね

PHPからの出力選択肢としては
・SVG
・SWF
・PDF
があると思うのですが

SVGがまともに動けば一番よいのかもしれませんが、現状では文字化けやら、ブラウザによって差異があったり、いろいろ問題ありです。

SWFとPDFはいい勝負です。最終的に印刷したいのであれば、複数ページの取り扱いが容易なPDFに軍配が上がります。

PHPから日本語のPDFを作る場合、ポイントがいくつかります。

・フォントの問題
名前を指定するときに HiraKakuPro-W3 とかPostScriptNameで指定します。

ただ、そのフォントをサーバ側で使ってよいかどうかは使用許諾に依存するので、よく調べてから使いましょう。
ちなみに、イントラなどではMAMPを入れたMacをサーバに使えば、フォント問題は解決します。MacにインストールされているOTFフォントすべてにアクセス可能です。
もちろんXAMPでWindowsをサーバにしてもOKです。

・OTF半角文字の横幅問題
なぜか半角文字にたいする横幅情報?がフォントのデフォルト設定を無視するみたいで、いちいち設定する必要があります。
参考までに「HiraKakuPro-W3」用の半角幅情報は以下の通り

(目で見てあわせたのでちょっと適当です。)
〜〜〜〜〜〜〜〜〜〜〜〜〜
(‘ ‘=>278 ,’!’=>299 ,’\”‘=>353 ,’#’=>614 ,’$’=>614 ,’%’=>721 ,’&’=>735 ,
‘\”=>216 ,'(‘=>323 ,’)’=>323 ,’*’=>449 ,’+’=>529 ,’,’=>219 ,’-‘=>380 ,
‘.’=>219 ,’/’=>453 ,’0’=>720 ,’1’=>720 ,’2’=>720 ,’3’=>720 ,’4’=>720 ,
‘5’=>720 ,’6’=>720 ,’7’=>720 ,’8’=>720 ,’9’=>720 ,’:’=>219 ,’;’=>219 ,
‘<'=>529 ,’=’=>529 ,’>’=>529 ,’?’=>486 ,’@’=>744 ,’A’=>680 ,’B’=>604 ,
‘C’=>730 ,’D’=>681 ,’E’=>567 ,’F’=>560 ,’G’=>700 ,’H’=>738 ,’I’=>320 ,
‘J’=>453 ,’K’=>637 ,’L’=>700 ,’M’=>904 ,’N’=>710 ,’O’=>738 ,’P’=>700 ,
‘Q’=>786 ,’R’=>700 ,’S’=>670 ,’T’=>651 ,’U’=>690 ,’V’=>668 ,’W’=>970 ,
‘X’=>681 ,’Y’=>634 ,’Z’=>578 ,'[‘=>316 ,’\\’=>614 ,’]’=>316 ,’^’=>529 ,
‘_’=>500 ,’`’=>387 ,’a’=>569 ,’b’=>640 ,’c’=>600 ,’d’=>565 ,’e’=>580 ,
‘f’=>337 ,’g’=>580 ,’h’=>580 ,’i’=>250 ,’j’=>266 ,’k’=>544 ,’l’=>220 ,
‘m’=>854 ,’n’=>600 ,’o’=>620 ,’p’=>620 ,’q’=>566 ,’r’=>440 ,’s’=>540 ,
‘t’=>400 ,’u’=>575 ,’v’=>512 ,’w’=>760 ,’x’=>503 ,’y’=>529 ,’z’=>453 ,
‘{‘=>326 ,’|’=>380 ,’}’=>326 ,’~’=>387)
〜〜〜〜〜〜〜〜〜〜〜〜〜

PHPからPDFを扱う場合のやり方や、ライブラリーは
http://winofsql.jp/VA003334/phpVarious080825125024.htm
http://shikabo.ddo.jp/73.html

このあたりを参考にしてください。
とても勉強になりました。

デザインされたPDF+MySQL+PHP
これで差し込み印刷も完璧です。

いろいろ実験で作ったので、ノウハウがたまってしまいました、、
Webアプリケーションから綺麗なPDFを出力をしたい という方、お気軽にご相談ください。