platform-core/demoData/neutralizer/_generateTenantDossierPdf.py
ValueOn AG ebc4b2a080
Some checks failed
Deploy Plattform-Core (Int) / test (push) Failing after 12s
Deploy Plattform-Core (Int) / deploy (push) Has been skipped
cp adapted to 2026 poweron 2
2026-06-09 09:58:05 +02:00

59 lines
1.6 KiB
Python

# Copyright (c) 2026 PowerOn AG
# All rights reserved.
"""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()