Donnez vie à vos documents numériques !
 

Ajout de champs à l’aide d’un bouton. – RÉSOLU

abracadabraPDF Forums PDF – Général Ajout de champs à l’aide d’un bouton. – RÉSOLU

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44264
    jsamica
    Membre

    Bonjour à tous,

    Est-il possible par un utilisateur d’un Reader qu’il ait la possibilité, d’ajouter par le biais d’un bouton cliquable, un ou n champs prédéfinis (taille…) dans une formulaire ?

    Le cas concret serait l’ajout de ligne dans un bon de commande, mais à priori il faut le créer sur designer ?  :oh:

    Merci pour votre aide.
    :Smiley03:

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

    Oui, c’est ce qu’on appelle un formulaire dynamique, et ça c’est effectivement du boulot pour Designer (formulaires XFA) plutôt que pour Acrobat (formulaires AcroForm).
    La différence principale entre les deux technologies c’est qu’un PDF “normal” (AcroForm) à une mise en page et des dimensions de pages fixes, contrairement au XFA.

    Exemple (ce n’est pas un bon de commande mais le principe est le même) : http://tedpadova.com/_PDFs/passwords.pdf

    :Smiley01:

    #53508
    maxwyss
    Membre

    Ca pourrait être un petit peu plus simple à effectuer dans LiveCycle Designer, mais dans certaines limites, il se fait aussi bien avec Acroforms (the format de formulaire original PDF). Il faut un petit peu de programmation en Acrobat JavaScript. Pour cela il est indispensable de se familiariser avec la documentation de Acrobat JavaScript (qui fait partie du Acrobat SDK, à telecharger du site Adobe).

    HTH

    Max Wyss.

    #53509
    jsamica
    Membre

    Bonjour et Merci pour vos réponses je vais donc me pencher la dessus
    :Smiley03:

    #53510
    jsamica
    Membre

    Bonjour à tous,
    Donc je reviens vers vous pour vous faire partager mes recherches sur ce sujet.
    Au départ comme conseillé, sur la doc acrobat javascript, qui reste difficile à exploiter je trouve !
    J’ai trouvé des réponses sur la doc très bien réalisée des 101Tips de Ted Padova.

    Merci Merlin pour l’exemple c’est exactement ce principe.

    Effectivement il n’est à priori pas possible même en js un champs à l’aide d’un bouton utilisable dans adobe reader. Il faut passer par Live Cycle Designer. (p14 101Tips_B.pdf).

    Je vais donc tester peut etre dans Designer… que je trouve moins conviviale au premier abord que son “frère”.

    :Smiley03:

    #53511
    Merlin
    Maître des clés

    Au départ comme conseillé, sur la doc acrobat javascript, qui reste difficile à exploiter je trouve !

    100% de ton avis !
    :siffle:  :mur:

    Pour le reste, lis bien entre les lignes : je te propose d’attendre jusqu’au 1er octobre, on (je ne suis pas le seul) n’a pas le droit de rien dire avant cette date…
    :joker:  :Smiley00:

    #53512
    jsamica
    Membre

    AH ?????? qu’est ce que ça signifie ? une nouvelle version d’acrobat ?
    Fallait pas me dire ça…  :Euuuh::doute: :oh:

    #53513
    jsamica
    Membre

    Bon, pour vous donner des news le code suivant du doc 101 tips, fonctionne trés bien dans acrobat:

    Code:
    var f = this.addField(“newField”, “text”,
    page = this.pageNum,[100,100,200,200])
    f.textSize = 9;
    f.textfont = font.Helvtica;
    f.textColor = color.white;
    f.fillColor = new Array(“RGB”, .9, .9, .9);
    f.alignment = “left”;
    f.multiline = true;
    f.readonly = false;

    Mais bon comme j’ai besoin du form pour reader, je me pense sur une solution de contournement.
    Est que le code suivant peut fonctionner en appuyant sur un bouton si c’est le cas, quel est le script à la place de “isBoxChecked” ?

    Code:
    if (this.getField(“choice”).isBoxChecked(0))
    {this.getField(“champs”).display = display.visible;}
    else
    {this.getField(“champs”).display = display.hidden;}

    Merci
    :Smiley03:

    #53514
    jsamica
    Membre

    Bon ben je réponds à ma question !  :siffle:
    A priori c’est ça

    Code:
    if (this.getField(“bouton”).isButton)
    {this.getField(“test”).display = display.hidden;}
    else
    {this.getField(“test”).display = display.visible;}

    ça marche, par contre je comprends pas pourquoi quand je reclic dessus le champs ne disparait pas !

    #53515
    jsamica
    Membre

    Bon alle encore plus simple,
    Sur un bouton le code suivant, pour rendre la ligne visible

    Code:
    this.getField(“ligne2”).display = display.visible;

    Sur un autre bouton pour la cacher

    Code:
    this.getField(“ligne2”).display = display.hidden;

    C’est une solution de contournement qui me convient
    :Smiley03:

    #53516
    Merlin
    Maître des clés

    AH ?????? qu’est ce que ça signifie ? une nouvelle version d’acrobat ?

    Je n’ai pas dit ça (d’ailleurs je n’ai rien dit, et de toute façon ce n’est pas Acrobat qui pose problème)…
    :Smiley00:

    PS : on a dit : “entre les lignes”.
    :joker:

    #53517
    Merlin
    Maître des clés

    Bon alle encore plus simple,

    Je ne suis pas certain de bien te suivre sur toute la ligne…
    Tapa un PDF d’exemple qui vaudrait mieux que de longs discours ?
    :Euuuh:

    #53518
    jsamica
    Membre

    Salut Merlin,
    Faudra être plus expressif après le 1er alors !  :geek:

    Voici un exemple, l’idée de départ était d’avoir qu’un seul bouton par colonne (et non pas par la ligne comme dans l’exemple) qui ajoute autant de champs que tu veux.

    Dans l’exemple c’est limité aux nombres de lignes prédéfinis

    Mais pour mon besoin ça me convient finalement…

    :Smiley03:

    [attachment deleted by admin]

    #53519
    Merlin
    Maître des clés

    Faudra être plus expressif après le 1er alors !

    Compte sur moi, je prépare ça activement.
    :joker:

    #53520
    Merlin
    Maître des clés

    Mais pour mon besoin ça me convient finalement…

    Bien, mais alors, quelle est la question ?
    :Smiley03:

    #53521
    jsamica
    Membre

    Je compte bien sur toi !!
    Ben du coup pas de question, j’ai répondu à ma question en fournissant aussi l’exemple.
    Si ça peut servir à d’autre, c’est le but du forum je pense

    :Smiley03:

    #53522
    Lionel
    Membre

    :PouceHaut: :soleil: :PouceHaut:

    #53523
    Merlin
    Maître des clés

    Merci !
    :bonjour:

    #53524
    jsamica
    Membre

    Salut a tous,
    Juste une petite question pour finaliser cette demande.
    Est possible de rajouter du code dans ce principe afin à ce qu’il n’y ai qu’un bouton “+” ?
    Je m’explique, actuellement dans le doc exemple fourni dans ce post (voir demande précédente) il y a un bouton “+” par ligne.
    L’idée est d’avoir une incrémentation des boutons “+”
    Si j’appuie sur le premier, le deuxième s’affiche, si j’appuie sur le deuxième, le troisième s’affiche…

    J’espère avoir été clair
    Merci
    :Smiley03:

    #53525
    Merlin
    Maître des clés

    On peut soit utiliser l’action Afficher/masquer un champ, soit du JavaScript :

    event.target.display = display.hidden;
    this.getField(“bouton-suivant“).display = display.visible;

    etc.
    :idee:

    #53526
    jsamica
    Membre

    effectivement tout bête avec afficher/masquer

    Merci

    #53527
    Merlin
    Maître des clés

    je te propose d’attendre jusqu’au 1er octobre, on (je ne suis pas le seul) n’a pas le droit de rien dire avant cette date…

    Adobe Reader XI (11) permet désormais d’utiliser la fonction JavaScript “spawnPageFromTemplate” jusqu’ici réservée à Acrobat.
    Ce qui signifie en clair que l’on peut avec un formulaire AcroForm générer des pages dynamiquement à partir d’un modèle, comme dans l’exemple ci-joint.
    Ca ne fonctionne que avec Adobe Reader 11, et pas avec les versions antérieures.

    :idee: :Smiley15:

    [attachment deleted by admin]

    #53528
    Merlin
    Maître des clés

    Bon alle encore plus simple,
    Sur un bouton le code suivant, pour rendre la ligne visible

    Code:
    this.getField(“ligne2”).display = display.visible;

    Sur un autre bouton pour la cacher

    Code:
    this.getField(“ligne2”).display = display.hidden;

    C’est une solution de contournement qui me convient
    :Smiley03:

    Je viens de percuter en relisant ce sujet, on peut simplifier et n’utiliser qu’une seule et même ligne de code dans les deux cas pour ne faire qu’un seul bouton-bascule :

    this.getField(“ligne2”).display = !display;

    :Smiley15:

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