BS架构中基于HTML组件的WEB打印技术.pdf
《BS架构中基于HTML组件的WEB打印技术.pdf》由会员分享,可在线阅读,更多相关《BS架构中基于HTML组件的WEB打印技术.pdf(4页珍藏版)》请在三一文库上搜索。
1、收稿日期2003211224 基金项目国家自然科学基金(编号:70271030) ;华中科技大学研究生院2002年研究基金资助。 作者简介梁凯春 (1978 ) , 男,硕士研究生 。蔡淑琴 (1955 - ) ,女,河南人,华中科技大学管理学院教授 ,博士生导师,研 究方向:电子商务 、 客户关系管理、 企业信息系统。 B/ S架构中基于HTML组件的WEB打印技术 梁凯春,蔡淑琴 (华中科技大学管理学院,湖北 武汉,430074) 摘 要一直以来B/ S架构下的打印问题都是B/ S系统开发中的难题,本文逐一对现有B/ S架构打印方法进行了 分析,针对它们的缺陷,提出了一种基于HTML组件的
2、更有效和更精确的打印方法,详细介绍了其原理,并给出了具体的 实现方法,实践表明该方法使用效果良好。 关键字B/ S架构;XML ;HTML组件;打印 中图分类号TP393 文献标识码A 文章编号167125330(2004)0220040204 1 前言 B/ S架构是利用不断成熟的Web 浏览器技 术 ,将浏览器的多种Script语言和ActiveX 技术结 合起来 ,用通用浏览器就实现了原来需要复杂专 用软件才能实现的强大功能,并节约了开发成本 的一种全新的软件系统构造技术。无疑 ,B/ S架 构应用程序相对于传统的C/ S架构应用程序是巨 大的进步 。 B/ S架构的优点很多,但是 ,由
3、于 B/ S架构下 客户端完全依赖于Web 浏览器,打印只能依靠 Web浏览器本身提供的打印功能。打印效果并不 理想 ,尤其是在分页和定位等方面,无法满足信息 系统中诸如需要精确控制位置的打印、 复杂的单 据报表打印 、 套打等要求的。 因此 ,研究基于Web 的打印功能的实现,对 于 B/ S架构系统有极其重要的意义。本文将基于 HTML 组件 ,提出一种较为完善的Web 打印实现 方法 。 2 现有Web打印技术分析 目前 ,常见的基于Web 的打印实现方法主要 有以下几种: (1) 直接使用 Web浏览器的打印方法来打印。 这种方法实质上是利用了浏览器自带的打印功 能 ,因而实现起来比较
4、简单,无须大量编程。但也 因此存在两方面的重大缺陷:一方面 ,无法精确的 控制打印格式和位置,分页解决的也不是很理想; 另一方面,所有需要打印的页面都要存在两个版 本 ,即原始显示的版本和打印显示的版本,增加了 开发的工作量。 (2) 将页面内容转换成word、 excel、 PDF等格 式后实现打印。在 B/ S开发中 ,常用的服务器端 脚本有 asp、 php、 jsp、 。在这些语言中 ,都 有相关的技术来实现页面内容向常用的word、 ex2 cel、 PDF等格式的转换。用户在需要打印的时候 , 通过服务器端的程序将需打印的内容转换成上述 格式的文件 ,下载到本地,再调用相关的程序
5、来实 现打印 。这种方法的优点在于,打印格式容易控 制 ,在打印之前可以在客户端程序中进行编辑 ,使 格式满足实际的要求。但是由于这种打印对客户 端应用程序的依赖度相当高,脱离了这些程序,打 印功能是无法完成的。因此 ,这种方法实现的打 印对用户来讲过于复杂,尤其是在有大批量的打 印任务时,客户端操作会过于繁琐。 (3) 利用 ActiveX 控件实现打印。在下载页面 的同时会下载一个ActiveX 控件安装在客户端 ,然 后通过这个ActiveX 控件用预先定义好的格式来 分析打印源文件从而实现打印。本质上讲,这种 方法的实现应该为C/ S架构 ,和上面提及的第二 种方法比较相近。不同的是,
6、这种方法可以根据 具体的要求来安装客户端程序,且通常客户端程 04安阳师范学院学报 2004年 序较为小巧,功能相对单一。当然 ,ActiveX 只是 其中一种比较常用的方式,也可以用JavaApplet 或者用 . net 中的 winform 嵌入浏览器来实现相同 的功能 。这种方法在实现的过程中,需要预先定 义显示页面和打印页面的数据通信接口文件,详 细定义出标题、 标注 、 表项内容等的存放格式。表 格在生成的过程中,按格式要求将打印内容存入 接口文件 ,当在打印页面中点按打印按钮提交打 印后 ,应用程序访问接口文件,读取打印内容 ,调 用 ActiveX 控件进行打印。此方法对程序员
7、的开 发要求高 ,难度比较大,另外 ,显示内容和打印内 容存储格式不同,所有的报表都要制作两份,也增 加了开发的工作量。 基于以上常用方法的分析,我们认为,B/ S架 构下的打印技术,必须要符合以下几个要求,才能 满足 B/ S系统开发中的需要: (1) 远程数据打印。由于需要打印的数据不 在本地 ,因此必须能够进行远程读取。 (2) 通用性 。在实际应用中,需要打印的页面 千差万别 ,尤其是在进行复杂的报表打印时,统计 出的表格更是风格迥异。如果打印功能不能很好 的适应各种要求,需要个别情况个别处理,那么必 然大大增加系统开发的工作量,同时程序的可扩 展性和易维护性均很差。 (3) 使用便利
8、。能够组件化,调用方法简单 , 不给使用者增加过多的工作量。 (4) 实现精确打印。能够精确控制打印的格 式和位置,方便的设置纸张和打印数量等。 3 基于HTML组件的WEB打印解决方案 HTML 组件 ( HTC) 是微软公司用来取代 Ac2 tiveX 控 件 的 一 种 技 术 。同 ActiveX 控 件 一 样 , HTML 组件是自持续封闭对象,可以一次开发任 意使用 ,并且具有封装HTML 内容可插入到其他 HTML 文档中的特性。ActiveX 控件的缺点之一就 是使用前必须要求客户机安装HTML 控件 ,并且 需要将主页面下载到客户机。而 HTML 组件较之 有了很大的改进,
9、它可以和页面同时下载,且无需 在客 户 端 安 装 。同 时 , HTML 控 件 可 以 使 用 DHTML 进行开发 ,以一种简单机制在脚本中实现 DHTML 行为 。在本文提出的Web 打印解决方案 中 ,我们将打印功能做成标准的HTML 组件 ,在需 要打印的页面只要进行HTML 组件的调用,即可 完成打印任务。 3. 1 实现原理 在引用HTML 组件的页面中,首先为HTML 组件定义标签,将需要打印的内容放置到该自定 义标签之间,然后在 HTML 组件中通过innerHTML 属性读取打印内容,将其转化成标准的XML 形 式 。格式化后的内容以参数的方式传到新的页 面 ,利用 cs
10、s控制其最终的显示格式和位置,使之 符合打印的需求。最后 ,调用浏览器的打印方法 直接打印预览页面内容。在整个过程中,所有的 方法都可以封装到HTML 组件中,使得打印功能 实现组件化。在 B/ S系统的开发中,采用这种思 路 ,可以实现直接打印显示内容的效果,无需为实 现打印而定义专门的格式和制作专门的报表页 面 ,降低了开发难度,减少了工作量。同时将分页 等过程放到了客户端,也减轻了服务器的负担。 具体的实现过程如图 1。 图1 打印流程 3. 2 实现方法 具体而言,在本打印解决方案中,需要建立两 个 HTML 组件 grid. htc 和 preview. htc,分别用来实 现打印内
11、容获取、 格式化打印内容,和分页 、 定位 、 打印前后处理等功能。此外 ,还需要建立一个打 印预览页面 prewindow.html ,用来模拟打印预览窗 口 。 在 grid. htc 组件中需要定义三个方法,其中 , fnInit 方法用来对页面进行初始设置,formatXML 方法用于来把打印内容格式化成标准的XML , print 方法用来打开预览窗口,并且将打印内容传 递到预览窗口。 由于相对于一般的文本 ,XML格式更容易进 行操作 。因此 ,在打印之前要将打印内容转化成 标准的 XML 格式 ,这样就可以利用javascript中对 14第2期 梁凯春 ,蔡淑琴:B/ S架构中
12、基于HTML组件的WEB打印技术 XML 操作的函数来完成打印内容的分页等操作。 在 DHTML 中 ,无法像ActiveX 控件那样可以 在客户端弹出标准的预览窗口,所以我们使用浏 览器的 showM odalDialog方法来打开标准非模式窗 口 ,模拟打印预览窗口的功能。在 showM odalDialog (sUR L, vArguments , sFeatures ) 方法中有 3 个参 数 ,第一个参数是需要打开页面的链接,第二个参 数是传递到新页面的参数,第三个参数是打开的 非模式窗口的外观设置参数。这里主要是利用第 二个参数将需要打印的内容传递到打开的页面 中 。 elemen
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BS 架构 基于 HTML 组件 WEB 打印 技术
链接地址:https://www.31doc.com/p-5496897.html