Toutes mes réponses sur les forums
-
AuteurRéponses
-
1 avril 2011 à 16:37 en réponse à : Bloquer la saisie d’un champ en fonction de la valeur du bouton radio #51589alexParticipant
On ne va pas vous laisser tomber… Lundi vous aurez une petite maquette.
alexParticipantJ’ai écris ces codes à la volée, sans tester, il est donc assez normal qu’il y ait des erreurs.
Utilisez-vous bien le bon “Machine à souches.pdf”?Je ferai à partir de cette ébauche une application mixte (souches et tickets) qu’on pourrait peut-être intégrer à abracadabraTool avec la bénédiction de Merlin, car apparemment, vu le nombre de téléchargements, ça intéresse du monde.
Attention: il n’est pas possible, dans cette application, de dupliquer des codes bar avec des contenus variables.
alexParticipantEdition des souches:
Voilà le script de l’application:
3-Le script machinesouches.js à intégrer dans le répertoire JavaScript.L’extension .jpg doit être remplacée par .js
Nota:
Le nombre de tickets par souche est un paramètre fixé à 10 en début de ce script.
C’est le maximum que je puisse faire dans le cadre de ce forum.[attachment deleted by admin]
alexParticipantEdition des souches:
Voilà le second à adapter (ne pas changer les noms des champs)
2-La page PageMasterSouche.pdf qui embarque la maquette des souches (3 dans mon exemple).[attachment deleted by admin]
alexParticipantEdition des souches:
Pour réaliser ça, il faut tout reprendre, ce que j’ai fait:
1-Le document de paramétrage “Machine à souches”
2-La page PageMasterSouche.pdf qui embarque la maquette des souches (3 dans mon exemple).
3-Le script machinesouches.js à intégrer dans le répertoire JavaScript.
Voici le premier élément.[attachment deleted by admin]
31 mars 2011 à 16:52 en réponse à : Bloquer la saisie d’un champ en fonction de la valeur du bouton radio #51586alexParticipantChef Merlin, ou tu abuses du rosé de Provence, ou tu as été abusé par la formulation incorrecte d’asengs:
L’objet “bouton radio” se compose d’un ensemble d’occurences auxquelles tu peux associer autant de valeurs…
Quand nous aurons compris le problème, nous proposerons un script.alexParticipantDans le script du fichier machinebillets.js, lignes 56 à 69 on a:
Numero=(indexpage-1)*UnitesParPage+indexchamp;
Marque=Numero;
if(Numero<10000){Marque="0"+Numero;}
if(Numero<1000){Marque="00"+Numero;}
if(Numero<100){Marque="000"+Numero;}
if(Numero<10){Marque="0000"+Numero;}
NouveauNomChamp=”Num”+Numero;
this.addField(NouveauNomChamp,”text”,indexpage,rectangle[indexchamp]);
this.getField(NouveauNomChamp).value=Numero;
NouveauNomChampCB=”Codebar”+Numero;
this.addField(NouveauNomChampCB,”text”,indexpage,rectangleCB[indexchamp]);
this.getField(NouveauNomChampCB).value=Numero;
this.getField(NouveauNomChampCB).borderColor=color.transparent;
this.getField(NouveauNomChampCB).textColor=color.gray;Il faut faire un nouveau calcul au niveau indiqué ici en notatnt que:
-indexpage est le rang de la page (0 à this.numPages)
-indexChamp est le rang du champ dans la page (de 0 à UnitesParPage)
-Numero est le rang du ticket calculé ligne 56
Je suis passé par la variable Marque qui ajoute des 0 au numéro pour que l’on affiche toujours le numéro avec 5 digits…Numero=(indexpage-1)*UnitesParPage+indexchamp;
Marque=Numero;
if(Numero<10000){Marque="0"+Numero;}
if(Numero<1000){Marque="00"+Numero;}
if(Numero<100){Marque="000"+Numero;}
if(Numero<10){Marque="0000"+Numero;}
NouveauNomChamp=”Num”+Numero;
this.addField(NouveauNomChamp,”text”,indexpage,rectangle[indexchamp]);
//Nouveau calcul de la valeur du champs ici
ValeurDuChamp=………………..;
this.getField(NouveauNomChamp).value=ValeurDuChamp;
//Fin du nouveau calcul
NouveauNomChampCB=”Codebar”+Numero;
this.addField(NouveauNomChampCB,”text”,indexpage,rectangleCB[indexchamp]);
this.getField(NouveauNomChampCB).value=Numero;
this.getField(NouveauNomChampCB).borderColor=color.transparent;
this.getField(NouveauNomChampCB).textColor=color.gray;Mais je n’ai pas compris quel calcul faire…. A la session de rattrapage, peut-être?
Sur Mac, comme beaucoup de gens, je travaille avec Eclipse, parfois avec TextWrangler même si c’est un peu lourd pour le JavaScript. Je vais essayer TextMate que je ne connais pas.
Bonne soirée à tous.alexParticipantEt oui, il faut que la page MASTER soit conforme au paramétrage (nombre de tickets par page)! Je ne teste ces choses là que pour des versions professionnelles.
En ce qui concerne l’insertion de numéros calculés, il faut enter dans le script et modifier la valeur du contenu du champ en fonction de la page et du numéro de ticket. Je ne connais pas assez votre problématique pour vous aider.alexParticipantBonjour,
Quelle version d’Acrobat PRO utilisez-vous ?
Sur Mac ou Pc?
Avez-vous modifié le script initial ?
Le message que vous avez (trustedcreationtickets is not defined) provient du fait que le plug in n’est pas installé correctement et la fonction trustedcreationtickets ne peut être appelée.
Dans la console, on devrait voir une trace de cette installation, ici on ne voit rien.alexParticipantVoici le script qui gère l’affichages des champs associés aux calques (exemple sur le ftp)
La fonction GestionChamps2 est une fonction de document est lancée en ouverture de page 2.
Trois phases:
1-On affiche tous les champs.
2-On masque tous les champs associés aux calques (noms commençant par FOCH,DVL,BCT…)
3-On affiche les champs associés au calque sélectionné.En fait, la gestion manuelle des boutons radios ne sert à rien si on respecte bien le nommage des champs.
function GestionChamps2()
{
//Gestion des champs
console.clear();
choix=this.getField(“Choix amphi”).valueAsString;
console.println(“Valeur du bouton radio=”+choix);
//Affichage de tous les champs
indexField=0;
while(indexField{
nom=this.getNthFieldName(indexField);
this.getField(nom).hidden=false;
indexField=indexField+1;
}
//Masquage des champs associés aux calques
indexField=0;
while(indexField{
nom=this.getNthFieldName(indexField);
if(nom.substring(0,4)==”FOCH”|nom.substring(0,3)==”DVL”|nom.substring(0,3)==”BCT”|nom.substring(0,3)==”COM”|nom.substring(0,3)==”MOD”)
{
//Masquage
this.getField(nom).hidden=true;
console.println(“Le champ “+nom+” est masqué.”)
}
indexField=indexField+1;
}
//Affichage des champs liés au calque retenu.
indexField=0;
while(indexField{
nom=this.getNthFieldName(indexField);
if(nom.substring(0,choix.length)==choix)
{
//Masquage
this.getField(nom).hidden=false;
console.println(“Le champ “+nom+” est affiché.”)
}
indexField=indexField+1;
}
//console.show();
}alexParticipantJe reviens sur mon post précédant. Pour limiter l’affichage des champs de saisie à ceux du calque sélectionné, il faut les nommer de telle manière qu’un script puisse les discriminer, comme suit:
Noms commençant par FOCH-, ne seront affichés que si le calque FOCH est activé.
Noms commençant par DVL-, ne seront affichés que si le calque DVL est activé.
Noms commençant par BCT-, ne seront affichés que si le calque BCT est activé.
Noms commençant par COM-, ne seront affichés que si le calque COM est activé…
ainsi que MOD- et AM-
Tous les autres champs sont visibles.
Puis ajouter un script à l’ouverture de la seconde page.alexParticipantOn pourrait ajouter au script précédant quelques lignes de code pour masquer les champs parasites associés aux calques non visualisés.
Eh oui, les templates, c’est fini depuis Reader 8…Il est donc judicieux d’associer des champs et des calques (avec AcroForm)alexParticipantMon script est une “rustine”, il faudrait voir pourquoi l’état des calques n’est pas conservé après enregistrement…
Merlin, une idée ?alexParticipantPlacez ce script en ouverture de page de votre formulaire:
//Réactivation des calques sélectionnés
console.clear();
console.println(“Valeur du bouton radio=”+this.getField(“Choix amphi”).value);
//Récupération des calques de la page 2
ocgArray=this.getOCGs(1)
index=0;
while(index{
//Recherche des calques ayant pour nom, la valeur du bouton radio et “page base”
if(ocgArray[index].name==this.getField(“Choix amphi”).value|ocgArray[index].name==”page base”)
{
ocgArray[index].state=true;
console.println(ocgArray[index].name+” activé.”);
}
else
{
ocgArray[index].state=false;
console.println(ocgArray[index].name+” désactivé.”);
}
index=index+1;
}
//console.show();J’ai aussi déposé votre formulaire sur le ftp avec cette correction. Ctrl-J ou Pomme-J permet d’ouvrir la console et de voir le fonctionnement.
alexParticipantEffectivement, votre formulaire devrait fonctionner en l’état ! Je viens de reproduire votre problème. Je vais vous faire un script d’ouverture qui, en fonction de la case cochée réactive le calque correspondant.
alexParticipantJ’ai bien reçu ce formulaire.
Je suppose que vous souhaitez ne visualiser qu’un calque à la fois et dans ce cas, pourquoi n’avoir pas opté pour un bouton radio (un choix unique parmi les 5) ?
Si vous me confirmez ça, je remplacerai les cases à cocher par un bouton radio (ayant l’aspect d’une case à cocher) et l’action d’activation de calque par un script qui n’agira que le calque qui vous intéresse en désactivant les autres. Lors de l’enregistrement de votre formulaire, seul le calque retenu sera activé à condition que vous preniez garde de bien activer les “Reader Extensions” (Options avancées>Etendre les fonctions D’Adobe Reader si vous êtes sur Acrobat 8 ou 9). J’attend votre réponse.alexParticipantRegardez bien sur ce forum, nous avons déjà pas mal de choses concernant l’utilisation des calques, y compris les manipulations par JavaScript…
Mais envoyez votre maquette, tout ira plus vite..car je n-ai pas vraiment compris le problème!10 mars 2011 à 09:07 en réponse à : Protéger / dé-protéger un champ de texte de l’écriture. – RÉSOLU #51519alexParticipantBonjour, voici une autre manière d’écrire le script (une seule ligne, pas de test!):
//On change le statut du groupe à partir de celui d’une occurence:
this.getField(“Theme”).readonly = !this.getField(“Theme.0”).readonly ;
C’est le point d’exclamation qui fait tout le travail!!!!alexParticipantC’est normal, ce script est un script associé à l’application Acrobat, il pourrait sans doute être adapté au traitement par lot
3 mars 2011 à 14:43 en réponse à : Remplir automatiquement formulaire pdf à partir de données excel #51491alexParticipantNous sommes d’accord, 150 $ c’est plus avantageux que 2 jours de travail, mais peu pédagogique. Bonne continuation….
alexParticipantVu avec Merlin… Nous allons effectivement réintégrer un outil de découpage dans AbracadabraTool X.
2 mars 2011 à 20:04 en réponse à : Remplir automatiquement formulaire pdf à partir de données excel #51489alexParticipantCet outil (payant) fonctionne comme je l’ai mentionné plus haut (solution 1 : lien ODBC, requêtes SQL vers la base et édition des formulaires et ce uniquement sur Pc pour les raisons que j’ai évoqué).
Il a l’énorme avantage d’être prêt à l’emploi… là où il faudrait un à deux jours pour le recréer…
Attention, la version démo a une durée de 30 jours et n’active pas les Reader Extensions.alexParticipantJe crois qu’il serait bon d’intégrer à abracadabraTool X un outil d’extraction plus élaboré que les actions basiques d’extraction d’Acrobat… Reste à voir quelles fonctionnalités… Les deux scripts que j’ai proposé ci-dessus peuvent être une base pour la version compatible avec Acrobat X.
alexParticipantAvant de lancer le script de découpage, régler les préférences d’Acrobat PRO comme indiqué dans ce document.
[attachment deleted by admin]
alexParticipant1-Intégrer le script d’application (fourni ici après avoir changé l’extension .gif en .js):
Script à utiliser avec Acrobat PRO 8,9,10 et à intégrer comme suit:
Placement du script dans le répertoire JavaScript d’Acrobat sur PC à partir du bureau:
C:/Programme/Adobe/Acrobat9.0/Acrobat/Javascript
Placement du script dans le répertoire JavaScript d’Acrobat sur Mac, à partir du bureau:
Aller>Applications>Adobe Acrobat 9 Pro>Adobe Acrobat Pro.app>
Ctrl Clic > Afficher le contenu du paquet>Contents>MacOS>JavaScripts
2-Régler les préférences d’Acrobat (voir document joint, preferencesJS.pdf)
3-Ouvrir le document à traiter. Un nouvel item de menu apparaît dans le menu Document>Outils extraction>Extraction de toutes les pages.[attachment deleted by admin]
alexParticipantVous pouvez télécharger la version d’essai d’Acrobat PRO d’une durée d’un mois,c’est gratuit, ainsi vous aurez largement le temps nécessaire à votre opération de découpage…
http://acrobat.buy.fr.sem.adobe.com/content/a10_pro?sdid=IATYJ
…alexParticipantSi vous avez Acrobat PRO, un petit script adapté à votre problème fera l’affaire. Nous avons déjà traité un problème équivalent très recemment (PDF et Acrobat>extraction de fichiers pdf). Je vous fait ça comme contribution à la cause d’Hegalaldia.
Si vous n’avez pas Acrobat PRO, l’affaire se corse.
Quelle est votre situation?25 février 2011 à 10:30 en réponse à : Remplir automatiquement formulaire pdf à partir de données excel #51484alexParticipantLe lien vers la note technique étant rompu, voici les informations nécessaires à l’activation de la connexion ODBC sur PC:
ADBC Support
Acrobat Database Connectivity (ADBC) can now be turned on and off via a registry setting.
To activate ADBC, create a registry key of type DWORD with the name “bJSEnable” and a value of “true” (1) in the following location:
HKEY_CURRENT_USERSOFTWAREAdobeAdobe Acrobat8.0ADBC
This activates ADBC in Acrobat 8.0. In previous releases of Acrobat, ADBC was active by default.
In Acrobat 8.0, this setting has been changed to require user intervention to activate ADBC because most users do not want to have ADBC accessible from PDF.
Windows shell command to activate ADBC:
reg add “HKEY_CURRENT_USERSOFTWAREAdobeAdobe Acrobat8.0ADBC” /v bJSEnable /t REG_DWORD /d 1Bon courage.
25 février 2011 à 10:14 en réponse à : Remplir automatiquement formulaire pdf à partir de données excel #51483alexParticipantVoici un exemple de connexion fourni par PlanetPDF:
http://www.planetpdf.com/developer/article.asp?ContentID=6088Qu’il s’agisse de données provenant d’une table Excel ou Access, le principe est le même.
25 février 2011 à 09:45 en réponse à : Remplir automatiquement formulaire pdf à partir de données excel #51481alexParticipantLes solutions:
1-Sur Acrobat, avec du JavaScript:
Sur Pc uniquement, il est possible d’automatiser le processus en utilisant l’objet ADBC d’Acrobat et en le connectant directement à Excel.
Une requête SQL remplirait chaque formulaire. Il faudrait pour cela développer un script au niveau de l’application Acrobat qui travaillerait en contexte privilégié. pour effectuer les tâches suivantes:
a-Formulaire ouvert.
b-Connexion ODBC active
c-Pour chaque item:
c1-Requête des données item ( requeteSQL=”SELECT * FROM Table “; )
c2-Remplissage formulaire (une série de this.getField(“Champxx”).value=rowData[Champxx]; )
c3-Enregistrement du formulaire sous un nom propre à l’enregistrement (à définir).
Nota: pour rendre l’objet ADBC actif dans Acrobat, il faut modifier une clé de registre. J’en ai déjà parlé ici.2-Sur un serveur Web avec un programme pHp associé à une base de données mySQL
a-Importer le fichier Excel dans la base mySQL (attention auformat des dates).
b-associer une classe pHp permettant de créer du pdf (par exemple FPDF si du PDF texte à plat convient)
c-écrire un programme pHp effectuant pour chaque item les mêmes fonctionalités que le script JavaScript ci-dessus (c1,c2,c3)Je ne peux pas faire ça dans le cadre de ce forum. Désolé.
alexParticipantPas du tout, la version X sera unique et compatible avec les versions 8,9,X d’Acrobat. Seule différence avec ce que vous avez expérimenté, ll’item de lancement du script sera accroché au menu “Edition”, sous-menu “Outils Extraction”. D’autre items pourraient être ajoutés pour d’autres applications voisines ou le paramétrage.
alexParticipantMerlin est en train de tester une version Acrobat X qu’il mettra en ligne dès que possible.
alexParticipantVoici le script avec une extension .gif à changer en .js avant de le placer dans le répertoire de l’application.
[attachment deleted by admin]
alexParticipant1-Intégrer le script d’application (fourni dans le post suivant):
Script à utiliser avec Acrobat PRO 8,9,10 et à intégrer comme suit:
Placement du script dans le répertoire JavaScript d’Acrobat sur PC à partir du bureau:
C:/Programme/Adobe/Acrobat9.0/Acrobat/Javascript
Placement du script dans le répertoire JavaScript d’Acrobat sur Mac, à partir du bureau:
Aller>Applications>Adobe Acrobat 9 Pro>Adobe Acrobat Pro.app>
Ctrl Clic > Afficher le contenu du paquet>Contents>MacOS>JavaScripts
2-Régler les préférences d’Acrobat (voir document joint, preferencesJS.pdf)
3-Ouvrir le document à traiter. Un nouvel item de menu apparaît dans le menu Document>Outils extraction>Extraction.
On peut choisir la page de coupe et le nom des deux fichiers résultants.Pour les curieux, ouvrir la console.
[attachment deleted by admin]
alexParticipantPour que ce soit automatisé, il faut développer un script au niveau de l’application Acrobat (car il faut travailler en contexte privilégié pour effectuer les extractions et recréer des documents). Le mieux serait d’ajouter un outil à abracadabraTool. Je vais préparer une maquette à utiliser avec les versions 8,9,X, mais il faudra patienter jusqu’à lundi pour cause de surbooking JavaScript.
14 février 2011 à 13:21 en réponse à : Copier les données d’un champ texte dans un champ en lecture seule. RÉSOLU #51419alexParticipantLe texte cible est mis à jour à chaque saisie du texte source, ici avec correction d’un petit bug de la version précédante (retard d’un digit à l’affichage).
[attachment deleted by admin]
13 février 2011 à 18:52 en réponse à : Copier les données d’un champ texte dans un champ en lecture seule. RÉSOLU #51417alexParticipantUne petite variante pour le fun et illustrer la gestion d’évènements dans Acrobat…
[attachment deleted by admin]
alexParticipantQuelques remarques:
1-Les différentes occurences du champ “uniteauto” embarqueront nécessairement la même valeur, c’est la raison pour laquelle mon script crée des champs de nom différents.
2-Comme le script doit créer des pages et des champs, il doit fonctionner dans un contexte privilégié, c’est à dire au niveau de l’application Acrobat (répertoire JavaScript), ou dans un document édité avec certificat. J’ai choisi un script d’application car c’est plus simple à comprendre.
3-Un autre solution différente de celle que je propose et reprenant une (très petite) partie de votre script, serait sans doute créer un batch qui incrémenterait les numéros et lancerait une impression (à plat) de billets page par page.
4-var a = rPage; ça c’est nouveau en JavaScript! Pour passer de la page en cours à la page suivante:
this.pageNum=this.pageNum+1;
5-Nbre de pages/Nbre de tickets:Le must serais de créer un champs où remplir le nombre de page désiré en fonction du nombre de ticket (mais ça… je ne sais pas faire, d’où l’intérêt de ce post)
C’est ce que fait la page PageMaster.pdf.
6-Dans ma maquette, on peut sans doute changer le numéro du ticket de départ,il faudrait le mettre en paramètre dans la PageMaster.pdf
7-Pour réduire la taille d’un fichier pdf afin de le joindre à un post, c’est simple et bien expliqué sur se site.Mon conseil: partez de ma maquette…
alexParticipantAssurez-vous du paramétrage des préférences pour l’exécution des scripts JavaScript.
Voir image jointe.[attachment deleted by admin]
alexParticipantRécapitulatif du mode d’emploi à suivre attentivement:
Vous devez disposer de deux fichiers .pdf dans le répertoire Billeterie et d’un script JavaScript “MachineCreationTickets.js” au niveau de l’application Acrobat.
Il vous faut Acrobat 8 PRO minimum.
Pour créer vos billets (tickets), ici dans le cas de trois billets par page:
1-Créer un document PageMaster.pdf à partir de InDesign (maquette de 3 billets), avec 3 champs placés là où vous souhaitez voir apparaître les numéros, baptisés Numero_1,Numero_2,Numero_3.
Placez ce document dans le répertoire Billeterie, peu importe où ce répertoire a été créé. En effet , dans le script, le chemin est relatif. cPath:”PageMaster.pdf”
2-Placez le document joint “Machine à tickets.pdf” dans le répertoire Billeterie.
3-Placez le script ci-dessous “MachineCreationTickets.js” dans le répertoire JavaScript d’Acrobat.
4-Ouvrir “Machine à tickets.pdf” avec Acrobat PRO, choisir le nombre de tickets par page à l’aide du menu déroulant, puis le nombre de tickets total.
5-Presser le bouton “1-Création tickets” pour générer les pages, répondre OK à l’alerte “Tous les champs de formulaire dotés du même nom…”, puis presser “2-Numérotation” pour numéroter les billets.
Voilà la maquette du PageMaster.pdf.
Placement du script dans le répertoire JavaScript d’Acrobat sur PC:
C:/Programme/Adobe/Acrobat9.0/Acrobat/Javascript
Voilà la maquette du PageMaster.
Placement du script dans le répertoire JavaScript d’Acrobat sur Mac:
Aller>Applications>Adobe Acrobat 9 Pro>Adobe Acrobat Pro.app>
Ctrl Clic > Afficher le contenu du paquet>Contents>MacOS>JavaScripts15 janvier 2011 à 08:01 en réponse à : Problème affichage par défaut du champ calcul dans un formulaire #51350alexParticipantAu bout de 10 versions, Adobe découvre qu’il a des clients en Europe ! Plaisanterie à part, il est beaucoup moins drôle de se voir privé de lancer des scripts sur saisie de caractère dès lors qu’on a opté pour un format! Pour moi, je ne change pas mes habitudes, je gère moi-même les formats!
alexParticipantJe doute qu’il soit possible de contrôler l’état d’affichage des formulaires appelés depuis un document Acrobat, même si les utilisateurs disposent du même navigateur ce qui est souvent le cas en entreprise. J’aimerais beaucoup être contredit sur ce sujet.
Pour ma part, dans ce cas de figure, je fais appel à des formulaires via une interface Web écrite en pHp.Pour info, voici un petit document à connaître, résultats non garantis.
[attachment deleted by admin]
14 janvier 2011 à 18:18 en réponse à : Problème affichage par défaut du champ calcul dans un formulaire #51348alexParticipantC’est à ne rien y comprendre ! Je n’ai pas ce format des nombres avec espace ! A tout hasard, je suis repassé sur la version française d’Acrobat (9.4.1), car je fais mes développements sur la version anglaise et… toujours pas d’espace ! Même chose sur Mac avec Acrobat (9.4.1) aussi. Je ne dispose pas du menu déroulant “Emplacement du symbole:” et pas d’item “Avant avec espace”. Est-en version X ? Je l’ai désinstallée, je ne peux plus faire d’essais.
14 janvier 2011 à 11:19 en réponse à : Problème affichage par défaut du champ calcul dans un formulaire #51346alexParticipantOui, c’est une solution plus simple tant qu’on a pas l’intention de faire plus de calcul en JavaScript.
Par contre il faut supprimer l’appel du script CalculC() lors de la validation des données A et B;
En ce qui concerne le choix du format:
1-Pour les nombres, Acrobat ne propose pas de séparateur de milliers, ce que l’on peut faire par JavaScript.
2-Le choix d’un format nombre interdit l’usage des scripts de touches personnalisé et là, pour moi, c’est un gros handicap.
Je préfère donc ne pas utiliser les formats proposés par Acrobat.14 janvier 2011 à 08:54 en réponse à : Problème affichage par défaut du champ calcul dans un formulaire #51344alexParticipantLors de la validation des champs de saisie ChampA ou ChampB, on lance le script:
CalculC()
Ce script est placé au niveau du document:
Dans ce script, tant que l’un des champs de saisie reste vide, on laisse le champ ChampC vide.
Il faudrait ajouter une analyse de saisie pour s’assurer que A ou B contiennent bien des chiffres ou forcer le format.
Mais faisons simple pour l’instant:
function CalculC()
{
if(this.getField(“ChampA”).value!=””&this.getField(“ChampB”).value!=””)
{
this.getField(“ChampC”).value=this.getField(“ChampA”).value*this.getField(“ChampB”).value;
}
else
{
this.getField(“ChampC”).value=””;
}
}
Pour raffiner on peut placer un script qui s’exécute lors de la saisie des données (on peut remplacer le “Wait” par un blanc) pour ne pas afficher de résultat tant que celle-ci n’est pas terminée. Onglet Format>Catégorie de format Personnalisée>Script de touches personnalisé>
Raz();
Ce script est placé au niveau du document:
function Raz()
{
this.getField(“ChampC”).value=”Wait”
}
Maquette jointe.[attachment deleted by admin]
alexParticipantIl ne suffit pas de placer la fonction au niveau du document, il faut qu’un évènement quelconque la lance. Dans votre cas, c’est l’ouverture de la page choisie par défaut qui pourra le faire (en principe la page 1). Donc, afficher la vignette de la page, clic-droit sur cette vignette ….
Script d’ouverture:
Blocage();
Par ailleurs, pour vous assurer que le script est bien lançé rien de tel que des:
console.println(“Information …”)
que l’on pourra suivre sur la console avec les erreurs à venir…alexParticipantIl faut écrire un script JavaScript de contrôle qui rend les boutons radio actifs ou inactifs (statut readonly) selon leur états respectifs.
Au départ l’état des trois boutons radio doit être fixé, avant saisie.
Pour ma part, j’ai l’habitude d’associer une occurence invisible (avec AcroForm, br1#0 pour la collection br1, br2#0 pour la collection br2, br3#0 pour la collection br3 etc…) à chaque collection de boutons radios et forcer le coche de cette occurence à l’ouverture du document par un script ad’oc.
Si j’ai bien compris, la problèmatique serait:
si on coche un bouton, on ne pourra en cocher qu’un second et pas deux ?
Ou, si deux boutons sont cochés, le dernier ne pourra pas l’être?Attention, je donne des solutions rapides (disons assez rapides) avec AcroForm, avec LiveCycle Designer il faut être patient car je travaille désormais de préférence sur Mac
alexParticipantPour lancer un script à l’ouverture d’une page, afficher les vignettes des pages, clic droit sur la vignette de page:
Propriétés de la page> Onglet Actions>Lancer un script JavaScript>Action Ouverture de page et là coller dans notre cas :
Ouverture();
Qui va lancer ce script.Ci-joint la même chose avec les boutons Pause et Restart…
[attachment deleted by admin]
alexParticipantIl manquait l’action de lancement du script Ouverture() lors de l’ouverture de la page 1.
Les champs de texte et les boutons sont inutiles, je les ai supprimés.
J’espère que ça ne va pas ralentir le TGV que je prends ce soir.
Bon week-end![attachment deleted by admin]
alexParticipantCi-joint la version automatique sur un nombre de pages quelconque…
La version avec un bouton “Démarrer défilement” et un bouton “STOP défilement” sera disponible sous peu.[attachment deleted by admin]
alexParticipantJe vais donc généraliser mon script pour faire défiler N pages.
Il y a deux scripts :
-le premier est déclenché par l’ouverture de la première page:
Ouverture()
Nota:c’est dans ce script que l’on peut choisir la fréquence d’affichage qui n’est pas obligatoirement de 5 sec.
-le second est automatiquement lancé à intervalles fixes par le timer:
CommuterLaPage()
C’est ce script que je dois modifier.
Le script StopTout() n’est utile que pour arrêter le timer.
Ces scripts sont placés au niveau du document (Voir maquette). On y accède de manière différente selon que l’on utilise Acrobat PRO X ou les versions antérieures 7,8,9. Inutile de vous précipiter pour acheter la version X si vous avez la 8 ou la 9…7 janvier 2011 à 17:42 en réponse à : Comment cumuler plusieurs conditions (AND & OR) ? – RÉSOLU #51288alexParticipantCi dessous, quelque chose qui s’approche un peu plus du JavaScript et des objets d’Acrobat pour le bouton Go:
if ((this.getField(“Source”).value==1|this.getField(“Source”).value=)&this.getField(“Telephone”).value ==””)
{
app.alert(“Le champ N° de téléphone du destinataire est obligatoire.rSelon le choix du mode d’expédition demandé, merci de cliquer OK et le préciser, svp”,1)
}
else
{
this.print();
}Je ne suis pas sûr de la logique combinatoire.
J’ai rajouté le champ Telephone qui est requis.
Il faut aussi s’assurer que le contenu du champ Telephone est bien un numéro de téléphone en testant son format.Par ailleurs il faut passer les caractères accentués en unicode sous peine de se faire incendier par les utilisateurs de Mac dont Merlin!
é devient u00E9
N° devient Nu0080Attention à la casse ! En JavaScript this.getfield() n’est pas équivalent à this.getField()
Retour de l’exemple à méditer ci-joint.
Un peu de persévérance, ça viendra ![attachment deleted by admin]
alexParticipantMais pour ce qui est de l’automatisation dans Acrobat… Peut-être qu’avec un JavaScript…?
Oui, il est est possible d’automatiser la réplication de’une page ou d’un groupe de pages à partir d’un script placé au niveau de l’application Acrobat PRO de préférence à un batch.
J’ai déjà donné un exemple sur ce site lors de l’illustration de la duplication de tickets qui a du faire pas mal d’heureux vu le nombre de téléchargements!
http://www.abracadabrapdf.net/forum/index.php?topic=1207.msg5270#msg5270
…alexParticipant1-en respectant la casse sur:
event.willCommit
2-en vérifiant que la case à cocher Onglet Options>”Valider la valeur sélectionnée immédiatement” est cochée
et que le script est bien placé dans Onglet Format>Catégorie de format “Personnalisée”, Script de touches personnalisé.
Il se pourrait que ça marche!
Voir maquette.[attachment deleted by admin]
alexParticipantChaque ouverture de la page 1 relance le chrono:
run=app.setInterval(“CommuterLaPage()”,1000/frequenceCalcul);
Si on veut travailler sur le document sans être incommodé par l’exécution du script CommuterLaPage() on peut l’arrêter par StopTout():
app.clearInterval(run)
Question de confort, c’est tout.6 janvier 2011 à 08:57 en réponse à : Obliger Reader à lire dans mes paramètres système sélectionné ? – RÉSOLU #51287alexParticipantEn ce qui concerne les vidéos incorporées ou non au pdf, on peut partiellement agir sur les paramètres d’affichage (Rendition).
Ces paramètres sont accessibles via JavaScript, il est donc possible de les fixer.
Pour voir quels sont les paramètres concernés, cliquer sur le bouton “Modifier le rendu” et parcourir les onglets.alexParticipantUne solution pour ceux que le code .js intéresse…
Maquette fonctionnelle jointe.
A l’ouverture du document sur la première page, on lance le script Ouverture():
function Ouverture()
{
console.clear();
console.println(“Start timer”)
//Durée de chaque période d’affichage en secondes
periode=5;
//Horloge à la fréquence frequenceCalcul Hz
frequenceCalcul=4;
document=this.event.target;
timer=0;
run=app.setInterval(“CommuterLaPage()”,1000/frequenceCalcul);
}
timer est un chronomètre qui va mesurer le temps écoulé depuis l’ouverture de la première page.
Il ne faut pas demander des fréquences de calcul trop grandes ni espérer obtenir une chronomètre de précision!
A chaque cycle on lance le script CommuterLaPage():
function CommuterLaPage()
{
//calcul temps écoulé à partir de l’ouverture de la page 1
timer=timer+1/frequenceCalcul;
console.println(“timer=”+timer);
if(timer>=periode&document.pageNum==0)
{
document.pageNum=1;
console.println(“Affichage page 2.”)
}
if(timer>=2*periode&document.pageNum==1)
{
document.pageNum=0;
console.println(“Affichage page 1.”)
}
}
Le script StopTout(), lançé par le bouton “Ours Pompom”, arrête le chronomètre tant qu’on ne réouvre pas la page 1.
function StopTout()
{
reponse=app.alert(“Arru00EAter le timer?”,2,2)
if(reponse==4)
{
app.clearInterval(run);
}
}
Tout ça pour afficher une page sur deux à période à peu près constante.
Ouvrir la console pour voir le fonctionnement.[attachment deleted by admin]
3 janvier 2011 à 19:12 en réponse à : Lien intranet pour accéder à un PDF depuis un PDF dans une nouvelle fenêtre #51262alexParticipantLa définition de ton path est probablement incorrecte! Si tes documents se trouvent dans le même répertoire, on peut écrire un petit script qui le fait pour nous… et il ne reste plus qu’à spécifier le nom des fichiers!
alexParticipant1-Remplacer 8501RT75 par x8501RT75
Cette syntaxe rejette les chaînes commençant par des chiffres.
2-Remplacer this.getfield par this.getField
3-Remplacer serie:”VF100000000000001″, par serie1:”VF100000000000001″,
4-Il vaut mieux prévoir un remplissage automatique du menu déroulant et lui associer des tables.
Où est le script d’origine, (j’ai des doutes sur son bon fonctionnement…) ?31 décembre 2010 à 17:33 en réponse à : Lien intranet pour accéder à un PDF depuis un PDF dans une nouvelle fenêtre #51259alexParticipantEt ce n’est pas la première fois qu’on en parle ici !
Bonne année à tous les JavaScripteurs Acrobat !
Bonne année à tous.31 décembre 2010 à 13:51 en réponse à : Lien intranet pour accéder à un PDF depuis un PDF dans une nouvelle fenêtre #51257alexParticipantA propos d’app.opendoc()…
A ma connaissance on peut toujours ouvrir un document .pdf par app.openDoc localement ou sur intranet si:
1-le chemin complet est correctement spécifié.
2-Le document cible est en disclosed true.Pour plus de détails voir:
http://livedocs.adobe.com/acrobat_sdk/9/Acrobat9_HTMLHelp/wwhelp/wwhimpl/js/html/wwhelp.htm?&accessible=true…
31 décembre 2010 à 13:38 en réponse à : Lien intranet pour accéder à un PDF depuis un PDF dans une nouvelle fenêtre #51256alexParticipantMenus hiérarchisés avec app.popUpMenuEx():
Exemple avec app.popUpMenuEx, tiré de la notice ou à peu près:
var Choix = app.popUpMenuEx
(
{cName: “Item1”, bMarked:true, bEnabled:false},
{cName: “-“},
{cName: “Item2”, oSubMenu:
[ {cName: “Item2-Sousmenu1”},
{
cName: “Item2-Sousmenu2”,
oSubMenu: {cName:”Item2-Sousmenu2-SousSousmenu1″, cReturn: “http://serveur/2”}
}
]
},
{cName: “Item3”},
{cName: “Item4”, bMarked:true, cReturn: “http://serveur/4”}
)31 décembre 2010 à 13:18 en réponse à : Lien intranet pour accéder à un PDF depuis un PDF dans une nouvelle fenêtre #51255alexParticipantMenus hiérarchisés avec app.popUpMenu():
Pour obtenir un niveau n-1 dans la hiérarchie des sous-menus, il faut saisir les items comme suit (ici avec app.popUpMenu):
aa=app.popUpMenu(“N1″,”-“,”N2”,[“N3″,”S1″,”S2″,”S3″,”S4”,[“S5”,[“SS1″,”SSS1″,”SSS2″,”SSS3″,”SSS4″,”SSS5″],”SS2”,[“SS3″,”ST1″,”ST2″,”ST3″,”ST4″,”ST5″],”SS3″,”SS4″]],”-“,”N10”)
Même chose à priori, avec app.popUpMenuEx, ja’ai pas d’exemple sous la main…alexParticipantScribus est un outil intéressant, sans nul doute le plus abouti des outils de création de formulaires AcroForm pdf gratuits (quand on ne peut s’offrir le budget conséquent d’Acrobat PRO et ses mise à jour régulières…). Hélas, à ma connaissance, on ne peut activer les Reader Extensions et, pour moi, cette fonctionnalité reste essentielle.
alexParticipantMerci Merlin.
alexParticipantJe réponds à la question initiale:
1-Fonction associée à chaque bouton de calque (nom de calque identique au nom du bouton): GestionCalques()
2-Fonction à placer au niveau du document:
function GestionCalques()
{
console.clear();
//Recherche des calques de la page courante…
ocg=this.getOCGs(this.pageNum);
indexCalque=0;
while(indexCalque{
if(ocg[indexCalque].name==this.event.target.name)
{
//Activation ou désactivation du calque..si son nom est le même que celui du bouton
ocg[indexCalque].state=!ocg[indexCalque].state;
//logging sur la console avec un unicode pour faire plaisir à Merlin et aux Macusers
console.println(“Activation du calque correspondant au bouton sollicitu00E9:r”+this.event.target.name);
}
indexCalque=indexCalque+1;
}
}
Chaque pression d’un bouton affiche ou masque le calque correspondant.
Si vous le jugez utile, je vous envoie une maquette avec
-activation/désactivation de tous les calques;
-activation/désactivation individuelle (script ci-dessus).Cordialement.
alexParticipantVos scripts de boutons:
//Pour le zoom in
this.zoom=this.zoom*1.25;//Pour le zoom out
this.zoom=this.zoom*0.75;J’ai déjà oublié la manière d’associer un script à un bouton sous Scribus mais on a déjà des exemples ici:
http://www.abracadabrapdf.net/forum/index.php?topic=1246.0Sinon, je réinstallerai Scribus sur une machine rien que pour vous!
Cordialement.
alexParticipant1-Pour moi, avec, app.launchURL(), et ce depuis la version 8.1, il y a obligation d’être en contexte privilégié.
Voir documentation:
JavaScript > JavaScript for Acrobat API Reference > JavaScript API > app > app methods > launchURL
Le .pdf ferait-il exception?2-Il n’y a pas ici d’openFile() ou de var doc = document.open(“file.html”)!
Certaines méthodes et propriétés valides dans le JavaScript HTML ne le sont plus dans en JavaCript Acrobat ou LiveCycle. Par exemple this.getField”MonChamp”).length n’est pas une propriété valide.
Il faut donc utiliser app.openDoc().
Il n’y a pas de restrictions d’usage pour app.openDoc(), donc pas d’obligation à travailler dans un contexte privilégié, sauf lorsque l’on souhaite ouvrir un document non-pdf et le convertir en .pdf (voir 4 pour usage en contexte privilégié). La mauvaise définition du path est la cause la plus fréquente de problèmes.
voir documentation:
http://livedocs.adobe.com/acrobat_sdk/9/Acrobat9_HTMLHelp/wwhelp/wwhimpl/js/html/wwhelp.htm?&accessible=true
JavaScript > JavaScript for Acrobat API Reference > JavaScript API > app > app methods > openDoc3-Je pense qu’il faut éviter de travailler avec un éditeur de texte directement dans le “core” des documents .pdf. Il vaut mieux passer par les outils d’Acrobat dédiés au JavaScript parce qu’ils donnent un diagnostique immédiat des erreurs de syntaxe et nous assurent du respect des spécifications de format pdf, en particulier pour les documents interactifs. On peut associer un éditeur autre que celui d’Adobe assez indigent (Notepad++ sur Pc ou Eclipse sur Mac et Pc) que ce soit avec AcroForm (l’outil de création de formulaires d’Acrobat) ou sous LiveCycle Designer.
4-Pour encapsuler une fonction, par exemple app.openDoc() dans une zone de privilège:
Script de haut niveau (application Acrobat ou Adobe Reader)
trustedcreationDoc=app.trustedFunction(function()
{
//Début des privilèges
app.beginPriv();
//ici tout ce qui n’est pas autorisé en contexte normal
app.openDoc()
/Fin des privilèges
app.endPriv();
})
Script de bas niveau (document)
trustedcreationDoc();Pour voir un exemple, reportez-vous à mon post de manipulation des calques.
Cordialement.
alexParticipantMerci Merlin. C’est clair et précis.
Il faut donc créer les points de chapitre avant import et seul le flash les prend en compte.
Les inconditionnels de QuickTime n’ont pas d’autre choix…que la conversion en fv pour profiter des “Points de chapitre”.10 décembre 2010 à 09:01 en réponse à : Livecycle designer besoin d’un petit coup de main. – RÉSOLU #51173alexParticipantVoilà. Il manque quelques tests de validité du numéro, seul le principe de base est illustré ici.
[attachment deleted by admin]
10 décembre 2010 à 08:18 en réponse à : Livecycle designer besoin d’un petit coup de main. – RÉSOLU #51172alexParticipantJe vais vous répondre aujourd’hui, c’est assez simple avec AcroForm (sous Acrobat comme conseillé par Merlin).
alexParticipantDepuis la version 9, les données persistantes sont attachées au document qui les crée.
Sûre de ces deux lignes?
Typ = “button”;
if (!this.getField(Nom).readOnly && Typ != “button”)
Dans votre document, les nouveaux scripts de document (Load et Save) ne sont pas correctement intégrés.Je regarderai plus en détail votre problème la semaine prochaine.
alexParticipantVoir les fiches jointes.
Ouvrez les simultanément dans Adobe Reader (mosaïque horizontale).
Saisir des données dans les deux champs de saisie de la page A, pressez le bouton Ecrire: les données sont stockées comme variables globales.
Cliquer sur la page B, pressez le bouton Lire, les données stockées sont lues.
Même chose en partant de la page B ou de toute autre page identique.Pour plus de détails et comprendre, ouvrir les documents sous Acrobat et voir les deux scripts Lire() et Ecrire().
Pour que les transferts fonctionnent, il faut qu’un évènement lance les scripts (ici les actions des boutons “Ecrire” et “Lire”).Nota:maquette réalisée avec un formulaire AcroForm destinée aux Reader 7,8,9,X.
[attachment deleted by admin]
7 décembre 2010 à 11:08 en réponse à : Conserver l’affichage ou le masquage des calques avec Reader. #51193alexParticipantSur ce même principe qui consiste à stocker un code caché qui, relu à l’ouverture du document, définira sa présentation future , on peut imaginer beaucoup d’autres applications. A vous d’en imaginer d’autres… Comme indiqué au début, je vous conseille d’ajouter un calque opaque qui interdira toute lecture à l’aide d’un viewer autre que Adobe Reader (tels qu’Aperçu sur Mac ou PDF Opener et autres couteaux suisses proposés sur le NET)….
6 décembre 2010 à 16:16 en réponse à : Conserver l’affichage ou le masquage des calques avec Reader. #51188alexParticipantOops!
1-Le champ “Code” est un champ texte. L’élaboration du code et son remplissage se font automatiquement par sélection des calques.
2-Les boutons de calque embarquent une simple ligne JavaScript :
GestionCalques();
Les boutons “Tout” et “Rien” embarquent une seule ligne de code:
ToutRien();
Le bouton “Masquer les boutons” embarque une seule ligne de code:
MasquerBoutons();3-Les scripts des fonctions GestionCalques(), ToutRien(), Ouverture(), MasquerBoutons() complets sont situés au niveau document et appelés par les actions sur les boutons. Il ne faut pas les recopier dans les boutons!
Explication suffisante?
6 décembre 2010 à 11:11 en réponse à : Conserver l’affichage ou le masquage des calques avec Reader. #51185alexParticipantProcédure de création du document MASTER (sous Acrobat 8 ou 9 de préférence)
Document Acrobat d’une seule page contenant des calques.
Boutons obligatoires:
“Tout”,”Rien”,”Masquer les boutons” ainsi qu’un bouton par calque à manipuler.
Champ obligatoire “Code” à placer dans un coin.Après création de votre MASTER:
1-protégez-le en modification par mot de passe.
2-Activez les fonctionnalités Reader Extensions pour les formulaires (NB:ne fonctionne pas avec Acrobat X, utiliser Acrobat 9)Procédure à suivre par l’opératrice: voir post ci-dessus.
Fonction associée à chaque bouton de calque (nom de calque identique au nom du bouton):
function GestionCalques()
{
console.clear();
//Activation du calque…
ocg=this.getOCGs(this.pageNum);
indexCalque=0;
while(indexCalque{
if(ocg[indexCalque].name==this.event.target.name)
{
ocg[indexCalque].state=true;
//app.alert(“Activation du calque correspondant au bouton sollicitu00E9:r”+this.event.target.name,3);
}
indexCalque=indexCalque+1;
}
//Analyse de la configuration des calques et élaboration du code.
console.println(“Analyse de la configuration des “+indexCalque+” calques et u00E9laboration du code.”)
ocg=this.getOCGs(this.pageNum);
indexCalque=0;
code=””;
TexteAlerte=”Calques activu00E9s suite à ajout “”+this.event.target.name+”””;
while(indexCalque{
if(ocg[indexCalque].state)
{
TexteAlerte=TexteAlerte+”r*”+indexCalque+”-“+ocg[indexCalque].name;
code=code+”1″;
}
else
{
code=code+”0″;
}
indexCalque=indexCalque+1;
}
if(this.getField(“Code”))
{
this.getField(“Code”).value=code;
app.alert(TexteAlerte+”rCode de la configuration des calques:r””+this.getField(“Code”).valueAsString+””.”,3)
}
else
{
app.alert(“Le champ de code manque!rIl faut le créer…”,1)
}
//console.show();
}Fonction associée aux deux boutons “Tout” et “Rien”:
function ToutRien()
{
//Affichage ou masquage de tous les calques.
console.clear();
ocg=this.getOCGs(this.pageNum);
if(this.event.target.name==”Tout”){statut=true;}else{statut=false;}
indexCalque=0;
code=””;
while(indexCalque{
ocg[indexCalque].state=statut;
if(statut){code=code+”1″;}else{code=code+”0″;};
indexCalque=indexCalque+1;
}
this.getField(“Code”).value=code;
console.println(“Code: “+this.getField(“Code”).value+”.”);
console.println(“Les “+indexCalque+” calques sont de statut “+statut+”.”);
}Fonction associée au bouton “Masquer les boutons”:
function MasquerBoutons()
{
statut=false;
reponse=app.alert(“Masquer les boutons?rAttention, cette opération est irréversible.rAssurez-vous de conserver un original de ce document.”,2,2)
if(reponse==4){statut=true;}
indexChamp=0;
while(indexChamp{
nom=this.getNthFieldName(indexChamp);
ff=this.getField(nom);
if(ff.type==”button”){ff.hidden=statut;}
indexChamp=indexChamp+1;
}
this.getField(“Code”).hidden=statut;
this.getField(“Code”).readonly=true;
}Fonction d’ouverture de la page du document:
function Ouverture()
{//Activation des calques en fonction du code
ocg=this.getOCGs(this.pageNum);
code=this.getField(“Code”).valueAsString;
indexCalque=0;
while(indexCalque{
statut=code.substring(indexCalque,(indexCalque+1));
console.println(“Rang “+indexCalque+” statut:”+statut)
if(statut==1)
{
ocg[indexCalque].state=true;
}
else
{
ocg[indexCalque].state=false;
}
indexCalque=indexCalque+1;
}
}Extension de ce système à plusieurs pages, gestion interactive des calques par les destinataires…. Tout est possible!
4 décembre 2010 à 18:32 en réponse à : Conserver l’affichage ou le masquage des calques avec Reader. #51183alexParticipantJe cherche un moyen de vous mettre à disposition le document sous sa forme utilisable sous Adobe Reader (8,9,X), les fonctionnalités du Reader étant étendues.
Le bouton “Tout” affiche tous les calques.
Le bouton “Rien” les masque.
Les calques sont verrouillés et ne peuvent être manipulés à la main.
Les autres boutons permettent de sélectionner les calques à afficher. Le système fonctionne quelque soit le nombre de calques, il suffira de recopier ces boutons en leur attribuant le nom du calque.
Le bouton Masquer les boutons fait disparaître les boutons et le champ de code. Ainsi, le document envoyé sera propre.La procédure:
1-L’opératrice, à partir du MASTER joint, choisit les calques du client.
Quand le document est prêt, elle masque boutons (pression du bouton rouge).
Elle enregistre son document (sous un autre nom! Sinon, il faut reprendre l’original) et l’envoie.2-Le destinataire l’ouvre sous Adobe Reader, dans ses Préférences (Edition>Préférences>JavaScript) les cases à cocher “Activer Acrobat JavaScript” et “Autoriser les privilèges d’exécution JavaScript d’éléments de menu” sont cochées.
Seuls les calques présélectionnés apparaissent.Explications détaillées et code complet pour bientôt.
3 décembre 2010 à 13:53 en réponse à : Conserver l’affichage ou le masquage des calques avec Reader. #51182alexParticipantSalut Merlin!
Oui, j’ai chargé ce fichier et je vais faire un essai… d’ici lundi j’espère.
A+3 décembre 2010 à 09:38 en réponse à : Conserver l’affichage ou le masquage des calques avec Reader. #51180alexParticipantOn pourrait peut-être résoudre ça par un petit JavaScript sur le principe suivant:
Lors de l’enregistrement du document, un champ caché embarquerait un code correspondant à la combinaison des calques à afficher.
Lors de l’ouverture du document, un script d’ouverture activerait les calques à afficher et désactiverait les autres en fonction de ce code.
De plus, pour éviter la consultation pirate avec d’autres “viewers” pdf tels que Aperçu sur Mac, on ajouterait un calque opaque activé par défaut et désactivé par le script d’ouverture. En effet la plupart des “viewers” ignorent les objets fields et il ne faut pas espérer les utiliser comme masques.Je propose tout ça au conditionnel, ça demande à être testé, si ça vous intéresse je fais une maquette…
22 novembre 2010 à 08:26 en réponse à : LiveCycle designer, replication automatique d’un champ texte ? #51159alexParticipantPour la question 1:
Pour passer une valeur d’un champ à un autre, sous Lc Designer, on aura un script de la forme suivante:formulaire1.#pageSet[0].Page2.Bouton2::click – (JavaScript, client)
xfa.form.formulaire1.Page2.Texte2.rawValue=xfa.form.formulaire1.Page1.Texte1.rawValueIci, l’évènement qui provoque le transfert de contenu est un click sur le Bouton2 de la Page2, mais ça peut être autre chose.
Pour la question 2:
Solution à minima: on peut utiliser une variable globale invisible pour l’utilisateur qui passera les champs de saisie en lecture seule à l’ouverture suivante et affichera une alerte. Evidemment, il suffit de changer de machine pour contourner cette protection mais il faut le savoir.
La solution sûre: au lieu d’envoyer le formulaire en pièce jointe, on peut envoyer directement les données seules vers un serveur qui les collectera et retournera le formulaire rempli et protégé. Là, c’est imparable mais il faut maîtriser pas mal de techniques et de langages.23 septembre 2010 à 09:45 en réponse à : Mon formulaire PDF rempli arrive vide après envoi par courriel. #51088alexParticipantFais un essai, ouvres par exemple listeslieesAcroform, (formulaire créé sous Acrobat) sous LC Designer….Et rien.
22 septembre 2010 à 18:29 en réponse à : Comment empêcher l’ouverture de fichier pdf par Adobe LivecycleDesigner ? RÉSOLU #51034alexParticipantIl s’agit sans doute de l’ajout automatique de lignes dans un tableau de saisie ?
Sous LiveCycle Designer, il est possible de concevoir des formulaires qui s’adaptent au besoin des utilisateurs ou en fonction d’autres critères logiques.
Ce problème est-il résolu?22 septembre 2010 à 18:16 en réponse à : Lier les choix possible d’une liste déroulante à une deuxième. RÉSOLU #50494alexParticipantLes formulaires développés sous AcroForm (directement sous Acrobat PRO sur Mac ou PC) ne peuvent être repris que sous Acrobat PRO.
Les formulaires développés sous LiveCycle Designer (sur PC uniquement) ne peuvent être repris que sous LiveCycle Designer.Si vous ouvrez un formulaire LiveCycle sous Acrobat vous remarquerez que les outils de création de formulaire AcroForm sont désactivés (le document n’est donc pas protégé).
Il n’y a pas de moyen simple de passer de l’un à l’autre, les formats et les langages de script diffèrent.
Pour cette raison, je vous ai proposé deux maquettes de menus déroulants inter-dépendants.
J’ai déjà expliqué les avantages et les inconvénients des deux types de formulaires sur ce forum.]22 septembre 2010 à 18:09 en réponse à : Mon formulaire PDF rempli arrive vide après envoi par courriel. #51086alexParticipantLes formulaires développés sous AcroForm (directement sous Acrobat PRO sur Mac ou PC) ne peuvent être repris que sous Acrobat PRO.
Les formulaires développés sous LiveCycle Designer (sur PC uniquement) ne peuvent être repris que sous LiveCycle Designer.Si vous ouvrez un formulaire LiveCycle sous Acrobat vous remarquerez que les outils de création de formulaire AcroForm sont désactivés (le document n’est donc pas protégé).
Il n’y a pas de moyen simple de passer de l’un à l’autre, les formats et les langages de script diffèrent.
Pour cette raison, je vous ai proposé deux maquettes de menus déroulants inter-dépendants.
J’ai déjà expliqué les avantages et les inconvénients des deux types de formulaires sur ce forum.]17 septembre 2010 à 15:59 en réponse à : Mon formulaire PDF rempli arrive vide après envoi par courriel. #51082alexParticipantOui, très bien les Unicodes, j’avais oublié qu’on était chez les “Macintoshphiles”. J’ai d’ailleurs remarqué que les développeurs (Flex ou Flash Designer) étaient presque tous sur Mac. Au passage, on peut remarquer qu’Adobe a pris soin d’offrir (pour plus de 200€ quand même) un Flash Designer 4 fonctionnant sur Mac alors que nombre d’entre vous attendent toujours LiveCycle Designer sur Mac….
Merci Merlin.17 septembre 2010 à 13:52 en réponse à : Mon formulaire PDF rempli arrive vide après envoi par courriel. #51080alexParticipantEffectivement, pour les formulaires Acrobat (AcroForm), il faut effectivement utiliser cette variante si le formulaire contient des listes déroulantes.
Pour les formulaires LiveCycleDesigner, le problème ne se pose pas, vous pouvez vous appuyer sur mon exemple…13 septembre 2010 à 19:13 en réponse à : Lier les choix possible d’une liste déroulante à une deuxième. RÉSOLU #50492alexParticipantOui, on peut supprimer le champ d’information, à condition de supprimer aussi les lignes le concernant (avec Texte1).
La partie du script destinée à construire les tableaux peut être effectuée en initialisation (ouverture du document).
Je fournirai une version qui illustre ça dès que possible, pas demain.
Bonne soirée.13 septembre 2010 à 06:39 en réponse à : Lier les choix possible d’une liste déroulante à une deuxième. RÉSOLU #50489alexParticipantJe me lance, on aurait:
Code:…..
Fille=new Array();
x=0;
while(x{
Fille[x]=new Array();
x=x+1;
}
…..Un moyen d’avoir une police plus grosse comme en HTML?
12 septembre 2010 à 09:23 en réponse à : Lier les choix possible d’une liste déroulante à une deuxième. RÉSOLU #50487alexParticipantAttention: Acrobat PRO et LiveCycle Designer sur Pc uniquement.
Voici la solution complète… On peut voir le résultat sur Adobe Reader Mac ou Pc.Dans la maquette jointe :
1-Un script d’ouverture efface le contenu des menus déroulants.
Au passage, notez le déclencheur initialize et le placement des deux parties du script pour utiliser le champ d’information Texte1formulaire1::initialize – (JavaScript, client)
console.clear();
xfa.host.resetData();
console.println(“Informations:”);
TexteAlerte=”Reset des menus déroulants en ouverture de document.”;
console.println(TexteAlerte);formulaire1.#pageSet[0].Page1.Texte1::initialize – (JavaScript, client)
xfa.form.formulaire1.Page1.Texte1.rawValue=TexteAlerte;
2-Un script associé à un bouton élabore les tables de données et remplit le menu déroulant Mère. On aurait pu élaborer les tables à l’initialisation (c’est plus élégant).
Au passage notez la manière classique de créer un tableau à deux dimensions:
…..
Fille=new Array();
x=0;
while(x{
Fille[x]=new Array();
x=x+1;
}
…..
NB:j’ai mis des [ et des ] car l’éditeur du forum me refuse ici les crochets!3-Un script lançé lors de la sélection d’un item Mère remplit le menu déroulant Fille.
Il vaut mieux opter pour le déclencheur exit :
formulaire1.#pageSet[0].Page1.Liste_M::exit – (JavaScript, client)Merci d’avoir attendu!
[attachment deleted by admin]
11 septembre 2010 à 10:49 en réponse à : Lier les choix possible d’une liste déroulante à une deuxième. RÉSOLU #50485alexParticipantAttention: Acrobat PRO et LiveCycle Designer sur Pc uniquement.
Voici la première partie de la réponse…
La maquette jointe montre :
1-comment remplir les items d’une liste déroulante à partir d’un tableau après tri des données.
2-Comment effacer les items de cette liste.
Par ailleurs on voit comment faire pour atteindre les objets du formulaire et afficher des alertes (deux méthodes).
Pour voir les scripts, il faut bien sûr travailler sur Pc et ouvrir LiveCycle Designer à partir d’Acrobat PRO: Formulaires>Modifier le formulaire dans Designer, puis cliquer su l’onglet Gabarits et chaque bouton lançant un script JavaScript client.
Pour ne pas ouvrir la console lors de l’exécution des scripts, passer Console.show() en commentaire.
Pour comparer les scripts JavaScript d’Acrobat (AcroForm) et de Designer se référer à:
LiveCycleDesigner ES2 Scripting Basics
où il y a un tableau de conversion de scripts très utile.Je n’oublie pas, Pepitos, l’objectif de la liste liée, et vu le nombre de téléchargements de l’exemple sous Acrobat, il y a un record à battre!
Nota: non réalisble avec Scribus.
[attachment deleted by admin]
16 août 2010 à 19:52 en réponse à : Lier les choix possible d’une liste déroulante à une deuxième. RÉSOLU #50482alexParticipantJ’ai comme l’impression que le script sous Adobe Designer (pardon, Adobe LiveCycle Designer) est attendue… avec insistance?
Hum.
Il va falloir:
1-Que je me résigne à quitter ce Mac pour retourner à mon PC (j’espère qu’il n’y aura pas trop de mises à jour à faire avant de travailler) …
2-Que mes clients soient encore en vacances… Et les autres pas trop pressés.
3-Que je me retrouve dans Designer (hiérarchie des objets pas intuitive même pour moi qui aime bien bricoler les codes).
Ces conditions réunies, ça devrait être fait début septembre (seconde semaine), désolé, je ne peux faire mieux.En attendant, suite à un petit échange avec Merlin, je lui ai envoyé pour vérification une version du script qui préserve les valeurs d’export des menus déroulants lors des exports de données, toujours destinée aux formulaires créés sous Acrobat (AcroForm), ainsi qu’une maquette qu’il mettra en ligne si tout va bien.
alexParticipantVoilà, le script est bien exécuté à l’ouverture du document. J’ai supprimé les images et testé avec Acrobat et Adobe Reader.
[attachment deleted by admin]
alexParticipantJ’ai exporté mes fichiers .sla sous Acrobat et vérifié à chaque fois leur fonctionnement et si les scripts étaient bien à leur place.
Effectivement le zip dégrade le fichier .sla (disparition des icônes). Je vais tester l’association d’un script js à l’ouverture.alexParticipantSur le fichier Scribus joint, j’ai corrigé une erreur (script manquant) et utilisé un script de document (Edition>JavaScripts>). N’ayant pas trouvé le moyen d’exécuter le script Ouverture() automatiquement à l’ouverture du document, il faut donc cliquer sur le bouton en haut à gauche.
[attachment deleted by admin]
alexParticipantAprès recherches, je ne sais toujours pas comment lancer un scrip d’ouverture avec Scribus. J’ai crée un script de document baptisé Ouverture() qui intégre les fonctionnalités du feu bouton “Reset”. Dans cette démo je le lance avec le bouton Afficher/Masquer.
Pour que ça marche il suffit donc de lancer le programme Ouverture();
Question: sous Scribus, peut-on lancer un script en ouverture de page comme avec Acrobat? Si oui où se trouve l’accès?[attachment deleted by admin]
alexParticipantIl suffit de recopier le script du bouton “Reset” et de le placer en ouverture de document.
Ce script remplit le menu déroulant et précise les textes associés, il est bien sûr obligatoire! Par contre, il suffit de l’éxécuter une seule fois.alexParticipantVoilà le fichier Scribus promis.
Le script asspocié au bouton “Reset” remplit la liste déroulante baptisée Menu, ainsi qu’une table (textes) des textes associés aux items. On peut aussi le faire à l’ouverture du document.
Lors de la sélection d’un item, le texte associé apparaît dans le champ texte baptisé “Texte”.
L’évènement qui lance le script à partir du sélecteur “Menu” est: Format>Sur mesure>Frappe.[attachment deleted by admin]
alexParticipantAvec Scribus, il est effectivement possible d’insérer des scripts JavaScript et d’ajouter de l’interactivité au document pdf que l’on génère.
Apparemment, on retrouve bien les propriétés des champs d’Acrobat, je vais donc proposer un fichier Scribus .sla avec un script de démo (pour affichage d’un texte associé à la sélection d’un item de menu déroulant) et le fichier .pdf généré par Scribus.
Par contre je n’arrive pas à préremplir les données de champ. En particulier, pour le menu déroulant je ne peux pas prédéfinir les items à la main comme sous Acrobat. En conséquence je ferai ça par script aussi, mais si quelqu’un sait le faire, je suis preneur.
Maquette demain matin.alexParticipantPas de problème avec Acrobat PRO et un script JavaScript…. Mais je ne connais pas Scribus, je vais jeter un oeil…et je reviens de suite.
-
AuteurRéponses