Spaces:
Sleeping
Sleeping
| import os | |
| import tempfile | |
| from reportlab.lib.pagesizes import A4 | |
| from reportlab.pdfgen import canvas | |
| import gradio as gr | |
| def create_cv( | |
| full_name, | |
| email, | |
| phone, | |
| address, | |
| objective, | |
| education, | |
| experience, | |
| skills, | |
| ): | |
| temp_dir = tempfile.gettempdir() | |
| pdf_path = os.path.join(temp_dir, "CV.pdf") | |
| c = canvas.Canvas(pdf_path, pagesize=A4) | |
| width, height = A4 | |
| y = height - 50 | |
| c.setFont("Helvetica-Bold", 22) | |
| c.drawString(50, y, full_name) | |
| y -= 30 | |
| c.setFont("Helvetica", 11) | |
| c.drawString(50, y, f"Email: {email}") | |
| y -= 18 | |
| c.drawString(50, y, f"Phone: {phone}") | |
| y -= 18 | |
| c.drawString(50, y, f"Address: {address}") | |
| y -= 35 | |
| c.setFont("Helvetica-Bold", 15) | |
| c.drawString(50, y, "Career Objective") | |
| y -= 20 | |
| c.setFont("Helvetica", 11) | |
| for line in objective.split("\n"): | |
| c.drawString(60, y, line) | |
| y -= 15 | |
| y -= 10 | |
| c.setFont("Helvetica-Bold", 15) | |
| c.drawString(50, y, "Education") | |
| y -= 20 | |
| c.setFont("Helvetica", 11) | |
| for line in education.split("\n"): | |
| c.drawString(60, y, line) | |
| y -= 15 | |
| y -= 10 | |
| c.setFont("Helvetica-Bold", 15) | |
| c.drawString(50, y, "Experience") | |
| y -= 20 | |
| c.setFont("Helvetica", 11) | |
| for line in experience.split("\n"): | |
| c.drawString(60, y, line) | |
| y -= 15 | |
| y -= 10 | |
| c.setFont("Helvetica-Bold", 15) | |
| c.drawString(50, y, "Skills") | |
| y -= 20 | |
| c.setFont("Helvetica", 11) | |
| for line in skills.split(","): | |
| c.drawString(60, y, "• " + line.strip()) | |
| y -= 15 | |
| c.save() | |
| return pdf_path | |
| demo = gr.Interface( | |
| fn=create_cv, | |
| inputs=[ | |
| gr.Textbox(label="Full Name"), | |
| gr.Textbox(label="Email"), | |
| gr.Textbox(label="Phone"), | |
| gr.Textbox(label="Address"), | |
| gr.Textbox(lines=4, label="Career Objective"), | |
| gr.Textbox(lines=6, label="Education"), | |
| gr.Textbox(lines=6, label="Experience"), | |
| gr.Textbox(lines=4, label="Skills (Comma Separated)"), | |
| ], | |
| outputs=gr.File(label="Download CV"), | |
| title="Professional CV Builder", | |
| description="Fill the form and download your CV as PDF.", | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() |