专业的票据打印,一般采用针式打印机。但是好的针式打印机一般需要近两千元,如果培训机构分部比较多,算下来也是一笔不小的开支。并且针式打印机的打印速度较慢,耗材较贵,调试维护成本相对较高。而目前市场上有很多价格低廉的热敏小票打印机,打印速度快,操作简单,耗材成本也低。也不失为一个较好的选择。
今天笔者就带大家看一下,如何使用麦田培训学校管理软件,设计出符合小票打印机的票据格式。麦田培训学校管理软件里,默认采用的是剪切型大小收据联打格式,应当是为喷墨或激光打印机准备的。但是麦田软件平台支持修改打印格式,并且有专门的语法,所以我们完全可以自己动手,设计自己个性化的样式。
登录麦田软件,分析>打印模板,我们可以看到系统内置的模板,编辑这些模板即可以达到修改报表的目的。首先我们了解一下麦田报表的简单语法,在head标签之间有一段控制打印机的标签。
<pagesetting> <landscape>false
</landscape> <paperkind>Custom
</paperkind> <paperwidth>5.5cm
</paperwidth> <paperheight>11cm
</paperheight> <pageleft>1mm
</pageleft> <pageright>5mm
</pageright> <pagetop>8mm
</pagetop> <pagebottom>5mm
</pagebottom> <fontname>宋体
</fontname> <fontsize>7
</fontsize> <doctype>1
</doctype> <resolutionkind>3
</resolutionkind> </pagesetting>
Landscape 标签用于设置打印机纸张是横向还是纵向走纸。True 表示横向,False表示纵向。
Paperkind 标签用于设置打印机纸张类型,取值范围见(附录1)当取值为Custom时,控件将按paperwidth,paperheight标签设置的纸张名称创建自定义纸张。
Paperwidth 标签用于设置自定义纸张的宽度,最小及默认单位为mm。
Paperheight标签用于设置自定义纸张的高度,最小及默认单位为mm。
Pageleft 表示左边距,最小及默认单位为mm。
Pageright 表示右边距,最小及默认单位为mm。
Pagertop 表示顶部边距,最小及默认单位为mm。
Pagerbottom 表示底部边距,最小及默认单位为mm。
Doctype 表示选择打印机类型,1为票据打印(如:针式打印机),2为卡证打印,3为普通打印。
ResolutionKind 表示打印的清晰度,值越小分辨率越高,同时也很耗材。
因为小票打印机支持的纸张宽度,通常只有5.5cm,所以我们把
Paperwidth的值设置为5.5cm,高度我们可以设置为11cm。这个时候我们可以想象,现在有一张5.5cm X 11cm的白纸,我们将在上面描绘我们的小票了 :P,在body标签之间将设计报表的正文。
首先我们设计标题,语法如下:
<span x="0" y="0cm" style="width:4.5cm; height:1cm;text-align:center;font-size:18;font-family:黑体;">消费单</span>
x表示这段文本出现的水平方向位置,默认单位mm,y表示垂直方向的位置。style标签里定义了这段文件的宽、高、对齐方式、字号、字体样式。语法看上去是不是很像HTML与CSS。
然后我们设计一些学员信息与单号信息,代码如下:
<p x="0cm" y="0.8cm" style="width:5cm;height:1.5cm;font-width:100%; line-height:120%;text-align:left"> 姓名:
<xsl:value-of select="ds/Bill/StudentName" /><br /> 学号:
<xsl:value-of select="ds/Bill/StudentID" /><br /> 日期:
<xsl:value-of select="String:FormatDate('{0:D}',ds/Bill/DateAndTime)" /><br /> 流水号:
<xsl:value-of select="ds/Bill/BillID" /> </p> 这是一个段落标签P,x,y,style属性意义同上,P标签里支持<br />换行标签,麦田报表里采用了XSL语言来处理数据。后台数据源XML在麦田说明书里有提供。关于XSL语言用法大家可以上网查查,比较简单。
接着我们将设计报表最关键的内容,数据列表,代码如下:
<table x="0cm" y="2.3cm" style="border:0.2mm" minlines="6"> <thead class="thead"> <tr height="0.5cm"> <td width="2.5cm">收费项
</td> <td width="1.2cm">单价
</td> <td width="0.8cm">数量
</td> </tr> </thead> <tbody> <xsl:for-each select="ds/BillItem"> <tr height="0.5cm" style="border-top-width:0mm;border-bottom-width:0mm;"> <td width="2.5cm" style="border-left-width:0.5mm;"> <xsl:value-of select="ProductName" /> </td> <td width="1.2cm"> <xsl:value-of select="String:FormatNumber('{0:c}',UnitPrice)" /> </td> <td width="0.8cm" align="center" style="border-right-width:0.5mm;"> <xsl:value-of select="Amount" /> <xsl:value-of select="UnitName" /> </td> </tr> </xsl:for-each> <filltr height="0.5cm" style="border-top-width:0mm;border-bottom-width:0mm;"> <td width="2.5cm" style="border-left-width:0.5mm;"> </td> <td width="1.2cm"> </td> <td width="0.8cm" style="border-right-width:0.5mm;"> </td> </filltr> </tbody> <tfoot class="bottom" style="border-top-width:0.5mm"> <tr height="1cm"> <td width="4.5cm" style="text-align:left"> 优惠:
<xsl:value-of select="String:FormatNumber('{0:c}',ds/Bill/Favourable)" /><br /> 实收:
<xsl:value-of select="String:FormatNumber('{0:c}',ds/Bill/Payed)"/><br /> 单位盖章:______________
</td> </tr> </tfoot> </table> 这一段笔者是从麦田默认的报表直接修改过来的,修改方法,主要是通过修改Table标签的行,列,宽度高度实现的。
Maxlines 表示每页显示数据项行数。Thead 表示表格头部,Tbody 表示数据项,Tfoot 表示表格底部,同时此报表还支持通过class属性来引用样式表,这一点同html+css中是相同的。
通过上面的简单修改,笔者的小票打印格式就实现了,贴几张图让大家看看效果:
本文章参考相关资料:
麦田培训管理软件SWT 2.0 使用说明书麦田报表语法 v1.0
报表下载(下载后把templet文件夹内的文件复制到系统的Report/templet目录中,代替原文件)