Barcode128 - 3 位字符串条码宽度大于 4 位字符串条码

Barcode128 - 3 digit String barcode width is larger than 4 digit string barcode

我尝试生成 Barcode128 条形码放置在标签上,通常标签宽度较小。我想知道 3 digit(100) 字符串条码宽度大于 4 digit(1001) 字符串条码。 3 digit barcode 应该少于4位条形码吧?我已经在在线条码生成中验证 3 digit barcode 宽度小于 4 位条码宽度,因为与 4 digit string 相比,iText api 对 3 digit 字符串占用的宽度更大。

谁能告诉我们这是什么原因以及如何制作 3 digit barcode shorter than the 4 digit barcode?

在线条码生成器URLhere

用于生成条形码的代码示例。

Barcode128 code128 = new Barcode128();
    code128.setCode(myText);
    Image myBarCodeImage128 = code128.createImageWithBarcode(contentByte,
        null, null);

然后图像被添加到 pdf 文档。

条形码 128 有几种编码数字的方法。其中一种方法是在同一符号中对 2 位数字进行编码。在 4 位数字的情况下,您有两个符号,每个符号有两个数字,总共两个符号。在 3 位数字的情况下,您有两个数字的符号、一个切换到字母数字的符号和最后一个数字的符号,总共三个符号。如您所见,在这种情况下,少即是多。

根据 Paulo Soares 的回答找到工作片段。

Document document = new Document(new Rectangle(340, 842));
PdfWriter writer = PdfWriter.getInstance(document, 
    new FileOutputStream("barcodes.pdf"));
document.open();
PdfContentByte cb = writer.getDirectContent();

document.add(new Paragraph("Barcode 128 demo"));

Barcode128 code128 = new Barcode128();
code128.setCode("100");
code128.setCodeSet(Barcode128CodeSet.B);
document.add(code128.createImageWithBarcode(cb, null, null));

code128 = new Barcode128();
code128.setCode("1001");
code128.setCodeSet(Barcode128CodeSet.B);
document.add(code128.createImageWithBarcode(cb, null, null));
document.close();