利用BIRT API生成报表rptdesign文件
package com;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import org.eclipse.birt.core.framework.Platform;import org.eclipse.birt.report.engine.api.HTMLRenderOption;import org.eclipse.birt.report.engine.api.IReportEngine;import org.eclipse.birt.report.engine.api.IRunAndRenderTask;import org.eclipse.birt.report.model.api.CellHandle;import org.eclipse.birt.report.model.api.DesignConfig;import org.eclipse.birt.report.model.api.DesignElementHandle;import org.eclipse.birt.report.model.api.ElementFactory;import org.eclipse.birt.report.model.api.GridHandle;import org.eclipse.birt.report.model.api.IDesignEngine;import org.eclipse.birt.report.model.api.IDesignEngineFactory;import org.eclipse.birt.report.model.api.ImageHandle;import org.eclipse.birt.report.model.api.LabelHandle;import org.eclipse.birt.report.model.api.ReportDesignHandle;import org.eclipse.birt.report.model.api.RowHandle;import org.eclipse.birt.report.model.api.SessionHandle;import org.eclipse.birt.report.model.api.activity.SemanticException;import com.ibm.icu.util.ULocale;/** * Simple BIRT Design Engine API (DEAPI) demo. */public class SimpleCreate {public static IReportEngine birtReportEngine = null;public static void main(String[] args) {birtReportEngine = BirtEngine.getBirtEngine();try {buildReport();} catch (IOException e) {e.printStackTrace();} catch (SemanticException e) {e.printStackTrace();}}static void buildReport() throws IOException, SemanticException {DesignConfig config = new DesignConfig();config.setProperty("BIRT_HOME", Utils.BIRT_HOME);IDesignEngine engine = null;try {Platform.startup(config);IDesignEngineFactory factory = (IDesignEngineFactory) Platform.createFactoryObject(IDesignEngineFactory.EXTENSION_DESIGN_ENGINE_FACTORY);engine = factory.createDesignEngine(config);} catch (Exception ex) {ex.printStackTrace();}SessionHandle session = engine.newSessionHandle(ULocale.ENGLISH);ReportDesignHandle design = session.createDesign();ElementFactory efactory = design.getElementFactory();DesignElementHandle element = efactory.newSimpleMasterPage("Page Master");design.getMasterPages().add(element);GridHandle grid = efactory.newGridItem(null, 2, 1);design.getBody().add(grid);grid.setWidth("100%");RowHandle row = (RowHandle) grid.getRows().get(0);ImageHandle image = efactory.newImage(null);image.setURL("\"1.jpg\"");CellHandle cell = (CellHandle) row.getCells().get(0);cell.getContent().add(image);LabelHandle label = efactory.newLabel(null);label.setText("Hello, world!");cell = (CellHandle) row.getCells().get(1);cell.getContent().add(label);design.saveAs(Utils.SAVE_HOME + "sample.rptdesign");design.close();System.out.println("Finished");/*IRunAndRenderTask task = null;OutputStream out = null;try {//task = birtReportEngine.createRunAndRenderTask(design);//task.setAppContext(contextMap);//task.setParameterValues(context.getRptParamters());HTMLRenderOption options = new HTMLRenderOption();options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML);// HTMLoptions.setHtmlPagination(true);out = new FileOutputStream(new File("D:\\dev-workspace\\workspace-v4.0\\BIRT\\temp\\a.html"));// 设置输出选项options.setOutputStream(out);task.setRenderOption(options);// 运行报表task.run();} catch (Exception e) {e.printStackTrace();} finally {out.close();if (task != null) {task.close();}}*/}}