- 浏览: 3472394 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
关于编写viewer,关键在于使用ReportEngine API,这个在birt官方文档 上有很详细的描述。 这里将几个主要环节总结一下:
- 启动ReportEngine
这里需要注意启动ReportEngine的开销问题和图片链的协议的问题。使用 IReportEngineFactory比每次new一个出来性能方面要好很多。使用HTMLEmitterConfig可以使得生成的HTML报表中 的图片的src指向一个web资源而非file资源。public IReportEngine getEngine() ... {
try ... {
if (platformContext == null ) ... {
platformContext = new PlatformServletContext(servletContext);
}
engineConfig = new EngineConfig();
engineConfig.setEngineHome(
servletContext.getRealPath( " /WEB-INF/platform/ " ));
// 要求ENGINE HOME 位于WEB-INF/Platform
engineConfig.setPlatformContext(platformContext);
// This call sets the Log directory name and level
engineConfig.setLogConfig(getLogDir(), Level.FINE);
// 设置Emitter,渲染HTML的时候,image的地址是HTTP协议而不是File协议
HTMLEmitterConfig emitterConfig = new HTMLEmitterConfig( );
emitterConfig.setActionHandler( new HTMLActionHandler());
HTMLServerImageHandler imageHandler = new HTMLServerImageHandler();
emitterConfig.setImageHandler(imageHandler);
engineConfig.getEmitterConfigs().put( " html " , emitterConfig);
// 设置日志level
engineConfig.setLogConfig(getLogDir(), Level.WARNING);
// 启动Platform,创建ReportEngine
Platform.startup(engineConfig);
IReportEngineFactory factory = (IReportEngineFactory) Platform
.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
engine = factory.createReportEngine(engineConfig);
engine.changeLogLevel(Level.WARNING);
log.debug( " A new engine startup. " );
} catch (BirtException e) ... {
e.printStackTrace();
}
return engine;
} - 运行报表
我理解为编译报表文件。BIRT在渲染报表之前,要将报表编译为.rptdocument,再根据这个文件将报表渲染为HTML格式或PDF格式。编译报表使用IRunTask:protected void run(String rptDesign) ... {
assert (context != null );
IReportEngine engine = context.getEngine();
// Open a report design
IReportRunnable design = null ;
try ... {
design = engine.openReportDesign(context
.getFullRptDesignFilename(rptDesign));
// Create task to run the report - use the task to
// execute the report and save to disk.
IRunTask task = engine.createRunTask(design);
String doc = context.getFullRptDocumentFilename(rptDesign);
// run the report and destroy the engine
task.run(doc);
log.debug( " save rpt design to " + doc);
task.close();
} catch (EngineException e) ... {
e.printStackTrace();
}
} - 渲染报表
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();
} - 渲染PDF和HTML报表
- 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);
}
- PDF
发表评论
-
字符串分割--java中String.split()用法
2013-03-06 14:25 74095在java.lang包中有String.sp ... -
用 HttpServletResponseWrapper 实现 Etag 过滤器
2012-07-09 16:58 3708原文出处:http://blog.chenlb.com/200 ... -
Fitnesse使用
2012-05-05 13:27 23424Fitnesse 的使用 一,介绍 Fitnesse是一种 ... -
Customizing the new FitNesse parser
2012-05-05 13:13 2092FitNesse began its life using ... -
java application中内嵌ActiveX控件
2011-11-14 15:57 5467我这里用的是SWT/JFace开发application,SW ... -
Google Java Developer Tools Downloads
2011-08-09 00:04 2309WindowBuilder Pro原来叫WindowB ... -
Jalita
2011-08-06 00:49 1523Jalita (Java light terminal ada ... -
【转】用Java写字符终端界面
2011-07-29 13:13 2080终端界面GUI开源项目charva。 这个框架让你可以用开发 ... -
[转]mybatis下的分页,支持所有的数据库
2011-07-21 13:21 14788大 家都知道,mybatis的自带分页方法只是逻 ... -
Java framework for text- & console-based forms?
2011-07-21 01:06 1671charva jcurses JNA , ... -
JNA(Java Native Access)学习入门
2011-07-21 01:04 22524Java Native Access 项目 在 ... -
JAVA上加密算法的实现用例
2011-06-25 12:38 4837来源:www.ibm.com ... -
如何将GlassFish作为Windows服务运行
2011-05-18 23:21 2316本文档来自GlassFish官方网站,详细介绍了将 G ... -
JAVA UDP打洞必备知识点---NAT
2011-05-05 12:56 8608一、引言 RFCl631 ... -
Keystore概念,Keytool工具使用
2011-04-28 16:20 2863近来由于项目需要做Single Sign On, 研究了一 ... -
利用Eclipse Profile Plugin监控分析Tomcat性能
2011-04-18 16:14 3672目前新版本的Eclipse在启动应用服务器的时候有一个新的选 ... -
m2eclipse: Eclipse is running in a JRE, but a JDK is required
2011-02-04 23:43 2511Eclipse 安装了Maven插件,启动Eclipse ... -
利用JNative实现Java调用动态库
2010-10-18 00:43 2060由于项目要求,需要用J ... -
RHEL5支持大内存
2010-10-08 16:19 2952安装 RHEL 5 ,硬件为 4G 内存,安装完成 ... -
Windows Server 2003 和 Windows 2000 提供大内存支持
2010-10-08 16:19 1817本文介绍物理地址扩展 ...
相关推荐
设计模式课程设计---FlappyBird游戏(源码+文档),包含Window自己实现和Cocos实现的两种版本。
Bluebird 的 Dash 文档生成器 这是一个小脚本,它将下载库的 API 文档并生成可由 OSX 程序读取的文档索引。 它从API 文档文件中提取。 安装 # install dependencies npm install # run the generator node blue...
自己写的java生成excel报表jar包,使用html中的table标签样式设计报表头部信息xml文件,接受list数据集生成excel报表。对结构不是太复杂的excel报表十分好用,有详细使用说明。不断完善中,欢迎提供意见和建议!(注...
自己写的java生成excel报表jar包,使用html中的table标签样式设计报表头部信息xml文件,接受list数据集生成excel报表。对结构不是太复杂的excel报表十分好用,有详细使用说明。最新添加了打印时间。
上传的文件是路由守护进程BIRD的源码,版本为2.0.4以及对应的文档doc。BIRD是一个类UNIX系统的动态路由守护进程。它支持当代互联网中所用所有路由协议,如BGP、OSPF、RIP和这些协议的IPv6的变种(除OSPFv3目前尚在...
压缩包中有几个world文档,几个文档都介绍了一些以后在公司中用到的一些概要事例
ThunderBird常用组件
大二的Java课课程设计,开发文档就不放上来了,这里只有源代码,整个工程都完整地在里面了!
《flappy bird》是一款由来自越南的独立游戏开发者Dong Nguyen所开发的作品,游戏于2013年5月24日上线,并在2014年2月突然暴红。2014年2月,《Flappy Bird》被开发者本人从苹果及谷歌应用商店撤下。2014年8月份正式...
flappybird图像音频资源,用于配合《简单小游戏flappybird制作》相关博客。
FlappyBird注释%2B开发文档版_java 实现 学习
该资源是flappy bird游戏涉及到的素材资源,包括背景、管道、小鸟的不同状态以及游戏开始、重启、失败等。
FLappy Bird,《flappybird》是由来自越南的独立游戏开发者DongNguyen所开发的作品,游戏中玩家必须控制一只小鸟,跨越由各种不同长度水管所组成的障碍。
flappybird游戏资源,图片+音效
全flappybird套图片和音效,学习开发必备
https://blog.csdn.net/cb269267/article/details/20214107 按照此博主操作分解出来的方法,如果需要可以去原博客自行操作,也可以直接下载本资源
Flappy Bird素材及公开课视频,适合自学开发FlappyBird游戏
内含FlappyBird源码、成果视频、API、PPT以及所有的游戏资源
使用unity开发flappy bird游戏,实现了一个完整的Flappy Bird游戏的开发过程,包括游戏的开始、游戏进行的音效、计分、记录最高分以及游戏的终结等...该资源包括flappy bird游戏的完整代码,对应的文档以及录制的视频。
FlyBird(飞翔的小鸟)C语言编写