File: /var/www/vhosts/creativefellows.nl/jhtaxatie.creativefellows.nl/views/inspections/getPdf.php
<?php
require_once "../classes/pdf-generator/TCPDF-master/tcpdf.php";
require_once "../classes/pdf-generator/FPDI-1.4.4/fpdi.php";
class vardataPdf extends FPDI {
public function Header(){}
public function Footer(){}
function addPdfTemplate($file,$template_page){
$pagecount = $this->setSourceFile($file);
$tplidx = $this->ImportPage($template_page, '/MediaBox');
$s = $this->getTemplatesize($tplidx);
$orientation = $s['w'] > $s['h'] ? "L": "P";
$this->AddPage($orientation, array($s['w'], $s['h']));
$this->useTemplate($tplidx);
$size_arr = $this->getTemplateSize($tplidx);
return $size_arr;
}
function setLightFont($size=8.5)
{
$this->SetFont($this->font_light ,"",$size,'',false);
}
function setBoldFont($size=8.5)
{
$this->SetFont($this->font_bold ,"",$size,'',false);
}
function setCustomFonts()
{
$this->font_light = TCPDF_FONTS::addTTFfont('MuseoSans-300.ttf');
$this->font_bold = TCPDF_FONTS::addTTFfont('MuseoSans-700.ttf');
}
}
// create new PDF document
$pdf = new vardataPdf(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// set document information
$pdf->SetCreator("");
$pdf->SetAuthor("");
$pdf->SetTitle("");
$pdf->SetSubject("");
$pdf->SetKeywords("");
// set default header data
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 010', PDF_HEADER_STRING);
// set header and footer fonts
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
// set margins
$pdf->SetMargins(17.5,17.5);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(80);
// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, 0);
$pdf->addPdfTemplate($data["pdf_template"],1);
// set fonts
$pdf->setCustomFonts();
$pdf->setCellHeightRatio(0);
$pdf->setCellPaddings(2,0,2,0);
// gray border for tables
$pdf->SetLineStyle(array('width' => 0.1,'color' => array(0, 0, 0, 20)));
// defaults
$cell_width = 182.5;
$cell_half = 88.75;
$cell_height = 6;
// return inspection forms as part of pdf
if(!isset($data["view_pdf_part"]) || isset($data["view_pdf_part"]) && $data["view_pdf_part"] == "report"){
/*
* Intro page with inspectpr and company info
*/
$pdf->addPdfTemplate($data["pdf_template"],2);
$pdf->setY(30);
foreach($data["user_fields"] as $group => $fields){
// last element
$lastElement = end($fields);
// bold font
$pdf->setBoldFont();
// grey background
$pdf->SetTextColor(0,0,0,100);
$pdf->setFillColor(0,0,0,10);
// cell group header
$pdf->Cell($cell_width, $cell_height, ucfirst($group), "TB", 1, '', true);
// set light font
$pdf->setLightFont();
// fields in fgroup
$x = 0;
foreach($fields as $i => $element)
{
$pdf->setFillColor(0,0,0,0);
$border_bottom = $element == $lastElement ? "B" : "";
$value = $data["inspection"]->getElementValue($element[0],$element[2],$element[5]);
$pdf->Cell($cell_width/3, $cell_height, $element[1], "TB", 0, '', true);
$pdf->Cell(($cell_width/3)*2, $cell_height, $value, "TB", 1, '', true);
$x++;
if($x == 2) $x = 0;
}
// spacer at bottom
$pdf->ln($cell_height);
}
// set light font
$pdf->setLightFont();
$pdf->setFillColor(0,0,0,0);
$pdf->setCellHeightRatio(1.5);
$pdf->ln(1);
$pdf->MultiCell($cell_width, 0, "Ondergetekende verklaart middels ondertekening in het vak hieronder bevoegd te zijn ". $data["inspection"]->getCompany() ." ten deze te vertegenwoordigen en kennis te hebben genomen van de navolgende ". $data["inspection"]->countRacks() ." keuringsformulieren.", 0,"L");
$pdf->ln($cell_height);
$pdf->setBoldFont();
$pdf->MultiCell($cell_width, 0, "Keuringsformulieren", 0,"L");
$pdf->setLightFont();
$text = "";
foreach($data["inspection"]->racks as $i => $rack)
{
$text .= "- ".$rack->getRackNumber($i) ."\n";// . $rack->getFileNumber()."\n";
}
$pdf->MultiCell($cell_width, 0, $text, 0,"L");
/*
* Get Signatures
*/
$inspector_signature = $inspection->getSignature("inspector");
if($inspector_signature) $pdf->Image('@'.$inspector_signature, 17.5, 253.5, '', 22, 'png', '', '', false, 300,'',false,false,1);
// name
$pdf->setXY(15.5,278);
$pdf->MultiCell(95, 0,$inspection->getInspectorname()."\n".$inspection->dateSigned(), 0,"L");
$user_signature = $inspection->getSignature("user");
if($user_signature) $pdf->Image('@'.$user_signature, 113.5, 253.5, '', 22, 'png', '', '', false, 300,'',false,false,1);
// name
$pdf->setXY(111,278);
$pdf->MultiCell(95, 0,$inspection->getUserName()."\n".$inspection->dateSigned() , 0,"L");
/*
* Create a page for each rack in inspection
*/
foreach($data["inspection"]->racks as $i => $rack)
{
$pdf->setCellPaddings(2,0,2,0);
$pdf->addPdfTemplate($data["pdf_template"],3);
// Page name
$pdf->setXY(15.5,13.75);
$pdf->setBoldFont(12);
$pdf->Cell(($cell_width/3)*2, $cell_height, $rack->getRackNumber($i), 0, 1, '', false);
// reset
$pdf->resetColumns();
//$pdf->setY(30);
// Legenda
$pdf->setXY(145,30);
$pdf->setBoldFont();
$pdf->SetTextColor(0,0,0,100);
$pdf->setFillColor(0,0,0,10);
$pdf->Cell(($cell_width/3)-6, $cell_height, "Legenda", "TB", 1, '', true);
$pdf->setFillColor(0,0,0,0);
$legend = ["Goed","Matig","Slecht","N.V.T."];
for($i = 0;$i <=3; $i++)
{
$pdf->setLightFont(8.5);
$pdf->setX(145);
$pdf->setTextColorArray($data["colors"][$i]);
$pdf->Cell(5, $cell_height, "•", "TB", 0);
$pdf->Cell(50, $cell_height, $legend[$i], "TB", 1);
}
// Rack information
$pdf->setY(30);
$pdf->setBoldFont();
// grey background
$pdf->SetTextColor(0,0,0,100);
$pdf->setFillColor(0,0,0,10);
// cell group header
$pdf->Cell(($cell_width/3)*2, $cell_height, "Magazijnstelling", "TB", 1, '', true);
// set light font
$pdf->setLightFont();
// last element
$lastElement = end($data["rack_fields"]["Magazijnstellingen"]);
//$x = 0;
$pdf->setCellHeightRatio(1.75);
foreach($data["rack_fields"]["Magazijnstellingen"] as $element)
{
//if($x == 0) $pdf->setFillColor(0,0,0,0);
//else
$pdf->setFillColor(0,0,0,0);
$border = strtolower($element[0]) == "stickernumber" ? "T" : "TB";
$value = $rack->getElementValue($element[0],$element[2],$element[5]);
$pdf->MultiCell(30, 0, $element[1], $border, "L",false,0);
if(strtolower($element[0]) != "stickernumber"){
$pdf->setCellPaddings(2,0,2,0);
$pdf->MultiCell(85, 0, $value, $border, "L",false,1);
}
else{
$sticker_cell_height = strlen($value) > 500 ? 25 : 0;
$padding_top = strlen($value) > 500 ? 0.75: 0;
$pdf->setCellPaddings(2,$padding_top,2,0);
$pdf->MultiCell(152,0,$value,$border,'L',1,1,'','',true,0,false,true,$sticker_cell_height,'T',true);
}
}
$pdf->setCellHeightRatio(1.5);
// spacer
$pdf->ln($cell_height);
$pdf->setCellPaddings(2,0,2,0);
$columns = [
array('w'=>80+14, 's'=>0, 'y'=> $pdf->getY()),
array('w'=>80, 's'=>0, 'y'=> $pdf->getY())
];
$pdf->setX(0);
$pdf->setTextColor(0,0,0,100);
$pdf->setColumnsArray($columns);
$pdf->selectColumn(0);
// change fields config based on form version
if( $rack->rackVersionNew() ) $rack_fields = $data["rack_fields"]["Keuringspunten - Nieuwe stelling"];
else $rack_fields = $data["rack_fields"]["Keuringspunten - Oude stelling"];
foreach($rack_fields as $g => $element)
{
// first or second column
if($g == 5) $pdf->selectColumn(1);
//else $pdf->selectColumn(0);
// fill table header
$pdf->setFillColor(0,0,0,10);
// bold
$pdf->setBoldFont();
$pdf->Cell(68.25, 5, $element[1] , "TB", 0, '', true);
// light
$pdf->setlightFont(12);
$pdf->setCellHeightRatio(1);
// legend circels
$pdf->setTextColor(50,0,70,0);
$pdf->Cell(5, 5, "•" , 1, 0, '', true);
$pdf->setTextColor(0,20,75,0);
$pdf->Cell(5, 5, "•" , 1, 0, '', true);
$pdf->setTextColor(0,75,60,0);
$pdf->Cell(5, 5, "•" , 1, 0, '', true);
$pdf->setTextColor(0,0,0,30);
$pdf->Cell(5, 5, "•" , "TB", 1, '', true);
$pdf->setTextColor(0,0,0,100);
// set light font
$pdf->setLightFont();
// items in group
$item_count = 1;
foreach($element[5] as $id => $item){
// row
$filled = $rack->getValue($id);//== rand(2, 4);
//echo $filled." - ";
//echo $filled.' - ';
for($i = 1;$i <= 5;$i++)
{
$width = $i == 1 ? 68.25 : 5; // 88.75
$lbl = $i == 1 ? ($g+1) .".$item_count ".$item : " ";
$ln = $i == 5 ? 1 : 0; // 0: to the right</li><li>1: to the beginning of the next line
if($i == $filled) $lbl = "•";
$border = $i > 1 && $i != 5 ? 1 : "TB";
// label
if($i == 1){
// set light font
$pdf->setLightFont(8.5);
$pdf->setCellHeightRatio(1.5);
}
else{
// set light font
$pdf->setLightFont(12);
$pdf->setCellHeightRatio(1);
}
//$pdf->MultiCell($width, 5, $lbl, $border,"L",false,$ln);
$pdf->Cell($width, 5, $lbl , $border, $ln, '', false);
}
$item_count++;
}
// spacer
$pdf->ln($cell_height);
//d($element);
}
// save last y pos
$last_y_pos = $pdf->GetY();
// reset columns
$pdf->resetColumns();
$pdf->setXY(17.5,$last_y_pos);
foreach($data["rack_fields"]["Aanpassingen"] as $i => $element)
{
if($i == 0) continue;
$text_after = "";
// bold font
$pdf->setBoldFont();
// grey background
$pdf->SetTextColor(0,0,0,100);
$pdf->setFillColor(0,0,0,10);
// get label
$label = $i == 1 ? $data["rack_fields"]["Aanpassingen"][0][5][$rack->getLabel()] : $element[1];
// cell group header
$pdf->Cell($cell_width, $cell_height, ucfirst($label), "TB", 1, '', true);
$pdf->ln(1);
// Cell contents
$pdf->setLightFont();
$pdf->setCellHeightRatio(1.5);
$name = $element[0];
$value = $rack->$name;
if(strtolower($label) == "goedgekeurd nadat" && $rack->new_rack == 0){
if(trim($value) != "") $text_after .= "\n";
$text_after .= "Raadpleeg de rapportage bij deze keuring voor een gedetailleerde omschrijving en overige aanbevelingen.";
}
if($value != "0")
{
$value = $rack->getElementValue($element[0],$element[2],$element[5]);
$pdf->MultiCell($cell_width,0,$value.$text_after ,0,'L',false,1,'','',true,0,false,true,32,'T',true);
}
// spacer at bottom
$pdf->ln(4);
}
}
//////////////////////////////
// close pdf_part condition //
//////////////////////////////
}
/*
* working hours
*/
// return inspection forms as part of pdf
if(!isset($data["view_pdf_part"]) || isset($data["view_pdf_part"]) && $data["view_pdf_part"] == "hours")
{
$pdf->addPdfTemplate($data["pdf_template"],4);
$pdf->setY(30);
// Page name
$pdf->setXY(15.5,13.75);
$pdf->setBoldFont(12);
$pdf->Cell(100, $cell_height, "Werkstaat", 0, 1, '', false);
// fields
$fields = [
"Bedrijfsnaam" => $data["inspection"]->getCompany(),
"Adres" => $data["inspection"]->getAddress(),
"Postcode" => $data["inspection"]->getZipcode(),
"Woonplaats" => $data["inspection"]->getCity(),
"Telefoon" => $data["inspection"]->getPhone(),
];
$cells = [
"Naam" => "inspector",
"Datum" => "date",
"Voorrijden" => "drive",
"Werkuren" => "hours",
];
// bold font
$pdf->setBoldFont();
$pdf->setY(30);
// Table header with grey background
$pdf->SetTextColor(0,0,0,100);
$pdf->setFillColor(0,0,0,10);
$pdf->Cell($cell_width, $cell_height, "Klantbedrijf", "TB", 1, '', true);
$pdf->setFillColor(0,0,0,0);
// set light font
$pdf->setLightFont();
foreach($fields as $element => $value)
{
$pdf->Cell($cell_width/4, $cell_height, $element, "TB", 0, '', true);
$pdf->Cell(($cell_width/4)*3, $cell_height, $value, "TB", 1, '', true);
}
$pdf->ln(8);
//$working_rows = 3;
$sum_voorrijden = 0;
$sum_werkuren = 0;
$working_rows = $data["inspection"]->workingHours();
for($i= -1; $i <= count($data["inspection"]->workingHours()); $i++){
$x = 0;
foreach($cells as $element => $val)
{
$border = "TB";
// table header
if($i == -1){
// Table header with grey background
$pdf->SetTextColor(0,0,0,100);
$pdf->setFillColor(0,0,0,10);
$pdf->setBoldFont();
$value = $element;
}
// sum last row
elseif($i == count($data["inspection"]->workingHours()))
{
$border = "TB";
switch($x){
default:
$value = "";
break;
case 0;
$pdf->setBoldFont();
$value = "Totaal";
break;
case 2:
$value = $sum_voorrijden;
break;
case 3:
$value = ceil($sum_werkuren * 2) / 2;
break;
}
}
// default rows
else{
$value = $data["inspection"]->workingHours()[$i][$val];
// count hours
if($x == 2) $sum_voorrijden += $value;
if($x == 3) $sum_werkuren += $value;
$pdf->setLightFont();
$pdf->setFillColor(0,0,0,0);
}
$ln = $x == 3 ? 1 : 0;
$pdf->Cell($cell_width/4, $cell_height, $value, $border, $ln, '', true);
$x++;
}
}
if($inspection->signRemarks())
{
$pdf->ln(8);
$pdf->SetTextColor(0,0,0,100);
$pdf->setFillColor(0,0,0,10);
$pdf->Cell($cell_width, $cell_height, "Opmerkingen", "TB", 1, '', true);
$pdf->setFillColor(0,0,0,0);
$pdf->setLightFont();
$pdf->Cell($cell_width, $cell_height, $inspection->signRemarks(), "TB", $ln, '', true);
}
$pdf->ln(8);
$pdf->setLightFont();
$pdf->MultiCell($cell_width, 0,"Werkuren ten behoeve van het uitwerken van de rapportage(s), aanmaken van kenplaten en andere werkzaamheden die niet op locatie van de klant zullen plaatsvinden, zijn niet opgenomen in deze werkstaat.", 0,"L");
$pdf->ln(1);
$pdf->SetLineStyle(array('width' => 0.1,'color' => array(0, 0, 0, 100)));
$pdf->setBoldFont();
$pdf->Cell($cell_width/2, $cell_height, "Namens Jungheinrich", "TR", 0, '', true);
$pdf->Cell($cell_width/2, $cell_height, "Namens klantbedrijf", "TL", 1, '', true);
$pdf->Cell($cell_width/2, 22, "", "R", 0, '', true);
$pdf->Cell($cell_width/2, 22, "", "L", 1, '', true);
$pos_y = $pdf->getY()-22;
$pdf->setLightFont();
$pdf->MultiCell($cell_width/2, 0,$inspection->getInspectorname()."\n".$inspection->dateSigned(), "R","L",0,0);
$pdf->MultiCell($cell_width/2, 0,$inspection->getUserName()."\n".$inspection->dateSigned() , "L","L",0,0);
if($inspector_signature) $pdf->Image('@'.$inspector_signature,17.5, $pos_y, '', 22, 'png');
if($user_signature) $pdf->Image('@'.$user_signature,113.5, $pos_y, '', 22, 'png');
//////////////////////////////
// close pdf_part condition //
//////////////////////////////
}
if( isset($data["return_string"]) && $data["return_string"] == true){
return $pdf->Output($data["inspection"]->getPdfName(), 'S');
}
else $pdf->Output($data["inspection"]->getPdfName(), 'I');
?>