Configuración de una impresora de etiquetas XPrinter en Linux en VMware Workstation

Un ejemplo para configurar en CentOS sin un shell gráfico; por analogía, puede configurarlo en cualquier sistema operativo Linux.

Resuelvo un problema específico, desde php necesitas imprimir etiquetas con texto arbitrario de acuerdo con la plantilla. Como es imposible contar con un Internet estable en el evento, y la mayoría de las tareas de automatización se cruzan con el sitio web, decidimos trabajar con la máquina virtual en VMware.

XPrinter también es adecuado para marcar tareas; la instalación bajo ventanas es mucho más fácil. Se detuvo en el modelo XP-460B con un ancho de etiqueta de hasta 108 mm.



Como rara vez configuro Linux y conecto dispositivos a él, busqué manuales de configuración listos para usar, me di cuenta de que la forma más fácil de conectar la impresora a través de tazas. No pude conectar la impresora a través de USB, no ayudó la manipulación de los consejos en los manuales, simplemente rompí la máquina virtual varias veces.

  • Descargue los controladores del sitio web del fabricante xprintertech.com, vienen en un archivo para Windows, Mac y Linux. Los

    controladores se encuentran en el sitio para una serie de dispositivos, en mi caso, controladores de impresoras de etiquetas de 4 pulgadas . Al final resultó que, el XP-460B ya ha sido descontinuado, me di cuenta de qué serie pertenece en las migas de pan del modelo similar XP-470B.
  • Instale la impresora en Windows, permita compartir

  • 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, , .

Cuando todo resultó y la impresora imprimió una página de prueba, las tareas se pueden enviar a través de la consola:

lpr -P Xprinter_XP-460B -o media=Custom.100x102mm test.txt

En este ejemplo, la etiqueta tiene dimensiones de 100x100 mm, 2 mm se seleccionan experimentalmente. La distancia entre las etiquetas es de 3 mm, pero si establece la altura en 103 mm, la cinta se desplaza, es inconveniente arrancar la etiqueta. La desventaja del protocolo LPD es que los trabajos se envían como a una impresora normal, el formato ESC / P0S no se envía para imprimir, el sensor no calibra las etiquetas.

Entonces puede trabajar con la impresora a través de php. Hay bibliotecas para trabajar con cups, es más fácil para mí enviar un comando a la consola a través de exec ();

Como ESC / P0S no funciona, decidí hacer plantillas en pdf a través de la biblioteca 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');


Hecho. Maté 2 días libres para configurar, espero que sea útil para alguien.

All Articles