設定範例 CentOS 即使沒有圖形介面,它也可以在任何作業系統上進行類似的配置。 Linux.
我正在解決一個具體問題,我需要用 PHP 模板列印任意文字的標籤。由於活動現場無法保證穩定的網絡,而且大多數自動化任務都與網站相關,所以我們決定使用 VMware 虛擬機器。
XPrinter 也適用於標籤列印任務,在 Windows 下安裝起來更容易。我選擇了 XP-460B 型號,標籤寬度最大可達 108 毫米。

Поскольку настройкой Linux и подключением устройств к нему занимаюсь крайне редко, искал готовые мануалы по настройке, понял что самый простой способ подключить принтер через cups. У меня не получилось подключить принтер по USB, не помогли никакие манипуляции по советам в мануалах, только сломал виртуальную машину несколько раз.
- Скачиваем драйвера с сайта производителя xprintertech.com, они идут одним архивом для Windows,Mac 和 Linux
網站上發布了一系列設備的驅動程序,就我的情況而言 4吋標籤印表機驅動程式。原來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>將連接埠 631 新增至防火牆(或 iptables):
firewall-cmd --zone=public --add-port=631/tcp --permanent firewall-cmd --reload - 在我的例子中,使用虛擬機的 IP 在瀏覽器中開啟鏈接 :631/管理員
新增印表機(需要輸入root和密碼)

- 我設法配置了 2 個選項,通過 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:password@192.168.1.52/Xprinter_XP-460B 的一行。其中,user 是 Windows 中的用戶,該用戶必須有密碼,空密碼授權無效。
- Для подключения по протоколу LPD, нужно включить службу в windows (Включение или отключение компонентов Windows), перезагрузить компьютер.
當一切正常且印表機列印測試頁時,可以透過控制台傳送作業:
lpr -P Xprinter_XP-460B -o media=Custom.100x102mm test.txt本例中,標籤尺寸為 100x100 毫米,實驗中選定了 2 毫米。標籤間距為 3 毫米,但如果將高度設定為 103 毫米,標籤帶會偏移,撕下標籤會很不方便。 LPD 協定的缺點是,任務會像普通印表機一樣傳送,不會傳送 ESC/P0S 格式進行列印,感測器也不會校準標籤。
然後你就可以透過 php 操作印表機了。有一些庫可以用來操作 cups,對我來說,透過 exec() 向控制台發送命令更方便;
由於 ESC/P0S 不起作用,我決定透過 tFPDF 庫製作 pdf 模板
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');

完成了。我花了兩個週末來設定它,希望這對大家有用。
來源: www.habr.com






