Impressão de relatório com subrelatório em PDF via upload de xml[RESOLVIDO]

1 resposta
fernandogodoy18

Estou tentando fazer o seguinte…

Tenho uma tela que faz o upload de um arquivo xml, e a partir deste xml estou tentado gerar um relatorio em pdf automaticamente em tela,

Fiz da seguinte forma

<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <title></title>
        <link type="text/css" rel="stylesheet" href="../skin/skin.css"/>
    </h:head>
    <h:body>
        <ui:include src="/includes/menu.xhtml"/>
        <p:panel header="VISUALIZADOR E EMISSOR DE DANFE">
            <h:form>
                <h:outputLabel value="SELECIONE UM ARQUIVO XML"/>
                <p:fileUpload  sizeLimit="20480000" auto="true" widgetVar="uploader" label="Procurar..." fileUploadListener="#{visualizadorMB.metodo}"
                               allowTypes="*.xml;" description="Arquivo .xml*" multiple="false" customUI="true" style="margin-left: 10px;"/>

            </h:form>
        </p:panel>
        <ui:include src="/includes/rodape.xhtml"/>
    </h:body>
</html>

ManegedBean está assim!

public void metodo(FileUploadEvent event) {
        try {
    
            XStream x = new XStream();
            x.autodetectAnnotations(true);
            x.alias("nfeProc", NfeProc.class);
            NfeProc nfeProc = (NfeProc) x.fromXML(event.getFile().getInputstream());

            List<NfeProc> lista = new ArrayList<NfeProc>();
            lista.add(nfeProc);

            FacesContext context = FacesContext.getCurrentInstance();
            ServletContext servletContext = (ServletContext) context.getExternalContext().getContext();

            Integer qVol = 0;
            String esp = "";
            String marca = "";
            String nVol = "";
            Integer i = 0;
            BigDecimal pesoL = BigDecimal.ZERO;
            BigDecimal pesoB = BigDecimal.ZERO;

            List<Vol> listVol = nfeProc.getNFe().getInfNFe().getTransp().getVols();
            if (listVol != null) {

                for (Vol v : listVol) {
                    qVol = qVol + Integer.valueOf(v.getqVol());
                    esp = esp + v.getEsp();
                    marca = marca + v.getMarca();
                    nVol = nVol + v.getnVol();
                    pesoL = pesoL.add(new BigDecimal(v.getPesoL()));
                    pesoB = pesoB.add(new BigDecimal(v.getPesoB()));
                    i++;
                }

            }

            Map<String, String> parametros = new HashMap<String, String>();

            parametros.put("qVol", qVol.toString());
            parametros.put("esp", esp);
            parametros.put("pesoL", new DecimalFormat("#,###0.000").format(pesoL));
            parametros.put("pesoB", new DecimalFormat("#,###0.000").format(pesoB));

            if (i > 2) {
                parametros.put("esp", "VER. INF. COMPL");
                parametros.put("marca", "VER. INF. COMPL");
                parametros.put("nVol", "VER. INF. COMPL");
            } else {
                parametros.put("esp", esp);
                parametros.put("marca", marca);
                parametros.put("nVol", nVol);
            }



            try {

                HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
                InputStream caminho = getClass().getResourceAsStream("/br/com/nfe/relatorio/danfe.jrxml");
                response.setContentType("application/pdf");
                response.addHeader("Content-Disposition", "attachment; filename=\"Danfe.pdf\"");
                JRBeanCollectionDataSource dados = new JRBeanCollectionDataSource(lista);
                JasperReport pathReport;
                pathReport = JasperCompileManager.compileReport(caminho);
                JasperPrint preencher = JasperFillManager.fillReport(pathReport, null, dados);
                JasperExportManager.exportReportToPdfStream(preencher, response.getOutputStream());
                context.getApplication().getStateManager().saveView(context);
                context.responseComplete();
            } catch (JRException ex) {
                Logger.getLogger(VisualizadorMB.class.getName()).log(Level.SEVERE, null, ex);
            }

        } catch (IOException ex) {
           ex.printStackTrace();
        }

    }

Porém esta me retornando este erro… Ja troquei a versão do jar do iText mais continua mesma coisa… Alguém pode dar uma idéia! Pois na impressão com jasper funciona normalmente!

