Untitled

 avatar
unknown
plain_text
a month ago
2.0 kB
4
Indexable
from fpdf import FPDF

# Create a PDF class instance
pdf = FPDF()
pdf.set_auto_page_break(auto=True, margin=15)
pdf.add_page()
pdf.set_font("Arial", size=12)

# Title
pdf.set_font("Arial", style="B", size=16)
pdf.cell(200, 10, "Student Invoice", ln=True, align="C")
pdf.ln(10)

# University details (Placeholder)
pdf.set_font("Arial", size=12)
pdf.cell(200, 10, "University Name", ln=True, align="L")
pdf.cell(200, 10, "University Address", ln=True, align="L")
pdf.cell(200, 10, "Contact: +60-XXXXXXXX", ln=True, align="L")
pdf.ln(10)

# Student details (Placeholder)
pdf.cell(200, 10, "Student Name: [Placeholder Name]", ln=True, align="L")
pdf.cell(200, 10, "Student ID: [Placeholder ID]", ln=True, align="L")
pdf.cell(200, 10, "Academic Year: 2024/25", ln=True, align="L")
pdf.cell(200, 10, "Semester: Year 3, Semester 2", ln=True, align="L")
pdf.ln(10)

# Table headers
pdf.set_font("Arial", style="B", size=12)
pdf.cell(120, 10, "Description", border=1, align="C")
pdf.cell(50, 10, "Amount (RM)", border=1, align="C")
pdf.ln()

# Table content
pdf.set_font("Arial", size=12)
fees = [
    ("Corporate Governance", 1036.00),
    ("Managing Risk", 1036.00),
    ("Financial Decision Making", 1036.00),
    ("Elective Course", 777.00),
    ("Elective Course", 777.00),
    ("Award Assessment", 90.00),
    ("Facilities", 200.00)
]

# Insert rows into table
for item, amount in fees:
    pdf.cell(120, 10, item, border=1)
    pdf.cell(50, 10, f"{amount:.2f}", border=1, align="R")
    pdf.ln()

# Total amount
total_amount = sum(amount for _, amount in fees)
pdf.set_font("Arial", style="B", size=12)
pdf.cell(120, 10, "Total Amount Payable", border=1)
pdf.cell(50, 10, f"{total_amount:.2f}", border=1, align="R")
pdf.ln(10)

# Payment due date
pdf.set_font("Arial", size=12)
pdf.cell(200, 10, "Please pay this amount by 17-03-2025", ln=True, align="L")

# Save the PDF
pdf_file_path = "/mnt/data/Student_Invoice.pdf"
pdf.output(pdf_file_path)

# Return file path
pdf_file_path
Editor is loading...
Leave a Comment