文档章节

从BIRT报表文件中获取页面设置信息(页边距、纸张大小、输出方向)的方法

李玉珏
 李玉珏
发布于 2015/02/27 12:42
字数 673
阅读 2187
收藏 2

        报表打印时,尤其是套打的报表,页面设置信息非常重要,比如页边距,纸张大小,输出方向等,而且每个报表的相关参数有可能不同,因此相关参数从具体报表中获取是一个非常正常而且合理的想法。

        如果采用BIRT作为报表的开发工具,报表设计器负责报表的制作,BIRT运行时负责处理报表文件,对于浏览器来说,BIRT后端输出的是网页,并不包含页面设置相关信息,浏览器有自己的打印设置选项,也不会从网页中读取,但是报表设计器在报表设计时提供页面设置信息的设置界面,因此我们需要通过运行时API手工写代码从具体报表中获取页面设置信息,然后再通过其他方式将参数传递给打印机(操作打印机不在本文讨论范围内),本文通过BIRT的源代码的研究,提供相关的样例代码。

        BIRT报表设计器的页面设置信息在主页选项卡所对应的属性面板中体现,不再赘述,直接上代码:

IReportEngine birtEngine = ...;
Map moduleOptions = new HashMap();
moduleOptions.put(IModuleOption.RESOURCE_FOLDER_KEY,sc.getRealPath("/"));
IReportRunnable runnable = birtEngine.openReportDesign(reportFileName,null,moduleOptions);

IMasterPage  simpleMasterPage = runnable.getDesignInstance().getReport().getMasterPage("Simple MasterPage");
String pageType =(String) simpleMasterPage.getUserProperty("type");//纸张类型
Double height = 0.0;
Double width =0.0;
//如果是自定义纸张类型,需要获取纸张的宽和高
if("custom".equalsIgnoreCase(pageType)){
    DimensionValue heightDV  = (DimensionValue) simpleMasterPage.getUserProperty("height");
    DimensionValue widthDV  = (DimensionValue) simpleMasterPage.getUserProperty("width");
    height = heightDV.getMeasure();
    width  = widthDV.getMeasure();
}
String orientation = (String) simpleMasterPage.getUserProperty("orientation");//打印输出方向 landscape:横向,portrait:纵向

DimensionValue topMarginDV = (DimensionValue)simpleMasterPage.getUserProperty("topMargin");
double topMargin = topMarginDV.getMeasure();//上边距
String unit = topMarginDV.getUnits();//单位

        这里面有一个感觉比较奇怪的地方,就是主页的属性编辑器中有一个名称,这个名称可以修改,默认为Simple MasterPage,如果要获取这个页面配置信息,getMasterPage方法也要把这个名称作为参数传入,这个就比较奇怪,只有一个页面配置方案,这个名字有什么用呢?



© 著作权归作者所有

共有 人打赏支持
李玉珏

李玉珏

粉丝 307
博文 66
码字总数 110992
作品 0
沈阳
技术主管
私信 提问
finereport普通报表的移动端自适应方案

移动端报表呈现,首先要求的是页面随手机屏幕大小自动放缩(自适应),下面给出一个普通报表中的finereport移动端自适应方案,适用于finereport 7.1之前的版本。 首先,了解一下当前我们可以...

九月你好123
2015/07/30
0
0
专业的web打印插件

Lodop是什么?参考官方网站:http://www.lodop.net/ 有人说她是Web打印控件,因为她能打印、在浏览器中以插件的形式出现,用简单一行语句就把整个网页打印出来; 有人说她是打印编程接口,因...

天才小龙
01/05
0
0
birt runtime 报表接口(1)

当启动runtime项目后我们就可以使用url去访问项目了如: http://localhost:8080/birt/frameset?report=blank.rptdesign 如上是一个frameset模式,并通过report指定了要展示的报表。 先说bir...

Canaan_
2016/02/14
48
0
Fastreport.Net用户手册:报表页属性

每一张报表页都可以有其特有的设定,例如页面尺寸,方向(横向打印或纵向打印),外边距,报表列,报表页来源等。报表模板包含多张不同定位与纸张尺寸的报表页。页面设置窗口可以通过点击按钮...

鸟栖沙岩
2016/09/05
21
0
项目经验总结-Eclipse图表工具Birt的使用技巧(二)

作为Eclipse图表工具Birt的使用技巧(一)的后续,上一篇主要说明了Birt报表创建和使用的基本步骤和过程,本文旨在介绍一些常用的技巧,都是比较实用而且经过我本人实践可行的,希望能给需要的人带...

顽Shi
2014/01/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

127.0.0.1 和 0.0.0.0 地址的区别

1. IP地址分类 1.1 IP地址表示 IP地址由两个部分组成,net-id和host-id,即网络号和主机号。 net-id:表示ip地址所在的网络号。 host-id:表示ip地址所在网络中的某个主机号码。 即: IP-a...

华山猛男
16分钟前
4
0
解决Unknown host 'd29vzk4ow07wi7.cloudfront.net'. You may need to adjust the proxy settings in Gradle.

把 总项目 下的 build.gradle 中的 两个 jcenter() 用 maven{ url ‘http://maven.aliyun.com/nexus/content/groups/public/’} 代替。...

lanyu96
22分钟前
1
0
基于redis的分布式锁

redisson提供了基于redis的分布式锁实现方式,本文就尝试了下锁的使用方式。Redisson同时还为分布式锁提供了异步执行的相关方法,第二节执行介绍。 一、可重入锁验证 同一个jvm里面同一线程的...

noob_chr
31分钟前
7
0
CPU性能过剩提升乏力影响未来行业发展吗?

虽然CPU仍然在不断发展,但是它的性能已经不再仅仅受限于单个处理器类型或制造工艺上了。和过去相比,CPU性能提升的步伐明显放缓了,接下来怎么办,成为横亘在整个行业面前的大问题。 自201...

linux-tao
33分钟前
3
0
设计模式“6”大原则!

面向对象设计原则 概述 对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要...

Java干货分享
50分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部