Path: C:\
<?php
$if['ID']=utf8_decode('Intervalo de Descanso');
$if['TD']=utf8_decode('Tempo de Direção');
$if['TE']=utf8_decode('Tempo de Espera');
$if['IA']=utf8_decode('Intervalo de Alimentação');
$if['']='';
$tt['ID']=$tt['TD']=$tt['TE']=$tt['IA']=0;
date_default_timezone_set('America/Sao_Paulo');
$base1 = date("d-m-Y");
$dateadded= date('Y-m-d', strtotime($base1. ' - 1 day'));
if (isset($_GET['dia']) ){$dia=$_GET['dia'];}else{$dia=$dateadded;}
mkdir(__DIR__.'/pdf/'.$dia.'/', 0777, true);
require('fpdf.php');
function acumula($hora_inicial, $hora_final){
$i = 1;
$tempo_total;
$tempos = array($hora_final, $hora_inicial);
foreach($tempos as $tempo) {
$segundos = 0;
list($h, $m, $s) = explode(':', $tempo);
$segundos += $h * 3600;
$segundos += $m * 60;
$segundos += $s;
$tempo_total[$i] = $segundos;
$i++;
}
$segundos = $tempo_total[1] - $tempo_total[2];
$horas = floor($segundos / 3600);
$segundos -= $horas * 3600;
$minutos = floor($segundos / 60);
$segundos -= $minutos * 60;
if ($segundos>=30){$minutos=$minutos+1;$segundos=0;}
$return[1]=($minutos*60)+($horas*3600);//tempo para acumuladar
$horas = str_pad($horas, 2, '0', STR_PAD_LEFT);
$minutos = str_pad($minutos, 2, '0', STR_PAD_LEFT);
$segundos = str_pad($segundos, 2, '0', STR_PAD_LEFT);
$return[0]=$horas.':'.$minutos;//tempo arredondado
return $return;
}
function totais($inf){
$horas = floor($inf / 3600);
$inf -= $horas * 3600;
$minutos = floor($inf / 60);
$inf -= $minutos * 60;
if ($inf>=30){$minutos=$minutos+1;$inf=0;}
$horas = str_pad($horas, 2, '0', STR_PAD_LEFT);
$minutos = str_pad($minutos, 2, '0', STR_PAD_LEFT);
return $horas.':'.$minutos;
}
class PDF extends FPDF
{
function LoadData($file){
$lines = file($file);
$data = array();
foreach($lines as $line)
$data[] = explode(';',trim($line));
return $data;
}
}
$json = file_get_contents('matriz.json');
$reg = json_decode($json, true);
$lin=count($reg);
$n=0;
foreach ($reg as $value => $x)
{ $n++;$tt['ID']=$tt['TD']=$tt['TE']=$tt['IA']=0;
$pdf[$n] = new PDF();
//$data = $pdf[$n]->LoadData('tabela.txt');
$pdf[$n]->SetFont('Arial','','12');
$pdf[$n]->AliasNbPages();
//variável que me diz a quantidade de linhas a ser impressa
$linhasPpg = 34;
//variável que me diz quando deve ser impresso o cabeçalho e rodapé
$linhasCbl = 999;
//variável para exibir o número da página
$PageNo = 0;
//variável que pega o numero de registro que tenho no banco
// $max = count($data);
foreach ($x['mov'] as $val => $y)
{
if($x['mov'][$val]['ini']!=="" and $x['mov'][$val]['fim']!==""){
//foreach($data as $row)
//{ /*aqui estou definindo nome do arquivo PDF para salvar
// com nome do funcionário mais data*/
$arq=utf8_decode($x['nome']);
$email=$x['email'];
/*aqui estou somando a variável, que vai me dizer
quando eu devo imprimir o cabeçalho e rodapé*/
$linhasCbl = $linhasCbl + 1;
/*------------------------- cabeçalho e rodapé----------------------------------*/
/*condição para imprimir cabeçalho e rodapé,
se a variável para imprimir cabeçalho for maior que
a variavel com a quantidade de linhas a imprimir,
então imprima*/
if ($linhasCbl > $linhasPpg)
{
//aqui e pego o número da página, toda a vez que eu iimprimir o cabeçalho
$PageNo = $PageNo + 1;
//adiciono uma pagina para meu relatório
$pdf[$n]->AddPage('P','A4');
/*-------- imprimo o cabeçalho da página -------*/
$pdf[$n]->SetFillColor(255,0,0);
$pdf[$n]->SetTextColor(255);
$pdf[$n]->SetLineWidth(.2);
$pdf[$n]->SetFont('Arial','B','12');
$pdf[$n]->Cell(6,6,"",0,1);
$pdf[$n]->SetXY(35,20);
$pdf[$n]->Cell(140,7,'COMPROVANTE DA JORNADA DE TRABALHO','TLRB',0,'C',true);
$pdf[$n]->SetFillColor(224,235,255);
$pdf[$n]->SetTextColor(0);
$pdf[$n]->SetFont('Arial', '', 8);
$pdf[$n]->Ln();
$pdf[$n]->SetX(35);
$pdf[$n]->Cell(20,6,'MOTORISTA','TLRB',0,'C',true);
$pdf[$n]->Ln();
$pdf[$n]->SetX(35);
$pdf[$n]->Cell(20,6,'PIS','TLRB',0,'C',true);
$pdf[$n]->Ln();
$pdf[$n]->SetX(35);
$pdf[$n]->Cell(20,6,'DATA','TLRB',0,'C',true);
$pdf[$n]->Ln();
$pdf[$n]->SetFont('Arial','B','10');
$pdf[$n]->SetXY(55,27);
$pdf[$n]->Cell(120,6,utf8_decode($x['nome']),'TLRB',0,'L',false);
$pdf[$n]->Ln();
$pdf[$n]->SetX(55);
$pdf[$n]->Cell(120,6,$value,'TLRB',0,'L',false);
$pdf[$n]->Ln();
$pdf[$n]->SetX(55);
$pdf[$n]->Cell(120,6,$x['dia'],'TLRB',0,'L',false);
/*--------------- fim do cabeçalho da página ---------*/
/*--------------- imprimo o rodapé--------------------*/
$pdf[$n]->SetTextColor(0);
$pdf[$n]->SetXY(85,270);
$pdf[$n]->Cell(45,6,utf8_decode('Página ').$pdf[$n]->PageNo().'/{nb}',0,0,'C');
/*--------------- fim do radapé -------------------------*/
/*--------------- imprimo o cabeçalho da tabela ---------*/
$header = array('EVENTO','HORA INICIAL', 'HORA FINAL', 'TEMPO','H:M:S','H:M' );
$pdf[$n]->SetXY(85,45);
$pdf[$n]->SetFillColor(255,0,0);
$pdf[$n]->SetTextColor(255);
$pdf[$n]->SetDrawColor(128,0,0);
$pdf[$n]->SetLineWidth(.2);
$pdf[$n]->SetFont('Arial','B','10');
// cabeçalho
$w = array(50, 35, 35, 20);
$pdf[$n]->Cell($w[1],5,$header[1],'TLR',0,'C',true);
$pdf[$n]->Cell($w[2],5,$header[2],'TLR',0,'C',true);
$pdf[$n]->Cell($w[3],5,$header[3],'TLR',0,'C',true);
$pdf[$n]->SetXY(85,50);
$pdf[$n]->Cell($w[1],5,$header[4],'LRB',0,'C',true);
$pdf[$n]->Cell($w[2],5,$header[4],'LRB',0,'C',true);
$pdf[$n]->Cell($w[3],5,$header[5],'LRB',0,'C',true);
$pdf[$n]->SetXY(35,45);
$pdf[$n]->Cell($w[0],10,$header[0],'TLRB',0,'C',true);
$pdf[$n]->Ln();
/*--------------- fim do cabeçalho da tabela ---------*/
/*aqui eu zero a variável do cabeçalho para não iimprimir,
enquanto não atingir a quantidade maxima de linhas por pagina*/
$linhasCbl = 0 ;
}//aqui eu fecho o loop do cabeçalho e rodapé
/*aqui eu imprimo as linhas da minha tabela*/
$w = array(50, 35, 35, 20);
$pdf[$n]->SetFillColor(224,235,255);
$pdf[$n]->SetTextColor(0);
$pdf[$n]->SetFont('Arial','','9');
$pdf[$n]->SetFont('');
$pdf[$n]->SetX(35);
$fill = false;
if ($x['mov'][$val]['ini']=='SEM REGISTRO NESSE DIA')
{
$pdf[$n]->Cell(140,6,'SEM REGISTRO NESSE DIA','TLRB',0,'C',$fill);
}
else
{
$pdf[$n]->Cell($w[0],6,$if[$x['mov'][$val]['evento']],'TLRB',0,'C',$fill);
$pdf[$n]->Cell($w[1],6,$x['mov'][$val]['ini'],'TLRB',0,'C',$fill);
$pdf[$n]->Cell($w[2],6,$x['mov'][$val]['fim'],'TLRB',0,'C',$fill);
$tempo=acumula($x['mov'][$val]['ini'],$x['mov'][$val]['fim']);
$tt[$x['mov'][$val]['evento']]=$tt[$x['mov'][$val]['evento']]+$tempo[1];
$pdf[$n]->Cell($w[3],6,$tempo[0],'TLRB',0,'C',$fill);
}
$pdf[$n]->Ln();
$fill = !$fill;
}
}//aqui eu fecho a impressão do relatório
/*e por último, imprimo o Resumo do dia*/
$fill = false;
$tt1=totais($tt['TD']);
$tt2=totais($tt['TE']);
$tt3=totais($tt['ID']);
$tt4=totais($tt['IA']);
$pdf[$n]->SetFillColor(255,0,0);
$pdf[$n]->SetTextColor(255);
$pdf[$n]->SetLineWidth(.2);
$pdf[$n]->SetFont('Arial','B','10');
$pdf[$n]->Cell(6,5,"",0,1);
$pdf[$n]->SetX(70);
$pdf[$n]->Cell(50,6,'RESUMO DO DIA','TLB',0,'C',true);
$pdf[$n]->Cell(20,6,'H:M','TRB',0,'C',true);
$pdf[$n]->SetFillColor(224,235,255);
$pdf[$n]->SetTextColor(0);
$pdf[$n]->SetFont('Arial', '', 8);
$pdf[$n]->Ln();
$pdf[$n]->SetX(70);
$pdf[$n]->Cell(50,5,utf8_decode('Tempo de Direção'),'TLRB',0,'C',true);
$pdf[$n]->Cell(20,5,$tt1,'LRB',0,'C',$fill);
$pdf[$n]->Ln();
$pdf[$n]->SetX(70);
$pdf[$n]->Cell(50,5,'Tempo de Espera','TLRB',0,'C',true);
$pdf[$n]->Cell(20,5,$tt2,'TLRB',0,'C',$fill);
$pdf[$n]->Ln();
$pdf[$n]->SetX(70);
$pdf[$n]->Cell(50,5,utf8_decode('Intervalo de Descanso'),'TLRB',0,'C',true);
$pdf[$n]->Cell(20,5,$tt3,'TLRB',0,'C',$fill);
$pdf[$n]->Ln();
$pdf[$n]->SetX(70);
$pdf[$n]->Cell(50,5,utf8_decode('Intervalo de Alimentação'),'TLRB',0,'C',true);
$pdf[$n]->Cell(20,5,$tt4,'TLRB',0,'C',$fill);
$pdf[$n]->Output('pdf/'.$dia.'/'.$arq.".pdf","F"); //aqui ele salva o aarquivo PDF.
if ($email!=='')
{
include('email-pdf.php');
}
}
?>