Lease Violation Notice Generator

Lease Violation Notice Generator

Create a formal notice to tenants regarding violations of their lease agreement.

Landlord, Tenant & Property Information

Landlord Information

Tenant Information

${consequences}

Please address this matter promptly. We trust you will take the necessary steps to resolve these issues and return to compliance with your lease agreement. If you have any questions, please contact us immediately.

Sincerely,

By: _________________________

Name: ${landlordName}

Title: Landlord/Property Manager

`; const outputContainer = document.getElementById('notice-output-content'); if(outputContainer) outputContainer.innerHTML = finalHTML; }; const handleDownloadPdf = async () => { const { jsPDF } = window.jspdf; const content = document.getElementById('notice-output-content'); if (!content) return; const originalButtonText = downloadPdfBtn.innerHTML; downloadPdfBtn.innerHTML = 'Generating...'; downloadPdfBtn.disabled = true; try { const canvas = await html2canvas(content, { scale: 2, useCORS: true, backgroundColor: '#ffffff' }); const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF('p', 'mm', 'a4'); const pdfWidth = pdf.internal.pageSize.getWidth(); const margin = 15; const contentWidth = pdfWidth - (margin * 2); const imgProps = pdf.getImageProperties(imgData); const imgHeight = (imgProps.height * contentWidth) / imgProps.width; let heightLeft = imgHeight; let position = margin; pdf.addImage(imgData, 'PNG', margin, position, contentWidth, imgHeight); heightLeft -= (pdf.internal.pageSize.getHeight() - margin * 2); while (heightLeft > 0) { position = heightLeft - imgHeight + margin; pdf.addPage(); pdf.addImage(imgData, 'PNG', margin, position, contentWidth, imgHeight); heightLeft -= (pdf.internal.pageSize.getHeight() - margin); } pdf.save('Lease_Violation_Notice.pdf'); } catch (error) { console.error("PDF generation failed:", error); } finally { downloadPdfBtn.innerHTML = originalButtonText; downloadPdfBtn.disabled = false; } }; // Event Listeners tabButtons.forEach((btn, i) => btn.addEventListener('click', () => switchTab(i + 1))); prevBtn.addEventListener('click', () => switchTab(currentTab - 1)); nextBtn.addEventListener('click', () => switchTab(currentTab + 1)); downloadPdfBtn.addEventListener('click', handleDownloadPdf); updateNavButtons(); });
Scroll to Top