硬件篇--设计小票打印机报表

2011年12月03日 07:05
点击率:13883
    专业的票据打印,一般采用针式打印机。但是好的针式打印机一般需要近两千元,如果培训机构分部比较多,算下来也是一笔不小的开支。并且针式打印机的打印速度较慢,耗材较贵,调试维护成本相对较高。而目前市场上有很多价格低廉的热敏小票打印机,打印速度快,操作简单,耗材成本也低。也不失为一个较好的选择。

  今天笔者就带大家看一下,如何使用麦田培训学校管理软件,设计出符合小票打印机的票据格式。麦田培训学校管理软件里,默认采用的是剪切型大小收据联打格式,应当是为喷墨或激光打印机准备的。但是麦田软件平台支持修改打印格式,并且有专门的语法,所以我们完全可以自己动手,设计自己个性化的样式。


    登录麦田软件,分析>打印模板,我们可以看到系统内置的模板,编辑这些模板即可以达到修改报表的目的。首先我们了解一下麦田报表的简单语法,在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时,控件将按paperwidthpaperheight标签设置的纸张名称创建自定义纸张。

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目录中,代替原文件)


下一篇: