專業的票據打印,一般采用針式打印機。但是好的針式打印機一般需要近兩千元,如果培訓機構分部比較多,算下來也是一筆不小的開支。并且針式打印機的打印速度較慢,耗材較貴,調試維護成本相對較高。而目前市場上有很多價格低廉的熱敏小票打印機,打印速度快,操作簡單,耗材成本也低。也不失為一個較好的選擇。
今天筆者就帶大家看一下,如何使用麥田培訓學校管理軟件,設計出符合小票打印機的票據格式。麥田培訓學校管理軟件里,默認采用的是剪切型大小收據聯打格式,應當是為噴墨或激光打印機準備的。但是麥田軟件平臺支持修改打印格式,并且有專門的語法,所以我們完全可以自己動手,設計自己個性化的樣式。
登錄麥田軟件,分析>打印模板,我們可以看到系統內置的模板,編輯這些模板即可以達到修改報表的目的。首先我們了解一下麥田報表的簡單語法,在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目錄中,代替原文件)