Un exemple de configuration sur CentOS sans shell graphique ; par analogie, vous pouvez configurer sur n'importe quel système d'exploitation Linux.
Je résous un problème spécifique : je dois imprimer des étiquettes avec du texte arbitraire à l'aide d'un modèle PHP. Comme vous ne pouvez pas compter sur une connexion Internet stable lors de l'événement et que la plupart des tâches d'automatisation chevauchent le site Web, nous avons décidé de travailler avec une machine virtuelle sur VMware.
XPrinter convient également aux tâches de marquage ; l'installation sous Windows est beaucoup plus simple. J'ai opté pour le modèle XP-460B avec une largeur d'étiquette allant jusqu'à 108 mm.

Comme j'installe rarement Linux et y connecte des périphériques, j'ai recherché des manuels de configuration prêts à l'emploi et j'ai réalisé que le moyen le plus simple de connecter une imprimante consiste à utiliser des tasses. Je n'ai pas pu connecter l'imprimante en USB, aucune manipulation suivant les conseils des manuels n'a aidé, j'ai juste planté la machine virtuelle plusieurs fois.
- Téléchargez les pilotes sur le site Web du fabricant xprintertech.com, ils sont regroupés dans une seule archive pour Windows, Mac et Linux.
Les pilotes sont publiés sur le site Web pour une série d'appareils, dans mon cas Pilotes d'imprimante d'étiquettes 4 pouces. Il s'avère que le XP-460B a déjà été abandonné ; j'ai déterminé à quelle série il appartient en me basant sur le fil d'Ariane d'un modèle similaire, le XP-470B.
- Installez l'imprimante sous Windows, activez le partage

- Pour Linux, l'archive contient 1 fichier 4BARCODE. Il s'agit d'un fichier « 2 en 1 », un script bash avec une archive tar qui se décompresse et copie les pilotes dans cups. Dans mon cas, bzip2 est nécessaire pour le déballage (pour la série 80 mm, un archiveur différent est utilisé)
yum install cups yum install bzip2 chmod 744 ./4BARCODE sh ./4BARCODE service cups start - Ensuite, vous devez ouvrir :631 dans le navigateur, pour plus de commodité, je configure un paramètre pour ouvrir à partir du navigateur sous Windows. Editez /etc/cups/cupsd.conf :
Listen localhost:631 меняем на Listen *:631 <Location /> Order allow,deny Allow localhost Allow 192.168.1.* </Location> <Location /admin> Order allow,deny Allow localhost Allow 192.168.1.* </Location>Ajoutez le port 631 au pare-feu (ou iptables) :
firewall-cmd --zone=public --add-port=631/tcp --permanent firewall-cmd --reload - On ouvre le lien dans le navigateur en utilisant l'IP de la machine virtuelle, dans mon cas :631/administrateur
Ajoutez une imprimante (vous devez entrer root et mot de passe)

- Il y a 2 options que j'ai réussi à configurer, via le protocole LPD et via samba.
- Pour vous connecter via le protocole LPD, vous devez activer le service dans Windows (Activer ou désactiver les composants Windows) et redémarrer l'ordinateur.

Dans les paramètres de cups, saisissez lpd://192.168.1.52/Xprinter_XP-460B, où 192.168.1.52 est l'IP de l'ordinateur sur lequel l'imprimante est installée, Xprinter_XP-460B est le nom de l'imprimante dans les paramètres de partage Windows
Sélectionnez le pilote 4BARCODE => 4B-3064TA
Nous ne sélectionnons ni n’enregistrons rien dans les paramètres ! J'ai essayé d'ajuster la taille de l'étiquette, mais l'imprimante ne fonctionne pas pour une raison quelconque. La taille de l'étiquette peut être spécifiée dans le travail d'impression.
Nous essayons d'imprimer une page de test - c'est fait ! - Deuxième option. Vous devez installer samba, l'exécuter, redémarrer cups, puis un nouveau point de connexion apparaîtra dans cups, dans les paramètres, entrez une ligne comme smb://user:password@192.168.1.52/Xprinter_XP-460B. Lorsque l'utilisateur est un utilisateur sous Windows, l'utilisateur doit avoir un mot de passe, l'autorisation ne fonctionne pas avec un mot de passe vide.
- Pour vous connecter via le protocole LPD, vous devez activer le service dans Windows (Activer ou désactiver les composants Windows) et redémarrer l'ordinateur.
Lorsque tout s'est bien passé et que l'imprimante a imprimé une page de test, les tâches peuvent être envoyées via la console :
lpr -P Xprinter_XP-460B -o media=Custom.100x102mm test.txtDans cet exemple, l'étiquette a des dimensions de 100x100 mm, 2 mm ont été retenus expérimentalement. La distance entre les étiquettes est de 3 mm, mais si vous réglez la hauteur sur 103 mm, le ruban se déplace, ce qui rend difficile l'arrachage de l'étiquette. L'inconvénient du protocole LPD est que les travaux sont envoyés comme vers une imprimante classique, le format ESC/P0S n'est pas envoyé pour l'impression et le capteur ne calibre pas les étiquettes.
Ensuite, vous pouvez travailler avec l'imprimante via php. Il existe des bibliothèques pour travailler avec des cups, c'est plus facile pour moi d'envoyer une commande à la console via exec();
Comme ESC/P0S ne fonctionne pas, j'ai décidé de créer des modèles en pdf en utilisant la bibliothèque tFPDF
require_once($_SERVER["DOCUMENT_ROOT"] . "/tfpdf/tfpdf.php");
$w = 100;
$h = 100;
$number = 59;
$pdf = new tFPDF('P', 'mm', [$w, $h]);
$pdf->SetTitle('Information');
$pdf->AddFont('Font', 'B', $_SERVER["DOCUMENT_ROOT"] . '/fonts/opensans-bold.ttf', true);
$pdf->SetTextColor(0,0,0);
$pdf->SetDrawColor(0,0,0);
$pdf->AddPage('P');
$pdf->SetDisplayMode('real','default');
$pdf->Image($_SERVER["DOCUMENT_ROOT"]. '/images/logo_site.png',$w - 4 - 28,$h - 13,28.1,9.6,'');
$pdf->SetFontSize(140);
$pdf->SetXY(0,24);
$pdf->Cell($w,$h - 45, $number,0,0,'C',0);
$pdf->SetFontSize(1);
$pdf->SetTextColor(255,255,255);
$pdf->Write(0, $number);
$pdf->Output('example.pdf','I');
exec('php label.php | lpr -P Xprinter_XP-460B -o media=Custom.100x102mm');

Prêt. J'ai passé 2 week-ends à le monter, j'espère que cela sera utile à quelqu'un.
Source: habr.com






