J'essaie d'exécuter une commande LPR pour imprimer un fichier PDF. Le code que j'utilise est en cours d'exécution à partir d'un clic sur un bouton dans une application Windows Forms.C# - Commande LPR pour imprimer des fichiers PDF
code:
var command = @"lpr –S 192.168.1.245 –P DAILY C:\Test.pdf";
ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd", "/c " + command);
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.RedirectStandardError = true;
procStartInfo.CreateNoWindow = true;
// start process
Process proc = new Process();
proc.StartInfo = procStartInfo;
proc.Start();
proc.WaitForExit();
// read process output
string cmdError = proc.StandardError.ReadToEnd();
string cmdOutput = proc.StandardOutput.ReadToEnd();
Le programme est en cours d'exécution en tant que programme x64, il peut trouver dans le programme lpr dossier C: \ Windows \ System32.
Lorsque le code exécute la chaîne d'erreur est vide et la chaîne de sortie contient les éléments suivants (même résultat que si l'exécution de la commande a été lpr /?
)
sortie:
envoie un travail d'impression à une imprimante réseau
Utilisation: [-J travail] lpr -S imprimante -P serveur [classe C] [option -o] [-x] [-d] nom
Options: Nom du serveur -S ou ipaddress de l'hôte fournissant un service lpd -P imprimante Nom de la file d'attente d'impression classe C classification d'emploi pour une utilisation sur la page de garde -J travail Nom du travail à imprimer sur la page de garde option -o Indique le type du fichier (par défaut suppose un fichier texte) Compatibilité avec -x 4.1.x SunOS et avant -d Envoyer un fichier de données premier
Si je copier et coller la commande exactement comme apparaît dans le code et le colle dans une fenêtre de commande, même si c'est la même fenêtre de commande que l'application ouverte, cela fonctionne très bien.
Quelqu'un a-t-il un aperçu de la raison pour laquelle cela se produirait? Merci d'avance!
Remplacer cmd par lpr et mettre le reste des paramètres dans la propriété proc.Parameters – Bestter
j'ai essayé d'appeler directement au lieu de lpr par cmd, comme @Bestter suggère, mais obtenir exactement la même sortie. –