abracadabraPDF › Forums › PDF – Général › Besoin tutoriel / mode d’emploi pour code javascript sur Acrobat pro X – RÉPONDU
- Ce sujet est vide.
-
CréateurSujet
-
30 novembre 2011 à 08:23 #44047
nanoleb
MembreBonjour,
Je suis en train de transformer des feuilles de calcul excel en pdf, et pour cela je dois coder les calculs (avec conditions) en javascript dans les différentes cases. Je fais des tests à partir d’exemples que j’ai trouvé sur le net, mais il y a toujours des erreurs de syntaxe car mes calculs n’aboutissent pas.
Pourriez-vous me diriger vers un tutoriel ou mode d’emploi ou serait donné toutes les fonctions, codes utiles, astuces ? J’ai beau cherché, je ne trouve aucun tuto gratuit.
Je pourrais poser mes questions de manière ponctuelle, mais je souhaite réellement apprendre et maitriser le code!
Merci d’avance !
-
CréateurSujet
-
AuteurRéponses
-
30 novembre 2011 à 09:19 #52294
alex
ParticipantPour les calculs, la syntaxe JavaScript est la même dans Acrobat et en HTML.
Je vous conseille donc le site de developpez.com:
http://javascript.developpez.com/cours/
Pour ma part, pour les maths, j’utilise aussi un petit mémento JavaScript publié aux éditions Eyrolles: JavaScript précis & concis de David FlanaganCela dit, il faut bien maîtriser la gestion des évènements de l’environnement Acrobat pour rendre l’usage des formulaires agréable.
Bonne chance.
30 novembre 2011 à 09:39 #52295nanoleb
MembreEn fait le problème n’est pas avec le code de calcul javascript, mais avec les spécificité de adobe, comment deviner au début l’utilisation de this.getField, event, comment manipuler au niveau de la syntaxe les cases à cocher/liste déroulante/bouton radio, mon problème réside dans la manipulation des objets d’adobe acrobat… y a-t-il un mode d’emploi ?
par exemple ici je veux faire deux calculs différent suivant l’un des boutons radio sélectionné (choix), ou est l’erreur ?
var c=this.getField(« choix »);
var d1a=this.getField(« def1a »);
var d1b=this.getField(« def1b »);
var r=this.getField(« rep1 »);
var p=this.getField(« poids1 »);If(c.value= »frad6″)
{
event.value=(r.value-d1b.value)*p.value;
}
Else
{
event.value=(r.value-d1a.value)*p.value;
}30 novembre 2011 à 10:54 #52296alex
ParticipantLa syntaxe est enigmatique pour moi!
if et else sont à mettre en minuscules.
Quel est la formule du mystérieux calcul à effectuer et où afficher le résultat ?30 novembre 2011 à 11:28 #52297nanoleb
MembrePardon, j’ai copié/collé mon texte sans le simplifier
en gros jai un bouton radio avec 6 choix : « choix » les réponses étant choix1, choix2…, choix6pour les 5 premiers choix je veux que la case sur laquelle je fais le calcul affiche
(case1-case2)*case3
pour le 6 eme je veux
(case1-case4)*case3mon code est le suivant :
var c=this.getField(« choix »);
var a1=this.getField(« case1 »);
var a2=this.getField(« case2 »);
var a3=this.getField(« case3 »);
var a4=this.getField(« case4 »);
if(c.value= »choix6″)
{
event.value=(a1.value-a2.value)*a3.value;
}
else
{
event.value=(a1.value-a4.value)*a3.value;
}30 novembre 2011 à 11:33 #52298nanoleb
MembrePar ailleurs il m’indique « la valeur indiquée ne correspond pas au format du champs [p] » p etant le nom de la case ou je fais le calcul et qui doit recevoir la valeur.
Pourtant j’ai bien mis tous les formats en type « nombre » !30 novembre 2011 à 13:42 #52299alex
ParticipantJe n’y comprend rien. Envoyez votre formulaire.
30 novembre 2011 à 14:06 #52300nanoleb
MembreJe suis vraiment désolée, je croyais être claire… mon fichier ne l’est pas du tout car il y a beaucoup de champs et d’opérations, j’ai représenté le problème dans un nouveau fichier que voici. En esperant que vous comprendrez …
MERCI[attachment deleted by admin]
30 novembre 2011 à 17:20 #52301alex
ParticipantLe calcul ci-dessous est lançé depuis le champ « Resultat »:
Calcul();
Au niveau du document, la fonction Calcul a été créée. Ouvrir la console pour visualiser le suivi du calcul (console.println)
function Calcul()
{
console.clear();
console.println(« Debut du calcul apres action sur « +this.event.target.name+ » de valeur « +this.event.target.value)
var c=this.getField(« Groupe »);
var a1=this.getField(« case1 »);
var a2=this.getField(« case2 »);
var a3=this.getField(« case3 »);
var a4=this.getField(« case4 »);
if(c.value== »Choix6″)
{
console.println(« Cas 6 »)
this.getField(« Resultat »).value=(a1.value-a4.value)*a3.value;
}
if(c.value!= »Choix6″)
{
console.println(« Autres cas »)
this.getField(« Resultat »).value=(a1.value-a2.value)*a3.value;
}
}Regardez bien les comparaisons:
c.value== »Choix6″
Voir maquette…[attachment deleted by admin]
30 novembre 2011 à 19:55 #52302nanoleb
MembreMERCI BEAUCOUP :extra: !! je suis vraiment débutante en la matière et c’est fou ce que ce forum me sauve la vie !! c’est bien mieux qu’un tutoriel !! Merci pour votre reponse rapide et efficace !
cependant j’ai quelque questions pour aller plus loin !
1. a quoi servent les lignes appelant la console ?
ex : console.println(…) ?
2. si ma condition portait sur des boites à cocher comment exprimer la condition : » choix 1 est coché » ?
estce (this.getField(« choix1 »).check=true) ?
3. de même si ma condition portait sur un choix dans une liste déroulante ? ou sur une liste de choix ?
quelle est la syntaxe ?encore merci!
1 décembre 2011 à 08:38 #52303nanoleb
Membreune dernière :
4. que signifie le message d’erreur « NaN » dans une case ? j’ai transposé la fonction sur ma feuille de calcul (juste changé le nom des champs correspondant) et il y a apparition de ce message alors que j’ai fait exactement comme sur votre fichier. je commence a m’arracher les cheveux…. :mur:1 décembre 2011 à 09:07 #52304
MerlinMaître des clésNaN : Not a Number (Pas un nombre)
:bonjour:
1 décembre 2011 à 09:08 #52305alex
Participant1-L’objet console permet d’afficher les erreurs de syntaxe ou les informations que l’on souhaite visualiser pour suivre le -déroulement d’un script. Pour ouvrir la console Ctrl-J sur Pc ou Pomme J sur Mac.
Quelques bases:
console.clear();
efface le contenu de la console.
console.show();
affiche la console.
console.println(« Texte sur la console »);
écrit la ligne « Texte sur la console » dans la console.
console.println(this.gefField(« Resultat »).value);
donne la valeur du champ « Resultat ».2-Le statut coché d’une case à cocher:
if(this.getField(« CaseACocher »).isBoxChecked())
{
//script à éxécuter…
}
3-Sur une liste déroulante, on peut tester:
this.getField(« ListeDeroulante »).value
ou
this.getField(« ListeDeroulante »).valueExLe plus simple est de capter les évènement à la source, ici le script associé à la liste déroulante:
Onglet Format>Script de touches personnalisé, exemple:this.getField(« ResultatValeur »).value=this.event.change;
this.getField(« ResultatValeurEx »).value=this.event.changeEx;Voir maquette jointe.
4-Merlin a répondu, il faut être attentif au format des champs…
[attachment deleted by admin]
1 décembre 2011 à 09:19 #52306
MerlinMaître des clésQuelques bases:
console.clear();
efface le contenu de la console.
console.show();
affiche la console.
console.println(« Texte sur la console »);
écrit la ligne « Texte sur la console » dans la console.
console.println(this.gefField(« Resultat »).value);
donne la valeur du champ « Resultat ».J’ai encore appris quelque chose aujourd’hui !
Je vais garder ça au chaud.
:extra:2 décembre 2011 à 12:19 #52307nanoleb
MembreMerci beaucoup pour toutes ces informations, tout s’éclaircit!! je continue à avoir des problème avec le « format » du champs pour certains calculs plus compliqués, du coup je passe par d’autres champs invisibles pour découper le calcul en choses plus élémentaires.
ah, j’ai aussi remarqué qu’il refuse de calculer si on lui met une valeur par défaut… toujours la meme reponse : NaN…
Quoi qu’il en soit j’ai réussi a créer ma feuille de calcul.
Mille mercis !!! :Smiley08: -
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.
