也谈WEB打印(-):目前的几种方式及我们的任务

转载 2007年10月13日 22:10:00

来源: 博客园 http://www.cnblogs.com/Yahong111/archive/2007/10/08/917176.html

     B/S平台下的MIS软件,打印是不可缺少的功能,好的报表输出,能让你的产品在用户的心中增加不少的分量。但是打印模块所花的时间也是非常的多的。其实现方式有如下几种:

1、使用Crystal Report等通用报表组件来完成。

   优点:功能强大,对于CS/BS都可以通用,Crystal Report等甚至与还有Report Service等功能,对于业务流程非常复杂的大项目应该是很适合的了。这种项目人手充足,时间充足,资金也充足,老板也重视。(这是个人猜测,因为我没做过大项目^_^)。

  缺点:工作量大,对每一个报表都需要设计模板,这个需要花费不少的时间和精力。我们这种小项目,流程不复杂,Report Service等功能用不上,也不用CS/BS通用,也许将来某个时候需要需要在C/S下用,但还不知道那是什么时候。就是需要控制页边距、纸张大小等,然后把当前界面或者某个报表(很少的情况)打印出来就可以了。另外,我们因为项目小,所以项目成员也少,也就5~6个人,项目的开发周期也短,也就2~3个月,如果还需要抽出人手来专门做报表模板,还真有点紧张。看着兄弟们加班加点,还真不忍心再加大工作量。还有一个最要命的是,这些东西真的贵。资金本来就少,还需要买这些服务,一谈起这个事情,老板总是摇头。

2、使用IE自带的打印功能,加上CSS的支持。

   优点:不用专人花时间来写打印模板,节省时间,也不要另外花钱,老板很高兴。似乎是一个好的方案。

缺点:功能太弱小了。不能控制页边距、纸张大小等,更不用说不打印当前界面而是打印另外一个报表了。这样,客户就不高兴了,干嘛非得每次让我自己设置页边距、设置纸张大小、设置页眉页脚等,或者是有些报表根本就没有提供。

3、使用meadroid等提供的免费客户端打印组件。

   优点:同2

   缺点:meadroid的这个东西很好,可惜只能使用半年。半年之后你必须重新下载,并更改该组件的GUID,真麻烦。如果用户这个时候正好需要打印,那真是臭大了。而且,如果你想避免这种情况的发生,那就请交钱吧,即使是1年的费用好像也不便宜。这样的话,我们似乎又回到了第一个解决方案。当然还有许多其他公司提供的免费组件,但是性质和meadroid公司提供的都差不多,费用有便宜的,也有贵的,总的说来,老板都总是摇头。

4、使用服务器端生成PDF等文件的方式。

    优点:现在生成PDF文件的免费组件很多,不用另外花钱。效果也很好。

缺点:学习困难。代码量也非常大。而且,对于我们这种需求多变的小项目,一旦客户的要求变了,那么就必须相应的更改代码。维护的代价真的高。

看了这么几种方案,都不适合我们使用。还是毛主席老人家讲得好,“自己动手,丰衣足食”,看来得自己动手写一个IE客户端打印组件了,他实现如下功能:

1、 可以用js控制页边距、纸张大小、页眉页脚、横向纵向等。

2、 可以用js控制打印内容。

找了几天的资料,终于找到了2篇好文:《Beyond Print Preview: Print Customization for Internet Explorer 5.5、《Print Preview 2: The Continuing Adventures of Internet Explorer 5.5 Print Customization》。看了半天,终于摸出了一点头绪,在那个Sample的基础上改了改,做了个ActiveX,现供朋友们使用。可以用js控制页边距,设置当前打印的URL,至于纸张大小,页眉页脚等功能,容我实现后再提供给朋友们使用。至于源码,因涉及公司机密,所以……请朋友们见谅。

使用方法:

1、首先在被打印页面中包含如下语句:

<OBJECT ID="DLPrinter" CLASSID="CLSID:5C230622-45E5-4e3c-893C-3BFDDC4DB5E4" height="0" width="0" codebase="DLPrinter.CAB" ></OBJECT>

2、打印预览:<input type="button" id="btnPrint" value="Print Preview" onclick="DLPrinter.PrintPreview()" />

