<?php
// ***********************************************
//
// プログラム名 : 社員一覧印刷
// 作 成 者 : lightbox
// 作 成 日 : 2014/06/06
//
// 概要 :
// 印刷処理の為のテンプレート
//
// ***********************************************
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );
mb_language( "ja" );
mb_internal_encoding("UTF-8");
// *********************************************************
// TCPDF インストール場所の設定
// *********************************************************
$path = "C:\\user\\web\\tcpdf";
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
require_once('examples/config/tcpdf_config_alt.php'); // 定数定義
require_once('tcpdf.php');
// *********************************************************
// 拡張 TCPDF
// ※ クラス定義は、処理より前に必要です
// *********************************************************
class USER_TCPDF extends TCPDF {
// *************************************
// 位置指定 Cell 印字
// ※ 内部印字位置は保存( 元に戻す )
// *************************************
public function user_text( $x=0, $y=0, $txt='', $w=1, $h=0, $p="L" ) {
$a = $this->GetX();
$b = $this->GetY();
$this->SetXY( $x, $y );
$this->Cell($w, $h, $txt, 0, 0, $p);
$y += $this->getLastH();
$this->SetXY($a,$b);
return $y;
}
}
// ***********************************************
// データベース
// ***********************************************
$server = 'localhost';
$db_name = 'lightbox';
$user = 'root';
$password = 'パスワード';
$connect = @ new mysqli($server, $user, $password, $db_name);
if ($connect->connect_error) {
die('Connect Error (' . $connect->connect_errno . ') '
. $connect->connect_error);
}
// ***********************************************
// 主処理
// ***********************************************
query_print();
// ***********************************************
// データベース読み出しと印字
// ***********************************************
function query_print() {
global $connect;
//****************************************
// インスタンス作成
//****************************************
$pdf = new USER_TCPDF(
"P",
"mm",
"A4",
true,
"UTF-8",
false,
false // PDF/A モード
);
//****************************************
// 設定
//****************************************
$pdf->setFontSubsetting(false);
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
// デフォルトが true なので、デバッグ時に混乱しないように false に設定
$pdf->SetAutoPageBreak(false);
// フォントサイズ
$pdf->SetFont('meiryo001', '', 12);
//****************************************
// 最初のページを作成
// ※これを実行しないと、ページ情報が無い
//****************************************
$pdf->AddPage();
$query = apply_value("select.sql");
$result = $connect->query($query);
// ブラウザに PDF を出力しているので、デバッグ出力はファイルに行う
file_put_contents("log.txt",print_r($result,true));
$counter = 0;
if ( $result->num_rows != 0 ) {
$cur_position = print_header( $pdf );
while ($row = $result->fetch_array(MYSQLI_BOTH)) {
$counter++;
if ( $counter > 40 ) {
$counter = 0;
$pdf->AddPage();
$cur_position = print_header( $pdf );
}
$next_position = $pdf->user_text( 10, $cur_position, $row['社員コード'] );
$pdf->user_text( 28, $cur_position, $row['氏名'] );
$pdf->user_text( 58, $cur_position, $row['フリガナ'] );
$pdf->user_text( 110, $cur_position, number_format($row['給与']), 20, 0, "R" );
$pdf->user_text( 130, $cur_position, number_format($row['手当']+0), 26, 0, "R" );
$pdf->user_text( 160, $cur_position, substr($row['生年月日'],0,10));
$cur_position = $next_position;
}
}
else {
$page_info = $pdf->getPageDimensions();
$cur_position = $page_info['tm']; // トップマージン
$pdf->user_text( 10, $cur_position, "データが存在しません" );
}
// ブラウザへ PDF を出力します
$pdf->Output("syain.pdf", "I");
}
// ***********************************************
// ヘッダ印字
// ***********************************************
function print_header( $pdf ) {
$page_info = $pdf->getPageDimensions();
$row_position = $page_info['tm']; // トップマージン
// 1行目
$next_position = $pdf->user_text( 75, $row_position, "※※ 社員マスター一覧表 ※※" );
$row_position = $next_position;
// 2行目
$next_position = $pdf->user_text( 0, $row_position, "" );
$row_position = $next_position;
// 3行目
$next_position = $pdf->user_text( 10, $row_position, "コード" );
$pdf->user_text( 28, $row_position, "名前" );
$pdf->user_text( 58, $row_position, "フリガナ" );
$pdf->user_text( 110, $row_position, "給与", 20, 0, "R" );
$pdf->user_text( 130, $row_position, "手当", 26, 0, "R" );
$pdf->user_text( 160, $row_position, "生年月日");
$row_position = $next_position;
return $row_position;
}
// **********************************************************
// テキストファイル内の文字列を取得
// **********************************************************
function apply_value( $path ) {
$value = file_get_contents( $path );
$value = str_replace('"', '\\"', $value );
eval("\$value = \"$value\";");
return $value;
}
?>