用php socket编程操作打印机
如何只用socket程序操作打印机.
当我尝试杯子、带有 php 的 IPP 和 windows 中的 printer_open 函数时
但我担心的是不依赖于像 Linux、window 等平台
它应该是平台独立的.
How can I operate printer with socket program only.
As I tried cups, IPP with php, and printer_open function in windows
but my concerns is not to depend on platform like Linux, window etc.
it should be platform independent.
下面是为打印机创建套接字的代码.
Below is the code which is creating socket to printer.
代码未优化,但已成功打印文本.
唯一的问题是我无法检查打印作业状态.
Code is not optimized but it is successfully printing the text.
Only problem is that I am unable to check the printing job status.
<?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 响应回显时,连接数据Reply from server"也不打印.
任何帮助都会对我有很大帮助.
is not giving any kind to data.
As printer is idle and no body is using except me, that's why on every request printer print
the data easily without any connection refuse.
while echo of socket_read response, the concatenated data "Reply from server" also does not print.
Any help will help me lot.
如果您可以从 JetDirect(端口 9100)切换到标准 LPR,这种方法可以帮助您.http://www.phpclasses.org/package/2540-PHP-Abstraction-for-printing-documents.html
If you can switch from JetDirect (port 9100) to standard LPR, this approach can help you. http://www.phpclasses.org/package/2540-PHP-Abstraction-for-printing-documents.html
最初来自:从 PHP 应用程序通过网络打印