buildHtml($euer, $settings); $mpdf = new Mpdf([ 'mode' => 'utf-8', 'format' => 'A4', 'margin_top' => 20, 'margin_bottom' => 20, 'margin_left' => 20, 'margin_right' => 20, ]); $mpdf->SetTitle('EÜR ' . $euer['year']); $mpdf->SetAuthor($settings['firma'] ?? ''); $mpdf->WriteHTML($this->buildCss(), \Mpdf\HTMLParserMode::HEADER_CSS); $mpdf->WriteHTML($html, \Mpdf\HTMLParserMode::HTML_BODY); $mpdf->Output('EÜR-' . $euer['year'] . '.pdf', 'D'); } private function buildHtml(array $euer, array $settings): string { $h = fn($v) => htmlspecialchars((string)$v, ENT_QUOTES, 'UTF-8'); $fmt = fn($v) => number_format((float)$v, 2, ',', '.') . ' €'; $firma = $h($settings['firma'] ?? ''); $year = $euer['year']; // Build table rows $rows = ''; $maxRows = max(count($euer['einnahmen']), count($euer['ausgaben'])); for ($i = 0; $i < $maxRows; $i++) { $e = $euer['einnahmen'][$i] ?? null; $a = $euer['ausgaben'][$i] ?? null; $rows .= '
{$firma} · Geschäftsjahr {$year}
| Betriebseinnahmen | Betriebsausgaben | |||||
|---|---|---|---|---|---|---|
| Kto. | Bezeichnung | Betrag | Kto. | Bezeichnung | Betrag | |
| Summe Einnahmen | {$fmt($euer['total_einnahmen'])} | Summe Ausgaben | {$fmt($euer['total_ausgaben'])} | |||
| {$gewinnLabel}: {$fmt($euer['gewinn'])} | ||||||
Erstellt am {$h(date('d.m.Y H:i'))} · Steuerkram
HTML; } private function buildCss(): string { return <<