Configurando uma impressora de etiquetas XPrinter no Linux no VMware Workstation

Um exemplo de configuração no CentOS sem um shell gráfico; por analogia, você pode configurá-lo em qualquer sistema operacional Linux.

Resolvo um problema específico, a partir do php preciso imprimir etiquetas com texto arbitrário de acordo com um template. Como o evento não pode contar com uma Internet estável e a maioria das tarefas de automação se sobrepõem ao site, decidimos trabalhar com uma máquina virtual no VMware.

XPrinter também é adequado para tarefas de marcação, é muito mais fácil de instalar no Windows. Optei pelo modelo XP-460B com uma largura de etiqueta de até 108 mm.

Configurando uma impressora de etiquetas XPrinter no Linux no VMware Workstation

Como raramente configuro o Linux e conecto dispositivos a ele, estava procurando manuais de configuração prontos, percebi que a maneira mais fácil de conectar uma impressora é por meio de copos. Não consegui conectar a impressora via USB, nenhuma manipulação nos conselhos dos manuais ajudou, apenas quebrei a máquina virtual várias vezes.

  • Baixamos os drivers do site do fabricante xprintertech.com, eles vêm em um arquivo para Windows, Mac e Linux

    Os drivers são postados no site para uma série de dispositivos, no meu caso Drivers de impressora de etiquetas de 4 polegadas. Acontece que o XP-460B já foi descontinuado, descobri a qual série ele pertence com base na migalha de pão de um modelo XP-470B semelhante.

  • Instale a impressora no Windows, habilite o compartilhamento

    Configurando uma impressora de etiquetas XPrinter no Linux no VMware Workstation

  • Para Linux, o arquivo contém 1 arquivo 4BARCODE. Este é um arquivo 2 em 1, um script bash com um arquivo tar que se descompacta e copia os drivers em cups. No meu caso, o bzip2 é necessário para descompactar (para a série de 80 mm, um arquivador diferente é usado)
    yum install cups
    yum install bzip2
    chmod 744 ./4BARCODE
    sh ./4BARCODE
    service cups start
    
  • Em seguida, você precisa abrir localhost:631 no navegador, por conveniência faço a configuração para abrir do navegador no windows. Edite /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>
    

    Adicione a porta 631 ao firewall (ou iptables):

    firewall-cmd --zone=public --add-port=631/tcp --permanent
    firewall-cmd --reload
    
  • Abrimos o link no navegador pelo IP da máquina virtual, no meu caso 192.168.1.5:631/administrador

    Adicione uma impressora (você precisa inserir root e senha)

    Configurando uma impressora de etiquetas XPrinter no Linux no VMware Workstation

  • São 2 opções que consegui configurar, via protocolo LPD e via samba.
    1. Para se conectar através do protocolo LPD, você precisa habilitar o serviço no Windows (Ativar ou desativar recursos do Windows), reiniciar o computador.

      Configurando uma impressora de etiquetas XPrinter no Linux no VMware Workstation
      Nas configurações do cups, digite lpd://192.168.1.52/Xprinter_XP-460B, onde 192.168.1.52 é o IP do computador no qual a impressora está instalada, Xprinter_XP-460B é o nome da impressora nas configurações de compartilhamento do Windows

      Configurando uma impressora de etiquetas XPrinter no Linux no VMware Workstation
      Selecione o driver 4BARCODE => 4B-3064TA

      Configurando uma impressora de etiquetas XPrinter no Linux no VMware Workstation
      Não selecionamos nada nos parâmetros e não salvamos! Tentei ajustar o tamanho da etiqueta, mas a impressora não funciona por algum motivo. O tamanho da etiqueta pode ser definido no trabalho de impressão.

      Configurando uma impressora de etiquetas XPrinter no Linux no VMware Workstation
      Tentando imprimir uma página de teste - pronto!

    2. Segunda opçao. Você precisa instalar o samba, iniciar, reiniciar o cups, então um novo ponto de conexão aparecerá no cups, nas configurações digite uma linha como smb://user:[email protegido]/Xprinter_XP-460B. Onde, usuário é um usuário no windows, o usuário deve ter uma senha, a autorização não passa com a vazia.

Quando tudo deu certo e a impressora imprimiu uma página de teste, os trabalhos podem ser enviados pelo console:

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

Neste exemplo, a etiqueta 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 se desloca, é inconveniente arrancar a etiqueta. A desvantagem do protocolo LPD é que os trabalhos são enviados como para uma impressora comum, o formato ESC / P0S não é enviado para impressão, 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 ESC/P0S não funciona, resolvi fazer templates 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');

Configurando uma impressora de etiquetas XPrinter no Linux no VMware Workstation
Preparar. Matei 2 dias de folga para configurar, espero que seja útil para alguém.

Fonte: habr.com

Adicionar um comentário