`

几种web打印方案的比较

阅读更多

几种web打印方案的比较

打印通常是系统的辅助部分,但是又必须解决,否则项目完成不了。下面来分析分析目前的几种常见的web打印方案。


一、 浏览器的菜单打印功能
这是最简单的,只需点击页面上的打印菜单,但是也是问题最多的,基本上是不能满足用户需要。比如:不能精确分页,有出现打出半行字的风险;改变纸型后打印出的格式和页面显示的格式相差太大;页眉页脚也需要从菜单中去设置,等等等等。这种方案最大的优势就是不需要做任何代码,点击打印就可以了。

 二、 window.Print()

这实际上,是浏览器打印功能菜单的一种程序调用。与点击打印功能菜单一样,不能精确分页,不能设置纸型,套打的问题更加无从谈起,只不过,可以让用户不用去点菜单,直接点击网页中的一个按钮,或一个链接里面调用罢了。
需要指出的是这种方法提供一个打印前和打印后的事件onbeforeprint、onafterprint。可以在打印前的时候重新编辑一些格式,专门送去打印,打印后又处理回来。
function window.onbeforeprint()
{
//将一些不需要打印的隐藏
}
function window.onafterprint()
{
//放开隐藏的元素
}


事实上,很多用户都是采用这种方式打印,但是这种方式最致命的缺点是不能设置打印参数,比如纸型,页边距,选择打印机等等。

三、 导出excel导出pdf文件的打印
将需要打印的数据导出excel文件或者导出pdf文件,然后打开excel文件或者pdf文件重新打印,用这种方案能实现精确的打印,套打也能实现,但是需要客户端安装excel和adobe软件,操作起来也有些麻烦,并且导出的excel文件可以重新修改编辑,一般用户都会要求系统提供这种导出的方案,也同时需要直接打印的功能,所以个人觉得这种方案也不能很好的解决打印的问题。


四、 纯ActiveX控件
这种方案其实就是编写一个C/S的打印控件,然后嵌入到页面里面,将要打印的数据装入到控件中,然后打印。这种方案的优点是打印精度高,分页,设置打印参数等等都能实现。但是缺点也是很明显的,嵌入ActiveX控件破坏了web应用的整体html风格,且这样的控件通常都比较大,一般都超过1M,下载很慢。

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

轻量级ActiveX插件:设置打印参数,比如预定义纸型,设置打印方向,打印边距,指定打印机,不弹出打印对话框直接打印等等。

DHTML+javascript编辑打印数据的格式展现,实现格式的自定义。

后台代码,可以是java,dotnet等等的,实现动态获取打印数据。

这种方案是比较理想的,只需要客户端下载一个很小的打印插件,客户端无需安装任何C/S的格式设计器,就可以轻松实现打印格式的自定义,打印参数的自定义等等。

eprint自定义打印工具就是这样一种web打印工具。下面是运行这种方案实现格式自定义的一个示例:

下面是一个预览的界面。

格式设计页面如下:

代码调用如下图:红色圈中的为调用的javascript函数。


这种方案的优点是:
能设置打印的纸型,方向,边距,页眉页脚等等打印参数。
能实现精确打印,分页;
格式可以自定义;
成本低廉,ActiveX只有70k。


分享到:
评论
2 楼 dehuai 2009-02-03  
是否考虑跨平台应用??
linux怎么试用比较好??
1 楼 supercrsky 2008-11-13  
lodop 比ePrint好用多了.

相关推荐

    Web字体格式介绍以及浏览器兼容性一览

    这项让未来Web更加丰富多彩的技术拥有多种实现方案,其中之一是通过@font-face属性在网页中嵌入自定义字体,主流的浏览器都支持这项技术,具体实现例子将在下一篇文章介绍,本文介绍主要的几种Web字体格式及各浏览器...

    基于struts+hibernat的会员管理系统设计与实现

    讨论了几种实现MVC设计模式的框架的模式特点、使用场合及优缺点,在此基础上详细讨论了Struts框架和提供面向对象方法操作数据库的Hibernate技术,阐述了将两者整合的优势。接着对成人教育学院系统作了详细的需求分析,...

    Windows2003网络服务器绝版攻略

    而且服务器可以被配置为几种角色的综合。 铁通数据中心机房存在多台不同角色的服务器,例如:备份服务器,终端服务器,Web服务器等,大部分是集各种角色于一身的服务器,所以有必要制作一份完整的安全方案文档以供...

    企业网组建与设计方案.doc

    写出方案的比较选择(根据网络拓扑结构图); 画出网络拓扑结构图; 设企业已申请到C类IP地址:210.37.44.0 ,要求划分子网,配置IP地址、掩码和网关等参数; 根据条件进行网络设备的选择,决定各类硬件和软件的...

    重构到设计模式的经典案例,超完美详细(java源码)

    * 但还没决定怎么改,他们设想了几种方案,这些方案会影响用户的计费规则, * 程序必须再次同时修改xmlReport()和report(),随着各种规则变得越来越复杂, * 适当的修改点越 来越难找,不犯错误的机会越来越少。 ...

    asp.net知识库

    使用 Web 标准生成 ASP.NET 2.0 Web 站点 ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf部署 ASP.NET 2.0 Security FAQs Asp.net 2.0功能体验,细节之Web控件(一) 隐藏控件 Asp.net 2.0功能体验,总体设计思想 Asp...

    reportmachine 6.0

    17、首家提供web,IntraWeb中的报表解决方案。 18、首家提供报表压缩处理,占用内存更少,生成报表速度更快。 19、首家提供合并单元格功能,更加适应处理复杂的中文报表。 20、自动填空行,每页打印数量等细节处理...

    delphi经典控件 report machine2.6

     17、首家提供web,IntraWeb中的报表解决方案。  18、首家提供报表压缩处理,占用内存更少,生成报表速度更快。  19、首家提供合并单元格功能,更加适应处理复杂的中文报表。  20、自动填空行,每页打印数量等...

    Leadtools_Crack_16

    提供几种不同级别Internet支持,包括:可封装到CAB文件的对象、能在web服务器端构造的对象、从URL或存储器装载图像的功能、支持HTTP 和FTP的控件、解析并加载到web服务器端的文件控件,以及用来构造功能强大、通过...

    。net图书管理系统设计方案

    数据库设计的基本原则是在MIS总体信息方案的指导下,各个库应当为它所支持的管理目标服务,在设计数据库系统时,应当重点考虑以下几个因素: (1)数据库必须层次分明,布局合理。 (2)数据库必须高度结构化,保证...

    report machine for .net

     17、首家提供web,IntraWeb中的报表解决方案。  18、首家提供报表压缩处理,占用内存更少,生成报表速度更快。  19、首家提供合并单元格功能,更加适应处理复杂的中文报表。  20、自动填空行,每页打印数量等...

    java面试题

    73.8. transaction有那几种实现(事务处理)(Spring) 79 73.9. Spring IoC 79 73.10. Spring AOP面向方面编程 82 74. 项目中为什么使用SSH 85 75. Spring在SSH中的作用 86 76. weblogic 86 76.1. 如何给weblogic指定...

    ReportMachine.v7.0(D5-XE10.2)_X64

    17、首家提供web,IntraWeb中的报表解决方案。 18、首家提供报表压缩处理,占用内存更少,生成报表速度更快。 19、首家提供合并单元格功能,更加适应处理复杂的中文报表。 20、自动填空行,每页打印数量等细节处理更...

    Free Staff Roster Generator-crx插件

    这就是为什么我们在几秒钟内开发了一种简单,无褶皱的方法,可以在几秒钟内创建员工。保存您的名单,复制您的时间表并直接通过电子邮件发送给您的员工 - 所有人都在一个直观的Web界面下。安排是最简单的员工分册解决...

    ReportMachine

     17、首家提供web,IntraWeb中的报表解决方案。  18、首家提供报表压缩处理,占用内存更少,生成报表速度更快。  19、首家提供合并单元格功能,更加适应处理复杂的中文报表。  20、自动填空行,每页打印数量等...

    Java面试宝典2010版

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 47、sleep() 和 wait() 有什么区别? 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 ...

    最新Java面试宝典pdf版

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...

    Java面试笔试资料大全

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...

    JAVA面试宝典2010

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...

Global site tag (gtag.js) - Google Analytics