Impression brute (Raw Printing)
L'impression brute envoie à l'imprimante une suite de commandes dans son propre langage (ZPL, ESC/POS, etc.), sans passer par un PDF.
Beaucoup d'imprimantes thermiques utilisent ces commandes pour imprimer des reçus, des étiquettes ou des codes-barres. Elles permettent aussi de couper le papier ou d'ouvrir un tiroir-caisse, si l'imprimante le prend en charge.
Dokos envoie les commandes à l'imprimante par l'application QZ Tray, installée sur le poste de l'utilisateur.
Prérequis
- QZ Tray est installé et lancé sur le poste qui imprime. Vous pouvez tester QZ Tray sur https://demo.qz.io/.
- Sous Linux, installez
certutilavant QZ Tray si la connexion échoue. - Vous connaissez le langage de commandes de votre imprimante. Un outil comme https://labelary.com/viewer.html permet de prévisualiser du ZPL.
Configurer l'impression brute
- Ouvrez les paramètres d'impression et cochez Autoriser l'impression brute. Enregistrez.
- Créez un format d'impression pour le type de document voulu.
- Cochez Format personnalisé, puis Impression brute.
- Saisissez les Commandes brutes. Ce champ accepte Jinja : la variable
doccontient le document imprimé. - Enregistrez le format.

Exemple fictif : une étiquette ZPL qui imprime le code et le nom d'un article.
^XA
^FO50,50^A0N,40,40^FD{{ doc.item_code }}^FS
^FO50,110^A0N,30,30^FD{{ doc.item_name }}^FS
^XZ
Associer le format à une imprimante
L'association entre un format et une imprimante est enregistrée dans le navigateur de chaque poste.
- Ouvrez un document et son aperçu d'impression.
- Cliquez sur Menu > Paramètres d'impression brute.
- Dans la Correspondance des imprimantes, ajoutez une ligne : choisissez le Format d'impression et l'Imprimante détectée par QZ Tray.
- Enregistrez.

Imprimer
- Dans l'aperçu d'impression, sélectionnez le format d'impression brute.
- Cliquez sur Imprimer.
Dokos se connecte à QZ Tray et envoie les commandes. Le message « Impression envoyées à l'imprimante » confirme l'envoi.
Si aucune imprimante n'est associée au format, Dokos affiche « Mapping d'impression non configuré. ». Si QZ Tray n'est pas lancé, Dokos essaie de le démarrer, puis affiche un message d'erreur avec un lien de téléchargement.
Tester avec une imprimante virtuelle (développement)
Sur un poste de développement, vous pouvez créer une imprimante CUPS qui écrit les commandes reçues dans un fichier. Installez CUPS si la commande lpadmin n'existe pas.
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://qz.io/docs/signing
- https://askubuntu.com/questions/1051602/virtual-printer
- Impression depuis un poste du réseau local vers une imprimante Zebra : https://discuss.frappe.io/t/tutorial-printing-directly-to-zebra-label-printer-from-any-local-device/98802