Configuration d'une imprimante d'étiquettes XPrinter sous Linux dans VMware Workstation

Un exemple à configurer sur CentOS sans shell graphique; par analogie, vous pouvez le configurer sur n'importe quel OS Linux.

Je résous un problème spécifique, à partir de PHP, vous devez imprimer des étiquettes avec du texte arbitraire selon le modèle. Puisqu'il est impossible de compter sur un Internet stable lors de l'événement, et que la plupart des tâches d'automatisation se croisent avec le site Web, nous avons décidé de travailler avec la machine virtuelle sur VMware.

XPrinter convient également pour le marquage des tâches; l'installation sous les fenêtres est beaucoup plus facile. Il s'est arrêté sur le modèle XP-460B avec une largeur d'étiquette allant jusqu'à 108 mm.



Comme je m'occupe rarement de la configuration Linux et de la connexion de périphériques, je cherchais des manuels de configuration prêts à l'emploi, j'ai réalisé que la façon la plus simple de connecter l'imprimante à travers des tasses. Je n'ai pas pu connecter l'imprimante via USB, aucune manipulation sur les astuces des manuels n'a aidé, j'ai juste cassé la machine virtuelle plusieurs fois.

  • Téléchargez les pilotes à partir du site Web du fabricant xprintertech.com, ils se trouvent dans une archive pour Windows, Mac et Linux.Les

    pilotes sont situés sur le site pour une série de périphériques, dans mon cas, les pilotes d'imprimante d'étiquettes de 4 pouces . En fin de compte, le XP-460B a déjà été abandonné, j'ai réalisé à quelle série il appartient dans la chapelure du modèle similaire XP-470B.
  • Installez l'imprimante dans Windows, activez le partage

  • Linux 1 4BARCODE. «2 1» , bash tar , cups. bzip2 ( 80 )

    yum install cups
    yum install bzip2
    chmod 744 ./4BARCODE
    sh ./4BARCODE
    service cups start
    
  • localhost:631 , , windows. /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>
    

    631 firewall ( iptables):

    firewall-cmd --zone=public --add-port=631/tcp --permanent
    firewall-cmd --reload
    
  • IP , 192.168.1.5:631/admin

    ( root )

  • 2 , , LPD samba.

    1. LPD, windows ( Windows), .


      cups lpd://192.168.1.52/Xprinter_XP-460B, 192.168.1.52 — IP , , Xprinter_XP-460B — windows


      4BARCODE => 4B-3064TA


      ! , - . .


      — !
    2. . samba, , cups, cups, smb://user:password@192.168.1.52/Xprinter_XP-460B. , user — windows, , .

Lorsque tout s'est déroulé 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.txt

Dans cet exemple, l'étiquette a des dimensions de 100x100 mm, 2 mm sont sélectionnés expérimentalement. La distance entre les étiquettes est de 3 mm, mais si vous définissez la hauteur sur 103 mm, la bande est décalée, il n'est pas pratique de déchirer l'étiquette. L'inconvénient du protocole LPD est que les travaux sont envoyés comme vers une imprimante standard, le format ESC / P0S n'est pas envoyé à l'imprimante, 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, il 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 via 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');


Terminé. J'ai tué 2 jours de repos pour m'installer, j'espère que ça va être utile à quelqu'un.

All Articles