Toutes mes réponses sur les forums
-
AuteurRéponses
-
24 septembre 2019 à 11:18 en réponse à : Verrouiller les champs de la page en cours sauf exception #66226PradowMembre
Bonjour,
Alors en script de validation, tu peux appliquer la ligne suivante à ton champ de signature :
page = event.target.page
for (k=0;k}
}Pour l’exception, tu peux toujours réactiver ton champ après, je ne sais pas quel est le nom de ton champ mais tu peux appliquer
this.getField(“field_name”).readonly = false
PradowMembreAh bigre, cela fonctionne parfaitement ! Merci cette réponse concise et efficace, vous m’enlevez une sacrée épine du pied!!
Bonne journée, Pradow4 septembre 2019 à 14:01 en réponse à : Modification du remplissage automatique d’un formulaire #66121PradowMembreBonjour, ça n’est pas exactement la solution que tu recherche, mais si tu appliques la propriété field.editable = true, l’utilisateur peut écrire lui-même une proposition dans le champ.
Bon courage,Pradow.27 août 2019 à 13:12 en réponse à : 3 boutons radio / 2 images – Choix visibilité image – RÉSOLU #66108PradowMembrePour un groupe de radio buttons, chaque bouton va être associé à un indice entier. Comme ça, deux boutons du même groupe vont être différenciés par cet indice. C’est cet indice qui va être rentré dans la fonction isBoxChecked.
Dans ton cas, le groupe de radio buttons s’appelle “macarons”, et possède 3 éléments, d’indices 0, 1 et 2. Ces indices sont attribués dans l’ordre de création des boutons.
Je ne peux que te conseiller de lire la documentation, chapitre Javascript API > Field
https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_api_reference.pdf27 août 2019 à 11:33 en réponse à : 3 boutons radio / 2 images – Choix visibilité image – RÉSOLU #66106PradowMembreSalut, alors par hasard est ce qu’il ne faudrait pas faire le test :
this.getField(“macarons”).isBoxChecked(1) et isBoxChecked(2)?En t’assurant bien que les numéros 0, 1 et 2 sont attribués aux bons champs?PradowMembreTrès bien, je vais me renseigner là dessus. Merci beaucoup pour ta réponse rapide!
PradowMembreMalheureusement j’ai la contrainte de travailler sur Nuance Power PDF, et ça n’a pas l’air compatible :Smiley02:
PradowMembreSalut,
alors si ça peut t’aider, je te propose de mettre un évènement Onclick sur ton champ de signature, avec une action JS :Code:date = this.getField(“DATE”).value;nom = this.getField(“NOM”).value;this.saveAs(nom + “_” + date + “_”+”demande.pdf”)La grosse contrainte est que la fonction saveAs ne peut être utilisée que dans un contexte privilégiée. Il faut donc la reconstruire sous forme d’une trustedFunction. Je te laisse te renseigner sur le sujet, cela nécessite quelques droits d’administrateur pour modifier un peu Acrobat.
Eventuellement, tu peux mettre un event qui boucle sur le code app.execMenuItem(“SaveAs”), et qui relance ce bout de code tant que le document n’a pas le nom que tu veux, cela force l’utilisateur à enregistrer le document avec le nom que tu souhaites.
Ce n’est pas une bonne solution longue durée mais pour faire des tests, cela te permettra peut-être d’avancer un peu.PradowMembreBonjour, je ne sais pas si vous voyez de quoi je parle quand je parle de lots PDF. Les répertoires ne sont pas dans l’ordinateur mais dans le PDF lui-même.
Quand je demande la propriété app.activeDocs, il me retourne deux documents :Le document correspondant au lot PDF (qui est sous le format PDF), et le document du lot ouvert actuellement, qui est enregistré dans un répertoire temporaire.Tout ce que je recherche, c’est à connaitre les propriétés du lot PDF, ses répertoires etc, mais qui ne sont associés à rien par rapport à l’ordinateur, tout est enregistré sous le format PDFPradowMembrePardon, je relis ton message, en fait je ne sors pas du document, les dossiers/sous-dossiers dont je te parle sont contenus à l’intérieur du lot PDF, ce sont les dossiers du lot PDF.
PradowMembreTrès bien je vois, je pense faire ça alors.
Bonne journée23 juillet 2019 à 13:12 en réponse à : Insérer une signature électronique sans ré-enregistrer le document. – RÉPONDU #52420PradowMembreBonjour, savez-vous si la situation a évolué depuis? Ou s’il faut toujours enregistrer le document?
PradowMembreBonjour, merci beaucoup pour ta réponse très claire. Bonne journée!
PradowMembreD’après le nom du document il semble que tu sois sur Reader … Malheureusement cela ne te permettra pas de modifier ton document, tout ce que tu as le droit de faire, c’est ajouter des champs de formulaire, en plus de toutes les actions du menu (barre en haut de l’application). Il faudra que les utilisateurs aient un éditeur PDF, logiciels payants. S’il le faut, tu peux déjà créer la page, ajouter dessus un champ complètement blanc pour faire disparaitre le contenu, et supprimer ce champ à l’appui d’un bouton.
18 juillet 2019 à 08:11 en réponse à : Utilisation de fonctions privilégiées dans des contextes non privilégiés #65897PradowMembreBonjour, désolé pour les multiples messages.
Une petite nuit de sommeil et quelques cafés plus tard, je me rends compte qu’en fait tout fonctionne très bien, les trusted functions fonctionnent très bien quand elles sont définies dans global.js. Seule exception faite pour app.newDoc qui ne va jamais fonctionner, et en y repensant c’est PEUT-ETRE lié au fait que je suis sur Adobe Acrobat Reader, et donc de base je ne suis pas censé pouvoir créer de document …PradowMembreBonjour ! Dans ta console, tu peux essayer this.newPage(), ça devrait fonctionner
17 juillet 2019 à 12:16 en réponse à : Utilisation de fonctions privilégiées dans des contextes non privilégiés #65896PradowMembreVoici mes paramètres de protection renforcée
17 juillet 2019 à 12:06 en réponse à : Utilisation de fonctions privilégiées dans des contextes non privilégiés #65895PradowMembreNon, il me met exactement le même message d’erreur :
Code:NotAllowedError: Les paramètres de protection interdisent l’accès à cette propriété ou à cette méthode.
App.newDoc:65:Console undefined:ExecJ’ai l’impression que cela vient des paramètres d’Acrobat Reader. Penses-tu que cela peut être lié à la version DC?
Je recherche dans les paramètres mais je ne trouve pas de paramètre qui bloque l’accès privilégié.PradowMembreSalut, Travailler sur plusieurs documents pdf à la fois n’est pas évident si tu veux automatiser quelque chose au sein même d’Acrobat. Il te faudrait faire un script en externe par exemple, un script Python ferait l’affaire. Tu t’y connais un peu en Python? Si oui, tu peux regarder ce que te proposent les bibliothèques PDF. Typiquement remplacer un champ par un autre ne doit pas être trop difficile je pense, même si je n’ai pas de quoi faire des tests sous les yeux.
17 juillet 2019 à 08:32 en réponse à : Utilisation de fonctions privilégiées dans des contextes non privilégiés #65893PradowMembreRebonjour, j’ai enfin eu mes droits d’administration, bizarrement je ne parviens pas à savoir où se trouvent les scripts d’application chez Nuance, mais rien de très grave si je les lis sur Adobe Acrobat Reader …
Bon, et j’ai inscrit le code suivant dans un fichier Config.js dans les scripts d’application d’Acrobat Reader:Code:trustedNewDoc = app.trustedFunction( function (nWidth, nHeight){
// Additional code may appear above
app.beginPriv(); // Explicitly raise privilege
app.newDoc( nWidth, nHeight );
app.endPriv();
// Additional code may appear below.
})
La fonction est tout a fait reconnue, mais lorsque dans la console j’écris :
Code:trustedNewDoc(200,200)Celle-ci me renvoie :
Code:NotAllowedError: Les paramètres de protection interdisent l’accès à cette propriété ou à cette méthode.App.newDoc:65:Console undefined:ExecY a t-il encore des autorisations que je n’ai pas? Comment les activer?
17 juillet 2019 à 06:39 en réponse à : Utilisation de fonctions privilégiées dans des contextes non privilégiés #65892PradowMembreAh oui bien vu, merci beaucoup, j’aurais pu tourner en rond pendant des heures :Smiley08: :Smiley08:
Niveau utilisateur rien n’est décidé encore, mais il y a de fortes chances que ce soit Acrobat Reader.
Bon je t’avoue que j’avais un poil la flemme d’aller demander les droits d’administrateur pour ajouter des javascripts dans App, mais il va bien falloir16 juillet 2019 à 14:38 en réponse à : Utilisation de fonctions privilégiées dans des contextes non privilégiés #65890PradowMembreMerci pour ta réponse.
Malheureusement même quand je lance l’ensemble du script dans la console, celle-ci me répond :Code:TypeError: myTrustedSpecialTaskFunc is not a functionAlors il est possible que le contexte ne soit pas suffisamment privilégié et qu’il faut absolument que je crée un script d’application.
Pour nuance pdf, cela se passe comme pour Acrobat, il y a un dossier Javascripts dans lequel poser ses documents. Il existe deux dossiers de ce type : un en passant par C/users, qui lance des scripts spécifiques à l’utilisateur, l’autre en passant par C/program files, qui sont directement associés à l’application. Pour le moment j’ai pu tester le premier cas parce qu’l n’obligeait pas les droits d’administration, j’ai bien pu tester que le script était lu, malheureusement il ne permettait toujours pas l’exécution de mon script. Il faudra que je teste dans l’autre dossier en demandant les droits d’administrateur à l’assistance informatique de ma société.
Encore merci pour votre réponse, je te tiens au courant en cas d’avancement.16 juillet 2019 à 08:48 en réponse à : Case à cocher qui conditionne à calcul puis à afficher un résultat à part…? #65885PradowMembreSalut, ce que je ferais à ta place :
Mets des radio buttons à la place de checkbox, c’est peut-être moins esthétique mais cela correspondra mieux à ton besoin.
Si vraiment tu veux tes checkbox, j’a une solution un peu imparfaite mais qui fonctionnera :
sur chaque bouton, tu mets un évènement “bouton relâché” –> script JSCode:var cases_desactivees = []
//On regarde pour chaque case si elle est activée ou non
for (k=5;k<=8;k++) { if (this.getField("C"+k).value == "Off") {cases_desactivees.push("C"+k)}}if (cases_desactivees.length !=4){ // Cas où il y a une case activée, on désactive toutes les autres cases
for (elem in cases_desactivees) { this.getField(elem).readonly = True; //Eventuellement si tu trouves ça plus joli, tu peux faire this.getField(elem).display = 1 pour cacher toutes les cases non activées
}
}else { //Cas où toutes les cases sont désactivées for (elem in cases_desactivees) { this.getField(elem).readonly = False; //this.getField(elem).display = 0
}}Donc là, on empêche l’utilisateur de remplir deux checkbox.
Pour obtenir ta somme, ça va être un peu embêtant mais voila ce que tu peux ajouter, le mieux ce serait à l’intérieur de la boucle for du début, tu ajoutes les code suivant après le if :Code:else { somme = 0
if (k==5) { somme+=100+Number.parseInt(this.getField(“1proba”))+16+Number.parseInt(this.getField(“ttproba”)) } if (k==6) { somme+=50+Number.parseInt(this.getField(“1produit”))+16+Number.parseInt(this.getField(“ttprod”)) } if (k==7) { //Remplir avec le calcul de la somme
} if (k==8) { //Idem
} this.getField(“cotise”).value = somme;
}Dis-moi si ça t’a aidé, si tu veux des précisions.
-
AuteurRéponses