PHP Zebra Drucker
-
04-10-2019 - |
Frage
ich diesen Zebra ZM400 Drucker an das Netzwerk angeschlossen haben (192.168.1.50
). Und ich versuche, einen Inhalt zu diesem Drucker direkt von PHP zu drücken.
Das ist die Idee, und ich bin einfach ohne jede Art und Weise stecken, dies zu tun. Ich versuchte, die file_put_contents('192.168.1.50', $content)
aber ohne Erfolg.
würde schätzen, wenn jemand mir helfen, dies in Aussortieren bitte könnte. Danke: -)
............................................... .................................................. ................................
Lösung:
Ich druckte das LPR-Protokoll. Nr.notwendigkeitsfahrer oder irgendetwas zu installieren. Die LPR-Druck-Klasse für PHP 5 kann hier heruntergeladen werden:
http://www.phpclasses.org/ Paket / 2540-PHP-Abstraction-for-Druck-documents.html
Lösung
Ich bin ziemlich sicher, dass nur Textinhalt über eine Buchse schieben wird nicht funktionieren überhaupt nicht.
Sie müssen lpr zum Drucken über meine Vermutung ist. Installieren Sie einen Druckserver wie CUPS und Sie können es, dass ...
mit schickenAndere Tipps
Ich hatte ein ähnliches Problem, bei dem ich ein Java-Programm wurde mit ohne Druckertreiber auf einen Zebra-Drucker drucken, und wollte diese mit PHP erstellen. Es wurde nervt mich, dass ich die Antwort nicht finden konnte. Durch einige Paketerfassung mit Wireshark Vergleich der beiden, fühlte ich, dass es möglich war. Ich stolperte schließlich in die Lösung (zumindest für mich). Dies wird ein Etikett zu einem vernetzten Zebra Drucker direkt von einer PHP-Seite ohne die Notwendigkeit für einen Fahrer drucken.
<?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);
?>
Ich sehe, Sie haben Lösungen mit LPR und FTP bekommen, aber ich bin fast sicher, dass der Zebra-Drucker rohen ZPL Text auf Port 9100 akzeptieren.
Später? ...
Wenn Sie den Zugriff auf die serielle Schnittstelle haben:
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);
- Diese Arbeit FINE
Ich habe eine Datei in Zebra Sprache erstellt und verwendet FTP die Datei viele Male in der Vergangenheit zu senden. nur speichern Sie die Datei und dann eine FTP-Verbindung an den Drucker erstellen dann verwenden Sie den Befehl put die TXT-Datei zu senden. der Drucker den Rest erledigen
Es gibt Beispielcode, wie ZPL senden direkt an Zebra-Drucker an:
https://km.zebra.com/kb/index? page = Inhalt & channel = SAMPLE_CODE & cat = ZISV_PL_ZPL
Ich habe jede nicht in PHP, aber es ist ein Beispiel über den Port 9100 mit VB direkt an den Drucker zu sprechen.
Dies ist, wie auf einem Zebra-Drucker mit dem Netzwerk verbunden drucken: Unter der Annahme, der Drucker ist an IP: 192.168.1.50 und Standard-Port: 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);
?>
Dies funktioniert 100% auf jedem ZPL-kompatiblen Drucker, nicht nur Zebra. In diesem Beispiel drucken wir ein Etikett mit einem großen TEST Zebra-Drucker in it
Werfen Sie einen Blick auf diese PHP Druckerfunktionen
Beachten Sie, dass
Diese Funktionen sind nur unter Windows 9.x verfügbar, ME, NT4 und 2000.