Bonsoir,
J'ai écrit un programme en Excel qui permet entre autre de remplir des formulaires complexes en pdf (mon autre fil sur un pb de pdf crée par Latex dont l'aspect varie en est le tutoriel)
Après recherches, j'ai trouvé qu'on pouvait renseigner de tels formulaires avec un fichier texte sauvé avec l'extension fdf. Ce fichier indique dans quel pdf on veut écrire puis pour chaque champ, on donne la valeur qu'on veut lui donner. Pour cela, la syntaxe est
Code:<< /T(nom du champ)/V(valeur à donner)>>
Ma macro vba excel compose ce fichier dont j'ai recopié l'entête et adapté à mes champs. En élaguant et en ne laissant que deux des nombreux champs, cela donne quelque chose du genre :
Sur mon ordi perso (sous Windows 8), cela marche très bien.Code:%FDF-1.2 %âãÏÓ 1 0 obj << /FDF << /Fields 2 0 R /F (FormulaireVierge.pdf)>> >> endobj 2 0 obj [ << /T(data[0].Bulletin[0].Evaluation_Competences[0].Pro_ou_tech[0].pagey[0].GRP_PT2[0])/V(1)>> << /T(data[0].Bulletin[0].Appréciation_année_notation[0].AUT_NOT_1_DEG[0])/V(Première version de l'appréciation... )>> ] endobj trailer << /Root 1 0 R >> %%EOF
Transporté au travail (où cela a vocation à fonctionner...) ça marche presque très bien sauf que les apostrophes dans le texte sont remplacés par une espèce de caractère TM en exposant.
Comme pour mon problème de pdf crée par Latex, je soupçonne une histoire d'encodage...
le fichier fdf est crée avec le code suivant en vba Excel.
Je ne vois pas où je pourrais spécifier la manière dont je voudrais encoder le texte pour qu'ensuite ça marche bien... et si par tâtonnement on trouve quoi faire sur une machine donnée (sur mon portable, rien, ça marche comme ça), comment faire si on espère crée un outil qui va faire gagner beaucoup de temps à beaucoup de gens mais qui utilise un parc informatique assez disparate ?Code:intFic = FreeFile Open ThisWorkbook.Path & "\" & nomBNA & ".fdf" For Output As intFic Print #intFic, "%FDF-1.2" Print #intFic, "%âãÏÓ" Print #intFic, "1 0 obj" Print #intFic, "<<" Print #intFic, "/FDF << /Fields 2 0 R /F (" & nomFichierBNApdf & ")>>" Print #intFic, ">>" Print #intFic, "endobj" Print #intFic, "2 0 obj" Print #intFic, "[" COMPOSITION DES LIGNES DE TYPE << /T(nom du champ)/V(valeur à donner)>> Print #intFic, "]" Print #intFic, "endobj" Print #intFic, "trailer" Print #intFic, "<<" Print #intFic, "/Root 1 0 R" Print #intFic, ">>" Print #intFic, "%%EOF" Close intFic
Merci d'avance
Patrick
-----