Donnez vie à vos documents numériques !
 

Remplissage de 2 champs par une valeur issue d’un menu déroulant

abracadabraPDF Forums PDF – Général Remplissage de 2 champs par une valeur issue d’un menu déroulant

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44728
    nabnub
    Membre

    Salut,

    décidement c’est la semaine de la découverte pour moi sur ce site

    Je suis tombé sur cet outil: http://abracadabrapdf.net/pdf-de-demo/formulaires/menus-ave-remplissage-dun-champ/

    j’ai essayé de modifier un peu le script pour pouvoir remplir 2 champs qui corresponderait au prénom et nom, j’ai pensé a créer 2 variables pour prénom et noms mais sans véritable succés

    ou bien peut on créer une variable avec 2 parametres?

    c’est que j’essaye de faire: dans le menu on aurait par exemple: classe 1, classe 2, classe 3 etc… et pour chaque classe des noms et prénoms. Lorsque l’un des élèves est sélectioné son nom et prénom sont remplit dans 2 champs

    http://cjoint.com/13dc/CLekEKPItQs_essai.pdf

Affichage de 11 réponses de 1 à 11 (sur un total de 11)
  • Auteur
    Réponses
  • #56337
    Merlin
    Maître des clés

    Bonjour,

    Le sujet a déjà été abordé plusieurs fois sur le forum, faire une recherche sur “liste déroulante” te donnera une première série de résultats intéressants.
    :Smiley15:

    #56338
    nabnub
    Membre

    Salut Merlin

    en fait avec une liste déroulante je sais le faire…

    mais j’essaye d’utiliser app.popUpMenu pour ceci, (je n’arrive avoir comment créer 2 variables, si c’est ça qu’il faut faire)

    j’ai trouvé une méthode utilisant le XML, mais je cherche plutot une méthode avec une jolie fonction a écrire

    http://www.pdfscripting.com/public/FreeStuff/PDFSamples/PopulateFieldsFromXML_Sample.pdf

    merci

    #56339
    Merlin
    Maître des clés

    Est-ce qu’il ne serait pas plus simple de concaténer les colonnes “nom” et “prénom” de façon à n’en faire qu’une seule entrée ?
    D’autant que dans ce cas précis ça ne devrait pas tellement changer leur nombre.
    :Smiley03:

    #56340
    nabnub
    Membre

    j’ai essayé depuis hier d’écrire quelque chose mais sans véritable succés

    serait-il possible (svp) d’avoir une solution

    merci beaucoup

    par la suite j’essayerai de travailler sur la version utilisant le XML, je pense qu’il y a que quelques modifications à apporter à la fonction principale pour avoir des sous menus, le probleme de cette méthode s’est qu’elle requiert l’installation des fichiers par l’utilisateur

    #56341
    nabnub
    Membre

    j’ai jété un coup d’oeil à l’Acrobat JavaScript Reference, il y a aussi la possibilité d’utiliser app.popUpMenuEx

    apparement on peut spécifier la valeur à retourner pour chaque item mais je ne sais pas comment codé ceci proprement,

    l’idée je pense est de séparer le nom et prénom

    mais je ne sais pas comment écrire ça

    j’ai essayé un truc du genre:

    Code:
    var reply = app.popUpMenuEx
              (
                        {cName: “-“},
                        {cName: “Year 1”, oSubMenu:
                                  [{cName: “Surname1 + “|” + Name1″}, {cName: “Surname2 + “|” + Name2″},cReturn:…]
                        },
                        {cName: “Year 2”, oSubMenu:
                                  [{cName: “Surname3 + “|” + Name3″}, {cName: “Surname4 + “|” + Name4″},cReturn: …]
                        },
              )

    pour cReturn:…. je ne sais pas trop quoi écrire

    d’autant plus que le cas étudié ici est juste pour 2 classes avec 4 éleves au total, j’espere pouvoir par la suite être capable de modifier la solution pour 6 classes de 20 eleves

    dans tout les cas, merci pour toutes suggestions

    #56342
    Merlin
    Maître des clés
    #56343
    nabnub
    Membre

    Salut,

    si je comprends bien des liens que tu as postés, tu me suggère plutot d’utiliser cette méthode:

    une liste déroulante pour choisir la classe, une fois la classe choisi, je peux dans une autre liste déroulante choisir le prénom qui associera automatique dans un autre champ le nom
    j’ai jetté un coup d’oeil au code et je pense que je suis capable d’apporter les modifications nécessaires pour l’adapater à ma situation (c’est ce que je vais faire pour le moment)

    mais en fait j’essaye plutôt d’utiliser une méthode similaire a celle de Thom Parker que je trouve plus directe : juste un bouton dans lequel on peut naviguer direquetement à l’élève via la classe (submenu), la méthode de Thom utilise 2 fichiers que l’utilisateur doit installer préablement dans le dossier Javascript,

    quel sont les modifications à apporter a son code (svp) pour parvenir à mon but?

    je pense que la partie importante du code se trouve ici:

    Code:
    // Test and then search Customer XML Data
      // if it was correctly parsed
      var aNames = [];
      if(xmlData)
      { // Stream data is valid, but not guarenteed to be XML
          if(typeof(xmlData) != “xml”)
          {
            var cMsg = “Customer Data File does not contain XMLnnAborting Operation”;
            app.alert(cMsg,0,0,cAlertTitle);
          }
          else
          {  // Data is valid, parsed XML
            //Check to see if it is the correct XML Gramar
              var nLen = xmlData.child(“Customer”).length();
              if(nLen == 0)
              {
                var cMsg = “Customer Data File does not contain any CustomersnnAborting Operation”;
                app.alert(cMsg,1,0,cAlertTitle);
              }
              else
              {
                for(var i=0;i            {
                    aNames.push(xmlData.Customer.Name.text() + “: ” + xmlData.Customer.Company.text());
                }
              }
          }
      }
     
      if(aNames.length)
      {
          // Display list of customers to user in popup menu
          cRtn = app.popUpMenu.apply(app,aNames);
          if(cRtn)
          {// Find Customer that matches selection
            var cName = cRtn;
            for(var i=0;i        {
                if(cName == (xmlData.Customer.Name.text() + “: ” + xmlData.Customer.Company.text() ))
                  break;
            }
     
            if(i        {// Fill Fields with selected Data
                var oFld = oDoc.getField(“Name”);
                if(oFld)
                  oFld.value = xmlData.Customer.Name.text();
     
                oFld = oDoc.getField(“Company”);
                if(oFld)
                  oFld.value = xmlData.Customer.Company.text();

                oFld = oDoc.getField(“Email”);
                if(oFld)
                  oFld.value = xmlData.Customer.Email.text();
            }
     
          }
      }
      app.endPriv();

    #56344
    Merlin
    Maître des clés

    si je comprends bien des liens que tu as postés, tu me suggère plutot d’utiliser cette méthode

    En vérité, je te suggère de te faire aider par quelqu’un de plus compétent que moi sur le sujet parce-que je suis loin d’avoir le niveau d’Alex ou de Thomp !
    :joker:

    #56345
    nabnub
    Membre

    lol

    ok mais je ne les vois pas dans les parages, sont ils partis en vacances?

    en attendant je vais essayer de fouiner ici et ailleurs pour trouver une solution

    merci

    #56346
    Merlin
    Maître des clés

    Va savoir…
    En tout cas Thomp ne fréquente que ce forum américain : http://answers.acrobatusers.com
    :Smiley01:

    #56347
    nabnub
    Membre

    Résolu

    Code:

    var aParams = [

        {cName: “Lincoln”, oSubMenu: [

            {cName: “Abraham”, cReturn: “Abraham|Lincoln”},

            {cName: “Mary Todd”, cReturn: “Mary Todd|Lincoln”},

            {cName: “Robert Todd”, cReturn: “Robert Todd|Lincoln”},

            {cName: “Edward Baker”, cReturn: “Edward Baker|Lincoln”},

            {cName: “William Wallace”, cReturn: “William Wallace|Lincoln”},

            {cName: “Thomas”, cReturn: “Thomas|Lincoln”}

            ]

        },

        {cName: “Buffett”, oSubMenu: [

            {cName: “Jimmy”, cReturn: “Jimmy|Buffett”},

            {cName: “Jane”, cReturn: “Jane|Buffett”},

            {cName: “Savannah Jane”, cReturn: “Savannah Jane|Buffett”},

            {cName: “Sarah Delaney”, cReturn: “Sarah Delaney|Buffett”},

            {cName: “Cameron Marley”, cReturn: “Cameron Marley|Buffett”}

            ]

        }

    ];

    var resp = app.popUpMenuEx.apply(app, aParams);

    // Populate the fields with the selected values

    if (resp) {

        var names = resp.split(“|”);

        getField(“name”).value = names[0];

        getField(“surname”).value = names[1];

    } else {

        getField(“name”).value = “”;

        getField(“surname”).value = “”;

    }

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