将BIRT整合到自己的Java项目中(三)

系统 1610 0

  1. 渲染报表
    BIRT支持HTML格式和PDF格式,这两种报表生成的过程相同,只是设置不同的RenderContext和RenderOptions。我们把相同的部分提取为父类的公共方法,不同的部分留给子类实现:

    IReportDocument iReportDocument = engine.openReportDocument(docFilename);
          
    // Create Render Task
           IRenderTask task = engine.createRenderTask(iReportDocument);
           task.addScriptableJavaObject(
    " jsBirtObject " ,
               getScriptableObject(scriptObj));
          
    if (params != null && ! params.isEmpty()) ... {
             task.setParameterValues(params);
           }

           setRenderContext(task);
    // 设置Render Context,具体由子类实现
           setRenderOptions(task, out); // 设置Render Options,具体由子类实现
           task.render();
           task.close();
         }
    catch (EngineException e) ... {
           e.printStackTrace();
         }
    finally ... {
           engine.shutdown();
         }
    1. 渲染PDF和HTML报表
    2. PDF
         /** */ /**
          *
      @see AbstractBirtReportParser#setRenderContext(IRenderTask)
         
      */

         @Override
        
      protected void setRenderContext(IRenderTask task) ... {
           PDFRenderContext renderContext
      = new PDFRenderContext();
           renderContext.setEmbededFont(
      true );    
           HashMap contextMap
      = new HashMap();
           contextMap.put( EngineConstants.APPCONTEXT_PDF_RENDER_CONTEXT, renderContext);
           task.setAppContext( contextMap );        
         }


        
      /** */ /**
          *
      @see AbstractBirtReportParser#setRenderOptions(IRenderTask, OutputStream)
         
      */

         @Override
        
      protected void setRenderOptions(IRenderTask task, OutputStream out) ... {
           RenderOptionBase options
      = new RenderOptionBase();
           options.setOutputStream(out);
           options.setOutputFormat(RenderOptionBase.OUTPUT_FORMAT_PDF);
           task.setRenderOption(options);
         }
    • HTML
      我们要生成一个HTML的一部分,而非包含<html/>标记的完整的HTML文档
         /** */ /**
          *
      @see AbstractBirtReportParser#setRenderContext(IRenderTask)
         
      */

         @Override
        
      protected void setRenderContext(IRenderTask task) ... {
           HTMLRenderContext renderContext
      = new HTMLRenderContext();
           renderContext.setBaseURL(context.getBaseURL());        
         
      // You must define HTMLServerImageHandler to use a URL
           renderContext.setBaseImageURL(context.getBaseImageURL());
          
      // renderContext.setImageDirectory("myimages");
           renderContext.setImageDirectory(context.getImageDirectory());
           renderContext.setSupportedImageFormats(
      " JPG;PNG " );
           HashMap contextMap
      = new HashMap();
           contextMap.put( EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT, renderContext);
           task.setAppContext( contextMap );    
         }


        
      /** */ /**
          *
      @see AbstractBirtReportParser#setRenderOptions(oIRenderTask, OutputStream)
         
      */

         @Override
        
      protected void setRenderOptions(IRenderTask task, OutputStream out) ... {
           HTMLRenderOption options
      = new HTMLRenderOption();
           options.setOutputStream(out);
           options.setEmbeddable(
      true );
           task.setRenderOption(options);   
         }
  • 将BIRT整合到自己的Java项目中(三)


    更多文章、技术交流、商务合作、联系博主

    微信扫码或搜索:z360901061

    微信扫一扫加我为好友

    QQ号联系: 360901061

    您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

    【本文对您有帮助就好】

    您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

    发表我的评论
    最新评论 总共0条评论