我想在使用Birt(2.5.2)生成的pdf文档中每页右侧垂直编写动态文本
这引出了两个可以独立解决的问题:
问题1)
我找不到垂直写文本的方法,因此我决定将文本放入JLabel,进行90度旋转,将图像写入ByteArrayOutputStream并使用byteArray将动态图像添加到报表中。 =>这已经有效,如果有一个我没想到的简单的3线解决方案,我会听取理由:)
问题2)
由于这个事实,页眉和页脚不能用于右侧或左侧的图像/文本,我的方法是使用背景图像并将其放在右侧。
问题是,birt中的背景图片只能是网址或嵌入图片 要使用我生成的byteArray,我需要使用动态图像。
现在我只能想到一个可能的解决方案:将生成的图像保存到具有唯一URL的临时文件夹中,将此图像添加为背景图像,然后将其删除。 但我认为应该有一个更容易的解决方案。
==>更新1
我创建了一个两列布局,在右侧添加动态图像。我的报告最多有五页,因此我将图像放入其中五次,并在每张图像之前分页。这是有效的,结果如预期......还剩下一个新问题:
在某些情况下,报告有3或4页,所以我需要隐藏最后的图像。我可以使用“reportContext.getPageVariable('pageNumber')”获取第一列报告末尾的页数,并将其保存到我自己的报告变量中。如果数字大于我的最后一页数,则五个图像中的每一个都得到数字1到5以及隐藏条件。
现在我需要正确的位置来获取我的pageNumber:
有人知道怎么做吗?
http://eclipse.org/birt/phoenix/deploy/reportScripting.php
==>更新1结束
答案 0 :(得分:0)
一种可能的替代方法:
where 1=0
条件)。这种方法的问题(除了它有点复杂)是y轴标题不能轻易设置为动态文本,据我所知。设置它的可能方法可能是在报表中的事件脚本中更改它,或者为其提供查找键(在图形y轴标题Externalize Text对话框中),并在运行报表时动态设置查找值。
答案 1 :(得分:0)
它完成了,现在,因为我知道它是如何工作的...这很容易;)
对于其他人都有同样的问题,以下是您在每个页面上获取相同内容的方法:
maxPages
,其默认值为0
在内容列中添加文本元素作为最后一个元素,具有以下属性
“在渲染时”脚本:
vars["maxPages"] = reportContext.getPageVariable("pageNumber");
在第二列中添加具有以下属性的重复元素
隐藏元素,表达式:
vars["maxPages"] != 0 && vars["maxPages"] <= reportContext.getPageVariable("pageNumber")
maxPages
与0进行比较以显示第一页,该变量在首页上第一次设置时可用pageNumber
包含的内容少于实际页码!在我的情况下,重复项是带有垂直文本的动态图像,但这可能是一切,只需将每个匹配项包装在网格中