Donnez vie à vos documents numériques !
 

alex

Toutes mes réponses sur les forums

Affichage de 99 réponses de 298 à 396 (sur un total de 603)
  • Auteur
    Réponses
  • alex
    Participant

    C’est bien le format que j’aurais aimé utiliser. Mais rien à faire (Acrobat 9, 10 sur Mac). Voir capture jointe.

    [attachment deleted by admin]

    en réponse à : Insérer un menu déroulant. – RÉSOLU #53557
    alex
    Participant

    Vous brûlez ! C’est bien sur ce site qu’il faut chercher…

    alex
    Participant

    Mon cher Merlin, je te rappelle que nous avons développé ensemble un script d’extraction de factures pour Acrobat au mois d’avril (dernière version du 26 avril) répondant à ce problème… Or dans ce script, nous avions fonctionné à partir de la détection du mot clef “Facture” puis sur le contrôle de cohérence du numéro de facture (nombre, nature des caractères) pour fractionner une liasse de factures ayant un nombre de pages variables. En général les applications générant des factures au format .pdf sont compatibles avec la méthode que nous avons utilisée (getNthWord()) pour récupérer les chaînes de texte à analyser.

    en réponse à : Calcul jours ouvrés entre deux dates. – RÉSOLU #53063
    alex
    Participant

    Oui, c’est bon mais assez compliqué pour gérer les jours fériés par la suite.
    J’aurais fait défiler les jours entre les deux dates et utilisé .getDay() pour récupérer la valeur du jour de la semaine pour la date courante (L’objet retourné est un entier qui correspond au jour de la semaine.. 0: dimanche 1: lundi …), comparé chaque date courante avec une table des jours fériés et ainsi obtenu un résultat exact (au moins dans un pays donné). Qu’en penses-tu ?
    Merlin, ce serait mieux d’ouvrir un nouveau fil car nous sommes hors sujet !

    [Edit du modo : les sujets ont été déplacés et ré-ordonnés)

    alex
    Participant

    Ces scripts ajustent la hauteur des champs, pas la largeur. Mais ça peut être utile.

    en réponse à : Calcul jours ouvrés entre deux dates. – RÉSOLU #53060
    alex
    Participant

    Voir maquette jointe:
    La saisie et l’affichage des nombres décimaux se fait dans le format du champ (ici S et coefficient).
    La définition de paramètres numériques décimaux dans un script se fait en séparant la partie entière de la partie décimale par un point.
    Les comparaisons de chaînes de caractères prennent en compte la casse (“Non” n’est pas “NON”).

    Pour le calcul des nombres de jours ouvrés, j’ai un script Php que je vais convertir en JavaScript. Pas aujourd’hui.

    A+

    [attachment deleted by admin]

    en réponse à : Formulaire PDF, listes en cascades. – RÉSOLU #53035
    alex
    Participant

    C’est sans doute le format du champ qui n’est pas correct (voir réponse de Merlin) , il suffit de le préciser. Toutefois, avec Scribus, je ne sais pas si on a droit au séparateur de milliers. A voir. En ce qui concerne le comptage des jours ouvrés, j’ai déjà fait ça, e vais voir si je n’ai pas un script dans mes placards, mais je ne suis pas sûr qu’i exclue bien les jours de semaine fériés…

    en réponse à : Formulaire PDF, listes en cascades. – RÉSOLU #53030
    alex
    Participant

    Pour moi, cocher la case à cocher n’est pas suffisant car il faut également lancer le script de remplissage du champ fille sur validation, cette fois et en prenant pour argument this.event.value. Ceci ne fonctionnera que sur les versions récentes d’Acrobat ou Adobe Reader. Les solutions que je propose fonctionneront sur des versions plus anciennes où la case à cocher dont parle Merlin n’existait pas…

    en réponse à : Formulaire PDF, listes en cascades. – RÉSOLU #53026
    alex
    Participant

    L’évènement déclencheur n’est pas la validation du premier champ mais sa modification (voir ce qui concerne les évènements dans la spécification JavaScript d’Acrobat).
    Donc script ci-dessous à placer Onglet Format:script de touche personnalisé:

    console.clear();
    ev=this.event.change;
    console.println(ev);
    if (ev==”France”)
    {
    this.getField(“Liste2”).clearItems();
    this.getField(“Liste2”).insertItemAt(“Paris”);
    this.getField(“Liste2”).insertItemAt(“Tours”);
    }

    if (ev==”Angleterre”)
    {
    this.getField(“Liste2”).clearItems();
    this.getField(“Liste2”).insertItemAt(“Londes”);
    this.getField(“Liste2”).insertItemAt(“Brighton”);
    }

    if (ev==”Portugal”)
    {
    this.getField(“Liste2”).clearItems();
    this.getField(“Liste2”).insertItemAt(“Lisbonne”);
    this.getField(“Liste2”).insertItemAt(“Porto”);
    }

    Voir maquette jointe qui répond à votre problème.
    Nota1: depuis que la gestion des évènements sous Acrobat fonctionne à peu près correctement, il n’est pas nécessaire d’utiliser eventWillCommit comme dans mes exemples précédents, attention par contre à bien prendre en compte event.change ou event.changeEx (voir mes exemples sur ce site).
    Nota2: la syntaxe insertItemAt() utilisée ici fonctionne mais elle est incomplète (voir mes exemples).

    [attachment deleted by admin]

    alex
    Participant

    Sur la page, j’ai créé deux champs texte:
    Le champ “Reference”, caché en lecture seule qui est placé sur la future zone de saisie.
    Le champ “MonBeauChampQuiGrandit”, future zone de saisie n’importe où, elle sera redimensionnée par le script pour couvrir le champ précédant.
    En ouverture de page on ajoute rien, ce n’est pas nécessaire.
    Dans le champ “MonBeauChampQuiGrandit”, onglet “Format>Personnalisé>Format de touche personnalisé” j’ai saisi le script suivant:

    if(!this.event.willCommit)
    {
    console.clear();
    lgbase=3;
    fref=this.getField(“Reference”);
    fsaisie=this.getField(“MonBeauChampQuiGrandit”);
    fsaisie.readonly=false;
    fsaisie.hidden=false;
    fsaisie.rect=fref.rect;
    fref.readonly=true;
    fref.hidden=true;
    rectangle=fref.rect;
    //calcul de la largeur de référence
    larg=rectangle[2]-rectangle[0];
    //lecture du contenu du champ
    lg=this.event.value;
    //calcul de la nouvelle abscisse
    ratio=(lgbase+lg.length)/lgbase;
    newlarg=ratio*larg;
    position=Math.max((rectangle[0]+newlarg),(rectangle[0]+larg));
    pageBox=this.getPageBox();
    console.println(“PageBox droit=”+pageBox[2]+” position =”+position);
    rectangle[2]=Math.min(position,pageBox[2])
    //Pour les curieux:
    console.println(“Chaîne de caractères=”+lg);
    console.println(“Longueur chaine de caractères=”+lg.length);
    console.println(“ratio amplification=”+ratio);
    console.println(“Longueur variable du champ de saisie=”+newlarg);
    console.println(“Longueur mini du champ de saisie=”+larg);
    //On dimensionne
    fsaisie.rect=rectangle;
    }
    Faites des tests, ce n’est pas totalement abouti mais ça devrait se rapprocher de ce que vous voulez.
    Fonctionne avec Adobe Reader 8,9,10, éviter le 7.

    alex
    Participant

    Pour palier à ces inconvénients je place un calque sur le formulaire, calque qui sera masqué par script à l’ouverture. Si le lecteur n’interprète pas le JavaScript, le calque reste en place. Sur ce calque un message indique qu’il faut passer par Adobde Reader. On peut aussi placer un gros bouton avec un texte d’avertissement (même méthode).

    alex
    Participant

    Dans cette version fonctionnellement identique à la précédente toujours sous AcroForm, le script détecte l’éventuelle absence de listes d’items. Pour retrouver la console et suivre l’historique du déroulement du programme sous Acrobat (Ctrl-J SUR PC ou POMME-J sur MAC). J’espère avoir répondu à votre dernier problème.

    Ce sujet semble avoir un gros succès…

    [attachment deleted by admin]

    alex
    Participant

    Dans cette version (à tester), vous trouverez la méthode définissant les listes déroulantes avec des valeurs d’export en clair (plus pratique pour récupérer les données sur un serveur). Attention, les listes sont à compléter pour fonctionner dans tous les cas de figure. L’initialisation peut être lancée en ouverture de page et on peut donc supprimer le bouton.

    [attachment deleted by admin]

    alex
    Participant

    Un champ numérique contenant des nombres décimaux notés avec des points (123.85) au lieu de virgules refusées par Excel ? C’est une supposition….

    alex
    Participant

    Bien vu Merlin, ça peut servir !
    pikmin04, je regarde le problème de l’envoi des données vers un serveur, effectivement en l’état on reçoit les indices des items et non les valeurs elles-même ce qui complique la tâche à l’arrivée à moins d’avoir une copie des mêmes tables dans le script du serveur (pHp ou CGI).Lorsque j’aurai une solution propre j’ouvrirai un nouveau fil “Listes déroulantes en cascade” …

    alex
    Participant

    Voilà une maquette pour illustrer une solution à votre problème si ça peut vous dépanner. Attention, la définition des tables n’est pas complète (limitée à Afrique et Europe), saurez-vous vous en débrouiller ?
    On peut supprimer le bouton “Init”, l’initialisation se fait avec l’ouverture de page (script Initialisation())
    Les deux autres scripts sont lançés:
    1-par action du menu déroulants de niveau 1 (les continents)  pour RemplissageFille()
    2-par action du menu déroulants de niveau 2 (les pays)  pour RemplissagePetiteFille()

    Les villes sont répertoriées dans les liste ListeN3 comme suit:
    c est le rang du continent issu de la liste ListeN1 des continents.
    p est le rang du pays issu de la liste ListeN2[c] des pays.
    ListeN3[c][p]=[“Ville1″,”Ville2″,”Ville3″,”Ville4″,”Ville5”];

    Aucune des listes de niveau 1, 2 ou 3 n’est limitée en nombre.

    On peut adapter ce système à une autre hiérarchie (il suffit de modifier les tables du script d’initialisation).

    [attachment deleted by admin]

    alex
    Participant

    En effet, il faut revoir le script initial pour qu’il s’adapte aux trois niveaux (Continent,Pays,Ville) au lieu des deux niveaux de l’exemple précédant. Accordez moi quelques jours, je vais vous proposer une solution AcroForm uniquement…

    alex
    Participant

    Desole. Je suis sur un lit d ‘hôpital avec un iPhone. Retour prévu pour le 23 janvier.

    en réponse à : Script pour formulaire imposant un @ et un point. – RÉSOLU #52428
    alex
    Participant

    Attention les jeunes ! Ce script vite fait à l’américaine considère les adresses de type “jojo.martin@company.oleane.com” et d’autres comme invalides !

    alex
    Participant

    Bonne année à tous.
    Je vais donner un exemple dans les prochains jours.

    en réponse à : Script Javascript lors de l’ouverture du PDF. – RÉSOLU #52416
    alex
    Participant

    C’était de l’ironie… Vous l’aviez compris chère Bizou.

    en réponse à : Adobe Reader pour iOS ? / plug-ins Flash – ACTUALITÉ À SUIVRE #51796
    alex
    Participant

    Pour ma part j’utilise PDF Expert qui interprète certes partiellement le JavaScript, mais suffisamment pour satisfaire un grand nombre de besoins des formulaires interactifs, envoi de données en prime. Seule ombre au tableau, l’absence de vidéos embarquées, et pour cause…. Ce produit évolue très vite face à Adobe Reader gratuit pour iPad qui est assez indigent, comme la plupart des lecteurs proposés sur l’AppStore.

    alex
    Participant

    Dommage, et la prochaine fois ?
    Je vais vous faire une petite maquette, vous comprendrez la méthode et pourrez l’adapter la prochaine fois…

    en réponse à : Script Javascript lors de l’ouverture du PDF. – RÉSOLU #52413
    alex
    Participant

    Oui, je donne assez souvent des solutions qui fonctionnent. J’en suis moi-même étonné.

    en réponse à : Récupération des données d’un fichier PDF. – RÉPONDU #52386
    alex
    Participant

    Il s’agit probablement d’un formulaire généré sous Adobde LiveCycle Designer, et les données sont  présentes dans le fichier de type  .xlm que l’on peut ouvrir sous Excel. Il peut y avoir des problèmes sous Windows Xp et des versions d’Excel anciennes, on trouve les solutions sur le Web.

    en réponse à : Texte à centrer horizontalement et verticalement. – RÉPONDU #52369
    alex
    Participant

    Désolé, pas de solution pour ça sinon une usine à gaz…

    en réponse à : Script Javascript lors de l’ouverture du PDF. – RÉSOLU #52411
    alex
    Participant

    Sous Acrobat, il n’est pas prévu d’associer un script à l’ouverture d’un document, mais à l’ouverture de page. Par contre, à la fermeture de document on peut lancer un script. C’est bizarre, mais c’est comme ça. Comment faire?
    1-Une première solution est d’ajouter une page vierge en fin du document, ouverte par défaut à l’ouverture du document et de lui associer le script d’alerte puis de pointer sur la première page:

    app.alert(“Mon message important”,1);
    this.pageNum=0;

    2-Une seconde solution consiste à créer un script de document:
    Options avancées>Traitement du document>Scripts JavaScript

    function ajout()
    {
    app.alert(“Mon message important”,1);
    }
    puis de supprimer toutes les lignes dans l’éditeur sauf :
    app.alert(“Mon message important”,1);

    Le script d’alerte sera alors exécuté à l’ouverture.

    3-Une troisième solution réservée aux experts…  saisie directe:
    Options avancées>Traitement du document>Modifier tous les scripts JavaScript
    //
    /*********** appartient à : Document-Level:Ouverture ***********/
    app.alert(“Mon message important!”,3);
    //

    alex
    Participant

    Pour résoudre ce problème il faut attribuer aux champs texte et aux boutons des noms génériques du style :
    Bouton_pp_xxx où pp est le numéro de page (de 00 à 99) et xxx le rang du bouton sur la page considérée.
    Question_pp_xxx où pp est le numéro de page (de 00 à 99) et xxx le rang du bouton sur la page considérée.
    Reponse_pp_xxx où pp est le numéro de page (de 00 à 99) et xxx le rang du bouton sur la page considérée.
    Ensuite, pour chaque action, un script unique sera capable de reconnaître l’origine de l’action (event.target.name), de s’assurer de la validité de son nom (event.target.name.substring(0,6)==”Bouton”) puis d’agir sur les champs associés de même page et même rang soit le champ ayant pour nom:”Reponse”+event.target.name.substring(7,13).
    Nota:on peut se passer du numéro de page et ne traiter que les rangs des questions.

    Eh oui, un ou deux scripts suffisent à cette affaire !

    Envoyez quelques pages de votre questionnaire, le script en place, le reste suivra…

    en réponse à : Connexion annuaire LDAP. – RÉPONDU #52343
    alex
    Participant

    Les exemples de scripts sont nombreux ici:
    http://www.fpdf.org/
    Un bon tutoriel ici chez Developpez.com, un site à ne jamais perdre de vue:
    http://jc-cornic.developpez.com/tutoriels/php/pdf/index.php

    en réponse à : Connexion annuaire LDAP. – RÉPONDU #52341
    alex
    Participant

    Oui, c’est clair. Il existe des classes PHP qui font ce travail.
    Pour ma part j’utilise FPDF, très simple à utiliser avec une base de données mySQL.
    Voir aussi TCPDF, plus simple à utiliser paraît-il et PDFLib.
    Toutefois, attention, le document généré par ces classes est un PDF à plat (les champs de données ne sont pas recréés).

    alex
    Participant

    Voilà une solution sous acroForm. Pour que le système fonctionne, il suffit que les champs aient des noms commençant par AZERTY,QWERTY,QWERTZ respectivement, quelque soit le nombre de ces champs dans chaque groupe. Voir maquette.
    Attention, le script est lancé à partir de la liste déroulante (Onglet Format>Script de touches personnalisé> Action().
    Le script action() se situe au niveau du document et capte le changement de valeur de la liste.
    Ouvrir la console pour voir les éditions console.println

    function Action()
    {
    console.clear();
    prefixe=this.event.change;
    console.println(“Sélection de “+prefixe)
    //Passer en revue tous les champs du document…
    indexField=0;
    while(indexField {
    nameField=this.getNthFieldName(indexField)
    entete=nameField.substring(0,6);
    //Masquer les champs des séries AZERTY,QWERTY,QWERTZ
    if(entete==”AZERTY”|entete==”QWERTY”|entete==”QWERTZ”)
    {
    this.getField(nameField).hidden=true;
    }
    //Afficher les champs de la série choisie
    if(entete==prefixe)
    {
    this.getField(nameField).hidden=false;
    console.println(“Affichage du champ “+nameField)
    }
    indexField=indexField+1;
    }
    }

    Pour la solution Live Cycle Designer, vous patienterez un peu, je travaille sur Mac et cet outil de développement ne fonctionne que sur Pc

    [attachment deleted by admin]

    en réponse à : Calcul sous conditions #49415
    alex
    Participant

    Le script pourrait être le suivant (à bien placer):
    Frais= this.getField(“PORT”);
    Qte=this.getField(“QTT”);
    Frais.value=0;
    if(Qte.value==1)
    {
    Frais.value=6.60;
    }
    if(Qte.value==2)
    {
    Frais.value=7.95;
    }
    if(Qte.value==3)
    {
    Frais.value=8.95;
    }
    if(Qte.value==4)
    {
    Frais.value=9.95;
    }
    if(Qte.value==5)
    {
    Frais.value=11.95;
    }
    if(Qte.value==6)
    {
    Frais.value=11.95;
    }
    if(Qte.value==7)
    {
    Frais.value=11.95;
    }
    if(Qte.value==8)
    {
    Frais.value=13.95;
    }
    if(Qte.value>8)
    {
    Frais.value=13.95;
    }

    en réponse à : Calcul sous conditions #49414
    alex
    Participant

    Après avoir corrigé ce qui suit, à savoir, un problème de syntaxe, les choses devraient s’éclaircir.
    Pour les comparaisons, le signe = doit être doublé, exemple:

    if(this.getField(“QTT”).value==0)
    {
    //script à exécuter
    }

    alex
    Participant

    Envoyez plutôt votre formulaire, ce sera plus simple que de reconstruire votre modèle…
    Si vous laissez tomber LiveCycleDesigner pour l’éditeur intégré d’Acrobat (acroForm), vous aurez une réponse plus rapide. A vous de voir.

    en réponse à : Actualisation de formulaire – RÉSOLU #52314
    alex
    Participant

    Je ne peux pas l’affirmer mais j’ai déjà eu des déboires avec l’ordre des tabulations en passant de la version Acrobat 8 à X. Je n’ai pas fait de tests pour confirmer.

    alex
    Participant

    1-L’objet console permet d’afficher les erreurs de syntaxe ou les informations que l’on souhaite visualiser pour suivre le -déroulement d’un script. Pour ouvrir la console Ctrl-J sur Pc ou Pomme J sur Mac.
    Quelques bases:
    console.clear();
    efface le contenu de la console.
    console.show();
    affiche la console.
    console.println(“Texte sur la console”);
    écrit la ligne “Texte sur la console” dans la console.
    console.println(this.gefField(“Resultat”).value);
    donne la valeur du champ “Resultat”.

    2-Le statut coché d’une case à cocher:
    if(this.getField(“CaseACocher”).isBoxChecked())
    {
    //script à éxécuter…
    }
    3-Sur une liste déroulante, on peut tester:
    this.getField(“ListeDeroulante”).value
    ou
    this.getField(“ListeDeroulante”).valueEx

    Le plus simple est de capter les évènement à la source, ici le script associé à la liste déroulante:
    Onglet Format>Script de touches personnalisé, exemple:

    this.getField(“ResultatValeur”).value=this.event.change;
    this.getField(“ResultatValeurEx”).value=this.event.changeEx;

    Voir maquette jointe.

    4-Merlin a répondu, il faut être attentif au format des champs…

    [attachment deleted by admin]

    alex
    Participant

    Le calcul ci-dessous est lançé depuis le champ “Resultat”:
    Calcul();
    Au niveau du document, la fonction Calcul a été créée. Ouvrir la console pour visualiser le suivi du calcul (console.println)
    function Calcul()
    {
    console.clear();
    console.println(“Debut du calcul apres action sur “+this.event.target.name+” de valeur “+this.event.target.value)
    var c=this.getField(“Groupe”);
    var a1=this.getField(“case1”);
    var a2=this.getField(“case2”);
    var a3=this.getField(“case3”);
    var a4=this.getField(“case4”);
    if(c.value==”Choix6″)
    {
    console.println(“Cas 6”)
    this.getField(“Resultat”).value=(a1.value-a4.value)*a3.value;
    }
    if(c.value!=”Choix6″)
    {
    console.println(“Autres cas”)
    this.getField(“Resultat”).value=(a1.value-a2.value)*a3.value;
    }
    }

    Regardez bien les comparaisons:
    c.value==”Choix6″

    Voir maquette…

    [attachment deleted by admin]

    en réponse à : Actualisation de formulaire – RÉSOLU #52311
    alex
    Participant

    Ceci est d’autant plus intéressant qu’il est très facile de perdre l’ordre de tabulation des champs lors de manipulations au niveau de la page ou de changement de version d’Acrobat.

    en réponse à : Actualisation de formulaire – RÉSOLU #52309
    alex
    Participant

    Avec un script de Calcul unique plaçé au niveau du document, le problème ne se pose pas quel que soit l’ordre de saisie des données.

    alex
    Participant

    Je n’y comprend rien. Envoyez votre formulaire.

    alex
    Participant

    La syntaxe est enigmatique pour moi!
    if et else sont à mettre en minuscules.
    Quel est la formule du mystérieux calcul à effectuer et où afficher le résultat ?

    alex
    Participant

    Pour les calculs, la syntaxe JavaScript est la même dans Acrobat et en HTML.
    Je vous conseille donc le site de developpez.com:
    http://javascript.developpez.com/cours/
    Pour ma part, pour les maths, j’utilise aussi un petit mémento JavaScript publié aux éditions Eyrolles: JavaScript précis & concis de David Flanagan

    Cela dit, il faut bien maîtriser la gestion des évènements de l’environnement Acrobat pour rendre l’usage des formulaires agréable.

    Bonne chance.

    alex
    Participant

    Formulaires LiveCycleDesigner et PDF Expert:
    On peut oublier le JavaScript pour les formulaires développés sous LiveCycle Designer, les évènements ne sont pas pris en compte. Je n’ai pas testé le FormCalc.
    Formulaires acroForm et PDF Expert:
    Ce qui ne marche pas:
    Un certain nombre de méthodes ne fonctionnent pas, en particulier tout ce qui est lié à un idle (entrée ou sortie souris dans un champ, méthodes de type app.setInterval), ainsi que des méthodes style app.popUpMenu et app.popUpMenuEx bien utiles. Les videos embarquées ne fonctionnent pas.
    Ce qui marche:
    Par contre, on peut lancer des scripts et manipuler les propriétés des objets (champs, dates). Je n’ai pas testé les manipulations des calques, ni des signets.

    PDF Expert est donc une bonne base de travail pour les formulaires acroForm sur iPad et sur iPhone (iOS 5).

    en réponse à : Liste deroulante et cadre de texte. – RÉSOLU #52288
    alex
    Participant

    Une variante à ta solution pour le fun…

    [attachment deleted by admin]

    en réponse à : Double valeur dans un champ. – RÉSOLU #52266
    alex
    Participant

    1-Le script de calcul est au niveau du document:
    Sous Acrobat 8, 9 :
    Options avancées>Traitement du document>Scripts JavaScript. Saisir le nom du script (Cacul) puis “Ajouter”. Coller ici le script compris entre les {}.

    function Calcul()
    {
    console.println(“Action utilisateur”);
      if(this.event.target.name==”PrixHT”&TTC)
      {
      console.println(“Calcul du montant TTC”);
      this.getField(“PrixTTC”).value=this.event.value*coefTVA;
      }
      if(this.event.target.name==”PrixTTC”&!TTC)
      {
      console.println(“Calcul du montant HT”);
      this.getField(“PrixHT”).value=this.event.value/coefTVA;
      }
    }

    Sous Acrobat X:
    Outils>JavaScripts>Scripts JavaScript du document> Saisir le nom du script (Cacul) puis “Ajouter”. Coller ici le script compris entre les {}.

    2-Ce script (fonction) est lancé par l’évènement de validation du champ “PrixHT” ou “PrixTTC”.
    Sous Acrobat 8, 9 :
    Formulaires>Ajouter ou modifier des champs.
    Clic-Droit sur le champ>Propriétés>Onglet Validation>
    Cocher “Exécuter le script de validation personnalisé” puis “Modifier” pour saisir:
    Calcul();

    Sous Acrobat X :
    Outils>Formulaires>Modifier.
    Clic-Droit sur le champ>Propriétés>Onglet Validation>
    Cocher “Exécuter le script de validation personnalisé” puis “Modifier” pour saisir:

    Calcul();

    Pour le champ “PrixHT”, Actions>Souris entrée>Lancer un JavaScript saisir le script suivant:

    TTC=true;
    console.println(“Preparation calcul TTC…”);
    this.getField(“LibellePrixHT”).fillColor=color.white;
    this.getField(“LibellePrixTTC”).fillColor=color.yellow;

    Pour le champ “PrixTTC”, Actions>Souris entrée>Lancer un JavaScript saisir le script suivant:

    TTC=false;
    console.println(“Preparation calcul HT…”)
    this.getField(“LibellePrixHT”).fillColor=color.yellow;
    this.getField(“LibellePrixTTC”).fillColor=color.white;

    3-Pour le script d’ouverture sous Acrobat 8,9,X, clic droit sur la vignette de la page puis Propriétés> Onglet Action>Lancer un JavaScript puis Ajouter:
    console.clear();
    coefTVA=1.196;
    TTC=true;
    this.resetForm();
    this.getField(“LibellePrixTTC”).value=”Montant TTC”;
    this.getField(“LibellePrixHT”).value=”Montant HT”;

    en réponse à : Double valeur dans un champ. – RÉSOLU #52264
    alex
    Participant

    Maquette avec champ pour la TVA.
    On pourrait aussi calculer les montant HT tet TTC à partir de la saisie de la TVA !

    [attachment deleted by admin]

    en réponse à : Double valeur dans un champ. – RÉSOLU #52263
    alex
    Participant

    Cette méthode n’est pas utilisable ici car le calcul doit fonctionner dans les deux sens:

    • Calcul TTC si action sur HT
    • Calcul HT si action sur TTC
    • [/list]

    en réponse à : Calcul sur date dans un formulaire. – RÉSOLU #52256
    alex
    Participant

    Le script suivant fera l’affaire pour trouver le mois précédant date à date et illustrera l’usage de l’objet Date…
    function CalculDate()
    {
    console.println(“Action utilisateur calcul de date”);
    chaine=this.event.value;
    //Extraction des données à partir de la valeur du champ “DateExpiration”
    jour=chaine.substring(0,2);
    mois=chaine.substring(3,5);
    annee=chaine.substring(6,10);
    //Calcul du mois n-1 (les mois sont notés de 0 à 11)
    mois=mois-2;
    //Définition de l’objet date de renouvellement
    dateRenouvellement=new Date(annee,mois,jour);
    //Extraction et affichage de la date.
    this.getField(“DateRenouvellement”).value=util.printd(“dd/mm/yyyy”,dateRenouvellement);
    }

    Pour un calcul plus sophistiqué, j’ai déjà donné un exemple dans un autre POST.
    Nota:il faut respecter le format de date jj/mm/aaaa

    [attachment deleted by admin]

    en réponse à : Double valeur dans un champ. – RÉSOLU #52261
    alex
    Participant

    La maquette jointe montre comment résoudre ce problème.
    Si on saisit un montant HT, le montant TTC est calculé, si on saisit un montant TTC le montant Ht est calculé.
    La validation d’un des champs lance le programme ci-dessous, la variable TTC détectant au préalable la présence de la souris dans le champ “PrixTTC” (TTC=true) ou dans le champ “PrixHT” (TTC=false)  :

    function Calcul()
    {
    console.println(“Action utilisateur”);
    if(this.event.target.name==”PrixHT”&TTC)
    {
    console.println(“Calcul du montant TTC”);
    this.getField(“PrixTTC”).value=this.event.value*coefTVA;
    }
    if(this.event.target.name==”PrixTTC”&!TTC)
    {
    console.println(“Calcul du montant HT”);
    this.getField(“PrixHT”).value=this.event.value/coefTVA;
    }
    }

    Le script d’ouverture de page fixe le paramètre de calcul de la TVA, initialise le formulaire, et autres détails sans importance.
    console.clear();
    coefTVA=1.196;
    TTC=true;
    this.resetForm();
    this.getField(“LibellePrixTTC”).value=”Montant TTC”;
    this.getField(“LibellePrixHT”).value=”Montant HT”;

    Lorsque la souris entre dans le champ “PrixHT”, TTC passe à true:
    TTC=true;
    console.println(“Preparation calcul TTC…”);
    this.getField(“LibellePrixHT”).fillColor=color.white;
    this.getField(“LibellePrixTTC”).fillColor=color.yellow;

    Lorsque la souris entre dans le champ “PrixTTC”, TTC passe à false:
    TTC=false;
    console.println(“Preparation calcul HT…”)
    this.getField(“LibellePrixHT”).fillColor=color.yellow;
    this.getField(“LibellePrixTTC”).fillColor=color.white;

    [attachment deleted by admin]

    alex
    Participant

    Je teste ça plus avant sur une application déjà bien rodée sur les autres plateformes (avec interactivité, videos,calques, formulaire, analyse de validité des saisies etc…) pour voir les corrections à apporter pour palier aux méthodes inopérantes et on en reparle.

    alex
    Participant

    Ce “Reader” est décidément une bonne surprise et très au dessus d’ Adobe Reader:
    1-Les champs de formulaire sont bien activés et saisissables. Leurs propriétés sont à peu près respectées.
    2-Il interprète un certain nombre de méthodes JavaScript, en tout cas suffisamment pour envisager un travail sérieux.
    3-Il ouvre les xfa et interprète une partie des méthodes JavaScript propres à LiveCycle Designer!
    Il faut donc revoir en partie et tester les formulaires qui fonctionnent sur Adobe Reader Mac, Pc et Linux mais ce n’est pas insurmontable.
    Bref, un filon à exploiter car, cerise sur le gâteau le  submitForm() semble fonctionner (envoi de données vers un serveur)!
    Je mange mon chapeau.

    alex
    Participant

    Un complice américain veut me faire manger mon chapeau ! Il prétend qu’on peut saisir des données de formulaire avec PDF Expert pour iOS.
    Je viens de dépenser 7.99 Euros pour me faire une idée. Evidemment, c’est l’aspect formulaire qui retiendra mon attention, suivi de près par l’interactivité (JS or not JS).
    A suivre…
    Pour les promesses, c’est là:

    http://itunes.apple.com/app/pdf-expert-fill-forms-annotate/id393316844?mt=8

    alex
    Participant

    Sur les palettes, inutile de chercher un lecteur PDF capable de prendre en charge les données de formulaire !
    Par contre, on peut très bien saisir des données à partir d’une interface WEB écrite en HTML5+JavaScript ou bien en HTML5+pHp interfacé avec une base de données mySQL. Avec cette dernière méthode, toutes les tablettes sont immédiatement compatibles quelque soit le navigateur embarqué (le pHp s’exécute côté serveur) . On peut même générer des documents PDF à plat à partir des données mySQL.

    en réponse à : Écris cela dans le champ truc. – RÉSOLU #52245
    alex
    Participant

    Etrange question… La réponse est peut-être juste ceci:
    this.getField(“MonBeauChamp”).value=”Mon beau texte”;
    ou bien cela pour inciter l’utilisateur à saisir un texte qui apparaîtra dans un champ texte:
    reponseDefault=”Reponse proposee”;
    this.getField(“MonBeauChamp”).value=app.response(“Objet de la Question”,”Titre de la question”,reponseDefault)

    en réponse à : Fonctions Acrobat masquer temporairement un objet. – RÉPONDU #52243
    alex
    Participant

    Pour accéder aux propriétés des champs de formulaire il suffit d’afficher la liste de ces champs et de faire un clic droit (Ctrl Clic) sur le nom du champ dans la liste. L’avantage de cette manière de faire est de pouvoir aussi gérer l’ordre des tabulations, de visualiser les occurrences multiples d’un même champ dupliqué.
    Sous Acrobat X PRO:
    Outils>Formulaires>Modifier… la liste apparaît.
    Sous Acrobat 9 PRO
    Formulaires>Ajouter ou modifier des champs>Cliquer si nécessaire sur l’icône à gauche “Champs:manipuler les champs de formulaire”.

    en réponse à : Lire pdf sur iPad ? – RÉSOLU #51072
    alex
    Participant

    Allez faire un tour par là:
    http://tv.adobe.com/watch/adc-presents/input-for-mobile-devices-gesture-events/
    Désolé c’est en anglais, très Evangelist Adobe, mais bon, c’est la tendance!

    en réponse à : Lire pdf sur iPad ? – RÉSOLU #51070
    alex
    Participant

    Oui, j’ai essayé d’ouvrir des formulaires  .xfa sans succès. Dans le futur peut-être …

    en réponse à : Lire pdf sur iPad ? – RÉSOLU #51067
    alex
    Participant
        Oui ça pourrait, car les dernières versions 9 et X d’Adobe Reader et d’Acrobat destinées à Mac et Pc privilégient ce format, mais ce n’est qu’une vague hypothèse.
        Pour la publication sur iPad et Androïd, les produits qui ont le vent en poupe sont:

      • soit des produits qui partent de Indesign pour élaborer des formats d’eBook (Aquafadas, Adobe Digital Publishing Suite) que l’on consulte sur une application propriétaire (myKiosk pour Aquafadas, pour Adobe je ne sais pas si c’est sorti).
      • soit des produits écrits en HTML5, que l’on consulte avec Safari sur iPad. Dans ce cas, on retrouve une vraie interactivité (on peut insérer du pHp et une connectivité à une base de données en SQL) tout en contrôlant presque bien la présentation grâce au HTML5, sans parler des vidéos. De plus on s’affranchit de l’App Store!
      • [/list]
        Vous l’avez compris, j’ai un faible pour cette voie là. Elle est libre et le pHp est un vrai régal.
        [/list][/list]

      en réponse à : Lire pdf sur iPad ? – RÉSOLU #51064
      alex
      Participant

      La version iPad et iPhone d’Adobe Reader est disponible.
      Mais ne vous attendez pas à des miracles…
      1-Pas d’objets de formulaire acroForm (boutons,champs de saisie,cases à cocher).
      2-Pas de JavaScript évidemment.
      3-Pas d’ouverture des xfa (formulaires élaborés sous LiveCycle Designer), un message indique que la version du Reader est inappropriée
      4-Vidéos embarquées non fonctionnelles.

      Dur dur.
      Ah si, les annotations de texte s’affichent! Bof

      Intégrer du flash pour remédier à ces inconvénients ? A voir.

      en réponse à : Indexation des renvois de page dans document PDF. – RÉSOLU #51903
      alex
      Participant

      Pour contourner ce problème il faudrait calculer la longueur du rectangle en fonction du numéro de page, au lieu de faire confiance à la taille du WordQuad qui est manifestement erronée (un petit bug dans cette fonction lorsqu’on est en italique). On fera ça la prochaine fois …

      en réponse à : Case-à-cocher automatiquement cochée. – RÉSOLU #51941
      alex
      Participant

      Voilà. Attention, lors de la saisie de la date de naissance, il faut toujours respecter le format de 10 digits.

      [attachment deleted by admin]

      en réponse à : Calcul de champs au format hh:mm. – RÉSOLU #51961
      alex
      Participant

      Variante: calcul sur validation du champ de saisie (suppression du bouton de calcul).

      [attachment deleted by admin]

      en réponse à : Calcul de champs au format hh:mm. – RÉSOLU #51960
      alex
      Participant

      Un truc de ce genre…
      Le script de calcul situé au niveau du document, est lançé par le bouton “Calcul”. Il est commenté.
      En ouvrant la console, vous pouvez voir les calculs intermédiaires.
      Voir au passage la manipulation de l’objet Date (valable aussi sur une page Web).
      Attention, le champ “Texte2” n’a pas de format imposé.

      [attachment deleted by admin]

      en réponse à : Case-à-cocher automatiquement cochée. – RÉSOLU #51940
      alex
      Participant

      On va ajouter une case à cocher invisible et la cocher par défaut tant que la saisie de la date de naissance ne sera pas valide. C’est une méthode assez classique pour initialiser les questionnaires d’évaluation. Je vous fais une maquette dès que possible (d’ici lundi).

      alex
      Participant

      Oui, enlever les commandes console.println(), ou les passer en commentaires.
      Ajouter ceci au début:

      d0=new Date();
      debut=util.printd(“dd-mm HH:MM”,d0)
      console.println(“Debut process:”+debut)
      Ajouter ceci à la fin:
      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”)

      alex
      Participant

      Juste pour comprendre, ça peut attendre une ou deux semaines bien sûr.

      alex
      Participant

      Je ne comprend pas, peux-tu donner l’ensemble du code ?

      alex
      Participant

      La somme est traitée comme une concaténation de caractères (“30″+”pp-1”) !
      Essayez de forcer le calcul comme suit:

      action=”this.pageNum=”+(Math.round(30)+pp-1);
      Ou bien:
      action=”this.pageNum=”+(1*30+pp-1);

      en réponse à : Case-à-cocher automatiquement cochée. – RÉSOLU #51937
      alex
      Participant

      Ci-joint la maquette sans console affichée et sans bouton de test.
      Soutenons les sportifs!

      [attachment deleted by admin]

      en réponse à : Case-à-cocher automatiquement cochée. – RÉSOLU #51936
      alex
      Participant

      Supprimer la ligne suivante en début de script:
      console.show();

      alex
      Participant

      Si la page 1 est en 30ème position et si on ignore les 29 première pages du document, il faut doute faut-il écrire:
      action=”this.pageNum=”+(30+pp-1);

      alex
      Participant

      Tu me poses une colle, j’aime bien l’écrit et je ne suis pas très DVD ou Webminar, si je passe chez Eyrolles, je regarde ce qui est le mieux …
      Autre source, excellente et pas seulement en Javascript (j’ai trouvé tout ce qu’il faut en AJAX, SQL, pHp et Flex):

      http://javascript.developpez.com/cours/

      alex
      Participant

      Il suffit de partir de la page 31, ce qui donne:
      for (var p = 30; p < this.numPages; p++)
      Le JavaScript pour les nuls, ça existe:
      http://www.amazon.fr/JavaScript-pour-nuls-Emily-VanderVeer/dp/2844277160
      Mais il s’agit du JavaScript pour HTML, pas de celui qui gère les objets d’Acrobat, pourtant les bases sont là. Pour trouver votre bonheur faites un tour chez Eyrolles.

      en réponse à : Case-à-cocher automatiquement cochée. – RÉSOLU #51934
      alex
      Participant

      Voici une maquette, merci de vérifier qu’elle fonctionne. Tout est dans le script Calcul() lançé par la validation de la date de naissance.
      J’espère que les commentaires suffisent, il faudrait paramétrer un peu pour retrouver le fonctionnement d’année en année…

      [attachment deleted by admin]

      alex
      Participant

      On peut éviter la ruine par une petite ligne de JavaScript lançée au moment opportun sous Acrobat 9 ou X:
      app.execMenuItem(“DIGSIG:UBDoc”);
      Pour ma part, je vous conseille d’écrire des programmes .js au niveau d’Acrobat  (répertoire JavaScript sur Mac ou Pc) pour manipuler vos documents plutôt que de recourir aux batchs, c’est un peu plus souple quand on maîtrise le sujet.

      alex
      Participant

      Pour ne pas saturer la console, placer un console.clear() comme suit:

      for (var p = 0; p < this.numPages; p++)
      {
      console.clear();
      console.println(“Page “+(p+1));
      var numWords = this.getPageNumWords(p);

      Ainsi, la console sera effacée à chaque ouverture de page…On peut aussi supprimer toutes les impressions dans la console.

      En ce qui concerne le temps de calcul, c’est une autre affaire…Peut-être que la méthode que j’ai utilisé dans la mesure d’encrage pour définir le rectangle est meilleure mais ce n’est pas sûr.

      alex
      Participant

      A tester quand même avec un document volumineux ! J’ai ajouté dans la recherche les mots “Page” et “page”:
        if ( ckWord == “page”|ckWord == “Page”)
      Bonne vacances !

      en réponse à : Case-à-cocher automatiquement cochée. – RÉSOLU #51932
      alex
      Participant

      Bonjour,
      Pour ce problème ne vaut-il pas mieux calculer les âges des personnes à partir de la date de naissance saisie et de la date du jour ? A partir de là il ne sera pas difficile aux spécialistes du JavaScript en vacances de cocher la case ad’oc du bouton radio.
      Pouvez-vous leur donner les plages d’age correspondant aux différentes catégories?
      En attendant leur retour…

      alex
      Participant

      Si j’ai bien compris, voici qui devrait mieux se comporter…
      Les erreurs sont signalées dans le script.

      console.clear();
      console.println(“Processus de creation des liens…”);
      for (var p = 0; p < this.numPages; p++)
      {
      console.println(“Page “+(p+1));
      var numWords = this.getPageNumWords(p);
      for (var i=0; i {
      var ckWord = this.getPageNthWord(p, i, true);
      console.println(i+”-Mot trouve : “+ckWord);
      if ( ckWord == “page”|ckWord == “Page”)
      {
      //Analyse du mot suivant
      MotSuivant=this.getPageNthWord(p,(i+1),true);
      console.println(“Mot suivant trouve, lien a creer : “+MotSuivant);
      //Premier caractère est-il un chiffre?
      if(MotSuivant.charCodeAt(0)>=48&MotSuivant.charCodeAt(0)<=57)
      {
      // pp numéro de la page indexee
      //erreur ici
      var pp = MotSuivant;
      //fin erreur
      console.println(“Créer des liens, mot suivant trouve est un chiffre, lien a creer : “+pp);
      var q = this.getPageNthWordQuads(p, i+1);
      // 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)
      r=r.toString()
      r = r.split(“,”);
      l = addLink(p, [r[4], r[5], r[2], r[3]]);
      l.borderColor = color.red
      l.borderWidth = 1;
      //erreur ici
      action=”this.pageNum=”+(pp-1);
      l.setAction(action);
      //fin erreur
      }
      }
      }
      }

      alex
      Participant

      Il y a probablement une division par 0. Il suffit de saisir une autre valeur non nulle dans le champ idoine et d’enregistrer le formulaire.
      Mon conseil: utiliser le JavaScript plutôt que FormCalc pour les calculs et surtout tester la validité des saisies.

      en réponse à : Masquer la valeur si = 0 – RÉSOLU #51807
      alex
      Participant

      Je déconseille de remplacer les 0 par des blancs (comme proposé dans le topic 1329). Ces blancs poseront des problèmes de format à toute opération de calcul ultérieure. C’est le cas ici, on aura à faire une somme… Bonne soirée.

      en réponse à : Masquer la valeur si = 0 – RÉSOLU #51805
      alex
      Participant

      Je vous déconseille de remplacer la va valeur calculée 0.00 par un blanc. Ici je force la couleur du texte en noir pour les valeurs positives, en couleur de fond pour la valeur 0. Il faut finir le travail pour les autres champs.

      Pour le champ texte “Texte23”:
      Onglet Calcul > Script de calcul personnalisé:

      console.clear();
      //Calculer la valeur à afficher
      this.event.value=this.getField(“C1”).value*this.getField(“Texte22”).value;
      //Mémoriser la couleur du fond
      CouleurReference=this.getField(“Texte23”).fillColor;
      if(this.event.value>0)
      {
      //Valeur non nulle> Passer le texte en noir.
      this.getField(“Texte23”).textColor=color.black;
      }
      else
      {
      //Valeur nulle > Le texte aura la même couleur que le fond
      this.getField(“Texte23”).textColor=CouleurReference;
      }

      Exemple joint pour le premier champ calculé uniquement.

      [attachment deleted by admin]

      alex
      Participant

      Désolé, il y a une petite erreur, voici le script exact :
      this.getField(“Saisie.3”).required=this.getField(“Case.3”).isBoxChecked(0);
      console.println (this.getField(“Saisie.3”).required);

      Il manquait la parenthèse sur la propiété isBoxChecked
      Oui, c’est le moment ou la souris est relachée

      alex
      Participant

      Oui, action>Souris relachée

      en réponse à : Javascript à améliorer : menu déroulant – RÉSOLU #51778
      alex
      Participant

      Ci joint le formulaire corrigé avec le script qui doit être lancé par le champ “C1” (onglet Format>Catégorie de format personnalisé>Script de touches personnalisé) ://début du script
          if(!event.willCommit)
          {
      //Valeurs par defaut
          this.getField(“C2”).value =0
          this.getField(“C3”).value =0;
      //Valeurs conditionnelles
              if(event.change==”U.G.C”)
              {
              this.getField(“C2”).value =4.5;
              this.getField(“C3”).value =6.40;
              }
              if(event.change==”PATHE-GAUMONT”)
              {
              this.getField(“C2”).value =5.25;
              this.getField(“C3”).value =7.40;
              }
              if(event.change==”UTOPIA”)
              {
              this.getField(“C2”).value =3.15;
              this.getField(“C3”).value =4.50;
              }
          }

      [attachment deleted by admin]

      alex
      Participant

      Placer le script suivant dans la case à cocher :

      this.getField(“NomDuChampDeSaisie”).required=this.getField(“CaseACocher”).isBoxChecked;

      alex
      Participant

      C’est possible. Je ne pourrai vous répondre que mercredi, je suis en vacance avec un iPad…. Donc sans acrobat . A bientôt.

      alex
      Participant

      Ma précédente maquette n’est pas au point.
      Voilà qui sera mieux (voir pièce jointe).
      Sur Acrobat 8 et 9:
      Script de document:
      Options avancées>Traitement du document>scripts JavaScript…
      Script sur action:
      Propriétés du champ texte>Onglet Action>Script de champ désactivé.
      Ici les tests sont faits sur les longueurs des chaînes de saisie, par exemple pour un email il faudrait au moins 3 caractères (au lieu de 1 dans mon exemple) , on progresse  mais on est loin d’une solution PRO!

      [attachment deleted by admin]

      alex
      Participant

      Sur Acrobat 8 et 9:
      Script de document:
      Options avancées>Traitement du document>scripts JavaScript…
      Script de format personnalisé:
      Propriétés du champ texte>Onglet Format>Script de format personnalisé.

      alex
      Participant

      On est bien d’accord, mais on peut capter par un script lançé lors de l’enregistrement du formulaire, l’origine de l’action (bouton “Enregistrer” ou tout autre mode d’enregistrement” par menu ou clavier) et  éditer une alerte conseillant vivement l’usage de ce bouton plutôt que les commandes naturelles.

      alex
      Participant

      Ci-joint la maquette pour vous aider à aller plus loin.
      Le script de document Analyse() se contente de vérifier qu’une saisie a bien été effectuée dans l’un des trois champs requis. Ce n’est pas suffisant pour un usage professionnel. Ce script est lançé en tant que script de format personnalisé.
      Je ne pourrai pas suivre ce fil dans les jours qui viennent.
      A bientôt.

      [attachment deleted by admin]

      alex
      Participant

      Quelques remarques:
      1-eformpdf_submitForm();
      n’est pas une méthode, ce pourrait être une fonction si celle-ci était définie.
      this.submitForm();
      est bien une méthode mais elle est réservée à l’envoi de données de formulaire et  il faut la paraméter correctement.
      2-Si l’une des trois conditions logiques est satisfaite, le bouton “Enregistrer ” restera invisible, sinon, ce bouton apparaîtra. On ne voit nulle part de condition logique…
      3-Pour être rigoureux, il faut être plus exigeant avec les saisies, le constat du champ non vide est insuffisant.
      4-Pour qu’il soit possible d’enregistrer le formulaire avec ses données sous Adobe Reader, il faudra activer les “Reader Extension” avant d’enregistrer le formulaire sous Adobe Acrobat.
      Je vais vous faire une petite maquette d’ici demain soir.

      en réponse à : Validation d’un champ Sexe (H ou F). – RÉSOLU #51672
      alex
      Participant

      C’est peut-être l’attente de nouveaux genres qui impose le choix du champ texte? Mais bon, on se tient au problème posé.
      En ce qui concerne l’équation il y a une erreur de logique combinatoire  si on admet que !== est remplacé par != .
      Le <> (différend de ) est utilisé par exemple dans les expressions des formules sous tableurs Excel, pas en JavaScript.
      Enfin, il est possible de positionner le focus sur le champ de saisie si la saisie est incorrecte par:

      this.getField(“Sexe1”).setFocus();
      Mais cette méthode ne peut être lancée depuis le script embarqué par le champ.
      C’est tout pour aujourd’hui. Bonne soirée.

      en réponse à : Validation d’un champ Sexe (H ou F). – RÉSOLU #51666
      alex
      Participant

      Pour respecter votre logique voici le script à embarquer dans le champ de saisie:

      //Pour visualiser la console Ctrl-J ou Pomme-J sur Mac
      //Reset console.
      console.clear();
      //Captage valeur saisie
      ff=this.event.value;
      //Affichage valeur console.
      console.println(“Valeur lue:”+ff);
      if ((ff == “H”) |(ff == “F”))
      {
      //Affichage information sur console.
      console.println(“Saisie valide!”);
      //Alerte facultative
      app.alert({
      cMsg: “Le format est bon!.”,
      cTitle: “Confirmation”,
      nIcon:3
      });
      }
      else
      {
      //Affichage information sur console.
      console.println(“Saisie invalide!”);
      //Alerte de saisie incorrecte
      app.alert({
      cMsg: “Veuillez indiquer le bon format pour le sexe (H ou F).”,
      cTitle: “Erreur”,
      nIcon:1
      });
      }

      Ci-joint une maquette illustrant votre exemple.
      Cela dit, pourquoi ne pas utiliser un simple bouton radio (trois occurences: Homme, Femme, Non coché, valeur par défaut Non coché) avec une analyse de validité à postériori?

      Petite remarque: avez-vous bien réfléchi à la validité de votre expression logique (f.value !== “H”) || (f.value !== “F”) Hum?

      [attachment deleted by admin]

      en réponse à : Javascript pour PDF. – RÉSOLU #51654
      alex
      Participant

      Non, ce n’est pas possible. Téléchargez une version TRIAL d’Acrobat PRO valide un mois.

      en réponse à : Javascript pour PDF. – RÉSOLU #51652
      alex
      Participant

      Ceci est assez instructif aussi quant à l’uasage de Scribus  et l’usage de listes:

      http://www.abracadabrapdf.net/forum/index.php?topic=1246.0

      en réponse à : Javascript pour PDF. – RÉSOLU #51651
      alex
      Participant

      Pour faire simple, voici l’exemple le plus utilisé par les membres de ce forum. Reste à corriger quelques unicodes, (Amérique  s’écrit Amu00E9rique)..

      [attachment deleted by admin]

      alex
      Participant

      Voici l’exemple type apparemment le plus utilisé par les habitués de ce forum si je me réfère au nombre de téléchargements (plus de 100), mais il faut Acrobat PRO pour le paramétrer (utiliser une version TRIAL valide 1 mois si nécessaire).
      Le paramétrage sous Scribus sous Scribus doit être possible… A voir… Pour ma part, je ne l’ai utilisé qu’une fois et je ne sais pas comment on lance un script de touches personnalisé (listes mères).
      Il y a aussi quelques fautes à corriger dans les unicodes (exemple Amérique s’écrit Amu00E9rique).
      Est-ce suffisant?

      [attachment deleted by admin]

      en réponse à : Incrémenter un numéro automatiquement. – RÉSOLU #50744
      alex
      Participant

      Il y a quelques petits bugs. En effet, la page MASTER devrait être la référence.
      On corrigera ça dans une version plus aboutie dès que j’en aurai le loisir.

    Affichage de 99 réponses de 298 à 396 (sur un total de 603)