Een XPrinter-labelprinter instellen op Linux in VMware Workstation

Een voorbeeld voor het instellen op CentOS zonder een grafische shell; naar analogie kunt u het op elk Linux-besturingssysteem instellen.

Ik ben een specifiek probleem aan het oplossen: ik moet labels met willekeurige tekst afdrukken met behulp van een sjabloon uit PHP. Omdat je op het evenement niet kunt rekenen op een stabiele internetverbinding en de meeste automatiseringstaken overlappen met de website, hebben we besloten om met een virtuele machine op VMware te werken.

XPrinter is ook geschikt voor het markeren van taken; installatie onder Windows is veel eenvoudiger. Ik koos voor het XP-460B-model met een labelbreedte tot 108 mm.

Een XPrinter-labelprinter instellen op Linux in VMware Workstation

Omdat ik zelden Linux installeerde en er apparaten op aansloot, zocht ik naar kant-en-klare installatiehandleidingen en besefte ik dat de eenvoudigste manier om een ​​printer aan te sluiten via cups is. Ik kon de printer niet via USB aansluiten, geen manipulaties volgens het advies in de handleidingen hielpen, ik liet de virtuele machine gewoon meerdere keren crashen.

  • Download stuurprogramma's van de website van de fabrikant xprintertech.com, ze komen in één archief voor Windows, Mac en Linux

    Voor een reeks apparaten worden in mijn geval stuurprogramma's op de website geplaatst Stuurprogramma's voor 4-inch labelprinters. Het blijkt dat de XP-460B al niet meer leverbaar is; ik heb uitgezocht tot welke serie hij behoort op basis van de broodkruimels van een vergelijkbaar model, de XP-470B.

  • Installeer de printer in Windows, schakel delen in

    Een XPrinter-labelprinter instellen op Linux in VMware Workstation

  • Voor Linux bevat het archief 1 bestand 4BARCODE. Dit is een “2 in 1” bestand, een bash-script met een tar-archief dat zichzelf uitpakt en de stuurprogramma's naar cups kopieert. In mijn geval is bzip2 nodig voor het uitpakken (voor de 80 mm-serie wordt een andere archiver gebruikt)
    yum install cups
    yum install bzip2
    chmod 744 ./4BARCODE
    sh ./4BARCODE
    service cups start
    
  • Vervolgens moet je openen localhost:631 in de browser, voor het gemak maak ik een instelling om te openen vanuit de browser in Windows. Bewerk /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>
    

    Voeg poort 631 toe aan de firewall (of iptables):

    firewall-cmd --zone=public --add-port=631/tcp --permanent
    firewall-cmd --reload
    
  • We openen de link in de browser met behulp van het IP-adres van de virtuele machine, in mijn geval 192.168.1.5:631/beheerder

    Voeg een printer toe (je moet root en wachtwoord invoeren)

    Een XPrinter-labelprinter instellen op Linux in VMware Workstation

  • Er zijn 2 opties die ik heb weten te configureren, via het LPD-protocol en via samba.
    1. Om verbinding te maken via het LPD-protocol, moet u de service in Windows inschakelen (Windows-componenten in- of uitschakelen) en de computer opnieuw opstarten.

      Een XPrinter-labelprinter instellen op Linux in VMware Workstation
      Voer in de cups-instellingen lpd://192.168.1.52/Xprinter_XP-460B in, waarbij 192.168.1.52 het IP-adres is van de computer waarop de printer is geïnstalleerd, Xprinter_XP-460B de naam van de printer in de Windows-instellingen voor delen

      Een XPrinter-labelprinter instellen op Linux in VMware Workstation
      Selecteer chauffeur 4BARCODE => 4B-3064TA

      Een XPrinter-labelprinter instellen op Linux in VMware Workstation
      We selecteren of slaan niets op in de parameters! Ik heb geprobeerd het labelformaat aan te passen, maar de printer werkt om de een of andere reden niet. Het labelformaat kan worden opgegeven in de afdrukopdracht.

      Een XPrinter-labelprinter instellen op Linux in VMware Workstation
      We proberen een testpagina af te drukken - klaar!

    2. Tweede optie. Je moet samba installeren, cups starten en opnieuw opstarten, dan verschijnt er een nieuw verbindingspunt in cups, voer in de instellingen een regel in zoals smb://user:[e-mail beveiligd]/Xprinter_XP-460B. Wanneer de gebruiker een gebruiker is in Windows, moet de gebruiker een wachtwoord hebben ingesteld; autorisatie werkt niet met een leeg wachtwoord.

Wanneer alles gelukt is en de printer een testpagina heeft afgedrukt, kunnen opdrachten via de console worden verzonden:

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

In dit voorbeeld heeft het label de afmetingen 100x100 mm, waarbij experimenteel 2 mm is geselecteerd. De afstand tussen de labels is 3 mm, maar als je de hoogte instelt op 103 mm verschuift de tape, waardoor het lastig is om het label af te scheuren. Het nadeel van het LPD-protocol is dat opdrachten worden verzonden zoals naar een gewone printer, dat het ESC/P0S-formaat niet wordt verzonden om te worden afgedrukt en dat de sensor labels niet kalibreert.

Dan kun je via php met de printer werken. Er zijn bibliotheken om met cups te werken, het is voor mij gemakkelijker om een ​​commando naar de console te sturen via exec();

Omdat ESC/P0S niet werkt, heb ik besloten om sjablonen in pdf te maken met behulp van de tFPDF-bibliotheek

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');

Een XPrinter-labelprinter instellen op Linux in VMware Workstation
Klaar. Ik ben twee weekenden bezig geweest met het opzetten ervan, ik hoop dat iemand er iets aan heeft.

Bron: www.habr.com

Voeg een reactie