Bedienen Sie den Belegdrucker mit Python

In Verbindung stehender Artikel

In Schwierigkeiten sein

Zunächst die Problemdefinition! Ich habe viele Male versucht, das Task-Management-Tool zu verwenden, und es ist wiederholt fehlgeschlagen. Ich denke jedoch, dass es schwierig ist, jede Task auf dem Smartphone zu öffnen, und dass sie physisch unsichtbar ist. Ich habe diese erstellt, weil ich dachte, es wäre gut, sie mit einem Drucker zu drucken.

Funktion

Was zu verwenden

Design

1. Einstellungen und Codierung 1

Untersuchen Sie zunächst die Druckereinstellungen und welche Zeichen vom Belegdrucker gedruckt werden können.

Installieren Sie die von Python verwendete Bibliothek

pip install python-escpos
pip install Pillow

Ich habe eine kostenlose Schriftart als Schriftart verwendet.

Kostenlose Schriftart-Website

Drucken mit einem Drucker

from escpos.printer import Usb
from escpos import *

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

#Drucken mit einem Belegdrucker

width = 500
height = 250

image = Image.new('1', (width, height), 255)
draw = ImageDraw.Draw(image)
font = ImageFont.truetype('FLOPDesignFont.ttf', 50, encoding='unic')
draw.text((0, 0), "japanisch" + " ", font=font, fill=0)
font = ImageFont.truetype('FLOPDesignFont.ttf', 28, encoding='unic')
draw.text((0, 82), "abcdefghijklmnopqrstuvwxyz", font=font, fill=0)
draw.text((0, 112), "ABCDEFGHIJKLMNOPQRSTUVWXYZ", font=font, fill=0)
draw.text((0, 142), "1234567890" + " ", font=font, fill=0)
draw.text((0, 172), "!\"#$%&'()=~|+*<>?_{}" + " ", font=font, fill=0)

p = Usb(0x0416, 0x5011, 0, 0x81, 0x03)
p.text("Hello World\n")
p.image(image)
p.cut()

Eine gedruckte Version davon ist unten gezeigt.

IMG_20200620_103642.jpg

USB-Einstellungen

Wenn Sie mit einem Belegdrucker drucken möchten, müssen Sie dies einstellen. Ich werde es bestätigen.

p = Usb(0x0416, 0x5011, 0, 0x81, 0x03)

Lassen Sie uns zuerst lsusb ausführen

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 8087:07dc Intel Corp. 
Bus 001 Device 005: ID 0bda:579a Realtek Semiconductor Corp. 
Bus 001 Device 004: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 001 Device 003: ID 0bda:b812 Realtek Semiconductor Corp. 
Bus 001 Device 008: ID 0416:5011 Winbond Electronics Corp. Virtual Com Port
Bus 001 Device 002: ID 062a:4102 Creative Labs 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Die folgenden sind mit dem Belegdrucker verbunden. Bus 001 Gerät 008: ID 0416: 5011 Virtueller Com-Port von Winbond Electronic's Corp. Dieser 0416: 5011 Teil ist das erste und zweite USB-Argument.

Sie können drucken, indem Sie sudo hinzufügen und Python mit Root-Rechten ausführen. Fügen Sie zu diesem Zeitpunkt eine Regel zu udev hinzu, damit allgemeine Benutzer auf dieses Gerät zugreifen und die udev-Regel laden können.

udev Einfach ausgedrückt, dieser USB verwaltet etwas, selbst wenn Sie ein USB-Gerät ein- oder ausstecken. (Bitte überprüfen Sie den Link, um genau zu sein.)

udev Einstellungen Erstellen Sie eine Datei /etc/udev/rules.d/10-printer.rules und schreiben Sie Folgendes: Wenn sich die Geräte-ID: 0416: 5011 im vorherigen lsusb unterscheidet, stimmen Sie bitte auch damit überein.

SUBSYSTEM=="usb", ATTR{idVendor}=="0416", ATTR{idProduct}=="5011", MODE="0666", GROUP="plugdev"

2. Einstellungen und Codierung 2

Fügen Sie das angegebene Bild als Logo hinzu und drucken Sie es aus Fügen Sie den zuvor erstellten Daten das folgende Bild hinzu und drucken Sie es aus.

qiita-logo.png

from escpos.printer import Usb
from escpos import *

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

#Drucken mit einem Belegdrucker

width = 500
height = 400

