Tout d'abord, la définition du problème! J'ai essayé d'utiliser l'outil de gestion des tâches à plusieurs reprises et j'ai échoué à plusieurs reprises, mais je pense que c'est parce que c'est difficile d'ouvrir chaque tâche sur mon smartphone, donc je ne peux pas la voir physiquement. Je les ai créés parce que je pensais qu'il serait bon de les imprimer avec une imprimante.
Tout d'abord, examinez les paramètres de l'imprimante et quels caractères peuvent être imprimés par l'imprimante de reçus.
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
#Impression avec une imprimante de reçus
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), "Japonais" + " ", 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()
Une version imprimée de ceci est présentée ci-dessous.
p.text (" Hello World \ n ")
, le premier caractère de position disparaît.Si vous souhaitez imprimer avec une imprimante de reçus, vous devez le définir. Je vais le confirmer.
p = Usb(0x0416, 0x5011, 0, 0x81, 0x03)
Tout d'abord, exécutons lsusb
$ 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
Les éléments suivants sont connectés à l'imprimante de reçus.
Bus 001 Device 008: ID 0416: 5011 Port de communication virtuelle de Winbond Electronic's Corp.
Cette partie «0416: 5011» est le premier et le deuxième arguments Usb.
Vous pouvez imprimer en ajoutant sudo et en exécutant python avec les privilèges root. À ce stade, ajoutez une règle à udev afin que les utilisateurs généraux puissent accéder à cet appareil et chargez la règle udev.
※udev En termes simples, cette clé USB gère quelque chose même si vous branchez ou débranchez un périphérique USB. (Veuillez vérifier le lien pour être exact.)
paramètres udev Créez un fichier /etc/udev/rules.d/10-printer.rules et écrivez ce qui suit: Si l'ID de périphérique: 0416: 5011 est différent dans le lsusb précédent, veuillez également le faire correspondre.
SUBSYSTEM=="usb", ATTR{idVendor}=="0416", ATTR{idProduct}=="5011", MODE="0666", GROUP="plugdev"
Ajoutez l'image spécifiée en tant que logo et imprimez-la Ajoutez l'image suivante aux données créées précédemment et imprimez-la.
from escpos.printer import Usb
from escpos import *
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
#Impression avec une imprimante de reçus
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), "Japonais" + " ", 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()
Vous pouvez désormais imprimer du texte et des images simples sur votre imprimante de reçus. Au fait, j'ai choisi cette fois l'imprimante de reçus simplement parce que le prix est bon marché. L'imprimante de reçus coûte 4500 yens et 5 papiers de caisse enregistreuse coûtent environ 900 yens!
Recommended Posts