做Web开发的人员一定都会面临一个共同的难题,那就是打印。的确,相对于Windows桌面应用程序来讲,Web应用程序的打印有种种限制,技术人员在项目开发过程中经常会遇到用户这样或那样的需求. 做过桌面应用开发的人都会非常熟悉水晶报表、Active Report之类的报表控件,它们不仅有简单灵活的设计界面,更具有非常强大的报表功能,能满足各种报表的打印需求。而Web应用则因为其特殊的呈现方式,只能寻求其他的解决方案。现在我们来分析一下目前已经成形的Web打印方案:

  现有的Web打印控制技术分成几种方案:

  一.自定义控件完成打印

  利用IE 自带的WebBrowser 控件实现打印

  利用第三方控件实现打印

  1、自定义控件方式

  自定义控件方式就是利用VB 或VC 等工具生成COM 组件,用定义好的打印格式来分析打印源文件从而实现打印。只有将生成的组件下载并注册到客户机上,才能实现在客户端的

打印。

  难点主要是定义打印格式、如何来分析打印源文件。现有的比较好的方法是利用XML 技术来全面的解决问题,利用XML 可以非常容易地定义打印目标的文本、表格等内容的格式。

但对程序员的开发要求高,难度比较大。

  2、利用WebBrowser 实现Web打印

  WebBrowser是IE 内置的浏览器控件,无需用户下载。本文档所讨论的是有关IE6.0 版本 的WebBrowser 控件技术内容。与其相关的技术要求有:打印文档的生成、页面设置、打印操作的实现等几个环节。

  (一)、打印文档的生成

  1、客户端脚本方式

  客户端脚本分为VBScript、javascript、JScript 几种脚本语言。在IE 下开发应用使用的语法为JScript 的语法,由于它和javascript 几乎没有什么区别,所以也可以称其为javascript(下面简写为JS)。一般情况下,主要使用JS 来实现DOM 文档的分析,DOM 为微软提出的一种Web文档模型,主要用来实现Web脚本编程。

  利用JS 可以分析源页面的内容,将欲打印的页面元素提取出来,实现打印。通过分析源文档的内容,可以生成打印目标文档。

  优点:客户端独立完成打印目标文档的生成,减轻服务器负荷;

  缺点:源文档的分析操作复杂,并且源文档中的打印内容要有约定;

  2、服务器端程序方式

  服务器端程序方式,主要是利用后台代码从数据库中读取打印源,生成打印目标文档。当的页面生成时,还应适当考虑使用CSS 来实现强制分页控制。

  优点:可以生成内容非常的丰富的打印目标文档,目标文档的内容的可控性强。由于打印内容是从数据库中获取的,所以生成操作相对简单;

  缺点:服务器端负载比较大;

  (二)、页面设置

  页面设置主要是指设置打印文档的页边距、页眉、页脚、纸张等内容。页面设置将直接影响到打印文档版面的生成效果,所以它和打印文档的生成有着密切的关系。比如:表格的

行数、大小、位置、字体的大小等。

  现有的技术是利用IE6.0 内置的打印模板方式来控制页面设置,其可以对打印目标文档产生非常大的影响。打印模板可以控制页边距、页眉、页脚、奇偶页等内容,并可以将用户的设置取得,还可以将设置发送到服务器端。

  打印模板技术可以自定预览窗口和打印格式,最大限度地影响目标文档和打印效果。

  (三)、打印操作的实现

  此功能的实现主要是利用WebBrowser控件的函数接口来实现打印、打印预览(默认的)、

  页面设置(默认的)。

Web打印控制技术的几种方案<object ID='WebBrowser1' WIDTH=0 HEIGHT=0 
Web打印控制技术的几种方案
Web打印控制技术的几种方案CLASSID
='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'> 
Web打印控制技术的几种方案
Web打印控制技术的几种方案
//打印 
Web打印控制技术的几种方案

Web打印控制技术的几种方案WebBrowser1.ExecWB(
6,1); 
Web打印控制技术的几种方案
Web打印控制技术的几种方案
//打印设置 
Web打印控制技术的几种方案

Web打印控制技术的几种方案WebBrowser1.ExecWB(
8,1); 
Web打印控制技术的几种方案
Web打印控制技术的几种方案
//打印预览 
Web打印控制技术的几种方案

Web打印控制技术的几种方案WebBrowser1.ExecWB(
7,1); 
Web打印控制技术的几种方案

3、一个实例项目采用的打印方案

服务器端程序方式、打印预览接口调用,下面为例, 主要参考项目中的:

pageErrorPrint.aspx.vb 文件

主调用页

