| 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 |