4

我无法使用 php 将页面打印到网络打印机。
但是,如果它是本地打印机,则此方法有效。我已经安装了 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 中分配打印机作业 [5]

4

3 回答 3

7

如果您使用命令行 PHP (CLI),则可以打印到网络打印机。顺便说一句,您的 $addr 是正确的。

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

要解决此问题,请创建一个具有管理员权限(或至少具有网络资源可见性)的新用户。在 Windows 中,如果您将 Apache 作为服务运行,请单击 Apache Service Monitor 中的 SERVICE 按钮。在 Apache 2.2 下,右键单击属性。在 LOGIN 选项卡下,将用户从 SYSTEM 更改为您新创建的用户帐户。重启阿帕奇。您现在应该能够运行 PHP 脚本以打印到网络打印机。

于 2012-03-12T14:32:53.900 回答
1

尝试使用 "s 与 4\ 或 's 与 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)。

于 2011-02-10T11:20:24.903 回答
0

光看那个字符串,感觉很可能是反斜杠转义出错导致的。

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

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

这将允许您查看正在使用的字符串的值,这可能会帮助您了解问题所在,更重要的是,帮助您了解如何修复它。

希望有帮助。

于 2011-02-10T12:09:20.420 回答