[RESOLVIDO]Jasper Report Dinâmico - preciso de um favor!

17 respostas
matheuscechito

O favor que eu preciso é:
alguém poderia copiar esse código abaixo e rodar em sua máquina e me dizer se está funcionando, ou seja, se ele está gerando o arquivo PDF???

é que na minha máquina não estou conseguindo gerar o .pdf, eu consigo apenas visualizar.

para executar, baixem o iReport e copiem para o seu lib os seguintes pacotes:
commons-collections-2.1.jar
commons-javaflow-20060411.jar
commons-logging-api-1.0.2.jar
iReport.jar
jasperreports-1.3.0.jar (pode ser algum anterior)

Aí vai o código:

try {	
         	Connection con = null;
		String driver = "net.sourceforge.jtds.jdbc.Driver";
		String url = "jdbc:jtds:sqlserver://localhost/BANCO";
		String login = "blabla";
		String senha = "bleble";
		try {
			Class.forName(driver);
			con = DriverManager.getConnection(url, login, senha);
		} catch (Exception e) {
			e.printStackTrace();
		}

		HashMap map = new HashMap();

		StringBuffer sb = new StringBuffer();
		sb.append("SELECT CAMPO1 AS Nome_Curso, CAMPO2 AS Nome_Instrutor FROM TABELA ");		

                JasperDesign jasperDesign = new JasperDesign ();
		jasperDesign.setName("SampleReport");
		jasperDesign.setPageWidth(600);
		jasperDesign.setPageHeight(750);
		jasperDesign.setColumnWidth(50);
		jasperDesign.setColumnSpacing(10);
		jasperDesign.setLeftMargin(10);
		jasperDesign.setRightMargin(10);
		jasperDesign.setTopMargin(10);
		jasperDesign.setBottomMargin(10);

		JRDesignStyle normalStyle = new JRDesignStyle();
		normalStyle.setName("Arial_Normal");
		normalStyle.setDefault(true);
		normalStyle.setFontName("Arial");
		normalStyle.setFontSize(11);
		normalStyle.setPdfFontName("Helvetica");
		normalStyle.setPdfEncoding("Cp1252");
		normalStyle.setPdfEmbedded(false);
		jasperDesign.addStyle(normalStyle);

		JRDesignQuery query = new JRDesignQuery();
		query.setText(sb.toString());
		jasperDesign.setQuery(query);

		sb.delete(0, sb.length());

		JRDesignField field = new JRDesignField();
		field.setName("Nome_Curso");
		field.setValueClass(java.lang.String.class);
		jasperDesign.addField(field);

		field = new JRDesignField();
		field.setName("Nome_Instrutor");
		field.setValueClass(java.lang.String.class);
		jasperDesign.addField(field);

		JRDesignBand band = new JRDesignBand();
		band.setHeight(300);

		JRDesignStaticText staticText = new JRDesignStaticText();
		staticText.setX(350);
		staticText.setY(0);
		staticText.setWidth(200);
		staticText.setHeight(20);
		staticText.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_RIGHT);
		staticText.setStyle(normalStyle);
		staticText.setText("Relatório de Síntese");
		band.addElement(staticText);

		staticText = new JRDesignStaticText();
		staticText.setX(5);
		staticText.setY(20);
		staticText.setWidth(45);
		staticText.setHeight(15);
		staticText.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_LEFT);
		staticText.setStyle(normalStyle);
		staticText.setText("Curso: ");
		band.addElement(staticText);

		JRDesignTextField textField = new JRDesignTextField();
		textField.setX(50);
		textField.setY(20);
		textField.setWidth(200);
		textField.setHeight(15);
		textField.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_LEFT);
		textField.setStyle(normalStyle);
		JRDesignExpression expression = new JRDesignExpression();
		expression.setValueClass(java.lang.String.class);
		expression.setText("$F{Nome_Curso}");
		textField.setExpression(expression);
		band.addElement(textField);

		staticText = new JRDesignStaticText();
		staticText.setX(5);
		staticText.setY(35);
		staticText.setWidth(45);
		staticText.setHeight(15);
		staticText.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_LEFT);
		staticText.setStyle(normalStyle);
		staticText.setText("Instrutor: ");
		band.addElement(staticText);

		textField = new JRDesignTextField();
		textField.setX(50);
		textField.setY(35);
		textField.setWidth(200);
		textField.setHeight(15);
		textField.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_LEFT);
		textField.setStyle(normalStyle);
		expression = new JRDesignExpression();
		expression.setValueClass(java.lang.String.class);
		expression.setText("$F{Nome_Instrutor}");
		textField.setExpression(expression);
		band.addElement(textField);

                jasperDesign.setTitle(band);

		JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
		JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, map, con);
 	        JasperExportManager.exportReportToPdfFile(jasperPrint, "C:\\Documents and Settings\\jasper\\Desktop\\MeuRelatorio.pdf");

		} catch (JRException e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null,e.getMessage());
		}catch (SQLException s){
			s.printStackTrace();
		}

