File size: 2,855 Bytes
ea13b05
 
 
 
 
 
 
 
 
 
 
 
7f90c69
ea13b05
 
7f90c69
ea13b05
 
 
7f90c69
 
 
 
ea13b05
 
7f90c69
ea13b05
 
7f90c69
ea13b05
 
7f90c69
 
 
 
ea13b05
 
 
 
 
 
7f90c69
ea13b05
 
7f90c69
 
 
 
ea13b05
 
 
 
 
 
 
7f90c69
 
ea13b05
7f90c69
 
 
 
 
 
ea13b05
 
7f90c69
 
ea13b05
 
7f90c69
 
 
 
ea13b05
 
 
 
 
 
 
7f90c69
 
ea13b05
7f90c69
 
 
 
 
 
ea13b05
 
7f90c69
 
ea13b05
 
7f90c69
 
 
 
ea13b05
 
 
 
 
 
 
7f90c69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ea13b05
7f90c69
ea13b05
7f90c69
ea13b05
 
7f90c69
ea13b05
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
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