Donnez vie à vos documents numériques !
 

alex

Toutes mes réponses sur les forums

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

    On ne va pas vous laisser tomber… Lundi vous aurez une petite maquette.

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

    J’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.

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

    Edition 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]

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

    Edition 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]

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

    Edition 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]

    alex
    Participant

    Chef 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.

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

    Dans 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.

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

    Et 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.

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

    Bonjour,
    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.

    en réponse à : Problèmes pour formulaire avec calques #51543
    alex
    Participant

    Voici 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();
    }

    en réponse à : Problèmes pour formulaire avec calques #51542
    alex
    Participant

    Je 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.

    en réponse à : Problèmes pour formulaire avec calques #51541
    alex
    Participant

    On 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)

    en réponse à : Problèmes pour formulaire avec calques #51536
    alex
    Participant

    Mon script est une “rustine”, il faudrait voir pourquoi l’état des calques n’est pas conservé après enregistrement…
    Merlin, une idée ?

    en réponse à : Problèmes pour formulaire avec calques #51535
    alex
    Participant

    Placez 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.

    en réponse à : Problèmes pour formulaire avec calques #51532
    alex
    Participant

    Effectivement, 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.

    en réponse à : Problèmes pour formulaire avec calques #51530
    alex
    Participant

    J’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.

    en réponse à : Problèmes pour formulaire avec calques #51528
    alex
    Participant

    Regardez 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!

    alex
    Participant

    Bonjour, 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!!!!

    en réponse à : Script extraction. – RÉPONDU #51450
    alex
    Participant

    C’est normal, ce script est un script associé à l’application Acrobat, il pourrait sans doute être adapté au traitement par lot

    alex
    Participant

    Nous sommes d’accord, 150 $ c’est plus avantageux que 2 jours de travail, mais peu pédagogique. Bonne continuation….

    en réponse à : Scinder un PDF en plusieurs PDF. – RÉSOLU #51502
    alex
    Participant

    Vu avec Merlin… Nous allons effectivement réintégrer un outil de découpage dans AbracadabraTool X. 

    alex
    Participant

    Cet 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.

    en réponse à : Scinder un PDF en plusieurs PDF. – RÉSOLU #51501
    alex
    Participant

    Je 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.

    en réponse à : Scinder un PDF en plusieurs PDF. – RÉSOLU #51498
    alex
    Participant

    Avant 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]

    en réponse à : Scinder un PDF en plusieurs PDF. – RÉSOLU #51497
    alex
    Participant

    1-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]

    en réponse à : Scinder un PDF en plusieurs PDF. – RÉSOLU #51495
    alex
    Participant

    Vous 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

    en réponse à : Scinder un PDF en plusieurs PDF. – RÉSOLU #51493
    alex
    Participant

    Si 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?

    alex
    Participant

    Le 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 1

    Bon courage.

    alex
    Participant

    Voici un exemple de connexion fourni par PlanetPDF:
    http://www.planetpdf.com/developer/article.asp?ContentID=6088

    Qu’il s’agisse de données provenant d’une table Excel ou Access, le principe est le même.

    alex
    Participant

    Les 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é.

    en réponse à : Script extraction. – RÉPONDU #51444
    alex
    Participant

    Pas 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.

    en réponse à : Script extraction. – RÉPONDU #51442
    alex
    Participant

    Merlin est en train de tester une version Acrobat X qu’il mettra en ligne dès que possible.

    en réponse à : Script extraction. – RÉPONDU #51439
    alex
    Participant

    Voici le script avec une extension .gif à changer en .js avant de le placer dans le répertoire de l’application.

    [attachment deleted by admin]

    en réponse à : Script extraction. – RÉPONDU #51438
    alex
    Participant

    1-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]

    en réponse à : Script extraction. – RÉPONDU #51436
    alex
    Participant

    Pour 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.

    alex
    Participant

    Le 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]

    alex
    Participant

    Une petite variante pour le fun et illustrer la gestion d’évènements dans Acrobat…

    [attachment deleted by admin]

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

    Quelques 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…

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

    Assurez-vous du paramétrage des préférences pour l’exécution des scripts JavaScript.
    Voir image jointe.

    [attachment deleted by admin]

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

    Ré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>JavaScripts

    alex
    Participant

    Au 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!

    en réponse à : openinPlace récalcitrant #51339
    alex
    Participant

    Je 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]

    alex
    Participant

    C’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.

    alex
    Participant

    Oui, 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.

    alex
    Participant

    Lors 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]

    en réponse à : Script à l’ouverture d’un document #51340
    alex
    Participant

    Il 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…

    en réponse à : Bouton radio #51335
    alex
    Participant

    Il 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

    en réponse à : Basculer d’une page à l’autre (affichage). – RÉSOLU #51309
    alex
    Participant

    Pour 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]

    en réponse à : Basculer d’une page à l’autre (affichage). – RÉSOLU #51307
    alex
    Participant

    Il 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]

    en réponse à : Basculer d’une page à l’autre (affichage). – RÉSOLU #51304
    alex
    Participant

    Ci-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]

    en réponse à : Basculer d’une page à l’autre (affichage). – RÉSOLU #51302
    alex
    Participant

    Je 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…

    en réponse à : Comment cumuler plusieurs conditions (AND & OR) ? – RÉSOLU #51288
    alex
    Participant

    Ci 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==3)&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 Nu0080

    Attention à 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]

    en réponse à : Multiplier des pages dans un PDF. – RÉSOLU #51314
    alex
    Participant

    Mais 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

    en réponse à : Erreur javaScript #51273
    alex
    Participant

    1-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]

    en réponse à : Basculer d’une page à l’autre (affichage). – RÉSOLU #51296
    alex
    Participant

    Chaque 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.

    alex
    Participant

    En 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.

    en réponse à : Basculer d’une page à l’autre (affichage). – RÉSOLU #51294
    alex
    Participant

    Une 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]

    alex
    Participant

    La 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!

    en réponse à : Erreur javaScript #51271
    alex
    Participant

    1-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…) ?

    alex
    Participant

    Et ce n’est pas la première fois qu’on en parle ici !
    Bonne année à tous les JavaScripteurs Acrobat !
    Bonne année à tous.

    alex
    Participant

    A 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

    alex
    Participant

    Menus 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&#8221;}
    }
    ]
    },
    {cName: “Item3”},
    {cName: “Item4”, bMarked:true, cReturn: “http://serveur/4&#8221;}
    )

    alex
    Participant

    Menus 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…

    en réponse à : Zoom in, zoom out. – RÉSOLU #51235
    alex
    Participant

    Scribus 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.

    en réponse à : Zoom in, zoom out. – RÉSOLU #51233
    alex
    Participant

    Merci Merlin.

    en réponse à : Afficher/masquer des calques. – RÉSOLU #51229
    alex
    Participant

    Je 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.

    en réponse à : Zoom in, zoom out. – RÉSOLU #51231
    alex
    Participant

    Vos 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.0

    Sinon, je réinstallerai Scribus sur une machine rien que pour vous!

    Cordialement.

    en réponse à : app.launchurl("file:///V:/BONCDE.PDF") #51230
    alex
    Participant

    1-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 > openDoc

    3-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.

    en réponse à : Vidéos embarquées et "Points de chapitre". – RÉSOLU #51225
    alex
    Participant

    Merci 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”.

    en réponse à : Livecycle designer besoin d’un petit coup de main. – RÉSOLU #51173
    alex
    Participant

    Voilà. Il manque quelques tests de validité du numéro, seul le principe de base est illustré ici.

    [attachment deleted by admin]

    en réponse à : Livecycle designer besoin d’un petit coup de main. – RÉSOLU #51172
    alex
    Participant

    Je vais vous répondre aujourd’hui, c’est assez simple avec AcroForm (sous Acrobat comme conseillé par Merlin).

    en réponse à : Transfert variables entre PDF #51202
    alex
    Participant

    Depuis 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.

    en réponse à : Transfert variables entre PDF #51200
    alex
    Participant

    Voir 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]

    en réponse à : Conserver l’affichage ou le masquage des calques avec Reader. #51193
    alex
    Participant

    Sur 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)….

    en réponse à : Conserver l’affichage ou le masquage des calques avec Reader. #51188
    alex
    Participant

    Oops!
    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?

    en réponse à : Conserver l’affichage ou le masquage des calques avec Reader. #51185
    alex
    Participant

    Procé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! 

    en réponse à : Conserver l’affichage ou le masquage des calques avec Reader. #51183
    alex
    Participant

    Je 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.

    en réponse à : Conserver l’affichage ou le masquage des calques avec Reader. #51182
    alex
    Participant

    Salut Merlin!
    Oui, j’ai chargé ce fichier et je vais faire un essai… d’ici lundi j’espère.
    A+

    en réponse à : Conserver l’affichage ou le masquage des calques avec Reader. #51180
    alex
    Participant

    On 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…

    en réponse à : LiveCycle designer, replication automatique d’un champ texte ? #51159
    alex
    Participant

    Pour 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.rawValue

    Ici, 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.

    en réponse à : Mon formulaire PDF rempli arrive vide après envoi par courriel. #51088
    alex
    Participant

    Fais un essai, ouvres par exemple listeslieesAcroform, (formulaire créé sous Acrobat) sous LC Designer….Et rien.

    alex
    Participant

    Il 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?

    alex
    Participant

    Les 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.]

    en réponse à : Mon formulaire PDF rempli arrive vide après envoi par courriel. #51086
    alex
    Participant

    Les 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.]

    en réponse à : Mon formulaire PDF rempli arrive vide après envoi par courriel. #51082
    alex
    Participant

    Oui, 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.

    en réponse à : Mon formulaire PDF rempli arrive vide après envoi par courriel. #51080
    alex
    Participant

    Effectivement, 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…

    alex
    Participant

    Oui, 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.

    alex
    Participant

    Je 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?

    alex
    Participant

    Attention: 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 Texte1

    formulaire1::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]

    alex
    Participant

    Attention: 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]

    alex
    Participant

    J’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.

    en réponse à : JS -> liste déroute + cadre texte. – RÉSOLU #51004
    alex
    Participant

    Voilà, 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]

    en réponse à : JS -> liste déroute + cadre texte. – RÉSOLU #51003
    alex
    Participant

    J’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.

    en réponse à : JS -> liste déroute + cadre texte. – RÉSOLU #51001
    alex
    Participant

    Sur 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]

    en réponse à : JS -> liste déroute + cadre texte. – RÉSOLU #51000
    alex
    Participant

    Aprè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]

    en réponse à : JS -> liste déroute + cadre texte. – RÉSOLU #50999
    alex
    Participant

    Il 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.

    en réponse à : JS -> liste déroute + cadre texte. – RÉSOLU #50997
    alex
    Participant

    Voilà 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]

    en réponse à : JS -> liste déroute + cadre texte. – RÉSOLU #50995
    alex
    Participant

    Avec 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.

    en réponse à : JS -> liste déroute + cadre texte. – RÉSOLU #50994
    alex
    Participant

    Pas 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.

Affichage de 99 réponses de 397 à 495 (sur un total de 603)