なんでこんなにPDFばっかやってんだか…。
Ruby + Prawn でのPDF出力がイマイチうまくいかなかったのでPHPでのPDF出力に変更。自分のRubyスキルと英文読解スキルが低いのが原因かと思うが…。
PHPでのPDF出力は以前FPDF+FPDIでやっていたので同じのを使おうかと思ったが、FPDFの後継でTCPDFができたよーんというので使ってみることにした。
参考リンク:
・TCPDF
・TCPDF Documentation
・TCPDF Examples
・IPAフォント
インストール
PHPが動く環境があることを前提に。1.TCPDFをダウンロード、解凍する。
2.適当なフォルダに配置する。
私はバッチで使うつもりなので「適当なフォルダ」としましたが、Webで使う場合はWebから参照できるフォルダに配置(通常はそうだよね)
Webで使う場合は、以下のように変更
・フォルダ全体のアクセス権をWebサーバーのサービスを起動するユーザー/グループに付与する。
・TCPDFフォルダには読み取り専用アクセス権とする(chmod -R 644)
・cache、imagesフォルダは書き込み可能とする(chmod -R 666)
原文:
Post Installation
Once the installation is completed you must:
* Change the files' owner/group so they can be executed by the webserver.
* set as read-only the entire TCPDF folder (chmod -R 644 in POSIX systems);
* properly set the write permissions for the following folders where TCPDF will have to write (chmod -R 666 in POSIX systems):
o cache
o images
* point your browser to one of the example files to chek if it's all OK (i.e. http://www.yoursite.com/tcpdf/example/example_001.php)
フォントの用意
日本語フォントを用意します。今回はIPAのフリーフォントを使用。TCPDFを解凍したフォルダの中の /fonts/utils に変換EXE(ttf2ufm.exe)があるのでこれを使ってフォントを変換。
DOS窓から
ttf2ufm.exe -a -F ipamp.ttfダーーーッとメッセージが出ます。WarningとかErrorっぽいのも出ますが無視。
次に同じフォルダにある makefont.php を実行
php -q makefont.php ipamp.ttf ipamp.ufm※phpへのPATHを通しておいてくださいね。
実行すると、3つファイルができます。
・ipamp.z
・ipamp.ctg.z
・ipamp.php
※.ctg.zのファイルは原文を読む限り無い場合もあるらしい(if available と書いてある)
3つのファイルをTCPDFのfontsフォルダにコピーして終了。
以上でサンプルをいくつか動かして確認する。
WindowsXPでphp.iniの内部エンコーディングをSJIS、PHP実行ソースもSJISにて実行したところ日本語は文字化けした(TCPDFのデフォルト文字コードがUTF-8なので)
回避策としては
・環境はSJISで実行用PHPのソースをUTF-8N(BOMなし)にする(姑息な技)
・環境はSJISで日本語をmb_convert_encodingでUTF-8にする(これが正当かね〜)
・環境ごとUTF-8にする(既に他のプログラムが動いていたりすると…う〜ん)
・TCPDFのconfigを書き換える(原文読むのがメンドイ)
私はmb_convert_encodingにしときます。
続き:PHP + TCPDF + FPDI + FPDI_Template