Ola pessoal, fiz um relatório utilizando o iText, funcionou direitinho enquanto eu estava desenvolvendo no eclipse.
Exportei meu projeto .war para o tomcat, e meus relatórios com iText pararam de funcionar.
Vejam o código que gera e abre o arquivo pdf.
publicvoidrelatorio_fornecedor(){List<Fornecedor>fornecedor=forDao.listaFornecedores();Datedata=newDate();// criando um objeto da classe DocumentDocumentdocumento=newDocument();try{//Aqui começamos a utilizar as classes do iText: o documento//criado acima será //direcionado para um arquivo PDF. PdfWriter.getInstance(documento,newFileOutputStream("fornecedores.pdf"));//abrindo o documento.documento.open();SimpleDateFormatformatador=newSimpleDateFormat("dd/MM/yyyy");Imagefigura=Image.getInstance("/global.jpg");documento.add(figura);//adicionando no arquivo PDF. Paragraphp1=newParagraph("Lista de Fornecedores");p1.setAlignment(Element.ALIGN_CENTER);p1.setSpacingAfter(20);documento.add(p1);Paragraphp2=newParagraph("CREW - 424");p2.setSpacingAfter(10);documento.add(p2);PdfPTabletable=newPdfPTable(5);PdfPCellheader=newPdfPCell();header.setColspan(5);table.addCell("Fornecedor");table.addCell("CNPJ");table.addCell("Telefone");table.addCell("Falar com");table.addCell("E-mail");for(inti=0;i<fornecedor.size();i++){header.setColspan(4);header.setSpaceCharRatio(10);table.addCell(""+fornecedor.get(i).getNome());table.addCell(fornecedor.get(i).getCNPJ());table.addCell(""+fornecedor.get(i).getTelefone());table.addCell(fornecedor.get(i).getContato());table.addCell(fornecedor.get(i).getEmail());}documento.add(table);Paragraphp4=newParagraph("Data: "+formatador.format(data));p4.setAlignment(Element.ALIGN_RIGHT);p4.setSpacingAfter(10);documento.add(p4);Paragraphp5=newParagraph("Relatório gerado com base em informações do Sistema Informatizado da Global Geophysical Services - SisGlobal.");p5.setSpacingAfter(10);documento.add(p5);}catch(DocumentExceptionde){System.err.println(de.getMessage());}catch(IOExceptionioe){System.err.println(ioe.getMessage());}documento.close();Filepdf=newFile("fornecedores.pdf");try{Desktop.getDesktop().open(pdf);}catch(Exceptionex){//validator.add((Message) new ValidationMessage("Erro ao abrir o arquivo PDF, favor tentar novamente.", "erro"));//validator.onErrorRedirectTo(this).receber(idPessoa);}result.redirectTo(ProdutoController.class).estoque();}
Verifique se quando você exportou o .war, se a lib do itext foi exportada junto.
Boa sorte
E
ederleidson
está funcionando sim, está salvando o arquivo direitinho…
O problema esta no comando de abrir o arquivo, pois não está sendo aberto…
catch(DocumentExceptionde){System.err.println(de.getMessage());}catch(IOExceptionioe){System.err.println(ioe.getMessage());}documento.close();Filepdf=newFile("fornecedores.pdf");//não sei pq não ta abrindo... pois quando executado no eclipse abre direitinho...try{Desktop.getDesktop().open(pdf);}catch(Exceptionex){//validator.add((Message) new ValidationMessage("Erro ao abrir o arquivo PDF, favor tentar novamente.", "erro")); //validator.onErrorRedirectTo(this).receber(idPessoa); }
H
Hebert_Coelho
Não tem mensagem de erro?? Nem na hora que ele tenta abrir o arquivo pdf?
E
ederleidson
sem mensagem de erro, ele ate redireciona corretamente.
Mas não abre…
E
ederleidson
Alguem mais, poderia me ajudar???
E
ederleidson
Me ajudem galera…
M
Murilo_Ferreira
Bom, esse código não deve funcionar em webapplications.
Desktop.getDesktop().open(pdf);
Acredito que você deveria redirecionar para a url do fornecedores.pdf
Amigo, obrigado por se empenhar, mas o problema não ta sendo em criar o pdf e sim em abri-lo.
Se puder me ajudar…
Ele ta sendo criado direitinho, so não ta abrindo…
E
ederleidson
ACHO QUE NÃO FUI CLARO, ENTÃO VAMOS LA DE NOVO…
Ola pessoal, fiz um relatório utilizando o iText e estou utilizando o MVC do VRAPTOR com Hibernate, funcionou direitinho enquanto eu estava desenvolvendo no eclipse.
Exportei meu projeto .war para o tomcat, e meus relatórios com iText pararam de funcionar.
Vejam o código que gera e abre o arquivo pdf.
publicvoidrelatorio_fornecedor(){List<Fornecedor>fornecedor=forDao.listaFornecedores();Datedata=newDate();// criando um objeto da classe Document Documentdocumento=newDocument();try{//Aqui começamos a utilizar as classes do iText: o documento //criado acima será //direcionado para um arquivo PDF. PdfWriter.getInstance(documento,newFileOutputStream("fornecedores.pdf"));//abrindo o documento. documento.open();SimpleDateFormatformatador=newSimpleDateFormat("dd/MM/yyyy");Imagefigura=Image.getInstance("/global.jpg");documento.add(figura);//adicionando no arquivo PDF. Paragraphp1=newParagraph("Lista de Fornecedores");p1.setAlignment(Element.ALIGN_CENTER);p1.setSpacingAfter(20);documento.add(p1);Paragraphp2=newParagraph("CREW - 424");p2.setSpacingAfter(10);documento.add(p2);PdfPTabletable=newPdfPTable(5);PdfPCellheader=newPdfPCell();header.setColspan(5);table.addCell("Fornecedor");table.addCell("CNPJ");table.addCell("Telefone");table.addCell("Falar com");table.addCell("E-mail");for(inti=0;i<fornecedor.size();i++){header.setColspan(4);header.setSpaceCharRatio(10);table.addCell(""+fornecedor.get(i).getNome());table.addCell(fornecedor.get(i).getCNPJ());table.addCell(""+fornecedor.get(i).getTelefone());table.addCell(fornecedor.get(i).getContato());table.addCell(fornecedor.get(i).getEmail());}documento.add(table);Paragraphp4=newParagraph("Data: "+formatador.format(data));p4.setAlignment(Element.ALIGN_RIGHT);p4.setSpacingAfter(10);documento.add(p4);Paragraphp5=newParagraph("Relatório gerado com base em informações do Sistema Informatizado da Global Geophysical Services - SisGlobal.");p5.setSpacingAfter(10);documento.add(p5);}catch(DocumentExceptionde){System.err.println(de.getMessage());}catch(IOExceptionioe){System.err.println(ioe.getMessage());}documento.close();//ATE AQUI FUNCIONOU DIREITINHO//DAQUI PRA FRENTE É QUE NÃO TA EXECUTANDO//DAQUI PRA FRENTE É O CÓDIGO PARA ABRIR O PDF PARA O OPERADOR DO SISTEMA VISUALIZAR, E NÃO TA ABRINDO.Filepdf=newFile("fornecedores.pdf");try{Desktop.getDesktop().open(pdf);}catch(Exceptionex){//validator.add((Message) new ValidationMessage("Erro ao abrir o arquivo PDF, favor tentar novamente.", "erro")); //validator.onErrorRedirectTo(this).receber(idPessoa); }result.redirectTo(ProdutoController.class).estoque();}
Alguem pode me ajudar???
M
Murilo_Ferreira
Amigo, te entendi desde o inicio, o problema está aqui.
Desktop.getDesktop().open(pdf);
Esse código acima, só funciona no eclipse porque está no seu próprio computador, após fazer o deploy, isso não funciona.
Esse código tenta abrir o arquivo com a aplicação padrão de arquivos pdf, que no caso pode ser o Adobe Reader, mas isso só funciona em aplicação swing.