Toutes mes réponses sur les forums
-
AuteurRéponses
-
bebarth
Maître des clésil faut écrire :
cSubject: this.getField(« date_auto »).value,
sans le premier guillemet !
@+
:bonjour:bebarth
Maître des clésCode:…
cSubject: this.getField(« leChamp »).value,
…@+
:bonjour:bebarth
Maître des clésbonjour,
Voici l’adresse où tu trouveras toutes les informations et paramètres nécessaires pour la commande mailDoc :
https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_methods.htm%23TOC_mailDocbc-74&rhtocid=_6_1_8_23_1_73
Il faudra donc que tu écrives :Code:this.mailDoc({
bUI: true,
cTo: monadressemail,
cSubject: « Sujet du message »,
cMsg: « Si vous voulez ne plus faire parti de la liste de diffusion, veuillez envoyer un mail à… »
});@+
:bonjour:bebarth
Maître des clésbonsoir,
Voici ma proposition. Ici le point n’est retiré qu’une seule fois, même si on appuie plusieurs fois sur le bouton !Code:// si les 2 champs sont masqués, initialisation de la variable « moinsun »
if (this.getField(« TxrKO »).display == display.hidden && this.getField(« TxrOK »).display == display.hidden) var moinsun = 0;if (this.getField(« T5 »).value == this.getField(« T5b »).value) {
this.getField(« TxrOK »).display = display.visible;
this.getField(« TxrKO »).display = display.hidden;
}
else {
this.getField(« TxrKO »).display = display.visible;
this.getField(« TxrOK »).display = display.hidden;
// pour ne retirer qu’une fois le point, même si on appuie plusieurs fois sur le bouton
if (moinsun == 0) {
var moinsun=1;
this.getField(« Note 3 4 4 »).value= this.getField(« Note 3 4 4 »).value-1;
}
}@+
:bonjour:bebarth
Maître des clésDans ton ordre de calcul, « MONTANTTOTAL » est avant « MONTANTLICENCE ». Il faut inverser l’ordre :
Outils -> Formulaires -> Modifier -> Autres tâches -> Définir l’ordre de calcul
et là tu sélectionnes « MONTANTTOTAL » que tu descends sous « MONTANTLICENCE » avec le bouton « Descendre »
C’est peut-être un peu différent suivant la Version Acrobat et l’OS. Ici c’est avec Acrobat XI Mac.
@+
:bonjour:bebarth
Maître des clésbonjour,
Dans ta liste déroulante, as-tu coché “calculer immédiatement…” ?
Peux-tu partager ton fichier ?
Merci.@+
:bonjour:bebarth
Maître des clésbonjour,
Il faut juste que les noms des champs soient différents !
Exemple « P1_Case3 » et « P1_Case3bis ».
@+
:bonjour:bebarth
Maître des clésbonjour,
il faut écrire :Code:if (this.getField(« Jeune »).isBoxChecked(0) && this.getField(« FFCT »).isBoxChecked(0) && this.getField(« F »).isBoxChecked(0)) {this.event.value = this.getField(« Montant3 »).value;
} else {
this.event.value=0;
}@+
:bonjour:bebarth
Maître des clésbonjour,
A ce moment là, tu prends la version sans modifier le format du champ, et dans la condition tu rajoutes :
… || (this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value)==-Infinity
Ce qui donne une nouvelle version compliquée mais expliquée :
Script légèrement modifié/simplifié par rapport à celui posté ce matin -> Fichier correspondant.Code:// si le résultat de la division n’est pas un nombre ou est ± l’infini
if (isNaN(this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value) || (this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value)==Infinity || (this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value)==-Infinity) {
this.event.target.value = « »; // alors le champ est vide
} else { // sinon, division
var nombre = this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value;
var arrondi = nombre.toFixed(2); // 2 pour arrondir à 2 décimales
var nombre = arrondi;
var chaine = nombre.toString(); // conversion du nombre en chaine de caractères
var resultat = chaine.replace(« . », « , »); // remplace le point par une virgule
this.event.target.value = resultat; // valeur de ce champ
}Merci pour le « JavaScript » ! :bravo:
@+
:bonjour:bebarth
Maître des clésre-bonjour,
Après réflexion, il suffit simplement de modifier le format du champ (cf. copie d’écran) !!!Mais pourquoi faire simple quand on peut faire compliqué ?
Tu peux laisser le format du champ tel quel et modifier le script :Code:if (isNaN(this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value) || (this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value)==Infinity) {
this.event.target.value = « »;
} else {
var num = this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value;
var n = num.toFixed(2);
var num = n;
var n = num.toString();
var str = n;
var res = str.replace(« . », « , »);
this.event.target.value =res;
}@+
:bonjour:PS : …et ici on parle JavaScript et non Java. Alors un petit effort !
bebarth
Maître des clésbonjour,
quelque chose comme ça (à adapter) :Code:if (isNaN(this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value) || (this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value)==Infinity) {
this.event.target.value = « »;
} else {
var num=this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value;
var entier=Math.floor(num);
var plus = num-entier;
switch(plus==0) {
case false:
if(((plus*10)-5)<=0) {var decimale=5
} else {
var decimale=0;
var entier = entier+1}
break;
case true:
var decimale=0;
break;
}
this.event.target.value =entier+ », »+decimale;
}je reviens plus tard…
…le script indiqué arrondit la décimale à 0 ou 5.
@+
:bonjour:bebarth
Maître des clésbonjour,
J’ai besoin de votre aide rapidement, si quelqu’un peut me donner un coup de main pour le Java ça serait vraiment apprécié !
Comme le ferait le merveilleux et non moins enchanteur Merlin, je commencerai par te conseiller de ne pas confondre Java et JavaScript :
https://abracadabrapdf.net/forum/index.php/topic,2160.0.htmlEn ce qui concerne ton problème, il y a déjà une division en champ P2_Texte46 dont tu ne parles pas. Est-ce normal ???
Pour le calcul du champ P2_Texte50, voici ce que j’écriraisCode:if (isNaN(this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value) || (this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value)==Infinity) {
this.event.target.value = « »;
} else {
this.event.target.value = this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value;
}Sur le fichier joint j’ai retiré le calcul du champ P2_Texte46.
@+
:bonjour:bebarth
Maître des clésEn pièce jointe, l’endroit où je suis bloquée.
j’ai beau chercher… :geek:
@+
:bonjour:bebarth
Maître des clésbonjour,
Peux-tu partager un fichier avec tes différentes cases ?
Merci.
@+
:bonjour:5 juin 2018 à 12:24 en réponse à : Personnalisation d’un bouton permettant d’importer une pièce jointe #63945bebarth
Maître des clésÇa marche, mais… ça manque d’homomorphisme !
Attention donc de redéfinir les tailles proportionnellement par exemple r[2]=r[0]+10 et r[3]=r[1]+8 pour une punaise de moitié de taille originale.
A mon avis, tu devrais écrire :
Code://…pour un icône à l’échelle 1/2
r[2] = r[0]+(r[2]-r[0])/2;
r[3] = r[1]+(r[3]-r[1])/2;@+
:bonjour:5 juin 2018 à 10:08 en réponse à : Personnalisation d’un bouton permettant d’importer une pièce jointe #63943bebarth
Maître des clésbonjour,
Il faut mettre tes lignes en fin de script, sauf qu’avant il faut « re-scanner » les annotations.
Sauf qu’avec r[2]=r[2]-5 et r[3]=r[3]-5, l’icône est diminué à chaque fois qu’on en rajoute un autre…
Il faudrait donc lui donner directement sa taille avec r[2]=r[0]+largeur et r[3]=r[1]+hauteur (ici c’est bien un plus, car…)Les coordonnées r[0], r[1], r[2], r[3] pour l’icône sont semblables à celles indiquées pour le champ.
…ça c’est faut ! Les coordonnées des l’icônes sont définis par le point inférieur gauche et le point supérieur droit (les champs sont définis par le point supérieur gauche et le point inférieur droit… il doit bien y avoir une explication mais je ne la connais pas).
J’ai vérifié les tailles des icônes et elles ne sont effectivement pas identiques :
Tombone = 7 x 17 pts
Punaise = 20 x 16 pts
Graphique = 20 x 20 pts
Etiquette = 20 x 16 pts
Attention donc de redéfinir les tailles proportionnellement par exemple r[2]=r[0]+10 et r[3]=r[1]+8 pour une punaise de moitié de taille originale.
Ci-joint le dernier fichier avec affichage dans la console des dimensions.
Dans ce fichier il faudra évidemment retirer les barres obliques et indiquer la largeur et la hauteur souhaitées.Code://r[2] = r[0]+largeurSouhaitee;
//r[3] = r[1]+hauteurSouhaitee;@+
:bonjour:4 juin 2018 à 12:31 en réponse à : Personnalisation d’un bouton permettant d’importer une pièce jointe #63941bebarth
Maître des clésbonjour,
C’est tout à fait exact. Les coordonnées r[0], r[1], r[2], r[3] pour l’icône sont semblables à celles indiquées pour le champ.
Pour avoir la largeur de l’icône il faut donc faire r[2]-r[0] et pour avoir la hauteur r[1]-r[3] (le 0 est en bas à gauche).
De tête, je ne connais pas exactement la largeur des icônes (il me semble qu’elle n’est pas identique pour tous), il faut donc faire attention de ne pas trop réduire !Si l’on veut placer l’icône à une position exacte par rapport au champ, j’avais écris un petit script dont je joint l’action pour connaitre exactement les coordonnées d’un champ.
@+
:bonjour:bebarth
Maître des clésLe script de calcul est déclenché par le changement d’état d’un champ (celui-ci ou un autre). Merlin… des commentaires ?
https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/lordre-dexecution-des-evenements-dans-les-champs-de-formulaire-pdf/
Lorsque le script est lancé il s’exécute entièrement. Donc si le script de calcul de ta liste est lancé, il va voir la valeur du bouton BR2 qui ne changera pas d’état pendant tout le script !
Pour faire un peu plus court, tu peux écrire une formule en script de document et lancer cette formule sur chaque bouton.
Par exemple, en script de document tu écris :Code:function maFormule()
{
if (this.getField(« BR2 »).value==2) {
this.getField(« BR2 »).value=1;
} else {
this.getField(« BR2 »).value=2;
}
this.getField(« Liste »).value= » « ;
}…et en script d’action du bouton radio tu écris juste :
Code:maFormule();S’il y a des modifications ou du supplément de script, il n’y a juste à l’écrire dans le script de document. Si tu as 30 boutons, ça réduit pas mal le temps !
@+
:bonjour:bebarth
Maître des clésbonjour,
Dans le fichier joint, j’ai mis un script de calcul sur le bouton droit BR1.Code:if (this.getField(« BR2 »).value==2) {
this.getField(« BR2 »).value=1;
} else {
this.getField(« BR2 »).value=2;
}
this.getField(« Liste »).value= » « ;Donc, dans l’exemple uniquement lorsqu’on clique le bouton BR1 droit, le bouton BR2 change et la liste est remise sur » « .
J’ai remis les champs A, B et C sinon il y avait erreur…
@+
:bonjour:bebarth
Maître des clésbonjour,
Est-il possible de cacher 1 seul bouton-radio sur 3 (par exemple) sans que les 2 autres se cachent ?
ça Merlin a répondu !
Si, à chaque que je change la valeur du bouton radio1
Alors, la Liste1 revient à sa valeur initial (et on peut encore changer la valeur de la Liste1 à la main)…et ça, ce serait bien que tu reformules et si possible que tu partages un fichier, car je ne suis pas certain de comprendre !
A quoi servent les boutons radio ?
@+
:bonjour:bebarth
Maître des clésnon,mais on peut écrire :
Code:switch (event.value < 55) {
case true:
this.getField(« Phot »).display = display.hidden;
this.getField(« Phot.A »).display = display.visible;
break;
default:
this.getField(« Phot »).display = display.hidden;
}…je reviens plus tard pour les autres questions !
@+
:bonjour:bebarth
Maître des clésbonjour,
Ce n’est pas très évident à comprendre, car event.value représente la nouvelle valeur du champ, tandis que event.target.value représente la valeur actuelle du champ.
https://forums.adobe.com/thread/2302153
« Savoir quand utiliser l’un ou l’autre est compliqué… » c’est dit dans le texte !
@+
:bonjour:bebarth
Maître des clésJe n’ai jamais eu de PC ! :extra:
Apple II en 1980 et Mac depuis le 128k en 1984… et en 110 V. J’avais un transfo presque aussi gros que le Mac.Il y a eu des moments très durs début des années 90 ou le service informatique voulait supprimer mon mac. Grâce à mes collègues américains qui m’ont toujours soutenu, j’ai pu rester le seul Mac en France. Quel bonheur… comme ils n’y connaissent rien, j’ai tous les droits admin sur mes Mac’s. Je fais ce que je veux et je les sollicite uniquement pour l’achat de matériel ou logiciel. Et à chaque fois j’entends « Mac, c’est de la m…. ». Au début ça m’énervais mais ça fait déjà un moment que ça glisse et que je pense « cause toujours, le principale c’est que j’ai mon Mac ». J’en ai d’ailleurs 3 sur mon bureau maintenant !
@+
:bonjour:bebarth
Maître des clés??? je n’ai pas compris !
:doute:bebarth
Maître des clésbonjour,
moi quand il y a plein de if/else, je préfère l’expression switch qui pour moi me semble plus claire.Code:switch (event.value) {
case « A »:
this.getField(« Phot »).display = display.hidden;
this.getField(« Phot.A »).display = display.visible;
break;
case « B »:
this.getField(« Phot »).display = display.hidden;
this.getField(« Phot.B »).display = display.visible;
break;
case « C »:
this.getField(« Phot »).display = display.hidden;
this.getField(« Phot.C »).display = display.visible;
break;
default:
this.getField(« Phot »).display = display.hidden;
}Mais ce n’est que mon opinion !
@+
:bonjour:28 mai 2018 à 13:58 en réponse à : Condition à appliquer dans le cas du "cochage" de deux cases #64014bebarth
Maître des clésbonjour,
Voici ma proposition avec cases à cocher.
J’entends déjà Merlin dire qu’il n’aime pas cette fonction…
@+
:bonjour:25 mai 2018 à 21:13 en réponse à : Condition à appliquer dans le cas du "cochage" de deux cases #64009bebarth
Maître des clésCe ne serait pas un lien ???
@+
:bonjour:25 mai 2018 à 17:44 en réponse à : Condition à appliquer dans le cas du "cochage" de deux cases #64008bebarth
Maître des clésPour moi aussi, c’est ce qu’il y a de plus simple, mais :
c’est bien ce que je pensais faire mais dans les propriétés de mon masque je n’ai pas script de calcul…
Dans les propriétés j’ai juste « général, aspect, position, option, action »…ce n’est donc pas un champ !
Ce n’est pas non plus une annotation.
@+
:bonjour:25 mai 2018 à 17:03 en réponse à : Condition à appliquer dans le cas du "cochage" de deux cases #64006bebarth
Maître des clésbonjour,
Qu’est-ce que le « masque c » pour toi ?
Tu peux partager un exemple ?
@+
:bonjour:22 mai 2018 à 11:16 en réponse à : Personnalisation d’un bouton permettant d’importer une pièce jointe #63936bebarth
Maître des clésbonjour,
Voilà, j’ai un peu peaufiné le sujet avec un maximum de 5 pièces jointes !
On pourrait encore l’améliorer et vérifier que les icônes ne soient pas hors pages…
@+
:bonjour:bebarth
Maître des clésTu remplaces la dernière ligne par celles-ci :
Code:if (this.getField(« laDate1″).value != » » && this.getField(« laDate2″).value != » ») {
this.event.target.value= »La différence est de « +Math.abs(mois)+ » mois. »;
} else {
this.event.target.value= » »;
}@+
:bonjour:bebarth
Maître des clésbonjour,
Voici un script à placer en script de calcul du champ texte.Code:var str=this.getField(« laDate1 »).valueAsString;
var res = str.split(« / »);
mois1=parseInt(res[1]);
annee1=parseInt(res[2]);
var str=this.getField(« laDate2 »).valueAsString;
var res = str.split(« / »);
mois2=parseInt(res[1]);
annee2=parseInt(res[2]);
var mois= Math.abs(annee2-annee1)*12;
if (annee2>annee1) {
var mois = mois-12+(12-mois1)+mois2;
} else {
var mois = mois-12+(12-mois2)+mois1;
}
this.event.target.value= »La différence est de « +Math.abs(mois)+ » mois. »@+
:bonjour:20 mai 2018 à 16:54 en réponse à : Personnalisation d’un bouton permettant d’importer une pièce jointe #63932bebarth
Maître des clésbonjour,Une petite variante pour choisir l’icône et sa couleur.@+ :bonjour:
20 mai 2018 à 13:56 en réponse à : Condition à appliquer dans le cas du "cochage" de deux cases #64001bebarth
Maître des clésboujour,Voici une rapide réponse pour un script de calcul du champ texte.N’hésite pas à me dire si tu ne comprends pas.@+ :bonjour:
18 mai 2018 à 09:22 en réponse à : Personnalisation d’un bouton permettant d’importer une pièce jointe #63928bebarth
Maître des clésbonjour,
Voici un exemple pour faire apparaitre l’épingle (ou autre) à la gauche du bouton.
Attention, le point à indiquer pour la position de l’icône est le supérieur gauche, et la taille de l’icône ne varie pas en fonction de l’affichage.
Il faudra certainement ajuster la position Y en fonction de la hauteur du bouton.
@+
:bonjour:bebarth
Maître des clésc’est un peu plus compliqué parce qu’il faut imbriquer des boucles…
Code:var nbExportListe1=this.getField(« ListeNiveau1 »).value;
var nbExportListe2=this.getField(« ListeNiveau2 »).value;
switch (nbExportListe1) {
case 0: //Afrique
switch (nbExportListe2) {
case 0: //Algérie
var nbAindiquer = 150;
break;
case 1: //Maroc
var nbAindiquer = 125;
break;
//etc.
}
break;
case 1: //Europe
switch (nbExportListe2) {
case 0: //France
var nbAindiquer = 1000;
break;
case 1: //Allemagne
var nbAindiquer = 500;
break;
case 2: //Italie
var nbAindiquer = 750;
break;
case 3: //Espagne
var nbAindiquer = 300;
break;
//etc.
}
break;
case 2: //Amérique du nord
switch (nbExportListe2) {
case 0: //USA
var nbAindiquer = 10;
break;
case 1: //Canada
var nbAindiquer = 50;
break;
//etc.
}
break;
//etc.
}
this.event.target.value= nbAindiquer;mais avec un bon éditeur de JavaScript ça se fait !
@+
:bonjour:bebarth
Maître des clés…il faut lire :
Code:…
default:
…et non « delault: », ce qui ne veut rien dire :geek:
Merlin,
il m’est maintenant impossible de modifier une de mes réponse (je crois après un certain temps), même s’il n’y a pas eu d’autres réponses…@+
:bonjour:bebarth
Maître des clésbonjour,
Tu écris un petit script de calcul pour ton champ texteCode:var nbExportListe=this.getField(« ListeNiveau2 »).value;
switch (nbExportListe) {
case 0: //France
var nbAindiquer = 1000;
break;
case 3: //Espagne
var nbAindiquer = 300;
break;
delault:
var nbAindiquer = 0;
}
this.event.target.value= nbAindiquer;…et tu n’oublies pas de cocher « Valider les valeurs sélectionnées immédiatement » en option de la liste déroulante.
@+
:bonjour:7 mai 2018 à 20:53 en réponse à : Ajouter un champ de formulaire dans la fonction "enregistrer sous" #63908bebarth
Maître des clésbonjour,
Dans un premier temps je te propose de regarder ce post :Dans l’exemple joint il y a un bouton « Enregistrer » …qui enregistre et un bouton « Enregistrer sous » qui enregistre avec les nouvelles valeurs des champs « ref » et « Horodatage ». J’espère que tu sauras l’adapter pour ton fichier.
@+
:bonjour:…et de voir si tu peux l’adapter à ton problème (ouverture d’une fenêtre qui demande le nom avec lequel tu veux enregistrer ton fichier sous…).
@+
:bonjour:bebarth
Maître des clésbonjour,
…du coup, je partage quand même l’exemple avec un script que j’avais écris si ça peut servir à quelqu’un !
@+
:bonjour:bebarth
Maître des clésbonjour,
Lorsque l’on masque une page, le signet correspondant perd sont action. Avec un script, il faut donc recréer cette action lorsque l’on fait réapparaitre la page.
Sinon tu pourrais renommer le signet (avec un tiret par exemple) lorsque tu masques la page, ou mettre la couleur du signet en blanc… ou les deux !!!
Je crois qu’il faudrait trouver la couleur exacte, car lorsqu’on met le texte du signet en blanc on arrive à le lire ! le fond ne doit pas être tout à fait blanc, parce que plus blanc que blanc, je ne vois pas…
@+
:bonjour:bebarth
Maître des clésbonjour,
un petit screeshot vaut mieux qu’un long discours !
@+
:bonjour:3 mai 2018 à 21:29 en réponse à : [Adobe ACROBAT] : permettre des textes de couleurs et des tableaux dans un champ #63870bebarth
Maître des clésbonjour,
Voici une proposition où l’on peut choisir la couleur du texte avec un bouton radio.
Est-ce de cette manière que tu voulais pouvoir modifier la couleur ?
@+
:bonjour:bebarth
Maître des clésbonjour,
Il ne peut pas être incorporé au fichier pdf ?
si, tu pourrais le mettre en action d’un signet par exemple !
@+
:bonjour:bebarth
Maître des clésbonjour,
Apparemment non, je ne crois pas que le fichier ait un souci ! C’est un fichier action (zippé).
Il faut le décompresser et double-cliquer pour l’installer.
Si tu l’utilises avec le fichier joint (par exemple), tu lances l’action et ça fonctionne bien !
@+
:bonjour:bebarth
Maître des clésPour commentaires !
bonjour,
Pas de commentaires ??? :doute:
On oubli et on passe à autre chose alors !
@+
:bonjour:bebarth
Maître des clés…dans le principe c’est ça qu’il faut faire ! mais au lieu coller x fois le script, tu créé un script de document « calcul » par exemple, ensuite tu le rappelles uniquement avec calcul();
c’est plus pratique lorsqu’il y a des modifications à faire. ça évite de les recoller partout…
@+
:bonjour:bebarth
Maître des clésbonjour,
As-tu compris le principe ?
@+
:bonjour:bebarth
Maître des clésbonjour,
Voici un petit script pour te permettre de compter les différentes options choisies :Code:var totalA=0;
var totalB=0;
var totalC=0;
for ( var i=0; ivar fname = this.getNthFieldName(i);
if (this.getField(fname).type == « radiobutton » ) {
var valeur = this.getField(fname).value;
switch (valeur) {
case « A »:
totalA++;
break;
case « B »:
totalB++;
break;
case « C »:
totalC++;
}
}
}
app.alert(« Boutons radio trouvés :u0020u000Du0020″+ totalA + » option(s) A.u0020u000Du0020″+ totalB + » option(s) B.u0020u000Du0020″+ totalC + » option(s) C. »,1)@+
:bonjour:bebarth
Maître des clésbonjour,
Comme ça je ne vois pas ! il faudrait voir le fichier… sur le dernier fichier que j’avais joint (exemple-test_BB1.pdf) ça fonctionne, non ???
@+
:bonjour:bebarth
Maître des clésbonjour,
Avez-vous une idée de comment mettre en pratique ?
J’ai écris un petit script qui supprime les pages qui possèdent un champ dont le nom contient « ACC_FR ».
Code:var test = « ZERO »;
var pagesAsupprimer = new Array();
// On teste tous les noms des champs
for (var i = 0; i < this.numFields; i++) {
var fname = this.getNthFieldName(i);
// Page relative au champ
var fpage = this.getField(fname).page;
// Ici on teste si le nom du champ con tient ACC_FR
var str = fname;
var n = str.indexOf(« ACC_FR »);
// Si ACC_FR a été trouvé et la page n’est pas identique à la précédente trouvée
if (n > -1 && fpage != test) {
pagesAsupprimer.unshift(fpage);
var test = fpage;
}
}
// On remet les numéros de pages dans l’ordre décroissant
pagesAsupprimer.sort(function(a, b){return b-a});
// On supprime les pages trouvées dans l’ordre de la table (sens inverss)
for (var i = 0; i < pagesAsupprimer.length; i++) {
this.deletePages({nStart: pagesAsupprimer});
}Il faudra adapter le script selon le nom des champs à tester !
@+
:bonjour:bebarth
Maître des clésbonjour,
Si je veux afficher à l’ouverture du fichier une des 2ème, 3ème, 4ème page cachées dès le départ il ne se passe rien tant que je n’ai pas affiché la première !?!
Je ne suis pas certain de comprendre !
Tu veux afficher directement la page cochée ???
Si c’est cela, tu retiresCode:this.pageNum=pg;en fin de chaque script de checkbox.
@+
:bonjour:bebarth
Maître des clésbonjour,
Tu peux sélectionner uniquement le texte compris entre l’underscore « _ » et le point « . »Code:…
var str = fname;
var n = str.indexOf(« _ »);
var nn = str.indexOf(« . »);
var Pays = str.slice(n+1,nn);
……et là il peut y avoir autant de chiffres qu’il est possible !
@+
:bonjour:bebarth
Maître des clésbonjour,
Comme tu as pu le constater, le JavaScript ne fonctionne pas pour les formulaires ouverts dans un navigateur…
Il faut les importer en local.
@+
:bonjour:bebarth
Maître des clés…en vacances, sans ordi ni wifi !!!
@+:bonjour:
bebarth
Maître des clésSi c’est possible je souhaite que ça soit pas une case texte mais une deuxième liste déroulante afin de choisir directement DT ou TM si l’on veux, mais qu’il mettent automatiquement DT ou TM en fonction de A B C .
…je n’ai donc pas bien compris !
:geek:bebarth
Maître des clésbonjour,
Si j’ai bien compris, il faut que tu fasses une recherche sur le forum sur « liste mère fille ».Je sais pas si c’est possible ça me parait compliqué x)
…je te confirme, ce n’est pas par le plus simple que tu commences !
@+
:bonjour:bebarth
Maître des clésbonjour,
…sinon, on peut tester les pages qui possèdent au moins un champ comprenant « .ACC_ » (par exemple), et on supprime ces pages !
@+
:bonjour:bebarth
Maître des clésbonjour,
c’est un bouton radio qu’il te faut pour choisir soit le choix 1 soit le choix 2 !
En script du bouton radio du choix 1 tu écris :Code:this.getField(« Nom »).display=display.visible;
this.getField(« Prenom »).display=display.visible;
this.getField(« Adresse1 »).display=display.visible;
this.getField(« Societe »).display=display.hidden;
this.getField(« Representant »).display=display.hidden;
this.getField(« Adresse2 »).display=display.hidden;…et en script du bouton radio du choix 2 tu écris… l’inverse !
@+
:bonjour:bebarth
Maître des clésbonsoir,
Voici ma proposition.
Tu places les 3 dossiers inclus dans « monDossier » où tu veux, mais dans le même répertoire (ENV, ECO et Compteurs).
Tu places le fichier « Save_NumAuto.js » en script d’application.
Tu installes l’action « Nume?rotation Automatique.sequ ».
Lorsque tu lances l’action à partir d’un fichier inclus dans ENV ou ECO, tu devrais avoir ce que tu recherchais…
Pour commentaires !
@+
:bonjour:bebarth
Maître des clés…je n’avais pas vu « en français » !
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/RegExp
@+
:bonjour:bebarth
Maître des clés…pour en savoir un peu plus :
https://www.w3schools.com/jsref/jsref_obj_regexp.asp
@+
:bonjour:bebarth
Maître des clésbonjour,
En script de calcul de ton champ « nombre de bouteilles » tu écris :Code:if (this.event.target.value <= 18) {
this.getField(« P_Tr »).value = (this.event.target.value*2)+ »,00 € »;
} else {
this.getField(« P_Tr »).value = « OFFERT »;
}En script de touche (toujours pour ce champs) tu écris :
Code:var regxp=/^[0-9]$/;
if(!event.willCommit) {
if(event.change.length>0 && regxp.test(event.change)==false)
{
app.beep(0);
event.rc=false;
}
}…pour ne tenir compte des nombres positifs !
@+
:bonjour:bebarth
Maître des clésbonjour,
Le numéro d’incrémentation est-il commun pour les 2 répertoires ENV et ECO.
Quel sera le logiciel de l’utilisateur ? Acrobat pro ou Adobe Reader ?
Je regarde ça un peu plus tard…
@+
:bonjour:bebarth
Maître des clésbonjour,
S’il n’y a pas d’autres réponses avant, ce ne sera que demain pour t’aider…
On est d’accord que tous les utilisateurs on les droits d’écritures dans les répertoires !
La zone « Num_Doc » dont tu parles est un champ je suppose.…
Le premier dossier s’appel « ENV ».
Le second s’appel « ECO ».
…
J’aimerais également que lorsqu’il enregistre le formulaire, le formulaire soit enregistré sous avec pour titre le Num_Doc.
…Les fichiers sont enregistrés dans le même répertoire ???
Ce sera au moins un script d’action pour pouvoir enregistrer les documents !
@+
:bonjour:bebarth
Maître des clésbon ben voilà,
J’ai mis une fonction en script de document que j’appelle en script d’ouverture de page :Code:function symbol()
{
var laPage = this.pageNum;
var fpage = -1;
var Pays= » »;
var i = 0;
try {
while (fpage != laPage) {
var fname = this.getNthFieldName(i);
var fpage = this.getField(fname).page;
i++;
}
var str = fname;
var n = str.indexOf(« _ »);
var Pays = str.slice(n+1,n+3);
app.alert({cMsg: »Le code pays est « +Pays+ ». », nIcon:2});
} catch(e) {
app.alert({cMsg: »Il n’y a pas de code pays en page « +(laPage+1)+ ». », nIcon:2});
};
}Si tu colle le script d’ouverture de page sur chaque template, il sera présent pour chaque nouvelle page créée.
Ici il y a un message d’alerte, Il faudra adapter à ce que tu veux faire…
@+
:bonjour:bebarth
Maître des clésdernier point : FR, US, BE… sont des pays je présume.
Y a-t-il toujours uniquement 2 lettres ??? sont-elles toujours situées au même endroit : en fin du nom de champs ou après l’underscore « _ » par exemple ???
@+
:bonjour:bebarth
Maître des clésben, on va dire que c’est moyen clair pour moi !
Est-ce que tu veux récupérer l’info à chaque fois que tu ajoutes une page ou sur un document entier ?
Ou ajoutes-tu cette page ? en première page, en dernière page, n’importe où ???
@+
:bonjour:bebarth
Maître des clésbonjour,
Est-ce que c’est possible de récupérer le FR qui se trouve dans le nom du template ?
Qu’entends-tu par là ??? Normalement, si tu rajoutes une page via un template, tu connais son nom, non !!!
Comment rajoutes-tu la page ?
@+
:bonjour:bebarth
Maître des clés…pas besoin de script de document !
Tu écris ceci directement soit en action champ activé/désactivé soit en souris entrée/sortie :Code:if (this.event.target.fillColor == « RGB,1,0,0 ») {
this.event.target.fillColor = [« RGB », 1,1,0];
} else {
this.event.target.fillColor = [« RGB », 1,0,0];
}Ici, ton erreur est que lorsque l’on lit la couleur du champ, la valeur retournée est « RGB,1,0,0 » et non « [RGB »,1,0,0] ». Ça c’est la syntaxe pour écrire la couleur du fond.
@+
:bonjour:bebarth
Maître des clésbonjour,
https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2Fcolor_properties.htm
…je pense que tu vas trouver !!!
@+
:bonjour:1 avril 2018 à 08:37 en réponse à : Formulaire dynamique Livecycle Designer : champs qui s’effacent #63728bebarth
Maître des clésbonjour,
Je voudrais bien essayer de t’aider, mais je ne connais pas LiveCycle Designer et ton fichier est protégé donc impossible de lire les scripts, les noms de champs et le template (je suppose) et de voir ce qui se passe…
N’est-il pas possible d’écrire un script d’ouverture de page qui reprendrait le numéro de facture et la date pour les afficher dans la nouvelle page ! C’est ce que j’avais fait pour un autre formulaire.
@+
:bonjour:30 mars 2018 à 12:35 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63680bebarth
Maître des clés…voici le script commenté.
J’ai rajouté une boucle while pour être certain de n’indiquer qu’un nombre positif !Code://On met les instruments et les valeurs par défaut dans une table
var Instruments = [« Violon I », « 8 », « Violon II », « 7 », »Alto », « 6 », « Violoncelle », « 5 », « Contrebasse », « 4 »];
//On créé le template
var t = this.createTemplate ({nPage:0, cName: »Couv »});
//On commence la boucle avec modulo i+2 car les instruments sont tous les 2 éléments dans la table
for (var i = 0; i < Instruments.length; i = i+2) {
//Instruments est le nom de l’instrument dans la table
var Inst = Instruments;
//Instruments est le nombre de copies par défaut dans la table
var nb = Instruments;
//J’ai rajouté une boucle pour être certain de ne prendre en compte que des nombres, et positifs
while (bb<1 | isNaN(bb)) {
var bb = app.response({
cQuestion: « Combien souhaitez-vous générer de parties de « +Inst+ » ? »,
cTitle: « Nombre de parties »,
cDefault: nb
});
//On conertit le chaine en nombre
var nbreCopies = parseFloat(bb);
}
//On remet le nombre à 0 pour pouvoir recommencer la boucle while pour le prochain instrument
var bb = 0;
//Boucle pour ajouter le nombre de pages indiqué
for (var a = 1; a <= nbreCopies; a++) {
//On ajoute une page
this.spawnPageFromTemplate (« Couv », « », true, false);
//Premier champ nommé avec le nom de l’instrument
//Si le nom était commun pour tous les instruments, la valeur (donc le nom de l’instrument) changerait à chaque boucle
var f = this.addField(Inst, »text »,0,[0,50,594,100]);
f.value = Inst;
f.alignment = « center »;
f.textSize = 40;
f.textColor = color.black;
f.textFont = font.Helv;
//Deuxième champ nommé différemment pour chaque page
//idem que pour le nom des champs Instruments
var f = this.addField(Inst+ »ZoneCopies »+a, »text »,0,[525,800,585,830]);
f.value = a + « / » + nbreCopies;
f.alignment = « right »;
f.textSize = 20;
f.textColor = color.black;
f.textFont = font.Helv;
}
}
//On supprime la page qui a servi de template et qui se trouve en dernière page
this.deletePages(this.numPages-1);
//On inverse l’ordre des pages
for (i = this.numPages-1; i >= 0; i–) this.movePage(i);
//On affiche la première page
this.pageNum = 0;
//…et on enregistre sous !
this.saveAs({cPath: »/C/Users/…/Desktop/CouvCordes.pdf »});
//Fini !!!@+
:bonjour:30 mars 2018 à 06:58 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63677bebarth
Maître des clésbonjour,
Dis-moi si tu veux que je commente le script !
@+
:bonjour:bebarth
Maître des clésPourquoi ???
Il ne fonctionne pas bien ?
@+
:bonjour:bebarth
Maître des clésbonjour,
si tu essayes d’écrire « this/getField… » tu auras vite fait la réponse !!!Sinon, pour la case à cocher, on peut aussi écrire :
Code:if (event.target.isBoxChecked(0)) {
// script à exécuter;
} else {
// script à exécuter;
}@+
:bonjour:29 mars 2018 à 13:08 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63675bebarth
Maître des clésbonjour,
…la boucle ! (sans être désobligeant :geek: ).Code:var Instruments = [« Violon I », « 8 », « Violon II », « 7 », »Alto », « 6 », « Violoncelle », « 5 », « Contrebasse », « 4 »];
var t = this.createTemplate ({nPage:0, cName: »Couv »});
for (var i = 0; i < Instruments.length; i = i+2) {
var Inst = Instruments;
var nb = Instruments;
var nbreCopies = app.response({
cQuestion: « Combien souhaitez-vous générer de parties de « +Inst+ » ? »,
cTitle: « Nombre de parties »,
cDefault: nb
});
for (var a = 1; a <= nbreCopies; a++){
this.spawnPageFromTemplate (« Couv », « », true, false);
var f = this.addField(Inst, »text »,0,[0,50,594,100]);
f.value = Inst;
f.alignment = « center »;
f.textSize = 40;
f.textColor = color.black;
f.textFont = font.Helv;
var f = this.addField(Inst+ »ZoneCopies »+a, »text »,0,[525,800,585,830]);
f.value = a + « / » + nbreCopies;
f.alignment = « right »;
f.textSize = 20;
f.textColor = color.black;
f.textFont = font.Helv;
}
}
this.deletePages(this.numPages-1);
for (i = this.numPages-1; i >= 0; i–) this.movePage(i);
this.pageNum=0;
this.saveAs({cPath: »/C/Users/…/Desktop/CouvCordes.pdf »});@+
:bonjour:bebarth
Maître des clésBonjour,
Regarde si on ne t’a pas installé une version Acrobat Standard au lieu d’une version Pro…
@+
:bonjour:27 mars 2018 à 15:43 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63672bebarth
Maître des clésJe n’ai pas beaucoup de temps en ce moment, mais j’essaierai de t’écrire le script dans les prochains jours.
@+
:bonjour:27 mars 2018 à 15:02 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63670bebarth
Maître des clésbonjour,
Pour moi, dans ton script, tu rajoutes le template au dessus de la dernière page. Essaye :Code:this.spawnPageFromTemplate (« Couv », 0, false, false)…et une petite boucle avec le nom des instruments dans une table éviterait d’écrire 5 fois la même chose, non !!!
@+
:bonjour:bebarth
Maître des clésvous êtes un dieu!!!!….
Faut pas exagérer !!! Etre Grand Magicien me convient plus qu’honorablement.
@+
:bonjour:22 mars 2018 à 18:07 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63667bebarth
Maître des clés« ON » n’est pas forcément Merlin !!!
:Smiley00:
22 mars 2018 à 11:45 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63665bebarth
Maître des clésOn pourrait les rajouter…
22 mars 2018 à 11:29 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63663bebarth
Maître des clésbonjour,
Avant de me relancer dans un script qui ne correspondrait pas à ce que tu veux, pourrais-tu me donner quelques précisions.
Tu as donc un fichier partition et un fichier couverture que tu voudrais imprimer en « X » exemplaires avec la couverture personnalisée.
As-tu réellement besoin d’un fichier final compilant toutes ces versions, ou juste d’une action qui permette d’imprimer les différentes versions ?
Veux-tu comme le propose Merlin insérer cette couverture en « template » qui te permettrait de l’afficher ou pas selon les besoins ???@+
:bonjour:bebarth
Maître des clésbonjour Merlin,
Le tuto que tu indiques répondrait plus à un autre post où j’avais répondu car il extrait les pages contenant un même mot et enregistre ce mot comme nom de fichier.
https://abracadabrapdf.net/forum/index.php/topic,3410.msg20094.html#msg20094Ici, le problème est un peu différent. On teste les mots qui sont après et sur la même ligne que le mot COMMUNE ou SECTEUR et on prend tous ces mots pour former un nom (de ville et de fichier). C’est pourquoi j’avais demandé s’il n’y avait pas d’autres mots sur la même ligne, sinon impossible de savoir ou s’arrête le nom de la ville.
@+
:bonjour:bebarth
Maître des clésbonjour Merlin,
Pareil pour moi, c’est pourquoi j’ai fourni des fichiers .docx et .rtf ne sachant ce que disposait bendesarts comme logiciel(s).
@+
:bonjour:bebarth
Maître des clésbonjour,
Voici ce que j’ai en adaptant le script qui était dans le post indiqué.
Si le JavaScript est du charabia pour toi, j’espère que tu sauras te dépatouiller avec ça car je n’ai pas beaucoup de temps pour expliquer en ce moment… et les opérations de temps ne sont pas ce qui est de plus simple pour débuter !
Mais s’il doit y avoir quelques adaptations c’est faisable quand même !
@+
:bonjour:bebarth
Maître des clésbonjour,
Comment remplis-tu les heures ? Ce sont des champs j’espère ???
Je suppose qu’il faut remplir les heures d’arrivée et de départ !
Le total heures semaines est le total de toutes les lignes ???
@+
:bonjour:bebarth
Maître des clésbonjour,
je n’ai pas eu de problème, mais mieux vaudrait « Enregistrer sous un autre… » ton fichier !
Je te joins les fichiers docx et rtf.
@+
:bonjour:bebarth
Maître des clésbonsoir,
Là, ça devrait marcher qu’il y ait ou pas des mots sur la page et qu’il y ait COMMUNE/SECTEUR ou pas !Code:console.show();
console.clear();
//Début durée
d0=new Date();
debut=util.printd(« dd-mm HH:MM »,d0);
console.println(« Début process: »+debut);
//Initialisation des variables
var Chemin = this.path;
var PathSansExt = Chemin.substring(0,Chemin.length-4);
var nomDocument = this.documentFileName;
var repertoire = Chemin.substring(0,Chemin.length-nomDocument.length);
for (var p = 0; p < this.numPages; p++) {
var ville = « »;
var ckWord = « »;
var i = 0;
//recherche du mot COMMUNE
var numWords = this.getPageNumWords(p);
console.println(« La page: »+(p+1)+ » comporte « + numWords + » mots »);
if (numWords > 0) {
try {
while (ckWord != « COMMUNE » && ckWord != « SECTEUR ») {
var ckWord = this.getPageNthWord(p, i, true);
//Coordonnées du mot
var q = this.getPageNthWordQuads(p, i);
// convert quads in default user space to rotated
// user space used by Links.
m = (new Matrix2D).fromRotated(this,p);
mInv = m.invert()
r = mInv.transform(q) //Coordonnées champ du mot trouvé
r=r.toString() //Conversion en chaîne
r = r.split(« , »); //Séparation de la chaîne à chaque virgule « , »
//Position verticale du mot
var posVert = r[3];
i=i+1;
}
var posMot = posVert;
while (posMot == posVert) {
var ckWord = this.getPageNthWord(p, i, true);
//Coordonnées du mot
var q = this.getPageNthWordQuads(p, i);
// convert quads in default user space to rotated
// user space used by Links.
m = (new Matrix2D).fromRotated(this,p);
mInv = m.invert()
r = mInv.transform(q) //Coordonnées champ du mot trouvé
r=r.toString() //Conversion en chaîne
r = r.split(« , »); //Séparation de la chaîne à chaque virgule « , »
//Position verticale du mot
var posMot = r[3];
i=i+1;
if (posMot == posVert) {var ville = ville + » » + ckWord;}
}
var str = ville;
var debutVille = ville.substring(0,1);
if (debutVille == » « ) {
var res = str.slice(2);
} else {
var res = str.slice(1);
}
var ville = res;
if (ckWord == « COMMUNE ») {
console.println(« Commune : « +ville);
} else {
console.println(« Secteur : « +ville);
}
if (ville != « ») {
this.extractPages({
nStart: p,
cPath: repertoire+ville+ ».pdf »
});
}
} catch(e) {
app.alert({cMsg: »La page « + (p+1) + » ne contient ni COMMUNE ni SECTEUR. », nIcon:2});
}
}
}
//Fin durée
df=new Date();
fin=util.printd(« dd-mm HH:MM »,df);
console.println(« Fin process: »+fin);
delta=(df.valueOf()-d0.valueOf())/1000/60;
console.println(« Duree process: »+delta+ » minutes »);Si tu ne veux pas le message d’alerte, tu enlève la ligne
Code:app.alert({cMsg: »La page « + (p+1) + » ne contient ni COMMUNE ni SECTEUR. », nIcon:2});@+
:bonjour:bebarth
Maître des clés…pas d’erreur de mon côté avec le fichier que tu avais fourni, mais je n’ai pas pris en compte la possibilité par exemple qu’une page soit vierge.
Cette possibilité est-elle envisageable ??? Il faudrait peut-être rajouter des fonctions « try » !!!
Je ne sais pas si je pourrai regarder ça ce soir… trop de boulot (je suis sur une vidéo Adobe Première très urgente -> pour samedi).
Sinon demain matin !
@+
:bonjour:bebarth
Maître des clésBon ben on va prendre le problème différemment.
On cherche COMMUNE ou SECTEUR sur l’original et on extrait la page.Code:console.show();
console.clear();
//Début durée
d0=new Date();
debut=util.printd(« dd-mm HH:MM »,d0)
console.println(« Debut process: »+debut)
//Initialisation des variables
var Chemin = this.path;
var PathSansExt = Chemin.substring(0,Chemin.length-4);
var nomDocument = this.documentFileName;
var repertoire = Chemin.substring(0,Chemin.length-nomDocument.length);
for (var p = 0; p < this.numPages; p++) {
var ville = « »;
var ckWord = « »;
var i = 0;
//recherche du mot COMMUNE
var numWords = this.getPageNumWords(p);
while (ckWord != « COMMUNE » && ckWord != « SECTEUR ») {
var ckWord = this.getPageNthWord(p, i, true);
//Coordonnées du mot
var q = this.getPageNthWordQuads(p, i);
// convert quads in default user space to rotated
// user space used by Links.
m = (new Matrix2D).fromRotated(this,p);
mInv = m.invert()
r = mInv.transform(q) //Coordonnées champ du mot trouvé
r=r.toString() //Conversion en chaîne
r = r.split(« , »); //Séparation de la chaîne à chaque virgule « , »
//Position verticale du mot
var posVert = r[3];
i=i+1;
}
var posMot = posVert;
while (posMot == posVert) {
var ckWord = this.getPageNthWord(p, i, true);
//Coordonnées du mot
var q = this.getPageNthWordQuads(p, i);
// convert quads in default user space to rotated
// user space used by Links.
m = (new Matrix2D).fromRotated(this,p);
mInv = m.invert()
r = mInv.transform(q) //Coordonnées champ du mot trouvé
r=r.toString() //Conversion en chaîne
r = r.split(« , »); //Séparation de la chaîne à chaque virgule « , »
//Position verticale du mot
var posMot = r[3];
i=i+1;
if (posMot == posVert) {var ville = ville + » » + ckWord;}
}
var str = ville;
var debutVille = ville.substring(0,1);
if (debutVille == » « ) {
var res = str.slice(2);
} else {
var res = str.slice(1);
}
var ville = res;
console.println(« Commune : « +ville);
if (ville != « ») {
this.extractPages({
nStart: p,
cPath: repertoire+ville+ ».pdf »
});
}
}
//fin duree
df=new Date();
fin=util.printd(« dd-mm HH:MM »,df)
console.println(« Fin process: »+fin)
delta=(df.valueOf()-d0.valueOf())/1000/60
console.println(« Duree process: »+delta+ » minutes »)@+
:bonjour:bebarth
Maître des clés…parce que j’ai essayé :
Code:var d = app.activeDocs;
for( var i in d )
if( d != this ) d.closeDoc();et ça ne fonctionne pas non plus !!! enfin les fichiers se ferments tous à la fin… :mur:
@+
:bonjour:bebarth
Maître des clésbonjour,
J’avais effectivement remarqué que tous les fichiers se fermaient en fin de script alors que closeDoc(); est en fin de boucle, mais je ne savais pas que tu avais autant de documents…
Comme ça, je ne sais pas comment faire, mais je vais regarder !Pour rechercher soit COMMUNE soit SECTEUR, tu modifies cette ligne :
Code:while (ckWord != « COMMUNE » && ckWord != « SECTEUR ») {ça devrait fonctionner ! et pas besoin de rajouter « 2 » car un simple caractère n’est pas considéré comme un mot !
Je te tiens au courant si je trouve pour fermer les fenêtre une à une.
@+
:bonjour:20 mars 2018 à 10:18 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63660bebarth
Maître des clésbonjour,
…me génère autant de fichiers que de couvertures…
c’est ce que j’avais cru comprendre !
là je ne comprend plus bien. Les partitions des instruments à cordes sont différentes et proviennent de fichiers différents ? ou d’un seul ficher ?
A quoi correspond la question « Combien voulez-vous générer de parties ? » est-ce « …de copies ? »@+
:bonjour:20 mars 2018 à 08:02 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63658bebarth
Maître des clésbonjour,
Voici le script que je te propose et qui reprend les indications que j’ai trouvées dans ton script. La position des champs créés est à définir plus précisément. J’ai mis de l’Helvetica en police car je ne connais pas le nom à indiquer pour Garamond…Je pense que l’idée proposée par Merlin est plus logique car tu peux définir les champs que tu veux où tu veux et faire une mise en page un peu plus sophistiquée…
Sinon, on peu aussi créer un fichier « couverture » que l’on vient insérer en première page à la place de cette page blanche qui ne comporte que 2 blocs de textes !Je te joins également l’action Acrobat.
Code://Initialisation des variables
var Chemin = this.path;
var PathSansExt = Chemin.substring(0,Chemin.length-4);
var nbreParties = 0;
//Questions
var nomInstrument = app.response({
cQuestion: « Saisissez le nom de l’instrument : »,
cTitle: « Instrument »,
cDefault: « Violon »
});
while (nbreParties<1 | isNaN(nbreParties)) {
var nbreParties = app.response({
cQuestion: « Combien voulez-vous générer de parties ? »,
cTitle: « Nombre de parties »,
cDefault: « 1 »
});
var a = parseFloat(nbreParties);
}
for (i=1; i<=a; i++) {
// Nouveau document
var newDoc = app.newDoc();
//Pages insérées
newDoc.insertPages( {
nPage: newDoc.numPages-1,
cPath: this.path,
nStart: 0,
nEnd: this.numPages-1
});
// Construction des champs texte
var f = newDoc.addField(« Zone_Num », « text », 0, [200,250,250,400] )
f.value = i + « / » + nbreParties; // Texte du bas de page
f.alignment = « center »; // Alignement du texte
f.textSize = 20; // Corps du texte
f.textColor = color.black; // Couleur du texte
f.textFont = font.Helv; // Police du texte
var f = newDoc.addField(« Zone_Instrument », « text », 0, [400,400,300,300] )
f.value = nomInstrument; // Texte du bas de page
f.alignment = « center »; // Alignement du texte
f.textSize = 20; // Corps du texte
f.textColor = color.black; // Couleur du texte
f.textFont = font.Helv; // Police du texte
//Enregistrement
newDoc.saveAs(PathSansExt+ » (« +nomInstrument+ » « +i+ » sur « +nbreParties+ »).pdf »);
newDoc.closeDoc();
}@+
:bonjour:bebarth
Maître des clésbonsoir,
regarde ce post :
https://abracadabrapdf.net/forum/index.php/topic,3092.msg17935.html#msg17935
et si tu ne comprends pas, partage un fichier en explicant exactement ce que tu souhaiterais faire.
@+
:bonjour:bebarth
Maître des clésbonjour,
Ce que je ferais, c’est créer une action composée de 2 actions « Réduire la taille du fichier » et « Enregistrer » avec option « optimisation PDF », puis lorsque tu lances l’action, tu choisis soit « Ajouter des fichiers » soit « Ajouter un dossier ».
@+
:bonjour:19 mars 2018 à 17:17 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63656bebarth
Maître des clésbonjour,
Si je comprend bien, c’est le document initial complet auquel tu rajoutes une couverture numérotée !
Sur la couverture, il n’y a que les 2 zones de textes ???
Effectivement, les syntaxes JavaScript d’Acrobat ne sont pas exactement celles que tu as utilisées.
https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FJavaScript_API.htm
J’essaye de regarder ça pour demain.
@+
:bonjour: -
AuteurRéponses