我目前正在开发一个函数(在Buttonclick之后启动),用于在Lotus Notes(IBM Domino Designer 9.0 Social Edition Release 9.0)中打印文档。我有一个自定义控件,可以在数据库中创建一个新文档。保存文档后,它以只读模式打开。你有一个按钮,它会将你重定向到一个新窗口,在那里显示相同的内容,没有任何布局和其他内容(只有文本)。现在可以用Ctrl+P打印页面了。这有两个不同的xPages。
- 分发.xsp
- 分发打印.xsp
首先,我使用
path = facesContext.getExternalContext().getRequest().getRequestURL();
以获取当前页面URL。之后,可以选择将路径(Distribution.xsp)的当前页面替换为DistributionPrint.xsp.
var replacePage = @RightBack(path, "/");
path = @ReplaceSubstring(path, replacePage, "DistributionPrint.xsp");
当我测试它时,更换成功了。之后,我为特定文档构建一个新的URL,以便使用新路径打开。最后,所有内容都被放入视图中。postScript方法:
var docid = docApplication.getDocument().getUniversalID();
view.postScript("window.open('"+path.toString() + "?documentId=" + docid + "&action=openDocument"+"')")
现在我的问题开始了。在我99%的尝试中,新窗口会像我说的程序一样打开。但有些文档中,我点击按钮,他不会打开新窗口,而是试图打开旧的Distribution.xsp url。我已经通过使用debugtoolbar测试了他想要在这类文档中打开的路径。单击按钮的结果返回应该打开的完全正确的URL。我也可以复制那个url并手动粘贴到我的浏览器=>它很有效!但是,如果我想通过单击按钮打开该URL并查看PostScript,则不会发生任何事情。
有人和我一样解决过同样的问题吗?也许你们中的一个人可以帮我解决那个问题。这真的很烦人,所有的东西都能在我99%的文档中找到,但在某些文档中,尽管给定的url是100%正确的,但它却不起作用。
感谢大家的帮助!
尝试将代码添加到页面上的javascript函数中,并从视图中调用该函数。postscript代码或者,正如帕努建议的那样,将其添加到onCompete代码
如果URL正确,则听起来像是view.postScript
有问题。尝试使用<xp:this.onComplete>
。
其他尝试:
- 使用
var w = window.open(..
。纯window.open
可能会更改的URL当前窗口 - 用
alert()
双击URL
您可能是找错了树。您是否尝试过创建第二个CSS样式表而不是创建第二页进行打印?
使用@Media Print,您可以告诉浏览器使用该样式表进行打印。在那里,您可以设置所有要显示的导航元素:没有,它们就不会打印。
不需要为打印内容维护单独的XPage。
感谢大家的建议。Fredrik Norling的解决方案对我很有效。我把Code放进一个函数中,点击按钮调用它。现在,每个页面都按预期打开了。非常感谢你的帮助!