利用Code128字體將文本轉換為code128條形碼


最近在做倉儲的項目,許多的打印文件都包含條形碼,之前一直使用C39P24DhTt字體直接轉換為39碼,但是最近要求使用code128編碼格式的條形碼。第一個想到的方法是下載一個code128字體,想到后立馬動手,結果卻大大讓人失望,沒有一個掃描槍能夠識別,沒辦法,只能想其他的辦法了。

  馬上想到的是去問度娘,大多數做法是將字符轉換為code128的編碼,然后畫出相應的條碼,這個方法是最好的,客戶端不需安裝任何相關的字體,但是做法卻有些復雜。最后找到了一個簡單的方式,但是前提是使用者安裝了Code128字體,下面是具體的實現代碼,供有需要的人參考。

  Code128A

復制代碼
public string GetCode128A(string inputData)
        {
            string result = "";
            int checksum = 103;
            int j = 1;
            for (int ii = 0; ii < inputData.Length; ii++)
            {
                if (inputData[ii] >= 32)
                {
                    checksum += (inputData[ii] - 32) * (ii + 1);
                }
                else
                {
                    checksum += (inputData[ii] + 64) * (ii + 1);
                }
            }
            checksum = checksum % 103;
            if (checksum < 95)
            {
                checksum += 32;
            }
            else
            {
                checksum += 100;
            }
            result = Convert.ToChar(203) + inputData.ToString() + Convert.ToChar(checksum) + Convert.ToChar(206);
            return result;
        }
復制代碼

  Code128B

復制代碼
public string GetCode128B(string inputData)
        {
            string result = "";
            int checksum = 104;
            int j = 1;
            for (int ii = 0; ii < inputData.Length; ii++)
            {
                if (inputData[ii] >= 32)
                {
                    checksum += (inputData[ii] - 32) * (ii + 1);
                }
                else
                {
                    checksum += (inputData[ii] + 64) * (ii + 1);
                }
            }
            checksum = checksum % 103;
            if (checksum < 95)
            {
                checksum += 32;
            }
            else
            {
                checksum += 100;
            }
            result = Convert.ToChar(204) + inputData.ToString() + Convert.ToChar(checksum) + Convert.ToChar(206);
            return result;
        }
復制代碼

  Code128C

復制代碼
public static string GetCode128C(string inputData)
        {
            string result = "";
            int checksum = 105;
            int j = 1;
            for (int ii = 0; ii < inputData.Length; ii++)
            {
                if (ii % 2 == 0)
                {
                    checksum += Convert.ToInt32(inputData.Substring(ii, 2)) * j;
                    if (Convert.ToInt32(inputData.Substring(ii, 2)) < 95)
                    {
                        result += Convert.ToChar(Convert.ToInt32(inputData.Substring(ii, 2)) + 32);
                    }
                    else
                    {
                        result += Convert.ToChar(Convert.ToInt32(inputData.Substring(ii, 2)) + 100);
                    }
                    j++;
                }
                ii++;
            }
            checksum = checksum % 103;
            if (checksum < 95)
            {
                checksum += 32;
            }
            else
            {
                checksum += 100;
            }
            result = Convert.ToChar(205) + result + Convert.ToChar(checksum) + Convert.ToChar(206);
            return result;
        }
復制代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM