2012-02-16 90 views
2

我需要使用JasperReports报告打印条码标签。我已经正确设计了Jasper报告,我可以使用iReport进行预览。但是当我通过Java应用程序条形码报告传递参数给碧玉报告时,永远不会生成。Java JasperReports条码打印

下面的代码使用

//Print barcode 
try { 
    Class.forName("com.mysql.jdbc.Driver").newInstance(); 
    Connection conn = (Connection) 
      DriverManager.getConnection("jdbc:mysql:///miracleposdb", "root", "mysql"); 


    String reportSource = "../src/reports/barcode.jrxml"; /* Report Path*/ 
    Map<String, Object> params = new HashMap<String, Object>(); 
    params.put("printid", lblbarcodeID.getText()); 

    JasperReport jasperReport = JasperCompileManager.compileReport(reportSource); /*Compiling */ 

    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, 
      params, DB.MiraclePOS.connect()); /*Filling report*/ 
    JasperViewer.viewReport(jasperPrint, false); /*For Print*/ 

} catch (Exception e) { 
} 
+1

您是否在结果报告中检查了'printid'参数(例如,您可以将带'$ P {printid}'表达式的'textField'添加到'Title'带)? – 2012-02-16 18:26:07

+0

是的,它的工作原理,只有当条形码添加到报告时才生成报告。 – WARRW 2012-02-16 21:49:21

+0

你有没有发现异常? – 2012-02-17 06:59:55

回答

0

如果你看一下jrxml文件,条形码部分应该是象下面这样:

在我来说,我用barcode4j

<componentElement> 
    <reportElement x="353" y="42" width="200" height="50"/> 
     <jr:Code39 xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" textPosition="bottom"> 

      <jr:codeExpression>     
       <![CDATA[$P{printid}]]>      
      </jr:codeExpression>     
     </jr:Code39> 
</componentElement> 

我使用netbean报告查看器来生成PDF视图,它适用于我。

注:

当您将使用iReport的&下降条形码JRXML的barcord部分应该空CDATA:

<![CDATA[]]> 

如果在这种情况下生成PDF那么barcord不会因为没有价值而出现。

另外请确保使用iReport设置参数。

希望这会有所帮助。