Donnez vie à vos documents numériques !
 

Script de visibilité de calques et champs de formulaires

abracadabraPDF Forums PDF – Général Script de visibilité de calques et champs de formulaires

  • Ce sujet contient 13 réponses, 2 participants et a été mis à jour pour la dernière fois par Merlin, le il y a 8 mois.
  • Créateur
    Sujet
  • #73163
    jpc
    Participant

    Bonjour à toutes et à tous !

    J’ai essayé de faire un formulaire pdf avec boutons, dans l’idée de celui-ci : https://www.abracadabrapdf.net/pdf-de-demo/formulaires/affichette-chartee-personnalisable/

    Seulement, mes scripts fonctionnent sur Acrobat Pro mais pas sur Reader…

    Sur le fichier, on doit pouvoir choisir entre 3 titres (calques Indesign) et 3 Offres qui affiche plus ou moins de champs de textes à remplir (calques indesign et champs de textes).

    Scripts de sélection des titres :

    Souris relâchée

    var docOCGs = this.getOCGs();
    for (var i=0; i < docOCGs.length; i++)
    {
    switch(docOCGs.name)
    {
    case "slogan1":
    docOCGs.initState = true;
    docOCGs.state = true;
    break;
    case "slogan2":
    docOCGs.initState = false;
    docOCGs.state = false;
    break;
    case "slogan3":
    docOCGs.initState = false;
    docOCGs.state = false;
    break;
    }
    }

    Script pour l’affichage ou non de champs de formulaire :

    Souris relâchée

    this.getField("1.1ligne-1").display = display.visible;
    this.getField("1.2ligne-1").display = display.visible;
    this.getField("1.1ligne-2").display = display.hidden;
    this.getField("1.2ligne-2").display = display.hidden;
    this.getField("2ligne-2").display = display.hidden;
    this.getField("1.1ligne-3").display = display.hidden;
    this.getField("1.2ligne-3").display = display.hidden;
    this.getField("2ligne-3").display = display.hidden;
    this.getField("3ligne-3").display = display.hidden;

    Aussi, quand je fais une exportation avec Indesign > Pour impression > Créer des calques Acrobat, il me crée un “dossier” de calque avec le nom du fichier .indd, à la différence du fichier ‘Affichette” qui a tous les calques à la racine.

    Merci de votre aide !

    PS: Je suis un noob de javascript, je ne l’utilise jamais, sauf sur quelques fichiers pdf.

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

    Bonjour

     

    Depuis InDesign il faut exporter en PDF interactif, pas en PDF impression.

    Le “dossier” de calques n’a aucune importance, ça ne change pas leur comportement ni les scripts à utiliser. On peut cependant le supprimer en utilisant cet utilitaire gratuit : https://www.uvsar.com/projects/acrobat/indesignfixups/

    Pour masquer le calque Grilles et repères (en Français) il faut éditer le script de cet utilitaire et y remplacer “Guides and Grids” par “Grilles et repères“. Mais ça n’a pas d’importance non plus, ce calque n’est pas gênant.

     

    Ton script ne fonctionne pas sur Reader car cette ligne :
    docOCGs.initState = true;
    provoque une erreur et donc l’arrêt de l’exécution du script, parce-que Acrobat Reader ne peut pas modifier l’état initial des calques (initState). Il ne permet que de les afficher/masquer (state) temporairement.

    Ce qui signifie qu’ils reviennent systématiquement à leur état initial à chaque réouverture du document. Pour remédier à cet inconvénient il faut utiliser le script proposé dans ce sujet : https://www.abracadabrapdf.net/forums/topic/enregistrer-la-visibilite-des-calques-ogc-apres-le-remplissage-du-formulaire/

     

     

    #73165
    Merlin
    Maître des clés

    Astuce :

    Si les champs de formulaire sont créés dans InDesign sur les calques correspondants il s’affichent et se masquent en même temps que le calque auquel ils sont attachés, sauf…

    Sauf si on a eu le malheur de les déplacer ou de les couper/copier/coller dans Acrobat Pro, ce qui les “détache” de leur calque. Mais on peut modifier leurs propriétés sans problème avec Acrobat Pro, ils restent attachés à leur calque tant qu’on ne les déplace pas.

    #73166
    jpc
    Participant

    Le fait d’exporter en PDF interactif ne gène pas pour l’impression ? Car ce sont des documents qui seront forcément imprimés par la suite.

    Mon document InDesign est fait avec un profil CMJN et il me demande de convertir en RVB avant de l’exporter en PDF interactif.

    #73167
    Merlin
    Maître des clés

    Pour quel type d’impression, Offset ou imprimante ?

    En tout cas ça fait longtemps que les documents à imprimer sont conçus et exportés en RVB, ça permet d’exploiter au mieux le rendu colorimétrique de chaque procédé d’impression.

    #73168
    jpc
    Participant

    Pour impression numérique classique dans une imprimerie, généralement ils recommandent d’utiliser un profil CMJN pour éviter des couleurs trop flash quand on doit convertir le profil RVB en CMJN.

    Sinon, concernant le fichier, ça marche bien, sauf quand il y a le nouvel enregistrement, en figeant les champs. Tout est bien, sauf le calque de boutons. Ce qui est bizarre puisque c’est la même méthode que les autres. Il est bien caché au moment de l’enregistré mais quand on le rouvre, il est de nouveau visible.

    Code du bouton :

    var docOCGs = this.getOCGs();
    for (var i=0; i < docOCGs.length; i++)
    {
    switch(docOCGs.name)
    {
    case "boutons":
    docOCGs.state = false;
    break;
    }
    };
    this.getField("1avantage").display = display.hidden;
    this.getField("2avantages").display = display.hidden;
    this.getField("3avantages").display = display.hidden;
    this.getField("slogan1").display = display.hidden;
    this.getField("slogan2").display = display.hidden;
    this.getField("slogan3").display = display.hidden;
    this.getField("Export").display = display.hidden;

    for (var i = 0; i < 25; i++) {
    var fname = this.getNthFieldName(i);
    var f = this.getField(fname);
    f.readonly = true;
    };
    GestionCalques();

    Et ensuite, une commande menu pour enregistrer sous.

    Merci de votre aide !!

    #73169
    Merlin
    Maître des clés

    Pour impression numérique classique dans une imprimerie, généralement ils recommandent d’utiliser un profil CMJN pour éviter des couleurs trop flash quand on doit convertir le profil RVB en CMJN.

    C’est surtout pour éviter les réclamations des clients déçus qui ont envoyé des documents avec des couleurs RVB bien flashy, mais je suppose que ce n’est pas le cas de ce document. 😉

     

    Tout est bien, sauf le calque de boutons.

    Là il faudrait que tu partages (tout ou partie de) ce document pour qu’on puisse juger sur pièce.

    #73170
    jpc
    Participant

    Voilà le lien du document : https://cloud.mymetic.agency/index.php/s/WNSDtbF8E4GYkEj

    Merci de l’aide !

    Aussi, est ce que vous avez un tips pour tester des documents avec Reader ? Car comme j’ai Creative Cloud et Acrobat Pro, Adobe ne me laisse pas installer Reader…

    #73171
    Merlin
    Maître des clés

    Aussi, est ce que vous avez un tips pour tester des documents avec Reader ? Car comme j’ai Creative Cloud et Acrobat Pro, Adobe ne me laisse pas installer Reader…

    Oui, comme je suis dans le même cas Adobe m’a forcé à installer Foxit Reader qui est son principal concurrent et j’ai découvert un excellent logiciel.

    Et comme un bonheur ne vient jamais seul, Foxit Reader force à être plus soigneux dans l’utilisation des scripts car il ne supporte pas les fonctions JavaScript obsolètes. Les documents y gagnent donc beaucoup en pérennité.

    😎

    #73172
    Merlin
    Maître des clés

    Tout est bien, sauf le calque de boutons.

    Quand on masque tous les calques du document on voit tous les champs de formulaires qui ne sont pas attachés à un calque, dont les boutons (voir ci-joint).

    Donc il faut soit refaire le document dans InDesign en plaçant soigneusement les champs boutons sur le calque approprié (Acrobat ne sait pas gérer ça), soit gérer la visibilité des champs boutons en plus de celle du calque.

    Attachments:
    You must be logged in to view attached files.
    #73177
    jpc
    Participant

    Oui, comme je suis dans le même cas Adobe m’a forcé à installer Foxit Reader qui est son principal concurrent et j’ai découvert un excellent logiciel.

    Super !! merci beaucoup !

    Quand on masque tous les calques du document on voit tous les champs de formulaires qui ne sont pas attachés à un calque, dont les boutons (voir ci-joint).

    Il s’agit du calque “boutons”, pas des champs de formulaire. Quand on fait des modifications, que l’on clique sur “Exporter” et que l’on enregistre le nouveau document, cela fonctionne. Mais une fois que l’on ferme le document et qu’on le rouvre, le calque “boutons” réapparait.. Les champs de formulaire n’ont pas de problèmes, ils sont bien cachés.

    #73181
    Merlin
    Maître des clés

    Quand on clique sur le bouton Export la console renvoie une erreur dans la dernière (et 2e) boucle “for” du script contenu dans ce bouton :

    TypeError: f is null
    22:Field:Mouse Up

    C’est ce qui doit empêcher la fonction GestionCalques(), qui vient ensuite, de s’exécuter. Parce-qu’une erreur bloque le script, ce qui suit ne s’exécute pas.

     

    Dans ce script tu devrais remplacer :

    for (var i = 0; i < 25; i++) {
    var fname = this.getNthFieldName(i);
    var f = this.getField(fname);
    f.readonly = true;
    };

     

    Par :

    for (var i=0; i<this.numFields; i++) {
    var oFld = this.getField(this.getNthFieldName(i));
    oFld.readonly = true;
    }

    #73184
    jpc
    Participant

    C’est super, ça fonctionne parfaitement !!

    Merci beaucoup !!!!

    #73186
    Merlin
    Maître des clés

    👍

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