PHP : TCPDF の Cell で一覧表を印字するサンプル

  ダウンロードと日本語マニュアル



TCPDF

ダウンロード( sourceforge.net )
日本語マニュアル


TCPDF は FPDF を元にしているので、基本的なメソッドをまずそちらで知っておくと良いと思います。

FPDF

FPDF

サンプルで使用している MySQL は、Windows 用のもので、DB は uff-8 です。
MySQL5.14 販売管理データ登録済みセットのダウンロード


関連する記事

PHP : TCPDF の Cell を使って位置指定印字を行うサンプル





  社員一覧表



syain.php ( utf8n )
<?php
//**********************************************************
// require の 検索パスを設定
//**********************************************************
$path = "C:\\user\\lightbox\\web\\tcpdf_5_3_010";
set_include_path(get_include_path() . PATH_SEPARATOR . $path);

//**********************************************************
// TCPDF ライブラリ
//**********************************************************
require_once('tcpdf/config/lang/eng.php');
require_once('tcpdf/tcpdf.php');

//**********************************************************
// Windows の場合は MySQL用の外部ライブリをロード
//**********************************************************
if ( substr(PHP_OS,0,3) == 'WIN' ) {
	if ( !extension_loaded( "mysql" ) ) {
		dl("php_mysql.dll");
	}
}

//**********************************************************
// MySQL 接続文字列
//**********************************************************
$Server = 'localhost';
$DbName = 'lightbox';
$User = 'root';
$Password = 'password';

//**********************************************************
// 接続
//**********************************************************
$Connect = @mysql_connect( $Server, $User, $Password );
if ( !$Connect ) {
	header( "Content-Type: text/html; Charset=euc-jp" ); 

	mb_language( "ja" );
	mb_internal_encoding("UTF-8");
	$str = mb_convert_encoding( "接続エラーです", "euc-jp", "utf-8" );
	print $str;

	exit();
}

//**********************************************************
// 必要なら、DB からのキャラクタセットを変換する
// ( PHP 5 >= 5.2.3 ) で利用可能
// ※ DB が utf8でソースもutf8 なら必要ありません
// ※ php5.2.3 より前なら mb_convert_encoding で日本語を
//   変換します
//**********************************************************
// mysql_set_charset("utf8", $Connect);
//mysql_set_charset("eucjpms", $Connect);
//mysql_set_charset("cp932", $Connect);

//**********************************************************
// DB選択
//**********************************************************
mysql_select_db( $DbName, $Connect );

//**********************************************************
// クエリ
//**********************************************************
$query = "select 社員マスタ.*,DATE_FORMAT(生年月日,'%Y-%m-%d') as 誕生日";
$query .= " from 社員マスタ";
$result = mysql_query($query, $Connect);

//**********************************************************
// PDFオブジェクトを作成
//
// TCPDF __construct(
// [string $orientation = 'P'],
//   P or PORTRAIT(縦:既定)
//   L or LANDSCAPE(横))
// [string $unit = 'mm'],
//   pt: ポイント
//   mm: mm(既定)
//   cm: cm
//   in: インチ
// [mixed $format = 'A4'],
//    4A0 | 2A0 | A0 | A1 | A2 | A3 | A4(既定) | A5 | A6 | A7 | A8 | A9 | A10
//   | B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7 | B8 | B9 | B10
//   | C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10
//   | RA0 | RA2 | RA3 | RA4 | SRA0 | SRA1 | SRA2 | SRA3 | SRA4
//   | LETTER | LEGAL | EXECUTIVE | FOLIO 
// [boolean $unicode = true],
// [String $encoding = 'UTF-8'],
// [boolean $diskcache = false]) 
//

//**********************************************************
$pdf = new TCPDF(
	PDF_PAGE_ORIENTATION,
	PDF_UNIT,
	PDF_PAGE_FORMAT,
	true,
	"UTF-8",
	false
); 
//**********************************************************
// ヘッダーとフッターは無し
//**********************************************************
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);

//**********************************************************
// ページコントロール用変数
// 
// $line_no は次に印字する行
// ※ この場合タイトル行数も含む
//**********************************************************
$line_no = 0;
$line_max = 10;

//**********************************************************
// 1ページ目(ページの追加)
//**********************************************************
$pdf->AddPage();

//**********************************************************
// 日本語データを扱うので、使うフォントを
// 日本語フォントに設定する
//**********************************************************
$pdf->SetFont('arialunicid0', '', 8);

