我写了一个存储过程,用iReport生成了test.jasper文件
我如何用test.jasper生成pdf报表

解决方案 »

  1.   

    最好生成.jrxml之后方便分析JasperDesign jd = JRXmlLoader.load("XXX.jrxml");
    JasperReport jr = JasperCompileManager.compileReport(jd);
    JasperPrint jp = JasperFillManager.fillReport(jr, parameters, connection);
    JasperExportManager.exportReportToPdfFile(jp, "XXX.pdf");
      

  2.   

    我试了,但是总是报错
    Caused by: java.io.FileNotFoundException: test.jrxml (系统找不到指定的文件。)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:106)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:167)
    ... 71 more
    我把文件放在了WEB-INF下面
      

  3.   

    public void outputPDF(String jasperPath, Map paraMap, JRDataSource ds, HttpServletResponse response, String fileName)
            throws JRException, IOException {
            OutputStream sos = null;
            try {
                JasperPrint jasperPrint = null;
                if (ds == null) {
                    jasperPrint = JasperFillManager.fillReport(jasperPath, paraMap);
                } else {
                    jasperPrint = JasperFillManager.fillReport(jasperPath, paraMap, ds);
                }
                ByteArrayOutputStream pdfReport = new ByteArrayOutputStream();
                JRPdfExporter exporterPdf = new JRPdfExporter();
                exporterPdf.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
                exporterPdf.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, pdfReport);
                exporterPdf.exportReport();
                response.setContentType("application/octet-stream");
                response.setHeader("Content-Disposition", "attachment;   filename=" + fileName);
                sos = response.getOutputStream();
                sos.write(pdfReport.toByteArray(), 0, pdfReport.toByteArray().length);
                sos.flush();
            }finally {
                if (sos != null) {
                    sos.close();
                }
            }
        }
      

  4.   

    还是不可以type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.NullPointerException
    net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
    java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
    java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
    java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
    java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
    java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
    java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
    java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
    java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
    java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
    java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
    java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
    java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
    java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
    java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
    java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
    java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
    java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
    java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
    net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:88)
    net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:232)
    com.zf.action.sum.PeakAction.outputPDF(PeakAction.java:73)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:440)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249)
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468)
    org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:76)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
      

  5.   

    路径是正确的,可以找到
    String realpath = ServletActionContext.getServletContext().getRealPath("test1.jasper");