AI-Readiness / pdf_generator.py
menikev's picture
Upload 15 files
34d246d verified
from reportlab.lib import colors
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import inch
from io import BytesIO
def generate_pdf_report(assessment):
buffer = BytesIO()
doc = SimpleDocTemplate(buffer, pagesize=letter)
styles = getSampleStyleSheet()
elements = []
# Title
elements.append(Paragraph("AI Readiness Assessment Report", styles['Title']))
elements.append(Spacer(1, 12))
# Summary
elements.append(Paragraph("Summary", styles['Heading1']))
elements.append(Paragraph(f"Total Score: {assessment.total_score}", styles['Normal']))
elements.append(Paragraph(f"Readiness Level: {assessment.readiness_level}", styles['Normal']))
elements.append(Spacer(1, 12))
# Scores Table
data = [
["Category", "Score"],
["Strategy", assessment.strategy_score],
["Governance", assessment.governance_score],
["Data & Infrastructure", assessment.data_infrastructure_score],
["Organization", assessment.organization_score]
]
table = Table(data)
table.setStyle(TableStyle([
('BACKGROUND', (0, 0), (-1, 0), colors.grey),
('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
('FONTSIZE', (0, 0), (-1, 0), 14),
('BOTTOMPADDING', (0, 0), (-1, 0), 12),
('BACKGROUND', (0, 1), (-1, -1), colors.beige),
('TEXTCOLOR', (0, 1), (-1, -1), colors.black),
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
('FONTNAME', (0, 1), (-1, -1), 'Helvetica'),
('FONTSIZE', (0, 1), (-1, -1), 12),
('TOPPADDING', (0, 1), (-1, -1), 6),
('BOTTOMPADDING', (0, 1), (-1, -1), 6),
('GRID', (0, 0), (-1, -1), 1, colors.black)
]))
elements.append(table)
elements.append(Spacer(1, 12))
# Recommendations
elements.append(Paragraph("Recommendations", styles['Heading1']))
if assessment.strategy_score < 15:
elements.append(Paragraph("• Focus on developing a comprehensive AI strategy aligned with business goals.", styles['Normal']))
if assessment.governance_score < 13:
elements.append(Paragraph("• Strengthen AI governance frameworks and ethical guidelines.", styles['Normal']))
if assessment.data_infrastructure_score < 16:
elements.append(Paragraph("• Invest in improving data quality and infrastructure to support AI initiatives.", styles['Normal']))
if assessment.organization_score < 13:
elements.append(Paragraph("• Enhance AI skills and promote a culture of innovation within the organization.", styles['Normal']))
doc.build(elements)
buffer.seek(0)
return buffer