Formulaire remplissable en ligne (via lien) et validation  (Lu 208 fois) Partager ce sujet Imprimer

1 B


yoluflavaur  15 mai 2019 : 14:34

Bonjour,

J'ai créé un formulaire remplissable, avec menus déroulants, et calculs automatiques.

Une fois enregistré, le formulaire pèse...très lourd : environ....4,5 Mo.

Le but est de rendre disponible le formulaire en ligne pour plusieurs personnes sans avoir à le télécharger sur son pc.

Une fois rempli, je souhaite un bouton valider (avec fenêtre de confirmation) qui enregistrera une copie du formulaire (dont les champs remplis seront modifiables) sur le serveur où se trouve le modèle, et non sur le pc de la personne remplissant le formulaire.

Je suis débutant....je ne connais pas grand chose ... rien... en ce qui concerne la conception d'un site...Il me faut un truc ultra basique : genre un lien qui ouvre automatiquement le formulaire vierge, et une fois rempli, on valide et ce formulaire est copié sur un espace dédié (le même serveur), et le formulaire se ré initialise....

Merci de votre aide...si cela est possible.

Yo

IP archivée


Merlin  15 mai 2019 : 16:34

Bonjour et bienvenue.

Une fois enregistré, le formulaire pèse...très lourd : environ....4,5 Mo.
Il faut l'Enregistrer-sous avec Acrobat Pro, c'est magique !
 :Smiley15:

Le but est de rendre disponible le formulaire en ligne pour plusieurs personnes sans avoir à le télécharger sur son pc.
Une fois rempli, je souhaite un bouton valider (avec fenêtre de confirmation) qui enregistrera une copie du formulaire (dont les champs remplis seront modifiables) sur le serveur
C'est typiquement du boulot pour un formulaire HTML, ce serait inutilement compliqué et tortueux en PDF.
 :joker:

IP archivée


yoluflavaur  16 mai 2019 : 22:30

Ah...ok...
Quelle solution alors ai-je ?

En fait, le formulaire pdf doit être accessible par des personnes qui vont donner des appréciations et des commentaires (c'est un formulaire pour des évaluer des personnes), puis une fois validé, ce formulaire doit pouvoir être corrigé par un correcteur (orthographe, tournure des phrases...), puis après validation de la direction, doit pouvoir être envoyer en pdf non modifiable à l'évalué ....
En html c'est compliqué ? faisable ?

IP archivée


Merlin  17 mai 2019 : 09:49

Citer
En fait, le formulaire pdf doit être accessible par des personnes qui vont donner des appréciations et des commentaires (c'est un formulaire pour des évaluer des personnes), puis une fois validé, ce formulaire doit pouvoir être corrigé par un correcteur (orthographe, tournure des phrases...), puis après validation de la direction, doit pouvoir être envoyer en pdf non modifiable à l'évalué ....
Ça change tout, c'est plus complexe que de juste rendre disponible le formulaire en ligne pour plusieurs personnes sans avoir à le télécharger sur son pc.

On revient sur un processus PDF, dont la première particularité, par rapport au HTML, c'est qu'on est obligé de télécharger le formulaire sur son poste pour pouvoir le remplir avec Acrobat Reader.
Certains navigateurs web permettent de remplir un formulaire PDF directement, mais aucun ne sera capable de l'envoyer (par email ou via submit).

Tu parles de "direction", je suppose donc que tu fais ça pour une structure. N'a-t-elle pas un site web ?

IP archivée


yoluflavaur  18 mai 2019 : 01:11

Pour tout te dire,

C'est pour des observateurs d'arbitres de foot....donc c purement bénévole ! Et j'essaie de créer un formulaire identique pour tous les observateurs, au lieu que chacun utilise tantôt word, tantôt openoffice...et n'écrivent pas tous avec la même police ou déplacent les cadres (même en verrouillant)...enfin bref, en tant que correcteur, tu passes des fois des dizaines de minutes à tout recadrer !
Donc je me suis dit qu'un outil aussi universel que pdf ce serait cool !
Sauf que si chaque observateur envoi un fichier de 2 à 4 mo l'unité...ca va faire lourd...
L'idée était donc :1) soit de créer une page web simple avec possibilité de remplir le formulaire en ligne, et je le recupère sur l'espace,
2) soit de pouvoir alléger au max la taille du fichier pour l'envoi par mail,
3) soit trouver un bouton valider pour compiler toutes les données des champs dans un seul fichier qui me serait envoyé, et que je puisse réinjecter dans le formulaire....tu vois le truc ?



