一、慨述
近些年来,随着互联网的普及和推广,传统的单机模式和局域中的c/s模式的应用程序越来越不能满足信息共享的要求。因此,一种新的基于浏览器的b/s的应用程序的开发方式被提了出来。新的开发方案以其客户端的免维护、免配置、程序能根据服务器的信息能够自动更新升级;服务器端多层模式的应有提高处理的效率和安全性越来越被广大的应用程序的开发者所看好。成为应用程序开发的一个新的发展方向。在windows的平台上,人们利用asp来开发服务的显示界面,而用组件来封装商业规则,在各种杂志上利用各种工具进行组件开发也是屡见不鲜。但介绍打印组开发却不怎么看到?
二、设想
Web打印组件要求是在一次为某单位开发信息管理系统中被提及的,这个系统中的一些票据需要打印。这样,如何对这些票据进行套打成了我们必须解决的问题。
要在客户端打印一些用户要求的票据或其它的文字或图片资料,有两种方式:一种是利用delphi的active form来生成客户端的界面,由浏览器下载安装,并在客户端运行。(这种方式在开发多后台数据库中,较为常用。在国内许多新版本的财务软件都采用了这种方法,其缺点是对开发人员的要求太高),另一种是开发一个组件在客户端安装,然后,由服务器端来生成vbscript脚本,在客户端运行、创建相应的组件对象;利用组件对象来进行打印操作。(这种方法只要客户端的com组件开发完成,使用者只要熟悉vbscript或javascript脚本语言就可能方便的调用)?
三、实现
首先、运行delphi 5.0;选择file菜单中的new,在弹出的对话框中选择activex页,选择activex library创建activex库.然后,再往新建的库中加入一个automation object,操作步骤同上。在automation object wizard对话框中填入组件名prttest3;单击ok。
然后、在弹出的prttest3.tlb窗口中,选择iprttest3。单击右键新增一个isinit的property,类型为long。再继续增加如下5个method:
procedure prtcustompage(pagewidth: integer; pageheight: integer);
safecall;
procedure prtstart; safecall;
procedure prtnewpage; safecall;
procedure prtend; safecall;
procedure prtdrawline(x1: integer; y1: integer; x2: integer; y2:
integer; linewidth: integer); safecall;
procedure prtsetfont(const fontname: widestring; fontsize:
integer); safecall;
procedure prttextrect(valign: integer; halign: integer; rectleft:
integer; recttop: integer;rectright: integer; rectbottom:
integer; const printstring: widestring); safecall;
它们意义是:
prtcustompage 用来设置自定义纸张.传入的参数自定义纸张的宽度和高度。
prtstart 用来初始化打印机。如果初始化成功,则将属性isinit置为真,反之则为假。
prtnewpage 用来使打印机换页。
prtend 结束打印任务。
prtdrawline 用来在页面上绘制一条线。(x1,y1)为起始点.(x2,y2)为终止点。linewidth为打印线的宽度。
prtsetfont 用来设置打印的字体名及大小。
prttextrect 用来指定的方框内的输出的指定的字符串。