Web打印控制技术的几种方案function PrintPage(iPageIndex,strQuery) 
Web打印控制技术的几种方案

 
         二、利用IE自身打印

  这种方式比较简单,也常用的打印方式,只需要将报表页面设计好,用户通过IE菜单中的打印功能完成打印。优点是简单,容易实现,缺点是不灵活,不能控制分页,不能控制好页眉和页脚。

  三、将报表导出成Word,Excel或PDF形式打印

  这种方式需要将页面导出成Office文档或pdf,最低的要求是客户端已经安装用以打开Word、Excel或Pdf文档的软件。这种方式可以通过水晶报表组件或其他一些第三方控件非常容易地实现。导出成Pdf形式后打印质量和效果都很好,导出成Word或Excel后用户可以自定义打印的内容和格式。

  总之,现有的打印方案各有所长,在开发过程中应根据用户的需求作选择,利用IE打印简单,容易实现,在用户需求简单或打印内容较少的情况下采用此方案比较适宜。利用自定义控件打印可以实现完全自定义,但需要较高的技术要求和开发周期。利用导出的方式则可以满足用户需要一点自定义或打印内容有多页的需求。

-------------------------------------------------------------

1、控制"纵打"、横打”和“页面的边距。 

(1)

Web打印控制技术的几种方案<script defer>  
Web打印控制技术的几种方案

(2) 

Web打印控制技术的几种方案<script language="javascript">  
Web打印控制技术的几种方案

关于这个组件还有其他的用法,列举如下: 

Web打印控制技术的几种方案WebBrowser.ExecWB(1,1) 打开  
Web打印控制技术的几种方案
Web打印控制技术的几种方案Web.ExecWB(
2,1) 关闭现在所有的IE窗口,并打开一个新窗口  
Web打印控制技术的几种方案
Web打印控制技术的几种方案Web.ExecWB(
4,1) 保存网页  
Web打印控制技术的几种方案
Web打印控制技术的几种方案Web.ExecWB(
6,1) 打印  
Web打印控制技术的几种方案
Web打印控制技术的几种方案Web.ExecWB(
7,1) 打印预览  
Web打印控制技术的几种方案
Web打印控制技术的几种方案Web.ExecWB(
8,1) 打印页面设置  
Web打印控制技术的几种方案
Web打印控制技术的几种方案Web.ExecWB(
10,1) 查看页面属性  
Web打印控制技术的几种方案
Web打印控制技术的几种方案Web.ExecWB(
15,1) 好像是撤销,有待确认  
Web打印控制技术的几种方案
Web打印控制技术的几种方案Web.ExecWB(
17,1) 全选  
Web打印控制技术的几种方案
Web打印控制技术的几种方案Web.ExecWB(
22,1) 刷新  
Web打印控制技术的几种方案
Web打印控制技术的几种方案Web.ExecWB(
45,1) 关闭窗体无提示  
Web打印控制技术的几种方案

2、分页打印 

Web打印控制技术的几种方案<HTML>  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
<HEAD>  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
<STYLE>    
Web打印控制技术的几种方案

3、ASP页面打印时如何去掉页面底部的路径和顶端的页码编号 

(1)ie的文件-〉页面设置-〉讲里面的页眉和页脚里面的东西都去掉,打印就不出来了。 

(2)

Web打印控制技术的几种方案<HTML>  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
<HEAD>  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
<TITLE> New Document </TITLE>  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
<META NAME="Generator" CONTENT="EditPlus">  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
<META NAME="Author" CONTENT="YC">  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
<script language="VBScript">  
Web打印控制技术的几种方案
Web打印控制技术的几种方案dim hkey_root,hkey_path,hkey_key  
Web打印控制技术的几种方案
Web打印控制技术的几种方案hkey_root
="HKEY_CURRENT_USER"  
Web打印控制技术的几种方案
Web打印控制技术的几种方案hkey_path
="\Software\Microsoft\Internet Explorer\PageSetup"  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
'//设置网页打印的页眉页脚为空  
Web打印控制技术的几种方案

Web打印控制技术的几种方案function pagesetup_null()  
Web打印控制技术的几种方案
Web打印控制技术的几种方案  on error resume next  
Web打印控制技术的几种方案
Web打印控制技术的几种方案  Set RegWsh 
= CreateObject("WScript.Shell")  
Web打印控制技术的几种方案
Web打印控制技术的几种方案  hkey_key
="\header"    
Web打印控制技术的几种方案
Web打印控制技术的几种方案  RegWsh.RegWrite hkey_root
+hkey_path+hkey_key,""  
Web打印控制技术的几种方案
Web打印控制技术的几种方案  hkey_key
="\footer"  
Web打印控制技术的几种方案
Web打印控制技术的几种方案  RegWsh.RegWrite hkey_root
+hkey_path+hkey_key,""  
Web打印控制技术的几种方案
Web打印控制技术的几种方案end function  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
'//设置网页打印的页眉页脚为默认值  
Web打印控制技术的几种方案

