216 lines
9.3 KiB
PHP
216 lines
9.3 KiB
PHP
<?php
|
|
|
|
namespace HermannTelser\Gutachten\Downloads;
|
|
|
|
use HermannTelser\Gutachten\DB\DbFunction;
|
|
use HermannTelser\Gutachten\DB\Select\Paragraph62;
|
|
use HermannTelser\Gutachten\DB\Select\Select;
|
|
use HermannTelser\Gutachten\Utility\Helper;
|
|
use HermannTelser\Gutachten\Downloads\AllgemeinTabelle;
|
|
|
|
use Mpdf;
|
|
// Mpdf installed by typo3 extension
|
|
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
|
|
|
class PdfStandards
|
|
{
|
|
public static $Mpdf;
|
|
/**
|
|
* @return array
|
|
*/
|
|
public static function download()
|
|
{
|
|
// ob_clean(); // set to remove wrong headers which crashed some files (e.g. xls, dot, ...)
|
|
|
|
// DbFunction::$debug = 1;
|
|
|
|
DbFunction::$projektid = GeneralUtility::_GP('projekt_aktive');
|
|
|
|
if (0 == DbFunction::$projektid or !is_numeric(DbFunction::$projektid)) {
|
|
die('aktive projekt ID fehlt!');
|
|
}
|
|
|
|
$_platzhalter = DbFunction::select(
|
|
'tx_gutachten_projekteplatzhalter',
|
|
['code', 'txt'],
|
|
['pid' => DbFunction::$projektid]
|
|
);
|
|
|
|
$_projekt = DbFunction::select(
|
|
'tx_gutachten_projekte',
|
|
['auftraggeber_id', 'gutachter_id', 'intname', 'name', 'beschreibung', 'erstellung', 'onoff', 'upload', 'allgemeinupload', 'recalculate', 'zuabTitel', 'nwbTitel', 'zustTitel', 'allgemTitel', 'loggia_title', 'nwbStartSeite', 'm1pP', 'm5pP', 'timestamp', 'status', 'erstelldatum'],
|
|
['id' => DbFunction::$projektid]
|
|
);
|
|
|
|
$_auftraggeber = DbFunction::select(
|
|
'tx_gutachten_auftraggeber',
|
|
'*',
|
|
['id' => $_projekt[0]['auftraggeber_id']]
|
|
);
|
|
|
|
$_gutachter = DbFunction::select(
|
|
'tx_gutachten_gutachter',
|
|
'*',
|
|
['id' => $_projekt[0]['gutachter_id']]
|
|
);
|
|
|
|
|
|
// print_r($_projekt);
|
|
// print_r($_auftraggeber);
|
|
// print_r($_gutachter);
|
|
// exit;
|
|
|
|
self::$Mpdf = new \Mpdf\Mpdf([
|
|
'mode' => 'utf-8',
|
|
'format' => 'A4-P',
|
|
'margin_left' => 0,
|
|
'margin_right' => 0,
|
|
'margin_top' => 0,
|
|
'margin_bottom' => 0,
|
|
'margin_header' => 0,
|
|
'margin_footer' => 0,
|
|
]);
|
|
|
|
$stylesheet = file_get_contents(__DIR__.'/style.css');
|
|
|
|
self::$Mpdf->WriteHTML($stylesheet, \Mpdf\HTMLParserMode::HEADER_CSS);
|
|
// 1 tabelle
|
|
// 2 inhaltsverzeichnis
|
|
// 3 textblock
|
|
// 4 deckblatt
|
|
// 5 nur Überschrift
|
|
// 6 auftraggeber
|
|
// 7 tabelle § 6/2
|
|
// 8 allgemeinflächen
|
|
$_standards = DbFunction::select('tx_gutachten_projektestandards', '*', ['AND' => ['hidden' => 0, 'pid' => DbFunction::$projektid], 'ORDER' => 'pos']);
|
|
|
|
foreach ($_standards as $key => $value) {
|
|
$textartid = (int)$value['textart_id'];
|
|
switch ($textartid) {
|
|
case '4':
|
|
// DECKBLATT
|
|
$html = Deckblatt::create($value, $_projekt, $_platzhalter, $_gutachter, $_auftraggeber);
|
|
self::$Mpdf->WriteHTML($html, \Mpdf\HTMLParserMode::HTML_BODY);
|
|
break;
|
|
case '2':
|
|
// INHALTSVERZEICHNIS
|
|
self::$Mpdf->AddPageByArray(['mgt' => 22, 'mgb' => 22, 'mgl' => 10, 'mgr' => 10]);
|
|
$html = Inhaltsverzeichnis::create($value, $_platzhalter);
|
|
self::$Mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
|
|
self::$Mpdf->WriteHTML($html, \Mpdf\HTMLParserMode::HTML_BODY);
|
|
|
|
break;
|
|
case '1':
|
|
if (1 == $value['neueseite']) {
|
|
self::$Mpdf->AddPage();
|
|
self::$Mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
|
|
}
|
|
$html = '';
|
|
if ('' != $value['titel']) {
|
|
$html = '<div class="header">'.$value['titel'].'</div>';
|
|
} elseif ('' != $value['kennung']) {
|
|
$html = '<div class="header">'.$value['kennung'].'</div>';
|
|
}
|
|
|
|
$text = Helper::replacePlatzhalter($_platzhalter, $value['txt']);
|
|
$_text = explode('<br />', $text);
|
|
$html .= '<table class="pure-table pure-table-striped ganzebreite size09">';
|
|
foreach ($_text as $key => $value) {
|
|
$_row = explode('|', $value);
|
|
$html .= Helper::table_row($_row);
|
|
}
|
|
$html .= '</table>';
|
|
self::$Mpdf->WriteHTML($html, \Mpdf\HTMLParserMode::HTML_BODY);
|
|
break;
|
|
case '3':
|
|
if (1 == $value['neueseite']) {
|
|
self::$Mpdf->AddPage();
|
|
self::$Mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
|
|
}
|
|
$html = '';
|
|
if ('' != $value['titel']) {
|
|
$html = '<div class="header">'.$value['titel'].'</div>';
|
|
} elseif ('' != $value['kennung']) {
|
|
$html = '<div class="header">'.$value['kennung'].'</div>';
|
|
}
|
|
$textblock = Helper::replacePlatzhalter($_platzhalter, $value['txt']);
|
|
$html .= '<div class="textblock">'.$textblock.'</div>';
|
|
self::$Mpdf->WriteHTML($html, \Mpdf\HTMLParserMode::HTML_BODY);
|
|
break;
|
|
case '5':
|
|
if (1 == $value['neueseite']) {
|
|
self::$Mpdf->AddPage();
|
|
self::$Mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
|
|
}
|
|
if ('' != $value['titel']) {
|
|
$html = '<div class="header">'.$value['titel'].'</div>';
|
|
} elseif ('' != $value['kennung']) {
|
|
$html = '<div class="header">'.$value['kennung'].'</div>';
|
|
}
|
|
self::$Mpdf->WriteHTML($html, \Mpdf\HTMLParserMode::HTML_BODY);
|
|
break;
|
|
case '6':
|
|
if (1 == $value['neueseite']) {
|
|
self::$Mpdf->AddPage();
|
|
self::$Mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
|
|
}
|
|
$html = '<div class="header">'.$value['titel'].'</div>';
|
|
|
|
$auftraggeber = str_replace('<br />', '|||', $_auftraggeber[0]['txt']);
|
|
$auftraggeber = str_replace('</div>', '|||', $auftraggeber);
|
|
$tmp = explode('|||', $auftraggeber);
|
|
$string = '';
|
|
foreach ($tmp as $key => $value) {
|
|
$value = strip_tags($value);
|
|
if ('-' == $value[0]) {
|
|
$value = substr($value, 1);
|
|
}
|
|
$string .= trim(strip_tags($value)).'<br>';
|
|
}
|
|
$html .= '<div class="textblock">'.$string.'</div>';
|
|
self::$Mpdf->WriteHTML($html, \Mpdf\HTMLParserMode::HTML_BODY);
|
|
break;
|
|
case '7':
|
|
// 7 tabelle § 6/2
|
|
if (1 == $value['neueseite']) {
|
|
self::$Mpdf->AddPage();
|
|
self::$Mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
|
|
}
|
|
|
|
$_paragraph_62 = Paragraph62::select(DbFunction::$projektid);
|
|
$html = '<table class="pure-table pure-table-striped ganzebreite size08 center">';
|
|
$html .= Helper::table_header_row(['Top', 'Geschoß', 'Orientierung', 'Typ']);
|
|
foreach ($_paragraph_62 as $key => $value) {
|
|
$html .= Helper::table_row($value, 1);
|
|
}
|
|
$html .= '</table>';
|
|
|
|
self::$Mpdf->WriteHTML($html, \Mpdf\HTMLParserMode::HTML_BODY);
|
|
break;
|
|
case '8':
|
|
// ALLGEMEINFLÄCHEN
|
|
if (1 == $value['neueseite']) {
|
|
self::$Mpdf->AddPage();
|
|
self::$Mpdf->SetHTMLFooter('<div class="center">Seite {PAGENO}<br><br></div>');
|
|
}
|
|
|
|
if ('' != $value['titel']) {
|
|
$html = '<div class="header">'.$value['titel'].'</div>';
|
|
} elseif ('' != $value['kennung']) {
|
|
$html = '<div class="header">'.$value['kennung'].'</div>';
|
|
}
|
|
$html .= AllgemeinTabelle::load(DbFunction::$projektid);
|
|
$html .= '<br><br><br><br><br><table class="inhalt"><tr>';
|
|
$html .= '<td>'.$_projekt[0]['erstellung'].'</td>';
|
|
$html .= '<td class="right">'.$_gutachter[0]['kopf'].'</td>';
|
|
$html .= '</tr></table>';
|
|
self::$Mpdf->WriteHTML($html, \Mpdf\HTMLParserMode::HTML_BODY);
|
|
break;
|
|
}
|
|
}
|
|
self::$Mpdf->Output('Standard.pdf', Mpdf\Output\Destination::INLINE);
|
|
|
|
exit;
|
|
}
|
|
}
|