javax.el.ELException: /relatorio/visualizadorDanfe.xhtml @23,141 fileUploadListener="#{visualizadorMB.metodo}": java.lang.NoClassDefFoundError: com/lowagie/text/pdf/FontMapper
        at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:108)
        at org.primefaces.component.fileupload.FileUpload.broadcast(FileUpload.java:238)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:746)
        at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:922)
        at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:74)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
        at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
        at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:77)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
        at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
        at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
        at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
        at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
        at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
        at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
        at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
        at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
        at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
        at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
        at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
        at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NoClassDefFoundError: com/lowagie/text/pdf/FontMapper
        at net.sf.jasperreports.engine.JasperExportManager.exportReportToPdfStream(JasperExportManager.java:158)
        at br.com.nfe.controle.relatorios.VisualizadorMB.metodo(VisualizadorMB.java:155)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.sun.el.parser.AstValue.invoke(AstValue.java:234)
        at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
        at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:102)
        ... 36 more
Caused by: java.lang.ClassNotFoundException: com.lowagie.text.pdf.FontMapper
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:959)
        at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1430)
        ... 45 more

GRAVE: javax.faces.FacesException: /relatorio/visualizadorDanfe.xhtml @23,141 fileUploadListener="#{visualizadorMB.metodo}": java.lang.NoClassDefFoundError: com/lowagie/text/pdf/FontMapper
        at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:82)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
        at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
        at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:77)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
        at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
        at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
        at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
        at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
        at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
        at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
        at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
        at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
        at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
        at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
        at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
        at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
        at java.lang.Thread.run(Thread.java:662)
Caused by: javax.el.ELException: /relatorio/visualizadorDanfe.xhtml @23,141 fileUploadListener="#{visualizadorMB.metodo}": java.lang.NoClassDefFoundError: com/lowagie/text/pdf/FontMapper
        at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:108)
        at org.primefaces.component.fileupload.FileUpload.broadcast(FileUpload.java:238)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:746)
        at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:922)
        at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:74)
        ... 32 more
Caused by: java.lang.NoClassDefFoundError: com/lowagie/text/pdf/FontMapper
        at net.sf.jasperreports.engine.JasperExportManager.exportReportToPdfStream(JasperExportManager.java:158)
        at br.com.nfe.controle.relatorios.VisualizadorMB.metodo(VisualizadorMB.java:155)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.sun.el.parser.AstValue.invoke(AstValue.java:234)
        at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
        at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:102)
        ... 36 more
Caused by: java.lang.ClassNotFoundException: com.lowagie.text.pdf.FontMapper
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:959)
        at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1430)
        ... 45 more

AVISO: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
java.lang.IllegalStateException: PWC3991: getOutputStream() has already been called for this response
        at org.apache.catalina.connector.Response.getWriter(Response.java:707)
        at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:224)
        at com.sun.faces.context.ExternalContextImpl.getResponseOutputWriter(ExternalContextImpl.java:719)
        at com.sun.faces.context.PartialViewContextImpl.createPartialResponseWriter(PartialViewContextImpl.java:405)
        at com.sun.faces.context.PartialViewContextImpl.access$300(PartialViewContextImpl.java:67)
        at com.sun.faces.context.PartialViewContextImpl$DelayedInitPartialResponseWriter.getWrapped(PartialViewContextImpl.java:543)
        at javax.faces.context.PartialResponseWriter.startDocument(PartialResponseWriter.java:111)
        at org.primefaces.context.PrimePartialResponseWriter.startDocument(PrimePartialResponseWriter.java:103)
        at com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError(AjaxExceptionHandlerImpl.java:195)
        at com.sun.faces.context.AjaxExceptionHandlerImpl.handle(AjaxExceptionHandlerImpl.java:119)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:115)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
        at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
        at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:77)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
        at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
        at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
        at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
        at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
        at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
        at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
        at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
        at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
        at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
        at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
        at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
        at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
        at java.lang.Thread.run(Thread.java:662)

1 Resposta

fernandogodoy18

O erro que consigui resolver!

estava acontecendo por causa da versão do iText…

Estava usando a versão 5.0.6 e substitui pela versão 2.0.7 e erro sumiu…

Porém não consigui gerar o pdf ainda!1

Criado 10 de fevereiro de 2011
Ultima resposta 10 de fev. de 2011
Respostas 1
Participantes 1