Donnez vie à vos documents numériques !
 

noepix

Toutes mes réponses sur les forums

Affichage de 8 réponses de 1 à 8 (sur un total de 8)
  • Auteur
    Réponses
  • noepix
    Membre

    Tout à fait !

    J’ai bien compris l’ensemble de la fonction en place. Honnêtement, je n’aurais jamais pensé à créer des champs invisibles pour créer une valeur à partir de laquelle baser le positionnement des pages (entre autre). C’est très malin !

    Ca m’encourage à réfléchir davantage à des manières de contourner un obstacle quand je ne trouve pas une fonction faisant exactement ce que je veux, sans astuces ni détours.

    Je vais continuer à découvrir de nouvelles manières d’utiliser les PDFs efficacement

    à bientôt

    :bonjour:

    noepix
    Membre

    Bonjour à vous deux,
    J’ai pu me pencher de nouveau sur mon problème hier et grâce à vos explications et à vos exemples, j’ai pu mettre en place un code qui fonctionne et qui fait exactement ce que je souhaite !
    J’ai pu adapter ce que vous m’aviez répondu afin qu’il corresponde à mon fichier, ce qui m’a donné le code suivant pour le cas 01 sur la case “Oui” :

    Code:
    var nbPages=this.getField(“cas02”).value+this.getField(“cas03A”).value+this.getField(“cas03B”).value+this.getField(“cas04”).value;
    if (event.target.value==”Oui” && this.getField(“cas01”).value==0) {
        this.spawnPageFromTemplate({
            cTemplate: “01p1”,
            nPage: this.numPages-(2+nbPages),
            bRename: false,
            bOverlay: false
        });
        this.spawnPageFromTemplate({
            cTemplate: “01p2”,
            nPage: this.numPages-(2+nbPages),
            bRename: false,
            bOverlay: false
        });
        this.getField(“cas01”).value=2;
        this.pageNum=3;
    }

    Et pour le cas 01 lorsque la case non a été coché celà donné :

    Code:
    var nbPages=this.getField(“cas02”).value+this.getField(“cas03A”).value+this.getField(“cas03A”).value+this.getField(“cas04”).value;
    if (event.target.value==”Non” && this.getField(“cas01”).value==2) {
        this.deletePages({
            nStart: this.numPages-(2+nbPages+2),
            nEnd: this.numPages-(2+nbPages+1)
        });
        this.getField(“cas01”).value=0;
    }

    Je joins mon fichier d’exemple entièrement fonctionnel en démo au cas où certains rencontreraient le même genre de problème à l’avenir.Encore merci à tout les deux et très bonne journée,

    :bonjour:

    noepix
    Membre

    Bonjour Bebarth,

    Merci beaucoup, c’est exactement ce que je veux effectivement !

    En revanche chacun de mes cas comportent 2 ou 3 pages de template selon les cas. J’ai crée un template par page. Auparavant, ajouter 2 “executer un script javascript” successif fonctionnait, mais pas avec ce nouveau code…
    Pour ce qui est de tes champs invisibles je ne vois pas à quoi ils servent en revanche. Je n’ai pas vu une seule valeur qui leur est lié dans propriétés et pourtant tu les cite dans ta fonction… Comment les définis tu ?
    En réalité mon fichier comporte un Cas 01, un cas 02, un cas 03-A un cas 03-B et un cas 04, donc je vais devoir modifier ceci, mais je ne comprends pas comment tu l’as mis en place…
    Merci beaucoup encore une fois à vous deux de m’aider sur ce fichier ! :bonjour:

    noepix
    Membre

    Bonjour Merlin,

    Merci pour ta réponse. Effectivement grâce à cela j’ai mieux compris cette fonction spawn et surtout j’ai pu la corriger.
    Ainsi, à présent j’ai mis en place ceci sur le bouton radio oui :this.getTemplate(“01_A”).spawn({nPage:1, bRename:false, bOverlay: false});
    this.getTemplate(“01_B»).spawn({nPage:2, bRename:false, bOverlay: false});
    Afin de faire apparaitre mes 2 pages de mon premier template.

    En revanche, pour les faire disparaitre, je me retrouve face à un problème.

    Je souhaiterais pouvoir déterminer quelles pages supprimer, sans passer par le numéro de pages mais en spécifiant son identifiant de template.

    Je m’explique :
    Quand mon client arrive devant les quatres options, il peux en sélectionner avec oui ou non les options qu’il désire. Mais si il ne souhaite pas la première option, il va sélectionner “non”. Il ne faut pas alors que des pages soient supprimés, je ne peux donc pas coder que “non” signifie supprimer la page 2. Mais si il met “oui”, la page pour la première option va se générer après la page du choix, donc en page 2. Si alors il se ravise et met non, il faut que cette pages soit supprimée… mais le non ne peux pas dire “supprimer page 2″…De même si il dit oui à l’option 3 (qui sera ajoutée en tant que page 2 à ce moment là) puis ensuite met non aux autres options, il ne faut pas que le non supprime ma page 2 ajoutée pour l’option 3…

    J’ai essayé ceci :this.deletePages({nStart: “01_A”, nEnd: “01_B”});
    “01_A” et “01_B” étant les noms des deux pages de ma première option, mais cela ne fonctionne pas pas…

    Auriez vous une idée pour supprimer la page en fonction de son modèle de template et non de sa numérotation ?
    Je joint un fichier d’exemple afin que ce soit plus clair (je l’espère)

    Merci
    :Smiley01:

    noepix
    Membre

    Bonjour à tous,

    J’aurais plusieurs questions quand à la fonction spawn mise en place hier. 

    Comme énoncé hier, j’ai utilisé la fonction spawn suivante, trouvée sur un site expliquant la mise en place de cette fonction :
    var sName = “MyTemplateName”;var a = this.templates;for (i = 0; i < a.length; i++) {if(a.name == sName) {a.spawn(this.numPages, false, false);break;}} 
    Très honnêtement, je ne comprends pas l’ensemble de cette fonction, mais elle fonctionne pour me générer les pages de mon template. Le problème c’est qu’elle me génère autant de pages que le nombre de fois ou j’appuie sur oui… j’aurais besoin d’un seul exemplaire de chaque, peut on limiter cela ?

    Autre problème, je ne trouve pas ce que je dois écrire pour mettre en place la fonction .deletePages. J’ai fait des recherches mais je ne trouve pas. Pourriez vous me donner un exemple de ce qu’il faut écrire pour que mon option “non” masque mon template ?

    J’aurais également une question quand au positionnement des pages générées. J’ai besoin que les pages générées ne se placent pas en dernier mais en page 5. Ma dernière page est une page fixe sur laquelle vient la signature du client, donc j’ai besoin de la placer toujours en dernier. Commet puis-je définir cette place lors de la création de la page ? 

    Avant, avec ma fonction this.getTemplate, je faisais disparaitre ma dernière page, faisais apparaitre le pages voulues puis faisais réapparaitre ma dernière page. Si j’ai bien compris, cette fonction spawn ne fait pas apparaitre/disparaitre mais crée et supprime (donc perd les données intégrées dessus si on la supprime) c’est bien cela ? 

    Merci pour votre aide,
    :bonjour:

    noepix
    Membre

    Bonjour Merlin,

    Merci pour ta réponse très complète.

    Je viens effectivement de remplacer ma fonction “this.getTemplate” par la suivante :

    var sName = “MyTemplateName”;var a = this.templates;for (i = 0; i < a.length; i++) {if(a.name == sName) {a.spawn(this.numPages, false, false);break;}}
    Je viens de faire un essai rapide et il semblerait que ça fonctionne ! Je vais de ce pas décliner l’ensemble des pages.

    En revanche, que donnera cette fonction sous une version X ou antérieure ? Comme je le disais, mon client va transmettre ce PDF à ses nouveaux clients et je crains qu’ils n’aient pas tous un logiciel à jour…
    Merci à vous deux pour votre aide précieuse.

    noepix
    Membre

    Aïe, j’avais peur de recevoir cette réponse justement…
    Dans ce cas si je ne peux pas faire en sorte de faire apparaitre les pages correspondantes à l’option choisi grâce aux templates, est ce que je peux utiliser un autre moyen ?

    Comment pourrais je faire en sorte d’ajouter à mon document une page définie lorsque l’on sélectionne “oui” avec une solution compatible avec acrobat reader ? Auriez vous une suggestion?

    Merci de votre réponse,

    noepix
    Membre

    Bonjour bebarth,

    Merci pour ta réponse.

    Mon client utilise Acrobat Reader sur PC. J’ai également testé mon PDF avec le acrobat reader sur mon ordinateur et le javascript ne fonctionne pas. En revanche, si j’utilise Acrobat Pro, ça fonctionne.

    Merci pour ta proposition de regarder. Tu trouveras ci-joint un fichier de mon problème avec mes quatre duo de boutons radios qui fonctionnent sous Acrobat pro, mais pas sous Adobe Reader.
    :bonjour:

Affichage de 8 réponses de 1 à 8 (sur un total de 8)