3 votes

Modification des paramètres de l'imprimante via la ligne de commande

J'ai une imprimante d'étiquettes Brother PT-9800PCN qui utilise des rubans de 6 mm à 36 mm. Existe-t-il un moyen de modifier la taille du papier par défaut (largeur, longueur, orientation) via la ligne de commande ? Je génère des étiquettes 18x113mm et 24x50mm en PDF en utilisant fpdf et lorsque j'envoie les PDF à l'imprimante via php, l'impression se fait uniquement sur le format de papier défini par défaut. J'ai essayé les commandes avec Adobe, Foxit et Sumatra. J'ai également essayé la ligne de commande pdfprint de Verypdf qui a l'option de définir la taille du papier avec le même résultat. Je pensais que si je changeais la taille du papier par défaut via la ligne de commande et que j'envoyais ensuite le travail d'impression, cela devrait fonctionner.

3voto

xlucian Points 163

Après de longs coups de tête, j'ai réussi à le faire fonctionner. Voici ce que j'ai fait

->Pour chaque format de papier requis, allez dans les préférences de l'imprimante et définissez la taille de la page, la largeur, la longueur et tout autre paramètre requis.

->dans cmd exécuté après que tous les paramètres pour chaque taille de page sont faits

rundll32 printui.dll PrintUIEntry /Ss /n "\\network\printer" /a "C:\prefered_location\temp_settings.dat" u

->Pour chaque format de page dont j'avais besoin, j'ai enregistré les paramètres comme suit 18x113m.dat y 24x45mm.dat

Voici le code que j'utilise en php pour envoyer mes pdfs à l'imprimante

<?php
//save current printer settings to a temp file
echo system("rundll32 printui.dll PrintUIEntry /Ss /n \"\\\\network\\printer\" /a \"C:\\location\\temp_settings.dat\" u");
//load the required page settings
echo system("rundll32 printui.dll PrintUIEntry /Sr /n \"\\\\network\\printer\" /a \"C:\\location\\24x45mm.dat\" u");
//send pdf to printer. I've used in this case pdfprint.exe. Foxit can be used as well. Adobe didn't work. Sumatra still sends the pdf only to a 36mm tape
echo system("C:\\location\\pdfprint_cmd\\pdfprint.exe -printer \"\\\\network\\printer\" C:\\location\\mypdf.pdf");
//restore temp settings
echo system("rundll32 printui.dll PrintUIEntry /Sr /n \"\\\\network\\printer\" /a \"C:\\location\\temp_settings.dat\" u");
//delete temp settings file
echo system("del C:\\location\\temp_settings.dat");
?>

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X