L'envoi d'une chaîne de commandes à une imprimante directement dans sa langue maternelle s'appelle l'impression brute.
De nombreuses imprimantes thermiques ont besoin de ces commandes brutes pour exécuter des fonctions telles que l'impression de codes-barres, l'impression de reçus, l'impression d'étiquettes, etc. L'impression brute contourne les pilotes de l'imprimante dans la plupart des cas, ce qui les rend très rapides et fiables. L'impression brute est également capable d'exécuter certaines fonctions avancées telles que la découpe du papier des reçus, l'éjection des tiroirs-caisses, etc.
Suivre le guide d'ERPNext.



Développement : tester en créant une imprimante virtuelle
Si la commande lpadmin n'est pas installée, installer CUPS (guide en français).
sudo lpadmin -p tofile -E -v socket://localhost:7777 -m raw
#!/usr/bin/perl
use IO::Socket::INET;
$myport=7777;
$pserve=IO::Socket::INET->new(LocalPort => $myport,Type=>SOCK_STREAM,Reuse=>1,Listen=>1) or die "can't do that $!\n";
while ($pjob=$pserve->accept()) {
open(J,">>/private/tmp/x") or print "having issues $!\n";
print J "New job...\n";
print STDOUT "New job...\n";
while (<$pjob>) {
print J "$_";
print STDOUT "$_";
}
close J;
close $pjob;
}
Source : https://aplawrence.com/MacOSX/macosxcupstofile.html
Pour aller plus loin
https://qz.io/docs/setting-up-a-raw-printer-in-ubuntu-linux
https://askubuntu.com/questions/1051602/virtual-printer
Impression client-side via adresse IP — https://discuss.frappe.io/t/tutorial-printing-directly-to-zebra-label-printer-from-any-local-device/98802