roubech a écrit:si tu ne veut générer que les liens vers les PDF, tu peux t'inspirer de la dernière formule.
Si tu as du mal à comprendre la formule, prenons un exemple.
Admettons que ton doc contient plusieurs fichiers dont la liste est retournée par
[syntax="Formula"]tLstFileName := @AttachmentNames;[/syntax]
De cette liste, tu veux ne garder que les chaines de texte qui se terminent par ".PDF". Un @Left sur la liste va te donner une liste de même taille avec le nom des fichiers PDF et des chaines vide pour les autres. Ensuite, un @Trim va épurer ces éléments vide. Le petit truc en plus, pour essayer d'éviter de prendre des fichiers dont le nom contient.pdf au milieu, c'est d'ajouter un caractère peu probable en fin de chaine "@" par exemple
Reste ensuite à ajouter l'extension des fichiers qu'on a perdu avec le @Left
[syntax="Formula"]tLstPDF := @Trim( @Left( tLstFileName+"§§"; ".PDF§§" ) ) + ".PDF"; [/syntax]
Le seul pb, c'est que là, on ne peut pas faire un @Uppercase sur tLstFileName sinon on risque modifier des noms de fichiers qui comporteraient des accents ??
Donc, avant de faire le @Left, tu peux faire un @ReplaceSubstring
si tu as des tordus qui mettent des majuscule n'ilmporte où dans l'extension, faut voir pour les variantes .pDf .pdF .Pdf .PDf .PdF ....
[syntax="Formula"]tLstFileName2 := @ReplaceSubstring( tLstFileName+"§§"; ".pdf§§"; ".PDF§§" );[/syntax]
Merci pour toutes ces explications.
En fait, j'ai opté pour la formule suivante qui a l'air de fonctionner
[syntax="Formula"]
fichier:=@AttachmentNames;
chaine:="";
@For(n := 1; n <= @Elements(fichier); n := n + 1;@If(@UpperCase(@Right(fichier[n];3))="PDF";
chaine:=chaine+"<a href="../vuetous/" + @Text(@DocumentUniqueID) + "/$file/"+fichier[n]+ "?OpenElement" alt="Lire la revue de presse"><img src="../IconeAcrobatReader.gif"></a> ";
""));
@If(@Contains(@UpperCase(fichier);"PDF")=1;"<div class="EncadreCouleur" style="text-align:center">"+chaine+"</div>";"")
[/syntax]