import streamlit as st from reportlab.lib.pagesizes import letter from reportlab.pdfgen import canvas import io # Function to create PDF with user inputs def create_pdf(topic, session, name, roll_number, year): buffer = io.BytesIO() c = canvas.Canvas(buffer, pagesize=letter) # Customizable content c.drawString(100, 750, f"Topic: {topic}") c.drawString(100, 730, f"Session: {session}") c.drawString(100, 710, f"Name: {name}") c.drawString(100, 690, f"Roll Number: {roll_number}") c.drawString(100, 670, f"Year: {year}") # Finalize PDF c.save() buffer.seek(0) return buffer # Streamlit interface st.title("PDF Generator with Custom Variables") # User inputs for PDF customization topic = st.text_input("Enter Topic") session = st.text_input("Enter Session") name = st.text_input("Enter Name") roll_number = st.text_input("Enter Roll Number") year = st.text_input("Enter Year") # Button to generate PDF if st.button("Generate PDF"): if all([topic, session, name, roll_number, year]): pdf = create_pdf(topic, session, name, roll_number, year) st.download_button( label="Download PDF", data=pdf, file_name="custom_document.pdf", mime="application/pdf" ) else: st.error("Please fill all fields before generating the PDF")