Donnez vie à vos documents numériques !
 

alex

Toutes mes réponses sur les forums

Affichage de 99 réponses de 199 à 297 (sur un total de 603)
  • Auteur
    Réponses
  • en réponse à : Champs liste de formulaire vide #56290
    alex
    Participant

    Bonsoir,
    Il faut bien activer les privilèges d’exécution du JavaScript (capture)
    Par ailleurs il ne faut pas autoriser les saisies dans les menus déroulant puisque ce sont les tables qui chargent les données. Ni activer le correcteur orthographique qui mange du temps pour rien (capture)
    Fais un test avec le formulaire joint et envoies ce que la console affiche (Ctrl-J)

    [attachment deleted by admin]

    en réponse à : Champs liste de formulaire vide #56288
    alex
    Participant

    Ooops,
    Effectivement, la correction n’était pas faite.

    [attachment deleted by admin]

    en réponse à : Champs liste de formulaire vide #56286
    alex
    Participant

    Dans le script xinitialisation(), tu fais référence à une table qui n’existe pas (data02_CAP).
    L’exécution du script s’arrête là.
    J’ai corrigé.

    [attachment deleted by admin]

    en réponse à : Champs liste de formulaire vide #56284
    alex
    Participant

    Bonjour,
    Pour effacer le contenu d’un menu déroulant ou d’une liste, placer ce script en ouverture de document:

    this.getField(“Nom du Champ”).clearItems();

    On peut aussi écrire un script qui efface tous les menus déroulants…
    indexField=0;
    while(indexField{
    fieldName=this.getNthFieldName(indexField);
    if(this.getField(fieldName).type==”combobox”)
    {
    this.getField(fieldName).clearItems();
    }
    indexField=indexField+1;
    }

    Pour les listes remplacer “combobox” par “listbox”

    en réponse à : Merci, tout simplement. – SYMPA ! #56250
    alex
    Participant

    George, merci à vous pour ce retour et n’hésitez pas à poser vos questions même si vous vous en tirez fort bien seul.
    Cordialement,
    Alex

    en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55949
    alex
    Participant

    La question est:
    Quelle relation, (quel lien logique) y-a t-il entre les items de la liste “02_CAP” et ceux des deux autres menus déroulants?
    Il faut me donner f !
    item”02_CAP” =f(item”02_Installation_de_destination”,item”03_Rubrique”)

    en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55947
    alex
    Participant

    Désolé mais,

    Pour la première question, les items du menu déroulant “02_CAP” devront être renseignés eux aussi dans un menu déroulant qui contiendrait les items selon les données choisies des autres listes.

    ne suffit pas pour écrire un script même avec une baguette magique!

    en réponse à : Envoyer les données dans un tableau structuré. – RÉPONDU #56201
    alex
    Participant

    Bonjour,
    Aujourd’hui, je cite notre ami Merlin:

    – Pour moi il y a une incompatibilité majeure entre le statut “stagiaire” et l’objectif donné…

    – Acrobat et PDF ne peuvent intervenir que pour la première partie (remplissage des formulaire et collecte des données), pour la suite ce n’est pas la peine d’y penser.

    Effectivement, l’objectif donné est “hors de portée” pour ce qu’on peut en juger et manque un cahier des charges précisant:
    1-le type de solution à mettre en oeuvre*.
    2-La nature et les liens entre les données d’entrée par défaut (les tables d’items et valeurs par défaut ).
    3-Les contraintes de saisies (formats, cohérences, saisies obligatoires,saisies automatiques, champs conditionnels,  etc…)
    4-collecte des données suivant choix *.

    *Ici, on doit dire si on va s’orienter s’orienter vers LiveCycle, un Web service ou une solution rustique de type acrobat.com .

    en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55945
    alex
    Participant

    Bonjour,
    Ci-joint le formulaire avec une correction (le nom du champ “02_CAP” au lieu du nom “02_CAP.csv”) qui ne résoud rien puisque qu’on ne connait toujours pas la logique qui régit la collecte des items de ce menu déroulant !Dans l’état actuel du script, ce champ est vide. Par ailleurs, pour faire des tests il aurait été bon d’avoir des jeux de données un peu plus consistants.
    Questions:
    1-Comment doit-on renseigner les items du menu déroulant “02_CAP” ? La réponse à cette question permettrait de compléter le script proposé le script ci-dessus du 14.
    2-Quelle version d’Adobe Reader utilisera t-on sur le Pc de saisie des données ?

    [attachment deleted by admin]

    en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55942
    alex
    Participant

    Bonjour,
    Tout d’abord donnes-nous quelques précisions.
    Quelle application (Acrobat ou Acrobat Reader) et quelle version ? Système d’exploitation  (Windows Xp ?) pour cette recopie de la console ?
    Ensuite, vérifies le réglage des préférences d’Adobes Reader et refais un essai. (voir copie d’écran jointe).
    A suivre.

    [attachment deleted by admin]

    alex
    Participant

    Bonsoir,
    Ne cherchez plus, sous Acrobat X, on trouve ça dans la commande d’enregistrement:
    Fichier > Enregistrer sous > Fichier PDF Reader Extended > Activer les fonctions supplémentaires.

    en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55940
    alex
    Participant

    Quand plus rien ne marche, c’est que le diagnostique est aisé (en général). Ouvrir la console avec un Ctrl-J (sur Pc) ou un cmd-J (sur Mac), mes scripts sont assez bavards, on devrait avoir une piste…
    Bon week-end à tous.

    en réponse à : Envoyer les données dans un tableau structuré. – RÉPONDU #56197
    alex
    Participant

    On a déjà abordé le sujet ici.
    Les outils d’Adobe (sur adobe.com ou non) génèrent des fichiers csv ou xml qui sont exploitables.
    Pour ma part je préfère toujours envoyer les données vers un serveur WEB interne par un this.submitForm( qui permet déjà de faire un choix dans les champs à prendre en compte), serveur où un petit programme pHp récupère ces données (les $_POST[fieldName]) et les envoie dans uns base mySQL. A partir de là, on fait presque ce qu’on veut pour présenter ces données via les requêtes SQL.
    On sort un peu du cadre d’un simple coup de pouce !

    en réponse à : Numérotation automatique. – RÉPONDU #56214
    alex
    Participant

    Voilà une variante de la solution qui fonctionne à l’ouverture du document. Je reviendrai sur ce sujet pour faire quelque chose de plus abouti (système de remise à zéro et bordereaux multiples).

    [attachment deleted by admin]

    alex
    Participant

    Voilà une maquette dans laquelle on ne gère pas les A,B,C etc.. Il faudrait aussi prévoir quelque chose pour remettre ale compteur à 0.
    A tester, ce que je n’ai pas trop fait…

    [attachment deleted by admin]

    alex
    Participant

    Bonjour,
    Nous avons déjà répondu à un problème très comparable (Voir le post “Numérotation automatique”) que je vous conseille de regarder.
    Mais n va se pencher sur votre cas en particulier car la numérotation est différente…
    Question: RSA devient RSB  puis RSC etc…. ?

    en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55936
    alex
    Participant

    Le menu déroulant “02_CAP” ne peut plus être renseigné à l’ouverture du document puisqu’il dépend de deux autres sélections. En conséquence, on ne doit pas voir apparaître le script configComBox() dans le script xinitialisation(). Par précaution, on vide le menu déroulant “02_CAP”.d’où, les lignes suivantes:

    nomFichier=”02_CAP.csv”;
    lectureCSV();
    data02_CAP=data;
    configComboBox();
    this.getField(“02_CAP.csv”).clearItems();

    Par contre, on doit créer deux scripts au niveau des menus déroulants « 02_Installation_de_destination » et « 03_Rubrique ». pour mettre à jour le menu “02_CAP.csv”,
    Onglet Format>Personnalisé>Script de touche personnalisé
    1-pour « 02_Installation_de_destination », un script de la forme:

    //Remplissage du menu déroulant
    if(!event.willCommit)
    {
    table=new Array() ;
    choix1=this.event.changeEx;
    choix2=this.getField(“03_Rubrique”).value;
    //définition de la table à partir des choix1 et choix2 (la table “dépend de”)
    //……………script à écrire………………….
    //
    f2=this.getField(“02_CAP”);
    f2.delay=true;
    f2.clearItems();
    j=0;
    while(j {
    f2.insertItemAt(table[j],j,j)
    j=j+1;
    }
    f2.currentValueIndices=0;
    f2.delay=false;
    }

    2-pour « 02_Installation_de_destination », un script de la forme:
    //Remplissage du menu déroulant
    if(!event.willCommit)
    {
    table=new Array() ;
    choix1=this.getField(“02_Installation_de_destination”).value;
    choix2=this.event.changeEx;
    //définition de la table à partir de choix1 et choix2. (la table “dépend de”)
    //……………script à écrire………………….
    //
    f2=this.getField(“02_CAP”);
    f2.delay=true;
    f2.clearItems();
    j=0;
    while(j {
    f2.insertItemAt(table[j],j,j)
    j=j+1;
    }
    f2.currentValueIndices=0;
    f2.delay=false;
    }

    Hélas, je ne peux pas définir les tables des items car je ne suis pas une voyante extra-lucide ni un enchanteur  !

    en réponse à : Numérotation automatique. – RÉPONDU #56213
    alex
    Participant

    Merci Merlin,
    Voici donc la méthode que j’utilise pour identifier les formulaires lorsqu’on me demande de numéroter les documents du jour. Ici les numéros sont de la forme aaaammjj-xx. Le compteur repart à 01 chaque jour. Trois scripts sont à l’oeuvre:
    initialisation()
    enregistrement()
    numerotation()
    Le dernier numéro est mémorisé par une variable locale lors de l’enregistrement du formulaire:

    global.dernNum=this.getField(fNum).value;
    global.setPersistent(“dernNum”,true);
    Attention, ce script devra être adapté pour fonctionner avec plusieurs formulaires utilisés simultanément. Je proposerai une variante pour ça.
    D’autres idées our fare ça ?

    [attachment deleted by admin]

    en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55932
    alex
    Participant

    Dans ton formulaire manque le script lié à l’enregistrement du document:
    Outils>Définir les actions du document>Le document sera enregistré…
    Pour le reste, je n’ai rien compris. le contenu d’un menu déroulant dépend du choix effectué sur un autre ???
    Merlin, on pourrait ouvrir un fil sur ce seul thème de la numérotation automatique, je vous proposerai une solution plus raffinée que vous pourrez tester.
    Bonsoir à tous et bon week-end.

    en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55927
    alex
    Participant

    Pour poursuivre le débat sur la numérotation automatique d’un document, voici une maquette où deux boutons assurent:
    1-la numérotation automatique.
    2-la fermeture du formulaire avec, en cas d’enregistrement, la mémorisation du dernier numéro.
    Pour raffiner, on pourrait rendre invisible le champ “Attribuer un numéro” et le champ “Valider le bordereau” visible après attribution du numéro.
    Attention de bien recopier les scripts de document.

    En ce qui concerne l’export des données, c’est l’objet d’un fil différend, je suis bien d’accord.

    [attachment deleted by admin]

    en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55923
    alex
    Participant

    Non, on ne doit pas simuler par un bouton puisque les évènements qui gèrent les scripts sont:
    1-l’ouverture du document pour le calcul du nouvel identifiant.
    2-la fermeture du document pour l’enregistrement de la variable locale.
    Ci-joint un document qui ouvre la console à l’issue de la numérotation, recopier le contenu pour que l’on puisse analyser l’erreur éventuelle.
    Pour tester:Ouvrir, enregistrer, réouvrir,enregistrer, etc…

    [attachment deleted by admin]

    en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55921
    alex
    Participant

    Pour illustrer la première proposition de Merlin voici un exemple qui exploite la variable globale mémorisée sur la plate-forme où l’on travaille. Il y a donc quelques contraintes d’exploitation à connaître.
    Attention: deux scripts sont à l’oeuvre! Le premier est activé par l’ouverture du document, l’autre par l’action d’enregistrement[ (Définir les actions du document>Le document sera enregistré./color]

    [attachment deleted by admin]

    en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55914
    alex
    Participant

    Bonjour à tous,
    Pour concaténer le contenu de deux champs dans un troisième, voir exemples joints.
    Pour incrémenter automatiquement un numéro de bordereau genre 20131105-01,20131105-02,20131105-03,20131105-04… c’est une autre affaire.

    [attachment deleted by admin]

    alex
    Participant

    Bonjour,

    C’est assez complexe, voyez mon exemple où le script de calcul est lancé par le bouton.

    [attachment deleted by admin]

    en réponse à : Condition de remplissage d’un champ. – RÉSOLU #56104
    alex
    Participant

    Bonjour,
    On peut bien sûr préciser les variables texte1 et texte2 à l’ouverture du document une fois pour toutes.

    //Script d’ouverture de page (page par défaut)
    texte1=”Mon texte dans le cas ou le champ contient une saisie”;
    texte2=”Mon texte dans le cas où le champ est vide”;
    //et bien d’autres paramètres à utiliser ultérieurement.

    Autre manière de faire (style Merlin, voir maquette jointe):
    //Script d’ouverture de document
    fonction Ouverture()
    {
    texte1=”Mon texte dans le cas ou le champ contient une saisie”;
    texte2=”Mon texte dans le cas où le champ est vide”;
    }
    Ouverture()

    [attachment deleted by admin]

    en réponse à : Condition de remplissage d’un champ. – RÉSOLU #56101
    alex
    Participant

    Bonjour,
    Voir maquette jointe, le script est embarqué par le champ de saisie du nom du chef de projet baptisé “ChefDeProjet”.
    Bonne journée à tous.

    //Script possible
    cible=”Nom_5″
    texte1=”Mon texte dans le cas ou le champ contient une saisie”;
    texte2=”Mon texte dans le cas où le champ est vide”;
    if(this.event.value==””)
    {
    this.getField(cible).value=texte2;
    }
    else
    {
    this.getField(cible).value=texte1;
    }

    [attachment deleted by admin]

    alex
    Participant

    Bonjour,

    Bienvenue sur le forum.

    Voici pour illustrer une solution aux deux premières questions :
    Gain> Chiffre d’affaire => Alerte (le champ gain est bordé de rouge) et valeur du gain forçée à 0.
    Gain>40% du CA => Alerte simple.

    Si on saisit de nouveau le CA, le gain passe à 0 et le champ est bordé de rouge pour inciter à une nouvelle saisie du gain.
    Onglet Validation>Exécuter le script de validation personnalisé

    Voir la pièce jointe.

    Alex

    [attachment deleted by admin]

    en réponse à : Menu déroulant. – RÉSOLU #56048
    alex
    Participant

    Tu remarqueras que l’interface d’Acrobat ne propose pas d’affecter un script à l’ouverture d’un document même s’il est possible de le faire manuellement. Etrange non ?
    Pour ma part j’utilise un artifice qui contraint l’exécution du script d’ouverture de page à la seule première ouverture via une propriété personnalisée ré-initialisée à la fermeture du document.

    en réponse à : Menu déroulant. – RÉSOLU #56046
    alex
    Participant

    C’est un script de document. Encore faut-il qu’un évènement quelconque le lance! L’ouverture de la première page par exemple.

    en réponse à : Menu déroulant. – RÉSOLU #56044
    alex
    Participant

    Pour que le script Initialisation() soit exécuté lors de l’ouverture du document, il fallait donc le préciser (clic droit sur la vignette de page>Propriétés de la page>Onglet Actions>Exécuter un JavaScript….).

    [attachment deleted by admin]

    en réponse à : Menu déroulant. – RÉSOLU #56041
    alex
    Participant

    Je ne lis pas dans le marc de café ! Pour que j’aies une chance de trouver l’erreur, il faut m’envoyer le document.
    Le script d’ouverture de page a sans doute été oublié….

    en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55899
    alex
    Participant

    Merlin,
    Ce n’est pas vrai dans mon exemple. Les en-têtes sont bien présentes dans le fichier de données BSD.csv mais je ne les utilise pas comme on le ferait avec du fdf ou du xml.
    Les champs du formulaire sont nommés Champ.1 à Champ.x dans l’ordre des colonnes, rien de plus.
    Cela dit, on pourrait les prendre en compte pour aider notre ami qui pourrait alors nommer ses champs de formulaire à l’identique des têtes de colonne.

    en réponse à : Menu déroulant. – RÉSOLU #56038
    alex
    Participant

    C’est assez trivial mais ça marche !

    en réponse à : Menu déroulant. – RÉSOLU #56036
    alex
    Participant

    Voici l’exemple attendu. Les données sont définies par le script d’ouverture de page Initialisation().
    Ici j’ai créé trois tables contenant les dates de début, dates de fin et les lieux. Il faut respecter l’ordre.
    Bon courage

    [attachment deleted by admin]

    en réponse à : Comptabiliser le nombre de caractère dans un PDF. – RÉPONDU #55963
    alex
    Participant

    Ci-joint variante à la version précédente. Bonne journée à tous.

    [attachment deleted by admin]

    en réponse à : Comptabiliser le nombre de caractère dans un PDF. – RÉPONDU #55962
    alex
    Participant

    Ci-joint un petit script à ma façon…
    Modifier l’extension du fichier en .js
    Placer ce script dans le dossier JavaScript de l’application Adobe Reader ou Acrobat.
    Relancer l’application et ouvrir le document. Das le menu “Fichier” d’Adobe Reader ou d’Acrobat apparaît un nouvel item “Outils AbracadabraPDF>Comptage caracteres”.
    Faites un petit essai et vérifiez que les résultats sont corrects.
    On peut sans doute améliorer…

    [attachment deleted by admin]

    en réponse à : Menu déroulant. – RÉSOLU #56034
    alex
    Participant

    Oui, il faut alors définir un tableau contenant ces données. Exemple demain, car je dois m’absenter.
    Bonne soirée.

    en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55894
    alex
    Participant

    Je vais voir ça mais pas ce soir , désolé. J’ai une idée.

    en réponse à : Menu déroulant. – RÉSOLU #56032
    alex
    Participant

    Voilà, tout se joue dans l’onglet Format de la liste déroulante (Script de touche personnalisé).

    [attachment deleted by admin]

    en réponse à : Menu déroulant. – RÉSOLU #56030
    alex
    Participant

    Je vous envoie une petite maquette d’ici 30 minutes.

    en réponse à : Menu déroulant. – RÉSOLU #56028
    alex
    Participant

    Oui.

    en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55892
    alex
    Participant

    Voici l’exemple promis.
    Le fichier de données est unique. Pour voir sa structure, utilisez un simple éditeur de texte. Vous remarquerez que toutes les valeurs se suivent séparées par des point-virgules.
    Lors de l’ouverture du document, un script (importDatas()) lit la première colonne et renseigne le menu déroulant.
    Lors de l’action sur le menu déroulant le script remplissageFiche() lit les autres valeurs et remplit les champs Champ.1 et suivants (jusqu’à Champ.7 dans mon exemple)

    On peut aussi faire ça  avec un fichier de données xml, ou du fdf.

    Voyez si ça vous suffit.

    [attachment deleted by admin]

    en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55888
    alex
    Participant

    Bonjour à tous,
    Je vous poste sur ce formulaire un exemple avec un seul fichier de données dans les heures qui viennent…

    alex
    Participant

    On est sur la voie, voici comment procéder:
    //Script d’application ou de document
    //On passe en revue tous les champs du document… si leur nom fini par  “.A$” et si c’est un bouton on lui associe le script

    indexField=0;
    while(indexField{
    nomDeChamp=this.getNthFieldName(indexField);
    //substring à vérifier
          if(nomDeChamp.substring(nomDeChamp.length-4,nomDeChamp.length)== “.A1$”& this.getField(nomDeChamp).type==”button”)
          {
          console.println(“Ajout du script au bouton “+nomDeChamp)
          this.getField(nomDeChamp).setAction(“MouseUp”,”activeboomA()”);
          indexBouton=indexBouton+1;
          }
    indexField=indexField+1;
    }

    alex
    Participant

    Bonjour Merlin,
    Fais un essai sur ce formulaire…
    Si tu ouvres une pièce  jointe dans Acrobat (par exemple Dupont.csv) tu constaters que tu peux la modifier sous Excel, et elle sera mise à jour !
    Oui, il faut faire attention à l’encodage pour les accents.
    Dans mon exemple, j’ai mélangé volontairement des csv et des txt.

    alex
    Participant

    Pour traiter les fichiers .csv, il faut considérer le “;” comme caractère séparateur (voir exemple ci-joint script importDatas() ). On peut là aussi modifier ces fichiers directement sous Acrobat PRO.
    Ouvrir le fichier csv pour voir sa structure …

    [attachment deleted by admin]

    alex
    Participant

    Bonjour à tous,
    Sur le thème des données à afficher dans un formulaire voici un petit truc que j’utilise souvent et qui consiste à embarquer les données du formulaire sous forme de pièces jointes. Dans mon exemple, j’ai autant de fichiers texte que de fiches, on peut en ajouter autant qu’on veut. Mon formulaire comporte 3 champs à remplir (champs “Champ.0″,”Champ.1″,”Champ.2”), on peut là aussi en ajouter autant qu’on veut (paramètre NbreChamps à modifier dans le script importDatas().
    Le premier script importDatas liste les pièces jointes, remplit la liste déroulante et et collecte les données pour les stocker dans une table.
    Le second script remplit la fiche à partir de l’item sélectionné.
    Voir maquette.
    Nombreuses variantes possibles:
    pièces jointes XML avec noms des champs.
    pièce jointe unique.
    données externes.
    remplissage du menu déroulant à l’ouverture.
    etc…

    [attachment deleted by admin]

    alex
    Participant

    Je me suis trompé lors de ma première analyse (je mange mon chapeau), vos scripts sont corrects et pourtant je reproduis bien votre problème. Mystère….

    alex
    Participant

    Bonjour,
    Il y a une erreur de script, la valeur d’export du bouton radio Stannous_IV n’existe pas (afficher la liste des champ pour s’en rendre compte:

    (this.getField(“Stannous_IV”).value == “3”)
    Il serait préférable de lancer un script unique à partir des 3 occurences de ce bouton radio avec un test sur la valeur d’export.
    Je vous envoie le formulaire corrigé demain si vous ne vous en sortez pas.

    alex
    Participant

    Voici une maquette. Il vaut mieux mettre le script des pièces jointes en ouverture des premières pages, conseil d’ami.
    Notez qu’il devrait être possible par script de répartir les fenêtres des pièces jointes sur l’écran par les méthodes suivantes:
    app.execMenuItem(“TileHorizontal”);
    app.execMenuItem(“TileVertical”);
    app.execMenuItem(“Cascade”);
    Par ailleurs les paramètres d’ouverture des pièces jointes sont respectés même si la page maître est en plein écran.
    Bon week-end à tous.

    [attachment deleted by admin]

    alex
    Participant

    Et du JavaScript pour faire ça, en voilà:
    1-Script du bouton:
    //pour aller à la page 2 par exemple…

    global.pageDestination=1;
    this.exportDataObject({cName:”pieceJointe1.pdf”,nLaunch:2});
    2-Script d’ouverture du document pieceJointe1.pdf
    this.pageNum=global.pageDestination;
    global.pageDestination=0;
    Ainsi, la page de destination pourra être un paramètre variable issu d’une liste déroulante par exemple.

    en réponse à : Seulement montrer les décimales. – RÉSOLU #55229
    alex
    Participant

    Oui, c’est vrai, mais je suis habitué aux demandes exotiques !  Pour un champ unique donc, nous aurions:
    var h = this.getField(“cm”).value;
    var w = this.getField(“kg”).value;
    calcul=0.0235 * (Math.pow(h,0.42246) * Math.pow(w,0.5145));
    event.value = Math.floor(100*calcul);

    alex
    Participant

    Pour compléter ma réponse ci-dessus , voici un exemple minimal de script pHp affichant le champs de formulaire Donnee Nom du fichier: xCollecteDonnes.php
    session_start();
    echo”“;
    echo”“;
    echo ““;
    echo ““;
    echo “

    “;
    $IPAd=$_SERVER;
    $DateVisite=date(“Y”).”/”.date(“m”).”/”.date(“d”).” “.date(“G”).”:”.date(“i”).”:”.date(“s”);
    //Affichage des données sur la page web avec la date, l’heure et l’Ip emetteur.
    if((strlen($_POST[Donnee])>0)&$_POST[CodS]==’1234′)
      {
      echo”
    Valeur lue : $_POST[Donnee] le $DateVisite envoyee par Ip=$IPAd”;
      }
    echo “

    “;
    ?>
    Le formulaire d’origine contient au moins le champ Donnee et le champ CodS (invisible) ayant pour valeur “1234”. Cet exemple est une base pédagogique, rien de plus, on affiche la données mais on ne la transmet pas à une BD.

    en réponse à : Seulement montrer les décimales. – RÉSOLU #55227
    alex
    Participant

    Voici les scripts de calcul pour les deux champs:
    BSA1 (partie entière du BSA):

    var h = this.getField(“cm”).value;
    var w = this.getField(“kg”).value;
    calcul=0.0235 * (Math.pow(h,0.42246) * Math.pow(w,0.5145));
    partieEntiere=Math.floor(calcul)
    event.value = partieEntiere;
    BSA2 (partie décimale du BSA):
    var h = this.getField(“cm”).value;
    var w = this.getField(“kg”).value;
    calcul=0.0235 * (Math.pow(h,0.42246) * Math.pow(w,0.5145));
    partieEntiere=Math.floor(calcul)
    event.value = Math.floor(100*(calcul-partieEntiere));
    Voir maquette jointe, il faut aussi vérifier la validité des saisies (taille et poids)…

    [attachment deleted by admin]

    alex
    Participant

    Il n’est pas obligatoire d’envoyer les données dans une BD, on peut simplement les afficher sur une page Web (pHp).
    Voici quelques éléments de réponse, je détaillerai plus tard…:
    Dans le script JavaScript:
    Les données envoyées sont celles des champs de formulaire listés par aFields (le nom des champs séparés par des virgules)
    L’envoi des données se fera vers le site “monsite.fr”
    Les donnees seront ensuite analysées par le programme pHp “xCollecteDonnees.php” qui les recevra comme des $_POST[Nom_du_champ]. Il faut inclure dans ces données un identifiant (champ caché du formulaire origine) validant celles-ci, la première opération du script pHp étant de s’assurer que l’emetteur des données est autorisé à le faire.
    Au niveau du formulaire, le script JavaScript est du style:

    this.submitForm({
    cURL: “http://www.monsite.fr/xCollecteDonnes.php#FDF”,
    aFields:ListeChamps,
    cSubmitAs: “HTML”
    });
    On peut associer ce script à un bouton.
    Pour faire des essai, supprimez la ligne aFields (tous les champs de formulaire seront envoyés).
    Je pourrai donner un exemple du script php pour la page Web demain ..

    alex
    Participant

    Dommage, car sur tablette (iPad) PDF Expert est le seul viewer capable d”émuler un peu de JavaScript et en particulier le submitForm() ce que ne fait pas Adobe Reader sur iPad…

    alex
    Participant

    On peut récupérer les données d’un champ de formulaire (ou de tous les champs du formulaire) par un submitForm() associé à service Web (petit programme en pHp par exemple sur un serveur Web ou local).

    alex
    Participant

    Ci-joint exemple de base à la manière de @jsamica (pas de champs pdg pour moi).

    [attachment deleted by admin]

    alex
    Participant

    Exact ! Je n’ai pas vu venir le pdg à 50000!
    if (somtotal < 15000)
    {
    this.getField(“valdg”).display = display.hidden;
    }
    else
    {
    this.getField(“valdg”).display = display.visible;
    }
    if (somtotal < 50000)
    {
    this.getField(“valpdg”).display = display.hidden;
    }
    else
    {
    this.getField(“valpdg”).display = display.visible;
    }

    alex
    Participant

    Tu as raison Merlin, pour gérer l’affichage, d’un point de vue logique ceci suffit:
    if (somtotal < 15000)
    {
    this.getField(“valdg”).display = display.hidden;
    }
    else
    {
    this.getField(“valdg”).display = display.visible;
    }

    [attachment deleted by admin]

    alex
    Participant

    Voici une manière de faire qui contourne bien des obstacles (formats des nombres mal définis ou pas du tout, calcul de la somme évitant les aléas de gestion des évènements de certaines versions)… Un seul et unique script de calcul donc, lancé par chacune des actions sur les membres de la somme…
    Cette technique permet de panacher des modes de calculs de lignes éventuellement différents et d’avoir des sous-totaux intermédiaires et finaux mis à jour même pour des calculs complexes.

    [attachment deleted by admin]

    en réponse à : Comportement et affichage sur un bouton. – RÉPONDU #55167
    alex
    Participant

    Bonjour à tous,
    Pour la gestion des évènements et des couleurs du cadre du bouton voir exemple joint.
    Ici contrôle de la couleur sur entrée/sortie.

    [attachment deleted by admin]

    alex
    Participant

    Pour afficher,le nom des champs les uns après les autres il faudrait écrire ceci et ne pas s’énerver:
    for ( var i=0; i < this.numFields; i++)
    {           
    var temp= this.getField(this.getNthFieldName(i));
    app.alert(temp.name ,2);
    }
    Mais pour travailler dans le calme, il vaut mieux éditer sur la console,le nom des champs les uns après les autres avec leur valeur valeur il faudrait écrire ceci :
    console.clear();
    for ( var i=0; i < this.numFields; i++)
    {           
    var temp= this.getField(this.getNthFieldName(i));
    console.println(temp.name+”-valeur=”+temp.value);
    }
    console.show();

    alex
    Participant

    Pour les paresseux (comme moi) le script ci-dessous liste lui-même les champs obligatoires, fait le même test que vous et envoie les données

    console.clear();
    var bSuccess=true;
    var emptyTest=/^s*$/;
    for(var i=0;i {
    nameField=this.getNthFieldName(i);
    fld=this.getField(nameField);
    if(fld.type==”text”|fld.type==”checkbox”|fld.type==”combobox”)
    {
    if(fld.required)
    {
    console.println(“Analyse champ “+nameField);
    if(emptyTest.test(fld.value))
    {
    bSuccess=false;
    AlertMsg=”Veuillez remplir le champ “”+nameField+”””;
    app.alert(AlertMsg,1);
    fld.setFocus();
    }
    }
    }
    }
    if(bSuccess)
    {
    var fTo = this.getField(“mail”);
    var fSubject = this.getField(“concatobjet”);
    var fBody = this.getField(“concat”);
    this.mailDoc(true, fTo.value, “”, “”, fSubject.value, fBody.value);
    }

    alex
    Participant

    Pour ce genre de problème, ne perdez jamais de vue les solutions à base d’interfaces Web qui fonctionneront sans problème sur la plupart des tablettes :
    Du pHp adossées à une base de données mySQL. Il est alors possible (si nécessaire) de générer des documents pdf ( à plat) ou des fichiers Excel à la demande grâce à des classes pHp !
    Pour ceux qui adorent le JavaScript et les choses un peu plus complexes, il y a aussi Ajax (du JavaScript côté serveur).

    en réponse à : Zone de liste. – RÉPONDU #54664
    alex
    Participant

    Voir maquette ci-jointe: la sélection de l’item “Autre carburant” fait apparaître un champ de saisie spécial. Tout autre choix le fait disparaître.
    En ce qui concerne les calendriers, ce sujet a été abordé dans ce forum récemment.

    [attachment deleted by admin]

    en réponse à : Zone de liste. – RÉPONDU #54662
    alex
    Participant

    Bonjour jeffe 52,
    Il faut sans doute utiliser un menu déroulant et pas la zone de liste…

    [attachment deleted by admin]

    alex
    Participant

    Si vous utilisez un éditeur de script, la syntaxe sera vérifiée avant enregistrement.
    Acrobat>Préférences>JavaScript
    Ci-joint un exemple avec BBEdit.app.

    [attachment deleted by admin]

    en réponse à : TOTAL en fonction de cases cochées. – RÉSOLU #54522
    alex
    Participant

    Bonjour à tous,
    Pour moi ça fonctionne, il faut ajouter des nombres sinon A+B+C donne une chaîne de caractères. Je reviens plus tard pour une solution plus générale.

    [attachment deleted by admin]

    en réponse à : Reader 7 et javascript : faire pivoter une page. – RÉPONDU #54444
    alex
    Participant

    Il s’agit de faire pivoter la page (voir le script associé au bouton) et non pas de tourner les pages.  J’ai déjà répondu à un fil traitant de ce bug.

    alex
    Participant

    Ce petit script devrait vous aider (sur le tard)… On peut l’intégrer à Acrobat, ici je l’ai inséré comme script de document lancé par le bouton.
    Les champs de texte de la page courante seront pivotés au choix en  position 0 (texte vertical lecture de bas en haut), 90 (texte horizontal lecture de gauche à droite) , 180 (texte vertical lecture de haut en bas) ou 270 (texte horizontal tête en bas lecture de droite à gauche).
    Comme on peut le constater, ce n’est pas cohérent avec les propriétés du champ (voir ci-dessus le post de Merlin), il faut choisir 90 deg pour obtenir un texte horizontal …

    [attachment deleted by admin]

    en réponse à : Afficher message/texte passé telle date. – RÉSOLU #54287
    alex
    Participant

    Même chose que précédemment, la date limite est définie par les paramètres jour, mois, année…

    [attachment deleted by admin]

    en réponse à : Afficher message/texte passé telle date. – RÉSOLU #54286
    alex
    Participant

    Pour répondre au problème, voir maquette jointe:
    Un script d’ouverture de page compare la date du jour à la date saisie dans le champs “DateLimite”.
    Si la date du jour est postérieure à la date limite on génère une alerte.
    Si on ne souhaite pas modifier la date limite il faut rendre ce champ invisible ou insaisissable.

    [attachment deleted by admin]

    alex
    Participant

    La ligne de code suivante fera l’affaire:
    this.getField(“CaseDestination”).checkThisBox(0, this.getField(“CaseOrigine”).isBoxChecked(0));
    Si vous préférez quelque chose de plus pédagogique en deux lignes:
    statut=this.getField(“CaseOrigine”).isBoxChecked(0);
    this.getField(“CaseDestination”).checkThisBox(0, statut);

    Nota: on peut écrire un script traitant globalement la recopie de tous les champs d’un template vers un autre.

    alex
    Participant

    Oui, il faut réouvrir le capot et généraliser à n hiérarchies mères/filles/petites filles…  Il faudra d’une part patienter un peu, d’autre part se contenter d’une solution acroForm…

    en réponse à : Differences Acrobat pro X et Acrobat pro XI ? – RÉPONDU #54062
    alex
    Participant

    Vous n’aurez pas de problèmes de compatibilité, les documents issus de la version XI peuvent être repris sous Acrobat X et les versions précédentes pour être retravaillés sans soucis disons jusqu’à la version 9.

    en réponse à : Insertion obligatoirement différentes de valeurs. – RÉSOLU #54059
    alex
    Participant

    Bonjour,
    Voir maquette jointe.
    Baptiser les champs de saisie Saisie1,Saisie2,Saisie3, Saisie4. On peut aller au delà, dans ce cas modifier le paramètre NbreChamps du script de document unique en conséquence.
    Le script AnalyseSaisie() est lancé par la validation des données de chaque champ.
    Voilà.

    [attachment deleted by admin]

    en réponse à : Intéractivité entre tableau et graph dans un PDF. – RÉSOLU #53936
    alex
    Participant

    @max:
    Attention, la propriété readonly s’écrit readOnly pour les annotations ( et non pas readonly comme pour les champs) et le SDK précise:

    If true, the annotation should display but not interact with the user.
    Je viens donc de tester, et effectivement même si la séquence TAB passe sur les segments de la courbe (les annotations), on ne peut pas les déplacer.
    Mais tu as raison, il faudrait placer un champ transparent ou un calque au dessus des annotations…
    On pourrait aussi assez facilement créer une animation en .js équivalente à celle obtenue en flash…
    Enfin, il faudrait généraliser à N courbes…

    en réponse à : Intéractivité entre tableau et graph dans un PDF. – RÉSOLU #53933
    alex
    Participant

    Oui, il faut t’intéresser au groupe dit des “tontons flexeurs”:
    http://groups.adobe.com/group/504

    en réponse à : Intéractivité entre tableau et graph dans un PDF. – RÉSOLU #53931
    alex
    Participant

    Une autre voie consiste à manipuler directement des annotations (ici des traits) sans passer par la fenêtre flash.
    1-Sous Acrobat PRO, placer et dimensionner le champ “Graphes” à votre convenance, c’est lui qui va accueillir les graphes.
    2-Créer autant d’annotations de type trait que requis, ici 12. Seule contrainte, insérer “GrapheAbracadabra” comme subject afin de les reconnaître. Ces annotations n’ont pas à être placées, il suffit de les créer, le script fait le reste (je les ai créé par script mais parce que je suis paresseux).
    Un seul script est à la peine (Test()), il est lancé à chaque saisie de données dans le tableau.
    Pour l’instant, une seule courbe, mais rien de plus facile que d’en superposer d’autres.
    Voir document joint assez basique…

    [attachment deleted by admin]

    en réponse à : Création PDF/A à partir d’un PDF. – RÉPONDU #53852
    alex
    Participant

    En travaillant avec du PHP, on trouve des librairies (class) dédiées à la génération de documents PDF (TCPDF, FPDF), certaines génèrent du PDF/a. C’est très facile à mettre en oeuvre, reste à voir si les documents générés sont bien conformes aux spec et à intégrer ça à SAP !

    en réponse à : Texte barré en rouge dans formulaire PDF. – RÉPONDU #53923
    alex
    Participant

    Les barres en rouge qui apparaissent sur les textes sont sans doute des commentaires.
    Pour s’en assurer, sous Adobe Reader, cliquez sur l’onglet Commentaires et vous verrez la liste s’afficher. Un clic droit sur le commentaire lui-même ou sur l’item de la liste fait apparaître un pop-up avec la possibilité de les supprimer un à un. On pourrait sans doute écrire un script qui les supprimerait tous sur un évènement quelconque… Mais est-ce bien nécessaire?

    en réponse à : Attribution de script sur bouton. – RÉSOLU #53790
    alex
    Participant

    J’aimerais beaucoup avoir un exemple où la logique du & soit mise en défaut avec des expressions logiques…

    alex
    Participant

    Ce lien ne fonctionne pas…

    en réponse à : Afficher/Masquer une deuxième page d’un PDF. – RÉPONDU #53807
    alex
    Participant

    Effectivement, après tests, les templates ne sont pas accessibles par script sur Adobe Reader 11, même en contexte privilégié alors que qu’ils le sont sous Acrobat….

    en réponse à : Attribution de script sur bouton. – RÉSOLU #53787
    alex
    Participant

    Pour clore le débat par un script plus général:
    //Definir le début de nom recherché:
    EnTete=”BTN_DL_fiche_A”;
    //Utiliser la syntaxe  suivante pour la recherche
    if(nomDeChamp.substring(0,EnTete.length)==EnTete)

    Pour le reste:
    l’operation
    x && y
    est la même que
    x & y
    sauf que si x est false, l’évaluation de y ne sera pas faite puisque le résultat sera false dans tous les cas. Bof.

    en réponse à : Afficher/Masquer une deuxième page d’un PDF. – RÉPONDU #53805
    alex
    Participant

    Pour répondre à @Kalo
    1-Si on interdisait d’accéder à la seconde page, il ne serait pas nécessaire de masquer la zone de saisie par un calque ou un masque(champ de texte).
    2-Le bouton d’impression lance un script qui reprend les propriétés de l’imprimante utilisée pour en modifier certains paramètres (pour nous la plage des pages imprimées). On peut le faire lors de la sélection par la case à cocher.
    Reader X suffit pour tout ça.
    3-Voir ci-dessous, je pense qu’on va pouvoir masquer la seconde page tout simplement. Il faudra attendre lundi !
    Pour répondre à Merlin..
    Effectivement, les templates sont fonctionnels avec effet rétroactif sur la version X.
    Je te transmets un script d’application qui permet de créer des templates, de les lister, de les activer ou désactiver sous Acrobat X ou XI. Reste à vérifier qu’on les manipule bien sous Reader. On pourrait ouvrir un fil pour ça ?

    en réponse à : Afficher/Masquer une deuxième page d’un PDF. – RÉPONDU #53799
    alex
    Participant

    Résultat des courses sous Acrobat X et XI (script au niveau document):
    NotAllowedError: Les paramètres de protection interdisent l’accès à cette propriété ou à cette méthode.
    Doc.createTemplate:4:Field Templates:Mouse Up
    Il faut sans doute créer ces templates en contexte privilégié. Ensuite on verra si on peut les manipuler au niveau document…
    Je vois ça et je reviens vers vous.
    Bon week-end.

    en réponse à : Afficher/Masquer une deuxième page d’un PDF. – RÉPONDU #53798
    alex
    Participant

    C’est juste Merlin, je viens de voir ça ! Un truc comme ça devrait alors marcher pour transformer toutes les pages d’un document sauf la première en templates:
    numNewTemplates=this.numPages;
    for ( var i = 0; i < numNewTemplates; i++)
    {
    var t = this.createTemplate({cName:”myTemplate”+i, nPage:1 });
    t.hidden = true;
    }

    en réponse à : Afficher/Masquer une deuxième page d’un PDF. – RÉPONDU #53796
    alex
    Participant

    Ci-joint une solution assez rustique à base de masque (un champ texte qui masque ou non la page 2)
    Si la case n’est pas cochée, le tableau de la page 2 est invisible, les pieds de page sont adaptés et l’impression limitée à la première page.
    Si la case est cochée, le tableau de la page 2 est visible, les pieds de page sont adaptés et l’impression comprend les deux pages.
    On peut aussi utiliser un calque pour masquer la page 2.
    On peut aussi interdire de passer sur la page 2 tant que la case n’est pas cochée.
    Pourquoi ne pas afficher/Masquer la page 2?
    Avec AcroForm sous Acrobat il n’est plus possible depuis la version 7 à ma connaissance de masquer ou afficher une page (template), pour ça il faut passer en xfa sous Adobe LiveCycle Designer, ce que je ne conseille pas.

    [attachment deleted by admin]

    en réponse à : Attribution de script sur bouton. – RÉSOLU #53783
    alex
    Participant

    Petite correction logique:
    //si le nom commence par  “BTN_DL_fiche_A” et si sa longueur est strictement de 14 digits,on lui associe le script
          if(nomDeChamp.substring(0,14)== “BTN_DL_fiche_A”& this.getField(nomDeChamp).type==”button”&nomDeChamp.length==14)

    Non ?

    en réponse à : Calcul sur des dates. – RÉSOLU #53701
    alex
    Participant

    Si vous rencontrez des difficultés, n’hésitez pas… La manipulation et les calculs de dates en JavaScript comme en PHP ne sont pas évidentes.
    Je donnerai la solution avec une maquette lundi sauf si quelqu’un veut bien me doubler. Bon week-end.

    alex
    Participant

    Avec PDF Expert sur iPad l’envoi de données de formulaire vers un serveur via un submitForm(), fonctionne parfaitement. Il faut lui associer côté serveur un script PHP gérant des requêtes SQL vers une base genre mySQL.
    Je n’ai pas encore essayé l’Adobe Reader pour iPad (il s’était fait distancer par son outsider) mais je vais le vérifier sur un système d’évaluation où je dois aussi intégrer des videos (et là c’est PDF Expert qui pêche!).

    en réponse à : Calcul sur des dates. – RÉSOLU #53699
    alex
    Participant

    Qui donne la solution exacte au problème posé par lagentejl ?
    Je n’ai pas dit comment récupérer l’objet date à partir d’un champ de texte  au format date… ou de format libre.
    A suivre.

    en réponse à : Calcul sur des dates. – RÉSOLU #53697
    alex
    Participant

    Quelques lignes pour comprendre et se lancer:
    //obtenir l’objet date:
    hd=new Date();
    //Afficher la date dans le champ “AffichageDate.0” à créer:
    this.getField(“AffichageDate.0”).value=util.printd(“dd-mm-yy”,hd)
    this.getField(“AffichageDate.0″).userName=”Date au format jj-mm-aa”;
    //Afficher l’heure dans le champ “AffichageDate.1” à créer:
    this.getField(“AffichageDate.1”).value=util.printd(“HH-MM-ss”,hd);
    this.getField(“AffichageDate.1″).userName=”Heure au format hh-mm-ss”;

    Créer une date et l’afficher dans le champ “AffichageDate.3” à créer:
    hdo=new Date();
    hdo.setFullYear(2010);
    hdo.setMonth(11);
    hdo.setDate(1);
    hdo.setHours(12);
    hdo.setMinutes(30);
    ddo=util.printd(“dd-mmmm-yyyy”,hdo);
    this.getField(“AffichageDate.3”).value=”Le “+ddo+” à “+util.printd(“HH-MM”,hdo);
    this.getField(“AffichageDate.3″).userName=”Format libre”;

    //calculer la différence entre deux dates:
    debut=util.printd(“dd-mm-yy”,hdo);
    fin=util.printd(“dd-mm-yy”,hd);
    console.println(“Calcul d’un intervalle de temps du “+debut+” au “+fin);
    delta=(hd.valueOf()-hdo.valueOf())/1000/60/60/24;
    console.println(“Intervalle de temps en jours : “+delta);
    this.getField(“AffichageDate.4”).value=”Nombre de jours=”+delta;
    this.getField(“AffichageDate.4″).userName=”En jours”;
    //pour mémoire:
    semaine=1000*60*60*24*7;

    A vous de jouer…

    en réponse à : Automatisation dans Acrobat. – RÉPONDU #53692
    alex
    Participant

    J’ai légèrement modifié, puis placé ce script dans un bouton du document joint:
    //Pour retrouver la liste des menus disponibles dans son contexte de travail:
    menuItems=app.listMenuItems();
    //Pour visualiser les éléments du tableau menuItems dans la console:
    console.clear();
    index=0;
    while(index{
    console.println(menuItems[index])
    index=index+1;
    }
    //ouvrir la console par script…
    console.show();
    Il faut un peu d’habitude pour retrouver le nom des menus et beaucoup ne supportent pas app.execMenuItem() mais ça permet de voir ce qui est disponible sous Acrobat et sous Adobe Reader (ne pas oublier d’autoriser l’execution du JavaScript dans les préférences de l’application).

    [attachment deleted by admin]

    en réponse à : Automatisation dans Acrobat. – RÉPONDU #53690
    alex
    Participant

    Bonjour à tous,
    Au niveau d’un batch ou d’un script d’application la commande suivant étend les droits pour Adobe Reader :

    app.execMenuItem(“DIGSIG:UBDoc”);
    D’une manière générale il est possible d’exécuter par script  une commande de menu d’Acrobat.
    Pour retrouver la liste des menus disponibles dans son contexte de travail:
    menuItems=app.listMenuItems();
    Pour visualiser les éléments du tableau menuItems dans la console:

    console.clear();
    index=0;
    while(index{
    console.println(menuItems[index]))
    index=index+1;
    }

    alex
    Participant

    C’est ce que je faisais dans les anciennes versions (aucun format prédéfini et un code de mise en forme associé au calcul) mais puisque le format est désormais proposé, je voulais l’utiliser.
    Merci quand même, bug avéré donc.

    alex
    Participant

    Oui, très bonne idée, je vais chercher de ce côté là, d’autant plus que j’ai des outils de tests d’Acrobat US installés en ce moment.
    Merci pour ta réponse et à suivre.

Affichage de 99 réponses de 199 à 297 (sur un total de 603)