from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from PyPDF2 import PdfReader, PdfWriter
from datetime import datetime, timedelta
import os
import uuid
from reportlab.lib.pagesizes import A4

BASE_DIR = os.path.dirname(os.path.abspath(__file__))
FONT_DIR = os.path.join(BASE_DIR, "../assets/fonts")

def generate_trmw_pdf(data, template_path, output_path):
    from reportlab.lib.colors import HexColor
    TEMP_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../static/tmp")
    os.makedirs(TEMP_DIR, exist_ok=True)

    packet_path = os.path.join(TEMP_DIR, f"temp_overlay_{uuid.uuid4().hex}.pdf")

    c = canvas.Canvas(packet_path, pagesize=(842, 595))  
    try:
        template_reader = PdfReader(template_path)
        template_page = template_reader.pages[0]
        template_width = float(template_page.mediabox.width)
        template_height = float(template_page.mediabox.height)
        print(f"Template size: {template_width} x {template_height}")
        
        # Gunakan ukuran yang sama dengan template
        c = canvas.Canvas(packet_path, pagesize=(template_width, template_height))
    except Exception as e:
        print(f"Error reading template size: {e}")
        # Fallback ke A4
        c = canvas.Canvas(packet_path, pagesize=A4)

    # --- Register Figtree fonts (pastikan file font tersedia di FONT_DIR) ---
    #Helvetica-Neue-65-Medium
    FONT_HELVE_MEDIUM = os.path.join(FONT_DIR, "HelveticaNeueLT65Medium.ttf")
    #HelveticaNeue_LT55_Roman_Regular.ttf
    FONT_HELVE_REG = os.path.join(FONT_DIR, "HelveticaNeue_LT55_Roman_Regular.ttf")

    pdfmetrics.registerFont(TTFont("HelveMed", FONT_HELVE_MEDIUM))
    pdfmetrics.registerFont(TTFont("HelveReg", FONT_HELVE_REG))
    
    # --- Data ---
    nama = data["nama"]
    alamat1 = data["alamat1"]
    alamat2 = data["alamat2"]
    kel = data["kel"]
    kec = data["kec"]
    kodpos = data["kodpos"]
    kota_kab = data["kota_kab"]

    batas_kiri = 78
    batas_adr = 715
    jarak = 11
    

    c.setFont("HelveMed", 9)
    c.setFillColor(HexColor("#000000"))
    c.drawString(batas_kiri, batas_adr, nama)   

    c.setFont("HelveReg", 9)
    c.drawString(batas_kiri, batas_adr - jarak * 1, alamat1)   
    c.drawString(batas_kiri, batas_adr - jarak * 2, alamat2)   

    
    kel_kec = '' + kel + " " if kel else ""
    if kec:
        kel_kec += ', ' + kec
    
    c.drawString(batas_kiri, batas_adr - jarak * 3, kel_kec ) 
    c.drawString(batas_kiri, batas_adr - jarak * 4, kota_kab + " " + kodpos )
    
    c.save()

    background = PdfReader(template_path)
    overlay = PdfReader(packet_path)
    writer = PdfWriter()

    page = background.pages[0]
    page.merge_page(overlay.pages[0])
    writer.add_page(page)

    with open(output_path, "wb") as f:
        writer.write(f)

    # Bersihkan file sementara
    if os.path.exists(packet_path):
        os.remove(packet_path)
