簡體   English   中英

如何在JasperReport中使用條形碼?

[英]How to use barcodes in JasperReport?

我想在JasperRepost上顯示一個EAN13條形碼。 我在字段列表中輸入了13位數字(SQL查詢也可以),但是在JasperSoft Studio 6.6.0中,“調色板”中的“條形碼”元素似乎不適用於拖放操作(不會悲傷地做任何事情...)。 所以...我進入了源代碼視圖,並進行了一些Google搜索,條形碼元素應該是什么樣子,並發現了這一點:

<componentElement>
                <reportElement x="0" y="100" width="200" height="50" uuid="48d9d636-7e04-43df-9fa2-5c3f6edf27da"/>
                <c:barbecue xmlns:c="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" type="EAN13" drawText="true" checksumRequired="false">
                    <c:codeExpression><![CDATA[$F{EAN}]]></c:codeExpression>
                </c:barbecue>
            </componentElement>

但是,這似乎也不可行,因為如果要預覽它,我會收到此錯誤:

net.sf.jasperreports.engine.JRException: net.sf.jasperreports.engine.JRRuntimeException: Error creating barcode.
    at com.jaspersoft.studio.editor.preview.view.control.ReportController.fillReport(ReportController.java:536)
    at com.jaspersoft.studio.editor.preview.view.control.ReportController.access$17(ReportController.java:511)
    at com.jaspersoft.studio.editor.preview.view.control.ReportController$1.run(ReportController.java:429)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)
Caused by: net.sf.jasperreports.engine.JRRuntimeException: Error creating barcode.
    at net.sf.jasperreports.components.barbecue.BarcodeProviders.createBarcode(BarcodeProviders.java:114)
    at net.sf.jasperreports.components.barbecue.BarbecueFillComponent.setBarcodeImage(BarbecueFillComponent.java:142)
    at net.sf.jasperreports.components.barbecue.BarbecueFillComponent.fill(BarbecueFillComponent.java:111)
    at net.sf.jasperreports.engine.fill.JRFillComponentElement.fill(JRFillComponentElement.java:198)
    at net.sf.jasperreports.engine.fill.JRFillElementContainer.fillElements(JRFillElementContainer.java:1039)
    at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:469)
    at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:417)
    at net.sf.jasperreports.engine.fill.JRHorizontalFiller.fillFixedBand(JRHorizontalFiller.java:2553)
    at net.sf.jasperreports.engine.fill.JRHorizontalFiller.fillDetail(JRHorizontalFiller.java:853)
    at net.sf.jasperreports.engine.fill.JRHorizontalFiller.fillReportStart(JRHorizontalFiller.java:264)
    at net.sf.jasperreports.engine.fill.JRHorizontalFiller.fillReport(JRHorizontalFiller.java:116)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:615)
    at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFill.run(BaseFillHandle.java:135)
    at java.lang.Thread.run(Thread.java:748)
Caused by: net.sourceforge.barbecue.BarcodeException: Invalid data length
    at net.sourceforge.barbecue.linear.upc.UPCABarcode.<init>(Unknown Source)
    at net.sourceforge.barbecue.linear.upc.UPCABarcode.<init>(Unknown Source)
    at net.sourceforge.barbecue.linear.ean.EAN13Barcode.<init>(Unknown Source)
    at net.sourceforge.barbecue.BarcodeFactory.createEAN13(Unknown Source)
    at net.sf.jasperreports.components.barbecue.BarcodeProviders$EAN13Provider.createBaseBarcode(BarcodeProviders.java:241)
    at net.sf.jasperreports.components.barbecue.BaseBarcodeProvider.createBarcode(BaseBarcodeProvider.java:40)
    at net.sf.jasperreports.components.barbecue.BarcodeProviders.createBarcode(BarcodeProviders.java:110)
    ... 13 more

可能是Wat問題? 無效的數據長度? 我的測試條形碼值實際上是:6941057402314,正好是13位數字。 此值以VARCHAR的形式存儲在數據庫中,這可能是問題所在嗎?

編輯。:

好的,我發現這可能是一個燒烤問題: Babrbecue Exception,但這已經有10年的歷史了...

謝謝。

事實證明,EAN13條形碼實際上是12位數字,因此計算出了13位數字。 因此,如果我將其更改為12位數字,則會生成條形碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM