top
Loading...
利用ASP實現三個強大功能(二)(轉,強烈推薦)
2、在Web上動態建立條形碼

這篇文章討論的是如何根據數據庫的字段在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語句返回等價于文件名的字符串。如果數據庫字段的數值是整型或者僅僅包含字符或者數字,上面的遍歷代碼就已經很好了!

以上介紹的方法不是很復雜,但是在某些方面卻是很簡單,而且很好用。

北斗有巢氏 有巢氏北斗