IP archivée


Merlin  18 mai 2019 : 09:55

Tu n'as pas répondu concernant le poids du fichier, mais même 2 Mo c'est beaucoup trop lourd pour un tel formulaire.
Partage le si tu veux que j'y jette un œil (Transmettre un lien vers une pièce jointe, volumineuse ou non : Acrobat > menu Fichier > Envoyer le fichier > Envoyer et effectuer le suivi > Créer un lien anonyme)

En tout cas la solution n°3 est la plus répandue : quand l'utilisateur clique sur "Envoyer" il n'envoie que les données du formulaire, au format FDF, et non pas le document en entier. Ce qui pèse beaucoup moins lourd (quelques Ko).

IP archivée


yoluflavaur  18 mai 2019 : 18:07

ok..mais il est trop gros..ca passe ici...tu as un mail?

IP archivée


Merlin  19 mai 2019 : 10:57

(Transmettre un lien vers une pièce jointe, volumineuse ou non : Acrobat > menu Fichier > Envoyer le fichier > Envoyer et effectuer le suivi > Créer un lien anonyme)

Voir aussi : https://abracadabrapdf.net/forum/index.php/topic,2974.0.html

 :geek:

IP archivée


Merlin  19 mai 2019 : 11:03

Du coup je viens de réaliser que les intitulés ont un peu changé dans DC 2019 :
Acrobat : menu Fichier : Partager le fichier : Obtenir le lien : Créer un lien
 :Smiley15:

IP archivée


yoluflavaur  21 mai 2019 : 06:20

http://dl.free.fr/jBzlyoHBy
voici le lien pour le télécharger...

IP archivée


Merlin  21 mai 2019 : 10:32

Quand on utilise une autre police que les polices standards (Times, Helvetica, Courier) dans un champ de formulaire (un seul suffit) cela provoque l'incorporation de ladite police en entier et non compressée dans le PDF.

Les 2,4 Mo de ton document sont en fait occupés par les polices Calibri et Calibri Bold (bien que ce ne soit pas les plus belles  :Smiley03:), une fois supprimées le document ne pèse plus que 110 Ko : https://documentcloud.adobe.com/link/track?uri=urn:aaid:scds:us:76d944e9-2af7-4967-8dc9-1765565cecf3

Sinon, qu'est-ce qu'un "AXE DE POGRESSION" ? Il y en a toute une série…
 :Smiley03:  :geek:

IP archivée


yoluflavaur  21 mai 2019 : 15:22

Les axes de progressions sont des cases permettant à l'observateur d'indiquer des points à travailler....

Sinon, comment as-tu fait pour supprimer les polices inutiles ?


IP archivée


yoluflavaur  21 mai 2019 : 16:42

La question est plutôt : Qu'as-tu fait exactement car j'ai essayé avec un modèle à 2Mo....j'ai modifié la police de tous les champs en Helvetica.....puis dans le menu otpimisation....puis j'ai retiré toutes les polices....j'ai enregistré ....ca na pas changer grand chose....voir rien...j'i dû louper quelques chose...

Par ailleurs, tu as dû remarquer que mes champs dépassait certains cadres.....En fait je voulais que le texte du champs tienne bien dans le cadre....avec le même nombre de ligne partout....Ca déborde un peu , mais lorsqu'on ecrit c'est bon !! c cadré.


IP archivée


Merlin  21 mai 2019 : 19:47

Les axes de progressions sont des cases permettant à l'observateur d'indiquer des points à travailler...
Ce n'est pas le mot "progression" qui est utilisé dans ton document…
 :Smiley08:

IP archivée


Merlin  21 mai 2019 : 19:51

Sinon, comment as-tu fait pour supprimer les polices inutiles ?
D'abord j'ai changé la police dans tous les champs.
Comme l'optimiseur d'Acrobat ne voulait pas supprimer les polices du document j'ai pris une nouvelle page vierge dans laquelle j'ai copié-collé le fond de page avec l'outil "Modifier" et ensuite j'ai copié-collé (en place) les champs de formulaires avec l'outil de sélection.
Enregistrer-sous, terminé.

