Gerar arquivo texto com JasperReports

[ad#texto]

Uma coisa bem pouco explorada e que geralmente levanta dúvidas nos desenvolvedores Java é como gerar um arquivo texto (TXT) via JasperReport formatado (geralmente ao tentar formar o arquivo o mesmo fica com várias linhas em branco), na verdade o processo é simples e bem similar ao de gerar um arquivo PDF, porém alguns parâmetros são essenciais para que o arquivo texto seja gerado corretamente.

Vamos então simular uma situação com um aplicativo Java gerando um arquivo texto formatado via JasperReport, o que iremos precisar:

  • Arquivo XML que será o repositório de dados;
  • Arquivo .JASPER que é o compilado do iReport (editor visual para utilizar em conjunto com o JasperReport).

Vamos então ao código-fonte:

//Definir o local de execução (corrigir moeda, vírgulas, caracteres, etc)
Locale locale = new Locale("pt", "BR");
parametros.put(JRParameter.REPORT_LOCALE, locale);

try {
 // Definilção do XML e captura dos dados contidos.
 JRXmlDataSource xmlDataSource = new JRXmlDataSource(arqXML, noItera);
 xmlDataSource.setLocale(locale);

 //Gera a área de impressão para o JasperReport
 JasperPrint jasperPrint = JasperFillManager.fillReport(arqJasper, parametros, xmlDataSource);

 //Captura informações sobre as dimensões do documento (iReport)
 Integer pageHeight = jasperPrint.getPageHeight();
 Integer pageWidth = jasperPrint.getPageWidth();

 //Instancia o objeto que irá gerar o arquivo Texto formatado.
 JRTextExporter jrTextExporter = new JRTextExporter();

 //Definições e parâmetros para gerar o arquivo Texto.
 jrTextExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
 jrTextExporter.setParameter(JRTextExporterParameter.CHARACTER_HEIGHT, new Float(10));
 jrTextExporter.setParameter(JRTextExporterParameter.PAGE_HEIGHT, pageHeight);

 /*Aqui você pode inserir um caractere de quebra de página caso algum interpretador do seu arquivo texto nece   ssite*/
 jrTextExporter.setParameter(JRTextExporterParameter.BETWEEN_PAGES_TEXT, "\f");
 jrTextExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, “meuarquivo.txt”);

 /*Aqui está o segredo, fazendo a divisão da largura da página do iReport com o número de colunas do relatóri   o teremos o número correto de pixels para definir a largura dos caracteres*/
 jrTextExporter.setParameter(JRTextExporterParameter.CHARACTER_WIDTH, new Float(pageWidth / new Float (colunas)));

 //Exporta de fato o arquivo TXT
 jrTextExporter.exportReport();
} catch (JRException ex) {
 System.err.print("Erro: " + ex);
} catch (Exception e){
 System.err.print("Erro: " + e);
}

Geralmente vejo o pessoal errando na hora de definir a quantidade de pixels para a largura dos caracteres, fazendo a conta acima será possível gerar o relatório de forma perfeita, independente do tamanho da página e da quantidade de caracteres.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.
ViamaisBLOG
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.