最近在做倉儲的項目,許多的打印文件都包含條形碼,之前一直使用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;
}

