Donnez vie à vos documents numériques !
 

Effacer une image importée dans un bouton avec JavaScript ? – RÉSOLU

abracadabraPDF Forums PDF – Général Effacer une image importée dans un bouton avec JavaScript ? – RÉSOLU

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44215
    nekosan3
    Participant

    Bonjour à tous,

    J’ai un PDF interactif dont une partie, peut être personnalisé par l’utilisateur :
    ce n’est qu’un bouton (avant mettre en propriété du bouton > Option > Disposition > Icone uniquement)
    auquel on y ajoute cette ligne de code Jscript :

    event.target.buttonImportIcon();

    L’importation fonctionne avec beaucoup de sortes de fichier…faut juste sélectionner la terminaison à importer dans le champ Afficher.

    Cependant je recherche (si cela est possible) une ligne de code Jscript à mettre sur un bouton genre [effacer contenu] qui permettrait d’effacer
    donc le contenu de ce bouton.

    Pour l’instant mon code sur ce bouton ressemble à ça :

    var remove = this.getField(“BoutonPerso”);
    var confirm = this.getField(“BoutonPerso”).value;
    var reply = app.alert(“Effacer la photo ?”, 2, 2);
    if (reply == 3);
    else
    FormAddDelete();
    remove.deleteItemAt();

    Et bien-sûr cela ne fonctionne pas.  :oh:

    Quelqu’un aurait une piste ? ou peut-être une rectif ?
    Si cela se trouve cela n’est pas possible…  :doute:

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

    Salut,

    L’importation fonctionne avec beaucoup de sortes de fichier…faut juste sélectionner la terminaison à importer dans le champ Afficher.

    C’est une vieille tare d’Acrobat : on demande à importer une image et par défaut il place le type de fichier sur PDF…
    No comment !
    :oh:

    La mauvaise nouvelle : non, on ne peut pas réinitialiser l’icône d’un champ de type bouton.
    La bonne nouvelle : on peut ruser…

    Le seul moyen connu de supprimer l’icône d’un champ de type bouton c’est de modifier les propriétés du bouton en “Libellé/texte seul”… mais si juste après on remet les propriétés en “Texte sur icône” l’icône précédente se ré-affiche immédiatement…
    Donc l’idée c’est de laisser le champ en “Libellé/texte seul” tant que l’utilisateur n’a pas importé une autre image :

    1- Pour supprimer l’icône on utilise ce script (dans un signet, dans un autre bouton, etc.)  :

    this.getField(“photo“).buttonPosition = position.textOnly;

    (Où “photo” est le nom du champ bouton)

    2- Dans le champ bouton on re-modifie les propriétés juste avant l’importation de l’image en utilisant ce script :

    event.target.buttonPosition = position.overlay;
    event.target.buttonImportIcon();

    Il se peut que l’ancienne image réapparaisse temporairement pendant que l’utilisateur sélectionne la nouvelle image, mais c’est un moindre mal.
    Exemple ci-joint.

    :Smiley03:

    [attachment deleted by admin]

    #53267
    nekosan3
    Participant

    Merci Pour l’explication ! Du coup j’ai voulu rajouté une petite ligne supplémentaire
    histoire d’avoir une confirmation de la part de l’utilisateur mais ça fonctionne pas :

    app.alert(“Voulez-vous vraiment effacer la photo ?”, 2, 2);
    if (reply == 3);
    else
    this.getField(“BoutonPhoto”).buttonPosition = position.textOnly;

    J’ai bien un pop-up qui s’ouvre pour une confirmation mais une fois cliqué sur [oui] le bouton/image ne se change pas ?  :doute:

    #53268
    nekosan3
    Participant

    Bon je crois avoir trouvé :

    this.getField(“BoutonPhoto”).buttonPosition = position.textOnly;
    app.alert(“Voulez-vous vraiment effacer la photo ?”)

    Mais bon je m’aperçois que l’utilisateur n’a pas vraiment le choix il est obligé de cliqué sur [ok] maintenant.  :doute:

    #53269
    Merlin
    Maître des clés

    Tu as oublié le 2, 2 :

    app.alert(“Voulez-vous vraiment effacer la photo ?”, 2, 2);

    Où le premier 2 correspond au type d’icône de l’alerte, et où le deuxième 2 indique le type de bouton utilisé.
    Dans les deux cas le choix va de 0 à 3.

    :Smiley03:

    #53270
    maxwyss
    Membre

    Allons retour à

    app.alert(“Voulez-vous vraiment effacer la photo ?”, 2, 2);
    if (reply == 3);
    else
    this.getField(“BoutonPhoto”).buttonPosition = position.textOnly;

    cette piece de code n’est pas très propre. Il serait mieux de changer à

    if (app.alert(“Voulez-vous vraiment effacer la photo ?”, 2, 2) == 4) {
    this.getField(“BoutonPhoto”).buttonPosition = position.textOnly ;
    } else {
    // do nothing
    }

    Il pourrait être necessaire de prevoir une reactivation pour pouvoir etre capable d’importer une photo de nouveau (ça depend du processus general).

    HTH

    Max Wyss.

    #53271
    nekosan3
    Participant

    Bonjour maxwyss et Merlin, merci pour vos contributions j’obtiens ce que je voulais
    et en plus avec un code (je suis pas expert mais bon) propre.
    :geek:

    #53272
    Merlin
    Maître des clés

    :bravo: :bonjour:

    #53273

    Il se peut que l’ancienne image réapparaisse temporairement pendant que l’utilisateur sélectionne la nouvelle image, mais c’est un moindre mal.

    J’ai inversé les lignes de code

    Code:
    event.target.buttonImportIcon();
    event.target.buttonPosition = position.overlay;

    Et ça marche aussi, avec le résultat que l’image n’apparaît pas dans le champs quand on veut importer une image à nouveau

    #53274
    Merlin
    Maître des clés

    :bonjour:

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