iText Barcode128 - 条形码的非法字符

时间:2016-09-09 15:51:16

标签: java itext code128

我正在尝试使用以下代码在barcode128中生成iText

Barcode128 shipBarCode = new Barcode128();
shipBarCode.setCode(getOrder().getPartnerPurchaseOrderNumber());
shipBarCode.setBarHeight(40f);

PdfPCell barCodeCell = new PdfPCell();
barCodeCell.addElement(
    shipBarCode.createImageWithBarcode(cb, BaseColor.BLACK, BaseColor.BLACK)
);
barCodeCell.setFixedHeight(55f);
barCodeCell.setPaddingRight(15f);
barCodeCell.setBorder(Rectangle.NO_BORDER);
barCodeCell.setHorizontalAlignment(Element.ALIGN_CENTER);

table.addCell(barCodeCell);

但我收到以下例外:

java.lang.RuntimeException: There are illegal characters for barcode 128 in '509868_1_2_1'.
at com.itextpdf.text.pdf.Barcode128.getRawText(Barcode128.java:518)
at com.stuhrling.orderprocessing.partner.shopnbc.ShopNBCPackingSlip.getOrderInfoTable(ShopNBCPackingSlip.java:142)
at com.stuhrling.orderprocessing.partner.shopnbc.ShopNBCPackingSlip.getPackingSlipElement(ShopNBCPackingSlip.java:610)
at com.stuhrling.orderprocessing.label.PDFComboLabel.packingSlipCell(PDFComboLabel.java:131)
at com.stuhrling.orderprocessing.label.PDFComboLabel.generateLabel(PDFComboLabel.java:87)
at com.stuhrling.orderprocessing.OrderService.generatePackingSlip(OrderService.java:731)
at com.stuhrling.orderprocessing.PackingSlipListener.handleMessage(PackingSlipListener.java:60)
at com.stuhrling.orderprocessing.messaging.MessageListener.run(MessageListener.java:76)
at java.lang.Thread.run(Thread.java:745)

显然,code 128没有阅读下划线..或者这可能是iText中的错误?

有人知道iText中的解决方法吗?

更新

<小时/> 看起来它甚至在没有下划线的情况下也会出现问题,所以现在我更难过了...... :(

我想知道我的代码有什么问题?

顺便说一句,只有我只有数字才会发生;如果我添加一封信,问题就会消失。

2 个答案:

答案 0 :(得分:0)

我不知道我是否对此感到满意,但我认为这可能是一个错误。单步执行itext的 Barcode128.java 后,我改变了这一点(第442行):

if (currentCode != codeSet.getStartSymbol())
        throw new RuntimeException(MessageLocalization.getComposedMessage("there.are.illegal.characters.for.barcode.128.in.1", text));

到此:

if (codeSet != Barcode128CodeSet.AUTO && currentCode != codeSet.getStartSymbol()) 
        throw new RuntimeException(MessageLocalization.getComposedMessage("there.are.illegal.characters.for.barcode.128.in.1", text));

itext版本 5.5.4 。如果有人熟悉代码,也许你可以告诉我这是否真的是一个错误。

答案 1 :(得分:0)

我认为itextpdf 5.5.4错误。 当我升级到5.5.12时,它已解决。