57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
"""Generate tenant-dossier.pdf for neutralization demo. Run: python _generateTenantDossierPdf.py
|
|
|
|
Uses ReportLab so the PDF opens reliably in all viewers (stdlib-only PDFs are fragile).
|
|
"""
|
|
from pathlib import Path
|
|
|
|
from reportlab.lib.pagesizes import A4
|
|
from reportlab.pdfgen import canvas
|
|
|
|
|
|
def _main():
|
|
outPath = Path(__file__).resolve().parent / "tenant-dossier.pdf"
|
|
c = canvas.Canvas(str(outPath), pagesize=A4)
|
|
_, h = A4
|
|
margin = 72
|
|
y = h - margin
|
|
c.setFont("Helvetica-Bold", 13)
|
|
c.drawString(margin, y, "Tenant dossier (demo) - confidential")
|
|
y -= 22
|
|
c.setFont("Helvetica", 11)
|
|
lines = [
|
|
"Fictional demo data for neutralization testing.",
|
|
"",
|
|
"Tenant name: Hans Muster",
|
|
"Date of birth: 14.03.1982",
|
|
"Nationality: Swiss",
|
|
"",
|
|
"Residential address:",
|
|
"Bahnhofstrasse 1",
|
|
"8001 Zurich",
|
|
"Switzerland",
|
|
"",
|
|
"Email: hans.muster@example-mail.demo",
|
|
"Phone: +41 79 123 45 67",
|
|
"",
|
|
"Lease reference: LE-2024-88421",
|
|
"Monthly rent: CHF 2450.00",
|
|
"Deposit held: CHF 7350.00",
|
|
"",
|
|
"Employer: Demo Consulting AG, Limmatquai 78, 8001 Zurich",
|
|
"",
|
|
"Notes: Tenant requested balcony repair (ticket REQ-992).",
|
|
]
|
|
lineHeight = 14
|
|
for line in lines:
|
|
if y < margin and line:
|
|
c.showPage()
|
|
c.setFont("Helvetica", 11)
|
|
y = h - margin
|
|
c.drawString(margin, y, line)
|
|
y -= lineHeight
|
|
c.save()
|
|
print(f"Wrote {outPath}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
_main()
|