IMPRESSION D'UN DOCUMENT PDF EN TACHE DE FOND

cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 - 24 févr. 2005 à 16:03
frabu Messages postés 2 Date d'inscription samedi 16 septembre 2006 Statut Membre Dernière intervention 30 novembre 2007 - 30 nov. 2007 à 23:33
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/29734-impression-d-un-document-pdf-en-tache-de-fond

frabu Messages postés 2 Date d'inscription samedi 16 septembre 2006 Statut Membre Dernière intervention 30 novembre 2007
30 nov. 2007 à 23:33
Suis navré et désolé mais je ne suis plus du tout dans le coup et ne pourrais t'offrir aucune aide.
Nous avons opté pour une autre solution et je ne fais plus de dev.

Sorry
FB
cs_benredjem Messages postés 1 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 30 novembre 2007
30 nov. 2007 à 16:39
Frabu,

Mon besoin :

1 - lire un très grand nombres de fichiers pdf (assez volumineux) et d'origines diverses en entrée
2 - les passer dans PDFCreator à travers Adobe pour les mettre en conformité, car certains ont des polices
particulières...
3 - j'ai besoin que le traitement soient le plus rapide possible.


Ce que j'ai déjà fait :

J'ai repris le code de Waldo, que je remercie au passage ! mais, j'ai encore d'autres soucis :

Problèmes :

1 - C'est bien, car Adobe est en tâche de fond (j'aurais préféré pas le voir du tout), mais le traitement reste long
2 - çà plante souvent, de manière aléatoire
3 - je ne peux pas me permettre de mettre une tempo style Thread.sleep(), car les fichiers sont de tailles variables...et ça risque d'être inssufisant pour certains.

Ta solution :

1 - D'abord, merci de me dire, lequel ils faut télécharger exactement de .exe ?
2 - J'en ai essayé deux, à exécuter à la place d'Adobe dans le Runtime.getRuntime().exec(lCommand);
3 - Je ne vois pas ou on me demande de choisir le nombre de copie...etc...
4 - et surtout, çà ouvre Adobe (et pas en tâche de fond) et çà plante, car il n'arrive pas à ouvrir mes fichiers...

Pourrais-tu m'apporter une aide ...c'est urgent ! Merci mille fois....

merci de répondre si possible à : slimane-docuged@orange.fr

