# Fails: invoices/utils.py
import os
from io import BytesIO
from django.conf import settings
from django.template.loader import get_template
from xhtml2pdf import pisa

def render_to_pdf(template_src, context_dict={}):
    """
    Pārvērš HTML veidni PDF failā.
    template_src: ceļš līdz .html failam
    context_dict: dati, ko ierakstīt rēķinā
    """
    # Izveidojam lokālu kopiju, lai nemainītu oriģinālo vārdnīcu
    context = dict(context_dict)
    
    # Atrodam DejaVuSans.ttf ceļu uz diska (invoices/DejaVuSans.ttf)
    current_dir = os.path.dirname(os.path.abspath(__file__))
    font_path = os.path.join(current_dir, "DejaVuSans.ttf")
    
    # Ja fails eksistē, padodam tā ceļu veidnei
    context["font_path"] = font_path

    template = get_template(template_src)
    html  = template.render(context)
    result = BytesIO()
    
    # encoding="UTF-8" ir kritiski svarīgs, lai rādītu latviešu burtus (ā, š, ķ u.c.)
    pdf = pisa.pisaDocument(BytesIO(html.encode("UTF-8")), result, encoding="UTF-8")
    
    if not pdf.err:
        return result.getvalue()
    return None