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_UCCCODE128_RAWCODE128で試してみましsetCodyType()たが、そのうちの 3 つが似ています。

4

2 に答える 2

4

pmoleri による以前の回答のおかげで、バーコード 128 タイプ B を生成するために Itext (Itextsharp バージョン 5.3.3.0) を使用することに成功しました。これは私が書いた 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 を選択し、アルファベット文字のシーケンスが続く場合は文字セット B に変更します。

読み取ることができるバーコード スキャナCode 128は、任意の文字セットを読み取ることができる必要があるため、文字セット B に固執する必要はないと思います。

アップデート

生のコードを渡さない限り、iTextでそれを行うことはできないと思います。幸いなことに、文字セット B は非常に簡単です。文字列を次のようにまとめるだけです。

  • 文字セット B の開始文字:104
  • 元の文字列のすべての文字の ASCII コードから 32 を引く
  • "\uffff" で文字列を終了する

次に、以下を使用して raw モードでバーコードを作成します。setCodeType(Barcode.CODE128_RAW)

ここで追加情報を取得できます: http://grandzebu.net/informatique/codbar-en/code128.htm

于 2012-08-30T13:02:35.580 に答える