Danial7 commited on
Commit
c706984
·
verified ·
1 Parent(s): 53bf7e9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -52
app.py CHANGED
@@ -10,6 +10,10 @@ from utils.suggestions import (
10
  get_job_listings,
11
  )
12
  from utils.visualizer import generate_timeline
 
 
 
 
13
  import base64
14
  import io
15
  import datetime
@@ -63,60 +67,8 @@ if uploaded_file is not None:
63
  fig = generate_timeline(cv_type, education_level, score)
64
  st.pyplot(fig)
65
 
66
- from PIL import Image
67
-
68
- def generate_pdf_report():
69
- pdf = FPDF()
70
- pdf.add_page()
71
- pdf.set_font("Arial", size=12)
72
 
73
- def write_line(text):
74
- pdf.multi_cell(0, 10, text)
75
 
76
- write_line(f"CV Analysis Report - {datetime.datetime.now().strftime('%Y-%m-%d %H:%M')}\n")
77
- write_line(f"CV Type: {cv_type}")
78
- write_line(f"Education Level: {education_level}")
79
- write_line(f"Overall CV Score: {score} / 100\n")
80
-
81
- write_line("Score Breakdown:")
82
- for k, v in score_breakdown.items():
83
- write_line(f"- {k}: {v}")
84
- write_line("")
85
-
86
- write_line("Certification Suggestions:")
87
- if isinstance(certs, list):
88
- for c in certs:
89
- write_line(f"- {c}")
90
- else:
91
- write_line(str(certs))
92
- write_line("")
93
-
94
- write_line("Higher Education Suggestions:")
95
- if isinstance(edu, list):
96
- for e in edu:
97
- write_line(f"- {e}")
98
- else:
99
- write_line(str(edu))
100
- write_line("")
101
-
102
- write_line("Visa Recommendations:")
103
- if isinstance(visa, list):
104
- for v in visa:
105
- write_line(f"- {v}")
106
- else:
107
- write_line(str(visa))
108
- write_line("")
109
-
110
- write_line("Career Advice:")
111
- write_line(str(advice))
112
- write_line("")
113
-
114
- write_line("Job Listings:")
115
- if isinstance(jobs, list):
116
- for job in jobs:
117
- write_line(f"- {job}")
118
- else:
119
- write_line(str(jobs))
120
 
121
  # --- Add Roadmap Chart Image ---
122
  pdf.add_page()
@@ -138,3 +90,48 @@ def generate_pdf_report():
138
  pdf.output(pdf_buffer)
139
  pdf_buffer.seek(0)
140
  return pdf_buffer
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  get_job_listings,
11
  )
12
  from utils.visualizer import generate_timeline
13
+ from PIL import Image
14
+ import matplotlib.pyplot as plt
15
+ from fpdf import FPDF
16
+ import tempfile
17
  import base64
18
  import io
19
  import datetime
 
67
  fig = generate_timeline(cv_type, education_level, score)
68
  st.pyplot(fig)
69
 
 
 
 
 
 
 
70
 
 
 
71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
 
73
  # --- Add Roadmap Chart Image ---
74
  pdf.add_page()
 
90
  pdf.output(pdf_buffer)
91
  pdf_buffer.seek(0)
92
  return pdf_buffer
93
+
94
+ def generate_pdf_report(cv_type, education_level, score, score_breakdown, certs, edu, visa, advice, jobs, fig):
95
+ pdf = FPDF()
96
+ pdf.add_page()
97
+ pdf.set_font("Arial", size=12)
98
+
99
+ pdf.cell(200, 10, txt="CV Analysis Report", ln=True, align="C")
100
+ pdf.ln(10)
101
+
102
+ pdf.cell(200, 10, txt=f"CV Type: {cv_type}", ln=True)
103
+ pdf.cell(200, 10, txt=f"Education Level: {education_level}", ln=True)
104
+ pdf.cell(200, 10, txt=f"CV Score: {score}/100", ln=True)
105
+ pdf.ln(5)
106
+
107
+ pdf.set_font("Arial", style="B", size=12)
108
+ pdf.cell(200, 10, txt="Score Breakdown:", ln=True)
109
+ pdf.set_font("Arial", size=12)
110
+ for k, v in score_breakdown.items():
111
+ pdf.cell(200, 10, txt=f"- {k}: {v}", ln=True)
112
+ pdf.ln(5)
113
+
114
+ def add_list_to_pdf(title, items):
115
+ pdf.set_font("Arial", style="B", size=12)
116
+ pdf.cell(200, 10, txt=title, ln=True)
117
+ pdf.set_font("Arial", size=12)
118
+ if isinstance(items, list):
119
+ for item in items:
120
+ pdf.multi_cell(0, 10, f"- {item}")
121
+ else:
122
+ pdf.multi_cell(0, 10, str(items))
123
+ pdf.ln(5)
124
+
125
+ add_list_to_pdf("Certification Suggestions:", certs)
126
+ add_list_to_pdf("Higher Education Suggestions:", edu)
127
+ add_list_to_pdf("Visa Recommendations:", visa)
128
+ add_list_to_pdf("Career Advice:", advice)
129
+ add_list_to_pdf("Job Listings:", jobs)
130
+
131
+ # Save the figure as an image and insert into PDF
132
+ with tempfile.NamedTemporaryFile(suffix=".png", delete=False) as tmpfile:
133
+ fig.savefig(tmpfile.name, bbox_inches='tight')
134
+ pdf.add_page()
135
+ pdf.image(tmpfile.name, x=10, y=20, w=pdf.w - 20)
136
+
137
+ return pdf