Problème champs liés après duplication de pages  (Lu 116 fois) Partager ce sujet Imprimer

1 B


souris64  09 novembre 2020 : 15:16

Bonjour,

Je dois réaliser 25 fichiers de fiches test où je donne la possibilité de dupliquer une page pour renseigner les résultats de tests.

J'ai utilisé le tuto : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/dupliquer-dynamiquement-des-pages-dans-un-pdf/ qui correspond totalement à mon besoin, mais voià, il y a quelque chose qui va pas.
 La fiche fonctionne pour une duplication mais dès que je duplique plus d'une fois, les champs des 2 pages créées sont liés et n'ont donc plus d'intéret.

Le code javascript utilisé est : this.getTemplate("AEF_PB1_09-2017-modele").spawn({nPage:3, bRename:true, bOverlay: false});
Dans le modele du tuto, les champs de chaque nouvelle page s'implémente (sais pas si c'est le bon therme) mais pas sur le mien, c'est toujours p3. Je ne comprends pas pourquoi.
J'ai aussi tenté avec le code : this.getTemplate("AEF_PB1_09-2017-modele").spawn({this.numPage, bRename:true, bOverlay: false}); la page s'intègre à la fin mais surtout les champs ne s'implémentent toujours pas et restent sur p5
 Il me semble comprendre que ca pourrait venir du fait que la page dupliquée arrive toujours au même numéro de page donc remplace la première au lieu de se mettre à la suite à chaque fois, mais sur le modèle tuto ce n'est pas le cas :/

https://abracadabrapdf.net/forum/index.php?topic=3078.0
J'ai trouvé une possible solution sur le lien ci dessus mais je ne comprends pas comment créer une variable qui permet d'implémenter la position à chaque fois.
J'espere avoir été claire, j'ai grandement besoin d'aide.
Merci d'avance de vos retours.


IP archivée


souris64  10 novembre 2020 : 10:29

Bonjour,

Merci Merlin d'avoir déplacé mon post que j'avais mal rangé.
J'ai avancé. J'ai réussi à ne pas lier les champs et à intégrer la fiche dupliquée dans le doc, avec le script :

this.getTemplate("AEF_PB2_09-2017-modele").spawn({nPage:this.pageNum++, bRename:true, bOverlay: false});
Voulant que la fiche se mette à la suite de ma page dupliquée sans lui imposer un n° de page. Mais malheureusement elle se met avant :/ :Euuuh:
Voilà, je sais plus trop quoi faire.
Si vous avez une inspi, je suis plus que preneuse.
Merci merci et bonne journée.
Marie

IP archivée


Merlin  10 novembre 2020 : 10:55

Bonjour et bienvenue

Tu as bien fait de ne pas suivre l'exemple que tu donnes en 2e lien car à mon avis utiliser une variable dans ce cas est dangereux : une variable est volatile, elle disparait quand on ferme le document et donc tout repart à zéro (donc à 3 dans ton exemple) lors de l'utilisation suivante.

Il est donc plus judicieux de placer cette variable dans un champ de formulaire (masqué et au format : Nombre), ainsi elle reste persistante même si l'utilisateur ferme le document ou quitte le logiciel.
J'ai placé ce champ masqué juste au-dessus du bouton de spawn, qui utilise ce script :

var nNumeroPage = this.getField("stock.variable1").value;
this.getTemplate("AEF_PB1_09-2017-modele").spawn({nPage:nNumeroPage, bRename:true, bOverlay: false});
this.getField("stock.variable1").value = this.getField("stock.variable1").value +1;


Exemple fonctionnel ci-joint.
 :Smiley15:


PS : je ne sais pas si tu sais sur quelles machines et avec quelle taille d'écran ton document sera utilisé, mais avec un grand écran comme le mien l'ouverture du document en pleine largeur c'est juste insupportable.  :Smiley03:

IP archivée


souris64  10 novembre 2020 : 14:12

Bonjour Magicien Merlin,

Merci c'est évidemment exactement ca!
J'ai voulu le refaire sur mes autres fichiers et en copiant la variable dans un champ de formulaire masqué et en remettant le meme script, ben tu l'auras deviné, ca marche pas. les pages dupliquées se mettent à la fin.
Est ce que tu as une idée de ce que j'aurais oublié en copiant ce process dans mes autres document de meme forme?
Merci d'avance pour ton aide précisieuse.
PS: c'est prévu pour des écrans nomades ;-)

IP archivée


Merlin  10 novembre 2020 : 16:24

As-tu adapté le nom du champ masqué dans le script ?

var nNumeroPage = this.getField("stock.variable1").value;
this.getTemplate("AEF_PB1_09-2017-modele").spawn({nPage:nNumeroPage, bRename:true, bOverlay: false});
this.getField("stock.variable1").value = this.getField("stock.variable1").value +1;



Qu'on pourrait aussi bien écrire ainsi pour ne pas répéter le nom du champ inutilement :

var cNomChamp = this.getField("stock.variable1");
var nNumeroPage = cNomChamp.value;
this.getTemplate("AEF_PB1_09-2017-modele").spawn({nPage:nNumeroPage, bRename:true, bOverlay: false});
cNomChamp.value = Number(nNumeroPage) +1;

IP archivée


Merlin  10 novembre 2020 : 16:48

PS : attention aussi que le champ masqué à une valeur par défaut (3).

IP archivée


bebarth  10 novembre 2020 : 20:57

bonjour,
Si je peux me permettre, vu que la page est toujours dupliquée en avant dernière page, il suffit de toujours la placer à cet endroit...
Donc juste :
this.getTemplate("AEF_PB1_09-2017-modele").spawn({nPage:this.numPages-1, bRename:true, bOverlay: false});
Une seule ligne de script. Pas besoin de champ invisible avec variable !
@+
 :bonjour:

IP archivée


souris64  11 novembre 2020 : 00:20

Bonsoir,

Nous avons donc ici 2 magiciens.
J'ai opté pour le code le plus simple en super novice que je suis, et ca marche.
Merci immense à vous 2 pour votre aide.
Bonne nuit!

IP archivée


Merlin  11 novembre 2020 : 11:22

2 cerveaux valent mieux qu'un seul !
 :extra:

IP archivée