Jasperreports, linux e desenvolvimento web

0 respostas
I

Pessoal, boa noite! Estou com um sério problema.

Estou utilizando o código abaixo para gerar relatórios web dinamicamente. Até ai tudo bem, meu ambiente de desenvolvimento
é windows xp. Porêm quando montei a minha estrutura no ambiente de produção ( linux ) detectei o seguinte problema: “HeadlessException” em todos os casos. Consegui posteriormente contornar este problema setando a opção headless no meu programa - ISTO PARA A GERAÇÃO DE RELATÓRIOS EM PDF.
Porêm, não sei o que acontece, mas a minha geração em impressão direta ( enviando o relatório diretamente para a impressão ) não funciona em linux. Alguem poderia me indicar uma solução.

Dica: Estou pensando em instalar um servidor CUPS com SAMBA, mas acho que, mesmo que isso funcione não será a melhor solução pois todas as impressoras da empresa serão listadas e o usuário ficará certamente perdido.

Outro problema é que se eu setar a opção headless no meu código, mesmo no windows, esta opção gera um erro de “headlessException” quando envio o relatório diretamente para impressão ( o oposto do linux ). Estranho não ???

Alguem poderia tambem me indicar um caminho para este impasse ?

<%@ page language="java" %>

<%@ include file="cabecalhoRelatorio.jsp" %>

<html>

<%
		//COMANDO NECESSARIO PARA QUE A EXIBIÇÃO DO RELATORIO EM PDF
		//OCORRA DE FORMA CORRETA PARA O CLIENTE 
	 System.setProperty("java.awt.headless", "true");
	 Locale brasil = new Locale("pt","BR");
	 Locale.setDefault(brasil);
	 
	 String erro = "";
	 listaObjetos = (List)session.getAttribute("listaObjetos");
	 parametros = (HashMap)session.getAttribute("parametros");
	 nomeRelatorio = (String)session.getAttribute("nomeRelatorio");
	 
	JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(listaObjetos);
	
	//o nome do relatorio deve conter o nome do pacote ao qual o relatorio pertence
	//Ex.:   nomerelatorio = contabilidade/balancete4Colunas.jasper
  File reportFile = new File( application.getRealPath("/relatorios/"+nomeRelatorio) );
 
	JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());
	JasperPrint impressao = null;
	try{
				byte[] bytes = JasperRunManager.runReportToPdf(jasperReport, parametros, ds);
				response.reset();
				response.resetBuffer();
				response.setContentType("application/pdf");
				response.setContentLength(bytes.length);
				ServletOutputStream ouputStream = response.getOutputStream();
				ouputStream.write(bytes, 0, bytes.length);
				ouputStream.flush();
				ouputStream.close();
	} catch(Exception e){
	erro = e.getMessage();
		out.println(e);	
		out.println(e.getMessage());
		out.println(e.getCause());
		
	}
session.removeAttribute("listaObjetos");
session.removeAttribute("parametros");
session.removeAttribute("nomeRelatorio");
System.setProperty("java.awt.headless", "false");
   
%>
</html>
<%@ page language="java" %>
<html>
<%@ include file="cabecalhoRelatorio.jsp" %>

<%
		//RELATÓRIO PARA IMPRESSAO DIRETA  
	 System.setProperty("java.awt.headless", "false");
	 
	 listaObjetos = (List)session.getAttribute("listaObjetos");
	 parametros = (HashMap)session.getAttribute("parametros");
	 nomeRelatorio = (String)session.getAttribute("nomeRelatorio");
	 
	 
	JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(listaObjetos);
  File reportFile = new File( application.getRealPath("/relatorios/"+nomeRelatorio) );
  File path = new File(getServletContext().getRealPath("./"));
	JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());
	JasperPrint impressao = null;
	try{
  		impressao = JasperFillManager.fillReport(jasperReport, parametros, ds);
		  JasperPrintManager.printPages(impressao,0, impressao.getPages().size() -1 , true);
	} catch(Exception e){
		out.println(e);	
		out.println(e.getMessage());
		out.println(e.getCause());
	}

session.removeAttribute("listaObjetos");
session.removeAttribute("parametros");
session.removeAttribute("nomeRelatorio");
   
%>
<script>window.close();</script>
</html>
Criado 30 de agosto de 2006
Respostas 0
Participantes 1