硬件篇--設(shè)計小票打印機報表

2011年12月03日 07:05
點擊率:14354
    專業(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)了,貼幾張圖讓大家看看效果:

麥田培訓(xùn)學(xué)校管理軟件細(xì)節(jié)

本文章參考相關(guān)資料:
麥田培訓(xùn)管理軟件SWT 2.0 使用說明書
麥田報表語法 v1.0



報表下載(下載后把templet文件夾內(nèi)的文件復(fù)制到系統(tǒng)的Report/templet目錄中,代替原文件)


下一篇: