import win32print
import win32api
import tempfile
import os

def imprimir_tspl(contenido_zpl : str, nombre_impresora: str):
    try:
        printer_conector = win32print.OpenPrinter(nombre_impresora)

        win32print.StartDocPrinter(printer_conector, 1, ("Etiqueta TSPL", None, "RAW"))
        win32print.StartPagePrinter(printer_conector)
        
        win32print.WritePrinter(printer_conector, contenido_zpl.encode('utf-8'))
        
        win32print.EndPagePrinter(printer_conector)
        win32print.EndDocPrinter(printer_conector)
        win32print.ClosePrinter(printer_conector)
        
        print("Etiqueta enviada correctamente.")
        return True
    
    except Exception as e:
        print(f"Error al imprimir: {e}")
        return False

def imprimir_pdf(contenido_pdf_binario: bytes, nombre_impresora: str):
    try:
        with tempfile.NamedTemporaryFile(suffix='.pdf', delete=False) as temp_file:
            temp_file.write(contenido_pdf_binario)
            temp_pdf_path = temp_file.name

        win32api.ShellExecute(
            0,
            "print",
            temp_pdf_path,
            f'/d:"{nombre_impresora}"',
            ".",
            0
        )
        
        os.unlink(temp_pdf_path)
        
        print("PDF enviado correctamente a impresión.")
        return True
    
    except Exception as e:
        print(f"Error al imprimir PDF: {e}")
        return False