ResumeLens / report_generator.py
simikkk's picture
Update report_generator.py
71dc843 verified
Raw
History Blame Contribute Delete
2.27 kB
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
from reportlab.lib import colors
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer
from reportlab.lib.styles import getSampleStyleSheet
def generate_pdf_report(analysis, is_pro=False):
filename = "report.pdf"
doc = SimpleDocTemplate(filename, pagesize=A4)
styles = getSampleStyleSheet()
elements = []
# Nadpis
elements.append(Paragraph(f"Resume Analysis Score: {analysis.get('match_score', 0)}/100", styles['Title']))
elements.append(Spacer(1, 12))
# NOVÉ: Kariérní doporučení
elements.append(Paragraph("Kariérní doporučení a vhodnost:", styles['Heading2']))
elements.append(Paragraph(analysis.get("career_recommendations", "Nebylo vygenerováno."), styles['Normal']))
elements.append(Spacer(1, 12))
# Chybějící klíčová slova
elements.append(Paragraph("Chybějící klíčová slova:", styles['Heading2']))
kw_data = [["Klíčové slovo", "Proč je důležité"]]
for kw in analysis.get("missing_keywords", []):
if isinstance(kw, dict):
kw_data.append([kw.get("keyword", ""), kw.get("why_it_matters", "")])
else:
kw_data.append([str(kw), ""])
table = Table(kw_data, colWidths=[150, 300])
table.setStyle(TableStyle([
('BACKGROUND', (0, 0), (-1, 0), colors.grey),
('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
('GRID', (0, 0), (-1, -1), 1, colors.black),
]))
elements.append(table)
elements.append(Spacer(1, 12))
# Tvoje akce
elements.append(Paragraph("Tvoje 3 nejdůležitější akce:", styles['Heading2']))
for action in analysis.get("top_3_actions", []):
text = action if isinstance(action, str) else str(action)
elements.append(Paragraph(f"- {text}", styles['Normal']))
elements.append(Spacer(1, 12))
# ATS Varování
elements.append(Paragraph("ATS Varování:", styles['Heading2']))
for warn in analysis.get("ats_warnings", []):
text = warn if isinstance(warn, str) else str(warn)
elements.append(Paragraph(f"- {text}", styles['Normal']))
# Sestavení PDF
doc.build(elements)
return filename