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.
Untersuchen Sie zunächst die Druckereinstellungen und welche Zeichen vom Belegdrucker gedruckt werden können.
pip install python-escpos
pip install Pillow
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.
p.text (" Hello World \ n ")
ausführen, seien Sie bitte vorsichtig, da das Zeichen für die erste Position verschwindet.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"
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.
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()
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