Les bonnes vieilles techniques d'avant l'optimiseur d'Acrobat sont toujours efficaces.
 :Smiley03:

IP archivée


yoluflavaur  21 mai 2019 : 19:52

 :Smiley08: :Smiley08: mdr.....je vais corriger....merci

IP archivée


yoluflavaur  21 mai 2019 : 19:53

astucieux !!! je vais essayer de le refaire....

IP archivée


yoluflavaur  22 mai 2019 : 23:28

Merci MERLIN pour tes tuyaux et ton aide surtout !!
Même si je ne suis pas arrivé à faire comme toi.... CE n'est pas grave, je vais tout recommencer...
Sinon, je vais abuser de ta bonté :
J'ai voulu ajouter un bouton de validation ; ce bouton servira à contrôler que des champs (obligatoire) sont remplis, que les box déroulantes aient une valeur autre que "choisir" (valeur par défaut), et d'autre part, que si un champ a une certaine valeur/texte, et qu'un autre champ défini a une valeur précise, un message d'erreur apparaisse pour que l'utilise corrige.
Si tout est ok, j aimerai que le document soit enregistré tel quel (modifiable par correcteur)
Voici ce que j'ai pondu...mais ca marche pas
var cat = this.getfield("cat").value; // valeur du menu déroulant cat (catégorie)
var avis = this.getfield("avis").value; // valeur du menu déroulant avis (avis de l'observateur)
if ((
this.getfield("cat").value =="Senior Stagiaire" ||
this.getfield("cat").value=="AA District_Stagiaire" ||
this.getfield("cat").value=="JAD Stagiaire") &&
(this.getfield("avis").value=="NON CONCERNE"))
{
app.alert("S'agissant d'un arbitre stagiaire, vous devez rendre un avis sur la validation de l'examen.");
this.getField("avis").setFocus();
}
else
for(var i = this.numFields - 1; i > -1; i--)
{
var fieldName = this.getNthFieldName(i);
if ((
this.getField(fieldName).type!="button" && this.getField(fieldName).required==true) &&
(this.getField(fieldName).value=="" || this.getField(fieldName).value=="Off"))
{
app.alert("Le champ " +fieldName+ " ne semble pas rempli, merci de le compléter.");
this.getField(fieldName).setFocus();
break;
}
}
//
if(i<0){//Verrouiller tous les champs
for (var i=0; i<this.numFields; i++) {
   var fname = this.getNthFieldName(i);
   var f = this.getField(fname);
   f.readonly = true;
}

// Enregistrer
app.execMenuItem("SaveAs")}
Alors Merlin, à part entre la chaise et le clavier, il est où le problème?


IP archivée


Merlin  Hier à 00:07

il est où le problème?
Qu'en dit la Console ? (Voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/console-javascript-d-acrobat/ )
Quoi qu'il en soit, donner le même nom à un champ et à une variable est une très mauvaise idée.
As-tu recherché dans le forum ? Il y a plusieurs exemples de scripts de contrôle.

IP archivée


titi_neptune  Hier à 12:34

Bonjour,
désolé, mais je cherche un créer un sujet pour un problème tout a fait différent.
Seulement, je ne trouve pas ou ....
Quelqu'un pourrait me renseigner svp ? Merci

IP archivée


yoluflavaur  Hier à 16:52

bonjour, tu vas à l'accueil...et tu cliques sur nouveau sujet....

IP archivée


yoluflavaur  Hier à 18:08

J'ai beau chercher..je suis sec....ca ne marche pas

Sur le formulaire que tu as deja bidouiller pour l'alleger, j'aimerais ajouter un bouton de vérification.

Lorsque j'appuie dessus j'aimerais :

- Qu'il vérifie la valeur de deux champs et qu'il affiche un message d'erreur le cas échéant :
             * si la valeur du champ de la liste déroulante "cat" = "JAD Stagiaire" OU "cat"="AA District Stagiaire" OU " Senior Stagiaire" ET que la valeur ddu champ de la lsite dérulante "Avis" = "NON CONCERNE"
             * ALORS affiche un message (S'agissant d'un arbitre stagiaire, vous devez rendre un avis)
