Toutes mes réponses sur les forums
-
AuteurRéponses
-
MerlinMaître des clésA priori l’utilisateur lambda ne voit pas les messages de la console mais pour bien faire les choses il faut protéger le script pour qu’il ne s’exécute que s’il y a des annotations :
this.syncAnnotScan();
var annots = this.getAnnots({ nPage:0 });
for (var j = 0; j < annots.length; j++)
if (annots != null && annots[j].type == "FreeText") {annots[j].destroy();}Pourquoi ai-je ajouté syncAnnotScan ?
Parce-que c’est le moyen de s’assurer de ne rater aucune annotation, voir :
https://opensource.adobe.com/dc-acrobat-sdk-docs/library/jsapiref/doc.html#syncannotscan
MerlinMaître des clésBonjour
Oui c’est possible mais ça requiert de bonnes connaissances en JavaScript.
Fais une recherche dans le forum sur « liste mère fille », tu trouveras plusieurs exemples et explications.
8 octobre 2023 à 15:14 en réponse à : Position du champ et sa couleur de texte suivant liste déroulante #73357
MerlinMaître des clésBonjour
Au plus simple : dans InDesign sur chacun des calques tu ajoutes un champ nommé « montant » auquel tu attribues la position et la couleur voulue (Acrobat ne sait pas lier un champ à un calque).
Comme dans ton document il ne peut y avoir qu’un seul calque affiché il n’y aura donc qu’un seul champ affiché à l’instant T.
Il faut juste qu’ils aient tous exactement le même nom, pour partager leur valeur et leur calcul.
Sinon c’est faisable avec JavaScript, avec un ou six champs, mais c’est plus laborieux.
3 octobre 2023 à 09:09 en réponse à : Enregistrer la visibilité des Calques OGC apres le remplissage du formulaire #73342
MerlinMaître des clés👍
MerlinMaître des clés👍
MerlinMaître des clésLe lien vers le sujet sur Adobe Community :
MerlinMaître des clés« The « item_id » in a dialog object must be 4 and only 4 characters long. »
Qui a décidé ça ? Laissez le moi !

