Resume_builder / utils.py
Shami96's picture
Update utils.py
c8f7500 verified
import PyPDF2
import docx
import os
from sentence_transformers import SentenceTransformer
from fpdf import FPDF
from io import StringIO
# Function to extract text from different file types
def extract_text(uploaded_file, file_type):
if file_type == "pdf":
return extract_text_pdf(uploaded_file)
elif file_type == "docx":
return extract_text_docx(uploaded_file)
elif file_type == "txt":
return extract_text_txt(uploaded_file)
elif file_type == "html":
return extract_text_html(uploaded_file)
# Extract text from PDF file
def extract_text_pdf(uploaded_file):
reader = PyPDF2.PdfReader(uploaded_file)
text = ""
for page in reader.pages:
text += page.extract_text() or ""
return text
# Extract text from DOCX file
def extract_text_docx(uploaded_file):
doc = docx.Document(uploaded_file)
text = ''
for para in doc.paragraphs:
text += para.text + '\n'
return text
# Extract text from TXT file
def extract_text_txt(uploaded_file):
text = uploaded_file.read().decode("utf-8")
return text
# Extract text from HTML file
def extract_text_html(uploaded_file):
from bs4 import BeautifulSoup
soup = BeautifulSoup(uploaded_file, 'html.parser')
text = soup.get_text()
return text
# Function to render different resume templates
def render_template(tailored_resume, template="template1"):
if template == "template1":
return render_template1(tailored_resume)
elif template == "template2":
return render_template2(tailored_resume)
elif template == "template3":
return render_template3(tailored_resume)
return tailored_resume
# Template 1 rendering
def render_template1(tailored_resume):
# Here, you can define a simple formatting style for template 1
return f"--- Template 1 ---\n\n{tailored_resume}\n--- End of Template 1 ---"
# Template 2 rendering
def render_template2(tailored_resume):
# Here, you can define a simple formatting style for template 2
return f"=== Template 2 ===\n\n{tailored_resume}\n=== End of Template 2 ==="
# Template 3 rendering
def render_template3(tailored_resume):
# Here, you can define a simple formatting style for template 3
return f"### Template 3 ###\n\n{tailored_resume}\n### End of Template 3 ###"