Donnez vie à vos documents numériques !
 

Interdire la modification après sauvegarde

abracadabraPDF Forums PDF – Général Interdire la modification après sauvegarde

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45822
    joss_mkp
    Membre

    Bonjour,

    1 – J’ai un pdf avec un formulaire à remplir et il faudrait que je puisse empêcher la modification des informations une fois que le formulaire est sauvegardé.

    2 – Aussi j’ai réussi à avoir une pop up quand les champs obligatoires ne sont pas remplis quand on clique sur imprimer/sauvegarder/quitter. Mais ça n’empêche pas d’imprimer/la sauvegarde/de quitter. Est-il possible de bloquer ces actions tant que tous les champs obligatoires ne sont pas remplis ?

    Je précise que je débute dans ce genre de choses. Je ne sais que copier le code JavaScript et ne sais pas en écrire en partant de zéro.

    Merci d’avance pour votre aide.

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

    Bonjour et bienvenue.

    1. Oui c’est possible, il y a deux façons de faire selon que l’utilisateur final utilise Acrobat Reader ou Acrobat Pro/Standard.

    2. J’ai déjà dit par ailleurs ce que je pense de l’absurdité et du mauvais coup fait à l’utilisateur d’un formulaire qu’il ne peut pas enregistrer ni imprimer ni quitter quand il veut.

    Met toi à la place de celui qui a fini sa journée et qui voudrait terminer le lendemain, de celui qui a une urgence, de celui qu’on vient de prévenir qu’il va y avoir une coupure dans 1 minute et qu’il faut se dépêcher d’enregistrer les documents en cours, de celui qui voudrait finir ailleurs parce-qu’il lui manque une info sur place, etc.
    Il y a plein de bonnes raisons pour faire ça.

    De plus, un bouton n’empêchera pas l’utilisateur de faire ce qu’il veut avec les menus ou les raccourcis-clavier du logiciel.
    Il faut partir du principe que l’utilisateur final n’est pas plus stupide devant un formulaire numérique que devant un formulaire papier.

    Heureusement Acrobat permet d’utiliser des scripts d’évènement (voir paragraphe 4 : https://www.abracadabrapdf.net/?p=2990 ) qui se déclenchent avant l’impression/l’enregistrement/la fermeture.
    Ce qui permet d’alerter l’utilisateur quel que soit le moyen utilisé (bouton, menu, raccourcis-clavier), avec une simple mise en garde qui lui demande s’il est certain de ce qu’il fait.

    Les scripts d’évènements ne permettent pas de conditions, ils s’exécutent “avant” mais il y a toujours un “après” et la boite de dialogue qui suit apparait forcément.
    Donc on ne peut qu’alerter, on ne peut pas bloquer par ce moyen.

    :Smiley15:

    #63623
    bebarth
    Maître des clés

    bonjour,
    Je ne sais pas ce que pensera Merlin sur le principe, mais si tu colles :

    Code:
    var ok = “pas OK”;

    en script de document, et ce script :

    Code:
    try {
        if (ok==”OK”) {
            var enreg = app.alert({
                cMsg: “u0041u0076u0065u007Au002Du0076u006Fu0075u0073u0020u0074u0065u0072u006Du0069u006Eu00E9u0020u0064u0065u0020u0072u0065u006Du0070u006Cu0069u0072u0020u006Cu0065u0020u0066u006Fu0072u006Du0075u006Cu0061u0069u0072u0065u0020u003Fu000Du0020u000Du0041u0054u0054u0045u004Eu0054u0049u004Fu004Eu000Du0020u000Du2022u0020u0053u0069u0020u004Fu0055u0049u0020u0076u006Fu0075u0073u0020u006Eu0065u0020u0070u006Fu0075u0072u0072u0065u007Au0020u0070u006Cu0075u0073u0020u006Cu0065u0020u006Du006Fu0064u0069u0066u0069u0065u0072u002Eu000Du2022u0020u0053u0069u0020u004Eu004Fu004Eu0020u0076u006Fu0075u0073u0020u0070u006Fu0075u0072u0072u0065u007Au0020u006Cu0065u0020u006Du006Fu0064u0069u0066u0069u0065u0072u0020u0075u006Cu0074u00E9u0072u0069u0065u0075u0072u0065u006Du0065u006Eu0074u002E”,
                cTitle: “Formulaire rempli”,
                nIcon: 2, nType: 2
                });
                if (enreg==4) {
                this.flattenPages();
                this.removeScript(“ok”);
                this.addScript(“ok”, “var ok = “pas OK”;”);
                }
            }
        } catch(e) {}

    en script d’action, cela devrait correspondre à ce que tu veux faire tout en permettant l’enregistrement si le formulaire n’est pas définitivement complété !
    Pour commentaires…
    @+
    :bonjour:

    #63624
    joss_mkp
    Membre

    Bonjour et bienvenue.

    1. Oui c’est possible, il y a deux façons de faire selon que l’utilisateur final utilise Acrobat Reader ou Acrobat Pro/Standard.

    2. J’ai déjà dit par ailleurs ce que je pense de l’absurdité et du mauvais coup fait à l’utilisateur d’un formulaire qu’il ne peut pas enregistrer ni imprimer ni quitter quand il veut.

    Met toi à la place de celui qui a fini sa journée et qui voudrait terminer le lendemain, de celui qui a une urgence, de celui qu’on vient de prévenir qu’il va y avoir une coupure dans 1 minute et qu’il faut se dépêcher d’enregistrer les documents en cours, de celui qui voudrait finir ailleurs parce-qu’il lui manque une info sur place, etc.
    Il y a plein de bonnes raisons pour faire ça.

    De plus, un bouton n’empêchera pas l’utilisateur de faire ce qu’il veut avec les menus ou les raccourcis-clavier du logiciel.
    Il faut partir du principe que l’utilisateur final n’est pas plus stupide devant un formulaire numérique que devant un formulaire papier.

    Heureusement Acrobat permet d’utiliser des scripts d’évènement (voir paragraphe 4 : https://www.abracadabrapdf.net/?p=2990 ) qui se déclenchent avant l’impression/l’enregistrement/la fermeture.
    Ce qui permet d’alerter l’utilisateur quel que soit le moyen utilisé (bouton, menu, raccourcis-clavier), avec une simple mise en garde qui lui demande s’il est certain de ce qu’il fait.

    Les scripts d’évènements ne permettent pas de conditions, ils s’exécutent “avant” mais il y a toujours un “après” et la boite de dialogue qui suit apparait forcément.
    Donc on ne peut qu’alerter, on ne peut pas bloquer par ce moyen.

    :Smiley15:

    Bonjour Merlin et merci  :Smiley01:

    1. Je ne sais pas avec quoi l’utilisateur ouvrira le pdf… et il sera aussi utilisé sur tablettes (je sais que le JavaScript ne s’exécute pas biens sur ces supports, j’ai prévenu le client)

    2.Je suis d’accord avec toi pour l’absurdité de ces blocages mais je n’ai pas réussi à convaincre mon client…
    J’avais déjà installé les scripts d’évènements trouvés sur ce forum  :Smiley03: Il n’y en a pas de bloquants alors (même si je sais que ça te fais mal :Smiley00: )?

    #63625
    joss_mkp
    Membre

    bonjour,
    Je ne sais pas ce que pensera Merlin sur le principe, mais si tu colles :

    Code:
    var ok = “pas OK”;

    en script de document, et ce script :

    Code:
    try {
        if (ok==”OK”) {
            var enreg = app.alert({
                cMsg: “u0041u0076u0065u007Au002Du0076u006Fu0075u0073u0020u0074u0065u0072u006Du0069u006Eu00E9u0020u0064u0065u0020u0072u0065u006Du0070u006Cu0069u0072u0020u006Cu0065u0020u0066u006Fu0072u006Du0075u006Cu0061u0069u0072u0065u0020u003Fu000Du0020u000Du0041u0054u0054u0045u004Eu0054u0049u004Fu004Eu000Du0020u000Du2022u0020u0053u0069u0020u004Fu0055u0049u0020u0076u006Fu0075u0073u0020u006Eu0065u0020u0070u006Fu0075u0072u0072u0065u007Au0020u0070u006Cu0075u0073u0020u006Cu0065u0020u006Du006Fu0064u0069u0066u0069u0065u0072u002Eu000Du2022u0020u0053u0069u0020u004Eu004Fu004Eu0020u0076u006Fu0075u0073u0020u0070u006Fu0075u0072u0072u0065u007Au0020u006Cu0065u0020u006Du006Fu0064u0069u0066u0069u0065u0072u0020u0075u006Cu0074u00E9u0072u0069u0065u0075u0072u0065u006Du0065u006Eu0074u002E”,
                cTitle: “Formulaire rempli”,
                nIcon: 2, nType: 2
                });
                if (enreg==4) {
                this.flattenPages();
                this.removeScript(“ok”);
                this.addScript(“ok”, “var ok = “pas OK”;”);
                }
            }
        } catch(e) {}

    en script d’action, cela devrait correspondre à ce que tu veux faire tout en permettant l’enregistrement si le formulaire n’est pas définitivement complété !
    Pour commentaires…
    @+
    :bonjour:

    Merci  :Smiley01:
    Donc si je remplie le formulaire il sera impossible à modifier après enregistrement ? Je peux l’ajouter sans soucis aux scripts déjà installés ?

    #63626
    bebarth
    Maître des clés

    bonjour,
    Je te conseille déjà de faire des essais sur des copies de fichiers….
    Si tu enregistres et que ton fichier n’est pas aplati, tu auras ce message (cf. copie d’écran).
    Si OUI, les champs sont aplatis tu ne peux donc plus les modifier. Si NON tu peux encore les modifier.
    Lorsque les champs sont aplatis, il n’y a plus de message !
    @+
    :bonjour:

    #63627
    joss_mkp
    Membre

    bonjour,
    Je te conseille déjà de faire des essais sur des copies de fichiers….
    Si tu enregistres et que ton fichier n’est pas aplati, tu auras ce message (cf. copie d’écran).
    Si OUI, les champs sont aplatis tu ne peux donc plus les modifier. Si NON tu peux encore les modifier.
    Lorsque les champs sont aplatis, il n’y a plus de message !
    @+
    :bonjour:

    Je viens d’essayer et je n’ai pas le message. Au risque de paraître débile, qu’entends-tu par “aplati” ?

    #63628
    Merlin
    Maître des clés

    qu’entends-tu par “aplati” ?

    Voir la définition de la fonction “Aplatir” sur : https://www.abracadabrapdf.net/utilitaires/acrobat-plugins/abracadabratools/

    #63629
    bebarth
    Maître des clés

    Je viens de m’apercevoir que je t’ai dis une bêtise…
    en script de document, il faut écrire :

    Code:
    var ok = “OK”;

    sinon, plus de message !

    Lorsqu’on aplati les champs, ce ne sont plus des champs (donc plus modifiables). Les valeurs des champs sont assimilées à du texte.
    fait un essai et tu comprendras certainement mieux.
    @+
    :bonjour:

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