2016-09-09 6 views
2

je tente de générer un barcode128 dans iText, avec le code suivant:iText Barcode128 - caractères illégaux pour code à barres

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); 

mais je reçois l'exception suivante:

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) 

Apparemment , code 128 ne lit pas les caractères de soulignement .. ou peut-être que c'est un bug dans iText?

Est-ce que quelqu'un sait d'une solution de contournement pour cela dans iText?

Mise à jour:


On dirait qu'il bugs même sans le trait de soulignement, alors maintenant je suis encore plus perplexe ... :(

Je me demande quel est le problème avec mon code

?

BTW, Il arrive seulement si je n'ai que des chiffres, si j'ajoute une lettre le problème disparaît

+0

Barcode128 fonctionne correctement depuis toujours. Vous pouvez avoir des caractères non imprimables dans la chaîne. Essayez de générer le PDF avec certains littéraux directement. –

+0

A fait cela, avec les mêmes résultats. – IntelliData

+0

Salut. Je n'ai pas assez de connaissances sur 'iText' pour donner des idées pour un autre titre, mais je suggérerais de le changer pour un autre plus suggestif; autrement, il y a la possibilité que votre question soit rabaissée par quelqu'un. EDIT: juste après avoir fait ce commentaire, le titre a été édité. Ça ne fait rien. – SpaceCore186

Répondre

0

Je ne sais pas si j'ai raison à ce sujet, mais je pensais que ce pourrait être un bug. thro ugh itext de Barcode128.java j'ai changé cette (ligne 442):

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

à ceci:

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

La version iText est 5.5.4. Si quelqu'un connaît le code, peut-être pourriez-vous me dire si c'est vraiment un bug.

0

Je pense itextpdf 5.5.4 bug. Lorsque j'ai mis à niveau vers 5.5.12, il est résolu.

+0

Ceci ne fournit pas de réponse à la question. Une fois que vous avez suffisamment [réputation] (https://stackoverflow.com/help/whats-reputation) vous pourrez [commenter n'importe quel article] (https://stackoverflow.com/help/privileges/comment); Au lieu de cela, [fournissez des réponses qui ne nécessitent pas de précisions de la part du demandeur] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- je-fais-à la place). - [De l'examen] (/ review/low-quality-posts/17202595) – Aryan