关于birt实现“盖章”的解决方案

原创 2011年01月17日 17:35:00

最近要求用birt导出PDF,这个很简单,/run?__report==*.rptdesign&__format=pdf&attachment=true 此链接直接实现点击导出PDF,但是又要求实现一个效果,就是类似在报表页面上加个“印章”,忙了一天,终于搞定了,记录解决办法在这里。

解决的过程如下:
1 本来是尝试用javascript来改变图片标签的位置,简单的说,就是把图片标签看做一个DIV,然后让它悬浮在需要的地方。但是失败,根本原因在于:birt所提供的javascript脚本,并不是真正运行在客户端,而是运行在服务器端,所以document对象,window对象根本没法使用,此路不通。(当然,在图表中是有运行在客户端的javascript脚本,但是我考虑了一下,发现没什么作用)这个方案放弃。
2 在某些容器控件的属性中,有一个overFlow属性,就如同英文意思一样:如果内容太多,图片太大,它将会允许内容或者图片超出指定的单元格显示,这就给我实现这个功能提供了一个方法,举例说明,A B 为两个控件,A为图片控件,在一个Grid里,B为其他控件,在GRID外,两个控件排列如下:
   A
   B
A在B的上方,如果这个时候,把GRID的overflow属性改成true,高度改成接近0,那么就A里面的图片就会“溢出”,自动覆盖到B的位置上,B就被“盖”到了A图片的下方,如果正好图片是透明的格式(如GIF),看起来,就和印章一样了。
       这种办法可以解决在HTML下的显示,但是很遗憾,问题没有完全被解决,因为在PDF下,依然不行,我查了一下,大概原因是birt调用的第三方的jar包生成的,所以生成的时候显示有可能会不一样。问题似乎陷入了绝境。但是一个偶然的机会(机会和这个问题无关,不再详细说明),我发现了第三方jar包的一个特点,或者说是BUG,这个bug可以作为第三种解决的办法:
3 利用第三方jar包的bug,实现图片的“溢出” 。 什么情况下,图片会“溢出”呢? 我举例说明:
   a1 a2
   b1 b2
   c1 c2
以上,a 和b都属于一个GRID,C属于另一个,两个GRID上下排列,如果这个时候,把a2和b2合并单元格,然后把图片放进去,就造成了:左边的行数比右边多 的情况,PDF在这种情况下,会造成2列里的图片“溢出”!

以上为解决办法,简单的说:有两种
    一 如果只是HTML的话,就可以利用overflow属性来让图片“溢出”,达到控件内容层叠的效果。
    二 如果是要PDF的话,就可以利用PDF第三方jar包的BUG让图片“溢出”,达到控件内容层叠的效果。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

birt drill-through钻取(超链接)传参乱码问题解决方案

今天信心满满的把人生第一次做的报表部署到项目中,在birt eclipse中测试的时候不会出现乱码,但是部署到项目中就为什么会乱码呢。 报表之间传递参数默认不是utf-8,所以在传递中文时候会出...

html5实现对试题图片批改效果,类似盖章效果

因项目功能需要,最近几天开始研究html5,实现对上传的试题图片进行批改对错,批改完保存批改后的图片功能。主要涉及到html5 canvas画布和js的相关知识点。 参考:http://www....

用slf4j+logback实现多功能日志解决方案 --- 转

用slf4j+logback实现多功能日志解决方案 --- 转 大家都知道,slf4j是原来log4j的作者写的一个新的日志组件,意思是简单日志门面接口,可以跟其他日志组件配合使用,常用的配...

Apache shiro集群实现 (五)分布式集群系统下的高可用session解决方案

目前,为了使web能适应大规模的访问,需要实现应用的集群部署. 而实现集群部署首先要解决session的统一,即需要实现session的共享机制。  目前,在集群系统下实现sessi...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)