Donnez vie à vos documents numériques !
 

Récupérer numéro de page dans champs de texte

abracadabraPDF Forums PDF – Général Récupérer numéro de page dans champs de texte

  • Créateur
    Sujet
  • #45058
    Donald69
    Membre

    Bonjour a tous et merci pour votre site qui m’a super bien aider,

    J’ai créé un document où j’ajoute des pages en cliquant sur un bouton . Je viens vers vous pour savoir si il existe un script qui récupère le numéro de page du document sur le nombre de page total du document afin de pouvoir numéroter les pages automatiquement au fur et a mesure que je les ajoutes.

    Merci beaucoup

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

    Bonjour,

    Sur le modèle de page il faut placer un champ de texte auquel on incorpore un script qui lui fait afficher le numéro de la page courante.

    A placer en script de calcul personnalisé (onglet Calcul) :

    Code:
    event.target.value = this.pageNum+1;

    (+1 parce-que JavaScript commence le compte à zéro)

    #58299
    Donald69
    Membre

    Merci beaucoup j’essaye ça demain. Je vais abuser de votre gentillesse, pour le champ de texte qui affiche le nombre total de page vous avez un script, svp?

    Merci beaucoup encore

    #58300
    brumbies
    Membre

    Bonjour,

    le script est

    Code:
    event.target.value = this.numPages;

    :Smiley01:

    #58301
    Donald69
    Membre

    Bonjour et encore merci.

    J’ai intégré les deux scripts mais ca marche que 1/2

    Je vous joint un exemple de ce que je veux faire.

    #58302
    brumbies
    Membre

    Bonjour,

    J’ai modifié ton fichier et ca devrait répondre à ton besoin.

    j’ai supprimé le code présent sur ton champ “numeropage1” car this.pageNum revoit systématiquement le numéro de la page ou le focus est présent, raison pour laquelle tous tes champs indiquaient le même chiffre.

    pour palier ça j’ai modifier le code présent dans ton bouton comme suit :

    Code:
    this.getField(“numeropage1”).value = this.numPages + 1;        // affecte au champ “numeropage1” le numéro de la page
    this.spawnPageFromTemplate(“annexe”, this.numPages, true);    // duplique le modèle de page “annexe” en renommant tous les champs de formulaire
                                                                  // + insère la page systématiquement en fin de document
    this.pageNum = 0;                                              // remet le focus sur la 1ère page

    l’ensemble des champs sur tes différentes pages ont un nom différent grace au paramètre “true” de spawnPageFromTemplate
    associer au fait de venir affecter à ton champs initial “numeropage1” le nombre total de page +1 permet de conserver le numéro de page distinctement sur l’ensemble des pages ajoutées.

    :Smiley01:

    #58303
    Donald69
    Membre

    Désolé du temps de réponse mais c’est nickel.
    Merci beaucoup.

    #58304
    ALFB
    Membre

    Bonjour,

    J'ai modifié ton fichier et ca devrait répondre à ton besoin.

    j'ai supprimé le code présent sur ton champ “numeropage1” car this.pageNum revoit systématiquement le numéro de la page ou le focus est présent, raison pour laquelle tous tes champs indiquaient le même chiffre.

    pour palier ça j'ai modifier le code présent dans ton bouton comme suit :

    Code:
    this.getField(“numeropage1”).value = this.numPages + 1;        // affecte au champ “numeropage1” le numéro de la page
    this.spawnPageFromTemplate(“annexe”, this.numPages, true);    // duplique le modèle de page “annexe” en renommant tous les champs de formulaire
                                                                  // + insère la page systématiquement en fin de document
    this.pageNum = 0;                                              // remet le focus sur la 1ère page

    l'ensemble des champs sur tes différentes pages ont un nom différent grace au paramètre “true” de spawnPageFromTemplate
    associer au fait de venir affecter à ton champs initial “numeropage1” le nombre total de page +1 permet de conserver le numéro de page distinctement sur l'ensemble des pages ajoutées.

    :Smiley01:

    Bonjour, je ressors ce vieux sujet des placards et merci pour ce script bien utile.
    Par contre si j'ai 4 annexes et que je supprime l'annexe N° 3, l'annexe n° 4 affiche encore n°4 et non n°3.  Comment faire cette mise à jour automatiquement pour les numéros correspondent toujours aux bons numéros de pages ?

    #58305
    brumbies
    Membre

    Bonjour,
    Pour que cela soit plus parlant, peux-tu joindre ton fichier ?  :Smiley08:

    #58306
    ALFB
    Membre

    Et voilà en PJ:
    En bas à gauche de la première page il y a un bouton “ajouter photo”. Lorsque je clique dessus, une nouvelle page est ajoutée (à partir du modèle).Je peux donc ajouter plusieurs pages. J'ai également mis un bouton “supprimer cette page” sur la page modèle.

    Exemple j'ai ajouté 3 pages et je veux supprimer la seconde. Avec le script actuel, le champ texte affichant le n° de page, gardera le N° 4 et n'est pas mis à jour suite à la suppression de la page précédente.J'espere avoir été assez explicite (pas toujours évident par écrit) mais pour moi c'est clair  :jerisjaune:

    #58307
    bebarth
    Maître des clés

    bonjour,
    Dans le script de ton bouton “Supprimer cette page”, tu supprimes la ligne “this.getField(“Text3”).value = this.numPages;“. De plus, “this.numPages” est le nombre de pages du document et non la page courante.
    En script de calcul du champ “Text3” de ta page modèle, tu écris : “event.target.value=this.pageNum+1;“, et en script d'action d'ouverture de page “this.calculateNow();“.
    cf. fichier joint.
    @+
    :bonjour:

    #58308
    ALFB
    Membre

    C'est juste parfait  :bravo:
    Merci Bonne journée et vive abracadabrapdf

    #72029
    WilliS4R
    Participant

    Bonjour à vous,

    Un fervent admirateur de votre site qui revient vers vous pour éclairer ma lanterne.

    J’ai tenté de m’inspirer des échanges mais les PJ ont disparues

    Dans mon formulaire en pj, je souhaite insérer le modèle (1 page seulement si nécessaire) après la page 3.

    Et si j’arrive à l’insérer en dernière page, je n’arrive pas à l’insérer entre 3 et 4 et je n’arrive pas à obtenir le bon numéro de pages.

     

    Merci par avance pour vos éclairages

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

    spawnPageFromTemplate” est obsolète et n’est pas supporté par la plupart des logiciels non Adobe (Foxit, PDF Studio, etc.).

    Il faut lui préférer “getTemplate” + “spawn” :

    https://opensource.adobe.com/dc-acrobat-sdk-docs/library/jsapiref/doc.html#gettemplate

     

    Le template doit se placer en page 4, dans ce cas précis c’est aussi l’avant-dernière page donc il suffit d’ajouter “-1”.

     

    this.getField("page_3").value = this.numPages + 1;
    this.getTemplate("JALONS").spawn(this.numPages-1, true, false);
    this.pageNum = 3;
    event.target.display = display.hidden;

    #72043
    WilliS4R
    Participant

    Bonjour,

    C’est parfait. Quelle rapidité 🙂

    Dernière question, une fois le masque inséré, je souhaiterai pouvoir donner la possibilité aux utilisateurs de supprimer la page insérée. Est-ce possible ?

     

    Bonne journée,

    WR

    #72044
    Merlin
    Maître des clés

    Avant de la supprimer on s’assure que la page supplémentaire a bien été générée, sinon ça supprimerait une page statique du document (dans Pro et Standard) ou ça ne fonctionnerait pas (dans Reader, qui ne peut supprimer que des pages “spawnées”, pas les pages statiques) :

     

    if (this.numPages > 4) { // s'il y a plus que 4 pages
    this.deletePages({nStart: 3, nEnd: 3}); // suppresion de la page 4
    }

    #72054
    WilliS4R
    Participant

    Bonjour,

    Merlin merci pour ta réponse. C’est parfait comme toujours !

    Je ferai donc apparaître ce bouton à l’issue de la création de la page. top !

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