Donnez vie à vos documents numériques !
 

Calque OCG afficher-masquer

abracadabraPDF Forums PDF – Général Calque OCG afficher-masquer

Étiqueté : 

  • Créateur
    Sujet
  • #73218
    josh
    Participant

    Bonjour,

    j’ai un script qui me permet de changer, via une liste déroulante, mes calques.

    Il marche très bien, mais étrangement quand je vais dans le sens (liste déroulante) de cartoon-1 à cartoon-6 les calques se superposent (ils restent tous activés) alors que quand je le fais de cartoon-6 à cartoon-1, les calques marchent très bien. Sinon, je choisis l’option choisir dans la liste déroulante et là tout marche très bien.

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

    C’est effectivement curieux, mais je ne suis pas l’auteur de ce script et je ne comprend pas comment il fonctionne, donc avant de l’exécuter j’y ajouterai une commande pour préalablement masquer tous les calques.

    if (event.willCommit) {
    var ocgArray1 = this.getOCGs();
    for (var i=0; i < ocgArray1.length; i++) {ocgArray1.state = false;}
    this.getOCGs().some(function(a){return a.state = (a.name==event.value);});
    }

    Et pour bien faire il faudrait soit supprimer l’intitulé “Choisir”, soit réafficher le calque 6 par défaut pour éviter d’avoir une page blanche.

     

    #73223
    josh
    Participant

    Merci merlin, mais ça ne marche pas. Pour info ce petit script est de thom parker . de 6 a 1 pas de souci, mais de 1 à 6 toujours pareil et si tu enlèves choisir cela ne marche pas. J’ai essayé dans acrobat pro et PDF xchange et le résultat est le même.

    Thom  dit qu ‘en validant immédiatement tout va bien.

    Je te mets le lien de la discussion :

    https://community.adobe.com/t5/acrobat-sdk-discussions/using-javascript-action-in-dropdown-to-hide-show-a-layer/m-p/9434978

     

    merci

     

     

    #73225
    bebarth
    Maître des clés

    bonjour,
    Voici mon script à moi ! 😉
    if (!event.willCommit) {
    var lesCalques=this.getOCGs();
    for (var ii=0; ii<lesCalques.length; ii++) lesCalques[ii].state=false;
    for (var ii=0; ii<lesCalques.length; ii++) {
    if (lesCalques[ii].name==event.changeEx) {
    lesCalques[ii].state=true;
    break;
    }
    }
    }

    @+
    😎

    PS : Indice ii au lieu de i à cause d’un problème d’affichage losque i est entre crochets…

    • Cette réponse a été modifiée le il y a 1 année et 2 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    #73227
    josh
    Participant

    Merci,

    Comme d’hab réponse parfaite. puis-je avoir une explication pour quoi celui de thom marche dans un sens et pas dans l’autre.

    Merci beaucoup.

    #73229
    bebarth
    Maître des clés

    Avant de rendre un calque visible, ils faut les rendre tous non visibles, sinon si on choisi un calque sur un plan avant ça fonctionne mais si il est sur un plan arrière ça ne fonctionne pas.
    Il faudrait donc écrire pour rester dans son style :
    if(event.willCommit) {
    this.getOCGs().some(function(a){return a.state = false};);
    this.getOCGs().some(function(a){return a.state = (a.name==event.value);});
    }

    @+
    😎

    #73230
    josh
    Participant

    Merci pour cette réponse très instructive.

    J’ai essayé ton deuxième script, mais il ne marche pas chez moi.

    Merci encore.

     

    #73238
    bebarth
    Maître des clés

    bonjour,
    Sauf erreur, ça fonctionne dans ce fichier joint !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #73247
    josh
    Participant

    Bonjour,

    la modification est subtile, mais maintenant ça marche nickel.

    Merci.

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