Inscrivez-vous

abracadabraPDF Forum

Le seul forum francophone entièrement dédié au format PDF

ATK

13 juin 2017 : 10:13
Sorcier Messages: 37
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:

  • Grand magicien
  • Messages: 7 199
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.
Acrobate du PDF, InDesigner et Photoshopographe

  • Sorcier
  • Messages: 37
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 ?

  • Grand magicien
  • Messages: 7 199
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) :

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) :

nomUtilisateur();

.
« Modifié: 13 juin 2017 : 11:07 par Merlin »
Acrobate du PDF, InDesigner et Photoshopographe

  • Sorcier
  • Messages: 37
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 :
f = this.getField("Nom du dessinateur");
f.value = nomUtilisateur()

  • Grand magicien
  • Messages: 7 199
Pour info, le code JavaScript utilisé est :
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é.
Acrobate du PDF, InDesigner et Photoshopographe

  • Sorcier
  • Messages: 37
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 :
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é)


  • Grand magicien
  • Messages: 7 199
As-tu installé le fichier .js et relancé Acrobat ?
Acrobate du PDF, InDesigner et Photoshopographe

  • Grand magicien
  • Messages: 7 199
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
Acrobate du PDF, InDesigner et Photoshopographe

  • Sorcier
  • Messages: 37
Merci, j'ai modifié le code du script.

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

Le fichier doit il avoir un nom particulier ? Je l'ai appelé "Fonction nom d'utilisateur.js"
« Modifié: 13 juin 2017 : 13:44 par ATK »

  • Sorcier
  • Messages: 37
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 :
// 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 :
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:

  • Grand magicien
  • Messages: 7 199
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:
Acrobate du PDF, InDesigner et Photoshopographe