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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top