Faites fonctionner l'imprimante de reçus avec python

Article associé

Être en difficulté

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.

une fonction

Quoi utiliser

conception

1. Paramètres et codage 1

Tout d'abord, examinez les paramètres de l'imprimante et quels caractères peuvent être imprimés par l'imprimante de reçus.

Installez la bibliothèque utilisée par python

pip install python-escpos
pip install Pillow

J'ai utilisé une police gratuite comme police.

Site de polices gratuites

Impression avec une imprimante

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.

IMG_20200620_103642.jpg

Paramètres USB

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"

2. Paramètres et codage 2

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.

qiita-logo.png

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()

IMG_20200620_114940.jpg

Résumé

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

Faites fonctionner l'imprimante de reçus avec python
Imprimer des notes avec une imprimante de reçus (sérialisation)
Utiliser Kinesis avec Python
Faire fonctionner Blender avec Python
Utiliser Excel avec Python (1)
Utiliser Excel avec Python (2)
Exploitez Excel avec Python open pyxl
Exploitez TwitterBot avec Lambda, Python
[Note] Faites fonctionner MongoDB avec Python
Utiliser une imprimante avec Debian 10
Faites une loterie avec Python
[Python] [SQLite3] Exploiter SQLite avec Python (basique)
Créer un répertoire avec python
[Python] Qu'est-ce qu'une instruction with?
Résoudre ABC163 A ~ C avec Python
Manuel de graphisme Python avec Matplotlib.
Faisons une interface graphique avec python.
Essayez d'exploiter Facebook avec Python
Résoudre ABC166 A ~ D avec Python
Créez un environnement virtuel avec Python!
J'ai fait une loterie avec Python.
Créer un environnement virtuel avec Python 3
Résoudre ABC168 A ~ C avec Python
Créer un système de recommandation avec python
Faites fonctionner les appareils électroménagers ECHONET Lite avec Python
[Python] Générer un mot de passe avec Slackbot
Résoudre ABC162 A ~ C avec Python
Résoudre ABC167 A ~ C avec Python
Résoudre ABC158 A ~ C avec Python
Faisons un graphe avec python! !!
[Python] Hériter d'une classe avec des variables de classe
J'ai créé un démon avec Python
Ecrire un script batch avec Python3.5 ~
[Python] Un mémo pour faire fonctionner une ROM créée avec GBDK avec PyBoy
[Pyenv] Construire un environnement python avec ubuntu 16.04
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Créer un décorateur de fonction Python avec Class
Créer un fichier power simple avec Python
Faisons un jeu de shiritori avec Python
Installer Python en tant que Framework avec pyenv
Créez une image factice avec Python + PIL.
J'ai fait un compteur de caractères avec Python
[Python] Dessiner un motif de tourbillon avec une tortue
Faire fonctionner l'alimentation smartlife avec python (de-IFTTT)
J'ai dessiné une carte thermique avec Seaborn [Python]
[Python] Créez un environnement virtuel avec Anaconda
Créons un groupe gratuit avec Python
Un mémo contenant Python2.7 et Python3 dans CentOS
Création d'un environnement Python 3.6 avec Windows + PowerShell
Carte des informations de location sur une carte avec python
Rechercher le labyrinthe avec l'algorithme python A *
Démonisez une application Web Python avec Supervisor
Faisons la voix lentement avec Python
Créé un voyage de fléchettes avec python (news)
[GCP] Exploitez Google Cloud Storage avec Python
J'ai essayé un langage fonctionnel avec Python
[Python] Une application web rapide avec Bottle!
[AtCoder] Résoudre ABC1 ~ 100 Un problème avec Python