Donnez vie à vos documents numériques !
 

Problèmes pour formulaire avec calques

abracadabraPDF Forums PDF – Général Problèmes pour formulaire avec calques

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #43931
    infograph
    Membre

    Bonjour,
    C’est mon premier formulaire et je pense que je me suis compliqué la vie. Ce formulaire contient des calques qui s’affiche avec des boutons radio. Au départ ils sont masqués sur une page base. En sélectionnant un bouton radio, le calque correspondant s’affiche dans une nouvelle page. On peut donc, continuer de remplir le formulaire. Lors de l’envoi, Hélas, le calque n’apparait plus mais les données oui. Hors le but est de conserver la visibilité du calque.
    Un peu d’aide serait bien utile. je peu envoyer le fichier pour plus de compréhension.

    Merci d’avance

Affichage de 17 réponses de 1 à 17 (sur un total de 17)
  • Auteur
    Réponses
  • #51528
    alex
    Participant

    Regardez bien sur ce forum, nous avons déjà pas mal de choses concernant l’utilisation des calques, y compris les manipulations par JavaScript…
    Mais envoyez votre maquette, tout ira plus vite..car je n-ai pas vraiment compris le problème!

    #51529
    infograph
    Membre

    Bonjour, merci de la réponse. Le javascript n’est pas ma tasse de thé (il faudra apprendre un jour). Vous pouvez voir le fichier à cette adresse : ftp://193.253.231.123 accès anonyme.
    Merci de votre aide

    #51530
    alex
    Participant

    J’ai bien reçu ce formulaire.
    Je suppose que vous souhaitez ne visualiser qu’un calque à la fois et dans ce cas, pourquoi n’avoir pas opté pour un bouton radio (un choix unique parmi les 5) ?
    Si vous me confirmez ça, je remplacerai les cases à cocher par un bouton radio (ayant l’aspect d’une case à cocher) et  l’action d’activation de calque par un script qui n’agira que le calque qui vous intéresse en désactivant les autres. Lors de l’enregistrement de votre formulaire, seul le calque retenu sera activé à condition que vous preniez garde de bien activer les “Reader Extensions” (Options avancées>Etendre les fonctions D’Adobe Reader si vous êtes sur Acrobat 8 ou 9). J’attend votre réponse.

    #51531
    infograph
    Membre

    Les cases (choix de salle) sont bien des boutons radio. Il n’affiche que le calque de la salle désirée. Hors après avoir rempli les champs de la salle ( le calque) et que l’on envoi le formulaire, le fichier envoyé n’affiche plus le calque. j’ai essayé avec l’action “champ activé définir la visibilité du calque” sur le bouton radio correspondant mais le calque disparait après l’envoi. Mon choix de n’avoir aucun calque affiché à l’ouverture du fichier, en est peut-être la cause.

    Merci

    #51532
    alex
    Participant

    Effectivement, votre formulaire devrait fonctionner en l’état ! Je viens de reproduire votre problème. Je vais vous faire un script d’ouverture qui, en fonction de la case cochée réactive le calque correspondant.

    #51533
    Merlin
    Maître des clés

    Vous pouvez voir le fichier à cette adresse : ftp://193.253.231.123 accès anonyme.

    Je n’y arrive pas…
    :Euuuh:

    #51534
    infograph
    Membre

    L’accès au fichier se fait en FTP

    #51535
    alex
    Participant

    Placez ce script en ouverture de page de votre formulaire:
    //Réactivation des calques sélectionnés
    console.clear();
    console.println(“Valeur du bouton radio=”+this.getField(“Choix amphi”).value);
    //Récupération des calques de la page 2
    ocgArray=this.getOCGs(1)
    index=0;
    while(index{
    //Recherche des calques ayant pour nom, la valeur du bouton radio et “page base”
    if(ocgArray[index].name==this.getField(“Choix amphi”).value|ocgArray[index].name==”page base”)
    {
    ocgArray[index].state=true;
    console.println(ocgArray[index].name+” activé.”);
    }
    else
    {
    ocgArray[index].state=false;
    console.println(ocgArray[index].name+” désactivé.”);
    }
    index=index+1;
    }
    //console.show();

    J’ai aussi déposé votre formulaire sur le ftp avec cette correction. Ctrl-J ou Pomme-J permet d’ouvrir la console et de voir le fonctionnement.

    #51536
    alex
    Participant

    Mon script est une “rustine”, il faudrait voir pourquoi l’état des calques n’est pas conservé après enregistrement…
    Merlin, une idée ?

    #51537
    infograph
    Membre

    Super génial, çà marche…. Mille merci Alex

    #51538
    Merlin
    Maître des clés

    L’accès au fichier se fait en FTP

    Scuse la buse ! :Ooops:  :siffle:

    #51539
    Merlin
    Maître des clés

    L’affichage ou le masquage d’un calque ne modifie pas l’état d’un document, pour s’en convaincre il faut changer leur état visible/invisible dans la palette des calques : l’article “Enregistrer” du menu Fichier reste grisé, et la fermeture du document se fait sans demande d’enregistrement.

    En fait ce n’est pas la visibilité du calque qu’il faudrait modifier, mais son “Etat initial” (clic-droit sur le nom du calque > Propriétés).
    Mais cette action n’est pas proposée par Acrobat et je ne sais pas si c’est faisable en JavaScript…

    Une autre solution serait d’aplatir les calques avant l’envoi du formulaire, mais je ne sais pas si c’est faisable en JavaScript, et encore moins si c’est faisable dans Adobe Reader…
    :doute:

    Alex : ton script est donc bien plus qu’une simple rustine !
    :bravo:

    #51540
    Merlin
    Maître des clés

    A noter aussi que la gestion de l’affichage/masquage des champs de la 2e page pourrait être optimisée, voilà ce qui peut se produire même en ne naviguant que avec les boutons de la page 1, certains champs restent visibles sur un calques où ils ne devraient pas apparaîtres :

    dGMT.png

    Mais cela restera toujours un problème insoluble car même une excellente gestion via les boutons de la page 1 ne peut empêcher l’utilisateur de naviguer autrement (barre d’icônes, roulette souris, clavier,…) entre les pages et les calques…

    AMHA il faudrait faire un PDF de 6 pages, dont 5 masquées par la fonction “Modèle de page”, qui est très facilement accessible via JavaScript.
    Cette fonction se trouve se trouve dans le panneau d’outils “Traitement du document” dans Acrobat X, et dans le menu Options avancées dans les versions antérieures.
    Malheureusement c’est une fonction sur laquelle l’aide d’Acrobat est complètement muette, aussi bien en V.O. qu’en V.F.
    Ce n’est pas bien sorcier non plus, par contre la documentation JavaScript est beaucoup mieux fournie sur le sujet :
    http://www.adobe.com/devnet/acrobat/documentation.html

    Chercher : “spawnPageFromTemplate
    :)

    EDIT : ça ne fonctionne avec Adobe Reader

    :mur:

    #51541
    alex
    Participant

    On pourrait ajouter au script précédant quelques lignes de code pour masquer les champs parasites associés aux calques non visualisés.
    Eh oui, les templates, c’est fini depuis Reader 8…Il est donc judicieux d’associer des champs et des calques (avec AcroForm)

    #51542
    alex
    Participant

    Je reviens sur mon post précédant. Pour limiter l’affichage des champs de saisie à ceux du calque sélectionné, il faut les nommer de telle manière qu’un script puisse les discriminer, comme suit:
    Noms commençant par FOCH-, ne seront affichés que si le calque FOCH est activé.
    Noms commençant par DVL-, ne seront affichés que si le calque DVL est activé.
    Noms commençant par BCT-, ne seront affichés que si le calque BCT est activé.
    Noms commençant par COM-, ne seront affichés que si le calque COM est activé…
    ainsi que MOD- et AM-
    Tous les autres champs sont visibles.
    Puis ajouter un script à l’ouverture de la seconde page.

    #51543
    alex
    Participant

    Voici le script qui gère l’affichages des champs associés aux calques (exemple sur le ftp)
    La fonction GestionChamps2 est une fonction de document est lancée en ouverture de page 2.
    Trois phases:
    1-On affiche tous les champs.
    2-On masque tous les champs associés aux calques (noms commençant par FOCH,DVL,BCT…)
    3-On affiche les champs associés au calque sélectionné.

    En fait, la gestion manuelle des boutons radios ne sert à rien si on respecte bien le nommage des champs.

    function GestionChamps2()
    {
    //Gestion des champs
    console.clear();
    choix=this.getField(“Choix amphi”).valueAsString;
    console.println(“Valeur du bouton radio=”+choix);
    //Affichage de tous les champs
    indexField=0;
    while(indexField {
    nom=this.getNthFieldName(indexField);
    this.getField(nom).hidden=false;
    indexField=indexField+1;
    }
    //Masquage des champs associés aux calques
    indexField=0;
    while(indexField {
    nom=this.getNthFieldName(indexField);
    if(nom.substring(0,4)==”FOCH”|nom.substring(0,3)==”DVL”|nom.substring(0,3)==”BCT”|nom.substring(0,3)==”COM”|nom.substring(0,3)==”MOD”)
    {
    //Masquage
    this.getField(nom).hidden=true;
    console.println(“Le champ “+nom+” est masqué.”)
    }
    indexField=indexField+1;
    }
    //Affichage des champs liés au calque retenu.
    indexField=0;
    while(indexField {
    nom=this.getNthFieldName(indexField);
    if(nom.substring(0,choix.length)==choix)
    {
    //Masquage
    this.getField(nom).hidden=false;
    console.println(“Le champ “+nom+” est affiché.”)
    }
    indexField=indexField+1;
    }
    //console.show();
    }

    #51544
    infograph
    Membre

    Bonjour,
    Je constate avec plaisir que mon post évoque beaucoup d’interrogation. Merci de votre temps passé. Pour Alex, j’avais assigné la visibilité des champs en fonction du choix de la salle ainsi que pour réinitialiser le formulaire qui masquait l’ensemble des champs de la page 2 (cette fonction n’est plus prise en compte dans ta correction 2). Je vais rester sur la correction 1 en attendant qui me satisfait pleinement. De toute manière, je vais éditer une petite notice pour les futurs utilisateur à joindre avec le formulaire afin d’éviter les fausses manip signalée par Merlin.

    Merci encore à vous deux et bon vent

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