1.birt api生成报表 public class PDFReportServiceAccess { /** */ /** 初始化的状态 */ protected static boolean initStatus = false; private static IReportEngine engine = null; private static EngineConfig config = null; private static IReportRunnable design = null; //private static PDFRenderOption ro = null; private static PDFRenderOption ro = null; // doubley0 /** */ /** 初始化资源 */ public void initilize() { if (initStatus == true) return; try { config = new EngineConfig(); config.setEngineHome("E://Program Files1//apache-tomcat-5.5.26//webapps//birt//WEB-INF//platform"); // birt doubley1 // runtime // web应用中的报表引擎目录 config.setLogConfig("E://Program Files1//apache-tomcat-5.5.26//webapps//birt//logs", Level.FINE); //doubley2 Platform.startup(config); IReportEngineFactory factory = (IReportEngineFactory) Platform .createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY); engine = factory.createReportEngine(config); engine.changeLogLevel(Level.WARNING); ro = new PDFRenderOption(); ro.setBaseURL("http://localhost:8080/birt"); // birt runtime // web应用 config.getEmitterConfigs().put("pdf", ro); // 生成pdf格式 doubley3 initStatus = true; } catch (Exception ex) { ex.printStackTrace(); initStatus = false; } } /** */ /** 释放资源 */ public void release() { engine.shutdown(); Platform.shutdown(); initStatus = false; } protected OutputStream run(String filename, HashMap parameters) throws EngineException { design = engine.openReportDesign(filename); // Create task to run and render the report, IRunAndRenderTask task = engine.createRunAndRenderTask(design); HashMap contextMap = new HashMap(); contextMap.put(EngineConstants.APPCONTEXT_PDF_RENDER_CONTEXT, ro); task.setAppContext(contextMap); task.setParameterValues(parameters); task.validateParameters(); OutputStream os = new ByteArrayOutputStream(); ro.setOutputStream(os); ro.setOutputFormat("pdf"); //doubley4 task.setRenderOption(ro); task.run(); task.close(); return os; } /** */ /** * 生成PDF格式报表,以OutputStream格式返回 * * @param filename * 报表设计文件名全路径 * @param parameters * 报表参数 * @return ByteArrayOutputStream * @throws EngineException */ public OutputStream call(String filename, HashMap parameters) throws EngineException { initilize(); OutputStream os = run(filename, parameters); release(); return os; } /** */ /** * @param args */ public static void main(String[] args) { HashMap parameters = new HashMap(); // 三个Report Parameters,名称必须在报表设计文件中预先定义好 //parameters.put("begindate", "2004/01/01"); //parameters.put("enddate", "2007/12/31"); //parameters.put("sql", " where cust_id = 1234567"); int temp=7; parameters.put("mystr1", "7"); //doubley5 //parameters.put("mystr1", temp); ByteArrayOutputStream bos = null; PDFReportServiceAccess ebr = new PDFReportServiceAccess(); String filename = "E://Program Files1//apache-tomcat-5.5.26//webapps//birt//new_report1.rptdesign"; //doubley6 try { bos = (ByteArrayOutputStream) ebr.call(filename, parameters); OutputStream fis = new FileOutputStream("c:/test.pdf"); bos.writeTo(fis); } catch (Exception e) { e.printStackTrace(); } } }