Donnez vie à vos documents numériques !
 

Taille d’une zone de texte variable en fonction de son contenu

abracadabraPDF Forums PDF – Général Taille d’une zone de texte variable en fonction de son contenu

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #43716
    patlux
    Membre

    Bonjour tout le monde,

    dans un formulaire, est il possible de créer une zone de texte d’une taille minimale qui grandit au fur et à mesure qu’on la remplit de texte. Est-ce-qu’il existe une fonction ou un script…? (je travaille dans Acrobat pro 8.0.0 sur Mac)

    Il me semble d’avoir déjà rencontré ce type de formulaire…

    si quelqu’un a une solution, ça sauverait ma journée

    merci d’avance

Affichage de 14 réponses de 1 à 14 (sur un total de 14)
  • Auteur
    Réponses
  • #50177
    Merlin
    Maître des clés

    Hélas, non.

    C’est une question récurrente, mais dans Acrobat on doit se contenter de l’inverse : taille du champ fixe, et taille de la police qui s’ajuste automatiquement.
    Une horreur.
    :mur:

    Pour faire ça il faut voir du coté de Designer (livré avec Acrobat Pro-Extended, sur Windows uniquement).
    :indecis:

    #50178
    patlux
    Membre

    Tant pis, je vais essayer de survivre avec cette mauvaise nouvelle…. :mecontent:

    Merci Merlin

    #50179
    Merlin
    Maître des clés

    Réflexion faite, j’ai bien un exemple de PDF contenant un champ de texte qui se duplique et se continue sur un autre page quand il est plein.

    Il repose sur des tonnes de JavaScripts avec comptage des caractères et tout et tout…

    Peut-être que cela pourrait t’aider ?

    Ci-joint.

    :soleil:

    PS : je précise aux grincheux que j’ai l’autorisation de son auteur pour diffuser ce fichier PDF
    😎

    [attachment deleted by admin]

    #50180
    patlux
    Membre

    C’est tout à fait parfait et très gentil de ta part, ça ne va pas tout à fait résoudre mon problème actuel, mais ça m’est super utile pour d’autres boulots que j’ai en cours

    re-merci et bon weekend  :)

    #50181
    alex
    Membre

    Avec un JavaScript, on peut très bien augmenter la taille d’un champs de texte en fonction du nombre de caractères saisis par l’utilisateur avec:this.getField(« MonBeauChampquigrandit »).rect=rectangle où rectangle est un tableau de quatre paramètres.
    Ces quatre paramètres sont variables en fonctions du nombre de caractères this.getField(« MonBeauChampquigrandit »).value.length
    Pour que la taille suive les évolutions de la saisie on utilisera le classique event.target dans un script de touches personnalisé associé au format du champ.

    #50182
    Merlin
    Maître des clés

    Ca c’est de l’info !

    :bravo:

    #50183
    patlux
    Membre

    Bonjour tout le monde, bonjour Alex,

    quelle bonne nouvelle de savoir que tu as une solution à mon problème,  😎

    … sauf qu’en Javascript je ne touche pas une bille  :???:, …alors si peut-être tu aurais un petit exemple concret sous forme de script que je puisse copier, coller, modifier et adapter à mes besoins, ….ça me ferait vachement plaisir

    #50184
    alex
    Membre

    Sur la page, j’ai créé deux champs texte:
    Le champ « Reference », caché en lecture seule qui est placé sur la future zone de saisie.
    Le champ « MonBeauChampQuiGrandit », future zone de saisie n’importe où, elle sera redimensionnée par le script pour couvrir le champ précédant.
    En ouverture de page on ajoute le script suivant:

    fsaisie=this.getField(« MonBeauChampQuiGrandit »);
    fref=this.getField(« Reference »);
    fsaisie.rect=fref.rect;
    lg=fsaisie.value;
    Dans le champ « MonBeauChampQuiGrandit », onglet « Format>Personnalisé>Format de touche personnalisé » j’ai saisi le script suivant:
    if(!event.willCommit)
    {
    console.clear();
    rectangle=fref.rect;
    //calcul de la largeur de référence
    larg=rectangle[2]-rectangle[0];
    //lecture du contenu du champ
    lg=this.event.value;
    //calcul de la nouvelle abscisse, il faudrait ajouter une limite
    newlarg=(lg.length)*larg/10;
    rectangle[2]=Math.max((rectangle[0]+newlarg),(rectangle[0]+larg));
    //Pour les curieux:
    console.println(« Chaîne de caractères= »+lg);
    console.println(« Longueur chaine de caractères= »+lg.length);
    console.println(« Longueur variable du champ de saisie= »+newlarg);
    console.println(« Longueur mini du champ de saisie= »+larg);
    //On dimensionne si nécessaire
    if(event.change)
    {
    fsaisie.rect=rectangle;
    }
    }

    Au delà de 10 caractères le champ est redimensionné proportionnellement à la longueur de la saisie. On peut faire mieux mais c’est déjà ça.

    #50185
    Merlin
    Maître des clés

    Waow !!!

    😎

    #50186
    patlux
    Membre

    Impressionnant!
    Super!

    ….merci  :fleurstulipes: :fleurstulipes:

    #50187
    Med80
    Invité

    Bonjour,

    Je viens de commencer a travailler avec lifecycle designer, ( je suis un petit scarabee qui decouvre)

    Je n’arrive pas a appliquer le code d’Alex, je sais pas comment l’inserer.

    Je ne trouve pas les chemin decrit dans le post.

    Je souhaiterais inserer une zone variable de 35 lignes Max avec 50 caracteres de long qui aille a la ligne une fois la limite atteinte.

    Quelqu’un peut m’aider? :Euuuh:
    Merci d’avance

    #50188
    Merlin
    Maître des clés

    Ce qui est écrit ci-dessus vaut pour AcroForms et non pas pour XFA…

    En clair cela vaut pour les formulaires créés dans Acrobat mais pas (forcément) pour ceux créés avec LiveCycle Designer.

    Les faits que les formulaires issus de ces deux applications soient tous des PDF prête à confusion car se sont bien deux technologies différentes, et incompatibles, qui sont derrière…

    :indecis:

    #50189
    Med80
    Invité

    JE me suis arrange en faite acrobat le fait l’application le gere directement.

    Merci de votre reponse

    #50190
    Merlin
    Maître des clés

    Je ne comprend pas bien ce qu’Acrobat fait directement…

    S’il s’agit de champs de texte de taille variable, merci de nous faire partager ta technique !
    :priere:
    :extra:

Affichage de 14 réponses de 1 à 14 (sur un total de 14)
  • Vous devez être connecté pour répondre à ce sujet.