Bonjour,
je poste ici bien que ça relève surement plus d'un problème UNIX que d'une question Java, mais peut-être pourra-t-on me conseiller sur un moyen de contourner mon problème ?
Voilà, je cherche tout simplement à lancer une commande UNIX à partir de java pour imprimer des documents.
Mon code Java est donc tout bête :
Là le process doit retourner 0 quand la commande s'est executée avec succès, sinon un autre code d'erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 String cmd = "lp -d " + printer_name + " " + pdf_file_print; //System.out.println("Executing: " + cmd); Process p = Runtime.getRuntime().exec(cmd); int i = p.waitFor(); //System.out.println("Result: " + i); if (i != 0) { // ERROR }
Sauf que... sauf que certains de mes fichiers contiennent le caractère '&', donc cela génère des problèmes sous UNIX lors du lancement de la commande...
Pour passer outre, j'ai tout simplement mis des "" pour échapper ce caractère dans les fichiers que j'imprime.
Cela donne donc :
Le seul problème c'est qu'avec ce code, et bien le process me retourne désormais toujours 1 avec la fonctione waitFor(), et ce, que l'impression se soit bien déroulée ou non (par exemple si je spécifie un mauvais nom d'imprimante)...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 String cmd = "lp -d " + printer_name + " \"" + pdf_file_print + "\""; //System.out.println("Executing: " + cmd); Process p = Runtime.getRuntime().exec(cmd); int i = p.waitFor(); //System.out.println("Result: " + i); if (i != 0) { // ERROR }
Donc je ne peux pas différencier si l'impression a été correcte ou non...
Par contre si je lance directement la commande avec les guillemets d'échappement sous UNIX, le code retour est bien 0 lorsque ça marche ?!
Avez-vous une idée de comment contourner/pourquoi apparaît ce problème ?
Merci.
Partager