Puis
             * SI les champs obligatoires ne sont pas remplis, fais apparaître un message d'alerte (Il manque des données...),

SINON propose d'enregsitrer le document en l'état (modifiable) en SAVE AS

Voila ce que j'ai mis mais ça marche pas du tout
var categ = this.getfield("cat").value; // valeur du menu déroulant cat (catégorie)
var avobs = this.getfield("avis").value; // valeur du menu déroulant avis (avis de l'observateur)
if ((
categ =="Senior Stagiaire" ||
categ=="AA DistrictStagiaire" ||
categ=="JAD Stagiaire") &&
(avobs=="NON CONCERNE"))
{
app.alert("S'agissant d'un arbitre stagiaire, vous devez rendre un avis sur la validation de l'examen.");
this.getField("avis").setFocus();
break;
}
else
for(var i = this.numFields - 1; i > -1; i--)
{
var fieldName = this.getNthFieldName(i);
if ((
this.getField(fieldName).type!="button" && this.getField(fieldName).required==true) &&
(this.getField(fieldName).value=="" || this.getField(fieldName).value=="Off"))
{
app.alert("Le champ " +fieldName+ " ne semble pas rempli, merci de le compléter.");
this.getField(fieldName).setFocus();
break;
}
}
//
if(i<0){//Verrouiller tous les champs
for (var i=0; i<this.numFields; i++) {
   var fname = this.getNthFieldName(i);
   var f = this.getField(fname);
   f.readonly = true;
}

// Enregistrer
app.execMenuItem("SaveAs")}


IP archivée


Merlin  Aujourd'hui à 10:01

L'enchainement des actions n'est pas logique : si on ne vérifie pas avant si le champ "avis" est déjà rempli c'est toujours la première condition qui s'exécutera, donc l'utilisateur tournera en boucle (et en bourrique).

Je suggère de prendre le problème autrement : si la 1re condition est remplie le champ dans lequel on doit remplir l'avis devient obligatoire, sinon il ne l'est pas.
À placer en script de calcul dans ledit champ :

var strText1 = this.getField("cat").valueAsString;
var strText2 = this.getField("Avis").valueAsString;
if ((strText1 == "JAD Stagiaire" || strText1 == "AA District Stagiaire" || strText1 == "Senior Stagiaire") && (strText2 == "NON CONCERNE";)) {
event.target.required = true;
}
else {
event.target.required = false;
}


Ensuite il ne reste qu'à vérifier les champs obligatoires.
On en reparlera plus tard. Je n'ai pas le temps aujourd'hui.
  :joker:

IP archivée


Merlin  Aujourd'hui à 12:34

À placer dans le bouton de vérification des champs obligatoires :

var nObligatoireVide = 0;
for (var i=0; i<this.numFields; i++) {
var nomChamp = this.getNthFieldName(i);
var oChamp = this.getField(nomChamp);
// champs Texte
if ((oChamp.type == "text") && (oChamp.required == true) && (oChamp.value == "")) {
oChamp.strokeColor = color.red;
nObligatoireVide++;
}
// champs Case-à-cocher
else if ((oChamp.type == "checkbox") && (oChamp.required == true) && (oChamp.value == "Off")) {
oChamp.strokeColor = color.red;
nObligatoireVide++;
}
// champs Liste déroulante
else if ((oChamp.type == "combobox") && (oChamp.required == true) && (oChamp.value == oChamp.defaultValue)) {
oChamp.strokeColor = color.red;
nObligatoireVide++;
}
}
//
if (nObligatoireVide > 0) {
app.alert({cMsg: "Merci de remplir tous les champs obligatoires (en rouge).", nIcon: 1, cTitle: "COUCOU"});
}
else {
// impression, envoi par email, etc.
}


S'il y en a, ce script entoure tous les champs obligatoires non remplis d'un contour rouge.
Ce qui veut dire qu'il faut ensuite supprimer ce contour rouge quand l'utilisateur rempli les champs concernés, donc il faut ajouter ce script en action "Champ activé" dans tous les champs obligatoires :

event.target.strokeColor = color.transparent;Où "transparent" est à remplacer par la couleur de contour normale

 :Smiley15:

IP archivée