Toutes mes réponses sur les forums
-
AuteurRéponses
-
23 août 2021 à 09:32 en réponse à : AEM Form (Livecycle Form) Set the value of a repeatable Dropdown to another Drop #69565
Merlin
Maître des clésBonjour
AEM Form is not Acrobat and XFA-PDF are not real PDFs.
So I must refer you to this forum dedicated to AEM Form:
https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/ct-p/adobe-experience-manager-community21 août 2021 à 09:30 en réponse à : Importer une ou des pièces jointes à la suite du document PDF #69552Merlin
Maître des clésLes utilisateurs du formulaires doivent pouvoir attacher des pièces jointes à la suite de la première page, qui elle ne bouge pas.
Ce n’est pas possible avec Acrobat Reader.
Dans ton formulaire tu as astucieusement créé des pages modèles qui permettent d’importer des images (pages PDF) dans des boutons-champs image mais tu vas te heurter à plusieurs limites :
– l’utilisateur devra importer son document page par page, sans se tromper dans l’ordre…
– si le document de l’utilisateur contient 10 pages et pèse 2 Mo cela reviendra à importer : 10 X 2 Mo = 20 Mo dans le formulaire.
– il est impossible de récupérer ou d’exporter les documents placés en tant qu’image dans un bouton-champ image !Je crois qu’il va falloir changer ton fusil d’épaule et proposer à l’utilisateur d’utiliser l’outil de commentaires “Pièce jointe” qui est justement fait pour ça.
Ça ajoute le document importé dans le panneau des pièces jointes et non pas à la suite des pages du formulaire, mais c’est tellement plus user-friendly.Tuto complet et exemple ici : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/importer-programmatiquement-une-piece-jointe-dans-un-pdf/
Voir aussi ce sujet qui complète le tuto : https://abracadabrapdf.net/forum/index.php?topic=347620 août 2021 à 08:09 en réponse à : Importer une ou des pièces jointes à la suite du document PDF #69549Merlin
Maître des clésBonjour
La génération (spawn) de modèles (templates) ne peut se faire que page par page.
S’il y en a plusieurs à générer en même temps l’astuce c’est de commencer par la dernière.
:Smiley03:Merlin
Maître des clésA priori la raison est simple : lesdits élèves n’utilisent pas Acrobat Reader (ou Foxit Reader) et préfèrent le lecteur par défaut* (Edge, Aperçu…) qui ne reconnait pas les pièces jointes et plein d’autres fonctionnalités du format PDF 1.7, alias norme ISO 32000.
Explication complète ici : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/forcer-utilisation-pdf-avec-acrobat-reader/* “Défaut” étant effectivement le mot qui convient le mieux dans ce cas :Smiley03:
Merlin
Maître des clésUne virgule vous manque et rien ne va plus :geek:
var dependentListBoxFieldName = “ListeFille”;
var dependentListValues =
{
“Clés”: [
[“PG”, “export C1”],
[“PP”, “export C2”],
[“CBI”, “export C3”],
[“PAC”, “export C4”],
[“A(à préciser)”, “export C5”],
],
“Badges”: [
[“CA”, “export B1”],
[“Ca”, “export B2”],
[“Co”, “export B3”],
[“A(àpréciser)”, “export B4”],
],
“Matériels”: [
[“Tel”, “export Ma1”],
[“Ord”, “export Ma2”],
[“Ta”, “export Ma3”],
[“Im”, “export Ma4”],
[“EV”, “export Ma5”],
[“VP”, “export Ma6”],
[“RS”, “export Ma7”],
[“C(à préciser)”, “export Ma8”],
[“Autre (àpréciser)”, “export Ma9”],
],
“Mobiliers”: [
[“Ves”, “export Mo1”],
[“Bu/Ta”, “export Mo2”],
[“AH”, “export Mo3”],
[“AB”, “export Mo4”],
[“A(à préciser)”, “export Mo5”],
[“A( à préciser)”, “export Mo6”],
], // <-- la virgule manquante est ici
“Locaux”: [
[“Bu”, “export Lo1”],
[“Ves”, “export Lo2”],
[“Re/St”, “export Lo3”],
[“Ac/De”, “export Lo4”],
[“A( à préciser)”, “export Lo5”],
]
};
/*
You probably don’t need to change anything from here down
*/
if ((event.target.type == “combobox” && event.name == “Format”) || (event.target.type == “listbox” && event.name == “Keystroke”)) {
if (event.target.type == “combobox”) {
if (dependentListValues.hasOwnProperty(event.target.value)) {
this.getField(dependentListBoxFieldName).setItems(dependentListValues[event.target.value]);
}
else {
this.getField(dependentListBoxFieldName).clearItems();
}
}
if (event.target.type == “listbox” && dependentListValues.hasOwnProperty(event.changeEx)) {
this.getField(dependentListBoxFieldName).setItems(dependentListValues[event.changeEx]);
}
}
else {
app.alert(“This script was not intended for this field type or event.”);
}Merlin
Maître des clésBonjour
ajouter un fichier java script, c’est comme ajouter un module sur acrobat? :Euuuh:
Oui mais pas seulement.
Cet article est une réponse complète à ta question : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/Merlin
Maître des clésBonjour et bienvenue
Souvent la bonne réponse vient de l’abandon de la “mauvaise” question : Acrobat Pro est toujours disponible en licence perpétuelle, rien n’oblige à s’abonner. :Smiley03:
https://helpx.adobe.com/fr/download-install/kb/acrobat-2020-downloads.htmlSinon cet article liste un certain nombre de logiciels équivalents à Acrobat, la plupart sont disponibles en version d’essai :
https://www.abracadabrapdf.net/ressources-et-tutos/pdf-mac/lecteurs-pdf-mac/Je te déconseille Foxit Phantom PDF Editor, en version Mac c’est une bouse (contrairement à la version Windows).
Sinon, j’ai une tendresse particulière pour PDF Studio, qui existe en version française.Merlin
Maître des clésAvec Scribus, comme avec Acrobat tu double-cliques sur le champs pour afficher les propriétés et tu trouves le script.
Oui et non.
Scribus ne permet d’éditer que des documents Scribus, pas des PDF.
Donc Grem ne peut pas voir ce qu’il y a dans les exemples, ni avec Acrobat Reader ni avec Scribus.Merlin
Maître des clésBonjour et bienvenue
Il y a plusieurs possibilités : afficher/masquer un champ, afficher/masquer un calque, afficher/masquer une infobulle, afficher un message dans une boite d’alerte.
Je ne connais pas toutes les possibilités de LibreOffice mais je sais que c’est faisable avec le logiciel libre Scribus : https://www.scribus.net/Merlin
Maître des clésBonjour
Pour passer à un niveau supérieur… qui vient de se présenter à moi… et si c’est un menu déroulant ?
Ça vaut pour tous les types de champs, sauf les champs de signature.
Merlin
Maître des clésCe n’est pas “une fonction d’Acrobat”, c’est une propriété du format PDF qui est ignorée par les logiciels lecteurs de PDF bas-de-gamme.
On trouve aussi les pièces jointes dans Foxit et autres logiciels sérieux.
:idee:Merlin
Maître des clésBonjour
Tout est dans le PDF que vous avez téléchargé.
Le secret c’est qu’il faut ouvrir ce PDF avec Acrobat (Reader ou Pro), et non pas avec Aperçu ou avec Edge.
:idee:Merlin
Maître des clésWaou !
Chapeau bas.:bravo: :bonjour:
Merlin
Maître des clésNe serait il pas possible que :
si le document n’est pas signé ; lors de la fermeture de celui-ci, la mention Lu et approuvé soit effacéeBonne idée, je n’ai pas trouvé mieux.
Merlin
Maître des clésSi c’est le juridique qui le veut no problemo.
Exemple ci-joint : le script de validation est dans le champ texteMerlin
Maître des clésBonjour
Oui c’est facile à faire avec un peu de JavaScript, mais en fait tu veux plaquer un processus papier sur un processus numérique : en effet, lors d’une signature numérique le document est forcément lu et approuvé, surtout si on a prévu un petit parcours à base de coches le long du document.
Donc il n’est pas nécessaire d’y ajouter cette mention.Mais si tu y tiens vraiment il faudrait que tu partages ton document, ou un exemple.
15 juillet 2021 à 08:10 en réponse à : Compter des lignes dans un champ multignes sans caractères de retour à la ligne #69415Merlin
Maître des clésWaou !
:bravo:12 juillet 2021 à 17:32 en réponse à : Compter des lignes dans un champ multignes sans caractères de retour à la ligne #69413Merlin
Maître des clésLe document ci-joint devrait t’intéresser, c’est un modèle de fax à deux pages.
Quand la saisie déborde du premier champ sur la première page le texte passe automatiquement dans la deuxième.
Même chose si on copie-colle un texte trop long, la partie débordante est placée dans la deuxième page.11 juillet 2021 à 08:28 en réponse à : Compter des lignes dans un champ multignes sans caractères de retour à la ligne #69411Merlin
Maître des clésOn pourrait peut être inverser la problématique.
Je ne sais pas pourquoi tu veux savoir si le contenu d’un champ texte “déborde”, mais si tu interdisais le débordement des champs tu n’aurais pas ce problème…
:idee:Merlin
Maître des clésBonjour
Dans un champ de type Bouton on peut importer une image (le trait orange) et il y a les options nécessaires pour que l’image (le trait) s’agrandisse/se réduise en fonction de la taille du bouton.
On peut placer un champ de formulaire par-dessus un autre.Merlin
Maître des clésSi bien sur, tu as la propriété intellectuelle du script.
Il faut voir ça comme un roman ou un article, tu en es l’auteur, tu en as les droits et tout le monde peut le lire.La différence c’est qu’on peut publier nos scripts sans mise en page, sans espace, sans ponctuation, etc. en les minifiant.
On peut aussi les noyer dans un flot de fonctions redondantes ou inutiles. :geek:L’idée c’est de rendre la copie ou la réutilisation du script plus compliquée qu’une création ex nihilo.
L’expérience montre que même s’il est soigneusement commenté et avec des variables bien nommées il est toujours difficile de reprendre un script (complexe) qu’on n’a pas créé, alors reprendre un script “unminified” (déminifié) brut de décoffrage… Bon courage ! :mur:Merlin
Maître des clésSinon, pour répondre à ton interrogation le moyen de plus souple que j’ai trouvé pour protéger mes scripts c’est de les “minifier”, c’est-à-dire de les réduire juste à ce dont la machine à besoin.
https://www.it-connect.fr/quest-ce-que-la-minification/
https://javascript-minifier.com/
https://jscompress.com/On peut aussi “obfusquer” les scripts, c’est-à-dire minifier + rendre difficile à lire (ce n’est pas du chiffrage), mais l’inconvénient c’est que la plupart des antivirus et antispams rejettent les PDF dont les scripts sont obfusqués, puisqu’ils ne peuvent pas lire les scripts et qu’ils sont justement faits pour éviter les scripts malicieux.
Merlin
Maître des clésLes formulaires PDF-XFA ne sont pas des documents PDF, ils utilisent un format propriétaire basé sur XML qui a été encapsulé dans une coquille PDF quand la société créatrice a été rachetée par Adobe dans les années 90.
Ces formulaires sont pleinement éditables avec Designer et pas du tout avec Acrobat, mais c’est une question de format, pas de protection.
Merlin
Maître des clésEn fait Adobe appelle ça des “Restrictions d’utilisation”, ce n’est pas vraiment une protection, c’est plutôt fait pour éviter les manipulations malencontreuses ou hasardeuses.
Contrairement au “mot de passe à l’ouverture” qui est une vraie protection (comme la protection par Certificat).
Merlin
Maître des clésÇa ne protège que contre les grand-mères et ceux qui ne savent pas utiliser Googol, il existe des dizaines de sites et d’utilitaires comme celui-ci :
https://smallpdf.com/fr/unlock-pdf:geek:
Merlin
Maître des clésBonjour
Oui, ça serait sympa de partager le truc parce-que ça fait plus d’une décennie que je cherche comment faire.
Merlin
Maître des clésBonjour
L’exemple ( http://practicalpdf.com/acrobat-javascript-examples/dependentLists.pdf ) fourni sur la page que tu cites me parait simple à adapter, il te suffit de copier-coller les deux listes déroulantes et d’adapter le script, qui se trouve dans le champ “masterDropdown”.
Pour la duplication c’est à peine plus compliqué, il faut dans le script adapter le nom du champ cible (dependentDropdown.1, dependentDropdown.2, dependentDropdown.3, etc).
30 juin 2021 à 21:54 en réponse à : Compter des lignes dans un champ multignes sans caractères de retour à la ligne #69406Merlin
Maître des clésBonjour
Je crois que l’utilisation de l’évènement fieldFull est ta seule planche de salut :
https://opensource.adobe.com/dc-acrobat-sdk-docs/acrobatsdk/html2015/Acro12_MasterBook/JS_API_AcroJS/event_properties.htm?rhhlterm=fieldFull&rhsyns=%20#XREF_98939_fieldFullIl y a deux exemples intéressants.
Merlin
Maître des clésBonjour
Je crois savoir que jctremblay fait de gros formulaires alors méfiance avec les scripts de calculs qui sont pénalisant en terme de performance quand il y en a beaucoup.
(Tous les scripts de calcul sont exécutés à chaque clic de l’utilisateur).Merlin
Maître des clésC’est moi qui me suis emmelé dans mon explication, et je n’aurais pas dû parler de “widget” (je l’ai supprimé ci-dessus).
En fait ce qui n’est pas possible c’est ça :
(this.getField(“repOp1“).value) = “?”;
…
(this.getField(“repOp1.1“).value) = “?”;S’il existe un champ nommé “repOp1.1” il ne peut pas y avoir dans le document un autre champ nommé “repOp1” car du coup ce nom est utilisé par le “champ parent virtuel”, qui existe en tant qu’objet JavaScript mais pas sur une page.
Donc la première de ces deux lignes devrait ne pas fonctionner et renvoyer une erreur dans la console.Du coup je suppose que c’est peut être le même problème qui se pose pour le champ “repOp2” puisque dans le script il n’y a pas cette ligne :
(this.getField(“repOp2.1“).value) = “?”;Merlin
Maître des clésOn peut s’adresser au champ parent (repOp1) pour modifier certaines propriétés de tous les champs du groupe en même temps, par exemple la police ou la couleur.
Mais ça ne fonctionne pas avec “value”, il faut s’adresser à chaque champ enfant en particulier.Merlin
Maître des clésBonjour
Cette ligne :
this.getField(“repOp1”).value = “?”;Ne peut pas s’exécuter s’il existe un champ nommé repOp1.1
Et je suppose qu’il en va de même pour :
this.getField(“repOp2”).value = “?”;Mais pour en dire plus il faudrait voir ton document, ou un extrait.
Utilises tu la console JS pour voir les erreurs ?Merlin
Maître des clésBonjour
I would have liked to find books in French on javascript for pdf forms but this kind of book does not exist, so I have no other choice to learn javascript for pdf than to do it in English …
You should start here: https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/ressources-pdf-javascript/
Merlin
Maître des clésSinon tu as ce post qui a traité le sujet :
Ta mémoire m’épate !
Merlin
Maître des clés:bonjour:
En effet je voulais faire une sorte de variable globale qui totalisait les coches et une sorte de fonction globale. Comme en programmation MVC.
Mais là en fait tu refais faire le calcul à chaque clic sur une case.Ça se joue à quelques millisecondes près. :Smiley03:
Merlin
Maître des clésBonjour
Peut être en exportant la valeur 1 pour chaque case cochée puis un script verrouille en écriture chaque checkbox (this.getField(“nom_de_ta_checkbox”).readOnly=true) si la somme des valeurs exportées = 5
J’ai repris l’idée : quand le compte arrive à plus que 5, la dernière case cliquée se décoche immédiatement et affiche une alerte (facultative).
Les cases ont toutes le même script (commenté et avec affichage du total dans la Console), qu’on pourrait mettre en fonction.
Ci-joint.Merlin
Maître des clésOui, un script non protégé s’arrête de fonctionner dès qu’il rencontre une erreur.
C’est ce qui t’es arrivé avec le script que tu as posté : le compte de la boucle for commençait à zéro mais il n’y a pas de champ “c0”, donc le script s’arrête là.Si tu avais activé la Console JS tu aurais vu le message d’erreur. Voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/console-javascript-d-acrobat/
Merlin
Maître des clésSi tu ne veux pas que le script cesse de fonctionner quand il rencontre un nom de champ qui n’existe pas il faut lui ajouter une protection :
for (var i = 1; i < 8; i++) {
if (this.getField(“c” +i ) != null) {
this.getField(“c” +i ).display = display.visible;
}
}Merlin
Maître des clésSeul bebarth peut te répondre :joker:
Ce qui ne devrait pas tarder… :priere:
Merlin
Maître des clésBonjour et bienvenue
As tu vu ce sujet ? :
https://abracadabrapdf.net/forum/index.php/topic,3410.msg24600.htmlMerlin
Maître des clésLes champs sont nommés : c1 à c7
Mais la boucle commence à zéro… :tutut:Par ailleurs, il me semble bien qu’il ne faut pas utiliser d’opérateur double ( <= ) dans les boucles for
Essaie plutôt ça :
for (var i = 1; i < 8; i++) {
this.getField(“c” +i ).display = display.visible;
}Merlin
Maître des clésBonjour
La différence c’est :
if (cSaisie = 1024) {
if (cSaisie == code) {= signifie “devient égal à”,
== signifie “est égal à”.Merlin
Maître des clésBonjour
Comme il est indiqué sur la page où tu l’as téléchargée cette calculatrice est un document exemple fourni avec Acrobat 5 et je n’ai fait qu’en modifier l’aspect des champs* tout en faisant bien attention de ne pas toucher aux scripts.
Donc je ne peux pas vraiment t’aider sinon en te suggérant une autre méthode pour la placer dans un document existant : utilise la fonction “Insérer une page” et importe le fichier Calculatrice, ainsi tu devrais pouvoir la copier-coller ailleurs dans le document et ensuite pouvoir supprimer la page importée, sans nuire à son fonctionnement.
Cette méthode à l’avantage d’importer TOUS les scripts du document cible, pas seulement ceux qui sont dans les pages.
:Smiley03:* Parce-que l’originale était vraiment trop moche… :tutut:
Merlin
Maître des clésAs tu essayé avec des calques ?
Aujourd’hui c’est réponse que je donnerais à la question originelle de ce sujet.Merlin
Maître des clésJoli déterrage !
:geek:9 juin 2021 à 08:42 en réponse à : Pourriez vous m’aider paramétrer le PDF et avec le fichier Excel un G.merci !! #69343Merlin
Maître des clésRemercie surtout bebarth, hier j’étais pris toute la journée et surtout, je n’avais pas bien compris ce que tu voulais faire !
7 juin 2021 à 20:54 en réponse à : Pourriez vous m’aider paramétrer le PDF et avec le fichier Excel un G.merci !! #69338Merlin
Maître des clésBonjour et bienvenue
C’est un sujet récurrent plusieurs fois abordé dans ce forum.
Hélas ce forum ne permet pas de donner un lien vers un résultat de recherche, alors il va falloir que tu recherches toi-même, utilise le bouton “Rechercher” ci-dessus avec les mots-clés : importation, data, CSV, excel…Une fois que tu auras tout ingéré, n’hésites pas à revenir poser une question s’il y a un blocage.
:Smiley15:Merlin
Maître des clés«Je vais me coucher moins niaiseux !» Espression très québécoise.
C’est toujours plus fleuri que l’expression française : “Je me coucherai moins con ce soir”
:Smiley03:4 juin 2021 à 14:38 en réponse à : Problème de sélection et fonctionnement des champs de calcul sur un formulaire #68986Merlin
Maître des clésAs tu créé les champs de formulaire dans InDesign ou dans Acrobat Pro ?
Si dans Acrobat Pro : as tu utilisé la détection-création automatique des champs ?En tout cas je serais curieux de voir le fichier INDD, si tu pouvais me le faire passer (avec les polices, mais pas besoin des images).
Merlin
Maître des clésSur Android les meilleures apps pour exploiter des formulaires PDF sont Acrobat Mobile, qPDF Reader et ezPDF Reader.
Merlin
Maître des clésQuelle app utilises tu sur Android ?
Acrobat Mobile ou autre ?Merlin
Maître des clésBonjour et bienvenue
Voilà presque le même script, le orange n’existe pas en “couleur nommée” c’est pourquoi il faut le déclarer en utilisant des valeurs RVB :
Code:var cSaisie = event.value;
var oChampB = this.getField(“B”);if (cSaisie >= 0 && cSaisie <= 4.4) {
oChampB.value = “Normal”;
oChampB.fillColor = color.green;
}
else if(cSaisie >= 4.5 && cSaisie <= 7) {
oChampB.value = “Alerte”;
oChampB.fillColor = [“RGB”, 255/255, 128/255, 0/255]; // orange
}
else if(cSaisie >= 7.1 && cSaisie <= 50) {
oChampB.value = “Danger”;
oChampB.fillColor = color.red;
}2 juin 2021 à 17:59 en réponse à : Problème de sélection et fonctionnement des champs de calcul sur un formulaire #68976Merlin
Maître des clésJ’ai trouvé le champ et le script coupable (voir capture), et j’ai l’explication : https://community.adobe.com/t5/acrobat/ghost-javascript/td-p/11751827 (il y a un bouton “Traduire” sous chaque message)
Mais je n’ai pas trouvé la solution : après avoir supprimé le champ coupable (et ses frères), recréé un champ tout neuf et remis une addition en notation simplifiée, le problème recommence (message d’erreur) et le script coupable réapparait.
Alors qu’il n’y a aucun champ ni rien d’autre dans ce document dont le nom commence par “AF” ou qui le contienne.
:Euuuh: :doute: :mur:Je me demande si tous les champs ne devraient pas être au format “Nombre” mais là je n’ai pas le temps d’essayer. :joker:
1 juin 2021 à 11:33 en réponse à : Problème de sélection et fonctionnement des champs de calcul sur un formulaire #68970Merlin
Maître des clésJe suis sur Windows et je n’ai jamais vu ça.
Dans les deux cas (calcul ou notation simplifiée) la console retourne systématiquement :
SyntaxError: identifier starts immediately after numeric literalNormalement ce message est retourné quand on utilise un “identifier” (variable, fonction…) dont le nom commence par un chiffre, ce qui est interdit en JavaScript (calcul et notation simplifiée sont traduits en JavaScript à la volée pour pouvoir être exécutés. Le format PDF ne comprend rien d’autre que JavaScript).
Mais normalement ça ne concerne pas les noms des champs de formulaire, ce qui semble être le cas ici car il n’y a ni variable ni fonction.
J’ai supprimé tous les champs et je les ai recréées avec la détection automatique d’Acrobat Pro : c’est toujours même problème avec la notation simplifiée mais le calcul semble fonctionner…
Quand je crée un nouveau PDF et que j’y ajoute des champs dont les noms commencent par des chiffres je n’ai pas ce problème, tout fonctionne comme attendu…
J’en perds mon LatinScript… :geek: :Euuuh:
Je n’ai pas le temps d’aller plus loin aujourd’hui mais je vois plusieurs solutions :
– renommer les champs en ajoutant un préfixe (on peut utiliser les tirets _ ou – ),
– exporter en PDF sans les champs de InDesign et les créer avec Acrobat Pro,
– utiliser JavaScript pour les calculs (non testé),
– …31 mai 2021 à 17:14 en réponse à : Problème de sélection et fonctionnement des champs de calcul sur un formulaire #68963Merlin
Maître des clésBonjour et bienvenue
=>la fenêtre avec tous les champs listés s’ouvre, je sélectionne mes choix, MAIS quand je valide les champs sélectionnés, ils n’apparaissent pas dans la fenêtre de calcul !
C’est un bug connu de la version Mac, je ne sais pas comment on le contourne.
Par-contre c’est la première fois que j’entends dire que la notation simplifiée ne fonctionne pas, peux tu partager tout ou partie de ton document et/ou des captures d’écrans ?
(Voir : https://abracadabrapdf.net/forum/index.php/topic,2974.0.html )Merlin
Maître des clésJ’ai trouvé ça : https://abracadabrapdf.net/forum/index.php/topic,3702.msg22840.html
Merlin
Maître des clésToutes les meilleures références concernant JavaScript sont ici :
https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/ressources-pdf-javascript/Mais il va falloir copiner avec Googol Traduction car il n’y a rien en français.
:geek:28 mai 2021 à 17:09 en réponse à : Formulaire valeur indiquée ne correspond pas au format du champ #69296Merlin
Maître des clésOui effectivement, j’avais déjà lu des articles comme quoi le % était merdique.
C’était moi l’auteur ? :Smiley08:
Je me suis mis en nombre et mon résultat est 0.67. Je ne comprends pas pourquoi je n’ai pas 0.50
Tu parles d’un formulaire sur lequel tu travailles et que tu connais bien, mais pas moi.
Où vient ce résultat ?
De quels champs dépend-il ?
Quelle est la formule de calcul utilisée ?Je le place où ce script ?
Capture ci-joint.
Il faut absolument que tu lises cet article : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/28 mai 2021 à 13:12 en réponse à : Formulaire valeur indiquée ne correspond pas au format du champ #69294Merlin
Maître des clésJe n’utilise jamais le format pourcentage, c’est merdique.
Je préfère utiliser un calcul “normal” dans un champ au format Nombre.
Le symbole % étant ajouté soit sur le fond de page, soit avec ce script de Validation :event.value = event.value + “%”;
Merlin
Maître des clésBonsoir, j’espère ne pas être trop pénible avec mes questions, mais je voulais savoir pourquoi ce script :
if (this.getField(“b1”).isBoxChecked(0)) {
this.getField(“aa1”).display = display.visible;
}
else {this.getField(“aa1”).display = display.hidden;
}fonctionne correctement avec une seule checkbox b1 mais pas avec les autres ?
C’est à cause du zéro (en rouge ci-dessus), c’est lui qui indique à quelle case à cocher tu t’adresses, chacune à son numéro d’ordre comme on peut le voir dans la liste du panneau des champs :
#0
#1
#2
#3
(image jointe).Merlin
Maître des clésBonjour
PS : peut-être aurez-vous déjà rencontré le problème avec le logiciel de La Poste coliship ?
Ça me dit vaguement quelque chose.
Tu devrais faire une recherche dans le forum (sur “La Poste” “coliship” ou les formats), ou sinon il faudra demander à bebarth car c’est lui qui avait répondu, mais pour l’heure il est en vacances.Merlin
Maître des clésMerci pour la réponse, étant débutant en javascript, je tatonne pas mal et j’apprend un peu plus tous les jours…
On est tous passé par là.
:Smiley03:Merlin
Maître des clésOTAN pour moi il manquait un mot et un point dans le script :
if (this.getField(“CaseVide”).value.toString().length == 0) {
this.getField(“CaseQuiAffiche”).value = 1;
}
else {
this.getField(“CaseQuiAffiche”).value = “”;
}Sinon, null ça veut dire que le champ appelé n’existe pas. Il faut faire attention : JavaScript est sensible à la casse.
CaseVide et casevide ce n’est pas pareil.27 mai 2021 à 17:27 en réponse à : Formulaire valeur indiquée ne correspond pas au format du champ #69292Merlin
Maître des clésPourrais-je avoir un exemple de calcul ?
C’est le texte en vert, et orange, dans mon message ci-dessus.
:Smiley01:Merlin
Maître des clésTon script est bancal :
– il est inutile de placer event.value en variable,
– d’autant plus quand on l’utilise pas à chaque fois :
if (noteproposee < nNotauto || event.value > 20)– pourquoi compliquer inutilement une simple multiplication par 3 ??? :
this.getField(“note20p”).value = Math.ceil(this.getField(“note20”).value*2)/2Et mon script non testé n’était pas fonctionnel non plus… :geek:
Ci-joint une version fonctionnelle (et soigneusement biffée).
:Smiley15:27 mai 2021 à 08:14 en réponse à : Formulaire valeur indiquée ne correspond pas au format du champ #69290Merlin
Maître des clésBonjour et bienvenue
C’est un comportement normal :
– les champs pourcentage calculent une division en utilisant la notation simplifiée,
– la notation simplifiée ne permet pas de protéger un calcul contre la division par zéro ou par rien,
– donc on obtient une erreur quand l’un des champs calculé ne contient rien.Il faut remplacer le calcul en notation simplifiée par un calcul en JavaScript, avec protection contre la division par zéro ou rien :
if (this.getField(“Essais1“).value != 0 && this.getField(“Essais1“).value != “”) {
event.target.value = this.getField(“Reussi1“).value / this.getField(“Essais1“).value;
}Merlin
Maître des clésBonjour et bienvenue
Essaye ça :
Code:if (this.getField(“CaseVide”).toString().length == 0) {
this.getField(“CaseQuiAffiche”).value = 1;
}
else {
this.getField(“CaseQuiAffiche”).value = “”;
}Merlin
Maître des clés:bonjour:
Merlin
Maître des clésBonjour
Dans le format PDF un signet n’est pas un “marqueur”, c’est un hyperlien qui envoie quelque part dans le document.
Du coup il n’est pas possible de faire un lien vers un lien.Pour faire ce que tu veux il faut utiliser les “Destinations”, c’est un peu le même principe que les “Ancres” en HTML : on ne pointe pas vers un numéro de page mais vers un marqueur invisible attaché à la page. Ce qui permet de déplacer/ajouter/supprimer des pages sans perdre les liens.
Merlin
Maître des clésCe document ne pouvant être public, voici un lien vers un document identique avec des zones masquées
Il m’a fallu environ 2,5 secondes pour afficher tout ce que tu avais masqué dans ce document (voir capture floutée).
Pour vraiment supprimer (et non pas juste masquer) des éléments dans un PDF il faut utiliser la fonction “Biffure”, ou “Redact” en anglais.
Du coup je te conseille de supprimer le lien vers ce document.
:geek:Merlin
Maître des clésJe te propose ce script (non testé), mais il ne vérifie pas le point n°3 (entier ou finissant par ,5). Je saurais vérifier si c’est un entier mais pour le ,5 je sèche…
Code:var cMessage = “La valeur saisie n’est pas conforme, merci de recommencer.”;
var nNotauto = Number(this.getField(“note20”).value);if (event.value.toString().length == 0) {
event.rc = true;
}else {
if (event.value < nNotauto || event.value > 20) {
app.alert(cMessage);
}
event.rc = false;else {
event.rc = true;
}
}Concernant le point n°4, c’est simple : il faut créer un champ masqué qui calcule le “maximum” des deux champs “note20” et “note20p” et utiliser ce champ comme base de calcul pour le champ “note60”. Capture ci-joint.
Merlin
Maître des clésBonjour et bienvenue
C’est plus rapide à faire qu’à expliquer, et une fois fait c’est facile à comprendre.
Tout ça pour dire que si tu pouvait partager tout ou partie de ton fichier la réponse serait plus facile.
(Voir : https://abracadabrapdf.net/forum/index.php/topic,2974.0.html )25 mai 2021 à 13:53 en réponse à : JavaScript : Supprimer les textes d’un tableau contenant un préfixe. #69265Merlin
Maître des clésTu ne serais pas en Ardèche ?
Photo prise à quelques dizaines de mètres au-dessus de la rivière du même nom
:Smiley03:24 mai 2021 à 10:32 en réponse à : JavaScript : Supprimer les textes d’un tableau contenant un préfixe. #69263Merlin
Maître des clésIl y a personne qui pourrait m’aider ? :Smiley11:
Je ne célèbre pas les fêtes religieuses mais je respecte les ponts et les jours fériés.
:Smiley15:24 mai 2021 à 10:29 en réponse à : JavaScript : Supprimer les textes d’un tableau contenant un préfixe. #69262Merlin
Maître des clésBonjour
On ne peut pas modifier les noms de champs avec JavaScript. Partant de là, à mon avis il serait plus simple de modifier le processus de base.
Je vois que les champs situés à gauche commencent par une capitale (Renault, Citroen…), contrairement à ceux de droite (renault, citroen…), donc l’idée serait de supprimer la balise Yy puisqu’on a déjà une différence.
Ensuite avec JavaScript on pourrait ne supprimer que les champs dont le nom commence par une lettre minuscule (ou l’inverse), il n’y aurait pas grand-chose à modifier dans ton script.Merlin
Maître des clés:Smiley01:
Ce n’est pas un bug, c’est une conséquence logique et attendue.
Traduction :if (b == 0) { // si la valeur de b est égale à zéro
event.value = 0; // la valeur résultante devient zéro
}
else { // sinon (si la valeur de b est différente de zéro)
event.value = a + b + c; // la valeur résultante devient la somme de a+b+c
}Pour un calcul sans condition on peut utiliser les fonctions de calcul d’Acrobat, ou la notation simplifiée :
AcroAb + AcroRa + AcroOthOu le JavaScript :
var a = Number(this.getField(“AcroAb”).value);
var b = Number(this.getField(“AcroRa”).value);
var c = Number(this.getField(“AcroOth”).value);
event.value = a + b + c;Merlin
Maître des clésBonjour et bienvenue
Tu peux te présenter si tu veux mais il n’y a pas de rubrique dédiée, partant du principe que c’est un forum “technique” et qu’on n’y vient pas pour raconter sa vie. Contrairement à d’autres forums plus “relationnels”. :geek:
Où est placé ce script ?
A priori il devrait fonctionner mais seulement s’il est placé en script de validation. Est-ce le cas ?
Peux tu partager ton document ? (Voir : https://abracadabrapdf.net/forum/index.php/topic,2974.0.html)Merlin
Maître des clésBonjour
Je ne vois pas de “check list” sur la gauche mais il me semble que c’est typiquement un cas d’utilisation des calques.
Merlin
Maître des clésOn en rêve tous, mais SONY n’en a rien à faire !
:joker:12 mai 2021 à 09:53 en réponse à : Ouvrir automatiquement le panneau des pièces jointes à l’ouverture du fichier #69245Merlin
Maître des clésBonjour
Acrobat Pro : menu Fichier : Propriétés : Vue initiale :
12 mai 2021 à 09:48 en réponse à : Modifier automatiquement le nom d’un fichier avant envoi par mail. #69169Merlin
Maître des clésC’est très curieux, ça devrait pourtant fonctionner…
:Euuuh: :doute:Peux tu partager ton fichier, ou un exemple ?
Merlin
Maître des clés:extra:
Merlin
Maître des clésBonjour
Mon fichier est dédié à un établissement pour lequel les clients devront saisir leurs coordonnées afin de pouvoir accéder à une image hébergée.
S’il s’agit juste d’afficher une page web : pas de souci.
S’il faut importer l’image dans un champ du formulaire c’est une autre paire de manches…Merlin
Maître des clésC’est j’ai trouvé : Sur le champs en question : Propriété > Action > Déclencheur > Champ activé > exécuter un script.
J’ai expliqué ci-dessus pourquoi il ne faut pas le mettre dans le champ ! :Smiley11: :oh:
Il faut le placer en script d’évènement, il faut cliquer sur le lien que j’ai donné ci-dessus et aller au paragraphe 4 pour trouver les explications.Merlin
Maître des clésToujours l’éternelle ambiguïté : indicatif ou subjonctif ???
J’avoue que j’ai hésité…
:doute:Merlin
Maître des clésDu coup J’ai pensé à mettre une validation avec une fourchette de 1 à 10000000
Il suffit de laisser la valeur maximum vide pour ne pas imposer de limite supérieure.
Mais le problème c’est que : si l’utilisateur ne marque rien , il peut continuer à remplir les autres cases .. et ça va fausser tous les autres cases .
Auquel cas le meilleur moyen serait peut être de faire apparaitre les autres cases quand l’utilisateur clique sur celle qui est obligatoire…
Sinon ce code, je le place ou ?
Je me cite : “en plaçant ce script en script d’évènement “Quand le document sera imprimé”
Voir (paragraphe 4) : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/“:Smiley03:
Merlin
Maître des clésBonjour
Ce script vérifie la valeur du champ cliqué avant d’agir en conséquence… Mais un champ de type bouton ne peut pas avoir de valeur, d’où le message d’erreur.
Le vrai problème est en amont : si aucun logiciel (donc pas seulement Acrobat) ne bloque l’impression par rapport aux champs obligatoires (contrairement à la fonction Submit ou à l’envoi par email) ce n’est pas un hasard.
1. Rien ne peut empêcher l’utilisateur d’imprimer normalement via l’interface de son logiciel (menu ou raccourci-clavier), donc sans utiliser le bouton “Imprimer”.
2. Un utilisateur peut avoir plein de bonnes raisons pour vouloir imprimer un formulaire tel quel et finir de le compléter avec un stylo, il serait donc malvenu de vouloir l’en empêcher.
En général lors de l’impression on utilise un script qui vérifie si les champs obligatoires sont tous remplis, et s’il ne le sont pas on affiche un avertissement à l’utilisateur mais sans le bloquer pour autant.Et comme il faut que ça fonctionne même si l’utilisateur n’utilise pas le bouton qu’on lui a préparé on doit placer le script de vérification non pas dans le bouton mais en script d’évènement “Quand le document sera imprimé”.
Ce qui permet à l’utilisateur de pouvoir éventuellement ensuite annuler l’impression dans la boite de dialogue d’impression qui suit immédiatement l’alerte.
Voir (paragraphe 4) : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/3. On peut donc aussi plus simplement se contenter d’afficher systématiquement une alerte lors de l’impression, donc sans vérification préalable des champs obligatoires, par exemple en plaçant ce script en script d’évènement “Quand le document sera imprimé” :
app.alert(“Merci de vérifier que tous les champs obligatoires soient correctement remplis avant l’envoi.nnAucun formulaire incomplet ne sera pris en compte.“);
:Smiley15:
Merlin
Maître des clésTon script est d’une concision épatante !
:bravo:Merlin
Maître des clésLe bouton-radio qui commande l’apparition du champ AUTRE contient deux Actions contraires qui s’exécutent en même temps.
J’ai remplacé les deux actions par ce JavaScript (fichier ci-joint) :if (event.target.value != “Off”) {this.getField(“AUTRE“).display = display.visible;}
else {this.getField(“AUTRE“).display = display.hidden;}Si je comprend bien ce formulaire tu devrais remplacer tous les boutons-radio par des cases-à-cocher, parce-qu’en l’état c’est l’horreur pour l’utilisateur final : il est obligé de réinitialiser le formulaire à chaque fois qu’il veut décocher un bouton-radio coché malencontreusement !
C’est ce qui fait toute la différence entre bouton-radio et case-à-cocher : l’utilisateur final ne peut pas décocher un groupe de boutons-radio, même si le bouton-radio est un groupe à lui tout seul.Par ailleurs il y a une erreur dans une des listes déroulantes, tu as remplacé 2e, 3e et 4e par des degrés (capture jointe), voir :
https://www.academie-francaise.fr/abreviations-des-adjectifs-numerauxMerlin
Maître des clésÇa a existé, notamment à l’époque d’Acrobat.com mais ça n’a pas rencontré le succès espéré et Adobe a arrêté faute d’un nombre suffisant d’utilisateurs.
En tout cas il me semble logique que les grandes entreprises (premières acheteuses d’Acrobat) préfèrent des solutions qui intègrent les flux et les outils existant plutôt que d’un ajouter des nouveaux.Merlin
Maître des clésIl faudrait que tu partages tout ou partie de ton fichier
Merlin
Maître des clésBonjour
Je suppose que ledit champ est en “Lecture seule”, il faudrait donc décocher cette option.
Merlin
Maître des clésAucune idée !
:joker:Merlin
Maître des clésBonjour et bienvenue
Ça faisait au moins 3 ans que dans ce forum la série d’avatars “Tribal masks” ne fonctionnait plus, pour une raison mystérieuse.
Grâce à toi et à ton choix j’ai enfin pris le problème à bras le corps et maintenant ça fonctionne (même si je ne suis pas sur de comprendre pourquoi…).Du coup je t’ai attribué un de ces avatars mais je ne sais pas si c’est celui que tu avais choisi.
Merlin
Maître des clésBonjour
Si le nom-prénom n’est pas toujours le même l’automatisation ne sera pas vraiment possible, pas avec l’Assistant Actions d’Acrobat en tout cas.
Si le nom-prénom est toujours au même emplacement il serait possible de copier-coller la zone de biffure d’un document à l’autre mais cette partie du processus devrait se faire manuellement.Merlin
Maître des clésRéflexion faite, si le nom-prénom n’est pas toujours le même l’automatisation ne sera pas vraiment possible, pas avec l’Assistant Actions d’Acrobat en tout cas.
Si le nom-prénom est toujours au même emplacement il serait possible de copier-coller la zone de biffure d’un document à l’autre mais cette partie du processus devrait se faire manuellement.Merlin
Maître des clésC’est certainement ce que certains appellent de l’intelligence artificielle. :Smiley08:
LibreOffice Draw :
Merlin
Maître des clésBonjour
À ma connaissance, actuellement le seul logiciel capable de faire ça c’est LibreOffice.
Sinon, lors de la conversion du document Word vers PDF il faut cocher l’option de Balisage, ça permet de conserver une structure de texte cohérente (entre autres) dans le PDF.Merlin
Maître des clésBonjour et bienvenue
L’outil Biffure d’Acrobat Pro est équipé d’un rechercher-remplacer et il est automatisable sur plusieurs documents via l’Assistant Action :
https://helpx.adobe.com/fr/acrobat/using/removing-sensitive-content-pdfs.htmlL’interface est peut-être un peu différente entre Acrobat DC et Acrobat XI mais cette fonction n’a pas changé.
-
AuteurRéponses