Personalized Retro Sci-Fi Comic Generator

Create text prompts for classic sci-fi comic book scenes! ZAP! POW!

${generatedSceneData.panelDesc}

${generatedSceneData.keywordNote ? `

${generatedSceneData.keywordNote}

` : ''}

CAPTION:

${generatedSceneData.caption}

DIALOGUE:

${generatedSceneData.dialogue[0].char}: "${generatedSceneData.dialogue[0].line}"

${generatedSceneData.dialogue[1].char}: "${generatedSceneData.dialogue[1].line}"

SFX:

${generatedSceneData.sfx || "None"}

`; resultsDiv.style.display = 'block'; pdfBtn.disabled = false; } // --- PDF Download Function --- function downloadPDF() { if (!generatedSceneData || !generatedSceneData.panelDesc) { alert("Please generate a scene first."); return; } // Ensure jsPDF is loaded if (typeof jspdf === 'undefined' || typeof jspdf.jsPDF === 'undefined') { console.error("jsPDF library or jsPDF constructor is not loaded correctly."); alert("Error: PDF generation library failed to load. Please check internet connection or Elementor setup."); return; } const { jsPDF } = jspdf; const doc = new jsPDF(); // --- PDF Styling --- const primaryColor = '#ffb300'; // Yellow const secondaryColor = '#00acc1'; // Teal const accentColor = '#f44336'; // Red const textColor = '#33334d'; // Dark Indigo Text const pageMargin = 15; const lineSpacing = 6; // Tighter for script let currentY = pageMargin; const pageHeight = doc.internal.pageSize.height; const pageWidth = doc.internal.pageSize.width; const indent = pageMargin + 10; const dialogueIndent = indent + 25; const charIndent = indent; // Align char name with general indent // Helper to add text with page breaks function addTextToPDF(text, size, color, style = 'normal', xPos = pageMargin) { // Use Courier for script feel in PDF try { doc.setFont("courier", style); } catch(e) { doc.setFont("helvetica", style); } // Fallback doc.setFontSize(size); doc.setTextColor(color); const splitText = doc.splitTextToSize(text, pageWidth - xPos - pageMargin); splitText.forEach(line => { if (currentY + lineSpacing > pageHeight - pageMargin) { doc.addPage(); currentY = pageMargin; // Reset font on new page try { doc.setFont("courier", style); } catch(e) { doc.setFont("helvetica", style); } doc.setFontSize(size); doc.setTextColor(color); } doc.text(line, xPos, currentY); currentY += lineSpacing; }); } function addHeadingPDF(text) { // Use UI font (Helvetica fallback) for headings in PDF for clarity try { doc.setFont("helvetica", "bold"); } catch(e) { /* ignore */ } addTextToPDF(text.toUpperCase() + ":", 11, secondaryColor, 'bold', pageMargin); currentY += lineSpacing * 0.1; } function addParagraphPDF(text, xPos = indent) { addTextToPDF(text, 10, textColor, 'normal', xPos); currentY += lineSpacing * 0.3; } // --- PDF Content --- try { doc.setFont("helvetica", "bold"); } catch(e) { /* ignore */ } addTextToPDF("Retro Sci-Fi Comic Scene Prompt", 16, primaryColor, 'bold'); currentY += lineSpacing * 1.5; addHeadingPDF("Panel Description"); addParagraphPDF(generatedSceneData.panelDesc); if (generatedSceneData.keywordNote) { addTextToPDF(generatedSceneData.keywordNote, 9, secondaryColor, 'italic', indent); currentY += lineSpacing * 0.2; } addHeadingPDF("Caption"); addTextToPDF(generatedSceneData.caption, 10, textColor, 'italic', indent); currentY += lineSpacing * 0.7; addHeadingPDF("Dialogue"); addTextToPDF(generatedSceneData.dialogue[0].char + ":", 10, textColor, 'bold', charIndent); addParagraphPDF(`"${generatedSceneData.dialogue[0].line}"`, dialogueIndent); addTextToPDF(generatedSceneData.dialogue[1].char + ":", 10, textColor, 'bold', charIndent); addParagraphPDF(`"${generatedSceneData.dialogue[1].line}"`, dialogueIndent); addHeadingPDF("SFX"); addTextToPDF(generatedSceneData.sfx || "None", 10, accentColor, 'bold', indent); // --- Save PDF --- doc.save('retro_comic_scene_prompt.pdf'); } // --- Event Listeners --- if (generateBtn) { generateBtn.addEventListener('click', generateScene); } else { console.error("Generate button not found! Check ID: comic-generate-btn-a9b4f"); } if (pdfBtn) { pdfBtn.addEventListener('click', downloadPDF); } else { console.error("PDF button not found! Check ID: comic-pdf-btn-a9b4f"); } })(); // Immediately invoke the function
Scroll to Top