Налаштування принтера етикеток XPrinter на Linux у VMware Workstation
Приклад для налаштування CentOS без графічної оболонки, за аналогією можна налаштувати на будь-якій ОС Linux.
Вирішую специфічне завдання, з php потрібно друкувати етикетки з довільним текстом за шаблоном. Оскільки на заході не можна розраховувати на стабільний інтернет, а більшість завдань з автоматизації перетинається з веб-сайтом, вирішили працювати з віртуальною машиною на VMware.
XPrinter підійдуть і для маркування завдань, під windows встановлюються значно простіше. Зупинився на моделі XP-460B із шириною етикетки до 108 мм.
Оскільки налаштуванням Linux і підключенням пристроїв до нього займаюся вкрай рідко, шукав готові мануали з налаштування, зрозумів, що найпростіший спосіб підключити принтер через cups. У мене не вдалося підключити принтер по USB, не допомогли ніякі маніпуляції за порадами в мануалах, тільки зламав віртуальну машину кілька разів.
Завантажуємо драйвера із сайту виробника xprintertech.com, вони йдуть одним архівом для Windows, Mac та Linux
Драйвер розміщено на сайті для серії пристроїв, в моєму випадку 4 inch Label Printer Drivers. Як виявилося, XP-460B вже знято з виробництва, зрозумів до якої серії він відноситься до хлібних крихт схожої моделі XP-470B.
Встановлюємо принтер у Windows, включаємо загальний доступ
Для 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>
Відкриваємо посилання в браузері IP віртуальної машини, в моєму випадку 192.168.1.5:631/admin
Додаємо принтер (потрібно ввести root та пароль)
Є два варіанти, які мені вдалося налаштувати, за протоколом LPD і через samba.
Для підключення за протоколом LPD, потрібно увімкнути службу у windows (Увімкнення або вимкнення компонентів Windows), перезавантажити комп'ютер.
У налаштуваннях cups вводимо lpd://192.168.1.52/Xprinter_XP-460B, де 192.168.1.52 - IP комп'ютера, на якому встановлено принтер, Xprinter_XP-460B - назва принтера в налаштуваннях загального доступу windows
Вибираємо драйвер 4BARCODE => 4B-3064TA
У параметрах нічого не вибираємо та не зберігаємо! Я намагався налаштувати розмір етикетки, але тоді принтер з якоїсь причини не працює. Розмір етикетки можна задати в завданні на друк.
Пробуємо роздрукувати пробну сторінку готово!
Другий варіант. Потрібно встановити samba, запустити, перезапустити cups, тоді з'явиться новий пункт підключення cups, в налаштуваннях ввести рядок виду smb://user:[захищено електронною поштою]/Xprinter_XP-460B. Де, user - користувач у windows, у користувача обов'язково має бути заданий пароль, з порожнім авторизація не проходить.
Коли все вийшло і принтер роздрукував пробну сторінку, завдання можна надсилати через консоль:
У цьому прикладі етикетка має розміри 100х100 мм, 2 мм підібрані експериментально. Відстань між етикетками 3 мм, але якщо виставити висоту 103 мм відбувається зсув стрічки, незручно відривати етикетку. Недолік протоколу LPD – завдання відправляються як на звичайний принтер, формат ESC/P0S не надсилається на друк, сенсор не калібрує етикетки.
Далі можна працювати із принтером через php. Є бібліотеки для роботи з cups, мені простіше відправити команду в консоль через exec();
Оскільки ESC/P0S не працює, я вирішив зробити шаблони у PDF через бібліотеку tFPDF