PHP直接打印到打印机(本地/网络)(卡在打印后台处理程序中)

时间:2014-04-16 06:47:54

标签: php windows apache printing permissions

好的,我使用的是PHP 5.4,我想直接从网络服务器打印到打印机。我正在使用PHP模块php_printer.dll。

该功能运作良好。我在打印机队列中看到数据已进入,但挂起状态“发送到打印机”

这是代码

        $printerList = printer_list(PRINTER_ENUM_LOCAL);
        var_dump($printerList);
        $printerName = $printerList[0]['NAME'];
        echo $printerName;
        $printer = $printerName;
        if($ph = printer_open($printer)) {
           $content = "hello";

           // Set print mode to RAW and send PDF to printer
           printer_set_option($ph, PRINTER_MODE, "RAW");
           printer_write($ph, $content);
           printer_close($ph);
        }
        else "Couldn't connect...";

Apache中的屏幕或日志文件没有错误,所以我假设P​​HP代码运行良好。我看到数据是在Windows打印假脱机程序中。问题是它卡在那里,它无法从打印机产生输出。

我认为问题是因为Windows权限问题(我使用的是Windows 8,在Windows 7或XP中测试也无法正常工作)。我有4台测试打印机:1。HP Laser Jet 401,2。PDF打印机,3。Windows传真,4。XPS文档编写器。

我的电脑无法打印到所有4台打印机。我在其他计算机上测试,它可以打印到1号打印机,但另一台不能打印。

状态仅为“发送至打印机”。如果是打印,则状态为“假脱机”

我在假脱机打印机中附加了队列数据的屏幕截图。 Sent to printer status

这是成功假脱机程序的屏幕截图(我使用print normal,ctrl + p和print进行测试)Spooling

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

我得到了答案,问题是你必须在开头添加这个

printer_start_doc($ph, "Start Doc");

和之前的printer_close

printer_end_doc($ph);

没有开始和结束文档无法打印。

我只是想知道为什么我仍然可以在其他计算机上打印到1号打印机,但不使用该开始和结束doc PHP命令。