如何使用Code128字體將文本轉(zhuǎn)換為code128條形碼
最近在做倉(cāng)儲(chǔ)的項(xiàng)目,許多的打印文件都包含條形碼,之前一直使用C39P24DhTt字體直接轉(zhuǎn)換為39碼,但是最近要求使用code128編碼格式的條形碼。第一個(gè)想到的方法是下載一個(gè)code128字體,想到后立馬動(dòng)手,結(jié)果卻大大讓人失望,沒有一個(gè)掃描槍能夠識(shí)別,沒辦法,只能想其他的辦法了。
馬上想到的是去問度娘,大多數(shù)做法是將字符轉(zhuǎn)換為code128的編碼,然后畫出相應(yīng)的條碼,這個(gè)方法是最好的,客戶端不需安裝任何相關(guān)的字體,但是做法卻有些復(fù)雜。最后找到了一個(gè)簡(jiǎn)單的方式,但是前提是使用者安裝了Code128字體,下面是具體的實(shí)現(xiàn)代碼,供有需要的人參考。
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;
}
總結(jié)
以上所述是小編給大家介紹的如何使用Code128字體將文本轉(zhuǎn)換為code128條形碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
java線程池:獲取運(yùn)行線程數(shù)并控制線程啟動(dòng)速度的方法
下面小編就為大家?guī)?lái)一篇java線程池:獲取運(yùn)行線程數(shù)并控制線程啟動(dòng)速度的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-05-05
Java數(shù)據(jù)結(jié)構(gòu)之棧的線性結(jié)構(gòu)詳解
從數(shù)據(jù)結(jié)構(gòu)上看棧和隊(duì)列都是線性表,不過是兩種特殊的線性表,棧只允許在的一端進(jìn)行插人或刪除操作,而隊(duì)列只允許在表的一端進(jìn)行插人操作、而在另一端進(jìn)行刪除操作,這篇文章主要給大家介紹了關(guān)于Java數(shù)據(jù)結(jié)構(gòu)之棧的線性結(jié)構(gòu)的相關(guān)資料,需要的朋友可以參考下2021-08-08
java輕量級(jí)規(guī)則引擎easy-rules使用介紹
這篇文章主要介紹了java輕量級(jí)規(guī)則引擎easy-rules使用介紹,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
java?ThreadPoolExecutor線程池內(nèi)部處理流程解析
這篇文章主要為大家介紹了java?ThreadPoolExecutor線程池內(nèi)部處理流程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
java基礎(chǔ)--自己動(dòng)手實(shí)現(xiàn)一個(gè)LRU
這篇文章主要介紹了運(yùn)用方案如何實(shí)現(xiàn)LUR,文章中通過代碼講解的非常詳細(xì),對(duì)大家的工作或?qū)W習(xí)有一定的參考價(jià)值,感興趣的朋友可以參考一下2021-08-08
Java中forward轉(zhuǎn)發(fā)與redirect重定向的區(qū)別
轉(zhuǎn)發(fā)和重定向都是常用的頁(yè)面跳轉(zhuǎn)方式,但在實(shí)現(xiàn)上有一些區(qū)別,本文主要介紹了Java中forward轉(zhuǎn)發(fā)與redirect重定向的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11

