在php中打印到Zebra打印机

在php中打印到Zebra打印机,php,printing,network-printers,Php,Printing,Network Printers,正在寻找使用原始端口9100从php网页打印到zebra IP打印机的正确代码。有人知道这是否可能吗?我需要发送一个字符串在ZPL格式的输出直接到ZM400标签打印机。我到处找,最近找到的是: 它似乎非常接近我所需要的,但当我的php页面点击该代码时,它什么也不做。以下是我使用的代码: <?php $handle = printer_open('\\\\192.168.2.206:9100\\'); printer_set_option($handle, PRINT

正在寻找使用原始端口9100从php网页打印到zebra IP打印机的正确代码。有人知道这是否可能吗?我需要发送一个字符串在ZPL格式的输出直接到ZM400标签打印机。我到处找,最近找到的是:

它似乎非常接近我所需要的,但当我的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);
?>
打印机_open()
和相关函数不是标准PHP语言的一部分;它们是扩展的一部分

如果要使用它们,则需要安装扩展:

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

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

exec("lpr -P 'printer' -r 'filename.txt');
此信息以及更多信息可在SO的其他位置找到,例如:


希望有帮助。

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


如果托管web应用程序的服务器和打印机位于同一网络上,则可以打开套接字并发送ZPL。但是,如果您的打印机和web app server位于不同的网络上,则如果没有其他浏览器插件或附加组件,您将无法在该型号的打印机上通过套接字进行打印。一般来说,通过网站访问远程打印机(或任何设备)是一种安全风险。

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

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

在所需的IP上安装打印机后:

exec('lp -d printer file');
就我而言,命令是:

exec('lp -d Epson-Cofetarie /home/clara/Desktop/txt.txt');
其中:打印机=Epson Cofetarie

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


文件需要apsolutepath

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

  • 将ZPL代码放入文件中,例如“barcode.ZPL”
  • 共享您的Zebra打印机,以便在Windows资源管理器中键入
    e、 g“\192.168.1.113[您的打印机名称]”
  • 创建PHP文件,并编写代码:

  • 谢谢你

    明白了,我正在Ubuntu LAMP上运行。我看了一下你发布的第二个链接……在你看来,对于一个简单的php网页,哪一个更好,上面发布的那个,还是LPR打印机类?基本上,我希望有一个打印按钮,可以打印存储变量的值,这是一个计算过的Zebra ZPL字符串。我还没有尝试过LPR类,所以我不能对它进行评论。使用
    exec()
    调用外部
    lpr
    程序应该可以在Linux平台上非常普遍地工作。这将非常理想!对于PHP中的套接字打印,您有推荐的参考吗?这才是我真正需要的。它都是内部的,在同一个网络上。我知道我的Zebra ZM400能够接受插座上的打印。我们目前在一个用于打印报告标签的小型Access应用程序中也做了类似的事情。我只是没有看到任何用PHP实现的好例子。似乎它是可行的…我找到了一个链接,解释了PHP中的编程套接字。您认为这是朝着正确方向迈出的一步吗?:已解决:从“发送数据”部分复制并粘贴代码非常有效!指针@jason.zissman的Thnx“只需要打开打印机的插座。”对。。。我尝试了
    socket\u create
    stream\u socket\u client
    fopen
    pfsockopen
    ,但似乎没有任何效果。这不会在服务器计算机上运行这些命令吗?如果打印机插在客户机上怎么办?服务器机。要在客户机上运行,您需要使用ssh2。在ZDesigner GK420D上测试的代码,连接到Win2016服务器上的9100端口,工作起来很有魅力。我唯一需要改进的是在第一行的某个地方将UTF8编码命令插入到.zpl文件中:带有此代码的Wamp服务器在2017年为我在Zebra ZD420上工作。谢谢你帮我省去了很多挫折!