Donnez vie à vos documents numériques !
 

Exportation d’un formulaire en PDF non modifiable. – RÉSOLU

abracadabraPDF Forums PDF – Général Exportation d’un formulaire en PDF non modifiable. – RÉSOLU

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44654
    heiwa
    Membre

    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.

Affichage de 61 réponses de 1 à 61 (sur un total de 61)
  • Auteur
    Réponses
  • #55727

    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:

    #55728
    heiwa
    Membre

    Merci 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

    #55729

    Bonsoir,

    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:

    #55730
    heiwa
    Membre

    Bonjour,

    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

    #55731

    Bonjour,

    Faire une recherche sur le forum (ce thème a déjà été traité).

    Lionel :alien2:

    #55732
    heiwa
    Membre

    Salut,

    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

    #55733
    Merlin
    Maître des clés

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

    #55734
    heiwa
    Membre

    Bonjour,
    oui j’ai Acrobat.

    Voici donc le PDF en question..

    Merci

    [attachment deleted by admin]

    #55735
    Merlin
    Maître des clés

    Je 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; i var fname = this.getNthFieldName(i);
    var f = this.getField(fname);
    f.readonly = true;
    }

    // Enregistrer
    app.execMenuItem(“SaveAs”);

    :Smiley01:

    #55736
    heiwa
    Membre

    Un très grand merci, ça marche nickel. En espérant que ce post puisse servir à d’autres personnes.

    Cédric

    #55737
    heiwa
    Membre

    Bonjour, 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

    #55738
    Merlin
    Maître des clés

    Non, hélas…
    C’est quand ils veulent pour les mobiles.
    :priere:

    #55739
    daninet
    Participant

    pour comprendre
    pdf, je vous envoie une démo,
    comment puis-je masquer les boutons rouges?

    [attachment deleted by admin]

    #55740
    Cri-cri
    Participant

    Bonjour, 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 outil :)

    iPhone : 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=8

    #55741
    Merlin
    Maître des clés

    comment 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; i  var fname = this.getNthFieldName(i);
      var f = this.getField(fname);
      f.readonly = true;
    }
    // Enregistrer
    app.execMenuItem(“SaveAs”);

    Exemple ci-joint.
    :Smiley03:

    [attachment deleted by admin]

    #55742
    Merlin
    Maî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:

    #55743
    daninet
    Participant

    :bravo:
    je vous remercie beaucoup

    #55744
    club3dtext
    Membre

    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; i  var 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?

    #55745
    Merlin
    Maître des clés

    Vous pouvez répéter la question ???

    :doute:  :oh:

    #55746
    club3dtext
    Membre

    La 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; i  var 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.

    #55747
    Merlin
    Maître des clés

    Ca devrait pourtant…
    :Euuuh:

    #55748
    club3dtext
    Membre

    J’ai essayé de vous envoyez le fichier joint on m’a dit que le fichier est trop lourd.

    #55749
    Merlin
    Maître des clés
    #55750
    club3dtext
    Membre

    En 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.

    #55751
    Merlin
    Maître des clés

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

    #55752
    club3dtext
    Membre

    Ok, 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.

    #55753
    Merlin
    Maî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:

    #55754
    club3dtext
    Membre

    J’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é?

    #55755
    Merlin
    Maître des clés

    Acrobat XI

    #55756
    brumbies
    Membre

    Bonjour,
    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:

    #55757
    tofteuf
    Membre

    Bonjour à 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 !

    #55758
    Merlin
    Maître des clés
    #55759
    tofteuf
    Membre

    Bonjour 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: …

    #55760
    Merlin
    Maître des clés

    Bonjour,

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

    #55761
    tofteuf
    Membre

    Oups,
    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:

    #55762
    Merlin
    Maître des clés

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

    #55763
    tofteuf
    Membre

    :Ooops: Vais fouiller en ce sens !

    #55764
    Merlin
    Maître des clés

    var f = this.getField(“NOM-DU-CHAMP“);
    if (f.readonly == false)
    {
    // script à exécuter
    };

    #55765
    tofteuf
    Membre

    :extra: Parfait cher Merlin,
    merci pour ton aide précieuse, j’avance à petits pas dans l’optimisation de mon formulaire ! :bravo:

    #55766
    club3dtext
    Membre

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

    #55767
    Merlin
    Maître des clés

    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:

    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.

    #55768
    club3dtext
    Membre

    Alors 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é.

    #55769
    Merlin
    Maître des clés

    Qu’appelles tu “la securité du document” ?
    Ca consiste en quoi exactement ?

    #55770
    tofteuf
    Membre

    Bonjour à tous,
    voici mon formulaire, en l’état, encore des choses à peaufiner… :jerisjaune: prénommer mon fichier pour l’enregistrement “Commande + Text2″…

    #55771
    club3dtext
    Membre

    Ce 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.

    #55772
    tofteuf
    Membre

    Bonsoir,
    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:

    #55773
    Merlin
    Maître des clés

    Ce 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 ?

    #55774
    Merlin
    Maître des clés

    j’ai compilé avec le code pour nommer le fichier à “l’enregistrer sous”

    Qu’est-ce que ça veut dire ?
    :Euuuh:

    #55775
    club3dtext
    Membre

    Quand 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.

    #55776
    Merlin
    Maître des clés

    Ce 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…

    #55777
    tofteuf
    Membre

    Bonsoir à 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 !

    #55778
    tofteuf
    Membre

    Bonjour à 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 avance

    #55779
    Merlin
    Maître des clés

    Bonjour.

    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:

    #55780
    tofteuf
    Membre

    Bonjour,
    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:

    #55781
    oropher
    Membre

    Bonjour,

    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; i  var 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.

    #55782
    Merlin
    Maître des clés

    Est 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; i  var 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:

    #55783
    oropher
    Membre

    Trop trop mais alors trop fort, vous m’épatez !!

    Mille mercis Merlin, vous m’enchantez ! ;o))

    #55784
    Merlin
    Maître des clés

    Les machines ne sont pas contrariantes, on peut leur faire faire une chose et son contraire 100 fois de suite sans qu’elles protestent.
    :geek:

    #55785
    oropher
    Membre

    Ca nous change de la vie normale !

    Encore un grand grand merci, réellement.

    #55786
    matthieugass
    Membre

    Bonjour,

    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; i  var fname = this.getNthFieldName(i);
      var f = this.getField(fname);
      f.readonly = true;
    }

    // Enregistrer
    app.execMenuItem(“SaveAs”);

    #55787
    bebarth
    Maître des clés

    bonjour,
    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:

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