| ☆ |
FPDFとは
|
|
FPDFとはphpスクリプトからPDFファイルを生成できるライブラリです。
フリーソフトですので、無料で使用できますが、標準では日本語をサポートしていません。
しかし、airwhite氏が日本語拡張のフリーソフトmbfpdf.phpを作成してくれました。
このページでmbfpdf.phpについて解説していきたいと思います。
mbfpdf.phpのドキュメントの中に「著作権は放棄」という記述がありますので、
ここからもダウンロード可能なようにしておきます。
mbfpdf.phpのダウンロードは
こちら から
|
| ☆ |
インストール方法
|
|
インストールは次の手順で行います。
あくまでも1例であり、「こうすべき」というものではありません。
解説に使用した環境はWindowsXP SP2+アパッチ2.0.55+php5.1.2です。
-
http://www.fpdf.org/の「Downloads」へ行き、
v1.51 (2002-08-03) のzipをダウンロードしてください。
最新バージョンでも良いのですが、mbfpdf.phpが1.51をターゲットに作られたものなので、念のためです。
「Downloads」には、日本語マニュアルもありますので、あわせてダウンロードしておきましょう。
-
ダウンロードしたfpdf151.zipを展開してできたフォルダfpdf151をphpフォルダ(筆者の環境ではc\:php)に移しましょう。
-
mbfpdf.phpが含まれているmbfpdf10b.zipを展開してください。
-
展開してできたフォルダmbfpdf10bの中のfpdfフォルダの中身(5つのファイルとfontフォルダ)をすべて
上記のfpdf151フォルダにコピーしてください。
「このフォルダには既に'font'フォルダが存在します。」のメッセージが出ますので、
「すべて上書き」をクリックしてください。
-
php.iniを修正します。
include_path=".;C:\PHP\fpdf151"
を追加します。筆者の環境ではPEARが入っているので、
include_path=".;C:\PHP\pear;C:\PHP\fpdf151"
のように修正しました。
-
アパッチを再起動してください。
以上でインストール環境です。
|
| ☆ |
簡単なテスト
|
|
-
mbfpdf10b.zipに含まれていたexja.phpをアパッチのDocumentRootフォルダにコピーしてください。
-
ブラウザを起動し、アドレスバーに
http://localhost/exja.phpを
入力してください。
次のように表示されれば成功です。
|
| ☆ |
FPDF付属のチュートリアルの日本語化
|
|
-
FPDFに含まれていたtutorialフォルダをアパッチのDocumentRootフォルダにコピーしてください。
-
tutorialフォルダにある.phpファイルを修正します。tuto1.phpを例に解説します。
このファイルはUTF-8で保管してください。
-
次の行は不要なので、コメント化します。
//define('FPDF_FONTPATH','../font/');
-
次の行は置き換えます。
//require('../fpdf.php');
require('mbfpdf.php');
-
次の行は置き換えます。
//$pdf=new FPDF();
$pdf=new MBFPDF();
-
次の行を追加します。
$pdf->AddMBFont(GOTHIC ,'SJIS');
-
次の行は置き換えます。
//$pdf->SetFont('Arial','B',16);
$pdf->SetFont(GOTHIC,'B',16);
-
次の行を日本語化します。
//$pdf->Cell(40,10,'Hello World!');
$str = '日本語';
/* 内部文字エンコーディングからSJISに変換 */
$str = mb_convert_encoding($str, "SJIS");
$pdf->Cell(40,10,$str);
-
ブラウザを起動し、アドレスバーに
http://localhost/tutorial/tuto1.phpを
入力してください。
次のように表示されれば成功です。
修正後のtuto1.phpのダウンロードは
こちら から
|
| ☆ |
実用的なサンプル
|
|
次のようなテキストファイルを用意します。このファイルはSift-JISで保管します。
1行目は印刷文書のタイトルです。
2行目は各列の幅(全角換算の文字数)です。
3行目はデータを右寄せにするか(R)左寄せにするか(L)の指定です。
4行目は列見出しで、5行目からデータが始まります。
各列はタブで区切ります。
サンプルを実行すると次のような表示が得られます。
この図は少々見づらいですが、ページフッターに「ページ数/総ページ数」があります。
また、2ページ目にも文書タイトルと列見出しが印刷されています。
これはMBFPDFの拡張クラスLISTPDFを作成し、Header()関数とFooter()関数をオーバーライドすることで実現しています。
データ部の印刷では何行目を印刷しているかなどは意識する必要はありません。
詳しくはサンプルをダウンロードしてもらうこととして、
ちょっとしたコツを紹介します。
$pdf = new LISTPDF('L','pt');
上記のコマンドは用紙を横長に設定し、単位をポイントに変更します。
単位をポイントに変更することにより、セル幅指定が幅×ポイント数で指定できるようになります。
その分、LISTPDFクラスのFooter()関数が若干分かりづらくなっていますが、「こんなもんだ」と思ってください。
実際にサンプルをダウンロードしてデータを書き換えるなり、ポイント数を変更するなりして試してください。
サンプルのダウンロードは
こちら から
|