Question

Je suis en train de comprendre comment faire un lien hypertexte dans un formulaire Livecycle qui pointe vers une URL qui changera des jours différents que la forme est rendue. Par exemple un jour je pourrais vouloir l'hyperlien pour pointer vers:

monsiteweb / mypage? Option = XXX

et un autre jour, je veux qu'il pointe vers:

monsiteweb / mypage? Option = YYY

Le XXX et YYY peuvent être passés assez facilement dans les données du formulaire au format XML, mais je ne sais pas comment faire en sorte que le lien hypertexte est modifié pour correspondre à cela.

Toutes les suggestions?

Était-ce utile?

La solution

Ceci peut être accompli avec JavaScript dans LiveCycle Designer. Le script suivant, placé sur l'événement docReady du formulaire vous permet de modifier dynamiquement l'URL d'un objet texte.

 form1::docReady - (JavaScript, client)
// If this code is running on the server, you don't want it to run any code 
// that might force a relayout, or you could get stuck in an infinite loop
if (xfa.host.name != "XFAPresentationAgent") {

    // You would load the URL that you want into this variable, based on 
    // whatever XML data is being passed into your form
    var sURL = "www.stackoverflow.com"; // mywebsite/mypage?option=xxx

    // URLs are encoded in XHTML.  In order to change the URL, you need 
    // to create the right XHTML string and push it into the Text object's 
    // <value> node. This is a super simple XHTML shell for this purpose.  
    // You could add all sorts of markup to make your hyperlink look pretty
    var sRichText = "<body><p><a href=\"" + sURL + "\">Foo</a></p></body>";

    // Assuming you have a text object called "Text1" on the form, this 
    // call will push the rich text into the node.  Note that this call        
    // will force a re-layout of the form
    this.resolveNode("Text1").value.exData.loadXML(sRichText, false, true);
}

Il y a quelques mises en garde: les URL dans Acrobat ne sont pris en charge dans Acrobat 9.0 et versions ultérieures. Donc, si quelqu'un en utilisant une ancienne version d'Acrobat ouvre votre formulaire, les URL ne fonctionnera pas.

En outre, comme vous pouvez le voir « if (xfa.host.name! = ...) » ligne, ce code ne fonctionnera pas correctement si le formulaire est généré sur le serveur, car en forçant un re mise en page d'une forme au cours docReady peut causer des problèmes sur certaines anciennes versions du serveur LiveCycle. Si vous avez besoin d'exécuter ce script sur le serveur, vous devriez probablement choisir un autre événement forment alors :: docReady.

Autres conseils

un certain nombre de plaintes des utilisateurs en WorkSpace que les liens en cliquant les rouvrit dans le même onglet afin qu'ils perdent leur forme WorkSpace, et il n'y a aucune possibilité de modifier ce dans Designer 11. Je pense que la solution je suis venu avec pour cela serait travailler pour vous aussi.

Je fait des boutons sans frontière et sans arrière-plan, et dans leur cas de clic cette ligne (en Javascript, exécutez au client)

app.launchURL("http:/stackoverflow.com/", true);

Il serait facile d'ajouter une logique de choisir la bonne URL en fonction du jour et il ne cause aucune forme re-rendu.

Dans certains endroits où l'hyperlien est en ligne avec un autre texte, je laisse le texte du bleu lien et souligné mais sans lien, et il suffit de placer le bouton (pas de fond, pas de frontière, pas de légende) au-dessus. Ne nécessite en place et pas coulé subforms pour cela de travailler, donc en fonction de votre mise en page, il pourrait être un peu maladroit.

Wow, juste réalisé que je suis super en retard à la fête. Eh bien, pour toute personne utilisant ES4 face à un problème similaire. . .

Nous avons fini en utilisant un composant 3ème partie pour manipuler les hyperliens du PDF ... souhaite qu'il y ait une meilleure solution que celle-ci coûte environ 1000 $.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top