copy
//**********************************************************
// 位置指定印字( 左詰め )
//**********************************************************
function text( $pdf, $x=0, $y=0, $txt='' , $w=1, $h=0 ) {
$a = $pdf->GetX();
$b = $pdf->GetY();
$pdf->SetXY( $x, $y );
$pdf->Cell($w, $h, $txt, 0, 0, 'L' );
$pdf->SetXY($a,$b);
}
//**********************************************************
// 位置指定印字( 右詰め )
//**********************************************************
function textR( $pdf, $x=0, $y=0, $txt='' , $w=1, $h=0 ) {
$a = $pdf->GetX();
$b = $pdf->GetY();
$pdf->SetXY( $x, $y );
$pdf->Cell($w, $h, $txt, 0, 0, 'R' );
$pdf->SetXY($a,$b);
}
関連する記事
PHP : TCPDF の Cell で一覧表を印字するサンプル
syain2.pdf ( 以下のコードで出力したものです )
syain2.php ( utf8n )
<?php
//**********************************************************
// require の 検索パスを設定
//**********************************************************
$path = "C:\\user\\web\\tcpdf_5_5_001";
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;
$data_top = 25;
$data_left = 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 );
}
// 社員名出力
// $data_top : 開始 Y マージン
// タイトルからの距離 + 5
// 行間 * 5
$row_position = $data_top + 5 +($line_no-3) * 5;
text( $pdf, $data_left + 0, $row_position, $row['社員コード'] );
text( $pdf, $data_left + 15, $row_position, $row['氏名'] );
// 右寄せ出力は幅を指定する
textR( $pdf, $data_left + 35, $row_position, user_number_format($row['給与']), 20 );
// 次の印字行
$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;
global $data_top,$data_left;
// 初回以外は改ページ
if ( $line_no != 0 ) {
$pdf->AddPage();
}
// 画像出力
// ファイル名は、http://〜 を指定可能
$pdf->Image(
'./winofsql.png',
10,
3,
0,
0,
'PNG',
'http://winofsql.jp/',
'',
false,
300,
'',
false,
false,
0,
false,
false,
false
);
$pdf->SetFont('arialunicid0', '', 40);
text( $pdf, 40, 0, "社員一覧表" );
$pdf->SetFont('arialunicid0', '', 8);
text( $pdf, $data_left + 0, $data_top + 0, "社員CD" );
text( $pdf, $data_left + 15, $data_top + 0, "氏名" );
textR( $pdf, $data_left + 35, $data_top + 0, "給与", 20 );
$line_no = 3;
}
//**********************************************************
// カンマ編集( 空文字は 0 )
//**********************************************************
function user_number_format($param) {
if ( trim($param) == '' ) {
$param = "0";
}
return number_format($param);
}
//**********************************************************
// 位置指定印字( 左詰め )
//**********************************************************
function text( $pdf, $x=0, $y=0, $txt='', $w=1, $h=0 ) {
$a = $pdf->GetX();
$b = $pdf->GetY();
$pdf->SetXY( $x, $y );
$pdf->Cell($w, $h, $txt, 0, 0, 'L');
$pdf->SetXY($a,$b);
}
//**********************************************************
// 位置指定印字( 右詰め )
//**********************************************************
function textR( $pdf, $x=0, $y=0, $txt='', $w=1, $h=0 ) {
$a = $pdf->GetX();
$b = $pdf->GetY();
$pdf->SetXY( $x, $y );
$pdf->Cell($w, $h, $txt, 0, 0, 'R');
$pdf->SetXY($a,$b);
}
?>