Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[birt-charting-dev] chart don´t render in html mode report

Good night folks,

I met BIRT recently, made a few reports and became satisfied with the 
results.
Now, i need to create a report with a chart, but i´m having some problems.
The static image generated by chart, indicates a path on my pc...and don´t 
render in report (html mode).
I´m using a WebReport to generate the report.
Bellow is the BirtEngine and WebReport:
=========================================
public class BirtEngine { 

    private static IReportEngine birtEngine = null; 
    private static Properties configProps = new Properties(); 
private final static String configFile = "/WEB-INF/BirtConfig.properties"; 

    public static synchronized void initBirtConfig() { 
         loadEngineProps(); 
    } 

    public static synchronized IReportEngine getBirtEngine(ServletContext 
sc) { 
         if (birtEngine == null) 
         { 
              EngineConfig config = new EngineConfig(); 

              if( configProps != null){ 
                    
                   String logLevel = configProps.getProperty("logLevel"); 
                   Level level = Level.OFF; 
                   if ("SEVERE".equalsIgnoreCase(logLevel)) 
                   { 
                        level = Level.SEVERE; 
                   } else if ("WARNING".equalsIgnoreCase(logLevel)) 
                   { 
                        level = Level.WARNING; 
                   } else if ("INFO".equalsIgnoreCase(logLevel)) 
                   { 
                        level = Level.INFO; 
                   } else if ("CONFIG".equalsIgnoreCase(logLevel)) 
                   { 
                        level = Level.CONFIG; 
                   } else if ("FINE".equalsIgnoreCase(logLevel)) 
                   { 
                        level = Level.FINE; 
                   } else if ("FINER".equalsIgnoreCase(logLevel)) 
                   { 
                        level = Level.FINER; 
                   } else if ("FINEST".equalsIgnoreCase(logLevel)) 
                   { 
                        level = Level.FINEST; 
                   } else if ("OFF".equalsIgnoreCase(logLevel)) 
                   { 
                        level = Level.OFF; 
                   } 

                   config.setLogConfig(configProps.getProperty
("logDirectory"), level); 
              } 

              config.setEngineHome(""); 
              IPlatformContext context = new PlatformServletContext( sc ); 
              config.setPlatformContext( context ); 
               
              HTMLEmitterConfig hc = new HTMLEmitterConfig( ); 
              HTMLCompleteImageHandler imageHandler = new 
HTMLCompleteImageHandler( ); 
              hc.setImageHandler( imageHandler ); 
              config.setEmitterConfiguration( 
HTMLRenderOption.OUTPUT_FORMAT_HTML, hc ); 

               
               
              try 
              { 
                   Platform.startup( config ); 
              } 
              catch ( BirtException e ) 
              { 
                   e.printStackTrace( ); 
              } 

              IReportEngineFactory factory = (IReportEngineFactory) Platform 
              .createFactoryObject( 
IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY ); 
              birtEngine = factory.createReportEngine( config ); 
               
               

         } 
         return birtEngine; 
    } 

    public static synchronized void destroyBirtEngine() { 
         if (birtEngine == null) { 
              return; 
         }   
         birtEngine.shutdown(); 
         Platform.shutdown(); 
         birtEngine = null; 
    } 

    public Object clone() throws CloneNotSupportedException { 
         throw new CloneNotSupportedException(); 
    } 

    private static void loadEngineProps() { 
         try { 
              //Config File must be in classpath 
              ClassLoader cl = Thread.currentThread ().getContextClassLoader
(); 
              InputStream in = null; 
          
System.out.println(BirtEngine.class.getResourceAsStream(configFile).toString
()); 
              //in = cl.getResourceAsStream 
(BirtEngine.class.getResource(configFile).toString()); 
              in = BirtEngine.class.getResourceAsStream(configFile); 
              configProps.load(in); 
              in.close(); 

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

    } 
========================================
public class WebReport extends HttpServlet { 

    private static final long serialVersionUID = 1L; 

    private IReportEngine birtReportEngine = null; 
    protected static Logger logger = Logger.getLogger( "org.eclipse.birt" ); 

    public WebReport() { 
         super(); 
         Debug.log("chamou o servlet webreport",9); 
    } 

    public void destroy() { 
         super.destroy(); 
         BirtEngine.destroyBirtEngine(); 
    } 

    public void doGet(HttpServletRequest req, HttpServletResponse resp) 
    throws ServletException, IOException { 

         Debug.log("tentou chamar doGet",9); 

         String reportName = req.getParameter("ReportName"); 
         ServletContext sc = req.getSession().getServletContext(); 
         this.birtReportEngine = BirtEngine.getBirtEngine(sc); 

         HTMLRenderContext renderContext = new HTMLRenderContext(); 
          
         renderContext.setBaseImageURL(req.getContextPath()+"/reports"); 
          
         renderContext.setImageDirectory("image"); 

         HashMap<String, HTMLRenderContext> contextMap = new HashMap<String, 
HTMLRenderContext>(); 
         contextMap.put( EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT, 
renderContext ); 
          
         IReportRunnable design; 
         try 
         { 
              //Open report design 
              design = birtReportEngine.openReportDesign( 
sc.getRealPath("/reports")+"/"+reportName ); 
               
              //create task to run and render report 
              IRunAndRenderTask task = 
birtReportEngine.createRunAndRenderTask( design ); 
               
              renderContext.setSupportedImageFormats("JPG;PNG;BMP;SVG"); 
               
              task.setAppContext( contextMap ); 

              //set output options 
              HTMLRenderOption options = new HTMLRenderOption(); 
               
              if(req.getParameter("mod").equals("pdf")){ 
                   resp.setContentType("application/pdf"); 
                   //options.setOutputFileName(sc.getRealPath("/reports")
+"/rpt.pdf"); 
                   options.setOutputFormat
(HTMLRenderOption.OUTPUT_FORMAT_PDF); 
              }else{ 
                   resp.setContentType("text/html"); 
                   options.setOutputFormat
(HTMLRenderOption.OUTPUT_FORMAT_HTML); 
                    
              } 
               
              options.setOutputStream(resp.getOutputStream()); 
               
               
              task.setRenderOption(options); 

              task.run(); 
              task.close(); 
                 
         }catch (Exception e){ 

              e.printStackTrace(); 
              throw new ServletException( e ); 
         } 
    } 

    public void doPost(HttpServletRequest request, HttpServletResponse 
response) 
    throws ServletException, IOException { 

         response.setContentType("text/html"); 
         PrintWriter out = response.getWriter(); 
         out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 
Transitional//EN\">"); 
         out.println("<HTML>"); 
         out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>"); 
         out.println("  <BODY>"); 
         out.println(" Post does nothing"); 
         out.println("  </BODY>"); 
         out.println("</HTML>"); 
         out.flush(); 
         out.close(); 
    } 

    public void init() throws ServletException { 
         BirtEngine.initBirtConfig(); 
          
    } 

}
========
thank´s a lot!


--
+55(48) 3241-1878
+55(48) 9155-7813
"Tudo é possível. O impossível apenas demora mais."



Back to the top