Spaces:
Build error
Build error
| from reportlab.lib.pagesizes import LETTER | |
| from reportlab.pdfgen import canvas | |
| from reportlab.lib.units import inch | |
| import io | |
| def render_report_pdf(text: str, title: str = "Equity Research Report") -> bytes: | |
| buf = io.BytesIO() | |
| c = canvas.Canvas(buf, pagesize=LETTER) | |
| width, height = LETTER | |
| # Title | |
| c.setFont("Helvetica-Bold", 16) | |
| c.drawString(1 * inch, height - 1 * inch, title) | |
| # Body | |
| c.setFont("Helvetica", 10) | |
| x = 1 * inch | |
| y = height - 1.25 * inch | |
| max_width = width - 2 * inch | |
| def draw_wrapped(text_line: str): | |
| from reportlab.lib.utils import simpleSplit | |
| wrapped = simpleSplit(text_line, "Helvetica", 10, max_width) | |
| nonlocal y | |
| for part in wrapped: | |
| if y < 1 * inch: | |
| c.showPage() | |
| c.setFont("Helvetica", 10) | |
| y = height - 1 * inch | |
| c.drawString(x, y, part) | |
| y -= 12 | |
| for line in text.splitlines(): | |
| draw_wrapped(line if line.strip() else " ") | |
| c.showPage() | |
| c.save() | |
| buf.seek(0) | |
| return buf.read() | |