<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Formular</title>
<style>
.table-container {
margin-top: 20px;
margin-left: 120px;
margin-right: 100px;
}
table {
border-collapse: collapse;
border: none;
}
th, td {
border: 1px solid;
padding: 4px;
text-align: left;
vertical-align: middle;
}
tr {
vertical-align: middle;
}
.normaltext {
text-align: left;
font-size: 18px;
color: black;
font-weight: normal;
padding-top: 10px;
}
.normaltext_fett {
color: black;
text-align: left;
font-size: 18px;
font-weight: bold;
padding-top: 10px;
}
.textklein {
color: black;
font-size: 12px;
}
.no-border {
border: 1px solid;
background-color: #F5F6CE;
}
.input-color {
color: black;
}
.button {
background-color: green;
border-color: white;
color: white;
font-size: 16px;
}
select {
border: 1px solid;
outline: none;
background-color: #F5F6CE;
width: 200px;
padding-top: 10px;
}
#textarea {
white-space: pre-wrap; /* Dies erzwingt die Anzeige der Zeilenumbrüche */
}
/* Während das PDF erzeugt wird, verbergen wir die Textarea: */
main.creating-pdf textarea {
display: none;
}
/* Das Helfer-Div im Aussehen an die Textarea anpassen: */
main .for-pdf {
border: 1px solid lightgray;
word-wrap: break-word;
}
/* Wird kein PDF erzeugt, verbergen wir das Helfer-Div: */
main:not(.creating-pdf) .for-pdf {
display: none;
}
</style>
</head>
<body>
<form id="Formular">
<main>
<div class="table-container">
<table>
<tr>
<td colspan="11" class="normaltext_fett">Genehmigung:</td>
</tr>
<tr id="Genehmigungsdatum_id_date">
<td style="text-align:center">
<input type="radio" id="radio_Auflagen" name="Auflagen" onclick="pruefen_auflagen()">
<label> </label>
</td>
<td><input class="normaltext no-border" type="date" name="Genehmigungsdatum_date" id="Genehmigungsdatum_date" ></td>
</tr>
<tr id="Genehmigungsdatum_id_text" style="display: none;">
<td colspan="2"></td>
<td><input class="normaltext no-border" type="text" name="Genehmigungsdatum_text" id="Genehmigungsdatum_text"></td>
</tr>
<tr>
<td class="normaltext" >Text:</td>
<td class="normaltext" style="text-align:right">1.</td>
<td id="td_1_firma" > <input class="normaltext no-border" type="text" name="Firma1" id="firma1" placeholder="" size="50"></td>
</tr>
<tr>
<td style="text-align:center">
<input type="radio" id="radio_Auflagen2" name="Auflagen" onclick="pruefen_auflagen()" value="Auflagen2">
<label> </label>
</td>
<td colspan="9" class="normaltext">entsprechend den Auflagen / Anmerkungen in beiligender Genehmigung</td>
</tr>
<tr>
<td></td>
<td colspan="9" height="80px">
<textarea name="Auflagen2" id="textarea" class="normaltext" cols="100" rows="4" placeholder="" onclick="activate_radio_auflagen()" oninput="updateTextarea()"></textarea>
</td>
</tr>
<tr>
<td colspan="2" class="normaltext_fett">Auswahl:</td>
<td colspan="9" >
<select class="normaltext no-border" id="auswahl">
<option value="">bitte wählen</option>
<option value="aa">Auswahl A</option>
<option value="bb">Auswahl B</option>
</select>
<span style="color:white" id="ergebnis"></span>
</td>
</tr>
<tr>
<td colspan="11">
<div id="element-to-hide" data-html2canvas-ignore="true">
<button class="button" type="reset" >Formular leeren</button>
<button class="button" type="submit" id="generatePdf">Formular als PDF drucken</button>
</div>
</td>
</tr>
</table>
</div>
</main>
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.4.0/jspdf.umd.min.js"></script>
<script src="https://html2canvas.hertzen.com/dist/html2canvas.js"></script>
<script>
window.onload = function () {
pruefen_auflagen();
};
function pruefen_auflagen() {
if (document.getElementById('radio_Auflagen').checked) {
document.getElementById('textarea').value = "";
document.getElementById('textarea').parentNode.parentNode.style.display = 'none'; // Hier wird die ganze Zeile ausgeblendet
} else {
document.getElementById('textarea').parentNode.parentNode.style.display = ''; // Hier wird die Anzeige der Zeile wiederhergestellt, falls nicht ausgewählt
}
}
const
// Das Element, das gedruckt werden soll, bereit stellen:
elementToPrint = document.querySelector('main'),
// Die Textareas bereit stellen:
textareas = elementToPrint.querySelectorAll('main textarea');
// Für alle Textareas:
textareas.forEach(textarea => {
// Helfer-Div dahinter einfügen und seine Breite
// gleich der der Textarea setzen:
const
box = textarea.getBoundingClientRect();
textarea.insertAdjacentHTML('afterend',
`<div class="for-pdf" style="width: ${box.width}px"></div>`);
});
window.jsPDF = window.jspdf.jsPDF;
document.getElementById('generatePdf').addEventListener('click', function (event) {
event.preventDefault();
// Bei dem Element, das gedruckt werden soll,
// die Klasse "creating-pdf" hinzu fügen.
// Davon abhängig wird die Sichtbarkeit der Textarea
// und des Helfer-Divs im CSS gesteuert:
elementToPrint.classList.add('creating-pdf');
// Für alle Textareas:
textareas.forEach(textarea => {
// Den Text in das Helfer-Div dahinter eintragen:
const
txt = textarea.value,
nextEle = textarea.nextElementSibling;
nextEle.textContent = txt;
});
document.getElementById('element-to-hide').style.display = 'none';
// Genehmigungsdatum
if (document.getElementById('Genehmigungsdatum_date').value !== '') {
document.getElementById('Genehmigungsdatum_id_date').style.display = 'none';
document.getElementById('Genehmigungsdatum_id_text').removeAttribute('style');
var genehmigungsdatum = document.getElementById('Genehmigungsdatum_date').value.split('-');
document.getElementById('Genehmigungsdatum_text').value = genehmigungsdatum[2] + '.' + genehmigungsdatum[1] + '.' + genehmigungsdatum[0];
}
const pdf = new jsPDF();
pdf.html(document.querySelector('main'), {
html2canvas: {
scale: 0.16
},
callback: function (pdf) {
document.getElementById('element-to-hide').style.display = 'block';
// Rücksetzen der Stile für Datumsfelder
document.getElementById('Genehmigungsdatum_id_text').style.display = 'none';
document.getElementById('Genehmigungsdatum_id_date').style = '';
// Bei dem Element, das gedruckt wurde,
// die Klasse "creating-pdf" wieder löschen:
elementToPrint.classList.remove('creating-pdf');
pdf.save();
}
});
});
</script>
</body>
</html>