Donnez vie à vos documents numériques !
 

maxwyss

Toutes mes réponses sur les forums

Affichage de 25 réponses de 51 à 75 (sur un total de 95)
  • Auteur
    Réponses
  • en réponse à : Suite d’un texte dans un champ différent. – RÉPONDU #53889
    maxwyss
    Membre

    Dans un champ multiligne normal, il n’est pas possible de changer l’interlignage (sauf si on préparait une police avec cet interlignage specifique).

    Il y a l’option de richText pour un champ (je crois que ça apparait dans les options des propriétés du champ par « utiliser RTF » ou comme-ça). Si cette option est activée, on peut lancer la barre des propriétés (en tapant ou ). Et là, on peut changer l’interlignage.

    HTH.

    Max Wyss.

    en réponse à : Infobulle préremplie dans un champ texte. – RÉSOLU #53953
    maxwyss
    Membre

    Pour les champs du type listbox et combobox, c’est simple; creez un champ contenant ce texte (par example « faites votre choix »), et donnez lui une valeur de retour specifique (souvent, je prends 0 ou -1).

    Pour les champs de texte, c’est un petit peu plus complexe, mais pas de problème serieux:

    a) La valeur par défaut sera le texte à afficher (par ex « nom »

    b) Dans l’evenement onFocus ajoutez le code suivant:

    if (event.target.value === event.target.defaultValue) { event.value = «  »}
    if (event.target.value === event.target.defaultValue) { event.target.value = «  »}

    c) dans l’evenement onBlur ajoutez le code suivant:

    if (event.value == «  ») { event.value = event.target.defaultValue }
    if (event.target.value == «  ») { event.target.value = event.target.defaultValue }

    Et ça devrait fonctionner.

    Ces codes déterminent s’il y a une valeur dans le champ soit la valeur de l’infobulle; si c’est le cas, le champ est vidé quand on clique dedans ou on vient dedans par tab. Quand on quitte le champ, le code decide, si le champ est vide que rien a été rempli, et il va donc remontrer l’infobulle.

    HTH

    Max Wyss.

    en réponse à : Intéractivité entre tableau et graph dans un PDF. – RÉSOLU #53929
    maxwyss
    Membre

    Il y a deux possibilités, les deux demandent de la programmation:

    a) Inserer un objet Flash, et faire lacommunication entre les champs du fichier et cet objet Flash (si je me souviens correctement, il faudrait Flex Builder pour quelques composants)

    b) Il y a une metode non-documentée en Acrobat JavaScript, nommée createIcon(), avec laquelle on peut peindre directement en utilisant les codes PDF. D.P. Story, professeur emeritié de l’université de Akron, OH a publié des essais; il faudrait chercher un peu pour les trouver. Un example est http://www.math.uakron.edu/~dpstory/tutorial/demos/graphPDF.pdf

    Si c’est serieux, je pourrais aider; pour des informations supplémentaires ou un devis, contactez-moi en privé.

    HTH.

    Max Wyss.

    en réponse à : Création PDF/A à partir d’un PDF. – RÉPONDU #53853
    maxwyss
    Membre

    Pour des ressources additionnelles « tout autour de PDF/A », on pourrait visiter le site de la PDFAssociation (http://www.pdfa.org). Si je me souviens correctement, il y a une liste d’outils pour la creation et egalement pour la verification.

    HTH

    Max Wyss.

    maxwyss
    Membre

    Mon plaisir, nini.

    Et si ça ne fonctionne toujours pas, pose la prochaine quesiont…

    Max Wyss.

    maxwyss
    Membre

    Salut nini,

    Sous Acrobat X, les JavaScripts du document sont accedé par le panneau Outils –> JavaScript –> Scripts JavaScript du Document. Par défaut, la section JavaScript n’est pas montrée; il faut donc la activer par le tout petit bouton en haut à droite du panneau Outils.

    HTH

    Max Wyss.

    maxwyss
    Membre

    Salut nini,

    quelle version de Acrobat utilises-tu?

    La fonction n’est pas definie comme script de document, et parce que la methode pour additionner un tel script depend de la version Acrobat, je demande pour pouvoir donner les instructions correctes.

    Max Wyss.

    maxwyss
    Membre

    Salut nini,

    je m’excuse si les instructions n’etaient pas suffisamment clairs…

    La fonction devrait être definie comme script du document (avec ça elle devient disponible pour tout les champs du document).

    Dans l’evenement Format du champ, la fonction est appellé comme suit:

    multisize(event.target, 18, 4) ;

    Attention: dans la version courante, les coupures de ligne automatiques ne sont pas considerés; il faut donc couper les lignes manuellement; pour un automatisme avec les coupures de ligne automatiques, il faudrait egalement compter les charactères et adapter la logique.

    HTH

    Max Wyss

    maxwyss
    Membre

    En fait, la commutation entre fixe et automatique est plus simple quand on a des champs multilignes.

    On compte soit les charactères pour une nouvelle ligne, soit le nombre de charactères, et on peut changer entre fixe et automatique.

    Voici une fonction qui peut être utilisé dans l’evenement Format:

    Code:
    function multisize(fieldvar, fsze, zeilen)
    {
    var count = 0;
    var pos = event.value.indexOf(« r »);
    while ( pos != -1 ) {
    count++;
    pos = event.value.indexOf(« r »,pos+1);
    }
    if (count > (zeilen – 1)) {
    fieldvar.textSize = 0 ;
    } else {
    fieldvar.textSize = fsze ;
    } ;
    }

    Les arguments ont la signification suivante:

    fieldvar: Objet de Champ concerné; normalement c’est event.target
    fsze: Taille de police fixe
    zeilen: nombre de ligne

    La fonction est definie comme un script de document. Si elle est appellée par exemple comme

    Code:
    multisize(event.target,18,4)

    ça veut dire que le champ dans lequel la fonction est appellée dans l’evenement Format va avoir quatre lignes de texte avec la taille 18 points; s’il y a plus que 4 lignes, la taille du texte est automatique

    HTH.

    maxwyss
    Membre

    Excusez la réponse un peu tardive, SVP.

    Je n’ai pas verifié, mais en principe, le code de touches

    Code:
    if (event.value.toString().length < 1 || /s/gim.test(event.value.toString().charAt(event.value.toString().length-1))) {
    event.change = event.change.toUpperCase() ;} 

    pourrait être modifié de la manière suivante:

    Code:
    if (event.value.toString().length < 1 || /[-s]/gim.test(event.value.toString().charAt(event.value.toString().length-1))) {
    event.change = event.change.toUpperCase() ;
    } else {
    event.change = event.change.toLowerCase() ;
    }

    Notez que le Regular Expression est egalement modifié pour prendre en consideration le trait d’union.

    HTH

    Max Wyss.

    en réponse à : Nombre de ligne de script dans un bouton. – #53833
    maxwyss
    Membre

    La communauté anglophone appelle ça « the even number curse ».

    Max Wyss.

    en réponse à : Nombre de ligne de script dans un bouton. – #53830
    maxwyss
    Membre

    Il depend de la longueur des lignes… si chaque ligne a 1500 charactères, il y a une limite…

    En fait, l’editeur interne de Acrobat a une limitaion a 32k characteres. Si on utilise un editeur externe, par exemple NoteTab Pro ou BBEdit, la limite est dans les MB…

    Mais comme Merlin dit, Acrobat X est vraiment problematique (c’est la raison pourquoi je ne l’utilise que pour tout derniers tests, si le client le demande.

    Max Wyss.

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

    Merlin: Le fichier est absolument adequate pour demonstrer ce qu’il est prevu pour. Le script ancien fonctionne toujours, même avec Acrobat XI. En fait, ce fait est un peu etonnant, concernant la non-longéivité de autres implementations de scripting… donc une autre preuve que les investissements dans PDF (et AcroForms) sont bien justifiés.

    Max Wyss.

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

    Bonjour Kalo: Je viens de telecharger le fichier example, et je note que cet example utilise une version « ancienne » de la commande de créer une page d’un modèle: spawnPageFromTemplate(), qui fait partie du Object Doc. Selon la documentation Acrobat JavaScript, cette méthode ist considerée obsolète, et il est recommandé de utiliser spawn() du Object Template. Neanmoins, les arguments de la méthode sont similaires, et en fait, le flag pour renommer les champs est posé, Si on crée une troisième page, les noms de champs sont adaptés.

    Le problème avec le fichier démo est que la première page a été créée par la même methode, devenant la deuxième page, et ensuite, la première page a été effacée. Pour être consistant, on aurait du renommer les champs de la (nouvelle) première page en « P0.trombi.xxx ».

    Cet example est une demonstration (pas prévu, certainement) de ce qui peut se passer si on a des pages créées d’un modèle et on « joue » avec des pages…

    Le code pour créer une nouvelle page est vachement simple, et il est associé au champ « P1.trombi.reseticon ».

    HTH.

    Max Wyss.

    en réponse à : Attribution de script sur bouton. – RÉSOLU #53791
    maxwyss
    Membre

    Je ne peux pas prouver, mais je crois que pour une simple connection (deux expressions logiques) & donne le resultat correct. La cause est que JavaScript est « loosely typed », qui veut dire que le type d’une variable ou d’un expression est adapté à la fonction. Donc true serait converti à 1 et false à 0. Et maintenant, on a des integers, qui faisant le bitwise AND resultent à 1 seulement si les deux sont 1. Et le resultat (0 ou 1) est reconverti à false ou true…

    Max Wyss.

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

    Kalo: Le code pour créer une page du modèle, a une option qui renomme les champs sur les pages. Avec ça, on n’a pas cet effet.

    en detail: template.spawn() a l’option bRename qui devrait être active (true) par defaut.

    HTH.

    Max Wyss.

    en réponse à : Attribution de script sur bouton. – RÉSOLU #53789
    maxwyss
    Membre

    Selon « JavaScript, the Definitve Guide » by David Flanagan, publié par O’Reilly, il y a une grande difference entre & et &&.

    & est « bitwise AND » (je cite: « The & operator performs a Boolean AND operation on each bit of its integer arguments.
    A bit is set in the result only if the corresponding bit is set in both operands. »). Cet operateur utilise des integers et fait la comparaison.

    && est « logical AND », et ist normalement utilisé pour combiner des expressions logiques.

    Il est donc très dangereux de dire que & et && sont le même.

    Max Wyss.

    maxwyss
    Membre

    Je suis heureux d’entendre que ça marche maintenant.

    Max.

    maxwyss
    Membre

    Pour acceder un champ avec prefix, on utiliserait

    this.getField(myPrefix + « DATE »)

    is le prefix a été nommé « myPrefix ». Ceci fonctionne egalement si on travaille sans prefix; dans ce cas … myPrefix = «  »

    Si on utilise le code indexOf(name), et on utilise le nom de base, is n’est pas necessaire de connaitre le nom du modèle, car il arrive automatiquement dans le prefix.

    HTH.

    Max Wyss.

    maxwyss
    Membre

    Pour differencier les champs sur des pages spawned d’un modèle, le defaut est de additionner un prefix au nom des champs du modèle.

    Ce prefix se compose de P plus le numéro logique de la page crée au temps de la création, plus le nom du modèle (donc dans l’example « P1 » (la deuxième page du document a été crée par l’action spawn), et le nom du modèle.

    La consequence pour des scripts est de prendre en compte ce prefix. Lors de l’action spawn, on sait le numéro de la page crée, et on pourrait donc sauvegarder ce prefix dans un array (IMHO, la methode la plus simple). Pour des calculations automatiques dans la page, on peut deduire le prefix du nom du champ contenant la calculation en utilisant event.target.name , par example

    var myPrefix = event.target.name.substring(0,event.target.name.indexOf(« DATE »)) ;

    (notez que cette ligne n’est pas verifiée; le point avant « DATE » devrait être inclus dans le prefix; si ce n’est pas le cas, utilisez

    …(event.target.name.indexOf(« DATE »)+1)

    HTH

    Max Wyss.

    en réponse à : Date en en-tête de pied de page. – RÉSOLU #53661
    maxwyss
    Membre

    Bonjour KALO,

    Deux choses avec ma réponse:

    a) L’événement « willPrint » est accedé (en Acrobat 9) par le menu Options avancées –> Traitement du document –> Définir les actions de scripts –> Le document sera imprimé

    b) La ligne de code à entrer est :

    this.getField(« printdate »).value = « Date d’impression :  » + util.printd(« dd/mm/yyyy », new Date() ;

    HTH.

    Max Wyss.

    en réponse à : Date en en-tête de pied de page. – RÉSOLU #53659
    maxwyss
    Membre

    Une possibilité est de placer un champ texte sur les pages. Nommons ce champ « printdate », et faisons-le visible qu’en impression.

    Puis nous créons un petit JavaScript dans le willPrint événement:

    this.getField(« printdate »).value = util.printd(« dd/mm/yyyy », new Date() ;

    Voilà…

    HTH

    Max Wyss.

    maxwyss
    Membre

    LiveCycle Designer n’est plus inclus dans le package Acrobat Pro Windows. Ca est correct. LiveCycle Designer est disponible comme applicaiton autonome du site Adobe, section LiveCycle.

    LiveCycle Designer a une très bonne raison d’êtere: la création des documents utilisés par les differents serveurs LiveCycle (Forms Server, Document Server, Output Server etc.). Pour cela ce programme est necessaire. Donc, ce programme wa exister le long que les serveurs LiveCycle existent.

    Ce que n’est plus le cas, (et IMHO, n’aurait jamais pu fait) est l’inclusion avec un logiciel Acrobat.

    Max Wyss.

    maxwyss
    Membre

    Pour une solution « rapide et sale » (quick and dirty), on pourrait utiliser aucun format pré-defini, mais le code JavaScript suivant dans l’èvènement Format du champs:

    event.value = util.printf(« %,2.2f »,event.value).toString().replace(/./gim, » « ) ;

    HTH.

    Max Wyss.

    en réponse à : Ajout de champs à l’aide d’un bouton. – RÉSOLU #53508
    maxwyss
    Membre

    Ca pourrait être un petit peu plus simple à effectuer dans LiveCycle Designer, mais dans certaines limites, il se fait aussi bien avec Acroforms (the format de formulaire original PDF). Il faut un petit peu de programmation en Acrobat JavaScript. Pour cela il est indispensable de se familiariser avec la documentation de Acrobat JavaScript (qui fait partie du Acrobat SDK, à telecharger du site Adobe).

    HTH

    Max Wyss.

Affichage de 25 réponses de 51 à 75 (sur un total de 95)