3

RAWポート9100を使用してphpWebページからzebraIPプリンターに印刷するための適切なコードを探しています。これが可能かどうか誰かが知っていますか?ZPL形式の出力の文字列をZM400ラベルプリンターに直接送信する必要があります。私は高低を検索しました、私が見つけた最も近いものはこれです:phpを使用してネットワークプリンターに直接印刷します

必要なものに非常に近いように見えますが、私のphpページがそのコードにヒットすると、何も実行されません。これが私が使用したコードです:

<?php 
     $handle = printer_open('\\\\192.168.2.206:9100\\'); 
     printer_set_option($handle, PRINTER_MODE, "RAW");
     printer_write($handle, "TEXT To print"); 
     printer_close($handle);
?>
4

5 に答える 5

10

この質問は少し古いと思いますが、最近この正確なタスクを実行する必要がありました。これが私がどのように実行したかです。メインサーバーは、ローカルネットワーク上にないクラウドベースのPHPサーバーです。ローカルネットワークには、単にWAMPとこのスクリプトを実行している別のマシンがあり、Zebraプリンター自体もIP192.168.1.201のローカルネットワーク上にあります。

<?php
/*
 * File Allows printing from web interface, simply connects to the Zebra Printer and then pumps data
 * into it which gets printed out.
 */
$print_data = $_POST['zpl_data'];

// Open a telnet connection to the printer, then push all the data into it.
try
{
    $fp=pfsockopen("192.168.1.201",9100);
    fputs($fp,$print_data);
    fclose($fp);

    echo 'Successfully Printed';
}
catch (Exception $e) 
{
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

次に、クラウドサーバーによって生成されたWebページに、ローカルネットワーク上のサーバーにAjax POSTを実行し、印刷するzpl_dataに投稿するコードがあります。

2017年を編集

PrintNode(https://www.printnode.com/)を実行するために物事を移動しました。これまでのところ非常に優れていることがわかり、独自のプロキシを使用せずにあらゆる種類のドキュメントを印刷できます。また、独自の製品のように見えるホワイトラベルのインストーラーも提供しています。私はPrintNodeと提携していません。

于 2013-05-22T10:20:19.600 に答える
3

ZPLをプリンタに送信する場合は、必ずしも専用の印刷ライブラリは必要ありません。そのプリンタへのソケットを開いて、ZPLを直接送信する必要があります。これは、プリンター固有の質問ではなく、より一般的なPHPソケット通信の質問です。

Webアプリをホストしているサーバーとプリンターが同じネットワーク上にある場合は、ソケットを開いてZPLを送信できます。ただし、プリンターとWebアプリサーバーが異なるネットワーク上にある場合は、追加のブラウザープラグインまたはアドオンがないと、そのモデルのプリンターでソケットを介して印刷することはできません。一般的に、Webサイトを介してリモートプリンター(または任意のデバイス)にアクセスすることは、セキュリティ上のリスクです。

于 2013-02-14T14:59:46.070 に答える
2

およびprinter_open()関連する関数は、標準のPHP言語の一部ではありません。それらは拡張機能の一部です。

それらを使用する場合は、拡張機能をインストールする必要があります。プリンタ拡張機能については、こちらを参照してください

ただし、この拡張機能は、Windowsで実行されているPHPでのみ使用できることに注意してください。

サーバーがWindowsでない場合は、外部プログラムを使用してデータをプリンターに送信する必要があります。例は次のようになります。

exec("lpr -P 'printer' -r 'filename.txt');

この情報、およびその他の情報は、SOの他の場所で見つけることができます-例:ここ:PHPアプリからネットワーク経由で印刷

お役に立てば幸いです。

于 2013-02-13T22:29:58.020 に答える
0

何時間も検索した後、私は解決策を手に入れました:

必要なIPにプリンターをインストールした後:ここに画像の説明を入力してください

exec('lp -d printer file');

私の場合、コマンドは次のとおりです。

exec('lp -d Epson-Cofetarie /home/clara/Desktop/txt.txt');

ここで:printer = Epson-Cofetarie

ファイル=/home/clara/Desktop/txt.txt

ファイルには絶対パスが必要です

于 2015-05-29T09:45:19.913 に答える
0

この単純なコードで問題が解決することを願っています。

  1. ZPLコードを「barcode.zpl」などのファイルに入れます

  2. Zebraプリンタを共有して、Windowsエクスプローラで「\ 192.168.1.113[YOURPRINTERNAME]」と入力してアクセスできるようにします。
  3. PHPファイルを作成し、コードを記述します。

<?php $file="barcode.zpl"; copy($file, "//192.168.1.113/ZDesigner GK420t"); ?>

ありがとうございました

于 2019-04-01T22:07:48.527 に答える