在php中打印到Zebra打印机

时间:2013-02-13 22:04:34

标签: php printing network-printers

寻找使用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);
?>

5 个答案:

答案 0 :(得分:7)

我意识到这个问题有点老了,但我最近不得不执行这个确切的任务,这就是我做的。 主服务器是基于云的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。

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

如果您想使用它们,则需要安装扩展程序:See here for info on the printer extension

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

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

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

此信息以及其他更多内容可以在SO上找到 - 例如:printing over network from PHP app

希望有所帮助。

答案 3 :(得分:0)

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

在所需的IP上安装打印机后:enter image description here

exec('lp -d printer file');

在我的情况下,命令是:

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

其中:打印机 = Epson-Cofetarie

档案 = /home/clara/Desktop/txt.txt

文件需要 Apsolute路径

答案 4 :(得分: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"); ?>

谢谢