0

我正在使用此代码生成barcode128:

String stb1 = "123456789";
code128.setCode(stb1);
//code128.setCodeType(Barcode128.CODE128_UCC);
//code128.setCode("1234567890");
code128.setStartStopText(true);
Image image128 = code128.createImageWithBarcode(cbd, null, Color.white);
image128.setAbsolutePosition(20 + x, 626 + y);
image128.scaleAbsolute(109, 33);
document.add(image128);

我的客户想要条形码128 B型。如何将其设置为B型?我试过CODE128_UCC, CODE128_RAW,CODE128setCodyType()其中三个看起来很相似。

4

2 回答 2

4

感谢 pmoleri 之前的回答,我成功地使用了 Itext(Itextsharp 版本 5.3.3.0)生成了 B 型条形码 128。这是我写的 c# 代码,希望对您有所帮助:

String stb1 = "123456789";
Barcode128 code128 = new Barcode128();
code128.CodeType = Barcode.CODE128_RAW;
code128.ChecksumText = true;
code128.GenerateChecksum = true;
code128.StartStopText = true;
code128.Code = (StringEncode128(stb1) + "\uffff");
System.Drawing.Bitmap bm = new System.Drawing.Bitmap(code128.CreateDrawingImage(System.Drawing.Color.Black, System.Drawing.Color.White));
bm.Save(Server.MapPath("barcode128.gif"), System.Drawing.Imaging.ImageFormat.Gif);
ImageBarCode128 = Image.GetInstance(Server.MapPath("barcode.gif"));

字符串编码功能:

public String StringEncode128(String text) {
const int Ascii_FNC1 = 102;
const int Ascii_STARTB = 104;

int CharAscii = 0;
for (int CharPos = 0; CharPos < text.Length; ++CharPos)
{
  string letter = text.Substring(CharPos, 1);
  CharAscii = (int)Convert.ToChar(letter);
  if (CharAscii > 127 && CharAscii != Ascii_FNC1) {
    throw new Exception(text + "|" + CharAscii);
    }
}

StringBuilder outstring = new StringBuilder();
outstring.Append((char)(Ascii_STARTB));

for (int CharPos = 0; CharPos < text.Length; ++CharPos)
{
    string letter = text.Substring(CharPos, 1);
    CharAscii = (int)Convert.ToChar(letter) - 32;
    outstring.Append((char)(CharAscii));
}

return outstring.ToString();
}
于 2012-11-05T13:34:00.223 回答
0

Itext 可能是最紧凑的条形码版本,这就是为什么您不能选择字符集的原因。例如,如果它以大数字序列开头,它将选择字符集 C,然后如果后面有一个 alpha 字符序列,则更改为字符集 B。

任何能够读取的条形码扫描仪都Code 128必须能够读取任何字符集,所以我认为不需要坚持使用字符集 B。

更新

我不认为你可以用 iText 做到这一点,除非你通过原始代码。幸运的是,字符集 B 非常简单,只需将一个字符串与以下内容放在一起:

  • 字符集 B 的起始字符:104
  • 从原始字符串中每个字符的 ascii 码中减去 32
  • 用 "\uffff" 结束字符串

然后使用以下命令以原始模式创建条形码:setCodeType(Barcode.CODE128_RAW)

您可以在此处获取更多信息:http: //grandzebu.net/informatique/codbar-en/code128.htm

于 2012-08-30T13:02:35.580 回答