Aujourd'hui je vais vous parler de l'impression.

Pour l'un de mes projets il m'a fallu créer un service qui imprime des rapports provenant de SQL Reports. la récupération d'un rapport par code est maitrisé depuis un moment mais l'impression était une nouvelle composante.

Après 2-3 recherches, j'ai trouvé un code assez efficace chez Microsoft (ici) qui permet d'imprimer un flux (ou un fichier). Le code est assez efficace et je vous le conseille.

Dans mon cas un petit problème supplémentaire s'est ajouté : il s'agissait d'imprimer sur une imprimante à étiquette et là malheureusement je me suis trouvé bloqué par l'imprimante que semble avoir des problème avec ce flux direct. Après pas mal d'essai j'ai finalement trouvé une solution qui même si elle m'oblige à sauver le document sur disque avant est assez efficace. Voici donc le code:

Process process = newProcess();
process.StartInfo.FileName = file;
process.StartInfo.Verb = "printto";
process.StartInfo.Arguments = "\"" + printer + "\"";
process.Start();
process.WaitForInputIdle();
process.Kill();

Comme vous le voyez le code est assez simple. On créé un process sur le fichier et l'on y envoi la commande "printto". Ce fut une surprise assez agréable pour moi car c'est le système d'exploitation qui se charge d'effectuer l'impression pour vous.

Bonne continuation et à bientôt.