我试图找出如何在Livecycle表单中创建一个指向URL的超链接,该URL将在表单呈现的不同日期发生变化。例如,有一天我可能希望超链接指向:
mywebsite /我的空间?选项= XXX
在另一天,我希望它指出:
mywebsite /我的空间?选项= YYY
XXX和YYY可以很容易地作为XML传递到表单的数据中,但我只是不知道如何创建它以便更改超链接以对应于此。
有什么建议吗?
答案 0 :(得分:3)
这可以通过LiveCycle Designer中的JavaScript实现。放置在Form的docReady事件上的以下脚本将允许您动态更改文本对象的URL。
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);
}
有几点需要注意:Acrobat中的URL仅在Acrobat 9.0及更高版本中受支持。因此,如果使用旧版Acrobat的人打开您的表单,则URL将无效。
另外,正如您从“if(xfa.host.name!= ...)”行中可以看到的,如果在服务器上生成表单,则此代码将无法正常运行,因为强制重新生成docReady期间表单的布局可能会导致某些旧版本的LiveCycle服务器出现问题。如果你确实需要在服务器上运行这个脚本,你应该选择一个不同的事件,然后形成:: docReady。
答案 1 :(得分:1)
我在WorkSpace中向用户提出的一些投诉是,点击链接在同一个标签中打开它们,因此他们丢失了WorkSpace表单,并且在Designer 11中无法更改它。我认为解决方案我出现了因为那也适合你。
我制作了没有边框且没有背景的按钮,并且在他们的点击事件中有这一行(在Javascript中,在客户端运行)
app.launchURL("http:/stackoverflow.com/", true);
添加一些逻辑可以很容易地根据当天选择正确的URL,并且它不会导致任何表单重新呈现。
在超链接与其他文本一致的某些位置,我将链接的文本留下蓝色并带下划线但没有超链接,只需将按钮(没有背景,没有边框,没有标题)放在上面。是否需要定位且不流动的子窗体才能工作,因此根据您的布局,它可能会变得有点笨重。
哇,刚刚意识到我参加聚会已经很晚了。好吧,任何使用ES4的人都面临类似的问题。 。答案 2 :(得分:0)
结束使用第三方组件来操纵PDF的超链接...希望有一个更好的解决方案,因为这个成本大约1000美元。