add print dummy

This commit is contained in:
sinergia 2023-07-22 08:22:34 -05:00
parent 539709c441
commit 91630d6383

59
api.py
View File

@ -1,6 +1,11 @@
from fastapi import FastAPI, Response from fastapi import FastAPI, Response
from escpos.printer import Dummy, Network
import sys
import json
from pydantic import BaseModel from pydantic import BaseModel
from time import sleep
app = FastAPI( app = FastAPI(
title="Print Server FastAPI", title="Print Server FastAPI",
description="Server that receive request for printing", description="Server that receive request for printing",
@ -9,29 +14,61 @@ app = FastAPI(
class Info(BaseModel): class Info(BaseModel):
content : str content : str
address : str
def write_to_file(file_path, content):
with open(file_path, "w") as file:
file.write(content)
@app.post("/print_ticket") def imprimir_ticket_de_prueba(data, address):
def print_ticket_file(info : Info): d = data
write_to_file('/tmp/ticket_prueba.txt', info.content) # Crea una instancia de la impresora ficticia
message = "!Impresión Realizada!" printer = Network(str(address))
printer = Dummy()
return Response(content=message, status_code=200) # Establece el tamaño de la fuente y otros formatos de impresión
printer.set(font='a', align='center', bold=True, height=2, width=2)
# Imprime el encabezado
printer.text('========================\n')
printer.set(align='center', bold=False, height=6, width=6)
text = 'MESA: ' + str(d['table'] + "\n\n")
printer.text(text)
printer.set(align='left', height=6, width=6)
for line in d["lines"]:
if line['type'] != 'title':
text = line['product'] +" "+str(line['quantity'])+"\n"
printer.text(text)
else:
printer.set(align='left', bold=True, height=8, width=8)
printer.text("\nPIZZA COMBINADA\n")
# Corta el papel (solo para impresoras que soportan esta función)
printer.cut()
# Obtiene el contenido del ticket de prueba
ticket_contenido = printer.output
# Imprime el contenido en la consola
sys.stdout.write(ticket_contenido.decode('utf-8'))
@app.post("/order_kitchen") @app.post("/order_kitchen")
def print_ticket_file_kitchen(info : Info): def print_ticket_file_kitchen(info : Info):
write_to_file('/tmp/ticket_kitchen.txt', info.content) print(info)
info = dict(info)
data = info["content"]
data = json.loads(data.replace("'", "\""))
imprimir_ticket_de_prueba(data)
message = "!Impresión Realizada!" message = "!Impresión Realizada!"
return Response(content=message, status_code=200) return Response(content=message, status_code=200)
@app.post("/order_bar") @app.post("/order_bar")
def print_ticket_file_bar(info : Info): def print_ticket_file_bar(info : Info):
write_to_file('/tmp/ticket_bar.txt', info.content) info = dict(info)
data = info["content"]
data = json.loads(data.replace("'", "\""))
imprimir_ticket_de_prueba(data)
message = "!Impresión Realizada!" message = "!Impresión Realizada!"
return Response(content=message, status_code=200) return Response(content=message, status_code=200)