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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

几种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方式来实现打印。

动态获取数据)

(动态获取数据

+DHTML+javascript+后台代码

六、轻量级的ActiveX插件

插件+

后台代码(

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

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

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

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

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

下面是一个预览的界面。

格式设计页面如下:

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

这种方案的优点是:

能设置打印的纸型,方向,边距,页眉页脚等等打印参数。

能实现精确打印,分页;

格式可以自定义;

成本低廉,ActiveX 只有75k 。

报表打印方式报表打印方式 优缺点优缺点

浏览器的打印功

能菜单 该方案的优势在于无需对浏览器作任何扩充,是最简单的办

法,但问题也最多,如:

不能精确分页,浏览器一般是根据用户设置的页面大小,web 页面的内容多少,来自行决定分页位置,程序

员很难控制。会有页脚页眉干扰。

• 不能准确对齐边边距及打印文字

• 不能解决连续打印比如,不是仅打印一张票据,而是连

续一次打印若干个票据。

使用print css 这是一种最理想的实现web 套打的方法。方法通过在html 文

档中,嵌入报表打印相关的css 样式,来实现对html 文档输

出打印的控制,比如设置纸张大小,纸张纵横方向,打印边距,

分页等。显而易见,该方式成本小,无需下载任何插件,而且

跨平台性非常好。虽然print css 推出已经有一段时间,但至

今仍没有一个厂商的浏览器能很好地实现了以上标准,从而使

得程序员目前还不能利用print css 进行实际的开发。

使用pdf 文件 用该方式,就是从服务器端下载一个pdf 文件流,在IE 中用

adobe 插件打开,然后用adobe 的打印菜单进行打印。虽然该

方案也能实现精确套打,但需要下载几十M 大小的adobe 插件。

这是国外报表工具经常推荐的一种打印方法,但在pdf 不那么

普及的中国,该方案不是最好选择。

采用ActiveX 该方案就是下载一个控件,这种方案的优点为打印的精确度

高,分页的可控性好;但缺点也是很明显,嵌入ActiveX 控件

只能支持IE 浏览器,而且由于微软公司对网络安全越来越看重,新版本的浏览器往往默认禁止AcitveX,导致 ActiveX 插

件的安装常常失败,且这样的控件比较大(一般超过1M),

下载颇费时间)。

采用Applet 方式

用该方式,分页或精确打印均可以做到完美。但缺点也很明显,

具体表现:

• 安装Applet 成本巨大。需要下载十几M 的文件Applet

本身可能并不大,但运行Applet 所需的jre 一般至少

10几M(jre1.4.2 , 15.45M)。用户需要极大的耐心

来进行打印。

• 打印报表时,需要重新向服务器检索数据,效率低因为

Applet 方案,一般采用html 方式呈现数据,打印时

Applet 必须向服务器检索同一张票据的数据,看上去,

是打印了当前页的票据,实际上,Applet 根本不会用

当前html 页的数据来打印,而是向服务器下载数据到

Applet 中来打印。也就是说,如果打印,必须有两次

请求,一次html 呈现,一次用来打印。 采用Flash 方式 用该方式,分页或精确打印,都可以做到完美,几乎95%的浏

览器都预装了Flash Player,打印之前不再需要安装Flash

Player,即使需要安装也只有几百K 的大小,非常的方便。

相关文档
最新文档