Donnez vie à vos documents numériques !
 

maxwyss

Toutes mes réponses sur les forums

Affichage de 25 réponses de 26 à 50 (sur un total de 95)
  • Auteur
    Réponses
  • en réponse à : Fusion de formulaires. – #54438
    maxwyss
    Membre

    Bonjour,

    La terminologie « Champ1#0 » , « Champ1#1 », « Champ1#2 », etc. indique les occurrence de champ « Champ1 ». Cela veut dire qu’il s’agit du même champ, qui existe en trois endroits dans le document. La documentation Acrobat JavaScript (qui fait partie du Acrobat SDK, à télécharger sur le site Adobe) explique cela avec ldes propriétés au niveau « field » (par example le nom du champ) et au niveau du « widget » (par example l’alignement du champ). Pour des propriétés du niveau « widget », on fait la distinction dans JavaScript avec les suffices .0, .1, .2 etc.

    Maintenant, la valeur (value) d’un champ est au niveau « champ ». Ce que veut dire que si on fusionne les fichiers, le contenu des champs va être egalisé. Donc, si on veut composer plusieurs instances du fichier et garder les valeurs de champs différents, il faut prendre d’autres précautions. Ou il faut utiliser des outils adéquats (disponibles, par exemple, chez Appligent ou des PDF-Tools).

    HTH

    Max Wyss.

    maxwyss
    Membre

    Pour de telles quantités, et particulièrement si PDF-A est demandé, il faut des outils adéquats. Acrobat est trop lent, et « grâce » à des trous de mémoire, le nombre de fichiers traitable par automatisme est limité.

    Une des premières adresses pour des outils haute performance pour la création de PDF from .doc ou des autres formats « office » est PDF-Tools AG (http://www.pdf-tools.com/).

    HTH

    Max Wyss.

    en réponse à : Deux champs texte dont un seul en lecture seule. – RÉSOLU #54379
    maxwyss
    Membre

    Il est commun d’avoir des champs de copie ou je ne veux pas que l’utilisateur change des valeurs. Pour passer des informations du champ d’entrée il y a plusieurs possibilitiés (notez que le champ d’entrée porte le nom « champDEntree » et les champs de copie « champDEntröö_1 »:

    • « push »: lorsque la valeur dans le champ d’entrée est confirmée, elle est poussée vers les champs de copie. Dans l’événement Validation du champ d’entrée on a le code suivant:

    this.getField(event.target.name + « _1 »).value = event.value ;

    notez que cette ligne de code est reutilisable, si la convention de nom de champs est maintenue; on pourrait même créer une fonction au niveau du document.

    • « pull »: lorsque la valeur dans le champ d’entrée est confirmée, la sequence de calcul est executée automatiquement, et donc, on peur executer le code suivant dans l’événement Calcul:

    event.value = this.getField(event.target.name.substr(0, event.target.name.length-2)).value ;

    (pour avoir du code portable).

    Personellement, je préfère la première méthode parce qu’elle provoque moins de calculs, et est donc plus performante.

    HTH

    Max Wyss.

    en réponse à : Envoyer un formulaire par messagerie internet. – RÉPONDU #54349
    maxwyss
    Membre

    Il semble que le fichier de l’image n’est pas ou plus disponible…

    maxwyss
    Membre

    Merci pour les compliments, Merlin.

    Le calendrier/date picker est, comme déjà dit, disponible; contactez-moi en privé.

    maxwyss
    Membre

    J’arrive un peu tard dans la discussion, voici quand-même quelques commentaires :

    • Infopath : Système pour formulaires électroniques développé par Microsoft, utilisant MS Word comme moteur de développement et affichage. Il y a quelques entreprises qui travaillent avec Infopath, mais c’est plutôt un environnement fermé. Il faut un environnement strictement Microsoft, et très bien géré.

    • LiveCycle Designer et XFA : Les sources de ce système ont à peu près le même âge que Acrobat et PDF pour formulaires. Originalement développé par JetForms pour la base des serveurs de distribution de formulaires. JetForms s’est re-nommé Accelio et a été acquis par Adobe. Il y avait une période chez Adobe ou on avait « XFA über Alles », et c’est pourquoi on a co-emballé LiveCycle Designer avec Acrobat Pro pour Windows (Adobe n’a jamais considéré Mac comme plateforme de développement de formulaires (bon, ils ont toujours demandé les lemmings des grandes corporations lors leurs sondages). On a ajouté à Reader (et Acrobat) la capacité d’utiliser des formulaires XFA. Avec Acrobat XI, LiveCycle Designer ne fait plus partie du produit « Acrobat Pro », mais ce logiciel est vendu séparément par les canaux pour entreprises (et donc remis à sa place originale où il peut briller et être vraiment utile).

    Notez que XFA ne fait pas partie de la norme ISO 32000, mais est indiqué comme « aide supplementaire », ce que veut dire qu’il n’est pas illégal de complémenter un fichier PDF avec XFA.

    • Formulaires dynamiques avec PDF : Il est absolument possible de créer des formulaires dynamiques avec Acroforms. Si la granularité est au niveau d’une page, l’utilisation des modèles est élémentaire et existe depuis des années. Si la granularité est plus fine qu’une page, c’est un petit peu plus difficile et complexe, mais de tels formulaires existent et ils sont utilisés en production. Pour une implémentation spécifique, contactez-moi en privé

    • Calendrier pour la date (« date picker »): Il existe plusieurs solutions. Entre outre, une solution très facile a intégrer, mais bien performante a été développée par « yours truly »; pour plus de détails contactez-moi en privé (je suis en train de commercialiser cette solution, mais ça va durer un peu de temps; néanmoins, elle est disponible sur demande).

    HTH

    Max Wyss.

    en réponse à : Interdire d’imprimer des documents PDF. – RÉPONDU #54251
    maxwyss
    Membre

    Merci pour les fleurs

    En fait, la qualité du PDF généré par OpenOffice est très haute, en utilisant GhostScript (et ses libraries).

    en réponse à : Interdire d’imprimer des documents PDF. – RÉPONDU #54249
    maxwyss
    Membre

    Une autre possibilité de évaluer au moins serait OpenOffice. OpenOffice contient un export de PDF de qualité acceptable. Mais je ne suis pas sur si des liens etc. sont exportés; je crois, mais il faudrait verifier. Mais le prix de OpenOffice ne peut pas être battu…

    HTH

    Max Wyss.

    en réponse à : Formule condition si / alors. – RÉSOLU #54148
    maxwyss
    Membre

    Dans cette situation, il n’est même pas nécessaire d’utiliser une decision; les mathématiques le font directement :

    var P1 = this.getField(« Texte_49 »).value*1 ;
    event.value = Math.max(100000, (100000 + ((P1-100000)/2)))) ;

    HTH

    Max Wyss.

    maxwyss
    Membre

    Le code pour cette conversion est un simple one-liner:

    var myValue;
    myValue = Math.ceil(myValue*0.5) * 2 ;

    et nous avons toujours des chiffres pairs…

    HTH

    Max Wyss.

    en réponse à : Commande spawnPageFromTemplate – RÉSOLU #54136
    maxwyss
    Membre

    Pour ça, il faut utiliser les modèles de page. Procédez comme suit (dans Acrobat XI):

    1. Ouvrez le document à la page qui devrait devenir le modèle.

    2. Ouvrez le panneau Outils, et sélectionnez la section Traitement du document

    3. Cliquez sur Modèles de page

    4. Dans le dialogue donnez un nom pour ce modèle, puis cliquez sur Ajouter; dans notre example ça sera « myTemplate »

    5. Confirmez et fermez le dialogue

    6. Ouvrez la Console ( ou )

    7. Entrez le code

    this.getTemplate(« myTempate »).spawn(4, false, false) ;

    8. Executez le code

    Et ça devrait créer une copie de la page choisie après la page 5 (Acrobat commence le compte des pages à zéro)

    Si la nouvelle page est introduite après le numéro de page incorrect, corrigez le premier argument dans la ligne de code.

    Une explication de la méthode utilisée se trouve dans la documentation pour Acrobat JavaScript (Acrobat JavaScript Reference, qui fait partie du SDK pour Acrobat, téléchargeable du site de Adobe.

    HTH

    Max Wyss.

    en réponse à : JavaScript : je loop la boucle. – RÉSOLU #54092
    maxwyss
    Membre

    Ça fonctionn avec console.println() parce que la commande d’ecrire sur la console est dans le loop, et répété chaque fois la loop est passée. Donc le resultat est « sauvegardé » sur la console par chaque tour.

    Par contre, dans le second example, il n’y a pas cette sauvegarde dans un protocole, donc tout ce que tu vois est le tout dernier resultat.

    HTH

    Max Wyss.

    en réponse à : JavaScript : je loop la boucle. – RÉSOLU #54090
    maxwyss
    Membre

    messageList est redéfinie avec chaque loop, et donc, il est clair que le résultat n’existe que pour le dernier champ.

    Une alternative serait l’utilisation d’un array:

    var messageList = new Array()
    for (var j = 0 ; j < this.numFields ; j++) {
    messageList[j] = this.getNthFieldName(j)
    }

    ou si on veut garder l’indexe dans la liste, utilisez la ligne suivante:

    messageList =

    Dans notre cas spécifique, il n’y a aucune différence fondamentale entre un Object et un Array, parce que l’indexe est le numéro ordinale.

    HTH

    Max Wyss.

    en réponse à : Convertir un formulaire XFA en AcroForm. – RÉPONDU #52752
    maxwyss
    Membre

    Bonjour,

    Une possibilité serait d’extraire la partie XML du format XFA, et la réinterpréter pour créer des éléments Acroforms.

    Il y a également des utilitaires, par exemple de Windjack, mais les résultats ne sont pas parfait. Pour récupérer la logique, il n’est pas possible d’avoir un processus automatique, car il y a des différences fondamentales entre Acrobat JavaScript et JScript.

    Si c’est pour un projet sérieux, nous pouvons en discuter…

    HTH

    Max Wyss.

    en réponse à : Masquer les zéros si aucun nombre. – RÉSOLU #54050
    maxwyss
    Membre

    En fait, la methode proposée fonctionne, parce que l’événement Format ne change pas la valeur du champ; ça ne change que comment la valeur est affichée.

    Max Wyss.

    en réponse à : Masquer les zéros si aucun nombre. – RÉSOLU #54048
    maxwyss
    Membre

    Si 0 n’est pas une valeur « legale » (ou valide), il est simple de masquer: Dans l’èvènement Format, additonner le code JavaScript suivant:

    if (event.value == 0) {event.value = «  »}

    et ça va afficher un champ vide.

    Si le champ devrait être formatté quand la valeur est valide, le code se modifierait comme suit:

    if (event.value == 0) {
    event.value = «  » ;
    } aelse {
    event.value = util.printf(« %.2f », event.value) ;
    }

    La syntaxe du string de formattae est decrite dans la documentation Acrobat JavaScript, qui fait partie du Acrobat SDK, téléchargeable du site Adobe.

    HTH

    Max Wyss.

    en réponse à : Personnaliser l’ordre de tabulation. – RÉSOLU #54039
    maxwyss
    Membre

    En cas des formulaires AcroForm (non créés par LiveCycle Designer), chaque champ a son numéro d’ordre de tabulation. Ce numéro d’ordre de tabulation est egalement l’ordre verticale des champs.

    Pour modifier l’ordre de tabulation, il y a une possibilité, la fonction setFocus(), qu’on place normalement dans l’événement Champ désactivé (onBlur).

    Mais attention: si on fait trop, il n’est plus possible de sortir d’une suite de champs.

    HTH

    Max Wyss.

    maxwyss
    Membre

    Bienvenu dans le Forum.

    Une possibliité pour simplifier le tout est de utiliser la valeur affichée et la valeur de retour dans la liste déroulante (quantité). Dans les « Proprietés » du champ, dans la section « Options », on entre dans le 1er champ la valeur qui va être affichée, et dans le 2e champ la valeur des frais de ports.

    Le champ Port seraa rempli automatiquement, et devrait être en « lecture seule » (même chose pour le champ Total).

    Et maintenant, il faut placer un petit JavaScript dans l’événement « Calcul » du champ « Total »:

    this.getField(« Port »).value = this.getField(« Quantite »).value ;
    event.value = this.getField(« Prix »).value*1 + this.getField(« Port »).value*1 ;

    Et ça devrait fonctionner.

    HTH

    Max Wyss.

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

    L’evenement « onFocus » se nomme « champ activé », et l’evenement « onBlur » est nommé « champ desactivé ». Les deux se trouvent dans les Actions des proprietés de champ.

    HTH

    Max Wyss.

    en réponse à : Documentation linéarisation ? – RÉPONDU #53986
    maxwyss
    Membre

    Le premier choix serait les spécifications ISO 32000, dont une version peut être téléchargée gratuitement du site Adobe. (merci Adobe, sinon cela couterait normalement quelques centaines d’Euros.)

    L’autre document à étudier serait la documentation générale du SDK.

    HTH

    Max Wyss.

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

    if (KALO.value == « content »)
    {Merlin = « content aussi »;}

    :geek:

    That’s a low-cost content management system…

    hehe

    Max.

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

    @alex: Merci pour lacorrection; je n’ètais pas assez precis…

    Il y a cette discrepance entre la documentation at la realité; j’ai deposé des bug reports et des feature requests avec Adobe… peut-être au cours de la prochaine decennie, ça va être corrigé…

    Concernant la documentation « readOnly »; c’est correct dans le PDF qui fait part de la documentation du SDK pour Acrobat 10 (la version couramment disponible; il semble qu’ils unt quelques delais avec la version pour Acrobat 11.

    Max Wyss.

    maxwyss
    Membre

    Ahem… tu as raison; Acrobat 7 est une application PowerPC pour laquelle Rosetta est necessaire…

    C’est pourquoi 10.6.8 est surnommé parfois « le XP de Apple »…

    Max Wyss.

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

    @alex: J’ai vraiment oublié la possibilité des annotations qui, en fait, permettraient d’utiliser du texte si necessaire.

    Un petit problème existe avec les annotations: Même si elles sont generés readonly, elles ne sont pas, et elles sont accessibles par la sequence tab. Il faut donc prendre des mesures pour qu’elles ne soient pas accessibles. Et egalement, même si generés readonly, ils peuvent être déplacées. Auquel cas, il suffit de placer un champ transparent et readonly en dessus.

    HTH

    Max Wyss.

    maxwyss
    Membre

    Si je me souviens correctement, Rosetta n’etait plus disponible pour OSX 10.7. Donc, des applications originalement PowerPC ne fonctionnent plus. Et une fois de plus, si je me souviens correctement, rien n’a changé avec 10.8.

    Comme il me faut de temps en temps acceder Acrobat 5, je suis bloque avec 10.6.8.

    La conclusion: si Acrobat 7 fonctionne sous 10.7, il devrait fonctionner sous 10.8.

    Mais il est possible que j’ai tort… ça ne serait pas la première fois…

    HTH

    Max Wyss.

Affichage de 25 réponses de 26 à 50 (sur un total de 95)