9:52 AM
pdfff
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
def generate_invoice_pdf(file_path, invoice_data):
pdf_canvas = canvas.Canvas(file_path, pagesize=letter)
# Set font and size
pdf_canvas.setFont("Helvetica", 12)
# Invoice header
pdf_canvas.drawString(50, 750, "IT Service Invoice")
pdf_canvas.drawString(50, 730, "Date: {}".format(invoice_data.get("date", "")))
pdf_canvas.drawString(50, 710, "Invoice Number: {}".format(invoice_data.get("invoice_number", "")))
# Invoice details
pdf_canvas.drawString(50, 680, "Client: {}".format(invoice_data.get("client", "")))
pdf_canvas.drawString(50, 660, "Service Description: {}".format(invoice_data.get("service_description", "")))
# Invoice items
items = invoice_data.get("items", [])
pdf_canvas.drawString(50, 640, "Items:")
y_position = 620
for item in items:
pdf_canvas.drawString(70, y_position, "- {}".format(item))
y_position -= 20
# Total
pdf_canvas.drawString(50, y_position, "Total: ${}".format(invoice_data.get("total", "")))
pdf_canvas.save()
# Example usage
invoice_data = {
"date": "2024-02-28",
"invoice_number": "INV-123",
"client": "Client Company",
"service_description": "IT Consultancy",
"items": ["Service 1", "Service 2", "Service 3"],
"total": 1000
}
generate_invoice_pdf("IT_Service_Invoice.pdf", invoice_data)
