abracadabraPDF › Forums › PDF – Général › Exportation d’un formulaire en PDF non modifiable. – RÉSOLU
- Ce sujet est vide.
-
CréateurSujet
-
16 septembre 2013 à 15:38 #44654heiwaMembre
Bonjour à tous,
J’ai créé un formulaire PDF. Je l’ouvre sur le Reader et je remplis les champs.
Mais je souhaiterais pouvoir l’exporter ou l’enregistrer en PDF simple, c’est à dire non modifiable par les personnes à qui je l’envoie.
Je n’arrive pas à trouver la solution, je m’en remet donc à vos expériences.
Un grand merci.
-
CréateurSujet
-
AuteurRéponses
-
16 septembre 2013 à 16:55 #55727LionelMacBruSoftMembre
Bonjour,
Tout d’abord bienvenue sur le forum.
Tout dépend du contenu du formulaire.
Pour des champs de texte : on peut les verrouiller par un discret bouton caché (chose déjà vue sur le forum; une recherche est toujours à faire avant la création d’un nouveau sujet).Le mieux serait de joindre ce formulaire.
Bien cordialement.
Lionel :alien2:16 septembre 2013 à 20:01 #55728heiwaMembreMerci pour votre réponse.
En fait ce ne sont que des champs textes. C’est un formulaire pour un médecin qui doit remplir des champs texte ( nom du praticien, actes, remarque) et qui doit l’envoyer au patient. Donc le pdf vu par le patient doit être un pdf “normal”, non modifiable.
J’ai fait une recherche sur le forum et sur google, mais je n’ai rien trouvé concernant ce sujet qui me paraît assez simple. Je pense que je ne suis pas le seul à mettre posé la question ?
D’apres votre idée, on remplirais les champs texte, puis on cliquerais sur un bouton qui verrouillerait les champs. Ensuite on enregistre le document. C’est ça ?
Merci
16 septembre 2013 à 21:28 #55729LionelMacBruSoftMembreBonsoir,
D’apres votre idée, on remplirais les champs texte, puis on cliquerais sur un bouton qui verrouillerait les champs. Ensuite on enregistre le document. C’est ça ?
Voilà, tout à fait. Un bouton discret, invisible (seul le médecin sait au il se trouve. Exemple : tout en haut à gauche du formulaire).
Lionel :alien2:
17 septembre 2013 à 08:21 #55730heiwaMembreBonjour,
Voilà, tout à fait. Un bouton discret, invisible (seul le médecin sait au il se trouve. Exemple : tout en haut à gauche du formulaire).
Sur ce bouton serait il possible de mettre deux actions : la 1ere verouiller les champs – la 2e enregistrer le document.
Si oui comment faire pour verrouiller les champs sur un bouton ?
Cédric
17 septembre 2013 à 10:24 #55731LionelMacBruSoftMembreBonjour,
Faire une recherche sur le forum (ce thème a déjà été traité).
Lionel :alien2:
17 septembre 2013 à 13:58 #55732heiwaMembreSalut,
j’ai déja fait des recherches sur le forum et sur mon ami google, mais je n’ai rien trouvé. A moins que je n’ai rien compris. Je préfère moi aussi trouver par mes propres moyen plutôt que d’importuner les internautes. Mais là j’avoue que je sèche.
Ma recherche sur “verrouiller” sur le forum n’a pas donné grande satisfaction.
Merci
17 septembre 2013 à 18:05 #55733MerlinMaître des clésSur ce bouton serait il possible de mettre deux actions : la 1ere verouiller les champs – la 2e enregistrer le document.
Salut,
Trop facile !
On n’a même pas besoin de dissimuler le bouton en question, il suffit de le faire disparaître après utilisation.Par-contre : il est possible de faire fonctionner tout ça avec Reader pour l’utilisateur, mais il faut impérativement que le concepteur du formulaire (donc toi) soit équipé d’Acrobat…
On continue ?Si oui, merci de poster une maquette/exemple avec quelques champs car en ce moment je n’ai pas beaucoup de temps.
:Smiley15:
18 septembre 2013 à 06:16 #55734heiwaMembreBonjour,
oui j’ai Acrobat.Voici donc le PDF en question..
Merci
[attachment deleted by admin]
18 septembre 2013 à 17:22 #55735MerlinMaître des clésJe ne peux pas télécharger ton doc, je suis dans un hôtel à débit WiFi anémique…
Ci-dessous le JavaScript à placer dans le bouton :
//Masquer le bouton
event.target.display = display.hidden;//Verrouiller tous les champs
for (var i=0; ivar fname = this.getNthFieldName(i);
var f = this.getField(fname);
f.readonly = true;
}// Enregistrer
app.execMenuItem(“SaveAs”);:Smiley01:
19 septembre 2013 à 13:07 #55736heiwaMembreUn très grand merci, ça marche nickel. En espérant que ce post puisse servir à d’autres personnes.
Cédric
1 octobre 2013 à 16:20 #55737heiwaMembreBonjour, je reviens sur ce post, car le bouton fonctionne très bien (merci encore) sur PC, mais pas sur tablette tactile. Existerait il une solution pour faire pareil sur tablette ? car les medecins utilise la plus part du temps des tablettes pour remplir les pdf.
Merci
1 octobre 2013 à 16:55 #55738MerlinMaître des clésNon, hélas…
C’est quand ils veulent pour les mobiles.
:priere:8 octobre 2013 à 14:11 #55739daninetParticipantpour comprendre
pdf, je vous envoie une démo,
comment puis-je masquer les boutons rouges?[attachment deleted by admin]
8 octobre 2013 à 15:14 #55740Cri-criParticipantBonjour, je reviens sur ce post, car le bouton fonctionne très bien (merci encore) sur PC, mais pas sur tablette tactile. Existerait il une solution pour faire pareil sur tablette ? car les medecins utilise la plus part du temps des tablettes pour remplir les pdf.
Merci
Non, hélas…
C’est quand ils veulent pour les mobiles.
:priere:Cela ne fonctionne pas avec Adobe Reader Mobile, mais par contre, cela fonctionne très bien (à l’exception du “enregistrer sous” qui devient un “enregistrer”) avec PDF Expert.
Je suis toujours assez bluffé avec cet outiliPhone : https://itunes.apple.com/fr/app/pdf-expert-professional-pdf/id323133888?mt=8
iPad : https://itunes.apple.com/fr/app/pdf-expert-fill-forms-annotate/id393316844?mt=88 octobre 2013 à 18:02 #55741MerlinMaître des cléscomment puis-je masquer les boutons rouges?
1- On utilise la Convention de dénomination des champs de formulaire pour se simplifier la vie : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/duplication-rapide-de-champs-de-formulaire/
2- On ajoute cette ligne de script :
this.getField(“Rosso”).display = display.hidden;Ce qui nous donne :
//Masquer le bouton
event.target.display = display.hidden;
this.getField(“Rosso”).display = display.hidden;
//Verrouiller tous les champs
for (var i=0; ivar fname = this.getNthFieldName(i);
var f = this.getField(fname);
f.readonly = true;
}
// Enregistrer
app.execMenuItem(“SaveAs”);Exemple ci-joint.
:Smiley03:[attachment deleted by admin]
8 octobre 2013 à 18:09 #55742MerlinMaître des clés(à l’exception du “enregistrer sous” qui devient un “enregistrer”)
Houla, ça c’est grave et potentiellement dangereux pour l’utilisateur…
Il serait temps que les mobiles se préoccupent de sécurité, ceux d’Apple en particulier.
:Smiley01:9 octobre 2013 à 07:19 #55743daninetParticipant:bravo:
je vous remercie beaucoup20 février 2015 à 17:24 #55744club3dtextMembre1- On utilise la Convention de dénomination des champs de formulaire pour se simplifier la vie : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/duplication-rapide-de-champs-de-formulaire/
2- On ajoute cette ligne de script :
this.getField(“Rosso”).display = display.hidden;Ce qui nous donne :
//Masquer le bouton
event.target.display = display.hidden;
this.getField(“Rosso”).display = display.hidden;
//Verrouiller tous les champs
for (var i=0; ivar fname = this.getNthFieldName(i);
var f = this.getField(fname);
f.readonly = true;
}
// Enregistrer
app.execMenuItem(“SaveAs”);Exemple ci-joint.
:Smiley03:Bien le boujour à vous, sur cette question je voulais savoir si on a un champ PopUp Menu ou menu déroulant quel script doit-on avoir pour le bloquer?
20 février 2015 à 20:28 #55745MerlinMaître des clésVous pouvez répéter la question ???
:doute: :oh:
23 février 2015 à 17:30 #55746club3dtextMembreLa question est si on veut bloquer un champ PopUp Menu, est-ce qu’il y a un script pour faire cela. J’ai utilisé ce script :
//Masquer le bouton
event.target.display = display.hidden;
this.getField(“Rosso”).display = display.hidden;
//Verrouiller tous les champs
for (var i=0; ivar fname = this.getNthFieldName(i);
var f = this.getField(fname);
f.readonly = true;
}
// Enregistrer
app.execMenuItem(“SaveAs”);pour bloquer plusieurs champs mais les champs PopUp Menu ne sont pas bloqués.
23 février 2015 à 19:16 #55747MerlinMaître des clésCa devrait pourtant…
:Euuuh:23 février 2015 à 21:10 #55748club3dtextMembreJ’ai essayé de vous envoyez le fichier joint on m’a dit que le fichier est trop lourd.
23 février 2015 à 21:12 #55749MerlinMaître des clésRegarde ici : http://abracadabrapdf.net/forum/index.php/topic,2475.0.html
:Smiley03:24 février 2015 à 12:52 #55750club3dtextMembreEn sauvegardant le fichier doc-demo-OK modifier sous un autre nom bloque tous les champs Menu déroulant, PopUp Menu et autres, se ferme et s’ouvre automatiquement sur le même nom en pièce jointe dans le fichier doc-demo-OK modifier.
J’ai ajouté le fichier Proforma Facture2 dans le fichier doc-demo-OK pour alleger le poid de mon fichier.
24 février 2015 à 13:53 #55751MerlinMaître des clésJe ne comprend pas ce qui doit se passer ni ce qui ne va pas mais tu devrais t’intéresser à la Console, qui renvoie des messages d’erreurs.
Voir : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/console-javascript-d-acrobat/:idee:
24 février 2015 à 18:03 #55752club3dtextMembreOk, j’ai bien compris, mais pourtant mon grand probleme pour l’instant c’est que je n’arrive pas bloquer les champs popUpMenu, si vous pouvez bien panchez sur mon cas ça fera du bien pour votre aide, encore merci de vos soutiens antérieurs. Dans le même fichier doc-demo-OK modifier en cliquant sur SaveAs les champs popUpMenu ne se bloquent pas.
24 février 2015 à 18:48 #55753MerlinMaître des clés– Pour moi ça fonctionne très bien.
Regarde dans le ci-joint que j’ai enregistré-sous en utilisant le bouton.– Par-contre la Console persiste : il y a un problème sur la ligne 20, apparement un appel à champ dont le nom n’est pas correct :
Code:TypeError: Type d’argument incorrect.
Doc.exportDataObject:20:Field Sauvegarder:Mouse Up
===> Paramètre cName.– Il vaut mieux placer les scripts de menus déroulants en action “Souris Enfoncée”, ça évite le temps de latence dans le remplissage du champ.
:Smiley01:
25 février 2015 à 14:51 #55754club3dtextMembreJ’utilise Adobe Acrobat Pro et ça ne marche pas de mon coté, les champs PupUp Menu ne se bloquent pas. Vous utilisez quel Acrobat pour que cele puisse fonctionnner de votre coté?
25 février 2015 à 16:35 #55755MerlinMaître des clésAcrobat XI
26 février 2015 à 10:38 #55756brumbiesMembreBonjour,
De mon côté j’ai tester avec Arcobat pro XI => ça fonctionne
avec adobe Reader XI => ça ne fonctionne pas, quand tu rouvres le fichier (puisqu’il est censé ce fermer automatiquement) les popup menu accessibles via les champs “Désignation” sont disponibles.Une alternative est d’utiliser un champs text non visible (Text6 dans l’exemple joint) à l’écran et de lui affecter la valeur 0 initialement.
Une fois les champs mis en lecture seul, on affecte la valeur 1 au champs “Text6” (je l’ai mis au niveau du bouton Save As).
J’ai modifié légèrement les scripts présents dans les champs “Désignation” pour que le popup menu ne s’affiche que si la valeur de “text6” est 0.L’erreur en ligne 20 du bouton Sauvegarder vient du fait que l’on appelle une pièce jointe mais qu’aucune pièce jointe n’est présente, ce qui vient surement du fait que le fichier a été retravaillé pour être posté ….
:Smiley01:
6 mars 2015 à 16:38 #55757tofteufMembreBonjour à tous,
nouveau sur le forum, j’ai trouvé de l’information pour mon formulaire dynamique, mon souci est que les script donné rempli parfaitement son office de figer tous les champs sauf deux de mon formulaire pour lesquels s’exécutent un horodatage en script à l’ouverture du document.
Je souhaiterais que le bouton fige aussi ces deux champs…
Merci vos retours, amicalement, Christophe !6 mars 2015 à 19:13 #55758MerlinMaître des clésBonjour et bienvenue.
Tout est là : http://abracadabrapdf.net/forum/index.php/topic,2210.msg11359.html#msg11359
9 mars 2015 à 11:45 #55759tofteufMembreBonjour et merci de ta réactivité Merlin,
j’ai certainement manqué un truc, je te joins un fichier test, lorsque j’enregistre le fichier pour figer les champs, l’horodatage n’est pas fixé,
à l’ouverture une minute après l’heure se remet à jour ! ce qui ne m’arrange pas du tout :doute: …9 mars 2015 à 12:29 #55760MerlinMaître des clésBonjour,
– Verrouiller un champ interdit à l’utilisateur de le modifier, mais son contenu reste modifiable via des scripts ou des actions (calculs principalement).
:idee:– il faudrait vraiment que tu te décides à utiliser la Console : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/console-javascript-d-acrobat/
(Voir capture jointe)
:priere:PS : “null” veut dire “inexistant”, et non pas “nul”.
:jerisjaune:9 mars 2015 à 14:18 #55761tofteufMembreOups,
j’ai oublié de copier le champ “text 6” dans mon fichier test, mais il existe bel et bien dans mon original !
Tu m’indiques donc qu’il n’est pas possible de figer ces 2 champs, je vais me rabattre sur un mode opératoire plus contraignant à savoir, impression via pdf creator et envoi du fichier par mail, en perdant certainement mes possibilités de pièce jointe… Moi qui rêvais d’automatiser tout çà !
Encore merci pour l’aide cher Merlin :bonjour:9 mars 2015 à 15:16 #55762MerlinMaître des clésTu m’indiques donc qu’il n’est pas possible de figer ces 2 champs
Je n’ai jamais dit ça…
Il suffit de protéger le script en détectant l’état du champ :
– Si champ verrouillé : il ne se passe rien.
– Sinon : OK, on exécute le script.En plus dans ton cas il suffit de tester un seul champ puisqu’ils sont tous au même régime.
:Smiley03:
9 mars 2015 à 15:51 #55763tofteufMembre:Ooops: Vais fouiller en ce sens !
9 mars 2015 à 17:47 #55764MerlinMaître des clésvar f = this.getField(“NOM-DU-CHAMP“);
if (f.readonly == false)
{
// script à exécuter
};10 mars 2015 à 16:37 #55765tofteufMembre:extra: Parfait cher Merlin,
merci pour ton aide précieuse, j’avance à petits pas dans l’optimisation de mon formulaire ! :bravo:10 mars 2015 à 18:12 #55766club3dtextMembreJe dois signaler que moi aussi de mon coté j’avance à petit pas et j’aimerais si possible avoir un exemple de ton travail tofteuf, mais cela n’empêche pas que j’ai un souci avec un lien dans mon travail. Quand j’active la securité du document dans Document propriété, toute fois j’ai un bouton pour ouvrir un lien et le lien est bien présent dans le document ca refuse de s’ouvrir :Euuuh:
Quelqu’un peu m’aider svp :priere:10 mars 2015 à 23:36 #55767MerlinMaître des cléstoute fois j’ai un bouton pour ouvrir un lien et le lien est bien présent dans le document ca refuse de s’ouvrir :Euuuh:
Il faut que bouton fasse appel à une fonction crée par script de niveau application.
Ca ne peut pas fonctionner directement depuis un script de niveau document.11 mars 2015 à 11:36 #55768club3dtextMembreAlors là qu’est-ce que je dois faire en ce sens. Parce que sans la securité du document le lien s’ouvre sans problème mais une fois securisé ça ne s’ouvre plus. Ne peut-on pas contourner ça pour avoir le document protéger et une possibilité d’ouvrir le lien qui est dans le document protégé.
11 mars 2015 à 19:12 #55769MerlinMaître des clésQu’appelles tu “la securité du document” ?
Ca consiste en quoi exactement ?12 mars 2015 à 11:57 #55770tofteufMembreBonjour à tous,
voici mon formulaire, en l’état, encore des choses à peaufiner… :jerisjaune: prénommer mon fichier pour l’enregistrement “Commande + Text2″…12 mars 2015 à 12:59 #55771club3dtextMembreCe je veux dir par là en activant cette option je ne peux pas ouvrir un lien avec le bouton. Y a-t’il un autre moyen.
12 mars 2015 à 16:00 #55772tofteufMembreBonsoir,
j’ai compilé avec le code pour nommer le fichier à “l’enregistrer sous”, du coup, je perd le verrouillage des champs et notamment mes deux horodatages :doute:13 mars 2015 à 11:32 #55773MerlinMaître des clésCe je veux dir par là en activant cette option je ne peux pas ouvrir un lien avec le bouton.
J’ai bien compris.
Ce que je te demande c’est quelle est “cette option” : quels sont les paramètres de protection utilisés ?13 mars 2015 à 11:33 #55774MerlinMaître des clésj’ai compilé avec le code pour nommer le fichier à “l’enregistrer sous”
Qu’est-ce que ça veut dire ?
:Euuuh:16 mars 2015 à 14:55 #55775club3dtextMembreQuand j’active cette option la pièce jointe qui est dans ne s’ouvre pas en cliquant sur le bouton. On dirait que la protection affection aussi la pièce jointe je veux proteger mon document et je veux que la pièce jointe qui s’y trouve soit accessible aussi y a t’il un moyen de solutionner ça. Voir le fichier joint.
16 mars 2015 à 23:13 #55776MerlinMaître des clésCe que je te demande c’est quelle est “cette option” : quels sont les paramètres de protection utilisés ?
Scuse, je n’avais pas vu la première capture d’écran (invisible sur mon portable).
On dirait que la protection affecte aussi la pièce jointe
En fait je ne peux pas vraiment répondre, il faudrait voir le document…
7 avril 2015 à 15:50 #55777tofteufMembreBonsoir à tous, après quelques semaines où j’ai dû laissé mon formulaire de côté …
je voulais dire que j’ai rajouté du code pour améliorer mon formulaire, la création du nom du fichier pour l’enregistrer sous avec le bouton “pdf” du formulaire.
Et du coup je perd le verrouillage de mes champs d’horodatage que j’avais auparavant :Ooops: .
L’objectif est également de tester un certain nombre de champs pour éviter que les gens m’envoient un fichier qui ne contiendrait pas les champs essentiels correctement complétés !
ET bien entendu de cumuler toutes ces fonctionnalités !19 août 2015 à 16:18 #55778tofteufMembreBonjour à tous,
de retour en arrière sur mon projet je n’arrive décidément à combiner le verrouillage des champs et la fonctionnalité enregistrer sous.
J’appelle à l’aide, la fonctionnalité de verrouillage des champs à l’enregistrement ne fonctionne plus, je ne vois pas trop pourquoi…
La console répète inlassablement que f is null, je désespère pas mal !
Si quelqu’un a un tuyau et un peu de temps pour m’aiguiller,merci par avance20 août 2015 à 16:21 #55779MerlinMaître des clésBonjour.
Ouvre ton formulaire dans Acrobat : JavaScript : Tous les scripts JavaScript.
Copie et colle l’intégralité des scripts du document dans ton éditeur de texte/script préféré et fait une recherche sur “f.“Tu constateras que la variable f est utilisée 3 fois dans 3 scripts différents, et que par 2 fois elle fait appel à des champs différents…
:oh: :Smiley01:25 août 2015 à 15:32 #55780tofteufMembreBonjour,
vu !!!!
J’en ai profité pour transférer le script du document sur un clic de cellule obligatoire à remplir, du coup le verrouillage des champs à l’enregistrement fonctionne à la perfection ! Je me lance dans un autre formulaire du coup …
Merci pour votre aide :bravo:7 novembre 2017 à 16:21 #55781oropherMembreBonjour,
Je me permets de rebondir sur ce sujet puisque ma demande en est un complément direct et n’ayant pas réussi à trouver de réponses dans le reste du forum. En cas d’erreur de ma part, toutes mes excuses.
J’ai utilisé une partie des infos données ici donc mais j’ai une colle : j’ai mis ce code sur un bouton avant envoi, cela fonctionne parfaitement :
//Verrouiller tous les champs
for (var i=0; ivar fname = this.getNthFieldName(i);
var f = this.getField(fname);
f.readonly = true;
}Est il possible par contre d’exclure certains champs afin que ceux-ci soient remplissables meme apres envoi ?
Je ne sais pas si je suis bien clair…
Merci par avance pour votre aide.
7 novembre 2017 à 19:08 #55782MerlinMaître des clésEst il possible par contre d’exclure certains champs afin que ceux-ci soient remplissables même après envoi ?
Trop facile, il suffit d’allonger le script avec l’action inverse :
Code:// Verrouiller tous les champs
for (var i=0; ivar fname = this.getNthFieldName(i);
var f = this.getField(fname);
f.readonly = true;
}
// déverrouiller certains champs
this.getField(“CHAMP1”).readonly = false;
this.getField(“CHAMP2”).readonly = false;
this.getField(“CHAMP3”).readonly = false;
// etc.:Smiley15:
8 novembre 2017 à 08:17 #55783oropherMembreTrop trop mais alors trop fort, vous m’épatez !!
Mille mercis Merlin, vous m’enchantez ! ;o))
8 novembre 2017 à 08:21 #55784MerlinMaître des clésLes machines ne sont pas contrariantes, on peut leur faire faire une chose et son contraire 100 fois de suite sans qu’elles protestent.
:geek:8 novembre 2017 à 08:22 #55785oropherMembreCa nous change de la vie normale !
Encore un grand grand merci, réellement.
14 août 2019 à 12:14 #55786matthieugassMembreBonjour,
J’ai crée un bouton à la fin de mon formulaire afin de le verrouiller, cacher des boutons et enregistrer le formulaire sous.
Pour les lignes en rouge, ces boutons ne sont présents qui si des pages supplémentaires sont ajoutées à mon formulaire. Je ne suis pas un expert en programmation Java Script. Je voudrais ajouter une condition pour que ces lignes soient ignorées si ce bouton n’existe pas.
Je vous remercie par avance pour votre aide.
//Masquer les boutons
this.getField(“Français Fichier”).display=display.hidden;
this.getField(“Français cassette”).display=display.hidden;
this.getField(“English File”).display=display.hidden;
this.getField(“English tape”).display=display.hidden;
this.getField(“Tout effacer”).display=display.hidden;
this.getField(“Ajouter 1 page remarques”).display=display.hidden;
this.getField(“Add 1 page comments”).display=display.hidden;
this.getField(“Ajouter 1 page subjectives”).display=display.hidden;
this.getField(“Add 1 page subjective”).display=display.hidden;
this.getField(“Ajouter 1 page remarques 1”).display=display.hidden;
this.getField(“Ajouter 1 page remarques 2”).display=display.hidden;
this.getField(“Ajouter 1 page remarques 3”).display=display.hidden;
this.getField(“Ajouter 1 page remarques 4”).display=display.hidden;
this.getField(“Ajouter 1 page remarques 5”).display=display.hidden;//Verrouiller tous les champs
for (var i=0; ivar fname = this.getNthFieldName(i);
var f = this.getField(fname);
f.readonly = true;
}// Enregistrer
app.execMenuItem(“SaveAs”);14 août 2019 à 14:45 #55787bebarthMaître des clésbonjour,
Il faut utiliser l’expression “Try…Catch”. Une seule fois si les champs sont forcémment tous présents ou pas, pour chaque ligne si il peut y en avoir seulement certains !!!
https://www.w3schools.com/java/java_try_catch.asp
@+
:bonjour: -
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.