SmartROI-Generator / pdf_generator.py
prasad799596's picture
Update pdf_generator.py
7f90c69 verified
Raw History Blame Contribute Delete
2.86 kB
from reportlab.lib.pagesizes import letter
from reportlab.platypus import (
SimpleDocTemplate,
Paragraph,
Spacer,
)
from reportlab.lib.styles import getSampleStyleSheet
from io import BytesIO
def generate_pdf(user_data, roi_data, synopsis):
# Create PDF buffer
buffer = BytesIO()
# Create document
doc = SimpleDocTemplate(
buffer,
pagesize=letter,
rightMargin=40,
leftMargin=40,
topMargin=40,
bottomMargin=40,
)
# Load styles
styles = getSampleStyleSheet()
# Store PDF elements
elements = []
# =========================
# Title
# =========================
title = Paragraph(
"<b>AI ROI Savings Report</b>",
styles['Title']
)
elements.append(title)
elements.append(Spacer(1, 20))
# =========================
# User Details Section
# =========================
user_heading = Paragraph(
"<b>User Details</b>",
styles['Heading2']
)
elements.append(user_heading)
elements.append(Spacer(1, 10))
for key, value in user_data.items():
text = Paragraph(
f"<b>{key}:</b> {value}",
styles['BodyText']
)
elements.append(text)
elements.append(Spacer(1, 5))
elements.append(Spacer(1, 20))
# =========================
# ROI Results Section
# =========================
roi_heading = Paragraph(
"<b>ROI Calculation Results</b>",
styles['Heading2']
)
elements.append(roi_heading)
elements.append(Spacer(1, 10))
for key, value in roi_data.items():
text = Paragraph(
f"<b>{key}:</b> INR {value}",
styles['BodyText']
)
elements.append(text)
elements.append(Spacer(1, 5))
elements.append(Spacer(1, 20))
# =========================
# Synopsis Section
# =========================
synopsis_heading = Paragraph(
"<b>Project Synopsis</b>",
styles['Heading2']
)
elements.append(synopsis_heading)
elements.append(Spacer(1, 12))
# Split synopsis into paragraphs
paragraphs = synopsis.split("\n")
for para in paragraphs:
para = para.strip()
if para:
synopsis_para = Paragraph(
para,
styles['BodyText']
)
elements.append(synopsis_para)
elements.append(Spacer(1, 8))
# =========================
# Footer
# =========================
elements.append(Spacer(1, 20))
footer = Paragraph(
"<i>Generated using AI ROI Calculator</i>",
styles['Italic']
)
elements.append(footer)
# Build PDF
doc.build(elements)
# Get PDF data
pdf = buffer.getvalue()
buffer.close()
return pdf