Configurando uma impressora de etiquetas XPrinter no Linux na estação de trabalho VMware

Um exemplo para configurar no CentOS sem um shell gráfico; por analogia, você pode configurar em qualquer sistema operacional Linux.

Eu resolvo um problema específico, do php você precisa imprimir etiquetas com texto arbitrário de acordo com o modelo. Como é impossível contar com uma Internet estável no evento e a maioria das tarefas de automação cruzam com o site, decidimos trabalhar com a máquina virtual no VMware.

O XPrinter também é adequado para marcar tarefas; a instalação no Windows é muito mais fácil. Ele parou no modelo XP-460B com uma largura de etiqueta de até 108 mm.



Como raramente lido com a instalação do Linux e com a conexão de dispositivos, estava procurando manuais de configuração prontos, percebi que a maneira mais fácil de conectar a impressora através de xícaras. Não consegui conectar a impressora via USB, nenhuma manipulação nas dicas dos manuais ajudou, apenas quebrei a máquina virtual várias vezes.

  • Faça o download dos drivers no site do fabricante xprintertech.com, eles vĂŞm em um arquivo para Windows, Mac e Linux. Os

    drivers estão localizados no site para uma série de dispositivos, no meu caso, drivers de impressora de etiquetas de 4 polegadas . Como se viu, o XP-460B já foi descontinuado, percebi a que série ele pertence nas migalhas de pão do modelo XP-470B semelhante.
  • Instale a impressora no Windows, habilite o compartilhamento

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

Quando tudo acabou e a impressora imprimiu uma página de teste, as tarefas podem ser enviadas pelo console:

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

Neste exemplo, o rótulo tem dimensões de 100x100 mm, 2 mm são selecionados experimentalmente. A distância entre as etiquetas é de 3 mm, mas se você definir a altura para 103 mm, a fita será deslocada, será inconveniente rasgar a etiqueta. A desvantagem do protocolo LPD é que os trabalhos são enviados como uma impressora comum, o formato ESC / P0S não é enviado para a impressora, o sensor não calibra as etiquetas.

Então você pode trabalhar com a impressora através do php. Existem bibliotecas para trabalhar com cups, é mais fácil para mim enviar um comando para o console via exec ();

Como o ESC / P0S nĂŁo funciona, decidi criar modelos em pdf via 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');


Feito. Eu matei 2 dias para configurar, espero que seja útil para alguém.

All Articles