MerlinMaître des clésBonjour
Les variables « text1 » 2 et 3 sont toujours « undefined ».
J’ai placé dans le script plusieurs console.println comme celui-ci :
console.println("text1= " + text1);et la réponse est toujours la même :
text1= undefined
Mais je ne comprend pas pourquoi.
MerlinMaître des clésOn peut simplifier le script ainsi :
var aRay1 = [];
var aRay2 = [];
var aRay3 = [];
var aRay4 = [];
var aRay5 = [];for (var i=0; i<27; i++){
if (this.getField("C.1."+i).value != "Off") {aRay1.push(this.getField("C.1."+i).valueAsString);}
if (this.getField("C.2."+i).value != "Off") {aRay2.push(this.getField("C.2."+i).valueAsString);}
if (this.getField("C.3."+i).value != "Off") {aRay3.push(this.getField("C.3."+i).valueAsString);}
if (this.getField("C.4."+i).value != "Off") {aRay4.push(this.getField("C.4."+i).valueAsString);}
if (this.getField("C.5."+i).value != "Off") {aRay5.push(this.getField("C.5."+i).valueAsString);}
}this.getField("Se1").value = "SE1 = {" + aRay1.join(", ") + "}";
this.getField("Se2").value = "SE2 = {" + aRay2.join(", ") + "}";
this.getField("Se3").value = "SE3 = {" + aRay3.join(", ") + "}";
this.getField("Se4").value = "SE4 = {" + aRay4.join(", ") + "}";
this.getField("Se5").value = "SE5 = {" + aRay5.join(", ") + "}";
MerlinMaître des clésBonjour
En fait il faut que les coches aient leur numéro d’ordre comme valeur d’exportation, ensuite tout est plus simple.
J’ai ajouté un champ « calcul », tout est dedans (ci-joint).
var aRay1 = [];
var aRay2 = [];
var aRay3 = [];
var aRay4 = [];
var aRay5 = [];for (var i=0; i<27; i++){
if (this.getField("C.1."+i).value != "Off") {aRay1.push(this.getField("C.1."+i).valueAsString);}
if (this.getField("C.2."+i).value != "Off") {aRay2.push(this.getField("C.2."+i).valueAsString);}
if (this.getField("C.3."+i).value != "Off") {aRay3.push(this.getField("C.3."+i).valueAsString);}
if (this.getField("C.4."+i).value != "Off") {aRay4.push(this.getField("C.4."+i).valueAsString);}
if (this.getField("C.5."+i).value != "Off") {aRay5.push(this.getField("C.5."+i).valueAsString);}
}if (aRay1.length != 0){
this.getField("Se1").value = "SE1 = {" + aRay1.join(", ") + "}";
}
else {this.getField("Se1").value = "SE1 =";}
if (aRay2.length != 0){
this.getField("Se2").value = "SE2 = {" + aRay2.join(", ") + "}";
}
else {this.getField("Se2").value = "SE2 =";}
if (aRay3.length != 0){
this.getField("Se3").value = "SE3 = {" + aRay3.join(", ") + "}";
}
else {this.getField("Se3").value = "SE3 =";}
if (aRay4.length != 0){
this.getField("Se4").value = "SE4 = {" + aRay4.join(", ") + "}";
}
else {this.getField("Se4").value = "SE4 =";}
if (aRay5.length != 0){
this.getField("Se5").value = "SE5 = {" + aRay5.join(", ") + "}";
}
else {this.getField("Se5").value = "SE5 =";}Attachments:
You must be logged in to view attached files.
MerlinMaître des clésC’est très étrange…
MerlinMaître des clésChez moi ça ne fonctionne pas car par exemple avec le bouton page 2: prefix vaut « P1 », car
var pageIndex = this.pageNum;Et parce-que le compte de pageNum commence à zéro il faut ajouter +1
Ce qui donne pour le bouton de la page 2 :
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 +1;
var prefix = "P" + pageIndex;
console.println("prefix: " + prefix); // retour console
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;Attachments:
You must be logged in to view attached files.
MerlinMaître des clésJe ne comprend pas si la numérotation de ces trois champs doit être continue dans tout le document ou bien est-ce qu’elle doit repartir à 1 dans chaque section/couleur ?
L’utilisateur a-t-il moyen de supprimer les pages dupliquées et si oui comment ? Non, sinon qu’avec le navigateur de page
Est-ce que ça fonctionne dans Acrobat Reader ?
(Je ne peux pas tester)
MerlinMaître des clésBonjour JC
En fait il me manque des éléments pour pouvoir te répondre.
Les pages à dupliquer sont elles toutes identiques ou bien ont elles un contenu différent ?
L’utilisateur a-t-il moyen de supprimer les pages dupliquées et si oui comment ?
Une autre piste serait d’avoir les 12 pages en templates, chacune ayant déjà ses numéros, ses champs et son contenu figé. Ensuite il ne resterait plus qu’à les dupliquer une par une sans renommage des champs.
MerlinMaître des clésC’est effectivement curieux, mais je ne suis pas l’auteur de ce script et je ne comprend pas comment il fonctionne, donc avant de l’exécuter j’y ajouterai une commande pour préalablement masquer tous les calques.
if (event.willCommit) {
var ocgArray1 = this.getOCGs();
for (var i=0; i < ocgArray1.length; i++) {ocgArray1.state = false;}
this.getOCGs().some(function(a){return a.state = (a.name==event.value);});
}Et pour bien faire il faudrait soit supprimer l’intitulé « Choisir », soit réafficher le calque 6 par défaut pour éviter d’avoir une page blanche.
6 septembre 2023 à 16:50 en réponse à : La fonction « joindre un fichier » avec Reader ne fonctionne pas #73215
MerlinMaître des clésEst-possible avec le bouton RAZ de supprimer aussi le document joint ?
La réponse est non mais tu trouveras comment faire et toutes les réponses à tes questions dans ce (long) sujet :
5 septembre 2023 à 15:30 en réponse à : La fonction « joindre un fichier » avec Reader ne fonctionne pas #73209
MerlinMaître des clésAcrobat Reader ne gère que les pièces jointes de type annotation qui sont nécessairement attachées à une page et à une icône (on peut placer l’icône en dehors de la page).
Contrairement aux pièces jointes gérées au niveau du document.
On accède à ces deux types de pièces jointes indistinctement dans le panneau Pièces Jointes.
5 septembre 2023 à 15:24 en réponse à : La fonction « joindre un fichier » avec Reader ne fonctionne pas #73208
MerlinMaître des clésExemple :
this.addAnnot({
page: 0, // numéro de page -1
type: "FileAttachment", // type de l'annotation
author: "abracadabraPDF.net", // auteur
contents: "Double-clic pour ouvrir la pi\u00E8ce jointe", // infobulle
attachIcon: "PushPin", // type d'icône
point: [350,590], // position sur la page
strokeColor: color.red, // couleur
});5 septembre 2023 à 13:51 en réponse à : La fonction « joindre un fichier » avec Reader ne fonctionne pas #73204
MerlinMaître des clésBonjour
Ton script utilise
this.importDataObjectqui ne fonctionne qu’avec Acrobat Pro (ou Standard).Pour que ça fonctionne dans Acrobat Reader il faut utiliser
this.addAnnotVoir : https://opensource.adobe.com/dc-acrobat-sdk-docs/library/jsapiref/doc.html#addannot
MerlinMaître des clés👍
MerlinMaître des clésBonjour
- Le document « Verso » contient 9 pages identiques, plus une page (la première) qui est légèrement différente des 9 suivantes.
Quelle(s) page(s) faut il importer ?
- Est-ce que ces conditions sont bien respectées ?
Nommer la page à ajouter : verso
Ranger les fiches + verso dans le même répertoire
Ouvrir verso
- Par ailleurs s’agissant d’une opération aussi simple que l’ajout d’une page dans un document l’utilisation de l’Assistant Action me parait contre-productive car au final c’est plus long et ça demande plus de clics que d’importer simplement une page depuis le panneau des pages. (Voir capture ci-joint)
Sauf, bien entendu, si vous utilisez cette action sur un lot de plusieurs documents. Est-ce le cas ?
Attachments:
You must be logged in to view attached files.1 septembre 2023 à 14:25 en réponse à : Script de visibilité de calques et champs de formulaires #73186
MerlinMaître des clés👍
MerlinMaître des clésÇa c’est une question pour bebarth, il me semble bien qu’il a déjà fait quelque de ce genre par le passé.
MerlinMaître des clésQuand on clique sur le bouton Export la console renvoie une erreur dans la dernière (et 2e) boucle « for » du script contenu dans ce bouton :
TypeError: f is null
22:Field:Mouse UpC’est ce qui doit empêcher la fonction GestionCalques(), qui vient ensuite, de s’exécuter. Parce-qu’une erreur bloque le script, ce qui suit ne s’exécute pas.
Dans ce script tu devrais remplacer :
for (var i = 0; i < 25; i++) {
var fname = this.getNthFieldName(i);
var f = this.getField(fname);
f.readonly = true;
};Par :
for (var i=0; i<this.numFields; i++) {
var oFld = this.getField(this.getNthFieldName(i));
oFld.readonly = true;
}
MerlinMaître des clésPas forcément, les pièces jointes ont des droits que n’ont pas les documents en ligne.
À tester !
MerlinMaître des clésBonjour JC
La réponse est non, j’ai tout essayé, même en débloquant toutes les protections (https://helpx.adobe.com/fr/acrobat/using/allow-or-block-links-internet.html) ça ne fonctionne pas. Acrobat renvoie toujours les mêmes messages.
NotAllowedError: Les paramètres de protection interdisent l’accès à cette propriété ou à cette méthode.
et l’alerte ci-joint.
Attachments:
You must be logged in to view attached files.
MerlinMaître des clésTout est bien, sauf le calque de boutons.
Quand on masque tous les calques du document on voit tous les champs de formulaires qui ne sont pas attachés à un calque, dont les boutons (voir ci-joint).
Donc il faut soit refaire le document dans InDesign en plaçant soigneusement les champs boutons sur le calque approprié (Acrobat ne sait pas gérer ça), soit gérer la visibilité des champs boutons en plus de celle du calque.
Attachments:
You must be logged in to view attached files.
MerlinMaître des clésAussi, est ce que vous avez un tips pour tester des documents avec Reader ? Car comme j’ai Creative Cloud et Acrobat Pro, Adobe ne me laisse pas installer Reader…
Oui, comme je suis dans le même cas Adobe m’a forcé à installer Foxit Reader qui est son principal concurrent et j’ai découvert un excellent logiciel.
Et comme un bonheur ne vient jamais seul, Foxit Reader force à être plus soigneux dans l’utilisation des scripts car il ne supporte pas les fonctions JavaScript obsolètes. Les documents y gagnent donc beaucoup en pérennité.
😎
MerlinMaître des clésPour impression numérique classique dans une imprimerie, généralement ils recommandent d’utiliser un profil CMJN pour éviter des couleurs trop flash quand on doit convertir le profil RVB en CMJN.
C’est surtout pour éviter les réclamations des clients déçus qui ont envoyé des documents avec des couleurs RVB bien flashy, mais je suppose que ce n’est pas le cas de ce document. 😉
Tout est bien, sauf le calque de boutons.
Là il faudrait que tu partages (tout ou partie de) ce document pour qu’on puisse juger sur pièce.
MerlinMaître des clésPour quel type d’impression, Offset ou imprimante ?
En tout cas ça fait longtemps que les documents à imprimer sont conçus et exportés en RVB, ça permet d’exploiter au mieux le rendu colorimétrique de chaque procédé d’impression.
MerlinMaître des clésAstuce :
Si les champs de formulaire sont créés dans InDesign sur les calques correspondants il s’affichent et se masquent en même temps que le calque auquel ils sont attachés, sauf…
Sauf si on a eu le malheur de les déplacer ou de les couper/copier/coller dans Acrobat Pro, ce qui les « détache » de leur calque. Mais on peut modifier leurs propriétés sans problème avec Acrobat Pro, ils restent attachés à leur calque tant qu’on ne les déplace pas.
MerlinMaître des clésBonjour
Depuis InDesign il faut exporter en PDF interactif, pas en PDF impression.
Le « dossier » de calques n’a aucune importance, ça ne change pas leur comportement ni les scripts à utiliser. On peut cependant le supprimer en utilisant cet utilitaire gratuit : https://www.uvsar.com/projects/acrobat/indesignfixups/
Pour masquer le calque Grilles et repères (en Français) il faut éditer le script de cet utilitaire et y remplacer « Guides and Grids » par « Grilles et repères« . Mais ça n’a pas d’importance non plus, ce calque n’est pas gênant.
Ton script ne fonctionne pas sur Reader car cette ligne :
docOCGs.initState = true;
provoque une erreur et donc l’arrêt de l’exécution du script, parce-que Acrobat Reader ne peut pas modifier l’état initial des calques (initState). Il ne permet que de les afficher/masquer (state) temporairement.Ce qui signifie qu’ils reviennent systématiquement à leur état initial à chaque réouverture du document. Pour remédier à cet inconvénient il faut utiliser le script proposé dans ce sujet : https://www.abracadabrapdf.net/forums/topic/enregistrer-la-visibilite-des-calques-ogc-apres-le-remplissage-du-formulaire/
MerlinMaître des clés👍
MerlinMaître des clésQuand il y a plusieurs champs ayant le même nom il faut s’adresser au « widget » et non pas au champ, qui dans ce cas représente plusieurs widgets.
Dans la liste des champs du panneau des outils de formulaire les widgets apparaissent avec leur nom de champ, suivi d’un dièse et suivi d’un numéro d’ordre. Ce numéro d’ordre est attribué lors de la création du widget et n’est pas modifiable.
Dans la capture ci-joint on ne voit pas le widget numéro zéro car il est masqué puisque la page modèle sur laquelle il se trouve est masquée. Si on affiche la page modèle les deux widgets sont visibles dans la liste.
La particularité des widgets c’est qu’on ne peut pas s’adresser à eux directement, il faut impérativement passer par une variable. Sachant aussi que dans les scripts il faut remplacer le dièse par un point.
Ce qui pour tes boutons nous donne les scripts suivants :
var f = this.getField("CH1.1");
f.setFocus();et
var f = this.getField("CH2.1");
f.setFocus();Attachments:
You must be logged in to view attached files.
MerlinMaître des clés« J’en conclu que les destinations sont perdues dès que l’on masque ou affiche une page modèle »
Oui, c’est bien ça.
« mais y a t-il donc un moyen de contourner ou de trouver une autre solution à ce problème ? »
Il faut utiliser les numéros de page, ou sinon pour un pointage plus précis on peut envoyer le focus vers un champ, éventuellement masqué.
this.getField("NOMDUCHAMPCIBLE").setFocus();
MerlinMaître des clésBonjour
Mac ou Windows ?
24 août 2023 à 13:01 en réponse à : Enregistrer la visibilité des Calques OGC apres le remplissage du formulaire #73148
MerlinMaître des clésPS : le script ci-dessus utilise un champ texte (masqué) nommé « CalqCode« , à placer n’importe où dans le document.
24 août 2023 à 12:59 en réponse à : Enregistrer la visibilité des Calques OGC apres le remplissage du formulaire #73147
MerlinMaître des clésBonjour
Avec Reader on ne peut pas aplatir ni modifier l’état de base (affiché/masqué) des calques.
Il n’y a que deux solutions :
- la signature numérique, qui fige le document.
- utiliser JavaScript pour enregistrer l’état des calques à la fermeture et le rétablir à la réouverture du document.
Exemple de script, la fonction GestionCalques() doit être utilisée lors de chaque modification de l’état des calques, ou bien en Action « Quand le document sera enregistré » (Document will save), et la fonction Ouverture() doit être exécutée à chaque ouverture du document :
function GestionCalques() {
ocg = this.getOCGs(this.pageNum);
indexCalque = 0;
code = "";
while (indexCalque < this.ocg.length)
{
if (ocg[indexCalque].state)
{
code=code + "1";
}
else
{
code=code + "0";
}
indexCalque = indexCalque + 1;
}
this.getField("CalqCode").value = code;
}function Ouverture() {
ocg = this.getOCGs(this.pageNum);
code = this.getField("CalqCode").valueAsString;
indexCalque = 0;
while (indexCalque<this.ocg.length)
{
statut = code.substring(indexCalque,(indexCalque+1));
console.println("Rang " + indexCalque + " statut :" + statut)
if (statut==1)
{
ocg[indexCalque].state=true;
}
else
{
ocg[indexCalque].state=false;
}
indexCalque = indexCalque+1;
}
}
MerlinMaître des clésBonjour
Il faut exporter les données du ficher Réponses au format CSV, reconnu par tous les tableurs, et faire le traitement des données dans un tableur.
« Autre question en rapport, dans le fichier réponses, je peux déplacer les colonnes qui m’intéresse, mais même en enregistrant, à la nouvelle ouverture du fichier réponses, l’ordre des colonnes n’a pas été concervée? »
Bienvenue chez Adobe !
Spécialiste des interfaces et de l’expérience utilisateur, sauf dans Acrobat.
😉
MerlinMaître des clésBonjour
Le problème ne vient pas d’InDesign.
Le problème se sont les lecteurs de fichiers PDF, dont Acrobat, qui sont en dessous de tout.
Ce problème a été signalé de nombreuses fois à Adobe depuis l’arrêt de Flash Player mais rien n’y fait. Quand on utilise Acrobat Pro pour placer une vidéo on a les mêmes problèmes et la documentation est trop succincte.
Quand aux autres éditeurs…
Le plus sur c’est d’utiliser Acrobat Pro pour placer la vidéo en pièce jointe dans le PDF et pour créer un lien pour la lancer.
Ainsi elle s’affiche dans le lecteur vidéo par défaut, pas dans le lecteur de PDF.
MerlinMaître des clés« Cela ne fonctionne pas »
Qu’est-ce qui ne fonctionne pas et pourquoi ?
Il n’y a que des magiciens sur ce forum, mais aucun devin.
MerlinMaître des clésBonjour
Remplace la 2e ligne du script par :
var distance = Number(this.getField("distance").value) + Number(this.getField("total").value);Par ailleurs c’est toujours une mauvaise idée de donner le même nom à un champ et à une variable, c’est source d’erreurs.
MerlinMaître des clésBonjour
Est-ce qu’il faut que la liste reprenne les valeurs contenues dans les champs 1, 2, 3 et 4 (si elles sont variables) ou bien peut-on reproduire ces valeurs directement dans la liste ?
Pouvez vous partager (tout ou partie de) ce formulaire ?
MerlinMaître des clésDu coup chat GT peut aller se rhabiller !
😁
MerlinMaître des clésPeux tu poster ce script ?
MerlinMaître des clés😎
MerlinMaître des clésBonjour
Quand on ouvre ce document la Console affiche ceci :
TypeError: event.target.value.toFixed is not a function
3:Field:FormatPour moi le menu fonctionne normalement, mais il fonctionnerait encore mieux si l’option « Valider la valeur sélectionnée immédiatement » était cochée (onglet Options).
Mais ce menu déroulant fait des calculs faux, pour un montant de 100 € on a : un 1er acompte de 60 €, un 2e acompte de 40 € et un 3e acompte de 10 €.
Soit un total de 110 €, au moins tu as le sens des affaires ! 😀
Concernant la virgule il faut utiliser un format « nombre » normal, la valeur de ce champ n’étant pas calculée le script de format ne sert à rien d’autre qu’à provoquer les erreurs qui s’affichent dans la console JS.
Et il faudrait faire la même chose pour tous les champ situés au-dessus qui utilisent le point comme séparateur.
Sinon « acompte » ne prend qu’un seul C.
« Quantité » ne prend pas de E final.
Et concernant les abréviations des adjectifs numéraux voir : https://www.academie-francaise.fr/abreviations-des-adjectifs-numeraux
😉
Attachments:
You must be logged in to view attached files.
MerlinMaître des clés😎
MerlinMaître des clés1 Oui, il suffit de supprimer la condition dans le script qui remplit le champ date automatiquement, ainsi la nouvelle date écrasera l’ancienne à chaque ouverture du document.
this.getField("validite").value=util.printd("dd/mm/yyyy", new Date(new Date().getTime()+(365*24*3600*1000)));2 Il faut utiliser ce script en évènement « Document a été imprimé » :
this.getField("numero").value += 1;
MerlinMaître des clés« on ne trouve pas forcément beaucoup de tutoriels sur internet concernant le javascript pour les formulaires interactif PDF. »
Il y a beaucoup de tutos disponibles mais il faut lire l’Anglais ou savoir bien utiliser Googol Traduction.
Commence ici : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/ressources-pdf-javascript/
MerlinMaître des clés« si vous avez le bon script merci. »
Tu à l’air têtu, mais moi aussi : c’est donc la 2e fois que je te dis que tu trouveras les réponses que tu cherches dans mon fichier joint.
😎
MerlinMaître des clésDésolé, je suis trop nul en math et je n’ai pas le temps de chercher.
Mais si quelqu’un peut m’indiquer la formule de base pour calculer une telle moyenne je me ferai un plaisir de la convertir en JavaScript.
MerlinMaître des clésLe fichier que j’ai joint est fonctionnel, examine bien les scripts de validation et les scripts de calculs. Tu y trouveras toutes les réponses.
Qu’il y ait 2 champs à additionner pour le total ou qu’il en ait 50 le principe reste le même.
Tu devrais aussi lire cet article car quand on utilise tes fichiers la Console JavaScript affiche des informations très instructives sur les erreurs rencontrées :
MerlinMaître des clésJe ne suis pas certain d’avoir compris la question (un peu touffue…) mais en tout cas j’ai une réponse. 😉
Fichier fonctionnel ci-joint.
Attachments:
You must be logged in to view attached files.
MerlinMaître des clésQuand j’ouvre ton fichier n°2 la console m’affiche cette erreur au moins 10 fois :
TypeError: this.geField is not a function
2:Field:CalculateDonc il faut commencer par remplacer geField par getField.
Je n’aurai pas le temps aujourd’hui mais j’examinerai ça de plus près ce soir ou demain.
MerlinMaître des clésBonjour
Où doivent apparaitre ces lettres ?
Dans le libellé du bouton cliqué ou dans autre champ ?
MerlinMaître des clésDu coup c’est encore plus simple.
temps = distance / vitesse
Donc dans le champ qui doit afficher le temps il faut placer ce calcul en notation simplifiée :
distance / vitesseSi on part du principe que les champs se nomment « distance » et « vitesse ».
Attention, le résultat est donné en heures décimales, il faudra ensuite éventuellement convertir en H:MM
Voir : https://open.crea-learning.com/mod_turbolead/mod/crealearning/reader.php?n=OTA4MyYyOTEzMw%3D%3D
MerlinMaître des clésBonjour
Sur le principe la réponse est oui, mais dans ton exemple il manque un opérateur : la vitesse.
D’ailleurs il n’y a pas besoin de JavaScript, un calcul en notation simplifiée suffit :
((Texte1 * Texte2) / Texte3) / Texte4Attachments:
You must be logged in to view attached files.
MerlinMaître des clésBonjour
Place ce script en action Souris relâchée dans le champ texte :
if (!/^\s*$/.test(event.target.value)) {app.launchURL(event.target.value);}
MerlinMaître des clésBonjour
Il faut cocher l’option qui va bien dans les Options de la liste déroulante et utiliser ce script dans le champ texte :
event.target.value = this.getField("NOMDUCHAMP").value;Attachments:
You must be logged in to view attached files.
MerlinMaître des clés👍
MerlinMaître des clésUn tel script peut aussi être exécuté par une Action (Assistant Action).
MerlinMaître des clésthis.saveAs("/c/myDocs/myDoc.pdf", "com.callas.preflight.pdfa");Erratum : comme cette fonction utilise le Contrôle en amont je suppose qu’elle ne fonctionne pas avec Acrobat Standard
Tout est là, attention il y a des restrictions :
https://opensource.adobe.com/dc-acrobat-sdk-docs/library/jsapiref/doc.html#saveas
MerlinMaître des clésBonjour
La réponse est oui mais Acrobat Reader (logiciel gratuit) ne peut pas enregistrer en PDF normé (PDF/A ou autre), ça requiert Acrobat Pro
ou Acrobat Standard.Même principe et même limitation chez Foxit, le principal concurrent.
MerlinMaître des clésPS : s’il s’agit de la valeur par défaut du menu déroulant on peut aussi utiliser :
this.getField("Dropdown2").value = this.getField("Dropdown2").defaultValue;
MerlinMaître des clésBonjour
getItemAt ça sert à connaitre la valeur d’un menu, pas à lui assigner une valeur.
Pour assigner une valeur à un menu déroulant il faut utiliser :
this.getField("Dropdown").value = "Blablabla";Où « Blablabla » est la valeur d’exportation s’il y en a une, sinon c’est la valeur de l’item de menu qu’il faut utiliser.
MerlinMaître des clés👍
Pas mieux.
MerlinMaître des clésBonjour
Il faut pour chaque rangée mettre toutes les valeurs dans un tableau (array), et ensuite utiliser par exemple sort() pour classer les éléments.
Je n’ai pas plus de temps ce soir.
Je reviendrai pour les détails. 😉
MerlinMaître des clésBonjour
Oui c’est bien ce qu’il faut faire. La preuve c’est que ça fonctionne !
Mais normalement l’espace après l’apostrophe est signalée par le correcteur orthographique, c’est pour ça que ce cas n’est pas prévu par le script.
MerlinMaître des clésBonjour
Tout dépend de ce que recouvre « données web » mais dans le temps on pouvait importer/exporter des données depuis un PDF vers un serveur en ligne.
Avec beaucoup de restrictions bien entendu, sécurité oblige.
MerlinMaître des clésDans ce cas le mieux est de transférer les données entre les deux formulaires comme indiqué ci-dessus, et ensuite utiliser un script qui affecte la valeur « RAS » aux champs vides.
MerlinMaître des clésBonjour
Je ne connais pas PDF XChange mais je suppose que comme avec Acrobat on peut exporter/importer les données d’un formulaire.
Soit directement de PDF à PDF, soit indirectement en exportant les données au format FDF (ou XFDF).
MerlinMaître des clésBonjour
Je commencerais par : Préférences : Général : où je décocherais l’option « Afficher les messages d’Adobe… » (la 3e coche en partant du bas).
Sans oublier de croiser les doigts…
MerlinMaître des clés👍
MerlinMaître des clés👍
MerlinMaître des clésBonjour
Réponse en image, la boite de dialogue qui suit permet de sélectionner un ou plusieurs formulaires à exporter.
Bien entendu, s’il y a plusieurs formulaires à exporter dans un même fichier CSV il faut qu’au départ ils soient identiques, avec les mêmes noms de champs.
Attachments:
You must be logged in to view attached files.
MerlinMaître des clés« Réinitialiser » signifie « revenir à la valeur par défaut » (reset to default value).
Ça ne concerne que la valeur du champ et donc aucun autre de ses attributs.
MerlinMaître des clésA priori c’est faisable (en récupérant le numéro suffixe ?) mais il faudrait que tu en dises plus car je ne comprend pas bien le but, sinon en supposant qu’il y aura plusieurs champs.
MerlinMaître des clés« Oui je ne suis pas fan des accents .. »
Contrairement à d’autres langues comme l’Espagnol (je ne connais pas le Portugais) en Français les accents ne servent pas qu’à la prononciation, ils ont pleine valeur orthographique et peuvent complètement changer le sens des mots.
Voir : https://www.abracadabrapdf.net/?p=870

MerlinMaître des clés« en bas au champ formulaire pourcentage, le champ ne prend pas en charge les chiffres à virgule »
C’est parce-que le champ Pourcentage utilise un format « JavaScript » qui ne fonctionne pas, c’est la première chose que dit la Console quand on ouvre le document :
TypeError: event.target.value.toFixed is not a function
1:Field:FormatIl faudrait que ce champ utilise un format Nombre « normal ».
MerlinMaître des clés« A-t-il déjà fonctionné correctement avec des version précédentes ? »
Oui.
Ça faisait bien ramer l’ordinateur (iBook G4) mais ça fonctionnait.
MerlinMaître des clésBonjour
À la place de plusieurs boutons de couleur, j’aurais plutôt utilisé une case à cocher avec un style de case « rond » et je lui aurait fait changer de couleur en même temps que la gommette.
MerlinMaître des clésC’est la pièce jointe envoyée ci-dessus : https://www.abracadabrapdf.net/wp-content/uploads/2023/04/horloge-Sowedoo.pdf
MerlinMaître des clésBonjour
Chaque item de la liste déroulante doit être associé à une « valeur d’exportation ».
Le script est placé en « script de calcul » dans le champ « Texte1 ».
Exemple ci-joint.
Attachments:
You must be logged in to view attached files.
MerlinMaître des clésMerci pour le partage.
Ci-joint le document corrigé de toutes ses fautes de français (je n’ai pas touché aux scripts).
😎
Attachments:
You must be logged in to view attached files.
MerlinMaître des clésJ’ai retrouvé l’usine à gaz, c’est Michael et Alex qui avaient fait ça.
Mais aujourd’hui ça ne semble plus très bien fonctionner, il y a 6 aiguilles !
Attachments:
You must be logged in to view attached files.
MerlinMaître des clés
MerlinMaître des clés« nettoyage des case remplie sauf le numéro de facture »
En fait c’est très simple.
Réinitialiser un champ ne signifie pas « supprimer la valeur qu’il contient », ça signifie « revenir à la valeur par défaut ».
Donc au lieu d’attribuer au champ « numéro » une simple valeur il faut lui attribuer une nouvelle valeur par défaut. Ainsi on peut réinitialiser tous les champs sans craindre qu’il perde sa valeur :
this.getField("numero").defaultValue += 1;
app.execMenuItem("SaveAs");
MerlinMaître des clésDans la logique d’utilisation d’une matrice celle-ci doit être enregistrée-sous un autre nom dès son ouverture pour être utilisée directement en tant que nouveau document. Ce qui évite aussi d’avoir à se poser la question de comment réinitialiser tous les champs sauf un.
Remplir la matrice, travailler dessus, et ensuite enregistrer-sous est source d’erreurs humaines et de corruption de fichier.
Il n’est pas possible d’utiliser la commande « Enregistrer » depuis un script de document, sécurité oblige. Voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/
Donc après avoir enregistré le nouveau document sous un autre nom, tu as juste à enregistrer la matrice pour qu’elle conserve son nouveau numéro.
MerlinMaître des clés19 ans après je n’ai pas retrouvé ce fichier mais pas de regrets : c’était soit une usine à gaz qui fonctionnait en détournant les outils de commentaires et donc pas très efficace, soit c’était en fait un fichier SWF incorporé dans le PDF mais ça ne fonctionne plus depuis l’arrêt de Flash Player.
Attachments:
You must be logged in to view attached files.
MerlinMaître des clésJ’ai ajouté ces deux lignes de script en script de document :
this.getField("numero").value += 1;
app.execMenuItem("SaveAs");Attachments:
You must be logged in to view attached files.
MerlinMaître des clésJe crois qu’il serait plus logique/pratique d’utiliser une matrice.
À l’ouverture de la matrice le numéro s’incrémente, la matrice s’enregistre pour conserver le nouveau numéro et déclenche un enregistrer-sous pour générer la nouvelle facture.
Et bien entendu, juste avant l’enregistrer-sous de la nouvelle facture on supprime le script qui incrémente son numéro à l’ouverture.
Qu’en penses tu ?
MerlinMaître des clés👍
MerlinMaître des clés« Oui j´aimerais aussi incrémenté un numéro de facture a chaque fois que j´établie une nouvelle facture »
Même réponse que ci-dessus : Quel évènement devrait déclencher le nouveau numéro ?
MerlinMaître des clés« désolé mais je n’ai pas mis en place cette solution n’ayant pas trouvé d’aide …. »
On attend toujours le document.
MerlinMaître des clésDans ce cas on remplace la case à cocher par un champ de texte au format nombre (chiffre) et on modifie un peu le calcul final en utilisant la notation simplifiée.
Ci-joint.
Attachments:
You must be logged in to view attached files.
MerlinMaître des clésBonjour.
Pour être exclusives (un seul choix possible) les cases à cocher d’un groupe doivent avoir le même nom et une valeur d’exportation différente.
Donc il faut ajouter un groupe de 3 cases à cocher et un groupe de 1 seule, le total étant fait par un simple calcul dans un champ texte.
Ci-joint.
Attachments:
You must be logged in to view attached files.
MerlinMaître des clés👍
- Le document « Verso » contient 9 pages identiques, plus une page (la première) qui est légèrement différente des 9 suivantes.
-
AuteurRéponses
