Toutes mes réponses sur les forums
-
AuteurRéponses
-
alex
ParticipantBonsoir,
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]
alex
ParticipantOoops,
Effectivement, la correction n’était pas faite.[attachment deleted by admin]
alex
ParticipantDans 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]
alex
ParticipantBonjour,
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”
alex
ParticipantGeorge, merci à vous pour ce retour et n’hésitez pas à poser vos questions même si vous vous en tirez fort bien seul.
Cordialement,
Alex20 novembre 2013 à 10:47 en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55949alex
ParticipantLa 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”)20 novembre 2013 à 10:22 en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55947alex
ParticipantDé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!
20 novembre 2013 à 10:19 en réponse à : Envoyer les données dans un tableau structuré. – RÉPONDU #56201alex
ParticipantBonjour,
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 .
20 novembre 2013 à 09:37 en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55945alex
ParticipantBonjour,
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]
18 novembre 2013 à 08:00 en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55942alex
ParticipantBonjour,
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]
15 novembre 2013 à 17:01 en réponse à : Enregistrement PDF Reader Extended pas accessible sous Acrobat X. – RÉPONDU #56237alex
ParticipantBonsoir,
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.15 novembre 2013 à 16:48 en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55940alex
ParticipantQuand 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.14 novembre 2013 à 15:33 en réponse à : Envoyer les données dans un tableau structuré. – RÉPONDU #56197alex
ParticipantOn 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 !alex
ParticipantVoilà 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]
14 novembre 2013 à 15:13 en réponse à : Insertion automatique d’un N° code de A-0001 à A-1000 etc – RÉPONDU #56229alex
ParticipantVoilà 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]
14 novembre 2013 à 11:02 en réponse à : Insertion automatique d’un N° code de A-0001 à A-1000 etc – RÉPONDU #56227alex
ParticipantBonjour,
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…. ?14 novembre 2013 à 10:26 en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55936alex
ParticipantLe 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 !
alex
ParticipantMerci 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]
8 novembre 2013 à 18:12 en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55932alex
ParticipantDans 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.8 novembre 2013 à 11:20 en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55927alex
ParticipantPour 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]
8 novembre 2013 à 09:03 en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55923alex
ParticipantNon, 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]
7 novembre 2013 à 14:52 en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55921alex
ParticipantPour 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]
7 novembre 2013 à 10:18 en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55914alex
ParticipantBonjour à 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]
29 octobre 2013 à 11:10 en réponse à : Calculer la différence en année et mois entre deux dates. – RÉSOLU #56132alex
ParticipantBonjour,
C’est assez complexe, voyez mon exemple où le script de calcul est lancé par le bouton.
[attachment deleted by admin]
alex
ParticipantBonjour,
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]
alex
ParticipantBonjour,
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]
21 octobre 2013 à 15:07 en réponse à : Interdire valeur si supérieure à la valeur entrée dans autre champ. – RÉSOLU #56095alex
ParticipantBonjour,
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]
alex
ParticipantTu 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.alex
ParticipantC’est un script de document. Encore faut-il qu’un évènement quelconque le lance! L’ouverture de la première page par exemple.
alex
ParticipantPour 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]
alex
ParticipantJe 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é….16 octobre 2013 à 11:29 en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55899alex
ParticipantMerlin,
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.alex
ParticipantC’est assez trivial mais ça marche !
alex
ParticipantVoici 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]
16 octobre 2013 à 10:07 en réponse à : Comptabiliser le nombre de caractère dans un PDF. – RÉPONDU #55963alex
ParticipantCi-joint variante à la version précédente. Bonne journée à tous.
[attachment deleted by admin]
16 octobre 2013 à 09:42 en réponse à : Comptabiliser le nombre de caractère dans un PDF. – RÉPONDU #55962alex
ParticipantCi-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]
alex
ParticipantOui, il faut alors définir un tableau contenant ces données. Exemple demain, car je dois m’absenter.
Bonne soirée.15 octobre 2013 à 14:09 en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55894alex
ParticipantJe vais voir ça mais pas ce soir , désolé. J’ai une idée.
alex
ParticipantVoilà, tout se joue dans l’onglet Format de la liste déroulante (Script de touche personnalisé).
[attachment deleted by admin]
alex
ParticipantJe vous envoie une petite maquette d’ici 30 minutes.
alex
ParticipantOui.
15 octobre 2013 à 13:35 en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55892alex
ParticipantVoici 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]
15 octobre 2013 à 12:16 en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55888alex
ParticipantBonjour à tous,
Je vous poste sur ce formulaire un exemple avec un seul fichier de données dans les heures qui viennent…15 octobre 2013 à 10:10 en réponse à : Attribution de script sur bouton via les terminaisons de nom. – RÉSOLU #55976alex
ParticipantOn 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;
}4 octobre 2013 à 10:39 en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55856alex
ParticipantBonjour 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.4 octobre 2013 à 10:27 en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55854alex
ParticipantPour 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]
4 octobre 2013 à 09:22 en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55849alex
ParticipantBonjour à 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]
27 juin 2013 à 09:00 en réponse à : Heure également contrôlé par un autre checkbox. – RÉPONDU #55251alex
ParticipantJe 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….
26 juin 2013 à 06:37 en réponse à : Heure également contrôlé par un autre checkbox. – RÉPONDU #55245alex
ParticipantBonjour,
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.21 juin 2013 à 16:32 en réponse à : Ouverture de PDF en pièce jointe à une page précise. – RÉPONDU #55213alex
ParticipantVoici 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]
21 juin 2013 à 12:07 en réponse à : Ouverture de PDF en pièce jointe à une page précise. – RÉPONDU #55207alex
ParticipantEt 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.alex
ParticipantOui, 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);21 juin 2013 à 08:15 en réponse à : Bouton permettant de copier dans le presse-papier contenu d’un champs. – RÉSOLU #55186alex
ParticipantPour 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 ““;
?>
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.alex
ParticipantVoici 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]
19 juin 2013 à 12:35 en réponse à : Bouton permettant de copier dans le presse-papier contenu d’un champs. – RÉSOLU #55185alex
ParticipantIl 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 ..19 juin 2013 à 09:58 en réponse à : Bouton permettant de copier dans le presse-papier contenu d’un champs. – RÉSOLU #55183alex
ParticipantDommage, 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…
18 juin 2013 à 18:21 en réponse à : Bouton permettant de copier dans le presse-papier contenu d’un champs. – RÉSOLU #55181alex
ParticipantOn 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).
18 juin 2013 à 18:17 en réponse à : Afficher/masquer de champs suivants un champs total. – RÉSOLU #55165alex
ParticipantCi-joint exemple de base à la manière de @jsamica (pas de champs pdg pour moi).
[attachment deleted by admin]
18 juin 2013 à 18:10 en réponse à : Afficher/masquer de champs suivants un champs total. – RÉSOLU #55164alex
ParticipantExact ! 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;
}18 juin 2013 à 17:52 en réponse à : Afficher/masquer de champs suivants un champs total. – RÉSOLU #55162alex
ParticipantTu 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]
18 juin 2013 à 17:37 en réponse à : Afficher/masquer de champs suivants un champs total. – RÉSOLU #55160alex
ParticipantVoici 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]
alex
ParticipantBonjour à 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
ParticipantPour 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();28 février 2013 à 17:08 en réponse à : Vérification des champs obligatoires avant envoi d’un formulaire. – RÉSOLU #54684alex
ParticipantPour 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);
}19 février 2013 à 16:26 en réponse à : Quel logiciel utiliser pour un formulaire dynamique et interactif ? – DISCUSSION #54311alex
ParticipantPour 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).alex
ParticipantVoir 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]
alex
ParticipantBonjour jeffe 52,
Il faut sans doute utiliser un menu déroulant et pas la zone de liste…[attachment deleted by admin]
8 février 2013 à 18:50 en réponse à : Plusieurs connecteurs logiques à la suite dans un même script. – RÉSOLU #54549alex
ParticipantSi 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]
alex
ParticipantBonjour à 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]
23 janvier 2013 à 16:39 en réponse à : Reader 7 et javascript : faire pivoter une page. – RÉPONDU #54444alex
ParticipantIl 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.
5 janvier 2013 à 18:05 en réponse à : Problème d’orientation des champs de formulaire. – RÉPONDU #54193alex
ParticipantCe 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]
alex
ParticipantMême chose que précédemment, la date limite est définie par les paramètres jour, mois, année…
[attachment deleted by admin]
alex
ParticipantPour 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]
18 décembre 2012 à 16:13 en réponse à : Copier les données de plusieurs champs texte dans d’autres. – RÉSOLU #54116alex
ParticipantLa 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.
4 décembre 2012 à 18:07 en réponse à : Lier les choix possible d’une liste déroulante à une deuxième. RÉSOLU #50511alex
ParticipantOui, 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…
29 novembre 2012 à 14:42 en réponse à : Differences Acrobat pro X et Acrobat pro XI ? – RÉPONDU #54062alex
ParticipantVous 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.
29 novembre 2012 à 14:29 en réponse à : Insertion obligatoirement différentes de valeurs. – RÉSOLU #54059alex
ParticipantBonjour,
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]
15 novembre 2012 à 20:03 en réponse à : Intéractivité entre tableau et graph dans un PDF. – RÉSOLU #53936alex
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…15 novembre 2012 à 17:37 en réponse à : Intéractivité entre tableau et graph dans un PDF. – RÉSOLU #53933alex
ParticipantOui, il faut t’intéresser au groupe dit des “tontons flexeurs”:
http://groups.adobe.com/group/50415 novembre 2012 à 16:59 en réponse à : Intéractivité entre tableau et graph dans un PDF. – RÉSOLU #53931alex
ParticipantUne 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]
alex
ParticipantEn 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 !
alex
ParticipantLes 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?alex
ParticipantJ’aimerais beaucoup avoir un exemple où la logique du & soit mise en défaut avec des expressions logiques…
20 octobre 2012 à 15:11 en réponse à : Reader XI et les Modèles (Templates). – INFORMATION / DISCUSSION #53818alex
ParticipantCe lien ne fonctionne pas…
20 octobre 2012 à 15:10 en réponse à : Afficher/Masquer une deuxième page d’un PDF. – RÉPONDU #53807alex
ParticipantEffectivement, 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….
alex
ParticipantPour 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.20 octobre 2012 à 13:18 en réponse à : Afficher/Masquer une deuxième page d’un PDF. – RÉPONDU #53805alex
ParticipantPour 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 ?20 octobre 2012 à 10:22 en réponse à : Afficher/Masquer une deuxième page d’un PDF. – RÉPONDU #53799alex
ParticipantRé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.20 octobre 2012 à 10:12 en réponse à : Afficher/Masquer une deuxième page d’un PDF. – RÉPONDU #53798alex
ParticipantC’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;
}20 octobre 2012 à 09:55 en réponse à : Afficher/Masquer une deuxième page d’un PDF. – RÉPONDU #53796alex
ParticipantCi-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]
alex
ParticipantPetite 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 ?
alex
ParticipantSi 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.12 octobre 2012 à 21:21 en réponse à : Comment sauvegarder les questionnaires remplis sur iPad ? – RÉPONDU #53392alex
ParticipantAvec 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!).alex
ParticipantQui 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.alex
ParticipantQuelques 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…
alex
ParticipantJ’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]
alex
ParticipantBonjour à 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;
}19 septembre 2012 à 09:06 en réponse à : Affichage des nombres… : discussion : bug ? problème ? – DISCUSSION #53554alex
ParticipantC’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.18 septembre 2012 à 13:15 en réponse à : Affichage des nombres… : discussion : bug ? problème ? – DISCUSSION #53550alex
ParticipantOui, 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. -
AuteurRéponses