image = Image.new('1', (width, height), 255)
draw = ImageDraw.Draw(image)
font = ImageFont.truetype('FLOPDesignFont.ttf', 50, encoding='unic')
draw.text((0, 100), "japanisch" + " ", font=font, fill=0)
font = ImageFont.truetype('storage/font/FLOPDesignFont.ttf', 28, encoding='unic')
draw.text((0, 182), "abcdefghijklmnopqrstuvwxyz", font=font, fill=0)
draw.text((0, 212), "ABCDEFGHIJKLMNOPQRSTUVWXYZ", font=font, fill=0)
draw.text((0, 242), "1234567890" + " ", font=font, fill=0)
draw.text((0, 272), "!\"#$%&'()=~|+*<>?_{}" + " ", font=font, fill=0)

logo = Image.open('qiita-logo.png')

image.paste(logo, (150, 10))

# image.show()
p = Usb(0x0416, 0x5011, 0, 0x81, 0x03)
p.text(" \n")
p.image(image)
p.cut()

IMG_20200620_114940.jpg

Zusammenfassung

Sie können jetzt Text und einfache Bilder auf Ihrem Belegdrucker drucken. Übrigens habe ich mich diesmal für den Belegdrucker entschieden, einfach weil der Preis günstig ist. Der Belegdrucker kostet 4500 Yen und 5 Registrierkassenpapiere kosten etwa 900 Yen!

Recommended Posts

Bedienen Sie den Belegdrucker mit Python
Notizen mit einem Belegdrucker drucken (Serialisierung)
Kinesis mit Python betreiben
Betreiben Sie Blender mit Python
Betreiben Sie Excel mit Python (1)
Betreiben Sie Excel mit Python (2)
Betreiben Sie Excel mit Python Open Pyxl
Betreiben Sie TwitterBot mit Lambda, Python
[Hinweis] Betreiben Sie MongoDB mit Python
Verwenden eines Druckers mit Debian 10
Machen Sie eine Lotterie mit Python
[Python] [SQLite3] Betreiben Sie SQLite mit Python (Basic)
Erstellen Sie ein Verzeichnis mit Python
[Python] Was ist eine with-Anweisung?
Löse ABC163 A ~ C mit Python
Python-Grafikhandbuch mit Matplotlib.
Lassen Sie uns eine GUI mit Python erstellen.
Versuchen Sie, Facebook mit Python zu betreiben
Löse ABC166 A ~ D mit Python
Erstellen Sie eine virtuelle Umgebung mit Python!
Ich habe mit Python eine Lotterie gemacht.
Erstellen einer virtuellen Umgebung mit Python 3
Löse ABC168 A ~ C mit Python
Erstellen Sie ein Empfehlungssystem mit Python
Betreiben Sie ECHONET Lite-Haushaltsgeräte mit Python
[Python] Generiere ein Passwort mit Slackbot
Löse ABC162 A ~ C mit Python
Löse ABC167 A ~ C mit Python
Löse ABC158 A ~ C mit Python
Lassen Sie uns ein Diagramm mit Python erstellen! !!
[Python] Erbt eine Klasse mit Klassenvariablen
Ich habe mit Python einen Daemon erstellt
Schreiben Sie ein Batch-Skript mit Python3.5 ~
[Python] Ein Memo zum Betreiben eines mit GBDK mit PyBoy erstellten ROM
[Pyenv] Erstellen einer Python-Umgebung mit Ubuntu 16.04
Spiralbuch in Python! Python mit einem Spiralbuch! (Kapitel 14 ~)
Erstellen Sie mit Class einen Python-Funktionsdekorator
Erstellen einer einfachen Power-Datei mit Python
Lassen Sie uns mit Python ein Shiritori-Spiel machen
Installieren Sie Python als Framework mit pyenv
Erstellen Sie mit Python + PIL ein Dummy-Image.
Ich habe mit Python einen Zeichenzähler erstellt
[Python] Zeichnen eines Wirbelmusters mit einer Schildkröte
Betreiben Sie das Smartlife-Netzteil mit Python (de-IFTTT).
Ich habe eine Heatmap mit Seaborn [Python] gezeichnet.
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen wir mit Python eine kostenlose Gruppe
Ein Memo mit Python2.7 und Python3 in CentOS
Erstellen einer Python 3.6-Umgebung mit Windows + PowerShell
Kartenmietinformationen auf einer Karte mit Python
Durchsuche das Labyrinth mit dem Python A * -Algorithmus
Dämonisieren Sie eine Python-Webanwendung mit Supervisor
Lassen Sie uns mit Python langsam sprechen
Erstellt eine Reise von Darts mit Python (Nachrichten)
[GCP] Betreiben Sie Google Cloud Storage mit Python
Ich habe eine funktionale Sprache mit Python ausprobiert
[Python] Eine schnelle Webanwendung mit Bottle!
[AtCoder] Löse ABC1 ~ 100 Ein Problem mit Python