我有一个问题一直困扰着我至少3周。我需要使用php将一些数据打印到打印机。我将数据保存到$print_output
变量中,我知道我的数据很好,因为当我通过电子邮件发送它时,它会显示应该显示的所有内容。
好吧,我尝试编写这段代码,我认为我可以测试它,但不确定它是否会起作用。
$handle = printer_open("\\\\192.168.1.33_4\\Printer_Office");
printer_set_option($handle, PRINTER_MODE, "raw");
printer_write($handle,$print_output);
printer_close($handle);
好吧,事实证明我没有安装php_printer.dll扩展,我被告知不要重新编译php来添加它。
我想要做的只是将$print_output
中存储的数据打印到同一网络上的打印机。我不想使用javascript函数window.print()
,因为我无法弹出打印对话框。
有没有人有任何可以指引我朝正确方向发展的信息?或者另一种简单地将少量数据直接打印到打印机而不使用php的printer_open
功能的方法?
答案 0 :(得分:4)
对于遇到同样问题的人,我发现我可以使用套接字编程简单地按下如下数据。下面的IP地址是我的打印机的IP地址。如果您愿意,可以远程登录到打印机以确保连接正常工作。
if(isset($_POST['order'])){
$print_output= $_POST['order'];
}
try
{
$fp=pfsockopen("192.168.1.33", 9100);
fputs($fp, $print_output);
fclose($fp);
echo 'Successfully Printed';
}
catch (Exception $e)
{
echo 'Caught exception: ', $e->getMessage(), "\n";
}
答案 1 :(得分:1)
您可以在Windows上使用PHP打印几个选项:
因为PHP 5.2.0已经过时,所以很难找到编译扩展。 您可能会尝试删除5.2.8的php_printer扩展名:
http://downloads.php.net/pierre/php_printer-cvs-20081215-5.2.8-nts-Win32.zip
添加到您的php.ini:
extension=php_printer.dll
最近的版本可能会在皮埃尔的下载网站上找到:http://downloads.php.net/pierre/
另一种解决方案是使用windows命令“print”。
请参阅http://technet.microsoft.com/en-us/library/cc772773%28v=ws.10%29.aspx
exec("print /d:\\192.168.1.33_4\\Printer_Office c:\accounting\report.txt);
$fp=pfsockopen("192.168.1.201",9100);
fputs($fp,$print_data);
fclose($fp);