在IBM WebSphere Portal中实现可定制的打印
该函数通过递归的方法查询子节点中是否包含属性printId,如果包含,就用该printId的值查找页面中具体的对象,对该对象做节点克隆并将其替换DOM树中原有节点。因此,该函数输入的是一个用户在打印管理器中打印布局定制区中表格的DOM树对象,返回的是一个已经将实际Porlet内容进行了替换的DOM树对象。
constructPrintContent - 根据用户定制的结果构造实际打印的内容。
清单 8. 函数constructPrintContent代码
doRealPrint - 实现真正的打印功能。
清单 9. 函数doRealPrint代码
结束语
本文介绍了一种在IBM WebSphere Portal实现Portal页面定制打印的思路和方法,并讲解了示例程序。如果您在安装示例代码时碰到任何问题、对该程序有任何改进的想法或者发现了任何bug,欢迎发送邮件至shenrui@cn.ibm.com,与作者联系。
constructPrintContent - 根据用户定制的结果构造实际打印的内容。
清单 8. 函数constructPrintContent代码
该函数首先把打印布局定制区中的表格做一个克隆,将其边框改为0,然后调用traverseNoteTree函数把克隆的DOM树转换成包含实际打印内容的DOM树,最后通过属性innerHTML返回HTML内容。function constructPrintContent(){ // Do a clone dom tree of print layout table. var printLayoutCopy=byId("printLayout").cloneNode(true); var layoutTable=printLayoutCopy.getElementsByTagName("TABLE")[0]; layoutTable.border="0"; var printContent=traverseNodeTree(printLayoutCopy); dojo.debug(printContent.innerHTML); return printContent.innerHTML; }
doRealPrint - 实现真正的打印功能。
清单 9. 函数doRealPrint代码
该函数打开一个新的浏览器窗口,通过document.write将打印内容输出到新窗口中,继而调用window的print函数进行打印,最后关闭窗口,并把“打印管理器”重置。function doRealPrint(htmlContent){ var w = window.open('','page_printer','height=10,width=10'); window.focus(); w.document.write('<html>\n <head>\n'); var styleSheets = document.styleSheets; for (var i = 0; i <= styleSheets.length - 1; i++) if (styleSheets[i].href != null && styleSheets[i].href != '') w.document.write(' <link rel="stylesheet" type="text/css" href="' + styleSheets[i].href + '" />\n'); w.document.write('</head>\n'); w.document.write(htmlContent); w.document.write('<script language="JavaScript">'); w.document.write(' var links = document.getElementsByTagName("A");'); w.document.write(' for (var i = 0; i <= links.length - 1; i++) '); w.document.write('{ links[i].setAttribute("onclick","return false");'); w.document.write(' links[i].setAttribute("href","#"); }'); w.document.write(' var buttons = document.getElementsByTagName("INPUT");'); w.document.write(' for (var i = 0; i <= buttons.length - 1; i++) '); w.document.write('{ buttons[i].setAttribute("onclick","return false"); }'); w.document.write('<' + '/' + 'scr' + 'ipt>\n'); w.document.write('\n</html>\n'); w.document.close(); w.print(); w.close(); //reset Print Manager pmConsole.hide(); resetPM(); changeLayout(1); }
结束语
本文介绍了一种在IBM WebSphere Portal实现Portal页面定制打印的思路和方法,并讲解了示例程序。如果您在安装示例代码时碰到任何问题、对该程序有任何改进的想法或者发现了任何bug,欢迎发送邮件至shenrui@cn.ibm.com,与作者联系。
0
相关文章