在 VMware Workstation 中的 Linux 上设置 XPrinter 标签打印机

在没有图形 shell 的 CentOS 上进行设置的示例;以此类推,您可以在任何 Linux 操作系统上进行设置。

我正在解决一个特定问题:我需要使用 PHP 模板打印带有任意文本的标签。 由于活动中无法依靠稳定的互联网连接,并且大多数自动化任务与网站重叠,因此我们决定使用 VMware 上的虚拟机。

XPrinter 也适合标记任务;在 Windows 下安装要容易得多。 我选择了 XP-460B 型号,其标签宽度可达 108 毫米。

在 VMware Workstation 中的 Linux 上设置 XPrinter 标签打印机

由于我很少设置 Linux 并将设备连接到它,因此我寻找现成的设置手册,并意识到连接打印机的最简单方法是通过 cups。 我无法通过 USB 连接打印机;按照手册中的建议进行的所有操作都没有帮助,我只是使虚拟机崩溃了几次。

  • 从制造商网站 xprintertech.com 下载驱动程序,它们位于一个适用于 Windows、Mac 和 Linux 的存档中

    就我而言,网站上发布了一系列设备的驱动程序 4 英寸标签打印机驱动程序。 事实证明,XP-460B 已经停产了;我根据类似型号 XP-470B 的痕迹找出了它属于哪个系列。

  • 在Windows中安装打印机,启用共享

    在 VMware Workstation 中的 Linux 上设置 XPrinter 标签打印机

  • 对于 Linux,存档包含 1 个文件 4BARCODE。 这是一个“二合一”文件,一个带有 tar 存档的 bash 脚本,可以自行解压并将驱动程序复制到 cups。 就我而言,解压需要 bzip2(对于 1 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和密码)

    在 VMware Workstation 中的 Linux 上设置 XPrinter 标签打印机

  • 我设法配置了 2 个选项,通过 LPD 协议和通过 samba。
    1. 要通过LPD协议进行连接,您需要在Windows中启用该服务(打开或关闭Windows组件)并重新启动计算机。

      在 VMware Workstation 中的 Linux 上设置 XPrinter 标签打印机
      在cups设置中输入lpd://192.168.1.52/Xprinter_XP-460B,其中192.168.1.52是安装打印机的计算机的IP,Xprinter_XP-460B是windows共享设置中打印机的名称

      在 VMware Workstation 中的 Linux 上设置 XPrinter 标签打印机
      选择驱动程序 4BARCODE => 4B-3064TA

      在 VMware Workstation 中的 Linux 上设置 XPrinter 标签打印机
      我们不会在参数中选择或保存任何内容! 我尝试调整标签尺寸,但打印机由于某种原因无法工作。 可以在打印作业中指定标签尺寸。

      在 VMware Workstation 中的 Linux 上设置 XPrinter 标签打印机
      我们尝试打印测试页 - 完成!

    2. 第二个选择。 你需要安装samba,启动,重启cups,然后cups中会出现一个新的连接点,在设置中输入一行如smb://user:[电子邮件保护]/Xprinter_XP-460B。 其中,user是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');

在 VMware Workstation 中的 Linux 上设置 XPrinter 标签打印机
准备好。 我花了两个周末的时间来设置它,我希望这对某人有用。

来源: habr.com

添加评论