Cv-builder / app.py
jehanzada's picture
Create app.py
3badfc2 verified
Raw
History Blame Contribute Delete
2.26 kB
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()