Slim
cs_Waldo2188 Messages postés 142 Date d'inscription jeudi 12 février 2004 Statut Membre Dernière intervention 20 mai 2008
26 oct. 2006 à 18:59
frabu -> Nickel, je pensse que ton commantaire va aider pas mal de monde.
Vraiment Super!
++
frabu Messages postés 2 Date d'inscription samedi 16 septembre 2006 Statut Membre Dernière intervention 30 novembre 2007
24 oct. 2006 à 17:30
Un petit tool qui fait une meilleure glue entre ce code (que j'ai finalement repris dans notre projet après vaines recherches) et AcrobatReader:
http://www.esnips.com/web/PDFTools
C'est un utilitaire ecrit en C (mais dispo en .exe) que j'appelle à la place de AcrobatReader, il se chargera de faire l'appel à ce dernier. Pas de doc mais juste lancer "pdfp.exe" et les options s'affichent.
Il permet de choisir le printer, l'orientation, le nbr de copie.
AcrobatReader s'ouvre et se ferme automatiquement: plus de wait ni de destroy. Mon code adapté devient alors:

final String PATH_PRINT_EXE = "C:\\temp\\pdfp.exe";
final String PRINT_COMMAND = "-p";
final String SLASH = "/";
final String QUOTE = """;
final String SPACE = " ";
final String fileToPrint ="E:\\test.pdf" ;
PrintService printer = PrintServiceLookup.lookupDefaultPrintService();
//localisation de l'imprimante par défaut

String lCommand =
QUOTE + PATH_PRINT_EXE + QUOTE + SPACE +
PRINT_COMMAND + SPACE +
QUOTE + printer.getName() + QUOTE + SPACE +
QUOTE + fileToPrint + QUOTE;

System.out.println("[printPDF] Command to be executed : " + lCommand);

try{
Runtime.getRuntime().exec(lCommand);//2 print en rafale!
Runtime.getRuntime().exec(lCommand);//pour savourer
}
catch (Exception e)
{
System.err.println("[printPDF] Error printing PDF : "+ fileToPrint);
e.printStackTrace();
}
twolf_tex Messages postés 1 Date d'inscription mardi 28 mars 2006 Statut Membre Dernière intervention 28 mars 2006
28 mars 2006 à 16:34
j'ai beaucoup aimé ton code et je suis en train de le mettre en thread pour permettre de faire l'impression sur plusieurs imprimantes en meme temps!
mais est ce qu'on peut modifier le nombre de copie et choisir les pages par exemple(dans les arguments de acrobat) et modifier le temps de destroy en fonction de la taille!
repond moi sur essiarab.yasser@gmail.com je suis impatient!!!
cs_Waldo2188 Messages postés 142 Date d'inscription jeudi 12 février 2004 Statut Membre Dernière intervention 20 mai 2008
29 nov. 2005 à 23:32
Effectivement tu n'a pas tord.
Les 2,4sec sont la pour laisser le temps à Adobe Reader de charger le fichier. deplus il est tout a fait possible de mettre différent temps en fonction du poid du fichier. je ne l'ai pas fait mais c'est fesable.
cs_valva Messages postés 30 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 29 décembre 2005
24 nov. 2005 à 17:06
kicou j'arrive un peut apres la conversation mais je trouve ton script super mais j'ai pas tout a fait saisit le 2.4 secondes d'attente. Pour résumé si on ve imprimer des pdf relativement lourd du genre 3 pdf de 130pages(9Mo chacun) ca va bugé? Car il aura po le temps d'ouvir le document que le processus sera destroy();
non ?
rectif : moi pour accrobat reader 5.0 g mi :
final String ADOBE_READER_PRINT_COMMAND = " /p /h ";
efaucon Messages postés 2 Date d'inscription dimanche 26 novembre 2000 Statut Membre Dernière intervention 16 septembre 2005
16 sept. 2005 à 23:44
En fait on lance déjà l'application avec le Runtime.getRuntime.exec, mais lorsqu'on met le Thread.sleep avant le destroy, l'application reste ouverte et ne se ferme pas. En revanche lorsqu'on met le destroy sans faire un Thread.sleep, le destroy fonctionne bien (mais acrobat reader n'a pa le temps de se lancer).

Runtime.getRuntime().exec("cmd.exe /C start acrord32 [pathDufichierPdf]")

Merci d'avance
cs_Waldo2188 Messages postés 142 Date d'inscription jeudi 12 février 2004 Statut Membre Dernière intervention 20 mai 2008
16 sept. 2005 à 22:45
As-tu penser a changer le chemin du dossier d'acrobat reader?
"final String PATH_ADOBE_READER = "C:\\Program Files\\Adobe\\Acrobat 5.0\\Reader\\AcroRd32.exe";
"
efaucon Messages postés 2 Date d'inscription dimanche 26 novembre 2000 Statut Membre Dernière intervention 16 septembre 2005
16 sept. 2005 à 11:38
En Acrobat 7.0 et sous Windows XP, le process reste actif malgré le destroy et Acrobat reste ouvert !

Quelqu'un a une solution ?
cs_Waldo2188 Messages postés 142 Date d'inscription jeudi 12 février 2004 Statut Membre Dernière intervention 20 mai 2008
23 août 2005 à 12:39
la seul raison pour laquel je fait dormire le processus c'est pour que l'impression s'éffectue avant de fermer acrobat. Car tu ferme acrobat avant la fin de l'impression, celle ci plante!
jay49 Messages postés 5 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 29 août 2007
23 août 2005 à 12:10
Trop bien ce code! Il me conviendrait totalement. Bravo!!!
Reste à le tester chez moi...

Il n'y a aucun risque qu'il plante?! Car j'aimerais l'executer coté serveur pour faire des éditions automatiques. Donc si ca plante et que des processus continuent de tourner, ou bien que ca plante carrément le serveur, ca craint...

Et ne m'y connaissant pas trop en processus, je voudrais savoir pourquoi tu endors ton processus pendant 2,4 secondes... Je comprends pas.

Merci et félicitations
isert Messages postés 3 Date d'inscription jeudi 11 décembre 2003 Statut Membre Dernière intervention 27 février 2006
17 mai 2005 à 13:22
Est ce qu'une personne à deja essayer d'imprimer un classeur excel
cs_Waldo2188 Messages postés 142 Date d'inscription jeudi 12 février 2004 Statut Membre Dernière intervention 20 mai 2008
15 mars 2005 à 11:17
Exacte le thread est super utile!
C'est d'ailleur ce que j'ai fait, mais la j'ai juste mis la fonction qui mermet l'impression!
zannkukai Messages postés 1 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 15 mars 2005
15 mars 2005 à 09:23
Un dieu parmi les dieux ;)

Super grand merci ca amrche très bien. Ce qui est encore mieux c'est de mettre cela dans un thread ce qui ne bloque pas le programme qui demande l'impression
cs_Waldo2188 Messages postés 142 Date d'inscription jeudi 12 février 2004 Statut Membre Dernière intervention 20 mai 2008
2 mars 2005 à 10:48
A vrais dire non!
Mais Si Linux possède un acrobat reader, avec un path pour son exécutable, il n'y a pas de raison que cela ne marche pas!

Je le testerais quand même sous linux pour voir.
cs_mzamoun Messages postés 10 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 6 février 2006
1 mars 2005 à 00:47
l'avez vous testé sous linux ?

A++
Mourad :)
cs_Waldo2188 Messages postés 142 Date d'inscription jeudi 12 février 2004 Statut Membre Dernière intervention 20 mai 2008
24 févr. 2005 à 21:02
Et oui c'est l'aventage du pdf et de java.
cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 5
24 févr. 2005 à 16:03
...et ici par contre... pas d'ocx ? ;)
Ca m'interresse davantage :D

Bus
Rejoignez-nous