Donnez vie à vos documents numériques !
 

verrouillage des champs d’un formulaire sur une page bien précise

abracadabraPDF Forums PDF – Général verrouillage des champs d’un formulaire sur une page bien précise

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45222

    Bonjour,

    J’ai un formulaire qui contient 4 pages et qui passera dans les mains de plusieurs personnes.

    La première personne doit renseigner les 2 premières pages, la suivante la 3ème page et la dernière personne la dernière page. A chaque passage d’interlocuteur, la personne devra cliquer sur un bouton valider afin de figer ses pages respectives et uniquement ces pages.

    J’ai pour l’instant le code pour figer l’ensemble des pages mais je ne trouve pas comment faire la même chose mais en se limitant au critère de page.

    Pouvez-vous m’aider ?

    function Verrouiller()
    {
    //Verrouillage des commentaires, annotations et signature
    var myDoc = event.target.doc;
    var commentList;

    if(!myDoc)
    app.alert(“Impossible d’accéder au document”);
    else
    {
    commentList = myDoc.getAnnots();

    if(commentList != null)
    {   
      for each(comment in commentList)
      comment.lock = true;
      //app.alert(“blocage effectué”);
    }
    // else
    // app.alert(“Ce document ne présente aucun commentaire ni aucune signature”);
    }

    //Masquer le bouton
    event.target.display = display.hidden;

    //Verrouiller tous les champs
    for (var i=0; i  var fname = this.getNthFieldName(i);
      var f = this.getField(fname);
      f.readonly = true;
    }
    }

    Merci à vous

Affichage de 3 réponses de 1 à 3 (sur un total de 3)
  • Auteur
    Réponses
  • #59407

    Bonjour,

    Alors personne pour m’aider ? :priere:

    #59408
    Merlin
    Maître des clés

    Bonjour.

    On peut peut-être le faire plus facilement en aplatissant les champs.

    this.flattenPages(0,0,2);

    Le premier zéro en rouge indique le numéro de la première page à aplatir, le deuxième zéro indique le numéro de la dernière.
    Pour n’en aplatir qu’une seule il faut répéter le numéro de la page.
    Ne pas oublier qu’en JavaScript la numérotation des pages commence à zéro, dans l’exemple ci-dessus seule la page 1 est aplatie.

    Le “2” est un paramètre qui ne concerne que les annotations.

    :Smiley01:

    #59409
    Merlin
    Maître des clés

    En fait, tout bien réfléchi, l’aplatissement ne fonctionne pas avec Reader, seulement avec Acrobat.
    Donc il vaudrait certainement mieux utiliser la fonction de verrouillage “readonly”.

    Je ne sais pas comment boucler sur toutes les pages pour détecter tous les champs, les verrouiller, etc.
    Par-contre il existe un moyen simple et efficace en utilisant la Convention de dénomination des champs de formulaire.
    Voir : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/duplication-rapide-de-champs-de-formulaire/

    Dans l’esprit c’est simple, sur la page 1 on fait précéder tous les noms de champs par le suffixe “Page1”.
    Exemple : “Page1.NomDunChamp”,
    sur la page 2 on fait précéder tous les noms de champs par le suffixe “Page2”.
    Exemple : “Page2.NomDunAutreChamp”,
    Etc.

    Ensuite il suffit d’utiliser la propriété readonly sur le champ parent pour verrouiller toute une page.
    Exemple pour la page 1 :

    Code:
    this.getField(“Page1”).readonly = true;

    Bien entendu on fera une exception pour les éventuels boutons de navigation et autres champs non concernés.

    :Smiley15:

    PS : pas de caractères spéciaux ou accentués dans les noms de champs, et surtout pas d’espace sinon la Convention de dénomination des champs de formulaire ne fonctionne pas.

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