3、设置页边距:

 DLPrinter.MarginLeft=20; //这是毫米制的

 DLPrinter.MarginRight=20;

 DLPrinter.MarginTop=20;

 DLPrinter.MarginBottom=20;

4、不打印当前页面而是另外一个页面:

DLPrinter.ContentURL="http://www.cnblogs.com/Yahong111/archive/2007/09/19/898326.html";

在后续的文章中,我会讲述是如何实现这些功能的。欢迎拍砖。
    DLPrinter.CAB.rar,大家把扩展名.rar去掉即可(因为不能上传.cab文件,所以把DLPrinter.cab改成了DLPrinter.cab.rar)。

 

定时任务的几种实现方式

Android里有时需要定时循环执行某段代码,或者需要在某个时间点执行某段代码,这个需求大家第一时间会想到Timer对象,没错,不过我们还有更好的选择。一、Timer 实现定时任务 Timer ti...
  • CJF0410
  • CJF0410
  • 2016年12月20日 23:18
  • 230

目前自己的几种脱壳方式

1.     FSG壳:        针对FSG壳 一般的思路是F8一路向下,遇见向上的跳转,直接在跳转语句后面下断点F9跳过,一路循环此过程,知道程序的OEP处,(自己先去查看内存中各段的内存地址...
  • qq_22642239
  • qq_22642239
  • 2015年12月07日 19:58
  • 638

几种Web通信方式的概念定义

以前写的一些Web通信相关的文章好像只是对各种Web通信方式在浏览器上的实现给出了解决方案,对于这些Web通信方式本身的概念没有明确的做过定义。造成了大家可能看得一头雾水了,于是这篇文章就来梳理一下这...
  • u013437428
  • u013437428
  • 2014年01月15日 15:46
  • 783

web网页 页面布局的几种方式

网页基本布局方式: (1)流式布局 Fluid 流布局与固定宽度布局基本不同点 就在于对网站尺寸的侧量单位不同。固定宽度布局使用的是像素,但是流布局使用的是百分比,这位网页提供了很强的可塑性和流动...
  • lyyo_cd
  • lyyo_cd
  • 2017年06月16日 12:19
  • 2888

JAVA WEB几种数据库连接方式

 1、Oracle8/8i/9i数据库(thin模式) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); S...
  • zkeal
  • zkeal
  • 2015年07月07日 22:50
  • 1247

JAVA WEB几种数据库连接方式

1、Oracle8/8i/9i数据库(thin模式) Class.forName("Oracle.jdbc.driver.OracleDriver").newInstance(); Strin...
  • tianzongnihao
  • tianzongnihao
  • 2017年02月16日 13:51
  • 945

三种主流的Web服务实现方案简述及比较

目前知道的三种主流的Web服务实现方案为: REST:表象化状态转变 (软件架构风格) SOAP:简单对象访问协议 XML-RPC:远程过程调用协议 下面分别作简单介绍: RES...
  • u010566813
  • u010566813
  • 2016年01月09日 00:06
  • 704

maven web项目的几种部署方式和常见的出错方式的解决

本人现在开始学习着弄maven,最近部署一个maven web项目,其中有些前辈写的东西还是蛮经典的,maven项目的建立随着版本的更新操作越来越简单,我现在用的maven版本是3.3.9,较之前的版...
  • win7system
  • win7system
  • 2016年02月25日 16:05
  • 1730

几种主流数据库软件的应用特点、适用范围各是什么?

际国内的主导关系型数据库管理系统有 SQL Server、ORACLE、SYBASE、INFORMIX 和 DB2。 本文从性能,可伸缩性和并行性,安全性,操作简便,使用风险,开放性,易维护性和价格...
  • gaohong19900829
  • gaohong19900829
  • 2013年08月12日 18:21
  • 1272

web端上传图片的几种方式

首先是后台要有一个上传图片的工具类: package utils; import java.io.File; import org.apache.commons.lang.StringUtils...
  • u013399093
  • u013399093
  • 2015年08月18日 10:45
  • 6844
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:也谈WEB打印(-):目前的几种方式及我们的任务
举报原因:
原因补充:

(最多只允许输入30个字)