Toutes mes réponses sur les forums
-
AuteurRéponses
-
bebarthMaître des clés
bonjour,
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 #63945bebarthMaî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 #63943bebarthMaî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 #63941bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaître des clés??? je n’ai pas compris !
:doute:bebarthMaî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 #64014bebarthMaî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 #64009bebarthMaî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 #64008bebarthMaî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 #64006bebarthMaî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 #63936bebarthMaî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:bebarthMaî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:bebarthMaî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 #63932bebarthMaî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 #64001bebarthMaî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 #63928bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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" #63908bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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 #63870bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaître des clésPour commentaires !
bonjour,
Pas de commentaires ??? :doute:
On oubli et on passe à autre chose alors !
@+
:bonjour:bebarthMaî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:bebarthMaître des clésbonjour,
As-tu compris le principe ?
@+
:bonjour:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaître des clés…en vacances, sans ordi ni wifi !!!
@+:bonjour:
bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaître des clés…pour en savoir un peu plus :
https://www.w3schools.com/jsref/jsref_obj_regexp.asp
@+
:bonjour:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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 #63728bebarthMaî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. #63680bebarthMaî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. #63677bebarthMaître des clésbonjour,
Dis-moi si tu veux que je commente le script !
@+
:bonjour:bebarthMaître des clésPourquoi ???
Il ne fonctionne pas bien ?
@+
:bonjour:bebarthMaî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. #63675bebarthMaî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:bebarthMaî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. #63672bebarthMaî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. #63670bebarthMaî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:bebarthMaî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. #63667bebarthMaî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. #63665bebarthMaî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. #63663bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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:bebarthMaî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. #63660bebarthMaî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. #63658bebarthMaî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:bebarthMaî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:bebarthMaî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. #63656bebarthMaî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:bebarthMaître des clés…le plus simple pour connaitre le chemin à indiquer :
- Tu places un fichier à l’endroit où tu veux enregistrer tes nouveaux fichiers avec les noms des communes
- Tu ouvres ce fichier avec Acrobat
- Tu ouvres la console (cmd J sur mac, ce doit être ctrl J sur PC)
- Tu tapes “this.path;” puis la touche enter du clavier numérique
- Le chemin du fichier s’affiche dans la console
- Tu copies ce chemin, sans le nom du fichier
- Dans le script, tu modifies cette ligne
- [/list]
Code:newDoc.saveAs(repertoire+ville+”.pdf”);
en
Code:newDoc.saveAs(“le chemin copié”+ville+”.pdf”);- …en mettant les guillemets.
[/list]Normalement, si tu as les droits dans le répertoire, ça devrait fonctionner.
@+
:bonjour:bebarthMaître des clésbonjour,
Voici en pièce jointe le fichier action que je te propose.
Ici, j’extrais la page avant de rechercher le mot COMMUNE puis les mots qui suivent pour composer le nom de la commune. Cela implique donc que l’on doit trouver le mot “COMMUNE” sur toutes les pages. Si ce n’est pas le cas il faudra réorganiser le script.
Si tu n’as pas de sous à dépenser et que tu es prêt à te prendre un peu la tête, essaye cette action…
Pour ma part, je me suis effectivement un peu “pris la tête”, car à force de prendre des petits bouts de scripts à droite à gauche, on arrive à prendre des variables de mêmes noms et ça ne le fait pas… Mais bon, j’ai connu des prises de têtes bien plus compliquées !!!
Tu me dis ce que tu en penses et si le mot “COMMUNE” n’est pas obligatoirement sur toutes les pages, on fera différemment.
@+
:bonjour:bebarthMaître des clésbonjour,
A mon avis c’est faisable, mais ça demande un peu de boulot !
A ce que je comprend les noms de communes ne sont pas des champs.
Sur la même ligne de texte que celui du nom de la commune, peut-il y avoir d’autres textes ???? en gros, comment savoir si le nom de commune comporte un ou plusieurs mots ???
J’essaie de voir ça lundi.
Bon weekend.
@+
:bonjour:bebarthMaître des clésbonjour,
Le propre du bouton radio est de pouvoir lui attribuer plusieurs valeurs selon le bouton coché, ce qui évite d’avoir plusieurs variables…
Essaye d’adapter ce script de calcul (j’espère ne m’être pas trompé dans les formules) :Code:var a1 = this.getField(“rang”).value;
var tx = this.getField(“taux”).value;
var bt = this.getField(“bouton”).value;
switch (bt) {
case “boutonGauche”:
if (a1 >> 1) {
var res = a1*3.5;
} else {
var res = 3.5;
}
break;
case “boutonDroit”:
if (a1 >> 0) {
var res = 250+(a1-2)*50;
} else {
var res = 250
}
}
if (a1 == 0) var res = 0;
this.event.target.value = res * tx;Pour ma part, je ne suis pas professeur de JavaScript, mais je ne suis pas favorable à supprimer le “this.” même si on ne travaille qu’avec un seul fichier ouvert et qu’il peut paraître inutile.
@+
:bonjour:13 mars 2018 à 11:05 en réponse à : Enregistrement de formulaire : autoriser seulement une copie #63561bebarthMaître des clésbonjour,
Si le document doit être ouvert plusieurs fois, il faudrait peut-être rajouter une ligne pour supprimer le script de document :Code:app.execMenuItem(“SaveAs”);
this.removeScript(“monScript”); // “monScript” est le nom du script de document créésinon, à chaque ouverture, on aura la fenêtre d’enregistrement sous…
@+
:bonjour:bebarthMaître des clésJ’avais fait ce fichier dans un post précédent.
Regarde si on pourrait l’adapter à ton problème.
@+
:bonjour:bebarthMaître des clés…oui, mais le formulaire généré pour envoyer au client est fait à partir d’Acrobat Pro ou d’Adobe Reader ?
@+
:bonjour:bebarthMaître des clésJe viens de m’apercevoir que je t’ai dis une bêtise…
en script de document, il faut écrire :Code:var ok = “OK”;sinon, plus de message !
Lorsqu’on aplati les champs, ce ne sont plus des champs (donc plus modifiables). Les valeurs des champs sont assimilées à du texte.
fait un essai et tu comprendras certainement mieux.
@+
:bonjour:bebarthMaître des clésbonjour,
Je te conseille déjà de faire des essais sur des copies de fichiers….
Si tu enregistres et que ton fichier n’est pas aplati, tu auras ce message (cf. copie d’écran).
Si OUI, les champs sont aplatis tu ne peux donc plus les modifier. Si NON tu peux encore les modifier.
Lorsque les champs sont aplatis, il n’y a plus de message !
@+
:bonjour:bebarthMaître des clésbonjour,
et quelle sera l’utilisation finale ? avec Adobe Reader ???
@+
:bonjour:bebarthMaître des clésbonjour,
Je ne sais pas ce que pensera Merlin sur le principe, mais si tu colles :Code:var ok = “pas OK”;en script de document, et ce script :
Code:try {
if (ok==”OK”) {
var enreg = app.alert({
cMsg: “u0041u0076u0065u007Au002Du0076u006Fu0075u0073u0020u0074u0065u0072u006Du0069u006Eu00E9u0020u0064u0065u0020u0072u0065u006Du0070u006Cu0069u0072u0020u006Cu0065u0020u0066u006Fu0072u006Du0075u006Cu0061u0069u0072u0065u0020u003Fu000Du0020u000Du0041u0054u0054u0045u004Eu0054u0049u004Fu004Eu000Du0020u000Du2022u0020u0053u0069u0020u004Fu0055u0049u0020u0076u006Fu0075u0073u0020u006Eu0065u0020u0070u006Fu0075u0072u0072u0065u007Au0020u0070u006Cu0075u0073u0020u006Cu0065u0020u006Du006Fu0064u0069u0066u0069u0065u0072u002Eu000Du2022u0020u0053u0069u0020u004Eu004Fu004Eu0020u0076u006Fu0075u0073u0020u0070u006Fu0075u0072u0072u0065u007Au0020u006Cu0065u0020u006Du006Fu0064u0069u0066u0069u0065u0072u0020u0075u006Cu0074u00E9u0072u0069u0065u0075u0072u0065u006Du0065u006Eu0074u002E”,
cTitle: “Formulaire rempli”,
nIcon: 2, nType: 2
});
if (enreg==4) {
this.flattenPages();
this.removeScript(“ok”);
this.addScript(“ok”, “var ok = “pas OK”;”);
}
}
} catch(e) {}en script d’action, cela devrait correspondre à ce que tu veux faire tout en permettant l’enregistrement si le formulaire n’est pas définitivement complété !
Pour commentaires…
@+
:bonjour:bebarthMaître des clés…pas mieux !!!
Maintenant que tu sais comment on fait, lorsqu’on indique les 2 paramètres on peut simplifier l’expression par :
this.deletePages(5,7);
this.deletePages(1,3);
On est obligé de spécifier nStart ou nEnd que lorsqu’on indique un seul paramètre.
@+
:bonjour:bebarthMaître des clésbonjour,
Non, impossible !
app.newDoc() et saveAs() ne peuvent être exécutés avec un script de bouton.
@+
:bonjour: -
AuteurRéponses