Imprimer sur une imprimante réseau via un socket
💡 Sujet
Envoyer une commande d’impression (ex. : ZPL pour imprimantes Zebra) directement à une imprimante réseau via un socket TCP en Python.
🧪 Exemple de code
Voici un exemple simple pour envoyer un bloc ZPL à une imprimante réseau :
import socket
def send_to_printer(ip, port, zpl):
try:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.settimeout(5)
s.connect((ip, port))
s.sendall(zpl.encode("utf-8"))
print("Étiquette envoyée avec succès à l’imprimante Zebra.")
except UnicodeEncodeError:
print(
"Erreur d'encodage : ton ZPL contient des caractères non supportés par utf-8."
)
except Exception as e:
print(f"Erreur lors de l’envoi à l’imprimante : {e}")🧩 Explications
🎯 Les imprimantes industrielles (comme Zebra) exposent souvent un port TCP brut (ex. : 9100)
permettant d’envoyer directement les commandes d’impression.
🔌 socket.socket(AF_INET, SOCK_STREAM) ouvre un socket TCP classique.
⏱️ settimeout(5) évite que la connexion ne bloque trop longtemps en cas d’imprimante hors ligne.
📤 sendall() envoie l’intégralité du ZPL en une fois.
⚠️ Attention à l’encodage : la plupart des imprimantes Zebra attendent du UTF-8 ou de l’ASCII.
🧩 Résumé
- ✅ Le socket TCP est la manière la plus simple et directe d’imprimer sur une imprimante réseau Zebra.
- 🔌 Connecter → envoyer le ZPL → fermer automatiquement grâce au
with. - ⚠️ Gérer les erreurs d’encodage et de connexion pour un comportement propre.
- 💡 Simple, rapide et idéal pour les environnements industriels.
🔗 Références
- Python Docs —
socket