Lancer Acrobat Reader et des impressions

Rei Itchido Messages postés 5 Date d'inscription mercredi 7 décembre 2005 Statut Membre Dernière intervention 23 avril 2008 - 22 avril 2008 à 16:59
cs_coq Messages postés 6350 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 27 avril 2008 à 01:00
Bonjour à tous,


C'est ma 1ère fois en C# (quelle émotion ^^),  je fais ça dans l'urgence et j'ai un peu de mal...


Voilà le topo.

J'ai un dossier avec des documents PDF.


Je voudrais pouvoir :

1/ Selectionner le dossier en question

2/ Ordonner les fichiers dans l'ordre alphabetique

3/ Lancer Acrobat Reader

4/ Lancer l'impression des PDF à travers Acrobat Reader

5/ Fermer Acrobat Reader


Pour le moment j'ai réussi à faire

1/ avec un FolderBrowser

2/ je stocke les fichiers retournés par 1/ et je les sort()


Mais ça se gate :)


J'arrive à lancer AR et une impression via un process.

System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents = false;
proc.StartInfo.FileName = "acrord32.exe";
proc.StartInfo.Arguments = "/h /p "" + loop_fichier + """;
proc.Start();
proc.WaitForExit();


Mon problème est que je comme je boucle sur mon tableau de fichiers, 
je suis obligé de "killer" le 1er process (chose que je n'arrive pas à
faire pour le moment donc je ferme AR à la main), d'en créer un 2ème
qui lance l'impression, le "killer", en créer un 3ème etc...


Comme je le vois il faudrait que je lance Acrobat Reader une seule fois et que je boucle sur mon tableau de fichiers en lui communiquant d'imprimer les fichiers au fur et à mesure.

J'ai vu qu'on pouvait communiquer avec AR via SendMessage mais j'avoue que je ne comprends pas tout. Je ne suis même pas sûr que ça corresponde à mon besoin d'ailleurs.

Pouvez-vous me dire comment réaliser ce que je souhaite?
Quelle piste suivre? SendMessage ou autre?


Merci d'avance pour votre aide

10 réponses

oximoron Messages postés 149 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 30 janvier 2009
23 avril 2008 à 11:44
c'est un début de piste, mais le proc.Start(); ne renvoi pas un pid, qui te permet de fermer le processus. Je n'en suis pas sûr mais ca vaut le coup d'esssayer.
0
Rei Itchido Messages postés 5 Date d'inscription mercredi 7 décembre 2005 Statut Membre Dernière intervention 23 avril 2008
23 avril 2008 à 13:18
Désolé mais je n'ai pas compris ton message.
Tu me demandes d'essayer quoi?
0
oximoron Messages postés 149 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 30 janvier 2009
23 avril 2008 à 13:54
alors normalement, chaque processus que tu lances ici "acrord32.exe" à un numéro unique qui s'appelle le Pid. Quand tu lance un processus c'est là que je ne suis pas sur sur la manière de récupérer ce PID avec le proc.Start() peut être.
Mais une fois que tu as ce pid tu va pouvoir fermer le processus par le code. Voilà c'est peut être pas la solution la plus propre, mais c'est la seule que j'ai pour le moment ;)
0
Rei Itchido Messages postés 5 Date d'inscription mercredi 7 décembre 2005 Statut Membre Dernière intervention 23 avril 2008
23 avril 2008 à 13:57
Ok

J'ai aussi vu qu'on pouvait récuperer "l'ID de la fenêtre Acrobat" ouverte. Donc je suppose qu'on la fermer ensuite.

Mais ça ne résoud pas mon problème principale : comment dire à Acrobat de lancer x impressions :s
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
oximoron Messages postés 149 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 30 janvier 2009
23 avril 2008 à 14:35
c'est ultra dur ;)
/h /p C:/1.pdf c:\2.pdf c:\3.pdf c:\956753.pdf
mais je suis pas ultra sur que ca marche ;)
0
Rei Itchido Messages postés 5 Date d'inscription mercredi 7 décembre 2005 Statut Membre Dernière intervention 23 avril 2008
23 avril 2008 à 14:47
Effectivement ce que tu me propose fonctionne, je faisais ça au début.

Le soucis c'est que la chaîne d'argument est limitée en taille. Je n'arrive pas à trouver la taille maxi mais vu que ça plante quand j'essaye de passer beaucoup de fichier en arguments je sais qu'il y en a une :)
Et je dois pouvoir lancer des dizaines (voir centaines) d'impressions :s
0
oximoron Messages postés 149 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 30 janvier 2009
23 avril 2008 à 15:00
mais sinon DIR *.PDF>PRN. ca imprime toute les fichiers dont l'extension est pdf. donc tu peut lancer ca en ligne de commande, et c'est windows qui va se charger d'imprimer. Tu peux mettre le chemin à la place de *.PDF
0
Rei Itchido Messages postés 5 Date d'inscription mercredi 7 décembre 2005 Statut Membre Dernière intervention 23 avril 2008
23 avril 2008 à 15:16
Le but de cette appli est justement de ne pas passer par Windows pour imprimer tous les fichiers d'un dossier...

En fait, je me suis rendu compte que Windows gère mal l'ordre des fichiers dans un dossier.
Exemple : si je selectionne plusieurs fichiers PDF dans un dossier et que je fais "Fichier / Imprimer" il les envoie dans un ordre aléatoire (même si les fichier se nomment 01.pdf, 02.pdf, 03.pdf etc...) alors que j'ai besoin qu'ils s'impriment dans le bon ordre.
D'où cette petite appli dont le but est d'envoyer à l'impression les fichiers dans le bon ordre...

Personne n'a deja fait de SendMessage vers Acrobat? :s
0
oximoron Messages postés 149 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 30 janvier 2009
23 avril 2008 à 16:15
oui mais toi tu récupères bien les noms des fichiers et le chemin ?

Tu fais une boucle pour ta liste de fichiers, tu peux imprimer dans l'ordre que tu veux tu fais un >PRN par itération de la boucle et tu peux faire le tri de la liste, faire des condition et tout ...

Les SendMessage j'ai jamais utilisé.
0
cs_coq Messages postés 6350 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
27 avril 2008 à 01:00
Salut,

Haaaa la bonne vieille blague de l'impression de pdf...
Une piste que j'ai vue passer il y a peu : Printing PDF documents in C#

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous