Toutes mes réponses sur les forums
-
AuteurRéponses
-
jctremblayParticipant
Cela ne semble pas être le cas. Regarde le document joint.
Attachments:
You must be logged in to view attached files.jctremblayParticipantDommage!
jctremblayParticipantJ’obtiens un NaN quand j’utilise ton code:
event. value = (event.target.page[1] + 1) + " / " + this.numPages ;
Mais celui-ci fonctionne:
event.value = (event.target.page + 1) + " / " + this.numPages ;
9 novembre 2024 à 16:42 en réponse à : Identifier la couleur des champs en exportant les données #75142jctremblayParticipant@Rockabilly
Dans le fichier joint…
Le script de calcul ajoute la couleur dans les infobulles des champs en plus de changer la couleur de fond de ceux-ci.Il y a deux boutons:
Un va exporter le nom des champs ainsi que la valeur de leurs infobulles dans un fichier .txt. Pour pouvoir le faire, tu devras inclure, dans la section Protection (renforcée) des préférences d’Acrobat, le PDF ou le répertoire dans lequel il se trouve.L’autre bouton va simplement envoyer le résultat dans un champ «MAT».
~ Jean-Claude
Attachments:
You must be logged in to view attached files.8 novembre 2024 à 16:56 en réponse à : Identifier la couleur des champs en exportant les données #75141jctremblayParticipantEn effet, si on veut rapidement obtenir que les valeurs de certains champs, un script d’exportation donnerait un résultat plus concis. Tout dépend de ce que l’utilisateur veut faire avec ces données une fois exportées.
7 novembre 2024 à 19:17 en réponse à : Identifier la couleur des champs en exportant les données #75138jctremblayParticipantTu trouveras cette approche dans le document ci-joint.
Reste à mettre le script de format pour «cacher» la couleur.Attachments:
You must be logged in to view attached files.7 novembre 2024 à 18:58 en réponse à : Identifier la couleur des champs en exportant les données #75137jctremblayParticipantUne piste de solution…
Si en plus de changer la couleur des champs, ton script de calcule ajouter à la fin des valeurs de tes champs le texte «- Orange», et que, dans ces champs tu ajoutes un script de format qui cache le texte à partir de «- ». Ceux-ci seront allons présent lors de l’exportation des données en .txt, mais pas visibles dans les champs du PDF.
Ex:
if ((this.getField("AS").value == "1") && color.equal(this.getField("EST").fillColor, color.green)) { this.getField("EST").fillColor = color.orange;
var estField = this.getField("EST");
if (!estField.valueAsString.endsWith(" - Orange")) {
estField.value = estField.valueAsString + " - Orange"; }
}
et ceci comme script de format.
event.value = String(event.value).split("-")[0].trim();
Le reste du code est possiblement à optimiser.6 novembre 2024 à 20:03 en réponse à : Identifier la couleur des champs en exportant les données #75129jctremblayParticipantUne maquette serait très utile en effet. Cela permettrait de voir les types de champs en question.
Je comprends que ce dont tu as besoin est que ces «marqueurs» de couleurs soit présents danston exportation des données.
jctremblayParticipant… et on aime ça le «frotter» un peu. Il en sort toujours quelque chose d’épatant! 😀
jctremblayParticipant@bebarth
J’ai réussi à faire que les choix multiples d’une zone de liste se copient en temps réel dans un champ de texte. Il y a donc un script lors du changement de choix, et un script de calcul dans le champ pour mettre en forme les valeurs reçues.
(voir le PDF pour les codes).Par contre je n’y suis pas arrivé encore pour une zone de liste vers une liste déroulante.
Attachments:
You must be logged in to view attached files.jctremblayParticipantJe suis complètement débordé avec tout le TAF urgent à terminé! C’est un document d’expérimentation, donc pas d’urgence. Merci!
jctremblayParticipantÇa devrait fonctionner sur Mac et PC, sous unix je ne connais pas la syntaxe des chemins !
J’essai cela quand j’ai quelques minutes. Merci!
jctremblayParticipantJe l’ai placé en action champ désactivé car comme la sélection multiple est autorisée ça ne fonctionne pas correctement en action “changement de sélection”.
Merci! C’est ce que j’avais remarqué. Donc, “selection multiple” et “changement de sélection” ne fonctionne pas ensemble.
jctremblayParticipantÇa plus de sens… 🙂 Merci!
jctremblayParticipantSi le pdf original est sur le même disque on peut en déduire le chemin du bureau, mais attention ils sont différents selon l’OS !
Donc, ce sera impossible si le PDF source se trouve sur un serveur SharePoint j’imagine.
Il me manque les détails de cela pour l’instant.
@Merlin Merci pour le lien vers le «safe path». Je n’y comprends rien. Mais bon, je n’ai pas pris mon café encore. 🙂jctremblayParticipantMais on pourrait (dans le script d’application) en inclure un vers le dossier bureau de l’utilisateur, au lieu du chemin du PDF original?
jctremblayParticipantDonc, on ne peut qu’écrire manuellement le chemin désiré?
Impossible de capturer le chemin, et de l’écrire comme variable pour pouvoir le récupérer pour le reste de l’exécution?
jctremblayParticipantJe n’arrive pas à faire tourner ce script en script de document…
Tu dois mettre tout le script dans une fonction et celle elle que tu appera dans ton bouton.
Attachments:
You must be logged in to view attached files.jctremblayParticipantAh! Maintenant je saisis… 🙂
jctremblayParticipantJuste pour info, ce n’est pas la peine d’indiquer event.rc = true; car c’est l’état par défaut de la validation si on indique pas event.rc = false;. Ça fait une ligne de moins…
Donc le
event.rc = false;
n’est pas nécessaire également?jctremblayParticipantC’est amusant comment il y a plusieurs chemin pour obtenir le même résultat avec le JavaScript.
J’ai réussi à obtenir 3, 4 méthode qui donnes le même résultat. Voici la plus courte.if (event.value) {
var enteredDate = util.scand("dd/mm/yyyy", event.value);
if (enteredDate >= new Date()) {
this.getField("DateLimite").value = util.printd("dd/mm/yyyy", new Date(enteredDate.getTime() + ([5,4,6,5,5,5,5][enteredDate.getDay()] * 86400000))
);
event.rc = true;
} else {
app.alert("La date doit être aujourd'hui ou une date ultérieure.");
event.rc = false; }
}
Attachments:
You must be logged in to view attached files.jctremblayParticipantJ’ai modifié ton script de document comme suit:
function VarAleas() {
for (var i = 1; i <= 4; i++) {
var aMin = parseFloat(this.getField("Var." + i + ".1").value);
var aMax = parseFloat(this.getField("Var." + i + ".2").value);
var aDec = parseInt(this.getField("Dec." + i).value, 10);
var a1 = aMin + Math.random() * (aMax - aMin); a1 = a1.toFixed(aDec);
a1 = parseFloat(a1);
this.getField("Var." + i + ".3").value = a1; }
}
- Cette réponse a été modifiée le il y a 2 mois par jctremblay.
- Cette réponse a été modifiée le il y a 2 mois par jctremblay.
Attachments:
You must be logged in to view attached files.jctremblayParticipantUne date future à aujourd’hui et non pas antérieur. Donc, < et non pas > ici:
if (laDate<aujourdhui) {
app.alert("Veuillez indiquer une date future à aujourd'hui.",3);
jctremblayParticipantTu as modifié passablement le code de la fonction mots. L’erreur se trouve là…
Je te laisse revérifier le tout ou recommencer selon mon document.jctremblayParticipantBonjour JC, Merci beaucoup ! En effet, le script de transcription a plus sa place en script de document. Le seul hic, c’est que tant que l’utilisateur n’a pas cliqué dans le champ “SaisieSomme”, le champ “TexteSomme” transcrit le contenu du champ “Nombre” et non celui de “SaisieSomme”. Si on rentre la valeur 5 dans le champ “Nombre”, le champ “TexteSomme” affiche “cinq euros”, tandis que le champ “SaisieSomme” affiche “5000 €”.
Remplace cette ligne:
var chaine=this.event.target.valueAsString;
Par ceci et tout devrait fonctionner.
var chaine=this.getField("SaisieSomme").valueAsString;
jctremblayParticipantOk…
Comme j’avais mentionné, déplace ton code pour les nombres en mots dans un script de document.
Puis consolide tout dans un script de calcule du champ «nombre» comme ceci:var saisieSomme = this.getField("SaisieSomme");
if (event.value != "" && event.value < 5)
{
app.alert("Rentrer une valeur supérieure ou égale à 5");
event.value = "";
} else {
saisieSomme.value = event.value * 1000;
mots();
}
Le script du document ici à le nom de fonction «mots».
Tu trouvera la correction dans le PDF.
L’ordre de calcul a aussi été modifié… et les champ «SaisieSomme» et «texteSomme» en lecture seulement.Attachments:
You must be logged in to view attached files.jctremblayParticipantPour ton champ de validation «nombre» tu peut utiliser ceci:
if (event.value != "" && event.value < 5)
{
app.alert("Rentrer une valeur supérieure ou égale à 5");
event.value = "";
}Pour le reste, ton code pour les chiffres en mots devrait être en Javascript de document, le calcul de «SaisieSomme» et de celui-ci devrait idéalement être dans ton champ «nombre».
jctremblayParticipantMerci encore une fois!
6 septembre 2024 à 19:19 en réponse à : Remplir les champs d’une 2e liste déroulante dynamiquement #74821jctremblayParticipantMerci bebarth! Je me souvient maintenant du terme «mère-fille». Je vais aller lire…
Pour ce type de champs j’arrive à ces méthodes:
1. Script de validation witch > case > set > break dans le script ou le document
2. Information dans un script de document
3. Information dans un fichier .csv en pièces jointes.jctremblayParticipantMerci Merlin!
Je n’ai besoin que de faire ça pour un client, donc, je vais lui demander de modifier ses préférences et tout fonctionnera.J’étais curieux de voir si c’était possible. Sécurité oblige, je comprend très bien pourquoi cela ne l’est pas.
jctremblayParticipantBonjour Bonne question à laquelle je ne peux pas répondre pour le moment car je suis dans les Alpes loin de chez moi et mon ordi. …
C’est une très bonne excuse…
jctremblayParticipantJ’avais le même erreur avec l’original de bebarth. Version corrigé.
var aTemplates = this.templates;
for (var i = 0; i < aTemplates.length; i++) {
aTemplates.hidden = false;
var leNom = aTemplates.name;
var ind = leNom.substr(leNom.length - 1);
this.setPageLabels(this.numPages - 1, ["D", leNom, ind - 1]);
}
jctremblayParticipantLe script qui démasque les modèles en conservant leurs noms, à placer dans une Action :
Merci!
Je l’ai modifié car le dernier caractère du nom du modèle n’étais pas conservé.
var aTemplates = this.templates;
for (var i = 0; i < aTemplates.length; i++) {
aTemplates.hidden = false; // true ou false
var leNom = aTemplates.name;
var ind = leNom.substr(leNom.length - 1);
this.setPageLabels(this.numPages - 1, ["D", leNom, ind - 1]);
}
jctremblayParticipantWaouh, beau boulot ! Si ça t’intéresse, bebarth m’avait écrit un script qui “démasque” les modèles masqués en conservant leurs noms de modèle dans le panneau des pages, au lieu d’avoir page 1, page 2, etc. C’est très pratique quand il y en a beaucoup. Avec son autorisation (dont je doute pas) je pourrais te l’envoyer, ou le poster céans.
Ce serait utile en effet. Est-ce qu’un script pourrait aussi créer un modèle en utilisant le nom du panneau page? J’imagine que oui.
jctremblayParticipantMerci pour ces précision.
Dans mon cas, l’avantage des modèles masqués est d’offrir ce panneau à l’utilisateur lui offrant un choix de modèle à dupliquer.
Attachments:
You must be logged in to view attached files.jctremblayParticipantOn peut dupliquer une page template qu’elle soit masquée ou apparente, ça ne change rien. Il faut seulement que ladite page soit enregistrée comme template.
@Merlin Est-ce qu’il y a un scénario ou cela pourrait être avantageux ou problèmatique d’avoir les page modèles visible ou l’inverse.Ce que je comprend…
Pages modèles cachées = Augmentation du Poids du PDF
Pages modèles visible = Si l’utilisateur supprime cette page, le modèle disparaît également.jctremblayParticipantDésolé je suis dans le cap corse sans pratiquement aucun réseau…
Profite…
jctremblayParticipantIl y a donc une sérieuse limite en lien avec la sécurité. C’est compréhensible… mais chiant à la fois.
Je vais, comme tu le suggères, devoir faire mes modèles avant et modifier mon script pour avoir un choix des modèles existant à dupliquer. Je garde quand même celui-ci à sauvegarder en action.
@bebarth,
De quel Quick bar parles-tu?- Cette réponse a été modifiée le il y a 3 mois et 1 semaine par jctremblay.
jctremblayParticipantMerci Merlin pour le contexte de la chose… On vas mettre des caractères sans accents! 🙁
jctremblayParticipantJe l’ai testé avec Acrobat 11, et j’ai le même résultat. J’ai donc rêvé. 🙂
jctremblayParticipantEst-ce que cela signifie que ça a déjà fonctionné un jour ???
Bonne question, il se peut que non. Mais il me semble que j’ai un vague souvenir que oui. Ma mémoire me joue peut-être des tours. J’ai demandé à Adobe, on verra ce qu’ils me donneront comme réponse.
jctremblayParticipantC’est bien ce que je pensais. On peut par contre relier un fichier .csv en pièce jointe. Je vais voir si c’est une option faisable. Merci!
jctremblayParticipantMerci mon cher bebarth!
J’était bien conscience que mon code n’était pas optimale. 😀Je vais comparer.
Merci 1000xjctremblayParticipantThom Parker (l’auteur du fameux «All About PDF Stamps») as répondu dans le forum de la communauté.
L’erreur était que:—
The “item_id” in a dialog object must be 4 and only 4 characters long.
Otherwise that item cannot be referenced and returns undefined as a value.jctremblayParticipantC’est rassurant… Je ne suis donc pas fou.
J’ai publié sur la «Community Adobe». On verra ce que nos amis nous diront.jctremblayParticipantEn effet! 😕
Pas de rapport, mais j’ai ajouté un this.resetForm(prefix); avant de remplir les champs de numérotation, car dans mon doc actuel cela m’assurer de réinitialiser le contenue des modèles dupliquer (je n’utilise pas ici de modèle caché).
jctremblayParticipantPour moi ça fonctionne… dans le PDF la page 2 [pageindex 1] (le modèle) lorsque copier, devient la page 3 [pageindex 2] et les champs dupliquer sont avec un P2. au début.
Si j’utilise var pageIndex = this.pageNum +1;
La console me donne ceci et les champs à modifier ne sont pas reconnue
prefix: P3
TypeError: this.getField(…) is nulljctremblayParticipantC’est fait (le prototype en pièce jointe). J’ai placé mes variables de compteurs sur la page 1 (ils seront invisibles au final). Puis, chaque page (2,3,7 et 8) avec un compteur est un modèle avec un bouton. Pour la page 2, comme ceci:
var expTplt = getTemplate("p2");
expTplt.spawn(this.pageNum+1,true,false);
var newCount = parseInt(this.getField("counterP2").value + 3);
this.getField("counterP2").value = newCount;
var pageIndex = this.pageNum;
var prefix = "P" + pageIndex;
this.getField(prefix +".p2.p2_1").value = newCount;
this.getField(prefix +".p2.p2_2").value = newCount + 1;
this.getField(prefix +".p2.p2_3").value = newCount + 2;
Dommage, le client à changer d’idée! 😐
Attachments:
You must be logged in to view attached files.jctremblayParticipantUn compteur par couleur (donc quatre au total dans ce document).
Pour ce qui est de supprimer les pages. En fait, non, ils ne pourrons pas. (Reader ne le permet pas, à moins de leurs offrir un bouton/script).jctremblayParticipantLes pages à dupliquer sont elles toutes identiques ou bien ont elles un contenu différent ? Contenu différent
L’utilisateur a-t-il moyen de supprimer les pages dupliquées et si oui comment ? Non, sinon qu’avec le navigateur de page
Dans l’image, un utilisateur pour dupliquer la section jaune, par exemple, dix fois. Donc, il y aurait plus que douze pages.
Une solution encore plus simple serait de laisser l’utilisateur entrer même les numéros. Cela risque d’être ma solution considérant le temps que j’ai a y mettre. 😀
jctremblayParticipantJe me suis réjouis trop vite…
En réalité, je vais avoir «4 liste» numérotés à configurer. Utiliser le pageIndex ne fonctionneras plus car les pages ne seront pas dupliquer toujours le même nombres ni le même ordre (voir l’image). Il me faudrais une façon de calculer le nombre de pages d’un templates spécifique, et d’utiliser ce nombre pour les calcules.Une idée de comment faire ça?
Attachments:
You must be logged in to view attached files.jctremblayParticipantMes maths n’étaient pas correct… 😃 ceci fonctionne. (PDF joint pour les curieux)
var pageIndex = this.pageNum;
var prefix = “P” + pageIndex;
var nbField = 3;
this.getField(prefix +”.page.A”).value = pageIndex * nbField + 1;
this.getField(prefix +”.page.B”).value = pageIndex * nbField + 2;
this.getField(prefix +”.page.C”).value = pageIndex * nbField + 3;Attachments:
You must be logged in to view attached files.jctremblayParticipantThis seems to be working… the nbField variable is the number of fields on that page affected. Is there a better way of doing it?
var expTplt = getTemplate("page");
expTplt.spawn(numPages,true,false);
var pageIndex = this.pageNum;
var prefix = "P" + pageIndex;
var nbField = pageIndex + 3;
this.getField(prefix +".page.A").value = nbField + 1;
this.getField(prefix +".page.B").value = nbField + 2;
this.getField(prefix +".page.C").value = nbField + 3;
- Cette réponse a été modifiée le il y a 1 année et 2 mois par jctremblay.
- Cette réponse a été modifiée le il y a 1 année et 2 mois par jctremblay.
jctremblayParticipantMerci!
jctremblayParticipantWow! Merci!
Il ne resterais qu’a enlever l’extension dans le nom de la pièce jointe dans le popup.Que ferions nous sans toi mon cher @bebarth ? 😍
jctremblayParticipantBon… J’ai réussi à faire un menu sur un bouton comme ceci, mais chaque nom des pièces jointes doit être écrit manuellement.
var menuItemNames = ["Le PDF 1", "Le PDF 2", "Le PDF 3", "Le HTML 1", "Le HTML 2"];
var actions = [
'this.exportDataObject({ cName: "PDF1.pdf", nLaunch: 2 });', 'this.exportDataObject({ cName: "PDF2.pdf", nLaunch: 2 });', 'this.exportDataObject({ cName: "PDF3.pdf", nLaunch: 2 });', 'this.exportDataObject({ cName: "html1.html", nLaunch: 2 });', 'this.exportDataObject({ cName: "html2.html", nLaunch: 2 });'
];
var cChoice = app.popUpMenu.apply(app, menuItemNames);
if (cChoice != null) { var selectedIndex = menuItemNames.indexOf(cChoice);
if (selectedIndex >= 0 && selectedIndex < actions.length) {
try {
eval(actions[selectedIndex]);
} catch (e) {
app.alert("An error occurred while executing the selected action: " + e);
} } }Ce qui serait mieux c’est que le menu capture le nombre de pièces et leurs noms de façon dynamique. Ce qui permettrait de l’utiliser rapidement sans avoir à l’éditer pour chaque usage. À suivre… à moins que @bebarth ait une idée pour modifier ce code. Je joint le PDF
Attachments:
You must be logged in to view attached files.jctremblayParticipantOui. J’ai déjà vu ça… je cherche aussi par curiosité.
Je publie ici si je trouve.jctremblayParticipantOui. l’ouverture des pièces jointes est possible avec ceci (et ça marche pour les html aussi).
this.exportDataObject({ cName: “PDF2.pdf”, nLaunch: 2 });
Par contre quand j’essai de faire apparaitre un popup avec la liste de pièces jointes cela ne fonctionne pas. Ex:
Voir le code dans le troisième bouton du fichier
Attachments:
You must be logged in to view attached files.jctremblayParticipantMerci Merlin! C’est bien ce que je pensais.
J’imagine que ce serait la même blocage de sécurité en essayant d’ouvrir un .html qui se trouve en pièce jointe ou l’écriture temporaire d’un fichier ainsi que son ouverture. Je me trompe?
- Cette réponse a été modifiée le il y a 1 année et 2 mois par jctremblay.
jctremblayParticipantCela a du sens… même si en réinitialisant les champs de listes, je n’attendais à ce qu’ils exécutent à nouveau la fonction de script personnalisé incluse dans ceux-ci. Ce qui n’est pas le cas.
jctremblayParticipantJ’ai utilisé ceci au lieu d’un bouton Réinitialiser standard et cela marche.
this.resetForm();
var gReset = this.getField("gomette");
gReset.fillColor = color.transparent;
jctremblayParticipantC’est bon aussi… 😀
Tu sais pourquoi, un bouton réinitialiser le formulaire ne remets la couleur de défaut des «gommettes»?
jctremblayParticipantPutain… mon dernier script modifié marche bien. J’avais oublié un «m» dans gommette… 😮
jctremblayParticipantJ’ai pensé à quelques choses comme ça, mais cela ne fonctionne pas.
function light()
{
var cName = event.target.name;
var nSuffix = cName.substring(cName.lastIndexOf('.')+1);
if (!event.willCommit) {
switch (event.changeEx) {
case "Oui":
var couleur=["RGB",0,1,0];
break;
case "Partiellement":
var couleur=["RGB",1,1,0];
break;
case "Non":
var couleur=["RGB",1,0,0];
break;
default:
var couleur=["T"];
}
this.getField("gomette." + nSuffix).fillColor=couleur;
}
}
jctremblayParticipantLe voici…
Attachments:
You must be logged in to view attached files.jctremblayParticipantOui, il y aura plusieurs séries de champs liste «couleurs» et «gommette».
Si j’appelle la fonction
light(event.target.name.substr(event.target.name.indexOf(".")+1));
Il ne se passe rien, probablement car à la fin dans le this.getField(gommette).fillColor=couleur;
le suffix n’est pas ajouter. L’extraction du suffix devrait être récupérer dans le script de document et non pas dans l’appelle de la fonction.je continue mes essai.
jctremblayParticipantActuellement j’ai ceci comme script de document. Et je ne met que light(“gommette.2”); dans la zone de script de touche personnalisé
function light(gommette)
{
var field = this.getField(gommette);
if (!event.willCommit) {
switch (event.changeEx) {
case "Oui":
var couleur=["RGB",0,1,0];
break;
case "Partiellement":
var couleur=["RGB",1,1,0];
break;
case "Non":
var couleur=["RGB",1,0,0];
break;
default:
var couleur=["T"];
}
this.getField(gommette).fillColor=couleur;
}
}
J’aimerai éliminer la nécessité d’entrée le nom du champs de la gomette.
jctremblayParticipantQuel beau hasard, je suis justement en train de faire ce genre de manipulation pour changer la couleur. C’est parfait. Par contre j’aimerai mettre ce script dans un fonction de script de document. Et configurer les variables (les champs «gommette» et la liste «couleurs») pour qu’ils soient automatiser selon le nom des champs ex: «couleurs.0» affecteras automatiquement «gommette.0», «couleurs.1» affecteras «gommette.1», etc.. Cela serait plus facile à modifier, et surtout lorsqu’une série de champs «couleurs/gommette» se retrouve dans une page.
Je sais que ça se fait… mais je suis perdu! 😀
jctremblayParticipantCe sont malheureusement des champs avec des noms différents et de document différents.
L’idée c’est que je recherchais une méthode rapide de remplir les champs lors de la fabrication des formulaires afin d’en valide l’aspect, l’alignement, les polices, etc. Je suis paresseux… 😂
De cliquer OK quelques fois pour les champs problématiques ne sera pas un grand souci.
jctremblayParticipantBon, les gars vous me rassurer. J’ai tellement essayé de trucs… Ce n’est pas tous les formulaires qui possèdent des champs au format spécifique. Je vis donc vivre avec cette limitation.
Merci!
jctremblayParticipantMerci! 😉
jctremblayParticipantOh 😯! C’est la classe comme d’habitude… merci!
Je remarque que je peux le faire pour les liste d’option en remplaçant
combobox
parlistbox
en début de script. Serait-il possible d’avoir les deux types de liste dans un seul script?jctremblayParticipantAucun souci… 😀.
Au final je l’ai modifié avec un
app.response();
pour pouvoir l’executer sur une liste de mon choix.
J’obtiens dans ma console la liste des: Éléments – Valeur d’exportationvar fL = app.response();
var f = this.getField(fL);
var numItems = f.numItems;
console.clear();
console.show();
for (var i=0; i < f.numItems; i++) {
console.println(f.getItemAt(i,false) + " - " + f.getItemAt(i,true));
}
jctremblayParticipantJ’y suis arrivé…
console.show();
console.clear();
var field = this.getField("list");
var numItems = field.numItems;
for (var i = 0; i < numItems; i++) {
var displayValue = field.getItemAt(i, false);
console.println(displayValue);
}
jctremblayParticipantPour être plus précis… le code que j’ai mis va fonctionner SEULEMENT si les valeurs d’exportation sont vides. À ce moment je vais obtenir les éléments. Probablement, car les valeurs d’exportations utilisent le nom des éléments s’ils sont vides.
jctremblayParticipantEn passant avec ceci j’obtiens les valeurs des items de la liste. J’ai besoin d’obtenir les éléments (items)…
var listBoxField = this.getField("list");
var numItems = listBoxField.numItems;
for (var i = 0; i < numItems; i++) {
var item = listBoxField.getItemAt(i);
var displayText = item.toString();
console.println(displayText);
}
jctremblayParticipantBonjour Merlin,
J’obtiens seulement un undefined dans la console. Comment spécifier un champ de liste en particulier?
jctremblayParticipantMerci Bebarth!
Ça me sembles bon. Je valide…jctremblayParticipantMerci bebarth!
Les deux options fonctionnent. L’option de case à cocher est la plus pertinente pour mes besoins. Par contre, j’ai besoin que chacune des lignes de champs (start.x, end.x, Duree.x) possède leur propre case à cocher et non pas une qui affecte tout les champs. Serait-e possible de spécifier la caseAcocher dans le champ de calcul, tout en gardant l’ajout dans le script de document? Le caseAcocher enleveras 1h quand cocher, remettras une heure quand décocher.
Merci!
Qui a besoin de ChatGPT quand on a un Bebarth!Attachments:
You must be logged in to view attached files.jctremblayParticipantMerci JR! Bonne année à nous tous…
jctremblayParticipantMerci!… Me voici corriger devant tous! 😀
jctremblayParticipantOh mince… si simple!
Quand il s’agit que de nombre… le = est suffisant, mais quand c’est du texte il faut absolument == ?Détail important! J’ai passé des heures à chercher. 😂
Merci!
jctremblayParticipantJ’ai trouvé réponse à ma question dans une publication de 2004 dans le forum ici:
[une-alerte-javascript-une-seule]jctremblayParticipantSalut Merlin,
Les codes fournis ne fonctionne pas. Les textes par défaut demeurent lors de l’impression. Voir le PDF pour test.Par contre, j’ai réussi à changer la couleur avec ses code-ci:
//Will Print
for (var i=0; i<this.numFields; i++) {
var oFld = this.getField(this.getNthFieldName(i));
if (oFld.type == "text" && oFld.value == oFld.defaultValue) {
oFld.textColor = color.white;
}
}//Did Print
for (var i=0; i<this.numFields; i++) {
var oFld = this.getField(this.getNthFieldName(i));
if (oFld.type == "text" && oFld.value == oFld.defaultValue) {
oFld.textColor = color.ltGray;
}
}Curieux de savoir pour quoi ton code ne fonctionne pas. 😀
Attachments:
You must be logged in to view attached files.jctremblayParticipantMerci Merlin! J’essai ça…
jctremblayParticipantMe reste donc, juste a trouver comment cibler l’ensemble des champs. je cherche… 😀
jctremblayParticipantIl faut écrire un script d’action de document pour modifier les champs « lorsque le fichier sera imprimé » puis remettre les champs « lorsque le document a été imprimé ».
C’est ce que j’ai essayé sans succès. Ce peut-il que je dois écrit mon script initial non pas dans une action (on blur/focus) mais en validation, ou calcul?
jctremblayParticipantMerci!
J’ajoute à mes signets…jctremblayParticipantAlors oui (avec un peu de retard) bonne année 2022 et merci milles fois pour ce forum!
jctremblayParticipantJ’ai trouvé pourquoi cela ne fonctionnais pas. Dans mon PDF j’ai un nombre de champs de texte plus grand que l’exemple que j’ai inclus. Là, je viens de réalisé que le chiffre ici:
for (var i=0; i<=3; i++) {
doit être plus petit que le totals de mes champs à fusionner. Sinon, cela ne marche plus. Donc, si j’ai 20 champs de texte, je vais devoir utiliser ceci
for (var i=0; i<=19; i++) {
jctremblayParticipantJe vis vérifier ce qui se passe réellement quand je vais avoir la tête libre… Merci.
jctremblayParticipantBebarth, tout est parfait sauf que maintenant j’ai décide de change les noms de mes champs de:
o.txt.1 et o.date.1 à txt.1 et date.1 et maintenant, même si je les renommes dans le script, cela ne fonction plus. je n’y comprend rien. C’est surement une pécadille. Help! 😀
3 décembre 2021 à 03:54 en réponse à : Modifier un script de champ vers un script de document. #70058jctremblayParticipantSi simple… Merci encore une fois. Je vais tenter de m’en souvenir.
2 décembre 2021 à 23:39 en réponse à : Modifier un script de champ vers un script de document. #70056jctremblayParticipantMerci Merlin, c’est parfait! J’ai juste changé le this.getField(“o.box.” + nSuffix).value=”Yes”} pour “Oui”.
Aussi, comment puis-je ajouter une autre modification sans répéter le
if (event.value=="")
if (event.value==""){this.getField("o.box." + nSuffix).value="Off"}
if (event.value==""){this.getField("o.date." + nSuffix).value=""}
else {this.getField("o.box." + nSuffix).value="Oui"} }
jctremblayParticipantMerci Bebarth! Comme c’est beau… Je vérifie tout ça et te reviens.
jctremblayParticipantMerci Merlin,
Du coup, cela a plus de sens et corrige un bogue avec ce que j’utilisais.jctremblayParticipantOk, j’ai trouvé quelque chose. Je crois même que c’était dans ce forum, mais je ne le trouve plus. À moins que cela m’a été fournis en privé.
Merci!
jctremblayParticipantBonjour,
Cette technique je connais. Un peu pénible quand tu as à faire cela plusieurs fois.jctremblayParticipantC’est bon, tout roule. Merci!
Presque… j’ai quelques fichiers ou les claques ne se fusion pas correctement. Calques qui ont été créer dans acrobat directement. Me reste à voir pourquoi.
-
AuteurRéponses