Presentation Slide Generator

Presentation Slide Generator

Enter your content, choose a theme, and generate a professional presentation.

${slideData.author}

`; } else if (slideData.type === 'content') { slide.innerHTML = `

${slideData.title}

${slideData.content}

`; } else if (slideData.type === 'simple') { slide.innerHTML = `

${slideData.content}

`; } elements.preview.slideContainer.appendChild(slide); }); }; // --- EVENT HANDLERS --- elements.form.addPointBtn.addEventListener('click', addKeyPointInput); elements.preview.themeSelect.addEventListener('change', renderPreview); const downloadPDF = async () => { const slides = elements.preview.slideContainer.querySelectorAll('.slide-preview'); if (slides.length === 0) return; const { jsPDF } = window.jspdf; const pdf = new jsPDF({ orientation: 'landscape', unit: 'px', format: [1600, 900] // 16:9 aspect ratio }); for (let i = 0; i < slides.length; i++) { const canvas = await html2canvas(slides[i], { scale: 2 }); const imgData = canvas.toDataURL('image/png'); pdf.addImage(imgData, 'PNG', 0, 0, 1600, 900); if (i < slides.length - 1) { pdf.addPage(); } } pdf.save('presentation.pdf'); }; // --- INITIALIZATION --- const initialize = () => { elements.nav.next.addEventListener('click', () => { const i = tabs.indexOf(currentTab); if (i === 0) { // On content tab, generate before switching generateSlides(); } if (i < tabs.length - 1) switchTab(tabs[i + 1]); }); elements.nav.prev.addEventListener('click', () => { const i = tabs.indexOf(currentTab); if (i > 0) switchTab(tabs[i - 1]); }); Object.keys(elements.tabs).forEach(id => { if (id === 'dashboard') { elements.tabs[id].addEventListener('click', () => switchTab(id)) } else { elements.tabs[id].addEventListener('click', () => { generateSlides(); switchTab(id); }); } }); elements.preview.downloadBtn.addEventListener('click', downloadPDF); // Add one key point input by default addKeyPointInput(); updateNavButtons(); }; initialize(); });
Scroll to Top