Lancer une impression à partir du serveur
Bonjour,
Je suis à la recherche d'une solution pour lancer l'impression sur une imprimante (installée sur le serveur) de fichiers PDF.
Voici le contexte :
Dans l'interface client se touve une liste de tâches d'impressions à effectuer. L'utilisateur peut choisir dans la liste en cochant celles dont il veut lancer l'impression, puis clique sur un bouton "Imprimer".
-> J'ai alors une boucle qui lit pour quels documents l'impression a été lancée (il récupère entre autre l'adresse physique du fichier PDF, et l'imprimante sur la quelle il faut lancer l'impression.
Il ne faut pas ouvrir d'interface de lecteur PDF, sinon je risque de me faire lyncher par l'administrateur du serveur :aie: -> il faut lancer l'impression en tâche de fond.
Ce que j'ai essayé :
- Ouvrir Acrobat Reader en ligne de commande dans un process, avec un \p, mais ça ne marche pas du tout : il m'ouvre acrobat, et, ... rien.
- Ouvrir le fichier PDF dans un process avec dans le ProcessStartInfo le verbe "print".
¤ Vu que c'est Acrobat Reader qui était le lecteur par défaut de ma machine de test (sous XP), ce dernier s'ouvrait, imprimait le premier fichier de la liste, puis restait ouvert et n'imprimait pas la suite.
¤ Je chope une méthode pour exterminer le processus "Acro32jesaisplusquoi", C'est bon, ça imprime ! mais à une lenteeuuuurrrrr...
¤ Qu'à cela ne tienne, je change de lecteur, désinstalle Acrobat, installe Foxit Reader. Là ça marche niquel. Cool ! :king:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
Process impression = new Process();
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "nomDuFichier.pdf";
info.Verb = "print";
info.CreateNoWindow = true;
info.WindowStyle = ProcessWindowStyle.Hidden;
info.UseShellExecute = true;
impression.StartInfo = info;
impression.Start();
impression.WaitForExit();
impression.Close(); |
- Je vais sur le serveur de prod (win 2003), met en place ce petit truc. Bein ça marche pas... Il n'y a pas de bug d'application, il ne m'envoie pas une page d'erreur, non, ça ne fait juste rien. 8O :(
Après avoir placé des logs pour voir ce qui n'allait pas, voici ce qu'il m'est retourné :
Source : System
Méthode : Void EnsureState(State)
Message : Aucun processus n'est associé à cet objet.
Je ne sais pas trop ce que ça veut dire... surtout qu'il me dit ça à la fermeture du process.
Quelqu'un peu m'aider ?
Si vous avez une idée pour faire ce que je veux (imprimer des fichiers à la chaîne sur une imprimante connue du serveur), mais d'une manière totalement différentes, je suis preneur.
Merci d'avance