利用WebBrowser彻底解决Web打印问题(包括后台打印)
BS架构下的打印大家是怎么解决的呢,我最近作了一个项目正好负责这一块,不仅要求打印页面的特定部分,还要求有后台的批量打印,在网上查了一些资料,最后终于解决了。抱着“取之于众服务于众”的思想,我总结了一下,把它拿到网上来与大家分享,希望能帮助遇到类似问题的朋友。 【WebBrowser控件详解及其在Web打印中的应用】 在BS架构的应用中,打印功能的实现往往是一项挑战,尤其是当需求涉及到部分打印和后台批量打印时。本文将介绍如何利用IE内置的WebBrowser控件来解决这些问题,使得打印操作更加便捷且高效。 WebBrowser控件是一个强大的工具,它允许在应用程序中内嵌一个完整的Web浏览器,从而能够执行各种浏览器功能,包括打印。以下是一些关键步骤和技巧: 1. **控件集成**: 要在网页中添加WebBrowser控件,可以直接在HTML代码中插入`<object>`标签,如下所示: ```html <object id="WebBrowser" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height="0" width="0"></object> ``` 或者,你也可以通过JavaScript动态添加控件,以适应不同的需求。 2. **打印操作**: - **页面设置和打印预览**:WebBrowser控件提供了`ExecWB`方法来执行各种浏览器命令。例如,要调出页面设置,可以使用: ```javascript document.all.WebBrowser.ExecWB(7, 1); ``` - **直接打印**:直接调用打印命令,可以使用: ```javascript document.all.WebBrowser.ExecWB(8, 1); ``` 3. **隐藏不打印的元素和分页**: 利用CSS的`Media`属性,可以为打印样式单独定义规则。在`<style media="print">`中设置的样式只在打印时生效。比如,要隐藏类名为`Noprint`的元素,可以在打印样式表中写入: ```css <style media="print" type="text/css"> .Noprint { display: none; } </style> ``` 而使用`page-break-after: always;`可以强制分页,例如: ```css .PageNext { page-break-after: always; } ``` 这样,添加了`class="PageNext"`的元素后面就会自动开始新的一页。 4. **打印页面的特定部分**: 如果需要打印页面的某个特定部分,可以通过创建一个新的页面,将这部分内容放入一个IFrame中。然后通过调用IFrame的打印方法,实现只打印IFrame内的内容。例如: ```html <iframe style="visibility: visible" name="FrameId" width="100%" height="30%" src="NeedPrintedPage.asp"></iframe> ``` 并编写JavaScript函数`printFrame`来打印指定的IFrame: ```javascript function printFrame(frame, onfinish) { // 执行打印逻辑... } window.print = printFrame; ``` 这样,通过`printFrame(FrameId)`就可以只打印IFrame中的内容了。 5. **后台打印**: 后台批量打印通常涉及到自动化和脚本技术。可以使用Windows Script Host(WSH)结合VBScript或JScript来控制WebBrowser控件进行无界面的打印操作。创建一个脚本文件,实例化WebBrowser对象,导航到需要打印的URL,然后调用打印方法。这种方法需要确保脚本有权限访问和控制WebBrowser控件。 6. **优化和注意事项**: - 为了确保最佳的打印效果,需要测试不同浏览器和操作系统上的兼容性。 - 对于复杂的页面布局,可能需要调整CSS样式来适应打印媒介。 - 考虑到用户可能会禁用JavaScript,确保提供一种非JavaScript的备份方案。 总结,通过合理运用WebBrowser控件和相关的CSS及JavaScript技术,我们可以实现BS架构下复杂而灵活的打印需求,包括部分打印和后台批量打印。这个解决方案不仅易于实施,而且对于用户来说也是无感知的,提升了用户体验。




















- 粉丝: 5
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 软件工程实验心得.doc
- 面对课程改革-如何利用网络在语文阅读教学中培养学生的创新能力.docx
- 浅论计算机网络信息安全中数据加密技术.docx
- 自媒体时代网络视频传播中视觉符号意旨分析.docx
- 如何安全高效的进行大数据计算机信息处理.docx
- 浅析互联网+背景下基层党建工作创新.docx
- 大数据+营销究竟有多精准?.docx
- 自己的学习历程,重点包括各种好玩的图像处理算法、运动捕捉、机器学习
- 年度计算机机房设备战略市场规划报告.docx
- 2022 年吴恩达机器学习课程学习笔记
- 在线学习系统自动挂机机器人
- Scala编程入门与实践
- 南京大学 2019 年春季学期机器学习导论课程资料汇编
- 基于情感字典与机器学习的股市舆情情感分类可视化研究
- 基于支持向量机算法的机器学习验证码识别研究
- 唐宇迪老师主讲的机器学习系统课程


