2

次のコードbarcode128で inを生成しようとしています: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ますか?

アップデート:


アンダースコアがなく てもバグが発生するように見えるので、今ではさらに困惑しています... :(

私のコードの何が問題なのだろうか?

ところで、数字しかない場合にのみ発生します。文字を追加すると、問題はなくなります。

4

2 に答える 2

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です。コードに詳しい方がいらっしゃいましたら、これが本当にバグなのか教えていただけると幸いです。

于 2016-09-12T20:11:35.727 に答える