Erro Relatorio Web

1 resposta
RobsonFagundes

Boa tarde Guj´s
Fiz o seguinte cod pra gerar meu relatorio na web

try {

            InputStream endStream = getServletContext().getResourceAsStream(
                    "/WEB-INF/classes/com/xxx/relatorios/etiquetaDestinatarios.jasper");

            JasperReport jr = JasperCompileManager.compileReport(endStream);

            JasperPrint jp = JasperFillManager.fillReport(jr, parametros, new JRBeanCollectionDataSource(Vetiq));
            JasperExportManager.exportReportToPdfStream(jp, response.getOutputStream());

            response.sendRedirect("imprimirEtiqueta.jsp");

        } catch (JRException JREex) {
            System.out.println("Afffffffff ta dando bug nesse Relatorio !!!!!!!!!!!!");
            JREex.printStackTrace();
        }

    }

tentei rodar ele em um Servlet, mas ocorre o seguinte erro

Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.
        at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:674)
        at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:547)
        at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1742)
        at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.arrangeCapacity(XMLEntityScanner.java:1619)
        at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.skipString(XMLEntityScanner.java:1657)
        at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:193)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
        at org.apache.commons.digester.Digester.parse(Digester.java:1647)
        at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:239)
        ... 21 more

agora se eu mudar a linha

JasperExportManager.exportReportToPdfStream(jp, response.getOutputStream());

por:

JasperViewer.viewReport(jp);

ele exibe o relatorio… ( claro na tela do JasperReport) mas abre …
Alguem pode me dar uma ajuda ???
T+

1 Resposta

RobsonFagundes

Resolvido Mudei o codigo para:

try {

            // carrega o relatório desenvolvido no Ireport em um InputStream    
            InputStream endStream = (InputStream) getServletContext().getResourceAsStream(
                    "/WEB-INF/classes/com/sindicatorural/controle/relatorios/etiquetaDestinatarios.jrxml");

            //Compila o .jrxml gerando o -> .jasper  
            JasperReport jr = JasperCompileManager.compileReport(endStream);

            // preenche o relatorio com os dados do BD para combinar 
            // o modelo de relatório e gerar um relatório pronto para impressão
            JasperPrint jp = JasperFillManager.fillReport(jr, parametros, new JRBeanCollectionDataSource(Vetiq));

            // gera a visualizacao(preview) do relatorio -> visualiza a parada Web
            // passando o JasperPrint e o End para aonde esta indo o Relatorio no caso as String path
            // JasperExportManager.exportReportToPdfStream(jp, response.getOutputStream());
            String path = getServletContext().getRealPath("/");
            JasperExportManager.exportReportToPdfFile(jp, path + "etiquetaDestinatarios.pdf");
            
            // gera a visualizacao(preview) do relatorio -> visualiza a parada no Desktop
            // JasperViewer.viewReport(jp);

            // gera a visualizacao(preview) do relatorio -> visualiza a parada Web
            // redireciona para o relatorio gerado
            response.sendRedirect("imprimirEtiqueta.jsp");

        } catch (JRException JREex) {
            System.out.println("Afffffffff ta dando bug nesse Relatorio !!!!!!!!!!!!");
            JREex.printStackTrace();
        }

Fica o Exemplo

Criado 20 de agosto de 2008
Ultima resposta 27 de ago. de 2008
Respostas 1
Participantes 1