Relatorios em Pdf

4 respostas
Antonio_Carlos_M_Gom

olá pessoal, eu estou fazendo uma tela de matricula de alunos e estou utilizando o iReport para gerar o relatorio com os dados dos aluno, esta parte está ok.
A questão é: como eu fasso para que este relario converta-se para pdf e abra diretamente no adob read, sem precisar abrir o jasper JasperViewer?

um abraço

4 Respostas

drsmachado

Existe uma classe que contém métodos específicos para a conversão.
No google você encontra vários exemplos, tanto desktop (que creio ser o caso).

M

pode usar a biblioteca itext. segue um exempo:

import java.awt.Color;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;

import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.Image;
import com.lowagie.text.List;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;

public class ITextWritePdfFile {

	public static void main(String[] args) {
		try {
			File file = new File("itext-test.pdf");
			FileOutputStream fileout = new FileOutputStream(file);
			Document document = new Document();
			PdfWriter.getInstance(document, fileout);
			document.addAuthor("Me");
			document.addTitle("My iText Test");

			document.open();

			Chunk chunk = new Chunk("iText Test");
			Font font = new Font(Font.COURIER);
			font.setStyle(Font.UNDERLINE);
			font.setStyle(Font.ITALIC);
			chunk.setFont(font);
			chunk.setBackground(Color.CYAN);
			document.add(chunk);

			Paragraph paragraph = new Paragraph();
			paragraph.add("Hello World");
			paragraph.setAlignment(Element.ALIGN_CENTER);
			document.add(paragraph);

			Image image;
			try {
				image = Image.getInstance("world.jpeg");
				image.setAlignment(Image.MIDDLE);
				document.add(image);
			} catch (MalformedURLException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}

			List list = new List(true, 15);
			list.add("ABC");
			list.add("DEF");
			list.add("Marcelo Paulo");
			list.add("Rebello paulo");
			list.add("http://www.avajava.com/tutorials/categories/general-java");
			document.add(list);

			document.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}
}
R

assim cara
troca a parte do lembrando que o report ali e o jasperprint do seu relatorio
acredito que deve funcionar sem problemas lembrando que vai depender do leitor de pdf padrao da maquina do cara

String relatorio = "pasta do relatorio mais o nome .pdf"                            
		    JRExporter exporter = new JRPdfExporter();
                        exporter.setParameter(JRExporterParameter.JASPER_PRINT, report);
                        exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "Cp1250");
                        exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, relatorio);
                        exporter.setParameter(JRPdfExporterParameter.PERMISSIONS, new Integer(PdfWriter.ALLOW_PRINTING));
                        exporter.exportReport();
                        String relatorio = ".pdf"
        	  	    Runtime.getRuntime().exec(relatorio);

qualquer coisas voce tbm pode usar o Runtime.getRuntime().exec(“cmd %programfiles%/Adobe/reader*/Reader/AcroRd32.exe relatorio”);

isso no windows neh o cmd ali e para fazer no dos e o reader* ele vai pegar a primeira pasta que tiver reader escrito porque dependendo da versao do cara vai ter um nome diferente essa pasta.
duvidas fico a disposição

Antonio_Carlos_M_Gom

vlw pessoa, funcionou perfeitamente

Criado 4 de julho de 2012
Ultima resposta 6 de jul. de 2012
Respostas 4
Participantes 4