Não se esqueçam de alterar os dados do seu banco de dados e colocar os campos na consulta do StringBuffer, além de alterar o caminho da criação do arquivo ‘.pdf’.

postem os resultados, por favor…

obrigado desde já

17 Respostas

maquiavelbona

Não consegue gerar? Ele reclama algum erro?

Até!

matheuscechito

maquiavelbona:
Não consegue gerar? Ele reclama algum erro?

Até!

e ae…

nem cara…ele simplesmente para a execução nessa linha:

JasperExportManager.exportReportToPdfFile(jasperPrint, "C:\\Documents and Settings\\jasper\\Desktop\\MeuRelatorio.pdf");

sabe o q pode ser?..vc tentou rodar o código??

maquiavelbona

matheuscechito:

nem cara…ele simplesmente para a execução nessa linha:

JasperExportManager.exportReportToPdfFile(jasperPrint, "C:\\Documents and Settings\\jasper\\Desktop\\MeuRelatorio.pdf");

sabe o q pode ser?..vc tentou rodar o código??

Ele pára a execução e não solta nenhuma exception? Coloque no try principal um catch para Exception geral mesmo e um print da stacktrace.

matheuscechito

já fiz isso…não soltou nada

matheuscechito

alguém por favor…

jonataswingeter

Não existe solução mágica.

Tem que testar até encontrar o erro, mas como não acontece nada, o ideal é você forçar situações.

  1. troque o nome de saída do arquivo, deixe somente um nome comum: teste.pdf;

  2. Não compile seu relatório dinâmico, tente compilar um relatório existente para ver se está ok:

jasperDesign = JRXmlLoader.load(arquivoXml);

Desta forma, você poderá isolar o erro e descobrir onde está (no código do desenho ou no jasper mesmo).

Muitas vezes o JasperReports demonstra situações anormais…e é necessário forçar situações para descobrir o erro. Provavelmente, algum erro de projeto, pois se algo não está bom, deve dar problema.

Att.

matheuscechito

então Jônatas…

eu postei o código, pq já fiz isso q vc disse…tentei rodar um relatório estático, já tentei mudar o nome do arquivo, etc…

só gostaria de saber se alguém conseguiria executar meu código…

e eu ainda não desisti, continuo fazendo as mudanças aqui…mas tá dificil…rs

obrigado pela atenção

maquiavelbona

Tirei as conexões e as querys ( to com preguiça de configurar um db aqui), mudei o caminho do arquivo para “relatorio.pdf” e funcionou normalmente.
Tente fazer o programa gravar na própria pasta para ver se aparece o pdf que estás tentando gerar.

Até!

matheuscechito

Fiz isso e nada…
pior que não dá erro…
uma pergunta, qto tempo demora para gerar seu ‘.pdf’? é bem rápido???

valeu

maquiavelbona

Não demorou nem 15 segundos. A conexão e a query estão corretas?

matheuscechito

Sim, isso tenho certeza q sim. Tanto que no JasperViewer o relatório aparece normalmente.

tem alguma outra idéia do q possa ser?

maquiavelbona

Não tá faltando mais nenhuma biblioteca? Itext, outra do commons etc… Sei lá o que ta parecendo.

Até!

matheuscechito

nossa…que merda…
por incrivel q pareça faltava alguma biblioteca sim, só não sei qual, pois peguei tudo q estava na pasta do iReport e colei no meu projeto.
O que aconteceu foi que eu segui um tutorial para fazer isso e lá indicava o nome dos .jar que eu deveria colocar no lib, e estava faltando algum. A hora que eu descobrir qual, eu posto aqui.

obrigado a todos por tudo.

L

fritas acompanha?

L

Sim… com bastante parmesão. Tem um camarãozinho?

L

Você reparou se era lua cheia?

Marky.Vasconcelos

Você precisa do jar iText que vem junto com iReport

Criado 31 de janeiro de 2007
Ultima resposta 28 de set. de 2007
Respostas 17
Participantes 6