<?php
// ************************************************
// セッションとキャッシュなし
// ************************************************
session_cache_limiter('nocache');
session_start();
// ************************************************
// 印字関数
// ************************************************
require_once("print.php");
log_out(null);
$rh = 8; // 行間の距離
$hh = 40; // ヘッダーの下の次の印字位置
$rmax = 15; // ページ内の最大明細行数
// ************************************************
// フォント
// 第二引数は フォント・スタイル(空文字で標準)
// http://tcpdf.penlabo.net/method/s/SetFont.html
// ************************************************
$pdf->SetFont('meiryo001', '', 14);
$pdf->AddPage();
// ************************************************
// データベース
// ※ パスの先にデータが無い事は考慮していない
// ************************************************
$url = "https://freebase-654b7.firebaseio.com/class.json";
$file = @file_get_contents($url);
if ( $file !== false ) {
// 連想配列形式で返す
$result = json_decode( $file, true );
if ( $result == null ) {
// テキストのサイズ変更
$pdf->SetFont('meiryo001', '', 20);
// テキストの色
$pdf->SetTextColor(255, 0, 0);
user_text( $pdf, 10, 10, 'データが存在しません' );
$pdf->Output("test_output.pdf", "I");
exit();
}
}
$url = "https://freebase-654b7.firebaseio.com/refdata/syozoku.json";
$file = @file_get_contents($url);
if ( $file !== false ) {
$syozoku = json_decode( $file, true );
// log_out(print_r($syozoku,true));
if ( $syozoku == null ) {
$syozoku = json_decode( '{"0001":"営業部第一","0002":"技術開発","0003":"人事部"}', true );
}
}
// ************************************************
// 印刷用変数
// ************************************************
$counter = 0; // ページ用カウンタ
$lcount = 0; // 行数カウンタ
$sum = 0; // ページ毎合計
$sumall = 0; // 総合計
// 最初のヘッダーを出力して現在位置(y)を取得
$cur_position = print_header( $pdf );
// ************************************************
// 処理ループ
// ************************************************
foreach( $result as $key => $obj ) {
if ( $_GET['fld1'] != '' ) {
if ( mb_strpos($obj["name"],$_GET['fld1'],0,"utf-8") === false ) {
continue;
}
}
$lcount++;
if ( $lcount > $rmax ) {
$counter++;
$lcount = 0;
user_text( $pdf, 108, $cur_position, "ページ計" );
user_text( $pdf, 138, $cur_position, number_format($sum), 20, 0, "R" );
$sum = 0;
// 新しいページ
$pdf->AddPage();
$cur_position = print_header( $pdf );
}
user_text( $pdf, 10, $cur_position, $obj["code"] );
user_text( $pdf, 28, $cur_position, $obj["name"] );
user_text( $pdf, 51, $cur_position, $obj["furi"] );
user_text( $pdf, 95, $cur_position, $syozoku[$obj["syozoku"]] );
if ( $obj["sex"] == "0" ) {
$pdf->Image("man.png", 125+3.2, $cur_position, 5, 5);
}
else {
$pdf->Image("lady.png", 125+3.2, $cur_position, 5, 5);
}
user_text( $pdf, 138, $cur_position, number_format($obj["kyuyo"]), 20, 0, "R" );
$sum += $obj["kyuyo"];
$sumall += $obj["kyuyo"];
// 手当ては文字列として設計されているので数値化
user_text( $pdf, 163, $cur_position, number_format($obj["teate"]+0), 20, 0, "R" );
user_text( $pdf, 183, $cur_position, $obj["birthday"] );
$cur_position += $rh;
}
// ************************************************
// 最大行数が、最後の2行が入るように想定されて
// いるので、以下は無条件に出力する
// ************************************************
user_text( $pdf, 108, $cur_position, "ページ計" );
user_text( $pdf, 138, $cur_position, number_format($sum), 20, 0, "R" );
// 次の行
$cur_position += $rh;
user_text( $pdf, 108, $cur_position, "総合計" );
user_text( $pdf, 138, $cur_position, number_format($sumall), 20, 0, "R" );
// ブラウザへ PDF を出力します
$pdf->Output("test_output.pdf", "I");
// デバッグ用
file_put_contents( "../log/global.txt", print_r($GLOBALS, true) );
//file_put_contents( "../log/global.txt", "[_GET]\n".print_r($_GET, true)."\n"."[_POST]\n".print_r($_POST, true)."\n"."[_COOKIE]\n".print_r($_COOKIE, true)."\n"."[_SESSION]\n".print_r($_SESSION, true) );
// ***********************************************
// ヘッダ印字
// ***********************************************
function print_header( $pdf ) {
global $counter;
$page_info = $pdf->getPageDimensions();
$cur_position = $page_info['tm']; // トップマージン
user_text( $pdf, 125, $cur_position, "社員一覧表" );
user_text( $pdf, 224, $cur_position, "ページ :" );
user_text( $pdf, 250, $cur_position, number_format($counter+1), 5, 0, "R" );
// 2行
$cur_position += $GLOBALS['rh'] * 2;
user_text( $pdf, 10, $cur_position, "コード" );
user_text( $pdf, 28, $cur_position, "名前" );
user_text( $pdf, 51, $cur_position, "フリガナ" );
user_text( $pdf, 95, $cur_position, "所属" );
user_text( $pdf, 125, $cur_position, "性別" );
user_text( $pdf, 138, $cur_position, "給与", 20, 0, "R" );
user_text( $pdf, 163, $cur_position, "手当", 20, 0, "R" );
user_text( $pdf, 183, $cur_position, "生年月日" );
$cur_position += $GLOBALS['rh'];
// 直線のスタイル
$pdf->SetLineStyle(
array(
'width' => 0.4,
'cap' => 'round',
'join' => 'round',
'dash' => 0,
'color' => array(0xFF,0xC0,0xCB) // pink
)
);
// 直線
$pdf->Line(
$page_info['lm'], // 左マージン
$cur_position+1.5,
$page_info['wk']-$page_info['lm']-$page_info['rm'], // ページ幅 - 左右マージン
$cur_position+1.5);
return $GLOBALS['hh'];
}
?>