利用xml实现通用web报表打印.pdfVIP

  • 13
  • 0
  • 约2.48万字
  • 约 30页
  • 2020-09-13 发布于江苏
  • 举报
开发 B/S 结构的应用程序最头疼的问题可能就是报表打印了,由于只能采用浏览器来作为用 户界面进行交互,所以不能精确控制客户端的打印机。而很多 B/S 结构的应用程序常常需要 完成非常复杂的报表打印任务。而靠 IE 自带的页面打印功能一般不能满足需要。   采用 Crystal Report 是一种大型报表系统常用和推荐的解决方案,但是如果我们只需要 进行一些小规模的报表打印的话,Crystal Report 则显得庞大麻烦了一点,可定制性也不太 好,它的打印实际上也是利用了 IE 的打印功能,也不能精确控制打印效果,而且需要您对 它进行注册。   所以我们这里讨论的是另外一种办法,简单来说,如果您有下列需求中的任何一条,那 么就可以尝试采用本方案。   方案适用性   1. 远程数据打印。需要打印的数据并不在本地,必须进行远程读取。     2. 需要精确控制打印效果,包括页面格式,分页,附加条目,表格等。   3. 出于安全性考虑,不能直接连接到数据库。   方案原理   其实原理很简单,通过 XML 强大的自定义功能,我们便能方便的自定义出我们所有需 要的格式控制标签,在服务器端进行动态编码后通过 WEB 服务器传到客户端,然后在客户 端进行格式解析,根据服务器端定义的打印格式从客户端直接控制打印机打印出我们需要的 报表。   技术选择   由于报表打印比较复杂,为了能够精确控制打印格式,不能采用 WEB 浏览器页面打印 的方式进行报表打印工作,只能采取自编程控制客户端的打印工作。由于.NET framework 的winform 可以直接嵌入到网页中,我们在这里选用了该技术,但是请注意,我这么做并不 代表.NET winform 是唯一的选择,其实您可以采用任何客户端代替它,例如 Java Applet 或 者 ActiveX ,甚至是一个普通的应用程序都能行。   不允许直接连接到数据库,因此只能采用 XML 文件进行中间数据交换格式,通过普通 WEB 服务器的默认 80 端口进行数据传输。事实上,我简直找不到其它更理想的方案了,当 然,web service 也许能算是一种,但是它采用的是 SOAP 传输数据,从原理上看,应该和 我们采用的 XML 属于同种类技术。   再补充说明一下我为什么要采用.NET 编写的受控组件,优点在于:   1. 它不需要进行客户端注册。相对于 ActiveX 的一个大优点。   2. 比ActiveX 安全性高。在.NET Common Language Runtime 的控制之下运行   3. 编写方便。我喜欢 C#和 Visual Studio .NET 。   4. 有很强大的打印控制功能。利用.NET framework 类库。   5. 直接支持 XML 技术。   6. 和 IE 兼容性高。同为 Microsoft 公司产品。   另外,需要注意一点就是,在.NET framework sp1 和 sp2 中默认的安全级别是不能直接 运行受控组件的,但是在.NET framework 1.1 beta 中又改了回来,可以直接运行了。   服务器端您则可以采用现有的服务器系统和数据库,不需要新添加任何新硬件设备和新 的.NET 服务器管理人员,他们往往是些要求拿高薪的家伙。 :)   服务器的工作流程为:   1. 接受客户端的标准 XML 模版查询。   2. 需要根据查询要求将数据库数据格式转换成标准的XML 数据格式。   3. 将 XML 数据通过 80 端口发送出去。   可行性分析   由于现在的大部分数据库都支持 XML 格式的数据查询和转换,如 SQL Server 2000, Oracle 9i ,IBM DB2 等大型关系型数据库。只需要通过简单的设置就能直接进行 XML 数据 转换工作。如果数据库不能支持直接 XML 数据转换,也可以籍由一些服务器端脚本程序进 行脚本转换工作,比如 JSP ,ASP ,PHP 等等。 客户端也不需要任何特殊的设置工作,仅需要安装一个大小为 21M 的.NET framework 分发包,然后直接打开网页就可以进行工作。也没有操作系统限制,从windows 98 到windows xp 都能很好的支持。  伸缩性和安全性   伸缩性   由于采用的是 XML 标准数据格式作为中间数据交换,因此本解决方案具有非常好 伸缩性,例如,客户端的.NET 控件可以采用 JAVA APPLET、ACTIVX 或者是 VB ,VC 等编写的客户端应用程序直接替换。服务器也可以任意

文档评论(0)

1亿VIP精品文档

相关文档