基于ASP.NET 2.0实现WEB打印方法的探讨

来源 :光盘技术 | 被引量 : 0次 | 上传用户:wsdemon8911
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:针对ASP.NET 2.0实现WEB打印的几种方法进行初步探讨,对每种方法的实现、各自特点进行阐述。
  关键词:ASP.NET 2.0 ;B/S模式 ;WEB 打印
  中图分类号:TP393.092 文献标识码:A
  
  Study on Implementation of WEB Print Method Based on ASP.NET 2.0
   ZU Xiao-dong
  (Tianjin Railway Technical and Vocational College,Tianjin 300240)
  Key words: ASP.NET 2.0 ;B / S mode ;WEB print
  
  目前,由于B/S模式扩展性好、数据安全性高、无须考虑客户端的兼容性等优点,在软件开发实践中得到了广泛的应用,而WEB 打印则是B/S模式应用程序中必需考虑的问题。虽然客户端的规则很简单,容易学习,容易维护,容易发布,但由于只能采用浏览器作为用户界面与服务器进行交互,不能精确地控制客户端的打印机,使WEB报表格式控制、定制等复杂的打印难以处理,其结构的特殊性和一般程序上的打印功能有所不同,而软件开发人员总是力求使B/S系统具有C/S系统相类似的打印功能,这是开发人员所面临的一个共同难题。
  WEB打印通常分为客户端脚本方式和服务器端程序方式,在客户端脚本方式中,主要使用JS 可以分析源页面的内容,将欲打印的页面元素提取出来,实现打印。通过分析源文档的内容,可以生成打印目标文档。这种方式客户端独立完成打印目标文档的生成,减轻服务器负荷;但源文档的分析操作复杂,并且源文档中的打印内容要有约定。通常采用服务器端程序方式,利用后台代码从数据库中读取打印源,生成打印目标文档。当的页面生成时,还应适当考虑使用CSS来实现强制分页控制。这种方式可以生成内容非常丰富的打印目标文档,目标文档的内容的可控性强。由于打印内容是从数据库中获取的,所以生成操作相对简单;但服务器端负载比较大。
  ASP.NET 2.0是微软公司推出新型体系结构.NET Framework 2.0的一个主要组成部分,在开发人员的效率、管理、性能和可伸缩性等方面得到了极大的提高。其新开发的IDE--Visual Studio 2005是目前B/S模式应用程序的主要开发工具。针对ASP.NET 2.0的WEB打印方法主要有以下几种解决方案:①利用IE浏览器直接实现WEB打印;②调用Office实现WEB打印;③利用第三方控件实现WEB打印;④利用.NET 2.0组件水晶报表实现WEB打印。
  
  1 利用IE浏览器直接实现WEB打印
  
  1.1调用windows.print()方法实现打印
  在页面上添加"打印"按钮,然后增加如下代码:
  <input type=“button”onclick=“window.print()”value=“print”>
  这种方法代码简单、方便快捷、无需任何设置,但页面上别的元素也会被打印处理,页头和页尾的格式难以控制,无法实现“打印设置”和“打印预览”等功能,可以利用css中的Media属性来设置打印和显示的格式,代码如下:<style media=“print” type=“text/css”>
  .Noprint{display:none;}
  .PageNext{page-break-after: always;}
  </style>
  在不想打印的页面元素添加:class=“Noprint”,那就不会出现在打印和打印预览中了。如:
  <table width=“757” height=“174” border=“0” align=“center” cellpadding=“0” cellspacing=“0”>
  <tr class=“noprint”>
  <td height=“133” align=“center” v align=“top”>
  <img src=“Images/test.jpg” width=“757” height=“133”></td>
  </tr>
  </table>
  此时<tr class=“noprint”>是不打印的tr。
  1.2调用WebBrowser控件实现打印
  WebBrowser控件是IE内置的浏览器控件,它是ActiveX控件,无需用户下载,可以通过调用WebBrowser控件的ExecWB方法实现打印,首先在HTML源码中建立Object对象,Object对象主要向HTML页面中插入对象,代码如下:
  //加入ID为WebBrowser的WebBrowser控件
  <object ID=''WebBrowser'' WIDTH=''0''HEIGHT=''0''
  CLASSID=''CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'' VIEWASTEXT></object>
  CLASSID属性主要用来获取或设置对象的类标识符。最后在客户端控件的onclick事件中调用WebBrowser组件的相关方法进行打印、打印预览等操作,代码如下:
  <input type=buttonvalue=直接打印 onclick=document.all.WebBrowser.ExecWB(6,6)>
  <input type=buttonvalue=页面设置 onclick=document.all.WebBrowser.ExecWB(8,1)>
  <input type=buttonvalue=打印预览 onclick=document.all.WebBrowser.ExecWB(7,1)>
  此种方法优点是可以轻松实现打印、页面设置和打印预览等功能,客户端能独立打印目标文档,减轻服务器端负荷;缺点是源文档的分析操作复杂,并且源文档中的打印内容要有约束。
  
  2 调用Office实现WEB打印
  
  在浏览网页时,经常需要将Web页面中的内容通过Word或Excel文档打印出来,借助功能强大的Office办公软件,可以完成非常复杂的文档格式,进行精细的控制,可适应性强、易于控制。下面以将数据导出到Word文档为例进行介绍,Excel与此类似,不再赘述。
  Word作为文档处理软件,它在处理文档和资料的过程中显示出了强大的功能。将数据导出到Word,主要通过设置Response对象的ContentType属性为输出文件的类型来实现的。代码如下:
  Response.AppendHeader(“Content-Disposition”,“attachment;filename=test.doc”)
  Response.ContentType=“application/ms-word”;
  //如果输出为excel,修改为以下代码
  //Response.AppendHeader(“Content-Disposition”,“attachment;filename=test.xls”);
  //Response.ContentType=“application/ms-excel”;
  this.EnableViewState=false;
  String Write tw=new String Writer();
  HtmlTextWriter hw=new HtmlTextWriter(tw);
  GridView1.RenderControl(hw);
  Response.Writer(tw.ToString());
  Response.End();
  导出成Word或Excel后用户可以自定义打印的内容和格式,开发周期短、维护成本低,用户使用方便,并且可以跨平台运行。但数据导出前难以生成打印预览,在服务器端或客户端使用时,要保证安装有office软件,在客户端使用时要求客户端在IE的安全设置上有一定的要求。
  
  3 利用第三方控件实现打印
  
  目前有不少开发商提供的相关控件,可以实现Web打印功能,如MAX Reports、如意报表、ScriptX等。优秀的第三方控件,打印方式灵活,基本上程序能做到的web也能做得到,并且开发周期短,系统维护性好。但打印功能受控件本身限制,一般无法做到跨平台,并需支付相关费用,提高了系统的开发成本。
  也可以自行开发实现Web打印,一般可以通过自行开发ActiveX控件、Java Applet或动态生成PDF文件等方式来完成。这种方式可定制性强,可以完全按照用户的要求进行设计Web页面,但开发周期长,开发和维护成本较高。
  目前有一些软件公司使用JAVA开发基于WEB的报表组建,使用这些组建时先要在客户端安装,然后,由服务器端来生成VBscript脚本,在客户端运行、创建相应的组件对象;利用组件对象来进行打印操作。这种方法只要客户端的com组件开发完成。使用者只要熟悉vbscript或lavascript脚本语言就可能方便的调用。这种方法打印效率高、功能丰富、能做到精确定位打印以及批量打印另外安装成本低廉。ACtiveX只有1M多,在客户端首次使用时需要安装一次,无需再次安装。但客户端毕竟需要安装组件,部署不是很方便。另外对浏览器版本也有一定的要求。
  
  4 利用水晶报表实现打印
  
  水晶报表(Crystal Reports)是一个优秀的报表开发工具,水晶报表以其简单、易用和强大的功能令开发人员倍受青睐。Crystal Reports for Visual Studio.NET 2005具有以下特点:①针对所有以.NET为目标的程序语言提供高度的集成,可以在Windows应用程序或ASP.NET Web应用程序的项目中使用本身所专长的程序语言来设计报表。②提供强大的报表设计工具CrystalReportDesigner,可以通过其定义报表的数据源,定位各个控件,轻易制作出各种复杂格式的报表。③通过报表查看器控件(CrystalReportViewer)设置报表的格式和自定义导出选项等,将报表展现在Web Form网页上。④用户仅需要Web浏览器就可以查看报表。
  水晶报表打印非常灵活、方便,打印的内容丰富多彩,用户仅需要Web 浏览器就可以查看报表,用户不仅与报表可以轻松交互,而且具有内容创建、计算、分组、查询等强大功能。
  Crystal Reports for Visual Studio.NET 2005的执行模式有两种:Pull Model(拉模型)和Push Model (推模型),执行任一种模式均可获取Crystal Reports数据。在拉模型中,驱动程序将连接到数据库并根据需要将数据"拉"进来。使用这种模型时,与数据库的连接和为了获取数据而执行的SQL命令都同时由Crystal Report本身处理,不需要开发人员编写代码。因此,在运行时如无须编写任何特殊代码,则使用拉模型。相反,推模型需要开发人员编写代码以连接到数据库,执行SQL命令以创建与报表中的字段匹配的记录集或数据集,并且将该对象传递给报表。该方法可以将连接共享置入应用程序中,并在Crystal Reports收到数据之前先将数据筛选出来。
  在Visual Studio 2005中通过CrystalReportViewer控件来查看报表源中的数据,并对报表进行设计,使报表更加美观。
  
  5 结束语
  
  综上所述,本文对ASP.NET的Web打印技术作了初步的探讨,对每种实现方法优点及不足进行了简要介绍,在开发过程中用户应根据项目的实际需求进行选择,灵活处理WEB打印所遇到的各种问题,以达到较理想的应用效果。
  
  参考文献:
  [1]张跃廷.ASP.NET程序开发范例宝典[M].北京:人民邮电出版社,2007:572-599.
  [2]李明刚,肖健.ASP.NET(c#)基础教程[M].北京:清华大学出版社,2006:294-392.
其他文献
摘要:快速查询算法是GIs领域的主要问题之一,通过经典的Dikstra算法和切图技术算法两方面对GIs中快速查询和实现算法进行分析和研究,并通过实例加以实现。  关键词:快速查询;Dijkstra算法;切图技术算法
期刊
摘要:用Vc++语言开发一个多媒体设备控制系统,采用线程实现对多媒体设备遥控板数据的采集、保存和发送,利用软件对信号进行调制以简化硬件电路,并通过计算机并口实现对多媒体设备使用的控制。  关键词:并口通信;控制;线程;采集
期刊
摘要:介绍次世代游戏对游戏美术的要求和ZBmsh软件的特点,探讨ZBmsh软件在游戏模型的纹理和法线贴图中的使用,以及ZBmsh软件在制作高分辨率模型中的应用。  关键词:Zbmsh软件;建模;贴图  中图分类号:TP391.41 文献标识码:A
期刊
摘 要:针对目前高职WEB开发技术及实训课程在教学内容和实验实践环节中存在的问题以及社会对IT人才的WEB技术需求方向,探讨WEB开发技术及实训课程教学改革新模式。  关键词:WEB;开发技术及实训;新模式  中图分类号:G434 文献标识码:A    New Model of Teaching Reform About WEB Developing Technology and Training
期刊
摘要:提出Photoshop教学应结合学生知识背景,在“实用、够用”前提下,合理安排授课内容,以达到培养学生“自主学习”能力的教学目标。  关键词:Photoshop;学习需求;想象力;创造力;教学方法  中图分类号:G42 文献标识码:A    Photoshop因其强大的图形、图像处理功能,在平面设计、网页设计及数码照片处理等各个领域的广泛应用,许多院校都开设了这门课程。笔者在Photosho
期刊
摘要:分析Photoshop课程在教学中存在的问题,并提出如何改革Photoshop教学,从而培养学生生存技能。  关键词:职业学校;Phososhop;教学方法  中图分类号:TP317.4 文献标识码:A
期刊
摘 要:作者在对计算机网络课程教学实践基础上,尝试通过网络仿真工具OPNET来对现有的课程实验进行重新设计,提出了一种简化OPNET建模方案,并结合TCP拥塞控制算法验证实验分析了引入OPNET以后网络实验的组织和实施的情况。  关键词:网络;实验;OPNET;建模;TCP  中图分类号:TP301.6 文献标识码:A    Congestion Prevent and Control on Ne
期刊
摘 要:介绍电力系统中,基于法拉第效应的光学电流互感器测试电流的基本原理,采用TI的最新数字处理芯片TMS320F28335的片内A/D转换器对被测电流进行数据采集,以LabVIEW作为开发平台,使用串口将DSP的数据传送给PC端,同时给出DSP与RS232的硬件连接图,以及DSP和LabVIEW的软件编写程序,对实验室小电流模拟的高强电流信号进行测试研究,测试结果表明该数据采集及分析系统能正常通
期刊
摘 要:针对ERP沙盘模拟实验教学的必要性进行了细致地分析,给出了ERP沙盘模拟实验教学具体教学模式的整体思路和详细的模式设计和实战对抗的应用指导。  关键词:ERP沙盘模拟实验;教学模式;实战对抗  中图分类号:G40 文献标识码:A    Research and Operation ERP Sangbox Simulation Experiment's Teaching Pattern  W
期刊
摘 要:结合项目中对中文显示乱码处理的经验,论述java语言在linux操作系统下中文乱码产生的原因和解决方法。  关键词:字符集;本地化;URL encode;URL decoder  中图分类号:TP312JA文献标识码:A    Study on the Chinese Error Coding in the Java Programs on Linux  JIA Jin-ying1, JI
期刊