1維 Barcode 長寬比參數調整
上次使用 ZXing.Net + ReportViewer 開發標籤軟體時遇到一維條碼列印出來後很難被條碼機成功識別的問題。
其原因是我們的條碼字元數是不固定的,有時候英文字比較多,有時數字比較多。這也使得系統透過固定參數(條碼寬、高)產生出來的條碼很容易出現模糊不清或間距太近導致很難被正確掃描等狀況。
網路上的解法
我在網路上找到一個付費套件提供了一些很不錯的想法,正好可以用來幫助我們解決不固定字串內容的 1 維條碼長度問題。(請參照Reference)
技術文件給了一個公式來計算最小條碼寬度(code 128): W = 11X * (C + D / 2) + 2Q + 2X
W = 條碼最小寬度(像素)
C = 3+ 特殊字元數、非全形字數
X = 每一個bar的寬度
Q = 1維條碼兩側的區域寬度,通常會用 X值的10倍作為設定值
D = 數字字元的數量
調整後的解法
但是實際用這段公式寫到程式內還是覺得很難符合需求,所以我做一點改變,改用下列公式來決定 1 維條碼的寬度。
修改後的寬度公式:4 * (條碼文字長度 + 非英文字的字元數 + 條碼文字長度/2) + 4
高度固定設定為:60
透過這個公式產生的 1 維條碼就正常許多,幾乎沒遇到印在標籤上卻難以辨認的情況發生。
Reference