| | from typing import List |
| | from reportlab.lib.pagesizes import letter |
| | from reportlab.pdfgen import canvas |
| |
|
| |
|
| | def write_pdf_report(pdf_path: str, title: str, lines: List[str]) -> str: |
| | """ |
| | Simple, robust PDF export for stakeholders. |
| | We render plain text lines (already human-friendly via report.md). |
| | """ |
| | c = canvas.Canvas(pdf_path, pagesize=letter) |
| | w, h = letter |
| | x = 50 |
| | y = h - 60 |
| |
|
| | c.setFont("Helvetica-Bold", 16) |
| | c.drawString(x, y, title[:90]) |
| | y -= 30 |
| |
|
| | c.setFont("Helvetica", 11) |
| | for line in lines: |
| | |
| | if y < 60: |
| | c.showPage() |
| | y = h - 60 |
| | c.setFont("Helvetica", 11) |
| |
|
| | |
| | s = line.replace("\t", " ") |
| | |
| | c.drawString(x, y, s[:120]) |
| | y -= 14 |
| |
|
| | c.save() |
| | return pdf_path |