`
wwwwwhg
  • 浏览: 47522 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
文章分类
社区版块
存档分类
最新评论

Web打印 / 报表

阅读更多
http://www.cnblogs.com/webreport/archive/2007/07/23/828512.html
web报表开发技术专题
摘自^

因为打印功能的重要性,所以进入web开发后,很快就开始关注web打印功能的开发了,web打印有下面的相关问题需要考虑清楚:

1 在客户端还是服务器端打印?考虑到数据传递到客户端的速度问题,在服务器端做大数据量的打印还是不错的选择。但在后台打印必竟很不方便,所以主要还是要在客户端打印,即利用客户端的打印机打印。

2 是导出为PDF或EXCEL文件后打印还是直接打印?将要打印的内容生成为PDF或EXCEL文件后再打印,这也是一种方式,这种方式实际上也就几乎不需要专门考虑打印功能的开发了,开发工作量少。但其缺点也很明显:需要客户端安装打开PDF的软件(或EXCEL软件),需要在另一个软件中打印,步骤多,无法实现点击后直接打印,这种打印模式也无法实现某个单据是否打印了要当作一个标志保存起来的场合。

3 是利用IE的打印还是自己实现打印?如果打印功能全部由自己实现,因为要处理数据,样式,位置,图片等的打印,自然程序量小不了,往往会使第一次的下载量很大。而且往打印控件中传递要打印的数据的过程会比较复杂而且慢。

4 第一次打印时需不需要下载ActiveX控件?如果不需要,则无法用javascript脚本程序控制客户端的打印机,无法自定义纸张,无法不弹出打印对话框就直接打印。也就是说,最终用户在每次打印时都要手工选择好打印参数(如打印方向,纸张大小等),这样显然会使最终用户的操作比较麻烦。

      最开始我是设想直接用javascript脚本来计算分页,直接利用IE中的打印机制来解决打印问题。后来随着IE的版本升级,安全机制不断完善。在不下载ActiveX插件的情况下,IE的安全机制是不可能让你用javascript脚本来全面控制客户端的打印机的。试想如果这样的话就有可能浏览网上的某个网页时,你连接的打印机就自动开始打印东西了。也就是说,要想弄好Web打印,必须要在客户端下载插件。在中国流氓插件泛滥的情况下,大家一看到插件都怕了。要不就要下载插件,要不打印就不太方便。这成了web打印的死结。且觉得一样子无法解开,真是尴尬的Web打印。

      既然最佳的方式是无解的,哪就退而求其次吧。用一个小的轻量级的activeX控件来控制客户端的打印机吧,这样第一次下载这个activeX控件是也不会很慢。

      记得以前在卖web打印控件时,有一用户将scriptx的网站告诉我,说要能实现这样的功能就买。于是便开始研究起scriptx来。按照我以前用visual c++编程的经验,觉得大体就是用钩子函数来实现。结合IE的打印模版技术,终于基本上达到了。用visual c++的ATL(为了减少字节而没有用MFC)做了一个webprint.dll,这个webprint.dll压缩成cab文件后只有75K,和一个网页的大小相当。这样在第一次下载时便不会太慢了。因为真正的打印机制还是调用IE内部的,并没有在webprint.dll里面实现具体的打印功能,所以就不需要将要打印的内容传递到webprint.dll中,这是区别于其它用activex控件实现web打印的重要一点。如果靠activex控件来实现全部的打印功能的话,就必然要求要将打印的内容传递到activex控件中,这个传递的过程会比较麻烦而且速度也慢。Webprint.dll只完成向IE的内部实现的打印功能模块传递打印的基本参数(如:页面大小,页边距,打印方向,直接打印),网页上显示什么内容就打印什么内容,没有向webprint.dll传递打印内容的过程。如下图所示的打印预览界面图:



      实际上,打印的需求很简单,无非就是:分页,页眉页脚,页边距,打印方向,自定义纸张,直接打印,弹出打印对话框再打印,预览,放缩打印,成批打印,套打等功能,打印的需求很固定,明确而且通用。将一个多页的报表一页页地打印出来这样一个简单的需求,在网页上却相当麻烦,我也是在不久前才将它在e表中算是比较理想的实现了,即可以象cs程序一样,点一下按钮,就将多页的报表一页页地打印出来。这其中要考虑到在互联网上从服务器端向客户端传递大量数据时的分页处理,以及打印了一页数据再传递另一页数据的问题。因为如将要打印的多页内容一次从服务器端全部发送到客户端的话,在当今互联网的条件下很可能会因速度慢而受不了。只能每次从服务器端发送一页数据到客户端,打印,然后再发送下一页数据到客户端,再打印,如此下去直至打印结束。这一点也是web打印比c/s程序的打印要麻烦的地方。

      总之,Web打印问题已经和浏览网页速度慢的问题一样,成为Web程序的难题之一。只能作一些权衡。比如象国外因为PDF查看工具的流行,大多选择生成PDF文件后再打印的方式。我研究Web打印解决方案多年,最终采用的轻量级的ActiveX控件的Web打印方案,是我现在认为最适合中国国情的方案。也许以后还能找到更好的。
分享到:
评论

相关推荐

    WEB页面打印excel报表

    首先,我们需要理解Web打印的基本原理。在Web环境中,打印功能通常通过浏览器的打印API或者JavaScript库来实现,它可以将网页内容转化为适合打印的格式,并提供预览和实际打印的功能。对于Excel报表,我们通常需要将...

    web打印报表控件Lodop

    Web打印报表控件Lodop是一款专为网页打印设计的组件,它提供了强大的网页打印功能,使得用户在浏览器中即可方便地完成各种复杂的打印任务。Lodop以其简单易用和高效实用的特点,在IT行业内获得了广泛的应用。下面将...

    水晶报表ActiveX 打印(web打印)解决方法

    为解决这个问题,可以考虑使用Web打印服务,将报表转换为PDF或其他可打印格式,然后通过浏览器的内置打印功能进行打印。这种方法避免了ActiveX的依赖,适用于所有现代浏览器。 5. **服务器配置**:确保服务器上的...

    Web打印的解决方案之普通报表打印

    Web打印的解决方案主要关注如何在Web环境中有效地呈现和打印页面内容,尤其是对于普通报表的处理。在传统的Web项目中,通常使用JavaScript来处理打印需求,因为它可以在客户端直接操作DOM元素,实现页面的动态修改和...

    WEB应用中报表打印的实现

    在Web应用中,报表打印是不可或缺的功能之一,尤其是在企业级应用中,用户通常需要将数据以报表的形式进行查看和打印。传统的C/S(Client/Server)模型中,客户端可以直接处理复杂的用户界面和打印任务,但在B/S...

    aa.rar_html_html 报表_web 打印_报表打印

    在IT行业中,Web打印是一种常见的需求,特别是在企业管理、数据分析和报告呈现等领域。"aa.rar_html_html 报表_web 打印_报表打印"这个标题暗示了我们正在讨论一个与HTML、Web报表以及打印相关的压缩包文件,其中...

    WEB报表打印到PDF

    标题中的“WEB报表打印到PDF”指的是在网页中展示的报表转换为PDF格式的技术,这在数据呈现和分享中十分常见。PDF(Portable Document Format)文件格式能够保持文档的原始布局和格式,使得用户无论在何种设备或操作...

    ATGrid WEB报表控件打印插件

    打印插件是ATGrid WEB报表控件的一大亮点,它允许用户在Web环境中直接打印报表,无需下载到本地。用户可以设置打印范围、页眉页脚、页面布局等参数,支持单页或多页打印,以及预览功能,确保打印效果符合预期。 4....

    微软本地报表web打印方法.rar

    Web打印方法是将这些本地报表在网页环境中进行打印的功能,这对于那些需要从Web应用中导出或打印报表的用户来说非常实用。下面将详细介绍微软本地报表Web打印的方法及其相关知识点。 首先,我们需要了解微软本地...

    web水晶报表直接打印

    用户在查看或打印报表时,报表会被转换为PDF格式,然后由阅读器打开并进行打印。为了使用此模式,需要确保服务器和客户端都已安装了PDF阅读器。 2. **ActiveX模式**: - ActiveX模式利用ActiveX打印控件,允许用户...

    利用XML实现通用WEB报表打印

    本篇文章将深入探讨如何利用XML来实现通用的WEB报表打印。 首先,我们需要理解XML的基本结构。XML文档由元素构成,每个元素都有开始标签和结束标签,例如`<report>`和`</report>`。元素可以包含其他元素、文本或...

    Java实现Web报表打印功能.

    ### Java实现Web报表打印功能:基于iText组件的实践 #### 概述 在Web应用领域,打印功能一直是开发者面临的挑战之一。由于Web应用本质上属于瘦客户端架构,直接操作客户端设备(如打印机)存在限制。这促使业界...

    JAVA的Web打印方式(PageOffice、POI、jacob,html打印等)

    JAVA的Web打印方式详解 JAVA的Web打印方式是指在Web应用程序中实现打印功能的各种方法和技术。本文将主要介绍使用PageOffice、POI、jacob、html打印等方式来实现Web打印。 一、使用浏览器自带的打印功能直接打印 ...

    如何在Web页中使用水晶报表

    通过属性设置,可以调整报表的显示样式和交互方式,如是否启用分页、打印选项等。 3. 绑定数据:在Web应用程序中,数据通常是在运行时动态提供的。因此,你需要创建一个数据集(DataSet)或数据表(DataTable),...

    楚琳Web打印控件、源码、使用说明

    楚琳Web打印控件是一款专为网页打印设计的软件组件,它使得在Web应用程序中实现打印...通过深入理解和应用楚琳Web打印控件,你可以提升Web应用的用户体验,尤其是在那些打印需求频繁的场景下,如在线报表、发票打印等。

    基于BS结构的Web打印报表设计

    ### 基于BS结构的Web打印报表设计 随着信息技术的发展和互联网的普及,B/S(Browser/Server,浏览器/服务器)架构的应用程序已经成为企业信息化的重要组成部分。然而,在B/S架构下实现复杂报表的打印功能一直是个...

    非常不错的web打印程序(附示例程序)

    Web打印程序是一种允许用户在网页上直接进行打印操作的技术,它可以极大地提升用户体验,尤其是在需要大量打印文档或报表的场景中。本资源包含了一个优秀的Web打印程序,并提供了丰富的示例程序,便于开发者理解和...

    Flex:Web报表引擎+Web报表编辑器——MyReport 1.3.0.0

    Web上的良好的打印解决方案,WinForm的打印预览体现,报表自动化,支持直接打印,页小计,统计,转成金额大写,一维码显示, 图片显示等功能,满足中国式报表的常见功能需求。 Web报表编辑器: * Web上良好的报表...

    web报表开发WEB环境下打印报表的crystal的解决方案

    ### WEB环境下打印报表的Crystal Reports解决方案 #### 一、引言 在Web应用程序开发中,报表打印是一项重要的功能。Crystal Reports作为一款强大的报表工具,在Web环境中实现报表打印提供了高效的解决方案。本文将...

    Web环境下的报表打印技术与应用.pdf

    本文主要讨论了Web环境下的报表打印技术与应用,针对Web模式下开发报表打印的难点,提出了三种解决方案:直接利用脚本语言和样式表实现Web打印、用Word或Excel实现Web打印和开发ActiveX控件实现Web打印,并对三种...

Global site tag (gtag.js) - Google Analytics