Pregunta

I tienen esta impresora Zebra ZM400 conectado a la red (192.168.1.50). Y yo estoy tratando de empujar un contenido a esta impresora directamente desde PHP.

Esta es la idea y sólo estoy atascado sin ninguna forma de hacerlo. Probé la file_put_contents('192.168.1.50', $content) pero sin éxito.

Le agradecería si alguien podría por favor me ayude en la clasificación de este. Gracias: -)

............................................... .................................................. ................................

Solución:

He impreso utilizando el protocolo LPR. No hay necesidad de instalar el controlador ni nada. La impresión LPR clase para PHP 5 se puede descargar desde aquí:

http://www.phpclasses.org/ paquete / 2540-PHP-Abstracción-para-imprimir-documents.html

¿Fue útil?

Solución

Estoy bastante seguro simplemente empujando el contenido del texto sobre un socket no funcionará en absoluto.

Usted tendrá que imprimir a través de LPR es mi conjetura. Instalar un servidor de impresión, como tazas y se puede enviar usando que ...

Otros consejos

Yo tenía un problema similar donde yo estaba usando un programa Java para imprimir en una impresora Zebra y sin un controlador de impresión, y quería recrear mediante PHP. Me estaba molestando que no podía encontrar la respuesta. A través de algunos paquetes con Wireshark captura de la comparación de los dos, me sentí que era posible. Finalmente me encontré en la solución (al menos para mí). Esto imprimirá una etiqueta a una impresora en red Zebra directamente desde una página PHP sin la necesidad de un conductor.

<?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);

?>

Veo que has conseguido soluciones utilizando LPR y FTP, pero estoy casi seguro de las impresoras Zebra ZPL aceptarán texto en bruto en el puerto 9100.

Más tarde? ...

Si usted tiene acceso al puerto serie:

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);


  • este buen trabajo

He creado un archivo en lenguaje de cebra y se utiliza FTP para enviar el archivo muchas veces en el pasado. Sólo tiene que guardar el archivo y luego crear una conexión FTP a la impresora a continuación, utilizar el comando put para enviar el archivo .txt. la impresora hará el resto

No hay código de ejemplo sobre cómo enviar ZPL directamente a las impresoras Zebra en:

https://km.zebra.com/kb/index? page = contenido y canal = SAMPLE_CODE & cat = ZISV_PL_ZPL

No he visto ninguna en PHP, pero no es un ejemplo de hablar directamente a la impresora a través del puerto 9100 usando VB.

Se trata de cómo imprimir en una impresora Zebra conectada a la red: Suponiendo que la impresora está en IP: 192.168.1.50 y puerto estándar: 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); 
?> 

Esto está trabajando 100% en cualquier impresora compatible ZPL, no sólo cebra. En este ejemplo, imprimir una etiqueta con un gran TEST ZEBRA IMPRESORA en ella

Tome un vistazo a estas funciones de la impresora PHP

Tenga en cuenta que

Estas funciones sólo están disponibles bajo Windows 9.x, ME, NT4 y 2000.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top