Donnez vie à vos documents numériques !
 

Récupérer le nom d’utilisateur dans un champ formulaire

abracadabraPDF Forums PDF – Général Récupérer le nom d’utilisateur dans un champ formulaire

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45684
    ATK
    Participant

    Bonjour !

    Mes collègues complètent un formulaire PDF contenant des champs et je souhaiterais que le champ nommé “Nom du dessinateur” s’autocomplète avec le nom de la session windows lorsque l’on clique dessus.
    Comment est-ce possible ?

    Vous m’aviez déjà aider pour faire la même chose avec un champ “date du jour” qui fonctionne toujours parfaitement !  :Smiley08:

    Un grand merci à vous, excellente journée !  :soleil:

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

    Bonjour.

    Le nom de l’utilisateur de la session est une donnée sensible, pour des raisons de sécurité on ne peut pas y accéder directement depuis un document : il faut en passer par un script d’application (voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/ )

    Autrement dit, pour que ça fonctionne il faut ajouter un fichier .JS dans un des sous-répertoire d’Acrobat sur chaque poste utilisateur.

    #62678
    ATK
    Participant

    Bonjour Merlin et merci pour la réponse.

    Aucun problème la dessus, les utilisateurs passent par une session bureau à distance sur un serveur que j’administre, je peux donc placer le fichier JS dans chaque session. (ils sont deux ^^)

    Aurais-tu plus d’informations sur le script en question ?

    #62679
    Merlin
    Maître des clés

    Trop facile, il y avait ça dans les premières versions d’abracadabraTools (mais j’ai finalement supprimé les fonctions qui n’intéressaient personne).  :geek:

    1- Tu enregistres ça dans un fichier texte avec le suffixe .js que tu places dans le sous-dossier JavaScripts d’Acrobat (Reader ou Pro) :

    Code:
    function nomUtilisateur() {
    if (event.target.value.length = 0) { // si le champ est vide
    event.target.value = identity.name; // on le rempli avec le nom utilisateur
    }
    }

    2- Dans le champ concerné tu appelles la fonction en action “champ activé” (on focus) :

    Code:
    nomUtilisateur();

    .

    #62680
    ATK
    Participant

    Super merci !

    J’ai tout appliqué mais la valeur ramenée est “undefined”, et je ne m’appelle pas comme ça. ^^

    Pour info, le code JavaScript utilisé est :

    Code:
    f = this.getField(“Nom du dessinateur”);
    f.value = nomUtilisateur()
    #62681
    Merlin
    Maître des clés

    Pour info, le code JavaScript utilisé est :

    Code:
    f = this.getField(“Nom du dessinateur”);
    f.value = nomUtilisateur()

    Surtout pas, tu places juste nomUtilisateur(); en action champ activé, sans rien d’autre. C’est une fonction, pas une valeur.

    Par-contre le script n’est pas protégé, si la rubrique “Nom” n’est pas renseignée dans les Préférences : Identité il retournera quelque chose de ce genre.
    Sinon on peut utiliser l’identifiant, qui est parfois le nom de l’ordinateur mais qui est forcément renseigné.

    #62682
    ATK
    Participant

    En effet, je préférerais utiliser l’identifiant si c’est possible. Ça évite de devoir remplir le champ Nom.

    Par contre je ne m’en sors toujours pas avec l’action, je décris ce que je fais :
    – Formulaires -> Modifier
    – Clic droit sur le champ “Nom du dessinateur” -> Propriétés
    – Onglets Actions
        – Déclencheur : Champ activé
        – Action : Exécuter un script JavaScript
    Ajouter.

    Je sélectionne l’action créée juste en dessous, je clique sur modifier, et j’ajoute comme script :

    Code:
    nomUtilisateur();

    Je valide le tout.

    Est-ce que la manip est bonne ? Car lorsque je clic sur le champ rien ne se passe. (et j’ai bien rempli le Nom dans Identité)

    #62683
    Merlin
    Maître des clés

    As-tu installé le fichier .js et relancé Acrobat ?

    #62684
    Merlin
    Maître des clés

    En effet, je préférerais utiliser l’identifiant si c’est possible. Ça évite de devoir remplir le champ Nom.

    Remplace identity.name par identity.loginName

    #62685
    ATK
    Participant

    Merci, j’ai modifié le code du script.

    J’ai placé le fichier JS dans le répertoire : C:Program Files (x86)AdobeAcrobat 11.0AcrobatJavascripts, et redémarré Acrobat juste après.

    Le fichier doit il avoir un nom particulier ? Je l’ai appelé “Fonction nom d’utilisateur.js”

    #62686
    ATK
    Participant

    J’ai finalement réussi en récupérant un autre script sur le web, je le partage ici :

    Le fichier JS placé dans le dossier Javascript :

    Code:
    // Folder-level JavaScript function
    var getLoginName = app.trustedFunction(
        function () {
            // Get and return the user’s login name
            app.beginPriv();
            return identity.loginName;
            app.EndPriv();
        }
    );

    Le code que j’ai finalement placé dans un script de document pour que le nom d’utilisateur apparaisse à l’ouverture du fichier :

    Code:
    f = this.getField(“Nom du dessinateur”);
    if (f.value == “”)
    {
    f.value = getLoginName();
    }
    this.dirty = false;

    Merci Merlin car j’ignorais qu’on pouvais ajouter des fonctions JS à Acrobat en passant par ce dossier !  :bonjour:

    #62687
    Merlin
    Maître des clés

    Ah oui, zut, j’avais oublié cette histoire de trustedFunction…  :oh:

    Merci Merlin car j’ignorais qu’on pouvais ajouter des fonctions JS à Acrobat en passant par ce dossier !

    C’est parce-que tu n’utilises pas les abracadabraTools !
    C’est gratuit ==> https://www.abracadabrapdf.net/utilitaires/acrobat-plugins/abracadabratools/
    :Smiley15:

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