PHP per Zebra stampante
-
04-10-2019 - |
Domanda
Ho questo Stampante Zebra ZM400 connesso alla rete (192.168.1.50
). E sto cercando di spingere un contenuto a questa stampante direttamente da PHP.
Questa è l'idea e io sono appena bloccato senza alcun modo per fare questo. Ho provato il file_put_contents('192.168.1.50', $content)
ma senza successo.
saremmo grati se qualcuno potrebbe Please help me in questo smistamento. Grazie: -)
............................................... .................................................. ................................
Soluzione:
Ho stampato utilizzando il protocollo LPR. Non è necessario installare driver o nulla. La classe di stampa LPR per PHP 5 può essere scaricato da qui:
http://www.phpclasses.org/ package / 2540-PHP-Abstraction-per-stampa-documents.html
Soluzione
Sono abbastanza sicuro che solo spingendo il contenuto del testo su un socket non funziona affatto.
Sarà necessario stampare in LPR è la mia ipotesi. Installare un server di stampa come CUPS ed è possibile inviarlo utilizzando tale ...
Altri suggerimenti
Ho avuto un problema simile in cui ho usato un programma Java per stampare su una stampante Zebra, senza un driver di stampa, e ha voluto ricreare questo utilizzando PHP. Mi è stato bugging che non riuscivo a trovare la risposta. Attraverso alcune cattura dei pacchetti con Wireshark confronto tra i due, ho sentito che era possibile. Alla fine ho inciampato nella soluzione (almeno per me). Questo stamperà un'etichetta a una stampante Zebra in rete direttamente da una pagina PHP senza bisogno di un driver.
<?php
error_reporting(E_ALL);
/* Get the port for the service. */
$port = "9100";
/* Get the IP address for the target host. */
$host = "172.17.144.89";
/* construct the label */
$mrn = "123456";
$registration_date = "03/13/2013";
$dob = "06/06/1976";
$gender = "M";
$nursing_station = "ED";
$room = "ED01";
$bed = "07";
$lastname = "Lastname";
$firstname = "Firstname";
$visit_id = "12345678";
$label = "q424\nN\n";
$label .= "A10,16,0,3,1,1,N,\"MR# " . $mrn . " ";
$label .= $registration_date . "\"\n";
$label .= "B10,43,0,3,2,4,50,N,\"" . $mrn . "\"\n";
$label .= "A235,63,0,3,1,1,N,\" ";
$label .= $dob . " ";
$label .= $gender . "\"\n";
$label .= "A265,85,0,3,1,1,N,\" ";
$label .= $nursing_station . " ";
$label .= $room . "-";
$label .= $bed . "\"\n";
$label .= "A10,108,0,3,1,1,N,\"";
$label .= $lastname . ",";
$label .= $firstname;
$label .= "\"\n";
$label .= "A10,135,0,3,1,1,N,\" #" . $visit_id . "\"\n";
$label .= "B10,162,0,3,2,4,50,N,\"" . $visit_id . "\"\n";
$label .= "P1\n";
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error ()) . "\n";
} else {
echo "OK.\n";
}
echo "Attempting to connect to '$host' on port '$port'...";
$result = socket_connect($socket, $host, $port);
if ($result === false) {
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror (socket_last_error($socket)) . "\n";
} else {
echo "OK.\n";
}
socket_write($socket, $label, strlen($label));
socket_close($socket);
?>
Vedo che hai ottenuto soluzioni utilizzando LPR e FTP, ma sono quasi certo le stampanti Zebra accetteranno testo ZPL grezzo sulla porta 9100.
Lettera? ...
Se si ha accesso alla porta seriale:
Linux:
$fpi = fopen('/dev/ttyS0', 'r+'); $comando = " N Q70 A40,20,0,2,1,0,N,\"xxx\" B40,40,0,1,2,6,100,N,\"$don\" A40,145,0,3,1,0,N,\"N.- $don \" A40,165,0,2,1,0,N,\"ccc\" A0,198,7,1,1,0,N,\"$fecha\" A19,198,7,1,1,0,N,\"fasdfas\" P "; fwrite($fpi, $comando); fclose($fpi);
- Questo funziona bene
Ho creato un file in linguaggio zebra e utilizzato FTP per inviare il file molte volte in passato. Basta salvare il file e quindi creare una connessione FTP alla stampante quindi utilizzare il comando put per inviare il file .txt. la stampante farà il resto
Non c'è il codice di esempio su come inviare ZPL direttamente alle stampanti Zebra all'indirizzo:
https://km.zebra.com/kb/index? page = contenuti e canale = SAMPLE_CODE & cat = ZISV_PL_ZPL
Non ho visto alcuna in PHP, ma v'è un esempio di parlare direttamente alla stampante tramite la porta 9100 utilizzando VB.
Questo è come stampare su una stampante Zebra collegate alla rete: Supponendo che la stampante è in IP: 192.168.1.50 e la porta di serie: 9100
<?php
if(($conn = fsockopen('192.168.1.50',9100,$errno,$errstr))===false){
echo 'Connection Failed' . $errno . $errstr;
}
$data = '
^XA
^FT50,200
^A0N,200,200^FDTEST^FS
^FT50,500
^A0N,200,200^FDZebra Printer^FS
^XZ';
#send request
$fput = fputs($conn, $data, strlen($data));
#close the connection
fclose($conn);
?>
Questo è il lavoro al 100% su qualsiasi stampante compatibile ZPL, non solo Zebra. In questo esempio il risultato della stampa di un'etichetta con un grande TEST ZEBRA STAMPANTE in esso
Date un'occhiata a queste PHP funzioni della stampante
Si noti che
Queste funzioni sono disponibili solo nei sistemi Windows 9.x, ME, NT4 e il 2000.