2009-07-22 25 views
2

Ich versuche herauszufinden, wie Sie einen Hyperlink in einem Livecycle-Formular erstellen, der auf eine URL verweist, die sich an verschiedenen Tagen ändert, an denen das Formular gerendert wird. 1 Tag zum Beispiel auf, ich könnte wollen, dass der Hyperlink Punkt:?Dynamischer Hyperlink im Livecycle-Formular

mywebsite/mypage option = XXX

und an einem anderen Tag ich es zeigen soll:

mywebsite/mypage ? option = YYY

Die XXX und YYY können ziemlich einfach als XML in die Daten des Formulars übergeben werden, aber ich weiß einfach nicht, wie man es so macht, dass der Hyperlink entsprechend geändert wird.

Irgendwelche Vorschläge?

Antwort

3

Dies kann mit JavaScript in LiveCycle Designer erreicht werden. Mit dem folgenden Skript, das im Ereignis docReady des Formulars platziert wird, können Sie die URL eines Textobjekts dynamisch ändern.

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); 
} 

Es gibt ein paar Vorbehalte: URLs in Acrobat werden nur in Acrobat 9.0 und höher unterstützt. Wenn also jemand, der eine ältere Version von Acrobat verwendet, Ihr Formular öffnet, funktionieren die URLs nicht.

Wie Sie aus der Zeile "if (xfa.host.name! = ...)" sehen können, wird dieser Code nicht ordnungsgemäß ausgeführt, wenn das Formular auf dem Server generiert wird, da er ein re erzwingt - Das Layout eines Formulars während docReady kann Probleme bei bestimmten älteren Versionen des LiveCycle-Servers verursachen. Wenn Sie dieses Skript auf dem Server ausführen müssen, sollten Sie wahrscheinlich ein anderes Ereignis als form :: docReady auswählen.

0

Beendet mit einer Drittanbieter-Komponente, um die PDF-Hyperlinks zu manipulieren ... wünschte, es gäbe eine bessere Lösung, da diese etwa $ 1000 kostet.

1

Ich habe eine Reihe von Beschwerden von Benutzern in WorkSpace, dass beim Klicken auf Links sie auf der gleichen Registerkarte geöffnet, so dass sie ihre WorkSpace-Formular verloren, und es gibt keine Option, das in Designer 11 zu ändern. Ich denke, die Lösung, die ich dafür kam würde auch für dich arbeiten.

Ich habe Tasten ohne Grenze und ohne Hintergrund, und in ihrem Click-Ereignis haben diese Zeile (in Javascript, um Client ausgeführt)

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

Es wäre leicht, eine gewisse Logik hinzuzufügen, die zu wählen Die richtige URL basiert auf dem Tag und führt nicht zum erneuten Rendern des Formulars.

An einigen Stellen, an denen der Hyperlink mit anderem Text übereinstimmt, lasse ich den Text des Links blau und unterstrichen, aber ohne Hyperlink, und platziere einfach den Button (kein Hintergrund, kein Rahmen, keine Beschriftung) darüber. Benötigt positionierte und nicht fließende Unterformulare, damit das funktioniert, so könnte es je nach Layout etwas klobig werden.

Wow, gerade realisiert, ich bin super spät auf die Party. Nun, für alle, die ES4 verwenden, die ein ähnliches Problem haben. . .