OVH Cloud OVH Cloud

Acrobat et Java multiplication d'un champ avec un nombre

22 réponses
Avatar
JJacques
Bonjour,
Tout d'abord c'est la première fois que je touche à Java.
En effet j'en ai besoin pour calculer une valeur dans un formulaire PDF
d'acrobat.
Je veux juste multiplier la valeur indiquée d'un un champs( un nombre) par
un un autre nombre définit (par exemple 5).
Il me faut donc traduire celà en java :
champ1=champ0 x 5

voilà c tout.

Voilà mon seul et unique besoin.
Merci pour votre aide

JJacques

10 réponses

1 2 3
Avatar
Alex
De rien! Vous pouvez stocker les multipliants dans un tableau.
Attention, un tableau commence à 0, pas à 1 :


var mults = new Array(5,2,9,8,12,45,36,102,1,47);

var mult;
for (i=1; i<11; i++){
mult = mults[i-1];
this.getField("R" + i).value = this.getField("c" + i).value * mult;
}

Super, bien vu c'est top.
J'ai essaié d'inserer une autre ligne pour changer le multipliant, car au
lieu de faire *5, j'aurais aimé dans le même script inscrire les différentes
valeurs.
Par exemple:
r1Á*5 (ok, ça ca marche)
r2Â*2
r3Ã*9 etc...

Je cherche donc a faire un truc du genre i=1 to <11 mais qu'il n'incremente
pas ma multiplication par 1 mais par le nombre suivant correspondant ) ma
série, par ex: (5,2,9,8,12,45,36,102,1,47...)
Je dois donc stoker ces valeurs qq part non ?.

Merci en tout cas, ça me plait bcp.

JJacques

"Alex" a écrit dans le message de news:
4333afb3$0$19170$

Si effectivement vos champs sont nommés de cette façon, vous n'avez même
pas besoin d'un tableau :

for (i=1; i<11; i++){
this.getField("R" + i).value = this.getField("c" + i).value * 5;
}


Si vos noms sont plus aléatoires, vous pouvez définir des tableau de cette
façon :
var champsc = new Array("c1", "c2", "champc2", "champc3");
var champsR = new Array("R1", "R2", "R3", "R4");

var i=0;
for (i=0; i<champsc.length, i++){
this.getField(champsR[i]).value = this.getField(champsc[i]).value * 5;
}

Pour cette méthode, assurez vous que que les deux tableaux aient la même
taille.




Bon, maintenant que j'ai mis les pied dans "javascript" je vais essayer
de continuer.

mon pdf est donc rempli de champs de c1 à c10 et de R1 à R10
J'ai au total 10 scripts pour calculer la valeur de mes 10 champs R1 à
R10
Existe t il au autre moyen, genre tableau pour stocker les valeurs à
l'infini ?

Merci
JJacques









Avatar
JJacques
Merci, voilà ce que celà donne.
Mais le résultat n'est pas bon, il ne me donne pas un nombre mais du texte
"NaN"

var mult;
var mult=new Array(5,350,120,13,2,13,2,5,350,1500,1);
for(i=1;i<12;i++){
this.getField("r"+i).value=this.getField("c"+i).value*mult;
}
Avatar
JJacques
Milles excuses, j'avais oublié une ligne dnas le script.
Ca marche donc
Génial
Merci mille fois

JJacques

"JJacques" a écrit dans le message de news:
4333c9af$0$1748$
Merci, voilà ce que celà donne.
Mais le résultat n'est pas bon, il ne me donne pas un nombre mais du texte
"NaN"

var mult;
var mult=new Array(5,350,120,13,2,13,2,5,350,1500,1);
for(i=1;i<12;i++){
this.getField("r"+i).value=this.getField("c"+i).value*mult;
}




Avatar
JJacques
our additionner le tout j'utilisais une fonction "preprogrammé" d'acrobat,
mais il ne rafraichissait pas toujours.
J'ai donc voulu remplacer par ceci mais celà ne fonctionne pas(somme de tous
les résultats Rn).

var ht;
ht=("SUM", new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",
"r10", "r11"));
Avatar
Alex
Je ne connais pas Acrobat, mais une petite boucle peut faire l'affaire :

var r = new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",
"r10", "r11");

var ht = 0;
for (i=0; i<r.length; i++){
ht += r[i];
}


our additionner le tout j'utilisais une fonction "preprogrammé" d'acrobat,
mais il ne rafraichissait pas toujours.
J'ai donc voulu remplacer par ceci mais celà ne fonctionne pas(somme de tous
les résultats Rn).

var ht;
ht=("SUM", new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",
"r10", "r11"));




Avatar
JJacques
Merci, mais celà ne donne rien. Je vais donc essayer de comprendre ce que tu
fais.

*****Ici tu définis un ensemble de variables sous forme de tableau c'est ça
?******
var r = new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",
"r10", "r11");
***** Ici tu remets la valeur ht à 0 (ht est un champs existant dans mon

formulaire)*****
var ht = 0;
***** Tu fais une boucle de 0 au nombre de variables totales dans le

tableau, c'est ça ?****
for (i=0; i<r.length; i++){
***tu additionne la valeur de chaque variable pour ht, mais ne faudrait il

pas utiliser une formule du genre ht=("r"+i).value ???? J'ai essayé mais
celà ne marche pas non plus.****
ht += r[i];
}

Merci bcp pour ta patience


Avatar
Alex
Réponse dans le texte...

*****Ici tu définis un ensemble de variables sous forme de tableau c'est ça
var r = new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",
"r10", "r11");
c'est ça - je définis un tableau contenant les noms des variables.



***** Ici tu remets la valeur ht à 0 (ht est un champs existant dans mon
formulaire)*****
var ht = 0;
exact



***** Tu fais une boucle de 0 au nombre de variables totales dans le
tableau, c'est ça ?****
for (i=0; i<r.length; i++){
voilà



***tu additionne la valeur de chaque variable pour ht, mais ne faudrait il
pas utiliser une formule du genre ht=("r"+i).value ???? J'ai essayé mais
celà ne marche pas non plus.****
ht += r[i];
c'est normal, c'est faux! J'aurais du écrire :


ht += his.getField(r[i]).value;

En effet r[i] contient les noms des variables (r1, r2, r3, pas les valeurs.
L'avantage de stocker les noms dans un tableau est que vous pouvez
nommer vos champs comme vous le souhaitez. D'autre part, si un jour vous
décidez de supprimer le champ r5 de votre formulaire, il vous suffira
d'enlever son nom du tableau et le le calcul fonctionnera.

}



Merci bcp pour ta patience


De rien, désolé pour l'erreur et bon courage.


Avatar
Alex
ht += this.getField(r[i]).value;
et non pas
ht += his.getField(r[i]).value;


Avatar
JJacques
ben non...marche pas..

var r = new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",
"r10", "r11");
var ht = 0;
for (i=0; i<r.length; i++){
ht += this.getField(r[i]).value;
}

"Alex" a écrit dans le message de news:
4337a413$0$11151$
ht += this.getField(r[i]).value;
et non pas
ht += his.getField(r[i]).value;




Avatar
Alex
Est-ce que ht est le nom d'un champ? Dans ce cas, avez essayer d'ajouter
à la fin:

this.getField("ht").value = ht;


ben non...marche pas..

var r = new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",
"r10", "r11");
var ht = 0;
for (i=0; i<r.length; i++){
ht += this.getField(r[i]).value;
}

"Alex" a écrit dans le message de news:
4337a413$0$11151$

ht += this.getField(r[i]).value;
et non pas

ht += his.getField(r[i]).value;









1 2 3