在沒有圖形 shell 的 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 文件,是一個帶有 tar 存檔的 bash 腳本,可以自行解壓並將驅動程序複製到 cups 中。 就我而言,解壓需要 bzip2(對於 80 mm 系列,使用不同的存檔器)
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在瀏覽器中打開鏈接,在我的例子中
192.168.1.5 :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:[電子郵件保護]/Xprinter_XP-460B。 其中,user是windows下的用戶,該用戶必須有密碼,空密碼授權不通過。
- 要通過LPD協議連接,您需要在Windows中啟用該服務(打開或關閉Windows功能),重新啟動計算機。
當一切順利並且打印機打印了測試頁時,可以通過控制台發送作業:
lpr -P Xprinter_XP-460B -o media=Custom.100x102mm test.txt
本例中,標籤尺寸為100x100mm,實驗選擇2mm。 標籤之間的距離為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