[
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."