專業(yè)的票據(jù)打印,一般采用針式打印機。但是好的針式打印機一般需要近兩千元,如果培訓(xùn)機構(gòu)分部比較多,算下來也是一筆不小的開支。并且針式打印機的打印速度較慢,耗材較貴,調(diào)試維護成本相對較高。而目前市場上有很多價格低廉的熱敏小票打印機,打印速度快,操作簡單,耗材成本也低。也不失為一個較好的選擇。
今天筆者就帶大家看一下,如何使用麥田培訓(xùn)學(xué)校管理軟件,設(shè)計出符合小票打印機的票據(jù)格式。麥田培訓(xùn)學(xué)校管理軟件里,默認(rèn)采用的是剪切型大小收據(jù)聯(lián)打格式,應(yīng)當(dāng)是為噴墨或激光打印機準(zhǔn)備的。但是麥田軟件平臺支持修改打印格式,并且有專門的語法,所以我們完全可以自己動手,設(shè)計自己個性化的樣式。
登錄麥田軟件,分析>打印模板,我們可以看到系統(tǒng)內(nèi)置的模板,編輯這些模板即可以達到修改報表的目的。首先我們了解一下麥田報表的簡單語法,在head標(biāo)簽之間有一段控制打印機的標(biāo)簽。
<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 標(biāo)簽用于設(shè)置打印機紙張是橫向還是縱向走紙。True 表示橫向,False表示縱向。
Paperkind 標(biāo)簽用于設(shè)置打印機紙張類型,取值范圍見(附錄1)當(dāng)取值為Custom時,控件將按paperwidth,paperheight標(biāo)簽設(shè)置的紙張名稱創(chuàng)建自定義紙張。
Paperwidth 標(biāo)簽用于設(shè)置自定義紙張的寬度,最小及默認(rèn)單位為mm。
Paperheight標(biāo)簽用于設(shè)置自定義紙張的高度,最小及默認(rèn)單位為mm。
Pageleft 表示左邊距,最小及默認(rèn)單位為mm。
Pageright 表示右邊距,最小及默認(rèn)單位為mm。
Pagertop 表示頂部邊距,最小及默認(rèn)單位為mm。
Pagerbottom 表示底部邊距,最小及默認(rèn)單位為mm。
Doctype 表示選擇打印機類型,1為票據(jù)打?。ㄈ纾横樖酱蛴C),2為卡證打印,3為普通打印。
ResolutionKind 表示打印的清晰度,值越小分辨率越高,同時也很耗材。
因為小票打印機支持的紙張寬度,通常只有5.5cm,所以我們把
Paperwidth的值設(shè)置為5.5cm,高度我們可以設(shè)置為11cm。這個時候我們可以想象,現(xiàn)在有一張5.5cm X 11cm的白紙,我們將在上面描繪我們的小票了 :P,在body標(biāo)簽之間將設(shè)計報表的正文。
首先我們設(shè)計標(biāo)題,語法如下:
<span x="0" y="0cm" style="width:4.5cm; height:1cm;text-align:center;font-size:18;font-family:黑體;">消費單</span>
x表示這段文本出現(xiàn)的水平方向位置,默認(rèn)單位mm,y表示垂直方向的位置。style標(biāo)簽里定義了這段文件的寬、高、對齊方式、字號、字體樣式。語法看上去是不是很像HTML與CSS。
然后我們設(shè)計一些學(xué)員信息與單號信息,代碼如下:
<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 /> 學(xué)號:
<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> 這是一個段落標(biāo)簽P,x,y,style屬性意義同上,P標(biāo)簽里支持<br />換行標(biāo)簽,麥田報表里采用了XSL語言來處理數(shù)據(jù)。后臺數(shù)據(jù)源XML在麥田說明書里有提供。關(guān)于XSL語言用法大家可以上網(wǎng)查查,比較簡單。
接著我們將設(shè)計報表最關(guān)鍵的內(nèi)容,數(shù)據(jù)列表,代碼如下:
<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">數(shù)量
</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"> 優(yōu)惠:
<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> 這一段筆者是從麥田默認(rèn)的報表直接修改過來的,修改方法,主要是通過修改Table標(biāo)簽的行,列,寬度高度實現(xiàn)的。
Maxlines 表示每頁顯示數(shù)據(jù)項行數(shù)。Thead 表示表格頭部,Tbody 表示數(shù)據(jù)項,Tfoot 表示表格底部,同時此報表還支持通過class屬性來引用樣式表,這一點同html+css中是相同的。
通過上面的簡單修改,筆者的小票打印格式就實現(xiàn)了,貼幾張圖讓大家看看效果:
本文章參考相關(guān)資料:
麥田培訓(xùn)管理軟件SWT 2.0 使用說明書麥田報表語法 v1.0
報表下載(下載后把templet文件夾內(nèi)的文件復(fù)制到系統(tǒng)的Report/templet目錄中,代替原文件)