3

First of all, I'm kinda new to the barcode formats and what I do know, I've learned from Wikipedia.

We have some barcodes generated by an existing app that uses the Barcode.4NET library. The barcode is in Code 128A format. The code to generate them is pretty simple, looking something like this:

// Create the barcode
Code128ABarcode c128A = new Code128ABarcode("045746201627080857");

No other parameters are set for it - after setting the data, we just get a GIF version of the barcode back from the library.

I'm working on a new app that is using iTextSharp for PDF generation and I figured that instead of using two libraries, I would use iTextSharp's barcode generation library since it supports Code128 barcodes. It has a few different variations of Code 128, but none of them are "Code 128A".

Here is what the code looks like for it:

Barcode128 code128 = new Barcode128();
code128.CodeType = Barcode.CODE128;
code128.ChecksumText = true;
code128.GenerateChecksum = true;
code128.StartStopText = true;
code128.Code = "045746201627080857";

The image below shows the best I've accomplished so far.

alt text

The image on top is generated by iTextSharp and the one on the bottom is generated by Barcode4Net. Obviously, they aren't the same (and not just in the size and the font - the barcoded data is pretty different).

Is anyone out there familiar enough with iTextSharp's (or iText itself) barcode components or with Code 128A barcodes to tell me how to make the iTextSharp one look exactly like the Barcode.4NET one?

4

3 に答える 3

3

彼らがまったく同じに見えることは本当に必要ですか?コード128の異なるバージョンは、バーコード自体が完全に異なって見える場合でも、すべて番号をエンコードすることができます。読者は最終的にそれをすべて整理する必要があります。

大文字に加えて小文字が含まれているので、Bバリアントが好きです。違いの詳細を示す表は、http: //www.barcodeisland.com/code128.phtmlで確認できます。

iTextSharpは、バリアントCを生成しているように見えます。これは、テキストが10進数のみの場合に最もコンパクトです。他のエンコーディングの1文字と同じスペースで2桁をエンコードします。

于 2008-11-17T04:44:18.563 に答える
3

the number should be:

*045746201627080857*

you need to add the asterisk to the start and the end so the Barcode can be readed, you need to check in the component documentation witch one needs this characters.

the scanner needs the leading and the trailing asterisk on this type of BC.

for what I can see in your code, the line

code128.StartStopText = true;

automatically adds it, try to set this property to false, you will end up with the same barcode. In the first code you should use

Code128ABarcode c128A = new Code128ABarcode("*045746201627080857*");

try yourself :)

Edited:

The correct barcode is:

alt text

from the link below (using ID Automation free service):

http://www.bcgen.com/demo/linear-dbgs.aspx?D=045746201627080857&S=13&CS=1

what you have is:

alt text

and this is Code128C instead of Code128A as you can check the link (I changed the barcode properties to Code128C)

http://www.bcgen.com/demo/linear-dbgs.aspx?D=045746201627080857&S=13&CS=3

于 2008-11-17T02:59:36.370 に答える
1

balexandreはジェネレーターを混同していると思いますが、彼のアドバイスは良いです。

明らかに、Barcode.4NETは、私がエミュレートしようとしているCode128Aバーコードを正しく生成しています。

iTextSharpはCode128Cバーコードを生成しています。これは、Mark Ransomによると、ユーザーを除いては問題ないはずです。顧客はおそらくそれを見て、「短すぎて他のバーコードと同じように見えるはずです」と言うでしょう。

ですから、すばらしいアドバイスですが、「iTextSharpを使用してCode 128Aバーコードを生成するにはどうすればよいですか?」に戻ります。

于 2008-11-17T05:06:45.537 に答える