add print dummy

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

57
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: def imprimir_ticket_de_prueba(data, address):
file.write(content) d = data
# Crea una instancia de la impresora ficticia
printer = Network(str(address))
printer = Dummy()
# 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)
@app.post("/print_ticket") # Imprime el encabezado
def print_ticket_file(info : Info): printer.text('========================\n')
write_to_file('/tmp/ticket_prueba.txt', info.content) printer.set(align='center', bold=False, height=6, width=6)
message = "!Impresión Realizada!" 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")
return Response(content=message, status_code=200) # 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)