from PIL import Image, ImageDraw, ImageFont

W, H = 1240, 1754  # A4 @ 150dpi
SAFE = 90          # safe zone left/right/top
SAFE_BOTTOM = 59   # 1 cm @ 150dpi (bottom safe zone)

BG = (255, 255, 255)
BLUE = (30, 64, 175)
DARK = (15, 23, 42)
BODY = (71, 85, 105)
GRAY = (100, 116, 139)
LIGHT = (241, 245, 249)
LINE = (203, 213, 225)

X0, X1 = SAFE, W - SAFE   # content horizontal bounds

def font(name, size):
    return ImageFont.truetype(f"fonts/{name}.ttf", size)

img = Image.new("RGB", (W, H), BG)
d = ImageDraw.Draw(img)

# ---- Header band (within canvas, full width ok) ----
d.rectangle([0, 0, W, 250], fill=BLUE)

# Logo StudioSoft (left), recolored white for contrast
logo = Image.open("assets_studiosoft_logo.png").convert("RGBA")
lpix = logo.load()
for x in range(logo.width):
    for y in range(logo.height):
        r, g, b, a = lpix[x, y]
        if a > 0:
            lpix[x, y] = (255, 255, 255, a)
logo_w = 200
logo_h = int(logo.height * logo_w / logo.width)
logo = logo.resize((logo_w, logo_h), Image.LANCZOS)
img.paste(logo, (X0, 75), logo)

# Invoice title + meta (right)
d.text((X1, 60), "INVOICE", font=font("Poppins-Bold", 56), fill=(255, 255, 255), anchor="ra")
d.text((X1, 138), "No. INV/2026/0001", font=font("Poppins-Regular", 25), fill=(219, 234, 254), anchor="ra")
d.text((X1, 182), "Surabaya, 3 Agustus 2026", font=font("Poppins-Regular", 21), fill=(219, 234, 254), anchor="ra")

# ---- From / Bill To (two columns, within safe zone) ----
y = 320
col2x = X0 + 520
d.text((X0, y), "DARI", font=font("Poppins-Bold", 20), fill=GRAY)
d.text((X0, y + 34), "StudioSoft", font=font("Poppins-Bold", 32), fill=DARK)
for i, t in enumerate(["Jl. Contoh Raya No. 88, Surabaya",
                       "Email: halo@studiosoft.id",
                       "WA: 0819-3500-0624"]):
    d.text((X0, y + 88 + i * 33), t, font=font("Poppins-Regular", 22), fill=BODY)

d.text((col2x, y), "KEPADA", font=font("Poppins-Bold", 20), fill=GRAY)
d.text((col2x, y + 34), "Nama Klien / Perusahaan", font=font("Poppins-Bold", 32), fill=DARK)
for i, t in enumerate(["Alamat Klien", "Kota, Provinsi", "Telepon Klien"]):
    d.text((col2x, y + 88 + i * 33), t, font=font("Poppins-Regular", 22), fill=BODY)

# ---- Table (NO | DESKRIPSI only) ----
ty = 680
d.rectangle([X0, ty, X1, ty + 60], fill=LIGHT)
d.text((X0 + 20, ty + 16), "NO", font=font("Poppins-Bold", 24), fill=DARK)
d.text((X0 + 130, ty + 16), "DESKRIPSI", font=font("Poppins-Bold", 24), fill=DARK)

items_desc = [
    "Jasa Pembuatan Website Company Profile",
    "Desain Logo & Identitas Visual",
    "Optimasi SEO On-Page",
    "Maintenance Bulanan",
]
ry = ty + 60
for i, desc in enumerate(items_desc, 1):
    d.line([X0, ry, X1, ry], fill=LINE)
    d.text((X0 + 20, ry + 20), str(i), font=font("Poppins-Regular", 22), fill=BODY)
    d.text((X0 + 130, ry + 20), desc, font=font("Poppins-Regular", 22), fill=DARK)
    ry += 62
d.line([X0, ry, X1, ry], fill=LINE)

# ---- Total (right aligned, above safe bottom) ----
ty2 = ry + 50
d.rectangle([X1 - 520, ty2, X1, ty2 + 86], fill=LIGHT)
d.text((X1 - 500, ty2 + 25), "TOTAL", font=font("Poppins-Bold", 26), fill=DARK)
d.text((X1 - 28, ty2 + 23), "Rp 9.000.000", font=font("Poppins-Bold", 26), fill=BLUE, anchor="ra")

# ---- Payment info (left) ----
fy = H - SAFE_BOTTOM - 320
d.text((X0, fy), "PEMBAYARAN", font=font("Poppins-Bold", 20), fill=GRAY)
d.text((X0, fy + 36), "Transfer ke (a.n. Uky Yanuhandoko):", font=font("Poppins-SemiBold", 22), fill=DARK)
bank_lines = [
    "1. BCA 6750379638   (Rungkut Mapan, Surabaya)",
    "2. Mandiri 142-00-1068384-4   (Bratang Binangun, Surabaya)",
]
for i, t in enumerate(bank_lines):
    d.text((X0, fy + 78 + i * 34), t, font=font("Poppins-Regular", 21), fill=BODY)

# ---- Signature (right) ----
d.text((X1 - 320, fy), "Hormat kami,", font=font("Poppins-Regular", 22), fill=BODY)
d.line([X1 - 320, fy + 180, X1 - 40, fy + 180], fill=LINE)
d.text((X1 - 320, fy + 195), "StudioSoft", font=font("Poppins-Bold", 26), fill=DARK)

img.save("contoh_invoice_studiosoft_v5.png")
print("OK v3")
