const fs = require('fs'); const js = ` // --- PDF Export Logic --- const btnExportPDF = document.getElementById('btnExportPDF'); if (btnExportPDF) { btnExportPDF.addEventListener('click', async () => { const originalText = btnExportPDF.innerText; btnExportPDF.innerText = 'Exportiere...'; btnExportPDF.disabled = true; try { if (typeof html2canvas === 'undefined' || typeof jspdf === 'undefined') { throw new Error('PDF Bibliotheken (html2canvas, jspdf) sind noch nicht geladen.'); } const mapContainer = document.getElementById('map'); // Add Overlay const exportOverlay = document.createElement('div'); exportOverlay.style.position = 'absolute'; exportOverlay.style.bottom = '30px'; exportOverlay.style.left = '30px'; exportOverlay.style.zIndex = '9999'; exportOverlay.style.background = 'rgba(255, 255, 255, 0.95)'; exportOverlay.style.padding = '15px'; exportOverlay.style.border = '2px solid #333'; exportOverlay.style.borderRadius = '5px'; exportOverlay.style.color = '#333'; exportOverlay.style.fontFamily = 'Arial, sans-serif'; exportOverlay.style.boxShadow = '0 0 10px rgba(0,0,0,0.3)'; const projName = document.getElementById('projectSelector')?.options[document.getElementById('projectSelector')?.selectedIndex]?.text || 'Unbekannt'; exportOverlay.innerHTML = \`
ENWELO Standortplanung
Projekt: \${projName}
Rotorüberstreichfläche
Gebietsumring
Abstandslinien
WEA Standort
\`; mapContainer.appendChild(exportOverlay); // Wait a tiny bit for DOM to render overlay await new Promise(r => setTimeout(r, 100)); const canvas = await html2canvas(mapContainer, { useCORS: true, allowTaint: true, ignoreElements: (element) => { return element.classList.contains('leaflet-control-zoom'); } }); mapContainer.removeChild(exportOverlay); const imgData = canvas.toDataURL('image/png'); const pdf = new jspdf.jsPDF({ orientation: 'landscape', unit: 'mm', format: 'a3' }); const pdfWidth = pdf.internal.pageSize.getWidth(); const pdfHeight = pdf.internal.pageSize.getHeight(); const imgProps = pdf.getImageProperties(imgData); const ratio = imgProps.width / imgProps.height; let renderWidth = pdfWidth; let renderHeight = pdfWidth / ratio; if (renderHeight > pdfHeight) { renderHeight = pdfHeight; renderWidth = pdfHeight * ratio; } // Center image in PDF const xOffset = (pdfWidth - renderWidth) / 2; const yOffset = (pdfHeight - renderHeight) / 2; pdf.addImage(imgData, 'PNG', xOffset, yOffset, renderWidth, renderHeight); pdf.save('Karte_Enwelo.pdf'); } catch (err) { console.error('Fehler beim PDF Export:', err); alert('Fehler beim PDF Export: ' + err.message); } finally { btnExportPDF.innerText = originalText; btnExportPDF.disabled = false; } }); } `; fs.appendFileSync('app.js', js);