這篇文章討論的是如何根據數據庫的字段在web上動態地建立條形碼的問題,這在如下的情況下非常有用:用戶輸入信息到系統中,然后顯示一個總結頁面“這就是你所輸入的”,這個頁面可以被打印,并在日后可以用條形碼進行跟蹤。
實現這個功能的關鍵在于如何將數值比如“ABC”翻譯為條形碼。這里我們使用“代碼39”,關于它的詳細情況,請參閱有關定義。我想將產生的條形碼顯示在web頁面上,這樣用戶就能打印包含條形碼的這個頁面,然后,再在圖形系統的處理中使用它。許多用戶都在系統中安裝了“代碼39”字體,所以我就能夠在頁面中改變它,但是我不想依賴它們。我想在頁面中建立,并且獨立于瀏覽器和計算機。
我的解決方法是:為Code39中每一個支持的字符創建GIF圖形文件。我使用Microsoft Paint軟件創建Code39字體大小的文本框,然后為每一個字符建立一個圖形。接著,使用Microsoft Image Composer將它們轉換為GIF格式。最后,使用掃描軟件檢查這些字符,看看是否能正確地解釋。下面,你將看到A、B、C以及星號(*)的條形碼:
Code for A
Code for B
Code for C
Code for Asterisk
然后,為了在ASP頁面中描繪數據庫中數值的條形碼,僅僅簡單地遍歷BarCodeText變量字符串中的每一個字符,然后建立< IMG SRC=“...” >標記以替換字符為相應條形碼圖形文件。這非常簡單,不需要在客戶端安裝字體文件。相關代碼如下:
'Code 39 barcodes require an asterisk as the start and stop characters
Response.write "< IMG SRC=""asterisk.gif"" WIDTH=""30"" HEIGHT=""36"">"
For x = 1 to Len(Trim(rst("BarCodeText")))
Response.Write "< IMG SRC=""" & mid(rst("BarCodeText"),x,1) & _
".gif"" WIDTH=""30"" HEIGHT=""36"">"
Next
'Code 39 barcodes require an asterisk as the start and stop characters
Response.write "< IMG SRC=""asterisk.gif"" WIDTH=""30"" HEIGHT=""36"">"
如果在記錄集當前記錄中BarCodeText的數值是“ABC”,那么執行上述代碼后,HTML的結果是:
< IMG SRC="asterisk.gif" WIDTH="30" HEIGHT="36">
< IMG SRC="A.gif" WIDTH="30" HEIGHT="36">
< IMG SRC="B.gif" WIDTH="30" HEIGHT="36">
< IMG SRC="C.gif" WIDTH="30" HEIGHT="36">
< IMG SRC="asterisk.gif" WIDTH="30" HEIGHT="36">
然后,將顯示如下圖形:
現在,將該頁面打印后,就可以被條形碼掃描器所跟蹤了。
有2點關于條形碼的注意事項:不是所有的條形碼都能支持所有的字符集。Code39是很好而且很簡單的一種。它具備可變長度,支持所有的大寫字符、數字、星號以及7個特殊字符。對于每個字符,它使用風格一致的5線(2寬3窄)4空(指間隙,1寬3窄)形式。另外的字符集支持更多的,使用不同的解碼方案。確認對每個字符都建立了GIF圖形文件,同時,你可以修改圖形的寬度和高度屬性,從而在頁面上顯示稍大的或者稍小的條形碼。
另外,如果遇到特殊的字符,上面的遍歷循環代碼將不會工作,因為,不能將GIF文件命名為+.gif。這時,就要編寫一個接受字符Ascii數值的函數,然后使用CASE語句返回等價于文件名的字符串。如果數據庫字段的數值是整型或者僅僅包含字符或者數字,上面的遍歷代碼就已經很好了!
以上介紹的方法不是很復雜,但是在某些方面卻是很簡單,而且很好用。