2

我试图弄清楚如何在 Livecycle 表单中创建一个超链接,该链接指向一个 URL,该 URL 将在表单呈现的不同日期发生变化。例如,有一天我可能希望超链接指向:

mywebsite/mypage?option=XXX

在另一天,我希望它指向:

mywebsite/mypage?option=YYY

XXX 和 YYY 可以很容易地作为 XML 传递到表单的数据中,但我只是不知道如何使超链接更改为对应于此。

有什么建议么?

4

3 回答 3

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 服务器出现问题。如果你确实需要在服务器上运行这个脚本,你应该选择一个不同的事件然后 form::docReady。

于 2009-08-07T14:25:26.257 回答
1

WorkSpace 中的一些用户抱怨单击链接会在同一个选项卡中打开它们,因此他们丢失了 WorkSpace 表单,并且在 Designer 11 中无法更改它。我认为我为此提出的解决方案对您有用也。

我制作了没有边框和背景的按钮,并且在他们的点击事件中有这一行(在 Javascript 中,在客户端运行)

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

添加一些逻辑以根据日期选择正确的 URL 很容易,并且不会导致任何表单重新呈现。

在某些超链接与其他文本一致的地方,我将链接文本保留为蓝色并加下划线但没有超链接,然后将按钮(无背景、无边框、无标题)放在它上面。确实需要定位而不是流动的子表单才能工作,因此根据您的布局,它可能会有点笨拙。

哇,刚刚意识到我参加晚会超级迟到了。好吧,对于任何使用 ES4 面临类似问题的人。. .

于 2015-06-23T17:29:48.297 回答
0

最终使用第 3 方组件来操作 PDF 的超链接……希望有更好的解决方案,因为这个成本约为 1000 美元。

于 2009-07-30T17:38:23.680 回答