`
gonglianying
  • 浏览: 198023 次
  • 性别: Icon_minigender_2
  • 来自: xxx
文章分类
社区版块
存档分类
最新评论

web打印,web打印控件的三种实现方法

阅读更多
转载:http://www.blogjava.net/midstr/archive/2009/02/25/256597.html
1、利用word或者excel来实现web打印(如果不修改ie设置,可以在web服务器端生成xls文件,然后通过xlBook = xls.Workbooks.Open(remotePath) 获取对象打印)
   实现过程:先将需要打印的数据导入到word或者excel中,再利用word或者excel的打印功能来实现web打印。
   下面以excel为例实现如何打印的过程
   将网页中数据导入excel中的方法有很多,这里先介绍一种,利用ActiveX控件的方式,即 Excel.Application, 这个控件是MS为excel提供的编程接口,在很多种编程语言种都可以通过该接口来操纵excel表格。
   下面用javascript脚本来实现一个简单的例子。
< script language="javascript">

function ExcelPrint(){

var excelApp;//存放Excel对象

var excelBook;//存放Excel工件簿文件

var excelSheet;//存放Excel活动工作表

try{

excelApp = new ActiveXObject("Excel. Application");//创建Excel对象}

catch(e){

alert("请启用ActiveX控件设置!");

return;}

excelBook = excelApp.Workbooks.Add();//创建Excel工作簿文件

excelSheet = excelBook.ActiveSheet;//激活Excel工作表

var rowLen = printTable.rows.length;//table对象的行数

for (var i=0;i< rowLen;i++){

var colLen = printTable.rows(i).cells.length;//table对象的列数

for (var j=0;j< colLen;j++)//为Excel表的单元格赋值

excelSheet.Cells(i+1,j+1).value = printTable.rows(i).cells(j).innerText;} //将表格中的每个单元格的innerText导入到excel的单元格中

excelApp.Visible = true;//设置Excel对象可见}

excelSheet.PrintOut(); //打印工作表

excelBook.Close(true); //关闭文档

excelApp.Quit(); //结束excel对象

excelApp=null;  //释放excel对象



< /script>
  
   注意:
   运行该程序的前提是 IE要允许对没有标记为安全的Activex控件进行初始化和脚本运行。设置方法如下:
   打开控制面板→Internet选项→安全性→自定义级别→对没有标记为安全的ActiveX控件进行初始化和脚本运行→选中启用,这样我们的程序就可以运行了。如果没有启用该ActiveX控件设置,那么程序在执行创建Excel对象时会抛出一个异常,这时可以通过catch()语句来捕获这个异常,并且做出相应的处理。
   运行该程序必须客户端安装了MS EXCEL,否则Activex驱动不了。
  
  
  
2、利用浏览器自带的打印控件来实现web打印
   实现过程:直接调用IE的打印功能或者在程序中调用window.print()来实现web打印,页眉和页脚会有网页标题、页码、网址,日期等信息,这些打印时如果不需要,怎样能去掉呢。做法其实很简单,只有在IE的文件菜单中打开页码设置对话框,去掉页眉页脚中设置的哪些信息,就可以了。但是这需要每个客户端都去手动设置一次。如果不想让每个客户端都手动去设置一次,也可以用代码通过修改注册表的键值来实现。
   下面是用VBScript来实现的修改注册表的过程:
   < script language="VBScript">

dim path, reg

'path存放IE打印设置的注册表地址, reg存放WScript.Shell组件的对象

path = "HKEY_CURRENT_USER\Software\Micro-soft\Internet Explorer\PageSetup"

'通过注册表修改打印设置,只修改页眉、页脚和各边界的值

'参数说明:header--页眉,footer--页脚,margin_left--左边界

'margin_top--上边界,margin_right--右边界,margin_bottom--下边界

'页边距的设置中 1对应25.4mm,即margin_left=1表示实际值的25.4mm

function pagesetup(header, footer, margin_left, margin_top, margin_right, margin_bottom)

On Error Resume Next

Set reg = CreateObject("WScript.Shell")

if err.Number>0 then

MsgBox "不能创建WScript.Shell对象!"

exit function

end if

reg.RegWrite path+"\header", header'设置页眉

reg.RegWrite path+"\footer", footer '设置页脚

reg.RegWrite path+"\margin_left", margin_left'设置左边界

reg.RegWrite path+"\margin_top", margin_top'设置上边界

reg.RegWrite path+"\margin_right", margin_right'设置右边界

reg.RegWrite path+"\margin_bottom", margin_bottom'设置下边界

end function

< /script>

还有一点需要注意的是,利用window.print()这样的方法来打印,是直接弹出打印对话框,而不是打印预览的窗口。一般来说用户希望先打印预览一下,然后再打印。或者有的格式固定的,每次都是一样的格式,就希望不弹出打印对话框,直接就打印出来。
还有的用户希望每个打印都是直接和一种纸张绑定好,打印时候直接就调用那种类型的纸张来打印,这样window.print()显然远远不够。


3、利用第三方的控件或者报表软件来实现web打印
   实现过程:第三方控件将打印的参数和方法封装成对象,在页面中可以方便的直接调用,例如ScriptX.cab,eprint.cab 都是这种类型的控件。可以直接用代码实现web打印页眉页脚的设置,web打印纸张的绑定,web打印边距的设置,web打印预览,直接web打印。
   web打印格式设置,web打印分页,web打印换页重新打印某些信息,某些信息只能第一页打印,某些信息只能最后一页打印等等这些,也都解决方案。Scriptx没有处理这些的方案,webprint有webgrid和eprint两种解决方案,行列规则的表格式的可以简单webgrid来处理,复杂格式的可以用eprint来设计格式。
  
   一般这种类型的打印控件都是需要收费的,用户可以从经济的角度来考虑。
==========================================================================================================

一、 浏览器的打印功能菜单
这种方案的优势是不需要对浏览器作任何扩充,是最简单的办法,但问题也最多,如: 不能精确分页。
浏览器一般是根据用户设置的页面大小,web页面的内容多少,来自行决定分页位置,程序员很难控制。会有页脚页眉干扰。
不能准确对齐边边距及打印文字。
不能解决连续打印。
比如,不是仅打印一张票据,而是连续一次打印若干个票据。

二、 使用webbrowser控件+ javascript
这实际上,是浏览器打印功能菜单的一种程序调用,与打印功能菜单没什么两样。分页的问题仍然存在,只不过,可以让用户不用去点菜单,直接在网页中的一个按钮,或一个链接里面调用罢了。
三、 使用print css
这是一种最理想的实现web套打的方法。这种方法通过在html文档中,嵌入打印相关的css样式,来实现对html文档输出打印的控制,比如设置纸张大小,纸张纵横方向,打印边距,分页等。显而易见,这种方式成本小,不需要下载任何插件,而且跨平台性非常好。print css推出已经有些时日,但遗憾的是,至今没有一个厂商的浏览器很好地实现了这些标准,这使得程序员目前还不能利用print css进行实际的开发。关于打印css,参见:
http://css-discuss.incutio.com/?page=PrintStylesheets

四、 使用pdf文件
用这种方式,就是从服务器端下载一个pdf文件流,在IE中用adobe插件打开,然后用adobe的打印菜单进行打印,虽然这种方案,也能实现精确套打,但需要下载adobe插件。这是国外报表工具经常推荐的一种打印方法,但在pdf不那么普及的中国,这种方案不是最好选择。
五、 采用纯ActiveX
这种方案就是下载一个控件,票据的数据不再以html方式呈现,而是呈现在ActiveX中。这种方案的优点是打印的精确度高,分页的可控性好,但缺点也是很明显的,嵌入ActiveX控件破坏了web应用的整体html风格,且这样的控件比较大(一般超过1M,下载颇费时间)。市场上的非java类报表产品,一般都采用这种方案。

六、 采用Applet方式
采用Applet方式,分页或精确打印,都可以做到完美,但缺点也很明显,表现在:
安装Applet成本巨大。需要下载十几M的文件。
Applet本身可能并不大,但运行Applet所需的jre一般至少10几M(jre1.4.2 , 15.45M)。用户需要极大的耐心,来进行打印。
打印报表时,需要重新向服务器检索数据,效率低。
因为Applet方案,一般采用html方式呈现数据,打印时Applet必须向服务器检索同一张票据的数据,看上去,是打印了当前页的票据,实际上,Applet根本不会用当前html页的数据来打印,而是向服务器下载数据到Applet中来打印。也就是说,打印的话,必须两次请求,一次html呈现,一次用来打印。
市场上java类的报表工具,一般推荐Applet方式来实现打印。

七、 轻量级的ActiveX打印方式
这是本公司应客户要求,最新推出的一种最具创意的web套打解决方案。

杰表作为一款纯java的报表工具,以前提供的web套打方案也是基于Applet的,Applet也做到了尽可能的小(只有24kb),但用户还是抱怨,因为jre太大,安装需要耐心。另外,用Applet方式,很难实现客户端的批量打印功能。
分享到:
评论
1 楼 小女墙 2010-05-24  
正在做打印这一类,谢谢LZ分享了

相关推荐

    web打印控件的三种实现方法

    web打印,web打印控件的三种实现方法 zz 做管理系统的时候,打印一直是个棘手的问题,做B/S的系统这个问题就更加突出了!下面举出三种常用的web打印处理方式

    C#实现简单的Web打印控件

    在本文中,我们将深入探讨如何使用C#语言实现一个简单的Web打印控件。Web打印控件对于Web应用程序来说是至关重要的,它允许用户在浏览器环境中直接打印网页内容,而无需通过复制粘贴到其他应用程序中。传统的Web打印...

    楚琳Web打印控件、源码、使用说明

    本文将详细介绍楚琳Web打印控件的主要特性、使用方法以及如何通过提供的源码进行二次开发。 首先,楚琳Web打印控件的核心功能在于它能够处理HTML内容的打印,允许用户在浏览器环境下无须下载任何额外插件就能完成...

    WEB打印控件很好用的WEB打印控件

    WEB打印控件WEB打印控件WEB打印控件WEB打印控件WEB打印控件WEB打印控件WEB打印控件WEB打印控件WEB打印控件WEB打印控件

    WEB 打印控件及实例

    【描述】:虽然描述信息为空,但根据标题和标签,我们可以推测这个资源可能包含了一个具体的WEB打印控件的实现和一个实例应用。博文链接可能提供了详细的技术实现和使用方法,包括如何在网页中集成该控件以及如何...

    免费web打印控件免费web打印控件

    Web打印控件是一种在网页上实现打印功能的技术解决方案,它允许用户无需下载任何客户端软件就能直接从浏览器打印网页内容。标题“免费web打印控件”指的是这样一种工具,它可以为网站提供无成本的打印功能,使得访问...

    一个完全免费的WEB打印插件控件,支持:C#/vb.net/asp/PHP/JSP,也有实例

    "一个完全免费的WEB打印插件控件,支持:C#/vb.net/asp/PHP/JSP,也有实例" 提供了一个解决方案,允许开发者在各种Web应用平台上实现便捷的打印功能。 这个插件控件兼容多种编程语言,如C#、VB.NET、ASP、PHP和JSP,...

    免费web打印控件最新

    在IT行业中,Web打印控件是一种重要的技术工具,它允许用户在网页上直接进行打印操作,无需通过浏览器的默认打印设置。"免费Web打印控件最新"可能指的是一个最新的、无需付费的解决方案,旨在提高用户体验并简化网页...

    web打印控件大全

    在IT行业中,Web打印控件是一种关键的技术工具,主要用于网页上的文档打印功能。"Web打印控件大全"这个资源集合,正如标题所言,可能是针对多种不同类型的Web打印控件的集合,旨在提供多样化的选择和实用解决方案。...

    WEB自定义打印模板控件OCX

    【WEB自定义打印模板控件OCX】是一种用于B/S(浏览器/服务器)和C/S(客户端/服务器)系统的自定义打印解决方案。该控件基于FastReport组件,并使用Delphi7进行开发,提供了OCX(OLE Control Extension)形式,使得...

    锐洋Java Web打印控件

    ePrint内含一个在vc7.0上开发的ActiveX控件(180k), 这个控件主要实现对打印参数的控制,eprint使用户通过JavaScript脚本可以控制自定义纸张尺寸,打印方向,页边距,打印份数,页眉,页脚,web打印分页等等属性 ...

    eprint3.0-web打印控件破解版

    erint3.0-web打印控件破解版,当初项目需要,在网上狂找了一晚,终于找到了这个很牛的web打印控件,能设定打印的高和宽,还能去掉弹出打印窗体等,设置横版或是竖版等。只有下了用了才能更好的理解

    使用ScriptX控件实现web打印

    本文将深入探讨如何利用ScriptX控件实现Web打印,并基于提供的`print_utils(横向打印).js`和`print_utils2(竖向打印).js`文件来讲解其核心概念和使用方法。 首先,ScriptX控件是基于ActiveX技术的,这意味着它...

    Web打印控件(目前最强大最专业最新版本)

    22.如何构建自己的纯WEB打印预览见样例二十二 23.如何居中打印超文本见样例二十三 24.如何选择界面皮肤见样例二十四 25.如何指定输出到哪页或仅预览见样例二十五 26.如何提高多页打印的性能见样例二十六 27.如何导出...

    楚琳Web打印控件.rar

    楚琳Web打印控件通过JavaScript或服务器端代码与网页交互,实现了在浏览器中直接调用打印服务的功能。用户可以自定义打印范围,包括选择打印整个页面、特定区域或者某个选定元素,避免了不必要的页面元素被一起打印...

    js web 打印 第三方打印控件免费版本

    本文将详细探讨使用JavaScript(js)进行Web打印,特别是关于“Lodop”这个免费版本的第三方打印控件。 首先,让我们了解一下什么是JavaScript Web打印。在浏览器环境中,JavaScript提供了`window.print()`函数,...

    web打印控件

    Web打印控件是一种在网页上实现打印功能的技术解决方案,它使得用户无需离开浏览器就能完成文档或页面的打印操作。在Web应用中,打印功能通常是一个不可或缺的部分,例如在线报告、电子发票或者各种需要物理输出的...

    web端打印控件

    在提供的文件列表中,我们可以看到多种资源,它们可能是实现web打印控件的组成部分: 1. `PrintSample10.css`:这是一个样式表文件,可能包含了针对打印的CSS规则,例如页面边距、布局调整和颜色管理等,确保打印...

    楚琳免费Web打印控件

    2、支持直接打印、支持套打、支持自定义纸张大小。 3、报表功能强大,报表设计采用FastReport,可以和水晶报表媲美。 4、方便的中国式报表的设计,可以快速而准确设计出报表中的表格线。 5、支持ASP, ASP.NET, PHP, ...

Global site tag (gtag.js) - Google Analytics