JSP页面打印技术实战与技巧分享

需积分: 50 13 下载量 27 浏览量 更新于2024-09-11 收藏 5KB TXT 举报
"本文档总结了在JSP页面中实现打印功能的各种方法,包括简单实用的JavaScript函数和针对不同浏览器的兼容性处理。通过这些方法,开发者可以方便地控制页面内容的打印,例如选择打印特定区域或设置打印样式。" 在JSP页面中,我们经常需要为用户提供打印功能,以便他们能够将页面内容以纸质形式保存或分享。以下是一些在JSP页面中实现打印的方法: 1. JavaScript函数实现打印: - `PrintTable` 函数是一个简单的示例,它用于打印页面中某个ID指定的元素内容。通过获取页面body的innerHTML,替换为需要打印的元素内容,调用`window.print()`进行打印,最后再恢复body的原始内容。例如: ```javascript function PrintTable(Id) { var mStr = window.document.body.innerHTML; var mWindow = window; window.document.body.innerHTML = Id.innerHTML; mWindow.print(); window.document.body.innerHTML = mStr; } ``` 这样,当用户点击按钮时,只打印指定ID(如`<div id="dy">...</div>`)内的内容。 2. 针对IE的打印样式处理: 在Internet Explorer中,可以通过写入特定的CSS样式来隐藏非打印内容。这段代码会添加一个针对打印媒体(`media="print"`)的样式,使类名为`noPrint`的元素在打印时不可见: ```javascript with(document) { write("<style type=\"text/css\" media=\"print\">"); write(".noPrint { visibility: hidden }"); write("</style>"); } ``` 3. ActiveXObject实现打印预览和设置: 对于IE浏览器,可以使用ActiveXObject与Word对象(`CLSID:8856F961-340A-11D0-A96B-00C04FD705A2`)交互来实现打印预览和打印设置。例如: ```javascript function doPrintSetup() { WB.ExecWB(8, 1); // 打印设置 } function doPrintPreview() { WB.ExecWB(7, 1); // 打印预览 } ``` 4. 通用的打印函数: 除了针对IE的解决方案,还可以使用通用的JavaScript函数`window.print()`来直接触发打印操作: ```javascript function doPrint() { window.print(); // 直接打印当前页面 } ``` 5. 打印工具栏展示: 为了提供更好的用户体验,可以在页面中创建一个打印工具栏,包含返回、预览和打印按钮: ```javascript function showPrintBar() { with(document) { write("<div align=\"center\" class=\"noPrint\">"); write("<input type=\"button\" name=\"doBack\" value=\"<<\" onClick=\"history.go(-1)\">"); write("<input type=\"button\" name=\"doPrintPreview\" onClick=\"WB.ExecWB(8,1)\" value=\"打印预览\">"); write("<input type=\"button\" name=\"doPrint\" value=\"打印>>\" onClick=\"doPrint()\">"); write("</div>"); } } ``` 这段代码会在页面中插入一个包含三个按钮的div,用户可以方便地进行页面操作。 通过这些方法,开发者可以根据实际需求组合使用,实现JSP页面的灵活打印功能,同时考虑不同浏览器的兼容性问题。记住,对于其他非IE浏览器,可能需要使用不同的技术,如`@media print` CSS规则或现代JavaScript API(如`window.matchMedia`)来实现类似的功能。
2012-08-12 上传
重点: <OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0 VIEWASTEXT> </OBJECT> <input type=button value=打印 " class= "NOPRINT "> <input type=button value=直接打印 " class= "NOPRINT "> <input type=button value=页面设置 " class= "NOPRINT "> <input type=button value=打印预览 " class= "NOPRINT "> 注意: 1、CSS对打印的控制: <!--media=print 这个属性可以在打印时有效--> <style media=print> .Noprint{display:none;} .PageNext{page-break-after: always;} </style> Noprint样式可以使页面上的打印按钮等不出现在打印页面上,这一点非常重要,因为它可以用最少的代码完成最需要的功能 PageNext样式可以设置分页,在需要分页的地方 就OK了,呵呵 2、表格线粗细的设置,更是通过样式表: <style> .tdp { border-bottom: 1 solid #000000; border-left: 1 solid #000000; border-right: 0 solid #ffffff; border-top: 0 solid #ffffff; } .tabp { border-color: #000000; border-collapse:collapse; } </style> 或者: <style> .TdCs1 { border:solid windowtext 1.0pt; } .TdCs2 { border:solid windowtext 1.0pt; border-left:none; } .TdCs3 { border-top:none; border-left:solid windowtext 1.0pt; border-bottom:solid windowtext 1.0pt; border-right:solid windowtext 1.0pt; } .TdCs4 { border-top:none; border-left:none; border-bottom:solid windowtext 1.0pt; border-right:solid windowtext 1.0pt; } .underline { border-top-style: none; border-right-style: none; border-bottom-style: solid; border-left-style: none; border-bottom-color: #000000; } </style> 1、控制 "纵打 "、 横打”和“页面的边距。 (1) [removed] function SetPrintSettings() {  // -- advanced features  factory.printing.SetMarginMeasure(2) // measure margins in inches  factory.SetPageRange(false, 1, 3) // need pages from 1 to 3  factory.printing.printer = "HP DeskJet 870C "  factory.printing.copies = 2  factory.printing.collate = true  factory.printing.paperSize = "A4 "  factory.printing.paperSource = "Manual feed "  // -- basic features  factory.printing.header = "This is MeadCo "  factory.printing.footer = "Advanced Printing by ScriptX "  factory.printing.portrait = false  factory.printing.leftMargin = 1.0  factory.printing.topMargin = 1.0  factory.printing.rightMargin = 1.0  factory.printing.bottomMargin = 1.0 } [removed]