`
liyuandong
  • 浏览: 329204 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

几种web报表打印方案的比较

    博客分类:
  • JAVA
阅读更多

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只有75k。

分享到:
评论
1 楼 Ginger90 2015-01-27  
感觉帆软报表这些采用的flash打印方式很不错啊

相关推荐

    reportmachine 6.0

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

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

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

    report machine for .net

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

    delphi经典控件 report machine2.6

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

    ReportMachine

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

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

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

    asp.net知识库

    asp.net报表解决方法 SQLDMO类的使用 SQL过程自动C#封装,支持从表到基本存储过程生成 使用SQLDMO控制 SQL Server 使用SQL-DMO实现定制SQL Scripts Create Tables and Build inserts from Tables by using ...

    王中王体育馆管理软件

    系统提供:营业情况统计报表,营业收入日报表,营业收入月报表,收银员交班报表,会员名册报表,库存报,库存日报表,库存月报表,场地租金统计报表 2.14自定义输入法. 每个收银员习惯的输入法都不一样, 系统支持每个收银...

    王中王羽毛球馆管理软件V5.3

    系统提供:营业情况统计报表,营业收入日报表,营业收入月报表,收银员交班报表,会员名册报表,库存报,库存日报表,库存月报表,场地租金统计报表 2.15自定义输入法. 每个收银员习惯的输入法都不一样, 系统支持每个收银...

    ASP.NET3.5典型模块开发源代码

    10.1.3 比较常见的几种验证 方式 120 10.2 最简单的随机数字验证 120 10.2.1 生成随机数字 120 10.2.2 设计验证功能 121 10.2.3 实现服务器端验证 122 10.3 复杂的图文验证 123 10.3.1 创建生成随机...

    C#编程经验技巧宝典

    2 <br>0003 设置程序代码行序号 3 <br>0004 开发环境全屏显示 3 <br>0005 设置窗口的自动隐藏功能 3 <br>0006 根据需要创建所需解决方案 4 <br>0007 如何使用“验证的目标架构”功能 4 ...

    freemarker生成复杂word

    在Web应用中,有时需要按照固定的模板将数据导出到Word,如流程审批单,在流程处理完成后将处理过程按照流程单的要求导出,有时程序中需要实现生成标准Word文档,要求能够打印,并且保持页面样式不变,常见的方案有...

    学生成绩信息管理系统论文 JSP 完整版

    在数据库的发展历程中,曾出现过多种不同形式的数据库系统,但关系型数据库管理系统(RDBMS)以其优越性而被广为采用,象现在几种广泛使用的数据库全为关系型数据库。同样,MySQL也是关系型的数据库系统,支持标准的...

    Delphi5开发人员指南

    10.5.1 打印分栏报表 270 10.5.2 放弃打印进程 275 10.5.3 打印信封 275 10.5.4 抽象打印 276 10.5.5 一个简单的打印预览程序 285 10.6 其他打印任务 286 10.6.1 TDeviceMode结构 286 10.6.2 设置打印份数 288 ...

    数据库学习基础之名词解释

    系统提供了一个完整的软件开发工具Developer2000,包括交互式应用程序生成器、报表打印软件、字处理软件以及集中式数据字典,用户可以利用这些工具生成自己的应用程序。Orcale以二维表的形式表示数据,并提供了SQL...

    JAVA上百实例源码以及开源项目源代码

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

    JAVA上百实例源码以及开源项目

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

Global site tag (gtag.js) - Google Analytics