abracadabraPDF › Forums › PDF – Général › Taille d’une zone de texte variable en fonction de son contenu
- Ce sujet est vide.
- CréateurSujet
- 4 juin 2009 à 11:06 #43716
patlux
MembreBonjour 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
- CréateurSujet
- AuteurRéponses
- 4 juin 2009 à 12:24 #50177
Merlin
Maître des clésHé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:5 juin 2009 à 10:45 #50178patlux
MembreTant pis, je vais essayer de survivre avec cette mauvaise nouvelle…. :mecontent:
Merci Merlin
5 juin 2009 à 12:15 #50179Merlin
Maître des clésRé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]
5 juin 2009 à 13:31 #50180patlux
MembreC’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
8 juin 2009 à 15:49 #50181alex
ParticipantAvec 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.8 juin 2009 à 15:53 #50182Merlin
Maître des clésCa c’est de l’info !
:bravo:
10 juin 2009 à 11:46 #50183patlux
MembreBonjour 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
12 juin 2009 à 08:10 #50184alex
ParticipantSur 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.
12 juin 2009 à 16:44 #50185Merlin
Maître des clésWaow !!!
😎
16 juin 2009 à 08:59 #50186patlux
MembreImpressionnant!
Super!….merci :fleurstulipes: :fleurstulipes:
3 septembre 2009 à 13:29 #50187Med80
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’avance3 septembre 2009 à 15:36 #50188Merlin
Maître des clésCe 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:
7 septembre 2009 à 08:47 #50189Med80
InvitéJE me suis arrange en faite acrobat le fait l’application le gere directement.
Merci de votre reponse
8 septembre 2009 à 09:09 #50190Merlin
Maître des clésJe 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: - AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.