Spaces:
Sleeping
Sleeping
Download pdf_generator.py from prasad799596/SmartROI-Generator: direct link, hf CLI and curl.
- Browser
- Download file 2.86 kB
-
https://huggingface.co/spaces/prasad799596/SmartROI-Generator/resolve/main/pdf_generator.py
- Command line
-
hf download hf://spaces/prasad799596/SmartROI-Generator/pdf_generator.py
-
curl -L -o pdf_generator.py https://huggingface.co/spaces/prasad799596/SmartROI-Generator/resolve/main/pdf_generator.py
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 |