Skip to main content
Jump to: navigation, search

Difference between revisions of "Separate Run and Render"

(RunTask.java)
(Replacing page with 'Moved to Separate Run and Render (BIRT) 2.1')
 
Line 1: Line 1:
== Separate Run and Render ==
+
Moved to [[Separate Run and Render (BIRT) 2.1]]
 
+
This example demonstrate using the RE API to run and render a report
+
in two task.  It also uses the generated rptdocument to retrieve the first level TOC.
+
 
+
Add comments at the bottom of the example.
+
 
+
[[BIRT Report Engine API]] Return to the BIRT Report Engine API examples
+
 
+
== Source ==
+
===RunTask.java===
+
import java.util.HashMap;
+
import java.util.List;
+
import java.util.logging.Level;
+
+
import org.eclipse.birt.core.framework.Platform;
+
import org.eclipse.birt.report.engine.api.EngineConfig;
+
import org.eclipse.birt.report.engine.api.EngineConstants;
+
import org.eclipse.birt.report.engine.api.EngineException;
+
import org.eclipse.birt.report.engine.api.HTMLActionHandler;
+
import org.eclipse.birt.report.engine.api.HTMLEmitterConfig;
+
import org.eclipse.birt.report.engine.api.HTMLRenderContext;
+
import org.eclipse.birt.report.engine.api.HTMLRenderOption;
+
import org.eclipse.birt.report.engine.api.HTMLServerImageHandler;
+
import org.eclipse.birt.report.engine.api.IRenderTask;
+
import org.eclipse.birt.report.engine.api.IReportDocument;
+
import org.eclipse.birt.report.engine.api.IReportEngine;
+
import org.eclipse.birt.report.engine.api.IReportEngineFactory;
+
import org.eclipse.birt.report.engine.api.IReportRunnable;
+
import org.eclipse.birt.report.engine.api.IRunTask;
+
import org.eclipse.birt.report.engine.api.TOCNode;
+
public class RunTask {
+
+
static void executeReport() throws EngineException
+
{
+
+
  IReportEngine engine=null;
+
  EngineConfig config = null;
+
  try{
+
  config = new EngineConfig( );
+
  config.setEngineHome( "C:/birt-runtime-2_1_1/birt-runtime-2_1_1/ReportEngine" );
+
  config.setLogConfig(null, Level.FINE);
+
+
  Platform.startup( config );
+
  IReportEngineFactory factory = (IReportEngineFactory) Platform
+
  .createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
+
  engine = factory.createReportEngine( config );
+
  engine.changeLogLevel( Level.WARNING );
+
+
  }catch( Exception ex){
+
  ex.printStackTrace();
+
  }
+
+
+
  //Create the report engine
+
  HTMLEmitterConfig emitterConfig = new HTMLEmitterConfig( );
+
  emitterConfig.setActionHandler( new HTMLActionHandler( ) );
+
  HTMLServerImageHandler imageHandler = new HTMLServerImageHandler( );
+
  emitterConfig.setImageHandler( imageHandler );
+
  config.getEmitterConfigs( ).put( "html", emitterConfig ); //$NON-NLS-1$
+
+
  IReportRunnable design = null;
+
+
  design = engine.openReportDesign("C:/test/2.1/toc/TOCTest.rptdesign");
+
+
  //Create task to run the report - use the task to execute and run the report,
+
  IRunTask task = engine.createRunTask(design);
+
+
  //Create rptdocument
+
  task.run("c:/test/2.1/toc/TOCTest.rptdocument");
+
+
  //Open rptdocument
+
  IReportDocument rptdoc = engine.openReportDocument("c:/test/2.1/toc/TOCTest.rptdocument");
+
  //Get the top level TOC Node
+
  TOCNode tn = rptdoc.findTOC(null);
+
  List children = tn.getChildren();
+
+
  //Display top level children
+
  if( children != null && children.size() >0 )
+
  {
+
  for( int i = 0; i < children.size(); i++)
+
  {
+
    TOCNode child = ( TOCNode )children.get(i);
+
    System.out.println( "Node ID " + child.getNodeID());
+
+
    System.out.println( "Node Display String " + child.getDisplayString());
+
    System.out.println( "Node Bookmark " + child.getBookmark());
+
  }
+
  }
+
+
  //Create Render Task
+
  IRenderTask rtask = engine.createRenderTask(rptdoc);
+
+
+
+
  //Set Render context to handle url and image locataions
+
  HTMLRenderContext renderContext = new HTMLRenderContext();
+
  //Set the Base URL for all actions
+
  renderContext.setBaseURL("http://localhost/");
+
  //Tell the Engine to prepend all images with this URL - Note this requires using the HTMLServerImageHandler
+
  renderContext.setBaseImageURL("http://localhost/myimages");
+
  //Tell the Engine where to write the images to
+
  renderContext.setImageDirectory("C:/xampplite/htdocs/myimages");
+
  //Tell the Engine what image formats are supported.  Note you must have SVG in the string
+
  //to render charts in SVG.
+
  renderContext.setSupportedImageFormats("JPG;PNG;BMP;SVG");
+
  HashMap<String, HTMLRenderContext> contextMap = new HashMap<String, HTMLRenderContext>();
+
  contextMap.put( EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT, renderContext );
+
  rtask.setAppContext( contextMap );
+
+
+
  //Set rendering options - such as file or stream output,
+
  //output format, whether it is embeddable, etc
+
  HTMLRenderOption options = new HTMLRenderOption();
+
+
  //Remove HTML and Body tags
+
  //options.setEmbeddable(true);
+
+
  //Set ouptut location
+
  options.setOutputFileName("C:/test/2.1/output.html");
+
+
  //Set output format
+
  options.setOutputFormat("html");
+
  rtask.setRenderOption(options);
+
+
  //run the report and destroy the engine
+
  rtask.setPageNumber(1);
+
  //rtask.setPageRange("1-3,6");
+
+
  rtask.render();
+
+
  //render the report and destroy the engine
+
  //Note - If the program stays resident do not shutdown the Platform or the Engine 
+
  task.close();
+
  engine.shutdown();
+
  Platform.shutdown();
+
  System.out.println("Finished");
+
}
+
/**
+
  * @param args
+
  */
+
public static void main(String[] args) {
+
  try
+
  {
+
  executeReport( );
+
  }
+
  catch ( Exception e )
+
  {
+
  e.printStackTrace();
+
  }
+
}
+
+
}
+
 
+
== Comments ==
+
Please enter comments below by selecting the edit icon to the right.
+
You will need a Bugzilla account to add comments.
+
 
+
----
+

Latest revision as of 15:24, 4 October 2007

Moved to Separate Run and Render (BIRT) 2.1

Back to the top