Email Subject Line Personalizer Email Subject Line Personalizer Generate tailored subject lines for different audience segments using AI. Campaign Details Base Subject Line Target Audience Segment Goal Increase Open Rates Drive Urgency Promote a Specific Product Re-engage the User Generate Subjects Generated Subject Lines Copy All Download PDF Your AI-generated subject lines will appear here. Base Subject: ${inputsData.baseSubject}Goal: ${inputsData.goal} Generated Subject Lines ${subjectCards} `; const pdfTemplate = document.getElementById('pdf-template'); pdfTemplate.innerHTML = reportHtml; pdfTemplate.classList.remove('invisible'); try { const { jsPDF } = window.jspdf; const canvas = await html2canvas(pdfTemplate.querySelector('.pdf-page'), { scale: 2 }); const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF({ orientation: 'p', unit: 'pt', format: 'a4' }); const pdfWidth = pdf.internal.pageSize.getWidth(), pdfHeight = (canvas.height * pdfWidth) / canvas.width; pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, pdfHeight); pdf.save(`Email_Subjects_${inputsData.audience.replace(/\s+/g, '_').substring(0,20)}.pdf`); } catch (e) { console.error('PDF Generation Error:', e); } finally { downloadPdfBtn.disabled = false; downloadPdfBtn.textContent = 'Download PDF'; pdfTemplate.classList.add('invisible'); pdfTemplate.innerHTML = ''; } } // --- EVENT LISTENERS --- generateBtn.addEventListener('click', generateSubjects); copyAllBtn.addEventListener('click', () => { if (generatedSubjects.length > 0) { const allText = generatedSubjects.join('\n'); copyToClipboard(allText, 'All subjects copied!'); } }); resultsContainer.addEventListener('click', (e) => { if (e.target.classList.contains('copy-subject-btn')) { const text = generatedSubjects[e.target.dataset.index]; copyToClipboard(text, 'Subject copied!'); } }); downloadPdfBtn.addEventListener('click', generatePdfReport); });