JasperReports: gerando código de barra (barcode)

Bysutradi

JasperReports: gerando código de barra (barcode)

O uso de código de barras é comum para a identificação de produtos, pois este compõe informações sobre o mesmo que podem ser coletados através de leitores óticos (e até celulares).

No Brasil, a GS1 Brasil, Associação Brasileira de Automação, é a organização sem fins lucrativos que tem por objetivo disseminar seu padrão de identificação, codificação e soluções para aumentar a eficiência na cadeia de suprimentos.

Existem vários modelos de códigos de barras para utilização, tanto lineares quanto bidimensionais. Este artigo demonstrará como usar o iReport para gerar uma página com etiquetas com código de barra.

Para isso, criaremos no iReport uma visão em duas colunas:

[sourcecode language=”xml”]

<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
name="ImprimirEtiqueta" language="groovy" columnCount="2" pageWidth="590" pageHeight="842" columnWidth="270"
columnSpacing="5" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">

[/sourcecode]

O segredo aqui é fazer com que a equação abaixo seja verdadeira:

pageWidth = columnWidth *columnCount + columnSpacing + leftMargin + rightMargin

Caso contrário, o IReport apresentará mensagem de erro ao tentar fazer o preview.

O iReport possui componentes para barcode. Porém, como a idéia aqui é preencher a página inteira com códigos de barra, nas colunas, usaremos um componente de imagem.

[sourcecode language=”xml”]
<jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical">

<datasetRun subDataset="dataset1">
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{lista})]]></dataSourceExpression>
</datasetRun>

<jr:listContents height="109" width="270">

<image scaleImage="RealSize">
<reportElement x="108" y="2" width="162" height="107"/>
<imageExpression><![CDATA[new net.sf.jasperreports.components.barbecue.BarbecueRenderer(new net.sourceforge.barbecue.linear.code39.Code39Barcode($F{etiqueta}, false))]]></imageExpression>
</image>

// Suprimido itens textField

</jr:listContents>
</jr:list>

[/sourcecode]

Esse componente será renderizado de acordo com a quantidade de itens o field “etiqueta”.

About the Author

sutradi administrator

Leave a Reply