Donnez vie à vos documents numériques !
 

Numéro de page

abracadabraPDF Forums PDF – Général Numéro de page

  • Créateur
    Sujet
  • #71559
    michel c.
    Participant

    Bonjour, je souhaiterais savoir comment récupérer l’info du numéro de page pour que celui ci apparaisse dans un champ

    En bas de chaque page j’ai un champ num-1 ; num-2…

    dans lequel je voudrais que le numéro de la page soit inscrit

    this.getField("num-1").value = ???

    this.getField("num-2").value = ???

    Je voudrais faire cela car en cas de suppression de page, je souhaiterais que la numérotation reste bonne.

     

    Merci

Affichage de 19 réponses de 1 à 19 (sur un total de 19)
  • Auteur
    Réponses
  • #71561
    michel c.
    Participant

    Je viens de tester : this.event.value = event.target.page; sur chacun de mes champs mais cela ne donne rien…

    #71562
    michel c.
    Participant

    Bonjour, je viens de réussir mais j’ai un bouton sur chaque page (sauf sur la dernière) permettant de supprimer la page suivante.

    Le bouton fonctionne bien, cependant le numéro de page ne s’actualise pas. Je ne vois pas trop comment faire…

     

    Merci

    Attachments:
    You must be logged in to view attached files.
    #71564
    michel c.
    Participant

    Je viens de trouver en ajoutant :

    this.calculateNow();

    #71566
    Merlin
    Maître des clés

    Bonjour

     

    this.getField("nomduchamp").page

    Retourne le numéro de la page sur laquelle se trouve le champ (attention le compte commence à zéro).

    Si la valeur -1 est retournée ça signifie que le champ se trouve sur une page template masquée.

    Si le champ se trouve sur plusieurs pages c’est un array qui est retourné.

    #71567
    michel c.
    Participant

    Bonjour, je ne vois pas ce qu’est une page template ni comment on la déclare comme tel (je ne suis pas sous acrobat DC mais sur Pdf XChange Editor)

    Sinon, j’avais vu que la 1ère page portait le numéro 0 et qu’il fallait mettre des champs de noms différents pour que cela fonctionne.

    Je n’ai pas mis de bouton sur la dernière page non plus car il me semble que l’on ne peut pas effacer la page sur laquelle se trouve le bouton.

    #71568
    Merlin
    Maître des clés

    Le truc c’est qu’il faut se méfier des champs présents sur plusieurs pages, car généralement on prévoit de recevoir une valeur « nombre » et on reçoit une valeur « array », ce qui provoque une erreur.

     

    Je n’ai pas mis de bouton sur la dernière page non plus car il me semble que l’on ne peut pas effacer la page sur laquelle se trouve le bouton.

    À tester !

    😉

    #71569
    bebarth
    Maître des clés

    bonjour,
    Attention, si on supprime la dernière page à l’aide du bouton de l’avant dernière, cette page devient la dernière et n’a donc plus besoin de ce bouton ! Il faudrait donc penser à le supprimer mais on ne peut le faire directement avec le script qui supprime la dernière page (on ne peut pas supprimer un bouton déclencheur d’un script). Je pense donc à un script d’ouverture de page qui testerait si c’est la dernière page et qu’elle contient un bouton pour la suppression de la page suivante…

    @+
    😎

    #71570
    michel c.
    Participant

    Je n’y avais pas pensé. Je vais me pencher là  dessus. Il faut que je m’active, je dois donner les fichiers aux élèves lundi après midi…

    #71571
    bebarth
    Maître des clés

    Sinon, sans supprimer ce bouton via un script d’ouverture de page, tu peux le cacher après avoir exécuté l’action de suppression de la dernière page…

    @+
    😎

    #71574
    michel c.
    Participant

    Je viens de modifier le script associé au bouton de l’avant dernière page : en ajoutant cette ligne : if (numpage = this.numPages – 1) {this.getField(« supp_PS49″).display = display.hidden};

    Et ça à l’air de fonctionner. Voici le script complet.

    var numpage = (event.target.page+1);

    var cResponse = app.response({
    //Attention, opération irréversible !
    cQuestion:
     »
    \u0041\u0074\u0074\u0065\u006e\u0074\u0069\u006f\u006e\u002c\u0020\u006f\u0070\u00e9\u0072\u0061\u0074\u0069\u006f\u006e\u0020\u0069\u0072\u0072\u00e9\u0076\u0065\u0072\u0073\u0069\u0062\u006c\u0065\u0020\u0021
    « ,
    //Supprimer la page suivante?
    cTitle:
     »
    \u0053\u0075\u0070\u0070\u0072\u0069\u006d\u0065\u0072\u0020\u006c\u0061\u0020\u0070\u0061\u0067\u0065\u0020\u0073\u0075\u0069\u0076\u0061\u006e\u0074\u0065\u003f
    « ,
    cDefault: «  »,
    //Saisir le code
    cLabel:  » \u0053\u0061\u0069\u0073\u0069\u0072\u0020\u006c\u0065\u0020\u0063\u006f\u0064\u0065  »
    });
    if (cResponse == « 4096 »){
    if (numpage = this.numPages – 1) {this.getField(« supp_PS49″).display = display.hidden};
    else if {this.deletePages(numpage);
    numeroPage();
    app.alert({cMsg: »Fait », nIcon:3});
    }}
    else {app.alert({cMsg: »Opération annulée », nIcon:3});}

    Par contre, je ne sais pas trop comment faire pour que se script fonctionne pour cacher tous les boutons supp_PS… qui peuvent se retrouver sur la dernière page après suppression d’autres pages.

    #71576
    michel c.
    Participant

    J’ai trouvé une solution qui est plus acceptable : je gère la suppression des pages depuis la 1ère page avec un menu déroulant qui permet de choisir la page à effacer, la page à effacer qui s’affiche en plein écran avec boite de dialogue de confirmation.

    Ainsi je paramètre d’emblée qu’aucune des 12 premières page puisse être effacée, la page contenant le bouton ne peut donc pas l’être.

    Par contre un truc que je n’arrive pas à faire : que le code dans la boite de dialogue de confirmation ne s’affiche pas en clair (pas trop grave car je viens de penser à une astuce qui me permettrait de contourner ce problème)

    Attachments:
    You must be logged in to view attached files.
    #71578
    bebarth
    Maître des clés

    bonjour,
    Je ne pense pas que cela soit possible de cacher la frappe d’une boite de dialogue, mais tu pourrais ajouter un champ avec l’option « Mot de passe » !
    Une remarque, il faudrait peut-être mettre à jour le menu déroulant lorsqu’on supprime une page….

    …et on n’écrit pas : if (numpage = this.numPages – 1)  mais : if (numpage == this.numPages – 1)

    @+
    😎

    • Cette réponse a été modifiée le il y a 1 mois et 2 semaines par bebarth.
    #71586
    michel c.
    Participant

    Merci, je vais corriger çà bien que je crois ne plus avoir besoin des boutons en bas de page.

    Pour la mise à jour de la liste déroulante une fois les pages supprimées, pour l’instant je ne vois pas trop comment faire mais je vais chercher.

    Concernant le mot de passe, en fait, je souhaite un mot de passe pour pas que les élèves suppriment une page accidentellement et qu’ils sauvegardent après.

    Le contournement que j’ai trouvé c’est de générer un nombre aléatoire qui s’affiche dans la boite de dialogue.

    A partir de ce nombre il faut saisir un code qui est fonction de ce dernier. Les élèves seront donc dans l’obligation de me demander avant la suppression d’une page.

    Voici mon code concernant la suppression de page :

    var page = (this.getField("PageNumber").value);
    var numpage = this.getField("PageNumber").value-1;
    var Nb1=(Math.floor(Math.random()*9))+3;
    var Nb2=(Math.floor(Math.random()*90))+1;
    var codeok = ((5*Nb1)+(Nb2));

    this.pageNum = numpage;
    this.zoomType = zoomtype.fitP;
    var cResponse = app.response({
    //Attention, opération irréversible !
    cQuestion: " \u0041\u0074\u0074\u0065\u006e\u0074\u0069\u006f\u006e\u002c\u0020\u006f\u0070\u00e9\u0072\u0061\u0074\u0069\u006f\u006e\u0020\u0069\u0072\u0072\u00e9\u0076\u0065\u0072\u0073\u0069\u0062\u006c\u0065\u0020\u0021 ",
    //Supprimer la page
    cTitle: "\u0053\u0075\u0070\u0070\u0072\u0069\u006d\u0065\u0072\u0020\u006c\u0061\u0020\u0070\u0061\u0067\u0065\u0020 " + page + "?",
    cDefault: "",
    //Saisir le code
    cLabel: " \u0053\u0061\u0069\u0073\u0069\u0072\u0020\u006c\u0065\u0020\u0063\u006f\u0064\u0065 " +" - " + Nb1 + "," + Nb2
    });
    if (cResponse == codeok){
    this.pageNum = numpage;
    this.deletePages(numpage);
    numeroPage();
    this.calculateNow();
    //Fait
    app.alert({cMsg:"\u0046\u0061\u0069\u0074 ", nIcon:3});
    }
    //Opération annulée
    else {this.pageNum = 0;
    app.alert({cMsg:"\u004f\u0070\u00e9\u0072\u0061\u0074\u0069\u006f\u006e\u0020\u0061\u006e\u006e\u0075\u006c\u00e9\u0065", nIcon:3});}

    #71587
    Merlin
    Maître des clés

    Le contournement que j’ai trouvé c’est de générer un nombre aléatoire qui s’affiche dans la boite de dialogue.

    A partir de ce nombre il faut saisir un code qui est fonction de ce dernier.

    Je ne comprend pas comment le script peut reconnaître un « code » qui est en fonction d’un nombre aléatoire.

    Merci d’expliquer à un sous doué en math.

    #71588
    bebarth
    Maître des clés

    …il faut juste connaitre la logique de calcul de ce nombre qui est 5 fois Nb1 plus Nb2. Seule la construction se fait avec 2 nombres aléatoires qui sont affichés dans la boite de dialogue.
    Mais si un élève arrive à lire le script il pourra facilement déduire cette logique ! Il en est de même avec un champ texte avec option mot de passe même s’il est indiqué en unicode.

    @+
    😎

    #71589
    Merlin
    Maître des clés

    En fait je suis plus grave que je croyais, je ne comprend même pas quel code il faut saisir dans la 1re boite de dialogue !

    🤓

    #71594
    michel c.
    Participant

    Si la boite de dialogue affiche 7,5 c’est en fait les valeurs aléatoires affectées aux variables Nb1 et Nb2 (donc 7 et 5) séparés par une virgule.

    Il suffit de saisir le résultat du calcul (7×5) + 5 → soit 40 (5 fois le nombre 1 + le nombre 2)

    Pour confirmer la suppression.

    En fait ce fichier sera un dossier pré-rempli que les élèves devront compléter mais pour ne pas avoir de pages blanches je voulais permettre la suppression de pages tout en vérifiant moi-même qu’ils ne suppriment pas une page par erreur.

    Leur version du logiciel que j’utilise ne leur permet pas d’éditer les formulaires et de toute façon ici c’est sans intérêt pour eux d’essayer de cracker ce code.

    Le vrai moyen de cracker pour eux c’est de noter les codes proposés et ceux que je saisis et d’arriver à faire la corrélation entre les deux pour retrouver la formule magique. Mais je leur demanderai de détourner le regard lorsque je saisirais le code.

     

    • Cette réponse a été modifiée le il y a 1 mois et 2 semaines par michel c..
    • Cette réponse a été modifiée le il y a 1 mois et 2 semaines par michel c..
    #71612
    Merlin
    Maître des clés

    J’ai enfin compris, merci, mais il faut être fort en calcul mental.

     

    Ce ne serait plus simple de mettre une alerte du style : « Voulez-vous vraiment supprimer la page numéro N ?   Cette opération ne pourra pas être annulée. »

    Tu pourrais même en mettre plusieurs à la suite. 😉

    #71628
    michel c.
    Participant

    Oui, c’est plus simple et c’est ce que j’ai fait au début, mais après réflexion je me suis dit qu’il y allait forcément y avoir un cas pour lequel ça va arriver (j’aurai une trentaine d’élèves par an sur ce type de dossier)

    Et si l’élève a déjà bien rempli son dossier, il est bon pour faire un copié/collé de tout les champs vers un nouveau formulaire vide et de refaire entièrement la page supprimée….

    Travaillant sur des formulaires pdf pour la saisie de cours, exercices…Il est relativement fréquent qu’un élève quitte le logiciel sans sauvegarder.

    Là je ne veux pas prendre de risque car ces dossiers seront le résultat d’un an de travail.

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