Налаштування принтера етикеток XPrinter на Linux у VMware Workstation

Приклад для налаштування CentOS без графічної оболонки, за аналогією можна налаштувати на будь-якій ОС Linux.

Вирішую специфічне завдання, з php потрібно друкувати етикетки з довільним текстом за шаблоном. Оскільки на заході не можна розраховувати на стабільний інтернет, а більшість завдань з автоматизації перетинається з веб-сайтом, вирішили працювати з віртуальною машиною на VMware.

XPrinter підійдуть і для маркування завдань, під windows встановлюються значно простіше. Зупинився на моделі XP-460B із шириною етикетки до 108 мм.

Налаштування принтера етикеток XPrinter на Linux у VMware Workstation

Оскільки налаштуванням Linux і підключенням пристроїв до нього займаюся вкрай рідко, шукав готові мануали з налаштування, зрозумів, що найпростіший спосіб підключити принтер через cups. У мене не вдалося підключити принтер по USB, не допомогли ніякі маніпуляції за порадами в мануалах, тільки зламав віртуальну машину кілька разів.

  • Завантажуємо драйвера із сайту виробника xprintertech.com, вони йдуть одним архівом для Windows, Mac та Linux

    Драйвер розміщено на сайті для серії пристроїв, в моєму випадку 4 inch Label Printer Drivers. Як виявилося, XP-460B вже знято з виробництва, зрозумів до якої серії він відноситься до хлібних крихт схожої моделі XP-470B.

  • Встановлюємо принтер у Windows, включаємо загальний доступ

    Налаштування принтера етикеток XPrinter на Linux у VMware Workstation

  • Для Linux в архіві 1 файл 4BARCODE. Це "2 в 1" файл, bash сценарій з tar архівом, який сам себе розпаковує та копіює драйвера в cups. У моєму випадку для розпакування потрібен bzip2 (для серії 80 мм використовується інший архіватор)
    yum install cups
    yum install bzip2
    chmod 744 ./4BARCODE
    sh ./4BARCODE
    service cups start
    
  • Далі потрібно відкрити локальний: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 та пароль)

    Налаштування принтера етикеток XPrinter на Linux у VMware Workstation

  • Є два варіанти, які мені вдалося налаштувати, за протоколом LPD і через samba.
    1. Для підключення за протоколом LPD, потрібно увімкнути службу у windows (Увімкнення або вимкнення компонентів Windows), перезавантажити комп'ютер.

      Налаштування принтера етикеток XPrinter на Linux у VMware Workstation
      У налаштуваннях cups вводимо lpd://192.168.1.52/Xprinter_XP-460B, де 192.168.1.52 - IP комп'ютера, на якому встановлено принтер, Xprinter_XP-460B - назва принтера в налаштуваннях загального доступу windows

      Налаштування принтера етикеток XPrinter на Linux у VMware Workstation
      Вибираємо драйвер 4BARCODE => 4B-3064TA

      Налаштування принтера етикеток XPrinter на Linux у VMware Workstation
      У параметрах нічого не вибираємо та не зберігаємо! Я намагався налаштувати розмір етикетки, але тоді принтер з якоїсь причини не працює. Розмір етикетки можна задати в завданні на друк.

      Налаштування принтера етикеток XPrinter на Linux у VMware Workstation
      Пробуємо роздрукувати пробну сторінку готово!

    2. Другий варіант. Потрібно встановити samba, запустити, перезапустити cups, тоді з'явиться новий пункт підключення cups, в налаштуваннях ввести рядок виду smb://user:[захищено електронною поштою]/Xprinter_XP-460B. Де, user - користувач у windows, у користувача обов'язково має бути заданий пароль, з порожнім авторизація не проходить.

Коли все вийшло і принтер роздрукував пробну сторінку, завдання можна надсилати через консоль:

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

У цьому прикладі етикетка має розміри 100х100 мм, 2 мм підібрані експериментально. Відстань між етикетками 3 мм, але якщо виставити висоту 103 мм відбувається зсув стрічки, незручно відривати етикетку. Недолік протоколу LPD – завдання відправляються як на звичайний принтер, формат ESC/P0S не надсилається на друк, сенсор не калібрує етикетки.

Далі можна працювати із принтером через php. Є бібліотеки для роботи з cups, мені простіше відправити команду в консоль через exec();

Оскільки ESC/P0S не працює, я вирішив зробити шаблони у PDF через бібліотеку 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');

Налаштування принтера етикеток XPrinter на Linux у VMware Workstation
Готово. Вбив на налаштування 2 вихідні, сподіваюся, комусь це буде корисно.

Джерело: habr.com

Додати коментар або відгук