Web打印控制技术的几种方案function pagesetup_default()  
Web打印控制技术的几种方案
Web打印控制技术的几种方案  on error resume next  
Web打印控制技术的几种方案
Web打印控制技术的几种方案  Set RegWsh 
= CreateObject("WScript.Shell")  
Web打印控制技术的几种方案
Web打印控制技术的几种方案  hkey_key
="\header"    
Web打印控制技术的几种方案
Web打印控制技术的几种方案  RegWsh.RegWrite hkey_root
+hkey_path+hkey_key,"&w&b页码,&p/&P"  
Web打印控制技术的几种方案
Web打印控制技术的几种方案  hkey_key
="\footer"  
Web打印控制技术的几种方案
Web打印控制技术的几种方案  RegWsh.RegWrite hkey_root
+hkey_path+hkey_key,"&u&b&d"  
Web打印控制技术的几种方案
Web打印控制技术的几种方案end function  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
</script>  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
</HEAD>  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
<BODY>  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
<br/>  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
<br/>  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
<br/>  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
<br/>  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
<br/>  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
<br/><p align=center>  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
<input type="button" value="清空页码" onclick=pagesetup_null()> <input type="button" value="恢复页吗" onclick=pagesetup_default()><br/>  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
</p>  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
</BODY>  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
</HTML>  
Web打印控制技术的几种方案

4、浮动帧打印 

Web打印控制技术的几种方案<SCRIPT LANGUAGE=javascript>  
Web打印控制技术的几种方案

4、用FileSystem组件实现WEB应用中的本地特定打印 

Web打印控制技术的几种方案<script Language=VBScript>  
Web打印控制技术的几种方案
Web打印控制技术的几种方案function print_onclick 
//打印函数  
Web打印控制技术的几种方案

Web打印控制技术的几种方案dim label  
Web打印控制技术的几种方案
Web打印控制技术的几种方案label
=document.printinfo.label.value //获得HTML页面的数据  
Web打印控制技术的几种方案

Web打印控制技术的几种方案
set objfs=CreateObject("Scripting.FileSystemObject"//创建FileSystem组件对象的实例  
Web打印控制技术的几种方案

Web打印控制技术的几种方案
set objprinter=objfs.CreateTextFile ("LPT1:",true//建立与打印机的连接  
Web打印控制技术的几种方案

Web打印控制技术的几种方案objprinter.Writeline(
"__________________________________"//输出打印的内容  
Web打印控制技术的几种方案

Web打印控制技术的几种方案objprinter.Writeline(
"| |")  
Web打印控制技术的几种方案
Web打印控制技术的几种方案objprinter.Writeline(
"| 您打印的数据是:"&label& " |”)  
Web打印控制技术的几种方案

Web打印控制技术的几种方案objprinter.Writeline(
"| |")  
Web打印控制技术的几种方案
Web打印控制技术的几种方案objprinter.Writeline(
"|_________________________________|")  
Web打印控制技术的几种方案
Web打印控制技术的几种方案objprinter.close 
//断开与打印机的连接  
Web打印控制技术的几种方案

Web打印控制技术的几种方案
set objprinter=nothing  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
set objfs=nothing // 关闭FileSystem组件对象  
Web打印控制技术的几种方案

Web打印控制技术的几种方案end function  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
</script>  
Web打印控制技术的几种方案

服务器端脚本: 

Web打印控制技术的几种方案<%………  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
set conn=server.CreateObject ("adodb.connection")  
Web打印控制技术的几种方案
Web打印控制技术的几种方案conn.Open 
"DSN=name;UID=XXXX;PWD=XXXX;"  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
set rs=server.CreateObject("adodb.recordset")  
Web打印控制技术的几种方案
Web打印控制技术的几种方案rs.Open(“select ……”),conn,
1,1  
Web打印控制技术的几种方案
Web打印控制技术的几种方案……….
%> //与数据库进行交互  
Web打印控制技术的几种方案

HTML页面编码: 

Web打印控制技术的几种方案<HTML>  
Web打印控制技术的几种方案
Web打印控制技术的几种方案………  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
<FORM ID=printinfo NAME="printinfo" >  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
<INPUT type="button" value="打印>>" id=print name=print > //调用打印函数  
Web打印控制技术的几种方案

Web打印控制技术的几种方案
<INPUT type=hidden id=text1 name=label value=<%=………%>> //保存服务器端传来的数据  
Web打印控制技术的几种方案

Web打印控制技术的几种方案………  
Web打印控制技术的几种方案
Web打印控制技术的几种方案
</HTML> 
Web打印控制技术的几种方案

相关文章: