使用 iTextSharp 生成的 Code128A 条形码与使用 iTextSharp 生成的 Code128A 条形码匹配时出现问题条码.4NET

StackOverflow https://stackoverflow.com/questions/294773

首先,我对条形码格式有点陌生,我所知道的都是从维基百科学到的。

我们有一些由使用 Barcode.4NET 库的现有应用程序生成的条形码。条形码采用 Code 128A 格式。生成它们的代码非常简单,如下所示:

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

没有为其设置其他参数 - 设置数据后,我们只是从库中获取条形码的 GIF 版本。

我正在开发一个使用 iTextSharp 生成 PDF 的新应用程序,我认为我不会使用两个库,而是使用 iTextSharp 的条形码生成库,因为它支持 Code128 条形码。它有几种不同的 Code 128 变体,但它们都不是“Code 128A”。

代码如下:

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

下图显示了我迄今为止所取得的最好成绩。

alt text

上面的图像是由 iTextSharp 生成的,下面的图像是由 Barcode4Net 生成的。显然,它们不一样(不仅仅是大小和字体 - 条形码数据非常不同)。

有没有人足够熟悉 iTextSharp 的(或 iText 本身)条形码组件或 Code 128A 条形码来告诉我如何使 iTextSharp 看起来与 Barcode.4NET 完全相同?

有帮助吗?

解决方案

它们真的有必要看起来完全一样吗? Code 128的不同版本都能够编码数字,即使条形码本身看起来完全不同;读者最终应该全力以赴。

我更喜欢B变体,因为它除了大写字母外还有小写字母。您可以在 http://www.barcodeisland.com/code128.phtml

iTextSharp看起来它正在生成变体C,如果文本只是十进制数字,则它是最紧凑的。它在与其他编码中的单个字符相同的空间量中编码2个数字。

其他提示

虽然我认为 balexandre 将生成器搞混了,但他的建议很好。

显然,Barcode.4NET 正确生成了我试图模拟的 Code 128A 条形码。

iTextSharp 正在生成 Code 128C 条形码,据 Mark Ransom 称,该条形码应该没问题,除非用户和客户可能会看着它并说“它太短了,应该看起来像其他条形码!”

所以,这是很好的建议,但我仍然回到“如何使用 iTextSharp 生成 Code 128A 条形码?”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top