使用php直接打印到networking打印机

我无法使用PHP打印networking打印机的页面。
但是,如果它是本地打印机,这是有效的。 我已经安装了php_printer.dll,并在php.ini中启用了以下代码:

//$handle = printer_open("Send To OneNote 2007"); ///This Works $handle = printer_open('\\\\192.168.0.8\\Canon MF4320-4350'); printer_set_option($handle, PRINTER_MODE, "RAW"); printer_write($handle, "TEXT To print"); printer_close($handle); 

它显示错误

警告:printer_write()[function.printer-write]:无法在第16行的E:\ Server \ xampp \ htdocs \ Kiosk \ Admin \ print.php中分配printerjob [5]

如果您使用命令行PHP(CLI),打印到网络打印机将工作。 你的$ addr是正确的方式。

当你将PHP与Apache结合时,问题在于PHP。 在Windows中,您的PHP脚本将在用户系统下运行。 由于安全考虑,所有网络资源对SYSTEM不可见。

要解决此问题,请创建具有管理员权限的新用户(或者至少具有网络资源可见性)。 在Windows中,如果将Apache作为服务运行,请单击Apache服务监视器中的“服务”按钮。 在Apache 2.2下,右键单击属性。 在登录选项卡下,将用户从SYSTEM更改为新创建的用户帐户。 重新启动Apache。 你应该可以运行你的PHP脚本来打印到网络打印机了。

尝试使用“4”或“3”。例如:

 $handle = printer_open("\\\\192.168.0.8\\Canon MF4320-4350"); // or $handle = printer_open('\\\192.168.0.8\Canon MF4320-4350'); 

另外,请尝试使用域名而不是IP(例如computer-namefull.address.example.com )。

只要看看这个字符串,就会觉得它很可能是由反斜杠转义引起的。

调试提示:将您的网络地址设置为变量,而不是直接在printer_open() 然后使用print()或类似的方法显示值。

 <?php $addr = '\\\\192.168.0.8\\Canon MF4320-4350'; print $addr; printer_open($addr); ... ?> 

这可以让你看到你正在使用的字符串的价值,这可能会帮助你看到什么是错误的,更重要的是,帮助你看到如何解决它。

希望有所帮助。