Online Blog Title Generator

Online Blog Title Generator

Generate dozens of compelling title ideas for your next article.

Controls

Generated Titles

Click "Generate Titles" to see your results.

Generated for Keyword: ${keywordInput.value.trim()}

Generated Titles
    ${titleListItems}
`; 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-report-container'), { scale: 2 }); const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF({ orientation: 'p', unit: 'pt', format: 'a4' }); const pdfWidth = pdf.internal.pageSize.getWidth(); const pdfHeight = (canvas.height * pdfWidth) / canvas.width; pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, pdfHeight); pdf.save(`Blog_Titles_${keywordInput.value.trim().replace(/\s+/g, '_')}.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', generateTitles); copyAllBtn.addEventListener('click', () => { if (generatedTitles.length === 0) { showNotification("Nothing to copy."); return; } copyToClipboard(generatedTitles.join('\n'), 'All titles copied!'); }); resultsContainer.addEventListener('click', (e) => { if (e.target.classList.contains('copy-title-btn')) { const titleText = e.target.previousElementSibling.textContent; copyToClipboard(titleText, 'Title copied!'); } }); downloadPdfBtn.addEventListener('click', generatePdfReport); // --- INITIALIZATION --- // No tabs to initialize });
Scroll to Top