webreport

博客园 首页 新随笔 联系 订阅 管理

常常有人msn问:

  • 用javascript脚本可以直接执行一个exe 文件吗?
  • 不用控件可以不出打印对话框直接打印吗?
  • 不使用控件可以自定义纸张吗?

我的答案都是,不可以!

  • 试想,如果js脚本可以执行EXE文件,那当你打开一个页面的时候,在window_onload()事件中就执行一个EXE文件,将您C盘上的数据删除,这个可以吗?
  • 如果不用控件可以不出打印对话框直接就打印,那当你浏览某个页面的时候,就自动发出打印命令,默默的让你的打印机打印出很多广告信息,这个你能接受吗?
  • 如果不用控件,在你还没有授权的情况下,就给你的打印机自定义出一排自定义纸张信息,是不是觉得有点失控的感觉。

所以我觉得在你未授权的情况下,是肯定不能做超出权限范围的打印工作的,比如不出打印对话框就直接打印这种操作等等。

要能灵活的控制web打印,采用控件是必须的,而且控件最好是轻量级的,否则下载量太大也很影响效果。有些用户会考虑用java得applet来实现,但是applet是不需要授权的,也无法设置这些打印参数的,只能发送打印命令,按照默认的打印情况来处理,还是不能满足很多最终端的用户的需要。

采用轻量级控件来处理web打印的优势是显而易见的,所以我的打印处理方案如下:

控件就处理打印参数的设置,比如设置页头页脚,选择纸张,自定义纸张,直接打印这些比较关键的参数。采用VC的ATL技术,控件能控制到只有75k,这样根本不影响打开页面的速度。

  • 控制打印格式采用下面方式处理
    先看一个api结构图


    从上到下,对上图中的几个主要模块的说明:
  • 1、打印设计器:是B/S的,不需要单独安装,可以直接供应给最终用户使用。
  • 2、数据集:是个xml格式的一张二维表,可以xml文件;xml格式的字符串;也可以是xml格式的数据流。实现用户系统和打印工具的接口。
  • 3、Printer对象:是这个打印工具提供的一个驱动对象,用户系统通过这个对象调用这个打印工具。
  • 4、Engine:打印工具实现打印的引擎。
  • 5、打印COM组件:实现打印参数设置的小插件(类似scriptx的那个小插件)。有数字签名,需要认证后才能使用。

 

采用这样一个方案来处理打印格式预置,套打等等是不是行之有效呢?
上图的解决方案
产品试用版本下载地址:http://www.fcsoft.com.cn/webprint4.rar

posted on 2007-06-04 16:05  web报表  阅读(2735)  评论(3编辑  收藏  举报