abracadabraPDF › Forums › PDF – Général › Numéro de page
- Ce sujet contient 19 réponses, 3 participants et a été mis à jour pour la dernière fois par michel c., le il y a 2 années et 2 mois.
-
CréateurSujet
-
13 octobre 2022 à 09:50 #71559michel 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
-
CréateurSujet
-
AuteurRéponses
-
13 octobre 2022 à 17:46 #71561michel c.Participant
Je viens de tester :
this.event.value = event.target.page
; sur chacun de mes champs mais cela ne donne rien…14 octobre 2022 à 05:46 #71562michel c.ParticipantBonjour, 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.14 octobre 2022 à 08:21 #71564michel c.ParticipantJe viens de trouver en ajoutant :
this.calculateNow();
14 octobre 2022 à 11:37 #71566MerlinMaître des clésBonjour
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é.
14 octobre 2022 à 15:11 #71567michel c.ParticipantBonjour, 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.
14 octobre 2022 à 15:33 #71568MerlinMaître des clésLe 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 !
😉
14 octobre 2022 à 17:43 #71569bebarthMaître des clésbonjour,
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…@+
😎15 octobre 2022 à 08:21 #71570michel c.ParticipantJe 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…
15 octobre 2022 à 17:08 #71571bebarthMaître des clésSinon, 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…
@+
😎16 octobre 2022 à 06:52 #71574michel c.ParticipantJe 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.
16 octobre 2022 à 09:58 #71576michel c.ParticipantJ’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.16 octobre 2022 à 20:00 #71578bebarthMaître des clésbonjour,
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 2 années et 2 mois par bebarth.
17 octobre 2022 à 11:08 #71586michel c.ParticipantMerci, 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});}
18 octobre 2022 à 08:31 #71587MerlinMaître des clésLe 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.
18 octobre 2022 à 09:24 #71588bebarthMaî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.@+
😎18 octobre 2022 à 10:46 #71589MerlinMaître des clésEn 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 !
🤓
18 octobre 2022 à 12:22 #71594michel c.ParticipantSi 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.
18 octobre 2022 à 15:41 #71612MerlinMaître des clésJ’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. 😉
18 octobre 2022 à 22:20 #71628michel c.ParticipantOui, 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.
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.