from reportlab.lib.pagesizes import A4 from reportlab.pdfgen import canvas from reportlab.lib.units import mm def generate_pdf(path, title, soap, summary): c=canvas.Canvas(path,pagesize=A4) W,H=A4; x=20*mm; y=H-25*mm def p(label,txt): nonlocal y c.setFont("Helvetica-Bold",12); c.drawString(x,y,label); y-=6*mm c.setFont("Helvetica",10) for line in txt.split("\n"): c.drawString(x,y,line); y-=5*mm y-=3*mm p("Title",title) p("Subjective",soap.get("subjective","")) p("Objective",soap.get("objective","")) p("Assessment","\n".join(soap.get("assessment",[]))) p("Plan","\n".join(soap.get("plan",[]))) p("Red Flags","\n".join(soap.get("red_flags",[]))) p("Summary",summary or "") c.showPage(); c.save()