Récemment, je souhaite utiliser php pour me connecter à l'imprimante afin d'imprimer du contenu. J'ai effectué quelques étapes mais rien ne s'est produit. Aidez-moi à trouver la raison :
J'utilise la version php7.25+Apache. dernière version. Après avoir téléchargé le php_printer.dll.
, décompressez le fichier et placez-le dans le répertoire de la version php7.25 : E:phpStudyphpphp-7.2.5ext
Pour modifier php.ini, j'ai ajouté le meilleur. phrase : extension= php_printer.dll. Enregistrez ensuite et redémarrez le serveur.
Utilisation en PHP :
$handle = Printer_open("ZDesigner 105SL 203DPI");
Signaler directement une erreur : Erreur fatale : Erreur non détectée : Appel à la fonction non définie Printer_open() dans E:phpStudyWWWtest1.php:3 Trace de pile : #0 {main} lancé dans E:phpStudyWWWtest1.php à la ligne 3
1. Exigences
Utilisez le contrôle PHP pour vous connecter à l'imprimante
Impression continue en temps réel sur site des données dynamiques
2 Configuration
L'environnement d'exploitation php est correctement installé (Apache|Nginx + PHP)
. Téléchargez l'extension php_printer.dll correspondant à la version php
Ajoutez le fichier d'extension au répertoire ext
Modifiez php.ini et ajoutez extension=php_printer.dll;
3. Utilisez
1.
Ce qui précède est la structure du code de base. Si Printer_start_doc n'est pas spécifié, Printer_start_page, l'imprimante n'imprimera pas. 2. Introduction aux méthodes d'impression spécifiques de texte et de graphiques Paramètres initiaux de l'imprimante : printer_set_option Vous pouvez définir le mode d'impression, le titre du document, le nombre de copies à imprimer, le format du papier, etc. Veuillez vous référer au document Printer_set_option. Créez une police : $font = Printer_create_font('simsun', hauteur de la police, largeur de la police, épaisseur de la police, si elle est en italique, si elle doit être soulignée, si elle doit être barrée, direction voir les détails) ; Avant d'imprimer du texte, vous devez d'abord sélectionner la police Printer_select_font($handle, $font); Utilisez Printer_draw_text($handle, 'text to be print', commençant par x, commençant par y); Piège rencontré.
Utiliser un langage de script faiblement typé côté serveur pour gérer le matériel est à l'origine un peu une corvée, et il y a beaucoup de difficultés dans le processus. Le serveur que j'ai commencé à configurer sous Windows était Apache. Lors de l'impression, j'étais toujours incapable d'imprimer au format normal et j'imprimais toujours trois pages d'affilée. Plus tard, lorsque j'ai utilisé la commande php directement sur la ligne de commande pour exécuter le script, j'ai pu imprimer normalement, en fin de compte, la raison en était que l'autorisation d'exécuter le service Apache avait été attribuée à un utilisateur normal et à un super administrateur, ou. vous pouvez vous connecter en tant que super administrateur. Polices, certaines imprimantes sont livrées avec le logiciel client correspondant. Mais utiliser PHP pour contrôler le logiciel d'impression est inutile, donc créer des polices est un piège. Pour le nom de la police, recherchez d'abord le texte correspondant dans le dossier des polices Windows, puis cliquez avec le bouton droit sur les propriétés pour afficher le nom, qui doit être. rempli Printer_create_font le premier paramètre. Cependant : Certains types de polices chinoises ne peuvent pas s'afficher correctement. Il n'existe pas de solution pour l'instant. Il se peut que l'imprimante dispose d'une mémoire limitée et ne puisse pas contenir tous les fichiers de polices. Pour créer une police, vous devez spécifier la largeur et la hauteur, mais je ne sais pas quelle est l'unité de largeur et de hauteur, donc je ne peux l'essayer que moi-même De même, spécifier la position du problème nécessite le Valeur de coordonnée de position x y. La méthode est Printer_draw_line pour tracer une ligne diagonale, et vous pouvez tracer une ligne diagonale en fonction du calcul du rapport élevé. Les caractères chinois tronqués sont imprimés. Raison : Les données soumises à l'aide du formulaire sont codées en UTF-8 et l'imprimante n'est pas nécessairement codée en UTF-8. Vous devez consulter le manuel pour convertir le format de codage.L'impression continue de dizaines ou de centaines de fenêtres m'a directement tué, écran bleu Smecta. En fin de compte, c'est un problème avec le processus Apache. Un processus sera créé à chaque impression. Cependant, le recyclage du processus Apache ne semble pas opportun. En fin de compte, le système mourra directement en essayant de modifier cette configuration. car le nombre maximum de connexions n’a aucun effet. Solution finale : remplacez le serveur Nginx et le problème est résolu.
PHP exploite l'imprimante. Ne serait-il pas préférable d'utiliser directement JS
?