3

寻找使用 RAW 端口 9100 从 php 网页打印到斑马 IP 打印机的正确代码。有谁知道这是否可能?我需要将 ZPL 格式输出的字符串直接发送到 ZM400 标签打印机。我搜索了高低,我找到的最接近的是:Print directly to network printer using php

它似乎非常接近我的需要,但是当我的 php 页面点击该代码时,它什么也不做。这是我使用的代码:

<?php 
     $handle = printer_open('\\\\192.168.2.206:9100\\'); 
     printer_set_option($handle, PRINTER_MODE, "RAW");
     printer_write($handle, "TEXT To print"); 
     printer_close($handle);
?>
4

5 回答 5

10

我意识到这个问题有点老了,但我最近不得不执行这个确切的任务,这就是我的做法。主服务器是不在本地网络上的基于云的 PHP 服务器。在本地网络上,我们有另一台机器正在运行 WAMP 和此脚本,Zebra 打印机本身也在本地网络的 IP 192.168.1.201 上:

<?php
/*
 * File Allows printing from web interface, simply connects to the Zebra Printer and then pumps data
 * into it which gets printed out.
 */
$print_data = $_POST['zpl_data'];

// Open a telnet connection to the printer, then push all the data into it.
try
{
    $fp=pfsockopen("192.168.1.201",9100);
    fputs($fp,$print_data);
    fclose($fp);

    echo 'Successfully Printed';
}
catch (Exception $e) 
{
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

然后,在云服务器生成的网页上,我们有一些代码简单地向本地网络上的服务器执行 Ajax POST,张贴在要打印的 zpl_data 中。

编辑 2017

我们现在已经将事情转移到通过 PrintNode ( https://www.printnode.com/ ) 运行。到目前为止,我们发现它非常好,它允许我们打印各种文档而无需使用我们自己的代理,并且还提供了一个白标安装程序,因此它看起来就像我们自己的产品。我不隶属于 PrintNode。

于 2013-05-22T10:20:19.600 回答
3

如果您希望将 ZPL 发送到打印机,则不一定需要专用的打印库。您只需要为该打印机打开一个套接字并直接发送您的 ZPL。这更像是一个一般的 PHP 套接字通信问题,而不是特定于打印机的问题。

如果托管您的 Web 应用程序的服务器和打印机位于同一网络上,那么您将能够打开套接字并发送 ZPL。但是,如果您的打印机和 Web 应用程序服务器位于不同的网络上,您将无法在该型号打印机上通过套接字进行打印,而无需额外的浏览器插件或附加组件。一般来说,通过网站访问远程打印机(或任何设备)存在安全风险。

于 2013-02-14T14:59:46.070 回答
2

printer_open()和相关函数不是标准 PHP 语言的一部分;它们是扩展的一部分。

如果您想使用它们,您需要安装扩展程序:有关打印机扩展程序的信息,请参见此处

但是,请注意,此扩展仅适用于在 Windows 上运行的 PHP。

如果您的服务器不是 Windows,您将需要使用外部程序将数据发送到打印机。一个示例可能如下所示:

exec("lpr -P 'printer' -r 'filename.txt');

此信息以及更多信息可以在 SO 上的其他地方找到——例如这里:从 PHP 应用程序通过网络打印

希望有帮助。

于 2013-02-13T22:29:58.020 回答
0

经过数小时的搜索,我得到了解决方案:

在所需 IP 上安装打印机后:在此处输入图像描述

exec('lp -d printer file');

就我而言,命令是:

exec('lp -d Epson-Cofetarie /home/clara/Desktop/txt.txt');

其中:打印机= Epson-Cofetarie

文件= /home/clara/Desktop/txt.txt

文件需要绝对路径

于 2015-05-29T09:45:19.913 回答
0

我希望,这个简单的代码可以解决问题,

  1. 将您的 ZPL 代码放入文件中,例如“barcode.zpl”
  2. 共享您的 Zebra 打印机,以便可以在 Windows 资源管理器中通过键入
    “\192.168.1.113[您的打印机名称]”来访问它;
  3. 创建 PHP 文件,并编写代码:

<?php $file="barcode.zpl"; copy($file, "//192.168.1.113/ZDesigner GK420t"); ?>

谢谢你

于 2019-04-01T22:07:48.527 回答