Donnez vie à vos documents numériques !
 

Concaténation en RTF avec span

abracadabraPDF Forums PDF – Général Concaténation en RTF avec span

  • Créateur
    Sujet
  • #70045
    jctremblay
    Participant

    Bonjour,

    Dans un formulaire (un extrait en pièce jointe), j’ai un champ qui fait une concaténation de plusieurs champs en RTF. Voici la partie du code de l’extrait PDF. Ça fonctionne, mais j’ai deux soucis.

    1. Comment faire pour supprimer un span si le texte est vide pour ne pas insérer un espace blanc.

    2. Dans mon exemple il y a que 4 champs, mais dans mon document final, il y a 20-30 champs de texte/date à fusionner. Je trouve mes codes un peu longs à écrire. Il est certainement possible de faire plus simple.

    var o1 = getField(“o.txt.0”).valueAsString;

    var od1 = getField(“o.date.0”).valueAsString;

    var o2 = getField(“o.txt.1”).valueAsString;

    var od2 = getField(“o.date.1”).valueAsString;

    var o3 = getField(“o.txt.2”).valueAsString;

    var od3 = getField(“o.date.2”).valueAsString;

    var o4 = getField(“o.txt.3”).valueAsString;

    var od4 = getField(“o.date.3”).valueAsString;

    var spans = [];

    var span1 = {};

    span1.text = od1 + ” • “;

    span1.fontWeight = 700;

    spans.push(span1);

    var span2 = {};

    span2.text = o1 + “\n\n”;

    spans.push(span2);

    var span3 = {};

    span3.text = od2 + ” • “;

    span3.fontWeight = 700;

    spans.push(span3);

    var span4 = {};

    span4.text = o2 + “\n\n”;

    spans.push(span4);

    var span5 = {};

    span5.text = od3 + ” • “;

    span5.fontWeight = 700;

    spans.push(span5);

    var span6 = {};

    span6.text = o3 + “\n\n”;

    spans.push(span6);

    var span7 = {};

    span7.text = od4 + ” • “;

    span7.fontWeight = 700;

    spans.push(span7);

    var span8 = {};

    span8.text = o4 + “\n\n”;

    spans.push(span8);

    event.richValue = spans;

    Attachments:
    You must be logged in to view attached files.
Affichage de 7 réponses de 1 à 7 (sur un total de 7)
  • Auteur
    Réponses
  • #70048
    bebarth
    Maître des clés

    bonjour,
    Voici ce que je te propose :
    var spans=new Array();
    var j=-1;
    for (var i=0; i<=3; i++) {
    j++;
    if (this.getField("o.date."+i).valueAsString!="" && this.getField("o.txt."+i).valueAsString!="") {
    spans[j]=new Object();
    spans[j].fontWeight=700;
    spans[j].text=this.getField("o.date."+i).valueAsString+" • ";
    j++;
    spans[j]=new Object();
    spans[j].fontWeight=400;
    spans[j].text=this.getField("o.txt."+i).valueAsString+"\n\n";
    }
    }
    event.richValue=spans;

    @+
    😎

    PS : Je n’ai personnellement jamais utilisé push pour cette méthode, mais ce n’est pas une mauvaise idée…

    Attachments:
    You must be logged in to view attached files.
    #70050
    jctremblay
    Participant

    Merci Bebarth! Comme c’est beau… Je vérifie tout ça et te reviens.

    #70059
    jctremblay
    Participant

    Bebarth, tout est parfait sauf que maintenant j’ai décide de change les noms de mes champs de:

    o.txt.1 et o.date.1 à txt.1 et date.1 et maintenant, même si je les renommes dans le script, cela ne fonction plus. je n’y comprend rien. C’est surement une pécadille. Help! 😀

    #70060
    bebarth
    Maître des clés

    bonjour,
    Il n’y a pas de raison que ça ne fonctionne pas !!!

    var spans=new Array();
    for (var i=0; i<=3; i++) {
    if (this.getField("date."+i).valueAsString!="" && this.getField("txt."+i).valueAsString!="") {
    spansObj=new Object();
    spansObj.fontWeight=700;
    spansObj.text=this.getField("date."+i).valueAsString+" • ";
    spans.push(spansObj);
    spansObj=new Object();
    spansObj.text=this.getField("txt."+i).valueAsString+"\n\n";
    spans.push(spansObj);
    }
    }
    event.richValue=spans;

    Ici j’ai utilisé la méthode push et j’ai retiré la ligne qui remet la police en style “standard” vu que c’est le style du champ !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #70062
    jctremblay
    Participant

    Je vis vérifier ce qui se passe réellement quand je vais avoir la tête libre… Merci.

    #70063
    jctremblay
    Participant

    J’ai trouvé pourquoi cela ne fonctionnais pas. Dans mon PDF j’ai un nombre de champs de texte plus grand que l’exemple que j’ai inclus. Là, je viens de réalisé que le chiffre ici:

    for (var i=0; i<=3; i++) {

    doit être plus petit que le totals de mes champs à fusionner. Sinon, cela ne marche plus. Donc, si j’ai 20 champs de texte, je vais devoir utiliser ceci

    for (var i=0; i<=19; i++) {

    #70064
    bebarth
    Maître des clés

    Exactement !

    @+
    😎

Affichage de 7 réponses de 1 à 7 (sur un total de 7)
  • Vous devez être connecté pour répondre à ce sujet.