Question

J'ai cette imprimante Zebra ZM400 connecté au réseau (192.168.1.50). Et je suis en train de pousser un contenu à cette imprimante directement à partir de PHP.

Ceci est l'idée et je suis juste coincé sans aucune façon de le faire. J'ai essayé le file_put_contents('192.168.1.50', $content) mais sans succès.

apprécieraient si quelqu'un pouvait me plaire aider à trier ce sujet. Merci: -)

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

Solution:

J'ai imprimé en utilisant le protocole LPR. Pas besoin d'installer quoi que ce soit conducteur ou. La classe d'impression LPR pour PHP 5 peut être téléchargé ici:

http://www.phpclasses.org/ package / 2540-PHP-Abstraction-à-impression-documents.html

Était-ce utile?

La solution

Je suis assez sûr que pousser le contenu du texte sur une socket ne fonctionnera pas du tout.

Vous devrez imprimer sur ma conjecture lpr. Installez un serveur d'impression comme CUPS et vous pouvez l'envoyer à l'aide que ...

Autres conseils

J'ai eu un problème similaire où je travaillais avec un programme java pour imprimer sur une imprimante Zebra sans pilote d'impression, et je voulais recréer cela en utilisant PHP. Il me tracasse que je ne pouvais pas trouver la réponse. Grâce à un certain paquet capture avec Wireshark comparant les deux, je sentais qu'il était possible. Je me suis finalement tombé dans la solution (au moins pour moi). Cela affichera une étiquette à une imprimante Zebra en réseau directement à partir d'une page PHP sans avoir besoin d'un pilote.

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

?>

Je vois que vous avez obtenu à l'aide de solutions LPR et FTP, mais je suis presque certain que les imprimantes Zebra acceptent le texte brut ZPL sur le port 9100.

Lettre? ...

Si vous avez accès au port série:

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


  • CETTE FIN DE TRAVAIL

J'ai créé un fichier en langage zèbre et utilisé FTP pour envoyer le fichier à plusieurs reprises dans le passé. Il suffit d'enregistrer le fichier, puis créer une connexion ftp à l'imprimante puis utilisez la commande put envoyer le fichier txt. l'imprimante fera le reste

Il est un exemple de code sur la façon d'envoyer ZPL directement aux imprimantes Zebra à:

https://km.zebra.com/kb/index? page = contenu & channel = SAMPLE_CODE & cat = ZISV_PL_ZPL

Je ne vois pas en PHP, mais il est un exemple de parler directement à l'imprimante via le port 9100 en utilisant VB.

Voici comment imprimer sur une imprimante Zebra connecté au réseau: En supposant que votre imprimante est à IP: 192.168.1.50 et port standard: 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); 
?> 

Cela fonctionne à 100% sur toute imprimante compatible ZPL, non seulement Zebra. Dans cet exemple, nous imprimer une étiquette avec un grand TEST ZEBRA PRINTER dans ce

Jetez un oeil à ces fonctions de l'imprimante PHP

Notez que

  

Ces fonctions ne sont disponibles que sous Windows 9.x, ME, NT4 et 2000.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top