关于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让图片“溢出”,达到控件内容层叠的效果。

android自定义view实现公章效果

上次去一个公司面试,面试官问了一个题,怎么用android的自定义view实现一个公章的效果,据说这是华为之前的面试题,我想了下,要是公章的效果,最外层是一个圆,里面是一个五角星,但是这文字怎么画呢,...
  • xiangzhihong8
  • xiangzhihong8
  • 2016年04月01日 22:01
  • 3164

BIRT实现组内跨行计算

问题来源:http://developer.actuate.com/community/forum/index.php?/topic/36160-dealing-with-previous-rows-...
  • u012388497
  • u012388497
  • 2015年06月26日 10:49
  • 1080

BIRT的Java实现

这东西捯饬了好长时间都不成功,还好又仔细找了官网入门资料,才做出一个简单的东西。...
  • u012122062
  • u012122062
  • 2016年06月04日 14:39
  • 1235

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

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

java使用itex读取pdf,并搜索关键字,为其盖章

导读:近期要做一个根据关键字定位pdf的盖章位置的相关需求,其中关键字可配置多个(包含pdf文档中可能不存在的关键字),当页面显示盖章完成时,打开pdf显示已经损坏。 排查后发现,当i...
  • sdizoea
  • sdizoea
  • 2017年07月14日 13:46
  • 1490

在Birt中动态插入子表字段

库表dColThread是主表,主键是tID。dColQuestion是子表,外键是tID,如下:          dColThread          dColQuestion ...
  • u012388497
  • u012388497
  • 2015年07月10日 08:57
  • 1011

BIRT报表的数据库间动态关联解决办法

客户在使用BIRT报表的过程中遇到了数据库间动态关联的麻烦,用BIRT的跨库关联工具以及DB2的Federated Database都难以解决。客户报表全名为“ATM关键数据查询报表”,需要通过时间段...
  • u012388497
  • u012388497
  • 2014年01月07日 09:58
  • 1277

被低估的BIRT报表(三):如何做出漂亮的表格

对于报表而言,表格是其最核心的组件之一,做出漂亮的表格几乎是所有报表系统的基本要求,但在事件中,我们经常或做出这样的表格。 或者存在讨厌的双线与间距,而BIRT在这方面做得非常好,最后的效果如下: ...
  • yiifaa
  • yiifaa
  • 2017年06月28日 18:46
  • 684

第十一章 BIRT数据绑定与脚本,事件机制详解 .

11.1 事件机制详解 前面通过脚本获取数据源,以及在报表中利用单元格或者数据项的onRender方法添加脚本来增加交互性,或者直接在脚本编辑器中书写少量代码,或多或少的都利用到了BIRT的脚本和事...
  • huazaichang
  • huazaichang
  • 2013年01月25日 22:19
  • 1156

第八章 BIRT交叉报表

8.1 创建交叉报表和统计 一、创建报表和配置数据源 新建一个报表,改好自己的名字,然后next进行下一步。 选择一个空白报表(Blank Report),单击finish完成。 ...
  • huazaichang
  • huazaichang
  • 2013年01月25日 22:14
  • 1429
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于birt实现“盖章”的解决方案
举报原因:
原因补充:

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