Générer des fichiers PDF avec un nom automatique sous Windows avec PDFCreator
Par AglarEdain, mercredi 14 février 2007 à 12:52 :: Informatique & Co :: #76 :: rss
Vous travaillez sous Windows, vous avez PDFCreator et vous voulez générer automatiquement une série de fichiers PDF (par exemple grâce à une macro pour Excel ou Word) avec un nom particulier : Cet article est fait pour vous.
[EDIT] 17/12/2007 : Le présent post a engendré une suite, plus intéressante je pense. Aller voir http://vraiment.rienadire.net/index.php/2007/12/17/96-pdfcreatorlibxla-version-2007-12-17
Ayant cherché vainement à changer le titre de document passé automatiquement par Excel à l'imprimante, je me suis pris la tête un moment.
Mon problème : Un ami m'a demandé de le dépanner d'une macro VBA pour Excel dans le cadre de son travail. Chaque mois il doit imprimer une grosse série de documents qui découlent tous d'un unique planning de présence.
Ma solution : Regrouper tous ces documents dans le même fichier Excel. Une feuille servira de planning et de source de données, les autres seront des modèles qui se rempliront en fonction des données de la première.
Ensuite, il faut imprimer des séries pour chaque membre du personnel. Facile grâce aux macros.
La où ça devient moins drôle, c'est quand j'ai voulu faire une impression vers des fichiers PDF pour envoyer un exemplaire de chaque par e-mail au cabinet comptable. Avec PDFCreator, a priori nous avons deux choix possibles :
- Faire des impressions automatiques, et voir le bureau envahi par des fichiers PDF dont le nom est la date et l'heure. (par exempe : "14-02-2007 12:53.pdf") Absolument pas pratique.
- Faire des impressions non automatiques, et avoir une boîte de dialogue qui s'ouvre pour chaque fichier demandant le titre du document et ce qu'il faut en faire. Si vous choisissez 'Save' une autre boîte de dialogue s'ouvre pour vous demander où et sous quel nom enregistrer le fichier PDF. Par défaut, elle vous proposera d'enregistrer le fichier sous la forme 'nomdufichierexcel.xls.pdf'. A l'utilisateur de changer ce nom pour le nom approprié... tout en ne sachant pas quel fichier il est en train d'enregistrer. (J'ai essayé sur deux fichiers, et je me suis trompé, alors vous imaginez sur une trentaine.) RE-Absolument pas pratique.
Vous comprenez pourquoi ces deux solutions ne sont pas satisfaisantes, surtout que le nombre d'opérations est à chaque fois assez grand pour devenir fou.
LA SOLUTION : Passer par un moyen détourné.
1- Quand vous faîtes une impression, vous pouvez choisir d'imprimer dans un fichier. Cette procédure enregistre les données qui aurait du être envoyées vers l'imprimante dans le fichier que vous aurez choisi. Dans le cas de PDFCreator, vous obtenez un fichier d'impression au format Postscript.
2- Il est possible de lancer PDFCreator en ligne de commande. Avec la commande suivante :
C:\Program Files\PDFCreator\pdfcreator.exe -IF"C:\fichierPS.ps" -OF"C:\fichierPDF.pdf"
vous ordonnez à PDFCreator d'ouvrir fichierPS.ps, et d'enregistrer sa conversion en PDF dans fichierPDF.pdf.
Nota bene : Cette fonctionnalité n'est pas documentée sur le site officiel de PDFCreator. Je l'ai découverte en lisant le fichier History.txt livré avec PDFCreator qui retrace les évolutions du logiciel.
3- Ecrire une macro qui effectue automatiquement les deux opérations, puis qui efface votre fichier fichierPS.ps.
EXEMPLE EXCEL EN VISUAL BASIC FOR APPLICATIONS
Public Function SaveToPDF(Chemin As String, NomFichier As String, Feuille As String)
Dim Temp As Variant
Temp = Worksheets(Feuille).PrintOut(, , 1, , "PDFCreator", True, True, Chemin + NomFichier + ".ps")
' Les Chr(34) sont importants. Ils définissent les guillemets anglais double.
Shell (Chr(34) + "C:\Program Files\PDFCreator\pdfcreator.exe" + Chr(34) + " -IF" + Chr(34) _
+ Chemin + NomFichier + ".ps" _
+ Chr(34) + " -OF" + Chr(34) _
+ Chemin + NomFichier + ".pdf" _
+ Chr(34))
Kill Chemin + NomFichier + ".ps"
End Function
[EDIT le 05/09/2007 : Meilleur version dans le commentaire n°2]
[EDIT] 17/12/2007 : Le présent post a engendré une suite, plus intéressante je pense. Aller voir http://vraiment.rienadire.net/index.php/2007/12/17/96-pdfcreatorlibxla-version-2007-12-17
Commentaires
1. Le samedi 21 juillet 2007 à 00:55, par zero_cool
2. Le mercredi 5 septembre 2007 à 12:53, par AglarEdain
3. Le mercredi 19 septembre 2007 à 14:46, par clicdclic
4. Le lundi 22 octobre 2007 à 18:48, par AglarEdain
5. Le vendredi 11 juillet 2008 à 15:27, par jadjay
6. Le vendredi 11 juillet 2008 à 17:20, par AglarEdain
7. Le vendredi 11 juillet 2008 à 17:33, par AglarEdain
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.