//**********************************************************
// データの出力
//**********************************************************
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {

	// ここでは既にデータが存在する事が確定しているので、
	// 初回および最大印字行数をオーバーしている場合はヘッダを印字する
	if ( $line_no == 0 || $line_no > $line_max ) {
		user_titie( $pdf );
	}

	// 社員名出力
	$pdf->Cell(15,5,$row['社員コード'],1,0,'L');
	$pdf->Cell(20,5,$row['氏名'],1,0,'L');
	$pdf->Cell(30,5,$row['フリガナ'],1,0,'L');
	$pdf->Cell(10,5,$row['所属'],1,0,'L');
	$pdf->Cell(10,5,$row['性別'],1,0,'C');
	$pdf->Cell(20,5, user_number_format($row['給与']),1,0,'R');
	$pdf->Cell(20,5, user_number_format($row['手当']),1,0,'R');
	$pdf->Cell(10,5,$row['管理者'],1,0,'L');
	$pdf->Cell(25,5,$row['誕生日'],1,1,'L');

	// 次の印字行
	$line_no++;

}

while ($line_no <= $line_max ) {
	$pdf->Cell(15,5,"",1,0,'L');
	$pdf->Cell(20,5,"",1,0,'L');
	$pdf->Cell(30,5,"",1,0,'L');
	$pdf->Cell(10,5,"",1,0,'L');
	$pdf->Cell(10,5,"",1,0,'C');
	$pdf->Cell(20,5,"",1,0,'R');
	$pdf->Cell(20,5,"",1,0,'R');
	$pdf->Cell(10,5,"",1,0,'L');
	$pdf->Cell(25,5,"",1,1,'L');
	// 次の印字行
	$line_no++;
}

//**********************************************************
//PDFを出力
// Output(
// [string $name = 'doc.pdf'],
// [string $dest = 'I'])
// I: ブラウザに出力する(既定)、
// D: ブラウザで(強制的に)ダウンロードする。
// F: ローカルファイルとして保存する。
// S: PDFドキュメントの内容を文字列として出力する。
//**********************************************************
$pdf->Output("sample.pdf", "I");

//**********************************************************
// MySQL 接続解除
//**********************************************************
mysql_close($Connect);


//**********************************************************
// タイトル部印字関数
//**********************************************************
function user_titie( $pdf ) {

	global $line_no;

	// 初回以外は改ページ
	if ( $line_no != 0 ) {
		$pdf->AddPage();
	}

	$pdf->SetFont('arialunicid0', '', 40);
	$pdf->Text(40,0,"社員一覧表");
	$pdf->Ln();
	
	$pdf->SetFont('arialunicid0', '', 8);
	$pdf->Cell(15,5,'社員CD',1,0,'L');
	$pdf->Cell(20,5,'氏名',1,0,'L');
	$pdf->Cell(30,5,'フリガナ',1,0,'L');
	$pdf->Cell(10,5,'所属',1,0,'L');
	$pdf->Cell(10,5,'性別',1,0,'C');
	$pdf->Cell(20,5,'給与',1,0,'R');
	$pdf->Cell(20,5,'手当',1,0,'R');
	$pdf->Cell(10,5,'管理者',1,0,'L');
	$pdf->Cell(25,5,'生年月日',1,1,'L');

	$line_no = 3;

}

//**********************************************************
// カンマ編集( 空文字は 0 )
//**********************************************************
function user_number_format($param) {

	if ( trim($param) == '' ) {
		$param = "0";
	}

	return number_format($param);

}

//**********************************************************
// Cell メソッドの引数
//**********************************************************
// $w 矩形領域の幅 
// $h 矩形領域の高さ 
// $txt 印字するテキスト 
// $border 境界線で囲むか否かを指定する。以下のどちらかを指定:
// 0: 境界線なし(既定)
// 1: 枠で囲む
// または、以下の組み合わせで境界線を指定する:
// L: 左
// T: 上
// R: 右
// B: 下
//  
// $ln 出力後のカーソルの移動方法を指定する:
// 0: 右へ移動(既定)、但しアラビア語などRTLの場合は左へ移動
// 1: 次の行へ移動
// 2: 下へ移動
//  
// $align テキストの整列を以下のいずれかで指定する
// L or 空文字: 左揃え(既定)
// C: 中央揃え
// R: 右揃え
// J: 両端揃え
 
// $fill 矩形領域の塗つぶし指定 [0:透明(既定) 1:塗つぶす] 
// $link 登録するリンク先のURL、もしくはAddLink()で作成したドキュメント内でのリンク 
// $stretch テキストの伸縮(ストレッチ)モード:
// 0 = なし
// 1 = 必要に応じて水平伸縮
// 2 = 水平伸縮
// 3 = 必要に応じてスペース埋め
// 4 = スペース埋め
// 
// $ignore_min_height 「true」とすると矩形領域の高さの最小値調整をしない 

?>















   SQLの窓    create:2010/06/14  update:2015/11/02   管理者用(要ログイン)





フリーフォントWEBサービス

SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