2

ソケットプログラムのみでプリンターを操作するにはどうすればよいですか。
cups、php を使用した IPP、windows で printer_open 関数を試し
たので、私の懸念は、Linux、window などのプラットフォームに依存しない
ことです。プラットフォームに依存しない必要があります。

以下は、プリンターへのソケットを作成するコードです。

コードは最適化されていませんが、テキストは正常に出力されています。
唯一の問題は、印刷ジョブのステータスを確認できないことです。

<?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 応答のエコー中に、連結されたデータ「サーバーからの応答」も印刷されません。
どんな助けでも私を大いに助けます。

4

1 に答える 1

1

JetDirect (ポート 9100) から標準の LPR に切り替えることができる場合は、このアプローチが役に立ちます。 http://www.phpclasses.org/package/2540-PHP-Abstraction-for-printing-documents.html

元: PHP アプリからネットワーク経由で印刷

于 2012-09-16T11:14:40.637 に答える