iText Barcode128 - 条码的非法字符
Posted
技术标签:
【中文标题】iText Barcode128 - 条码的非法字符【英文标题】:iText Barcode128 - illegal characters for barcode 【发布时间】:2017-01-17 19:55:48 【问题描述】:我正在尝试在iText
中生成barcode128
,代码如下:
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
中的解决方法吗?
更新:
看起来即使 没有 下划线也会出错,所以现在我更加难过...... :(
我想知道我的代码有什么问题?
顺便说一句,只有当我只有数字时才会发生这种情况;如果我添加一个字母,问题就会消失。
【问题讨论】:
Barcode128 一直正常工作。您可能在字符串中有一些不可打印的字符。尝试直接用一些文字生成 PDF。 这样做了,结果相同。 嗨。我对iText
没有足够的知识来提供另一个标题的想法,但我建议将其更改为更具启发性的标题;否则,您的问题可能会被某人否决。编辑:就在我发表此评论后,标题已被编辑。没关系。
【参考方案1】:
我不知道我是否正确,但我认为这可能是一个错误。在单步执行 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。如果那里有熟悉代码的人,也许您可以告诉我这是否真的是一个错误。
【讨论】:
【参考方案2】:我认为 itextpdf 5.5.4 的错误。 当我升级到 5.5.12 时,它已解决。
【讨论】:
以上是关于iText Barcode128 - 条码的非法字符的主要内容,如果未能解决你的问题,请参考以下文章