用php socket编程运行打印机

时间:2012-09-16 10:28:06

标签: php sockets printing status

如何仅使用插座程序操作打印机 当我尝试杯子,IPP与php,以及windows的printer_open功能 但我担心的不是依赖Linux,窗口等平台 它应该是平台独立的。

以下是创建套接字到打印机的代码。

代码未优化,但已成功打印文本 唯一的问题是我无法检查打印作业状态。

<?php
$host = "printer_ip";
$port    = 9100; //default listening port for printer
$message = "This text is going to print by printer";
// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0);
if(!$socket){
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);
    socket_close($socket);
   die("Could not create socket: [$errorcode] $errormsg\n");
}
// connect to server
$result = socket_connect($socket, $host, $port);  
if(!$result){
        $errorcode = socket_last_error();
        $errormsg = socket_strerror($errorcode);
    socket_close($socket);
    die("Could not connect to server: [$errorcode] $errormsg\n");
}
// send string to server
$socket_wrt = socket_write($socket, $message, strlen($message));
if(!$socket_wrt){
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);
    socket_close($socket);
    die("Could not send data to server: [$errorcode] $errormsg\n");
}
// get server response
$result = socket_read($socket, 1024);
if(!$result){
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);
    socket_close($socket);
    die("Could not read server response: [$errorcode] $errormsg\n");
}
echo "Reply From Server:".$result;
// close socket
socket_close($socket);
?>

编辑:
这个

$result = socket_read($socket, 1024);

对数据没有任何意义。
由于打印机处于闲置状态,除了我之外没有其他机构正在使用,这就是为什么每次请求打印机打印时 数据很容易没有任何连接拒绝。
当socket_read响应的echo时,连接的数据“来自服务器的回复”也不会打印 任何帮助都会对我有所帮助。

1 个答案:

答案 0 :(得分:1)

如果您可以从JetDirect(端口9100)切换到标准LPR,这种方法可以帮助您。 http://www.phpclasses.org/package/2540-PHP-Abstraction-for-printing-documents.html

最初来自: printing over network from PHP app