Sun, 27 Jun 2021 10:15:09 +0200
Removed unnecesary code. Use existing array data instead of grid calls where possible.
<?php require_once($_SERVER['DOCUMENT_ROOT'].'/includes/global.inc.php'); require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php'); require_once($_SERVER['DOCUMENT_ROOT'].'/includes/constants.php'); require_once($_SERVER['DOCUMENT_ROOT'].'/fpdf/fpdf.php'); $link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME); if (! $link) { die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } if (! mysqli_set_charset($link, "utf8" )) { echo "error"; return 1; } setlocale ( LC_ALL, 'nl_NL.UTF-8'); $record = $_GET["record"]; $result = mysqli_query($link, "SELECT * FROM recipes WHERE record='".$record."'"); $row = mysqli_fetch_array($result); $total_fermentables = 0.0; $cost_fermentables = 0.0; $total_hops = 0.0; $cost_hops = 0.0; $cost_yeasts = 0.0; $cost_miscs = 0.0; $pSugar = 0; $pCara = 0; $svg = 77; $colorw = 0; $total_ibus = 0; $preboil_sg = 0; date_default_timezone_set('Europe/Amsterdam'); $prdate = date(DATE_RFC2822); class PDF_MySQL_Table extends FPDF { protected $ProcessingTable=false; protected $aCols=array(); protected $TableX; function Header() { // Print the table header if necessary if ($this->ProcessingTable) $this->TableHeader(); } function TableHeader() { $this->SetFont('Helvetica','B',9); $this->SetX($this->TableX); $this->SetFillColor(255,150,100); foreach($this->aCols as $col) $this->Cell($col['w'],5,$col['c'],0,0,$col['a'],true); $this->Ln(); } function AddCol($width=-1, $caption='', $align='L') { $this->aCols[]=array('c'=>$caption,'w'=>$width,'a'=>$align); } function TableGlobal($row) { /* 2 Columns */ global $recipetype; $vul = $this->w - $this->rMargin - $this->lMargin - 120; $cMargin=$this->cMargin; $this->cMargin=2; $this->TableX=$this->lMargin; $this->SetFont('Helvetica','B',9); $this->SetX($this->TableX); $this->SetFillColor(255,150,100); $this->Cell(0, 5, 'Recept overzicht',0,0,'C',true); $this->Ln(); $this->SetFont('Helvetica','',9); $this->SetFillColor(210,245,255); $this->SetX($this->TableX); $this->Cell(35,5,'Type',0,0,'L',true); $this->Cell(25,5,$recipetype[$row['type']],0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(35,5,'Batch grootte',0,0,'L',true); $this->Cell(25,5,$row['batch_size'].' liter',0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(35,5,'Kooktijd',0,0,'L',true); $this->Cell(25,5,$row['boil_time'].' minuten',0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(35,5,'Brouwzaal rendement',0,0,'L',true); $this->Cell(25,5,$row['efficiency'].' %',0,0,'L',true); $this->Ln(); $this->cMargin=$cMargin; } function TableFermentables($row) { global $cost_fermentables; global $total_fermentables; global $pSugar; global $pCara; global $colorw; global $preboil_sg; global $added; global $fermentabletype; global $graintype; $vul = $this->w - $this->rMargin - $this->lMargin - 125; $this->Ln(); $this->AddCol($vul,'Mout, granen en suikers','L'); $this->AddCol(15,'Procent','R'); $this->AddCol(15,'Opbr.','R'); $this->AddCol(25,'Soort', 'L'); $this->AddCol(30,'Gebruik moment','L'); $this->AddCol(20,'Hoeveel','R'); $this->AddCol(20,'Prijs','R'); $cMargin=$this->cMargin; $this->cMargin=2; $this->TableX=$this->lMargin; $this->TableHeader(); $this->ProcessingTable=true; $sugarsf = 0; $sugarsm = 0; $this->SetFont('Helvetica','',9); $this->SetFillColor(250, 195, 65); $arr = json_decode($row['json_fermentables'], true); foreach($arr as $item) { //foreach element in $arr $name = iconv('UTF-8','windows-1252',$item['f_name']); $supplier = iconv('UTF-8','windows-1252',$item['f_supplier']); $amount = floatval($item['f_amount']); $costkg = floatval($item['f_cost']); $yield = floatval($item['f_yield']); $moisture = floatval($item['f_moisture']); $color = floatval($item['f_color']); $percent = floatval($item['f_percentage']); if ($item['f_type'] == 1) // Sugar $pSugar += $percent; if ($item['f_graintype'] == 2) // Crystal $pCara += $percent; if ($item['f_type'] == 0) $soort = iconv('UTF-8','windows-1252',$graintype[$item['f_graintype']]); else $soort = iconv('UTF-8','windows-1252',$fermentabletype[$item['f_type']]); $cost = $amount * $costkg; $cost_fermentables += $cost; $total_fermentables += $amount; /* Calculate the amount of sugars */ $d = $amount * ($yield / 100) * (1 - $moisture / 100); if ($item['f_added'] == 0) { // Mash $d = floatval($row['efficiency']) / 100 * $d; $sugarsm += $d; } $sugarsf += $d; $colorw += ($amount * ebc_to_srm($color) / $row['batch_size']) * 8.34436; if ($amount > 100) $amount = sprintf("%.1f",$amount).' kg'; else if ($amount > 10) $amount = sprintf("%.2f",$amount).' kg'; else $amount = sprintf("%.0f",$amount * 1000).' gr'; $this->Cell($vul,5,$name.' ('.$supplier.') '.sprintf("%.0f",$color).' EBC',0,0,'L',true); $this->Cell(15,5,sprintf("%.1f%%",$percent),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f%%",$yield),0,0,'R',true); $this->Cell(25,5,$soort,0,0,'L',true); $this->Cell(30,5,$added[$item['f_added']],0,0,'L',true); $this->Cell(20,5,$amount,0,0,'R',true); $this->Cell(20,5,sprintf("%.3f",$cost).EURO,0,0,'R',true); $this->Ln(); } $row['est_og'] = estimate_sg($sugarsf, floatval($row['batch_size'])); $preboil_sg = estimate_sg($sugarsm, floatval($row['boil_size'])); $this->SetFillColor(210,245,255); $this->Cell($vul+105,5,'',0,0,'L',false); $this->Cell(20,5,sprintf("%.3f",$cost_fermentables).EURO,0,0,'R',true); $this->ProcessingTable=false; $this->cMargin=$cMargin; $this->aCols=array(); $this->Ln(); } function TableHops($row) { global $total_hops; global $total_ibus; global $cost_hops; global $preboil_sg; global $hopform; global $hopuse; $vul = $this->w - $this->rMargin - $this->lMargin - 122; $this->Ln(); $this->AddCol($vul,'Hop','L'); $this->AddCol(15,'Alpha','R'); $this->AddCol(12,'IBU','R'); $this->AddCol(25,'Soort','L'); $this->AddCol(30,'Gebruik moment','L'); $this->AddCol(20,'Hoeveel','R'); $this->AddCol(20,'Prijs','R'); $cMargin=$this->cMargin; $this->cMargin=2; $this->TableX=$this->lMargin; $this->TableHeader(); $this->ProcessingTable=true; $this->SetFont('Helvetica','',9); $this->SetFillColor(100, 250, 65); $arr = json_decode($row['json_hops'], true); foreach($arr as $item) { //foreach element in $arr $name = iconv('UTF-8','windows-1252',$item['h_name']); $origin = iconv('UTF-8','windows-1252',$item['h_origin']); $amount = floatval($item['h_amount']); $mass = $amount * 1000; $costkg = floatval($item['h_cost']); $time = floatval($item['h_time']); $alpha = floatval($item['h_alpha']); $cost = ($amount * $costkg); $cost_hops += $cost; $total_hops += $amount; $moment = $hopuse[$item['h_useat']]; if (($item['h_useat'] == 2) || ($item['h_useat'] == 4)) { // Boil or Whirlpool $moment = $hopuse[$item['h_useat']].' '.$time." min"; } else if ($item['h_useat'] == 5) { // Dryhop $moment = $hopuse[$item['h_useat']].' '.sprintf("%.0f", $time / 1440).' dagen'; } $ibu = calc_IBU($item['h_useat'], $item['h_form'], $preboil_sg, floatval($row['batch_size']), $mass, $time, $alpha, $row['ibu_method'], $row['brew_whirlpool9'], $row['brew_whirlpool7'], $row['brew_whirlpool6']); $total_ibus += $ibu; if ($amount > 1) $amount = sprintf("%.3f",$amount).' kg'; else $amount = sprintf("%.1f",$amount * 1000).' gr'; $this->Cell($vul,5,$name.' ('.$origin.')',0,0,'L',true); $this->Cell(15,5,sprintf("%.1f%%",$alpha),0,0,'R',true); $this->Cell(12,5,sprintf("%.1f",$ibu),0,0,'R',true); $this->Cell(25,5,$hopform[$item['h_form']],0,0,'L',true); $this->Cell(30,5,$moment,0,0,'L',true); $this->Cell(20,5,$amount,0,0,'R',true); $this->Cell(20,5,sprintf("%.3f",$cost).EURO,0,0,'R',true); $this->Ln(); } $this->SetFillColor(210,245,255); $this->Cell($vul+102,5,'',0,0,'L',false); $this->Cell(20,5,sprintf("%.3f",$cost_hops).EURO,0,0,'R',true); $this->ProcessingTable=false; $this->cMargin=$cMargin; $this->aCols=array(); $this->Ln(); } function TableYeasts($row) { global $cost_yeasts; global $svg; global $yeastform; global $yeastuse; $vul = $this->w - $this->rMargin - $this->lMargin - 110; $this->Ln(); $this->AddCol($vul,'Gist','L'); $this->AddCol(15,'Attn','R'); $this->AddCol(25,'Soort','L'); $this->AddCol(30,'Gebruik moment','L'); $this->AddCol(20,'Hoeveel','R'); $this->AddCol(20,'Prijs','R'); $cMargin=$this->cMargin; $this->cMargin=2; $this->TableX=$this->lMargin; $this->TableHeader(); $this->ProcessingTable=true; $this->SetFont('Helvetica','',9); $this->SetFillColor(175, 175, 255); $arr = json_decode($row['json_yeasts'], true); foreach($arr as $item) { //foreach element in $arr $name = iconv('UTF-8','windows-1252',$item['y_name']); $laboratory = iconv('UTF-8','windows-1252',$item['y_laboratory']); $product_id = iconv('UTF-8','windows-1252',$item['y_product_id']); $attenuation = floatval($item['y_attenuation']); $cost = floatval($item['y_amount']) * floatval($item['y_cost']); $cost_yeasts += $cost; if ($item['y_use'] == 0) // Primary $svg = $attenuation; if ($item['y_form'] == 0) // Liquid $amount = sprintf("%.0f",floatval($item['y_amount']))." pak"; else if ($item['y_form'] == 1 || $item['y_form'] == 6) // Dry $amount = sprintf("%.1f",floatval($item['y_amount'])*1000)." gr"; else $amount = sprintf("%.0f",floatval($item['y_amount'])*1000)." ml"; $this->Cell($vul,5,$laboratory.' '.$product_id.' ('.$name.')',0,0,'L',true); $this->Cell(15,5,sprintf("%.1f%%",$attenuation),0,0,'R',true); $this->Cell(25,5,$yeastform[$item['y_form']],0,0,'L',true); $this->Cell(30,5,$yeastuse[$item['y_use']],0,0,'L',true); $this->Cell(20,5,$amount,0,0,'R',true); $this->Cell(20,5,sprintf("%8.3f",$cost).EURO,0,0,'R',true); $this->Ln(); } $this->SetFillColor(210,245,255); $this->Cell($vul+90,5,'',0,0,'L',false); $this->Cell(20,5,sprintf("%8.3f",$cost_yeasts).EURO,0,0,'R',true); $this->ProcessingTable=false; $this->cMargin=$cMargin; $this->aCols=array(); $this->Ln(); } function TableMiscs($row) { global $cost_miscs; global $misctype; global $miscuse; $vul = $this->w - $this->rMargin - $this->lMargin - 95; if ($this->GetY() > 200) $this->AddPage(); else $this->Ln(); $this->AddCol($vul,'Naam','L'); $this->AddCol(25,'Soort','L'); $this->AddCol(30,'Gebruik moment','L'); $this->AddCol(20,'Hoeveel','R'); $this->AddCol(20,'Prijs','R'); $cMargin=$this->cMargin; $this->cMargin=2; $this->TableX=$this->lMargin; $this->TableHeader(); $this->ProcessingTable=true; $this->SetFont('Helvetica','',9); $this->SetFillColor(175, 175, 255); $arr = json_decode($row['json_miscs'], true); foreach($arr as $item) { $name = iconv('UTF-8','windows-1252',$item['m_name']); $type = $item['m_type']; $use_use = $item['m_use_use']; $amount = floatval($item['m_amount']) * 1000; $costg = floatval($item['m_cost']) / 1000; $time = floatval($item['m_time']); $aiw = $item['m_amount_is_weight']; $cost = $amount * $costg; $cost_miscs += $cost; if ($type == 4) // Water agent $this->SetFillColor(240,140,130); else if ($type == 3) // Fining $this->SetFillColor(95,180,25); else if (($type == 0) || ($type == 1) || ($type == 2) || ($type == 5)) // Spice, Herb, Flavour, Yeast nutrient $this->SetFillColor(240,250,65); else $this->SetFillColor(210,245,255); if ($use_use == 2) // Boil $gebruik = sprintf("%s %d min",$miscuse[$use_use],$time); else $gebruik = $miscuse[$use_use]; $hoeveel = sprintf("%.1f %s",$amount,$aiw ? "gr":"ml"); $this->Cell($vul,5,$name,0,0,'L',true); $this->Cell(25,5,$misctype[$type],0,0,'L',true); $this->Cell(30,5,$gebruik,0,0,'L',true); $this->Cell(20,5,$hoeveel,0,0,'R',true); $this->Cell(20,5,sprintf("%8.3f",$cost).EURO,0,0,'R',true); $this->Ln(); } $this->SetFillColor(210,245,255); $this->Cell($vul+75,5,'',0,0,'L',false); $this->Cell(20,5,sprintf("%8.3f",$cost_miscs).EURO,0,0,'R',true); $this->ProcessingTable=false; $this->cMargin=$cMargin; $this->aCols=array(); $this->Ln(); } function TableMashs($row) { global $cost_yeasts; global $svg; global $mashkg; global $mashtype; $vul = $this->w - $this->rMargin - $this->lMargin - 138; if ($this->GetY() > 250) $this->AddPage(); else $this->Ln(); $this->AddCol($vul,'Maisch stap naam','L'); $this->AddCol(25,'Stap type','L'); $this->AddCol(16,'Start '.DEG.'C','R'); $this->AddCol(16,'Eind '.DEG.'C','R'); $this->AddCol(15,'Rust min','R'); $this->AddCol(15,'Stap min','R'); $this->AddCol(15,'L/Kg','R'); $this->AddCol(18,'Inf/dec L','R'); $this->AddCol(18,'Inf/dec '.DEG.'C','R'); $cMargin=$this->cMargin; $this->cMargin=2; $this->TableX=$this->lMargin; $this->TableHeader(); $this->ProcessingTable=true; $this->SetFont('Helvetica','',9); $this->SetFillColor(175, 175, 255); $vol = 0; $arr = json_decode($row['json_mashs'], true); foreach($arr as $item) { //foreach element in $arr if ($item['step_type'] == 0) $vol += $item['step_infuse_amount']; if ($mashkg > 0) $thick = $vol / $mashkg; else $thick = 0; $this->Cell($vul,5,$item['step_name'],0,0,'L',true); $this->Cell(25,5,$mashtype[$item['step_type']],0,0,'L',true); $this->Cell(16,5,sprintf("%.1f",$item['step_temp']),0,0,'R',true); $this->Cell(16,5,sprintf("%.1f",$item['end_temp']),0,0,'R',true); $this->Cell(15,5,sprintf("%.0f",$item['step_time']),0,0,'R',true); $this->Cell(15,5,sprintf("%.0f",$item['ramp_time']),0,0,'R',true); $this->Cell(15,5,sprintf("%.2f",$thick),0,0,'R',true); if ($item['step_type'] == 1) { $this->Cell(18,5,' ',0,0,'R',true); $this->Cell(18,5,' ',0,0,'R',true); } else { $this->Cell(18,5,sprintf("%.1f",$item['step_infuse_amount']),0,0,'R',true); $this->Cell(18,5,sprintf("%.1f",$item['step_infuse_temp']),0,0,'R',true); } $this->Ln(); } $this->ProcessingTable=false; $this->cMargin=$cMargin; $this->aCols=array(); $this->Ln(); } function TableWaters($row) { $vul = $this->w - $this->rMargin - $this->lMargin - 137; if ($this->GetY() > 250) $this->AddPage(); else $this->Ln(); $this->AddCol($vul,'Water bron','L'); $this->AddCol(20,'Volume','R'); $this->AddCol(15,'Ca','R'); $this->AddCol(15,'Mg','R'); $this->AddCol(15,'Na','R'); $this->AddCol(15,'CaCO3','R'); $this->AddCol(15,'Cl','R'); $this->AddCol(15,'SO4','R'); $this->AddCol(15,'pH','R'); $cMargin=$this->cMargin; $this->cMargin=2; $this->TableX=$this->lMargin; $this->TableHeader(); $this->ProcessingTable=true; $this->SetFont('Helvetica','',9); $this->SetFillColor(120, 255, 250); $this->Cell($vul,5,$row['w1_name'],0,0,'L',true); $this->Cell(20,5,sprintf("%.1f", $row['w1_amount']).' L',0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w1_calcium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w1_magnesium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w1_sodium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w1_total_alkalinity']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w1_chloride']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w1_sulfate']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w1_ph']),0,0,'R',true); $this->Ln(); $this->Cell($vul,5,$row['w2_name'],0,0,'L',true); $this->Cell(20,5,sprintf("%.1f", $row['w2_amount']).' L',0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w2_calcium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w2_magnesium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w2_sodium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w2_total_alkalinity']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w2_chloride']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w2_sulfate']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w2_ph']),0,0,'R',true); $this->Ln(); $this->Cell($vul,5,'Gemengd water',0,0,'L',true); $this->Cell(20,5,sprintf("%.1f", $row['wg_amount']).' L',0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wg_calcium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wg_magnesium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wg_sodium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wg_total_alkalinity']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wg_chloride']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wg_sulfate']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wg_ph']),0,0,'R',true); $this->Ln(); $this->Cell($vul,5,'Behandeld water',0,0,'L',true); $this->Cell(20,5,'',0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wb_calcium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wb_magnesium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wb_sodium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wb_total_alkalinity']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wb_chloride']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wb_sulfate']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wb_ph']),0,0,'R',true); $this->ProcessingTable=false; $this->cMargin=$cMargin; $this->aCols=array(); $this->Ln(); } function TableSummary($row) { global $pSugar; global $pCara; global $svg; global $colorw; global $cost_fermentables; global $cost_hops; global $cost_miscs; global $cost_yeasts; global $colormethod; global $ibumethod; /* 2 Columns */ if ($this->GetY() > 200) $this->AddPage(); else $this->Ln(); $vul = $this->w - $this->rMargin - $this->lMargin - 170; $cMargin=$this->cMargin; $this->cMargin=2; $this->TableX=$this->lMargin; $this->SetFont('Helvetica','B',9); $this->SetX($this->TableX); $this->SetFillColor(255,150,100); $this->Cell(0, 5, 'Recept samenvatting',0,0,'C',true); $this->Ln(); $this->SetFont('Helvetica','',9); $this->SetFillColor(210,245,255); $row['est_fg'] = estimate_fg($pSugar, $pCara, 0, 0, 0, $svg, $row['est_og']); $this->SetX($this->TableX); $this->Cell(35,5,'Start SG',0,0,'L',true); $this->Cell(25,5,sprintf("%.3f",$row['est_og']),0,0,'L',true); $this->Cell(25,5,'('.sprintf("%.3f",$row['st_og_min']).' - '.sprintf("%.3f",$row['st_og_max']).')',0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(35,5,'Eind SG',0,0,'L',true); $this->Cell(25,5,sprintf("%.3f",$row['est_fg']),0,0,'L',true); $this->Cell(25,5,'('.sprintf("%.3f",$row['st_fg_min']).' - '.sprintf("%.3f",$row['st_fg_max']).')',0,0,'L',true); $this->Ln(); $row['est_abv'] = abvol($row['est_og'], $row['est_fg']); $this->SetX($this->TableX); $this->Cell(35,5,'Geschat alcohol',0,0,'L',true); $this->Cell(25,5,sprintf("%.1f",$row['est_abv']).'%',0,0,'L',true); $this->Cell(25,5,'('.sprintf("%.1f",$row['st_abv_min']).' - '.sprintf("%.1f",$row['st_abv_max']).'%)',0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(35,5,'CO2',0,0,'L',true); $this->Cell(25,5,sprintf("%.1f",$row['est_carb']).'%',0,0,'L',true); $this->Cell(25,5,'('.sprintf("%.1f",$row['st_carb_min']).' - '.sprintf("%.1f",$row['st_carb_max']).'%)',0,0,'L',true); $this->Ln(); $row['est_color'] = kw_to_ebc($row['color_method'], $colorw); $this->SetX($this->TableX); $this->Cell(35,5,'Kleur ('.$colormethod[$row['color_method']].')',0,0,'L',true); $beercolor = ebc_to_color($row['est_color']); if ($row['est_color'] > 30) $this->SetTextColor(250); $this->SetFillColor($beercolor[0],$beercolor[1],$beercolor[2]); $this->Cell(25,5,$row['est_color'].' EBC',0,0,'L',true); $this->Cell(25,5,'('.$row['st_color_min'].' - '.$row['st_color_max'].' EBC)',0,0,'L',true); $this->SetTextColor(0); $this->SetFillColor(210,245,255); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(35,5,'Bitterheid ('.$ibumethod[$row['ibu_method']].')',0,0,'L',true); $this->Cell(25,5,sprintf("%.0f",$row['est_ibu']).' IBU',0,0,'L',true); $this->Cell(25,5,'('.$row['st_ibu_min'].' - '.$row['st_ibu_max'].' IBU)',0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $cost_total = $cost_fermentables + $cost_hops + $cost_miscs + $cost_yeasts; $this->Cell(35,5,'Kosten',0,0,'L',true); $this->Cell(25,5,sprintf("%.2f",$cost_total).EURO,0,0,'L',true); $this->Cell(25,5,sprintf("%.2f",$cost_total/$row['batch_size']).EURO.' / liter',0,0,'L',true); // calorieen $this->ProcessingTable=false; $this->cMargin=$cMargin; $this->aCols=array(); $this->Ln(); } } class PDF extends PDF_MySQL_Table { function Header() { global $row; global $prdate; $this->Image('images/logo.png',10,6,30); // Title $this->SetFont('Helvetica','B',18); $this->SetX(45); $this->Cell(0,8,$row['name'],0,1,'L'); $this->Ln(1); $this->SetFont('Helvetica','',10); $this->SetX(45); $this->Cell(17,5,'Datum:',0,0,'L'); $this->Cell(0,5,$prdate,0,1,'L'); $this->SetX(45); $this->Cell(17,5,'Stijl:',0,0,'L'); $st_name = iconv('UTF-8','windows-1252',$row['st_name']); $this->Cell(0,5,$st_name,0,1,'L'); $this->Ln(7); // Ensure table header is printed parent::Header(); } } /* * Generate PDF from recipe data */ $pdf = new PDF(); $pdf->AddPage(); $pdf->TableGlobal($row); $pdf->TableFermentables($row); $pdf->TableHops($row); $pdf->TableYeasts($row); $pdf->TableMiscs($row); $pdf->TableMashs($row); $pdf->TableWaters($row); $pdf->TableSummary($row); if (strlen($row['notes'])) { if ($pdf->GetY() > 200) $pdf->AddPage(); else $pdf->Ln(10); $pdf->SetFillColor(255,150,100); $pdf->SetFont('Helvetica','B',9); $pdf->Cell(0, 5, 'Recept opmerkingen',0,0,'C',true); $pdf->Ln(); $pdf->SetFont('Helvetica','',9); $pdf->SetFillColor(210,245,255); $pdf->MultiCell(0,4,$row['notes'],0,'L',true); } // Disclaimer toevoegen dat dit alleen recept ontwikkeling is. Uitkomsten zoals IBU zijn een berekende schatting. // Footer sectie met berekende/geschatte uitkomsten zoals ABV, kostprijs per liter enz. $pdf->Output();