generateFileName($report, $filename); $id = $report->getId(); $struktur = $this->service->resolveParameters($report, $parameterValues); if(!$this->service->isSqlStatementAllowed($struktur)) { throw new InvalidArgumentException('Resolved Query not executable.'); } $colKeyMap = []; $colWidths = []; $colNames = []; $colAligns = []; $counter = 0; foreach ($report->getColumns() as $column) { $colKeyMap[$column->getKey()] = $column->getTitle(); $colWidths[] = $column->getWidth(); $colAligns[] = $column->getAlignment(); if ($column->isSumColumn()) { $sumcolsa[] = $counter; } $counter++; } $nameaufpdf = $this->stringReadyForPdf($report->getName()); foreach($sumcolsa as $k => $v) { $v = (int)$v; if($v <= 0) { unset($sumcolsa[$k]); }else{ $sumcolsa[$k] = $v; } } define('FPDF_FONTPATH2','/../../../www/lib/pdf/font2'); //require dirname(__DIR__).'/lib/pdf/fpdf_org.php'; $pdfOrgPath = __DIR__.'/../../../www/lib/pdf/fpdf_org.php'; require $pdfOrgPath; $pdf=new SuperFPDF(); $pdf->AddPage(); $pdf->SetFillColor(255,255,255); $pdf->SetTextColor(0); $pdf->SetDrawColor(0,0,0); $pdf->SetLineWidth(.3); $pdf->SetFont('Arial','B',10); $pdf->Cell(array_sum($colWidths),7,"Bericht: $nameaufpdf (Ausdruck vom ".date("d.m.Y").")",1,0,'L',true); $pdf->Ln(); $pdf->SetFont('Arial','',8); $sums = []; $prepareHeaderLine = true; $cw = count($colWidths); foreach ($this->db->yieldAll($this->service->resolveParameters($report, $parameterValues), []) as $row) { if($prepareHeaderLine){ $header = []; foreach ($row as $columnName => $columnValue) { $header[] = $colKeyMap[$columnName]; } for($i=0;$i<$cw;$i++) { $pdf->Cell($colWidths[$i], 7, $header[$i], 1, 0, $colAligns[$i], true); } $pdf->Ln(); $prepareHeaderLine = false; } $columnCounter = 0; foreach($row as $columnKey=>$columnValue){ $pdf->Cell($colWidths[$columnCounter],6,$this->stringReadyForPdf($columnValue),'LRTB',0,$colAligns[$columnCounter],true); if(!empty($sumcolsa) && in_array($columnKey+1,$sumcolsa, false)) { if(empty($sums[$columnKey])){ $sums[$columnKey] = 0; } $sums[$columnKey] += $this->sanitizeBetrag(1, $columnValue); } $columnCounter++; } for($columnCounter; $columnCounter < $cw; $columnCounter++) { $pdf->Cell($colWidths[$columnCounter], 6, '', 'LRTB', 0, $colAligns[$columnCounter], true); } $pdf->Ln(); } if(!empty($sums)) { $pdf->Ln(); for($columnCounter = 0;$columnCounter<$cw;$columnCounter++) { $pdf->Cell( $colWidths[$columnCounter], 6, isset($sums[$columnCounter])?$this->stringReadyForPdf(number_format($sums[$columnCounter], 2, ',', '.')):'', 'LRTB', 0, $colAligns[$columnCounter], true ); } } //$pdf->Cell($w[1],6,$this->app->erp->LimitChar($name_de,30),'LRTB',0,'L',$fill); $pdf->SetFont('Arial','',8); $filePath = $this->genereateFilePath($filename);//sprintf('%s/%s', sys_get_temp_dir(), $filename); $pdf->Output($filePath, 'F'); return $filePath; } /** * kopiert aus erpapi * @todo: prüfen ob gebraucht und ggf. auflösen * * @param $db * @param $value * @param null $fromform * * @return string|string[] */ private function sanitizeBetrag($db,$value,$fromform = null) { // wenn . und , vorhanden dann entferne punkt $pos_punkt = strrpos($value, '.'); $pos_komma = strrpos($value, ','); if (($pos_punkt !== false) && ($pos_komma !== false)) { if ($pos_punkt < $pos_komma) { $value = str_replace('.', '', $value); } else { $value = str_replace(',', '', $value); } } return str_replace(',', '.', $value); } /** * @param $string * * @return string */ private function stringReadyForPdf($string) { return trim( html_entity_decode( str_replace( ['“', '„', '–', '’', ''', 'NONBLOCKINGZERO'], ['"','','-',"'","'",''], $string ), ENT_QUOTES, 'UTF-8' ) ); } }