79563143

Date: 2025-04-08 22:17:05
Score: 1
Natty:
Report link

Update: I used chatGPT to help me figure this out. For future people's reference, here's some sample code to help accomplish this:

import streamlit as st
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer
from reportlab.lib.pagesizes import letter
from reportlab.lib.styles import getSampleStyleSheet
import io

def create_pdf_buffer(elements):
    """Takes a list of ReportLab Flowable elements and returns a PDF buffer."""
    buffer = io.BytesIO()
    doc = SimpleDocTemplate(buffer, pagesize=letter)
    doc.build(elements)
    buffer.seek(0)
    return buffer

# Streamlit app
st.title("PDF Generator with ReportLab and Streamlit")

# User input
user_list = st.text_area("Enter list items (one per line):").splitlines()

# Only proceed if there's input
if user_list:
    styles = getSampleStyleSheet()
    elements = []

    # Build elements list outside of PDF function
    elements.append(Paragraph("Sample PDF Report", styles['Title']))
    elements.append(Spacer(1, 12))

    for item in user_list:
        elements.append(Paragraph(f"- {item}", styles['Normal']))
        elements.append(Spacer(1, 6))

    # Generate PDF buffer
    pdf_buffer = create_pdf_buffer(elements)

    # Download button
    st.download_button(
        label="Download PDF",
        data=pdf_buffer,
        file_name="report.pdf",
        mime="application/pdf"
    )
Reasons:
  • Blacklisted phrase (1): help me
  • Long answer (-1):
  • Has code block (-0.5):
  • Self-answer (0.5):
  • Low reputation (1):
Posted by: rhettley02