FPDFの利用(その2)日本語・CSVファイル出力
日本語モジュール
日本語モジュールは本家のこちらのページからダウンロード出来るようです。使い方は、FPDF-Jのこちらのページから引用させていただくと以下のようになります。
- require "fpdf.php" のかわりに require "japanese.php" とします。
- FPDFクラスを使うかわりに FPDF_japaneseクラスを使います。
- AddMBFont()メソッドで、利用するマルチバイトフォントを宣言します。
- 文字列出力前に、SetFont()メソッドで、出力フォントを設定します。
この日本語モジュールには以下のようなサンプルが付属されていました。実際の出力はこちらから見ることが出来ます。
<?php
require('japanese.php');
$pdf=new PDF_Japanese();
$pdf->AddSJISFont();
$pdf->Open();
$pdf->AddPage();
$pdf->SetFont('SJIS','',18);
$pdf->Write(8,'9ヶ月の公開テストを経てPHP 3.0は1998年6月に公式にリリースされました。');
$pdf->Output();
?>
CSVファイルのデータ出力
次にCSVファイルデータを帳票形式に出力するサンプルです。参考にしたのは、Tutorial 2とTutorial 5あたりです。サンプルで使用したCSVファイルは、街区レベル位置参照情報というデータ(横浜市中区)です。GIS関連のことを調べていて見つけたデータです。日本語データが含まれていて、適当な件数のデータだったので使ってみました。サンプルということで御理解下さい。
街区レベル位置参照情報
サンプルで使用したCSVファイル(このサーバ上)
上記データのPDFファイル出力の実行
CSVファイルのデータ出力のPHPプログラム
以下、実際のプログラムです。
<?php
//
// FPDFでの帳票出力サンプル
// データは国土交通省街区レベル位置参照情報の横浜市中区のデータ
// (国土交通省街区レベル位置参照情報については"http://nlftp.mlit.go.jp/isj/"を参照して下さい)
//
//実行環境
define('FPDF_FONTPATH','font/');
//japanese.phpを使用した場合、日本語はSJISしか使えないようです
require('japanese.php');
//この帳票のクラス(PDF_japaneseを継承)
class PDFReport extends PDF_japanese
{
//
//ページごとのヘッダ部分出力
//
function Header()
{
//ページごとのタイトル
$this->SetFont('SJIS','B',16);
//このような固定の文字列をソースで記述する場合もSJISで記述しないと化けます
$this->write(3,"国土交通省 街区レベル位置参照情報 横浜市中区");
//ページごとの項目ヘッダ
$this->SetFont('SJIS','',11);
$header=array('都道府県名','市区町村名','大字・町丁目','街区符号・地番','座標系番号','X座標','Y座標','緯度','経度');
//文字が重ならないように改行
$this->Ln(5);
//上の項目名をそれぞれ出力
foreach($header as $col){
$this->Cell(30,7,$col,1,0,'C');
}
$this->Ln();
}
//
// ページごとのフッタ部分出力
//
function Footer()
{
//下から1.5センチのところ
$this->SetY(-15);
//Arial イタリック
$this->SetFont('Arial','I',9);
//ページ番号
$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
//
// CSVファイルからデータを一括で読み込み
//
function LoadData($file)
{
$handle = fopen($file,"r");
while (($linedata = fgetcsv($handle, 120, ",")) !== FALSE) {
$data[] = $linedata;
}
fclose($handle);
return $data;
}
//
// データを出力
//
function OutputTable($data)
{
$this->SetFont('SJIS','',11);
// データを1項目ずつ出力
foreach($data as $row){
$colCnt = 0;
foreach($row as $col){
//住所部分までは左詰め
if($colCnt<3){
$ass = 'L';
//数値データは右詰め
}else{
$ass = 'R';
}
$this->Cell(30,6,$col,1,0,$ass);
$colCnt++;
}
$this->Ln();
}
}
}
//帳票作成、出力
//オブジェクト生成
$pdf=new PDFReport('L');
$pdf->AliasNbPages();
//データ読み込み
$data=$pdf->LoadData('./14104_2006.csv');
//フォント設定
$pdf->AddSJISFont();
//ページ追加
$pdf->AddPage();
//データ出力
$pdf->OutputTable($data);
//出力
$pdf->Output();
?>
次は、mbfpdfを使ってみます。次へ移動
関連サイト
本家サイト
日本語での情報交換を行うためのサイト
FPDI
FPDF + FPDI でPDF帳票を作成
PHP tools PDF関連情報
以上、作者の方々、いろいろな情報を公開されている皆様には大変感謝致します。ありがとうございます。
Webプログラミング関連記事
Posted by nishida at 22:38:21


