summaryrefslogtreecommitdiffstats
path: root/printer.py
diff options
context:
space:
mode:
authorLeonardo Bishop <me@leonardobishop.com>2025-03-15 16:03:14 +0000
committerLeonardo Bishop <me@leonardobishop.com>2025-03-15 16:03:14 +0000
commit74f6d7aa403c397368ff29c24b97fafa03d0e20b (patch)
tree9811a6e3225d18cce491c1f2300dee981faf7fe5 /printer.py
Initial commit
Diffstat (limited to 'printer.py')
-rw-r--r--printer.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/printer.py b/printer.py
new file mode 100644
index 0000000..6bf69e9
--- /dev/null
+++ b/printer.py
@@ -0,0 +1,57 @@
+from PIL import Image
+from escpos.printer import Usb
+from typing import Optional, Union
+import logging
+
+logger = logging.getLogger(__name__)
+p = Usb(0x1fc9,0x2016,0,profile="TM-P80")
+
+def print_pass(name_image: Union[str, Image.Image], pronouns_image: Union[str, Image.Image], reference: str, ticket_type: str, slug: str):
+ logger.info(f"Printing pass for {ticket_type}")
+ p.linedisplay_clear()
+ p.image("birminghack-logo-raster-bw-rs.png",center=True)
+ p.ln()
+ p.ln()
+ p.image(name_image,center=True)
+ p.image(pronouns_image,center=True)
+ p.set(align="left",bold=False,custom_size=True,width=2,height=2)
+ p.ln()
+ p.qr(slug, size=10, center=True)
+ p.set(align="left",bold=True,normal_textsize=True)
+ p.software_columns(["Reference", reference], widths=48, align=["left", "right"])
+ p.software_columns(["Type", ticket_type], widths=48, align=["left", "right"])
+ p.set(align="left",bold=False,normal_textsize=True)
+ p.ln()
+ p.textln("By attending this event you agree to the")
+ p.textln("birmingHack Code of Conduct:")
+ p.set(align="right",bold=False,normal_textsize=True)
+ p.textln("birminghack.com/conduct")
+ p.set(align="left",bold=False,normal_textsize=True)
+ p.ln()
+ p.textln("Please wear your attendee pass at all times.")
+ p.cut()
+
+def print_food(issued_to: str, pizza_type: str, group: str, d_req: Optional[str] = None):
+ logger.info(f"Printing pizza token for {issued_to}")
+ p.linedisplay_clear()
+ p.ln()
+ p.set(align="center",bold=True,custom_size=True,width=3,height=3,smooth=True)
+ p.textln("Pizza Token")
+ p.ln()
+ p.set(align="left",bold=False,normal_textsize=True)
+ p.textln("Exchange me for pizza!")
+ p.image("pizza.png",center=True)
+ p.ln()
+ p.set(align="left",bold=True,normal_textsize=True)
+ p.software_columns(["Group", group], widths=48, align=["left", "right"])
+ p.software_columns(["Pizza Type", pizza_type], widths=48, align=["left", "right"])
+ p.software_columns(["Issued To", issued_to], widths=48, align=["left", "right"])
+ p.ln()
+ if d_req:
+ p.set(align="left",bold=False,custom_size=True,width=2,height=2,invert=True)
+ p.textln("Dietary Requirement")
+ p.ln()
+ p.set(align="left",bold=False,normal_textsize=True,invert=False)
+ p.textln(d_req)
+ p.cut()
+